diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index af6ab70854..a2e6e53c4d 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -36,7 +36,7 @@ We welcome anyone to contribute to this repository. Issues that we are actively When contributing to this repository, please first discuss the change you wish to make via issue or [Discord](https://acemod.org/discord) with the [ACE3 project maintainers](https://ace3.acemod.org/team.html) before making a change. This may not be necessary if you are contributing for something which has an existing issue in our repository already. -1. Please make a pull request (PR) as early as possible. This lets use help you in the proces of developing it. When opening a work in progress pull request, mark your PR with a `WIP:` prefix. +1. Please make a pull request (PR) as early as possible. This lets use help you in the proces of developing it. When opening a work in progress pull request, use GitHub's draft feature. This will mark the PR as a work in progress and will prevent it from being merged until you mark it as ready for review. 2. Describe what this pull request will do and how it solves this in the description of your PR. A clear intent and description of the way the issue is resolved will help us to review the PR more efficiently. 3. Please follow our [Development Guidelines](https://ace3.acemod.org/wiki/development/). diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 5f42f937fe..5bdf51df2a 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -4,6 +4,6 @@ ### IMPORTANT -- [ ] If the contribution affects [the documentation](https://github.com/acemod/ACE3/tree/master/docs), please include your changes in this pull request so the documentation will appear on the [website](https://ace3.acemod.org/). -- [ ] [Development Guidelines](https://ace3.acemod.org/wiki/development/) are read, understood and applied. -- [ ] Title of this PR uses our standard template `Component - Add|Fix|Improve|Change|Make|Remove {changes}`. +- If the contribution affects [the documentation](https://github.com/acemod/ACE3/tree/master/docs), please include your changes in this pull request so the documentation will appear on the [website](https://ace3.acemod.org/). +- [Development Guidelines](https://ace3.acemod.org/wiki/development/) are read, understood and applied. +- Title of this PR uses our standard template `Component - Add|Fix|Improve|Change|Make|Remove {changes}`. diff --git a/.github/release-drafter.yml b/.github/release-drafter.yml index e6b87a25ee..2ba4cbfcaf 100644 --- a/.github/release-drafter.yml +++ b/.github/release-drafter.yml @@ -5,6 +5,9 @@ branches: name-template: 'Version $NEXT_PATCH_VERSION' tag-template: 'v$NEXT_PATCH_VERSION' +sort-by: title # sort alphabetically +sort-direction: ascending + categories: - title: '**ADDED:**' labels: @@ -21,6 +24,10 @@ categories: labels: - 'kind/cleanup' - 'area/compatibility' + - 'kind/change' + - title: '**SETTINGS:**' + labels: + - 'kind/setting' - title: '**TRANSLATIONS:**' labels: - 'area/translations' @@ -39,5 +46,5 @@ template: | replacers: # Category titles - - search: '/\#\# (\*\*(ADDED|FIXED|IMPROVED|CHANGED|TRANSLATIONS):\*\*)/g' + - search: '/\#\# (\*\*(ADDED|FIXED|IMPROVED|CHANGED|SETTINGS|TRANSLATIONS):\*\*)/g' replace: '$1' diff --git a/.github/workflows/arma.yml b/.github/workflows/arma.yml index 669873d504..da5fa29835 100644 --- a/.github/workflows/arma.yml +++ b/.github/workflows/arma.yml @@ -11,7 +11,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout the source code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Validate SQF run: python3 tools/sqf_validator.py - name: Validate Config @@ -22,6 +22,8 @@ jobs: run: python3 tools/check_strings.py - name: Check for BOM uses: arma-actions/bom-check@master + with: + path: 'addons' - name: Validate function headers run: python3 docs/tools/document_functions.py --debug @@ -29,7 +31,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout the source code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Lint (sqflint) uses: arma-actions/sqflint@master continue-on-error: true # No failure due to many false-positives @@ -38,7 +40,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout the source code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Setup HEMTT uses: arma-actions/hemtt@v1 - name: Run HEMTT build diff --git a/.github/workflows/documentation.yml b/.github/workflows/documentation.yml index 770921c96c..4140138f1e 100644 --- a/.github/workflows/documentation.yml +++ b/.github/workflows/documentation.yml @@ -15,7 +15,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout the source code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Install Python packages run: | pip3 install wheel @@ -33,7 +33,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Extract Dependencies run: python3 tools/extract_dependencies.py --markdown diff --git a/.github/workflows/extensions.yml b/.github/workflows/extensions.yml index 2fd0c9a4a4..84ea189cca 100644 --- a/.github/workflows/extensions.yml +++ b/.github/workflows/extensions.yml @@ -14,7 +14,7 @@ jobs: steps: - name: Checkout the source code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Build shell: cmd run: | diff --git a/.github/workflows/hemtt.yml b/.github/workflows/hemtt.yml new file mode 100644 index 0000000000..ffe8894986 --- /dev/null +++ b/.github/workflows/hemtt.yml @@ -0,0 +1,44 @@ +name: HEMTT + +on: + push: + branches: + - master + pull_request_target: + +jobs: + windows: + runs-on: windows-latest + steps: + - name: Install Arma 3 Tools + uses: arma-actions/arma3-tools@master + with: + toolsUrl: ${{ secrets.ARMA3_TOOLS_URL }} + - name: Checkout the source code + uses: actions/checkout@v4 + - name: Setup HEMTT + uses: arma-actions/hemtt@v1 + - name: Checkout pull request + uses: actions/checkout@v4 + if: ${{ github.event_name == 'pull_request_target' }} + with: + path: pullrequest + ref: 'refs/pull/${{ github.event.number }}/merge' + - name: Replace addons with pull request addons + if: ${{ github.event_name == 'pull_request_target' }} + run: | + rm -r addons\ + rm -r optionals\ + rm -r include\ + xcopy /e /h /q pullrequest\addons addons\ + xcopy /e /h /q pullrequest\optionals optionals\ + xcopy /e /h /q pullrequest\include include\ + - name: Run HEMTT build + run: hemtt build + - name: Rename build folder + run: mv .hemttout/build .hemttout/@ace + - name: Upload Artifact + uses: actions/upload-artifact@v3 + with: + name: ace3-${{ github.sha }} + path: .hemttout/@* diff --git a/.github/workflows/pboproject.yml b/.github/workflows/pboproject.yml index 9df3fd9952..be578c0e27 100644 --- a/.github/workflows/pboproject.yml +++ b/.github/workflows/pboproject.yml @@ -25,7 +25,7 @@ jobs: Invoke-WebRequest "$env:RHSUSF_URL" -OutFile rhsusf.zip $files = @("arma3.zip", "rhsafrf.zip", "rhsgref.zip", "rhssaf.zip", "rhsusf.zip") ForEach ($file in $files) { - Extract-7Zip -Path $file -DestinationPath . + Expand-7ZipArchive -Path $file -DestinationPath . Remove-Item $file } env: @@ -35,18 +35,18 @@ jobs: RHSSAF_URL: ${{ secrets.RHSSAF_URL }} RHSUSF_URL: ${{ secrets.RHSUSF_URL }} - name: Checkout CBA A3 - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: path: x\cba ref: master repository: CBATeam/CBA_A3.git - name: Checkout ACE3 - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: path: z\ace persist-credentials: false - name: Checkout pull request - uses: actions/checkout@v3 + uses: actions/checkout@v4 if: ${{ github.event_name == 'pull_request_target' }} with: path: pullrequest diff --git a/.hemtt/project.toml b/.hemtt/project.toml index 793ff11c23..206bf9573c 100644 --- a/.hemtt/project.toml +++ b/.hemtt/project.toml @@ -18,20 +18,16 @@ include = [ [version] git_hash = 0 +# Unused in HEMTT v1.11 or higher, kept for backwards compatibility [asc] enabled = true exclude = [ - "/initsettings.sqf", - "/initkeybinds.sqf", - "/xeh_prep.sqf", + ".inc.sqf", "/dev/", - "medical_ai/statemachine.sqf", "common/functions/fnc_dummy.sqf", + "zeus/functions/fnc_zeusAttributes.sqf", ] -[hemtt.config] -preset = "Hemtt" - [hemtt.launch] workshop = [ "450814997", # CBA_A3 @@ -60,3 +56,12 @@ workshop = [ dlc = [ "Western Sahara", ] + +[hemtt.launch.rhs] +workshop = [ + "450814997", # CBA_A3's Workshop ID + "843425103", # RHS AFRF Workshop ID + "843577117", # RHS USAF Workshop ID + "843593391", # RHS GREF Workshop ID + "843632231", # RHS SAF Workshop ID +] diff --git a/AUTHORS.txt b/AUTHORS.txt index c51fbe52fc..bcc4a5d40e 100644 --- a/AUTHORS.txt +++ b/AUTHORS.txt @@ -10,7 +10,7 @@ Brett Mayson bux578 commy2 Dahlgren -tcvm +Drofseh esteldunedain Felix Wiegand Garth "L-H" de Wet @@ -18,14 +18,17 @@ Giallustio Glowbal Grim Janus +johnb43 jokoho482 Jonpas Kieran kymckay mharis001 +MikeMF NouberNou PabstMirror Ruthberg +tcvm tpM veteran29 ViperMaul @@ -79,7 +82,6 @@ diwako dixon13 Drift_91 Drill -Drofseh Dslyecxi Dudakov aka [OMCB]Kaban Eclipser @@ -113,6 +115,7 @@ havena Hawkins Head Hybrid V +Hypoxic JasperRab JDT john681611 @@ -134,7 +137,6 @@ MarcBook meat Michail Nikolaev MikeMatrix -MikeMF mjc4wilton Mysteryjuju nic547 diff --git a/README.md b/README.md index 61001011d4..b461bfe520 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@

- ACE3 Version + ACE3 Version ACE3 Issues diff --git a/addons/advanced_ballistics/XEH_postInit.sqf b/addons/advanced_ballistics/XEH_postInit.sqf index 9ff22efe95..e6417f9a02 100644 --- a/addons/advanced_ballistics/XEH_postInit.sqf +++ b/addons/advanced_ballistics/XEH_postInit.sqf @@ -1,6 +1,6 @@ #include "script_component.hpp" -#include "initKeybinds.sqf" +#include "initKeybinds.inc.sqf" GVAR(currentbulletID) = -1; diff --git a/addons/advanced_ballistics/XEH_preInit.sqf b/addons/advanced_ballistics/XEH_preInit.sqf index 9361d05015..894773534a 100644 --- a/addons/advanced_ballistics/XEH_preInit.sqf +++ b/addons/advanced_ballistics/XEH_preInit.sqf @@ -6,6 +6,6 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" ADDON = true; diff --git a/addons/advanced_ballistics/initKeybinds.sqf b/addons/advanced_ballistics/initKeybinds.inc.sqf similarity index 100% rename from addons/advanced_ballistics/initKeybinds.sqf rename to addons/advanced_ballistics/initKeybinds.inc.sqf diff --git a/addons/advanced_ballistics/initSettings.sqf b/addons/advanced_ballistics/initSettings.inc.sqf similarity index 100% rename from addons/advanced_ballistics/initSettings.sqf rename to addons/advanced_ballistics/initSettings.inc.sqf diff --git a/addons/advanced_ballistics/stringtable.xml b/addons/advanced_ballistics/stringtable.xml index eb9d865c79..b077f53b6a 100644 --- a/addons/advanced_ballistics/stringtable.xml +++ b/addons/advanced_ballistics/stringtable.xml @@ -4,7 +4,7 @@ Show Wind Info Pokaż inf. o wietrze - Mostra indicazioni del vento + Mostra indicazioni vento Показать информацию о ветре Afficher les infos sur le vent Mostrar información del viento @@ -46,7 +46,7 @@ Fejlett ballisztika Продвинутая баллистика Balistica Avanzata - アドバンスド バリスティックス + アドバンスド弾道計算 고급 탄도학 先進彈道系統 进阶弹道系统 @@ -63,7 +63,7 @@ Fejlett ballisztika Продвинутая баллистика Balistica Avanzata - アドバンスド バリスティックスを有効化 + アドバンスド弾道計算を有効化 고급 탄도학 先進彈道系統 进阶弹道系统 @@ -80,7 +80,7 @@ Engedélyezi a fejlett ballisztikát Включает продвинутую баллистику Abilita Balistica Avanzata - アドバンスド バリスティックスを有効化します。 + アドバンスド弾道計算は高度な弾道計算処理を有効化します。 고급 탄도학을 적용합니다 啟用先進彈道系統 启用进阶弹道系统 @@ -106,8 +106,8 @@ Simulates slight variations in muzzle velocity between each shot Simula variaciones ligeras de velocidad entre cada disparo Simuliert leichte Variationen der Mündungsgeschwindigkeit zwischen jedem Schuss. - 発射毎の銃口初速の変動をシミュレートします。 - Simula lievi variazioni della velocità della volata tra un colpo e l'altro + 各発射毎の銃口初速のわずかな変動をシミュレートします。 + Simula piccole variazioni della velocità alla volata tra ogni colpo. 각 사격 사이에 총구속도 변화를 시뮬레이션 합니다. 模擬每發子彈的槍口初速都略有不同 模拟每发子弹的枪口初速都略有不同 @@ -128,8 +128,8 @@ Activer la simulation de la température Lőszer-hő szimuláció engedélyezése Симуляция температуры для боеприпасов - Abilita simulazione della temperatura delle munizioni - 弾薬温度のシミュレーションを有効化 + Abilita simulazione temperatura munizioni + 弾薬温度シミュレーションを有効化 탄약 온도 구현 적용 啟用彈藥溫度模擬系統 启用弹药温度模拟系统 @@ -145,7 +145,7 @@ La vitesse initiale varie en fonction de la température des munitions. A kezdősebesség a lőszer hőmérsékletétől függően változó Начальная скорость пули зависит от температуры - La velocità dello sparo varia a seconda della temperatura delle munizioni + La velocità alla volata varia a seconda della temperatura delle munizioni. 弾薬の温度により銃口初速を変動させます。 탄약 온도에 비례해 총구 속도가 달라집니다 子彈初速將隨彈藥溫度而有所變化 @@ -162,8 +162,8 @@ Activer la simulation de la longueur de canon Csőhossz-szimuláció engedélyezése Симуляция длины ствола - Abilita simulazione della lunghezza della canna - 銃身長のシミュレーションを有効化 + Abilita simulazione lunghezza canna + 銃身長シミュレーションを有効化 총열 길이 구현 적용 啟用槍管長度模擬系統 启用枪管长度模拟系统 @@ -179,7 +179,7 @@ La vitesse initiale varie en fonction de la longueur du canon. A kezdősebesség a cső hosszától függően változó Начальная скорость пули зависит от длины ствола - La velocità di sparo varia a seconda della lunghezza della canna + La velocità alla volata varia a seconda della lunghezza della canna. 銃身長により銃口初速を変動させます。 총구 속도가 총열에 비례해 달라집니다 子彈初速將隨槍管長度而有所變化 @@ -196,7 +196,7 @@ Activer l'effet de balle traçante Nyomkövető-effekt engedélyezése Следы пуль - Abilita effetto dei Proiettili Traccianti + Abilita effetto di traccia proiettile 弾丸の軌跡エフェクトを有効化 예광탄 효과 적용 啟用曳光彈效果 @@ -213,7 +213,7 @@ Active un effet de balle traçante pour les munitions de gros calibre (seulement visible en utilisant une optique à fort grossissement). Engedélyezi a nagy kaliberű lövedékek nyomának vizuális követését (csak nagy teljesítményű optikán keresztül látható) Включает эффект следов пуль для больших калибров (видны только через мощную оптику) - Abilita effetto dei proiettili traccianti di alto calibro (visibile solo attraverso ottiche ad alto potenziale) + Abilita effetto di traccia lasciata da proiettili di alto calibro (visibile solo attraverso ottiche ad alto ingrandimento) 大口径弾の軌跡エフェクトを有効化します。 (高性能光学機器を介してのみ見ることができます) 대구경 탄환에 예광탄 효과를 적용합니다(오직 고성능 조준경 사용시에만 보입니다) 啟用曳光彈效果給大口徑子彈 (只有透過高倍率光學瞄鏡才能看到) @@ -230,7 +230,7 @@ Intervalle de simulation Szimuláció intervalluma Интервал симуляции - Intervallo Simulazione + Intervallo di Simulazione シミュレーション間隔 구현 간격 模擬間隔 @@ -246,7 +246,7 @@ Définit l'intervalle entre chacune des étapes de calcul. Meghatározza a számítási lépések közötti időintervallumot Определяет временной интервал между вычислениями - Definisce l'intervallo tra ogni step di calcolo + Definisce l'intervallo tra ogni passo del calcolo 各シミュレーション毎の間隔を定義します。 각 계산 단위의 간격을 정의합니다 定義每個模擬計算之間的時間間隔 @@ -263,7 +263,7 @@ Szimuláció hatóköre Радиус симуляции Raggio Simulazione - シミュレーションの範囲 + シミュレーションの半径 구현 범위 模擬半徑 模拟半径 @@ -279,8 +279,8 @@ Définit le rayon autour du joueur (en mètres), dans lequel la balistique avancée est appliquée aux projectiles. Meghatározza a játékos körüli hatókört (méterben), ahol a lövedékek fejlett ballisztikát használnak Определяет радиус вокруг игрока (в метрах), в котором продвинутая баллистика применяется к снарядам - Definisce il raggio attorno al giocatore (in metri) per cui la Balistica Avanzata è applicata ai proiettili - アドバンスド バリスティックスの適用半径範囲 (プレイヤー中心、メートル単位) を定義します。 + Definisce il raggio attorno al giocatore (in metri) entro il quale la Balistica Avanzata è applicata ai proiettili + アドバンスド弾道計算の適用半径範囲 (プレイヤー中心、メートル単位) を定義します。 플레이어 주위의 발사체를 고급 탄도학으로 정의하는 범위를 정합니다(미터) 以玩家的半徑距離(公尺)定義先進彈道系統啟用範圍 定义玩家周围的半径(米),在这个半径内,进阶弹道系统会被启用 @@ -296,8 +296,8 @@ Ez a modul engedélyezi a fejlett ballisztikai szimulációt - a lövedékek röppályáját befolyásolni fogja a levegő hőmérséklete, légnyomás, páratartalom, gravitáció, a lövedék fajtája, valamint a fegyver, amiből kilőtték a lövedéket. Этот модуль включает симуляцию продвинутой баллистики - при этом на траекторию полета снаряда влияют различные параметры, такие как температура воздуха, атмосферное давление, влажность, гравитация, тип боеприпаса и оружия, из которого произвели выстрел. Este módulo permite la simulación balística avanzada - es decir, la trayectoria de los proyectiles está influenciada por variables como la temperatura del aire, la presión atmosférica, la humedad, la gravedad, el tipo de municiones y el arma desde el que fue disparada. - Questo modulo abilita la simulazione della Balistica Avanzata - cioè la traiettoria dei proiettili è influenzata da variabili come la temperatura dell'aria, pressione atmosferica, umidità, gravità, il tipo di munizione e l'arma da cui è sparata - アドバンスド バリスティックスのシミュレーションを有効化します。 弾道は気温・気圧・湿度・重力・弾薬の種類・発射する武器などの変化による影響を受けるようになります。 + Questo modulo abilita la simulazione della Balistica Avanzata - essa comporta che la traiettoria dei proiettili è influenzata da variabili come la temperatura dell'aria, pressione atmosferica, umidità, gravità, il tipo di munizione e l'arma da cui è sparata. + アドバンスド弾道計算のシミュレーションを有効化します。 弾道は気温・気圧・湿度・重力・弾薬の種類・発射する武器などの変化による影響を受けるようになります。 이 모듈은 고급 탄도학을 적용시킵니다 - 이는 발사체의 궤적이 기온, 대기압, 습도, 중력, 탄환의 종류와 어느 무기에서 발사되는지에 따라 영향을 받습니다. 該模塊實現先進的彈道仿真 - 這意味著子彈的軌跡是由空氣溫度、大氣壓力、濕度、重力、彈藥類型以及射擊的武器所影響 该模块实现增强的弹道模拟—子弹的轨迹由空气温度、大气压力、湿度、重力、弹药类型和射击的武器等变量所影响 diff --git a/addons/advanced_fatigue/XEH_postInit.sqf b/addons/advanced_fatigue/XEH_postInit.sqf index 56dcb71372..57b57dcf22 100644 --- a/addons/advanced_fatigue/XEH_postInit.sqf +++ b/addons/advanced_fatigue/XEH_postInit.sqf @@ -17,7 +17,19 @@ if (!hasInterface) exitWith {}; }; }, QUOTE(ADDON)] call EFUNC(common,addSwayFactor); -["multiplier", {GVAR(swayFactor)}, QUOTE(ADDON)] call EFUNC(common,addSwayFactor); +["multiplier", { + switch (true) do { + case (isWeaponRested ACE_player): { + GVAR(swayFactor) * GVAR(restedSwayFactor) + }; + case (isWeaponDeployed ACE_player): { + GVAR(swayFactor) * GVAR(deployedSwayFactor) + }; + default { + GVAR(swayFactor) + }; + }; +}, QUOTE(ADDON)] call EFUNC(common,addSwayFactor); // recheck weapon inertia after weapon swap, change of attachments or switching unit ["weapon", {[ACE_player] call FUNC(getWeaponInertia)}, true] call CBA_fnc_addPlayerEventHandler; @@ -48,7 +60,7 @@ if (!hasInterface) exitWith {}; }, true] call CBA_fnc_addPlayerEventHandler; // - Duty factors ------------------------------------------------------------- - if (["ACE_Medical"] call EFUNC(common,isModLoaded)) then { + if (["ace_medical"] call EFUNC(common,isModLoaded)) then { [QEGVAR(medical,pain), { // 0->1.0, 0.5->1.05, 1->1.1 linearConversion [0, 1, (_this getVariable [QEGVAR(medical,pain), 0]), 1, 1.1, true]; }] call FUNC(addDutyFactor); @@ -56,7 +68,7 @@ if (!hasInterface) exitWith {}; linearConversion [6, 0, (_this getVariable [QEGVAR(medical,bloodVolume), 6]), 1, 2, true]; }] call FUNC(addDutyFactor); }; - if (["ACE_Dragging"] call EFUNC(common,isModLoaded)) then { + if (["ace_dragging"] call EFUNC(common,isModLoaded)) then { [QEGVAR(dragging,isCarrying), { [1, 3] select (_this getVariable [QEGVAR(dragging,isCarrying), false]); }] call FUNC(addDutyFactor); diff --git a/addons/advanced_fatigue/XEH_preInit.sqf b/addons/advanced_fatigue/XEH_preInit.sqf index edbd421f8d..643b7b0be0 100644 --- a/addons/advanced_fatigue/XEH_preInit.sqf +++ b/addons/advanced_fatigue/XEH_preInit.sqf @@ -6,7 +6,7 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" GVAR(staminaBarWidth) = 10 * (((safezoneW / safezoneH) min 1.2) / 40); GVAR(dutyList) = createHashMap; diff --git a/addons/advanced_fatigue/initSettings.sqf b/addons/advanced_fatigue/initSettings.inc.sqf similarity index 85% rename from addons/advanced_fatigue/initSettings.sqf rename to addons/advanced_fatigue/initSettings.inc.sqf index 7787fd3f5d..e2d797bf91 100644 --- a/addons/advanced_fatigue/initSettings.sqf +++ b/addons/advanced_fatigue/initSettings.inc.sqf @@ -89,3 +89,21 @@ [0, 5, 1, 1], true ] call CBA_fnc_addSetting; + +[ + QGVAR(restedSwayFactor), + "SLIDER", + [LSTRING(RestedSwayFactor), LSTRING(RestedSwayFactor_Description)], + LSTRING(DisplayName), + [0, 5, 1, 2], + true +] call CBA_fnc_addSetting; + +[ + QGVAR(deployedSwayFactor), + "SLIDER", + [LSTRING(DeployedSwayFactor), LSTRING(DeployedSwayFactor_Description)], + LSTRING(DisplayName), + [0, 5, 1, 2], + true +] call CBA_fnc_addSetting; diff --git a/addons/advanced_fatigue/stringtable.xml b/addons/advanced_fatigue/stringtable.xml index 5737e1fca2..dc68259db8 100644 --- a/addons/advanced_fatigue/stringtable.xml +++ b/addons/advanced_fatigue/stringtable.xml @@ -7,7 +7,7 @@ ACE Erweiterte Ausdauer ACE 進階疲勞 ACE 进阶体力 - ACE アドバンスド ファティーグ + ACE アドバンスド疲労 ACE Fatica Avanzata ACE 고급 피로도 ACE Fatigue avancée @@ -41,7 +41,7 @@ Wpływa na ogólną wydolność organizmu u wszystkich graczy bez ustawionego niestandardowego współczynnika. Więcej znaczy lepiej. 모든 성능이 임의로 설정된 값 없이 영향받습니다. 값이 클수록 더 나은 성능을 발휘합니다 Impacte la performance globale de tous les joueurs n'ayant pas de facteur personnalisé.\nPlus la valeur est élevée, plus le joueur est performant. - Influenza qualsiasi prestazione di tutti i giocatori smuniti di un fattore personalizzato. Maggiore significa migliore. + Influenza la prestazione generale di tutti i giocatori smuniti di un fattore personalizzato. Maggiore significa migliore. 影響所有玩家的體力表現,值越高代表體力越好 影响所有玩家的体力表现,值越高代表体力越好 Влияет на общую производительность игроков, у которых не задано персональное значение. @@ -56,7 +56,7 @@ Wpływa na ogólną wydolność tej jednostki. Więcej znaczy lepiej. 모든 성능이 이 단위로 영향을 받습니다. 값이 클수록 더 나은 성능을 발휘합니다 Impacte la performance globale de cette unité.\nPlus la valeur est élevée, plus l'unité est performante. - Influenza qualsiasi prestazione di questa unità. Maggiore significa migliore. + Influenza la prestazione personalizzata di questa unità. Maggiore significa migliore. 影響這個單位的體力表現,值越高代表體力越好 影响这个单位的体力表现,值越高代表体力越好 Влияет на общую производительность юнита. @@ -87,7 +87,7 @@ Wpływa na czas regeneracji podczas postoju. Więcej znaczy szybciej. 얼마나 빨리 회복하는지를 바꿉니다. 값이 클수록 더 나은 성능을 발휘합니다 Modifie la vitesse à laquelle le joueur récupère lorsqu'il se repose.\nPlus la valeur est élevée, plus la récupération est rapide. - Determina in quanto tempo il giocatore recupera quando rilassato. Maggiore significa migliore. + Determina quanto velocemente il giocatore recupera le energie quando si ferma. Maggiore significa migliore. 決定玩家休息多久就能回復體力,值越高恢復越快 决定玩家休息多久就能恢复体力,值越高恢复越快 Изменяет скорость восстановления игрока во время отдыха. Чем выше, тем быстрее. @@ -102,7 +102,7 @@ Współczynnik masy ekwipunku 부담 요인 Facteur de charge - Fattore Caricamento + Fattore Carico 負重量 重量系数 Фактор нагрузки @@ -117,7 +117,7 @@ Zmniejsza lub zwiększa wpływ ciężaru ekwipunku na wydolność gracza. Zero oznacza kompletny brak wpływu na wydolność. 플레이어가 무게에 따라 얼마나 영향받는지를 증가시키거나 감소시킵니다. 0의 경우 플레이어가 장비 무게에 영향받지 않습니다. Augmente ou diminue l'influence du poids sur les performances du joueur.\nUne valeur nulle indique que le poids de l'équipement n'a aucun impact sur les performances. - Incrementa o decrementa quanto il peso influenza le prestazioni dei giocatori. Zero significa che il peso dell'equipaggiamento non ha alcuna influenza nelle prestazioni. + Determina quanto il peso trasportato influenza le prestazioni dei giocatori. Zero significa che il peso dell'equipaggiamento non influisce sulle prestazioni. 增加或降低玩家所能承受的負重量. 如設定值為0, 代表裝備的重量將不會影響到玩家的體力表現 增加或降低玩家所能承受的负重量。如设定值为0,代表装备的重量将不会影响到玩家的体力表现 Увеличивает или уменьшает вес, влияющий на производительность игроков. Ноль означает, что вес снаряжения не влияет на производительность @@ -147,7 +147,7 @@ Wpływa na to w jakim stopniu stromy teren wpływa na utratę wytrzymałości. Więcej oznacza szybszą utratę wytrzymałości. 경사도에 따라 얼마나 피로해지는지를 정합니다. 값이 클수록 더 많은 피로를 유발합니다. Définit à quel point un terrain escarpé réduit l'endurance du joueur.\nPlus la valeur est élevée, moins le joueur est endurant. - Stabilisce quanto la pendenza del terreno incrementa la perdita della stamina. Maggiore significa più stamina persa. + Determina quanto la pendenza del terreno incrementa la perdita della stamina. Maggiore significa più stamina persa. 設定陡峭的地形將會影響多少體力的流失,值越高代表體力流失越快 设定陡峭的地形将会影响多少体力的流失速度,值越高代表体力流失越快 Устанавливает, насколько крутая местность увеличивает потерю выносливости. Чем выше, тем быстрее теряется выносливость. @@ -162,7 +162,7 @@ 抖动系数 抖動因素 Facteur de tremblement - Fattore di oscillazione + Fattore di Oscillazione Czynnik kołysania Фактор колебания прицела Fator de Balanço de Mira @@ -172,27 +172,63 @@ Influences the amount of weapon sway. Higher means more sway. Afecta al la estabilidad de la mira. Más alto significa más balanceo - Beeinflusst den Faktor, wie ruhig man eine Waffe halten kann. Ein höherer Wert bedeutet weniger Stabilisierung - 武器を持つ手のぶれ度合いを設定します。 値が高ければ高いほど、手ぶれが強くなります。 + Beeinflusst, wie ruhig man eine Waffe halten kann. Ein höherer Wert bedeutet weniger Stabilisierung. + 武器の手ぶれの量に影響します。値が高いほど、手ぶれが強くなります。 影响手持武器的晃动程度,数值越高,抖动的越厉害。 影響手持武器晃動程度,數值越高抖動越厲害 Influe sur l'amplitude du tremblement de l'arme. Une valeur plus élevée signifie plus de tremblement. - Influenza l'ammontare di oscillazione dell'arma. Maggiore significa più oscillazione. + Influenza l'aumento di oscillazione dell'arma quando affaticato. Maggiore significa più oscillazione. Wpływa na poziom kołysania broni. Większa ilość znaczy większe kołysanie. Влияет на колебания прицела оружия. Чем выше - тем больше. Influencia a quantidade de balanço da mira da arma. Quanto maior, mais balanço. Ovlivňuje množství kývání zbraní. Vyšší znamená více kývání. 손떨림의 정도를 정합니다. 높을 수록 많이 휘적입니다. + + Rested sway factor + Facteur de balancement au repos + 휴식 시 손떨림 정도 + Fator de balanço de mira em repouso + Verwacklungsfaktor, wenn aufgelegt + Fattore di Oscillazione Appoggiato + 静止時の手ぶれ係数 + + + Influences the amount of weapon sway while weapon is rested. + Influence le degré de balancement de l'arme au repos. + 무기가 아무런 행동도 하지 않는 동안 무기가 흔들리는 정도를 정합니다. + Influencia a quantidade de balanço de mira enquanto a arma está em repouso. + Beeinflusst, wie ruhig man die Waffe hält, während sie aufgelegt ist. + Determina la quantità di oscillazione dell'arma quando questa è appoggiata. + 静止している時の武器の手ぶれの量に影響します。 + + + Deployed sway factor + Facteur de balancement déployé + 거치 시 손떨림 정도 + Fator de balanço de mira em posição de tiro + Verwacklungsfaktor, wenn Zweibein aufgestellt ist. + Fattore di Oscillazione su Bipode + 展開時の手ぶれ係数 + + + Influences the amount of weapon sway while weapon is deployed. + Influence le degré de balancement de l'arme déployée. + 무기를 거치하는 동안 무기를 흔드는 정도를 정합니다. + Influencia a quantidade de balanço de mira enquanto a arma está em posição de tiro. + Beeinflusst, wie ruhig man die Waffen hält, während das Zweibein aufgestellt ist. + Determina la quantità di oscillazione dell'arma quando questa è stabilizzata usando il bipode. + 武器の展開(Cキー)時の武器の手ぶれの量に影響します。 + Enabled Activada Aktiv - アドバンスド ファティーグを有効化 + 有効化 Włączone 활성화 Activé - Abilitato + Abilitata 啟用 启用 Включена @@ -203,11 +239,11 @@ Enables/disables Advanced Fatigue. Activa/desactiva la fatiga avanzada Aktiviert/deaktiviert Advanced Fatigue. - アドバンスド ファティーグを有効化します。 + アドバンスド疲労は高度な疲労管理システムを有効化します。 Włącza/wyłącza zaawansowaną wytrzymałość 고급 피로도 활성화/비활성화 Active/Désactive la fatigue avancée. - Abilita/disabilita la Fatica Avanzata. + Abilita/Disabilita la Fatica Avanzata. 啟用/關閉進階體力. 启用/关闭进阶体力。 Включает / Отключает Продвинутую усталость @@ -251,7 +287,7 @@ Blende Ausdauerleiste automatisch aus 體力條自動淡去 自动淡化体力条 - Dissolvenza automatica della barra della stamina + Nascondi in automatico la barra della stamina Automaticky schovat lištu výdrže Fondu automatique de la barre d'endurance 自動的にスタミナバーを非表示 diff --git a/addons/advanced_throwing/XEH_postInit.sqf b/addons/advanced_throwing/XEH_postInit.sqf index 7c0a194267..96b0fbb09b 100644 --- a/addons/advanced_throwing/XEH_postInit.sqf +++ b/addons/advanced_throwing/XEH_postInit.sqf @@ -1,6 +1,7 @@ #include "script_component.hpp" // Fired XEH +GVAR(ammoEventHandlers) = createHashMap; [QGVAR(throwFiredXEH), FUNC(throwFiredXEH)] call CBA_fnc_addEventHandler; // Exit on HC diff --git a/addons/advanced_throwing/XEH_preInit.sqf b/addons/advanced_throwing/XEH_preInit.sqf index 9361d05015..894773534a 100644 --- a/addons/advanced_throwing/XEH_preInit.sqf +++ b/addons/advanced_throwing/XEH_preInit.sqf @@ -6,6 +6,6 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" ADDON = true; diff --git a/addons/advanced_throwing/functions/fnc_throwFiredXEH.sqf b/addons/advanced_throwing/functions/fnc_throwFiredXEH.sqf index 9d2e9e24b2..bbbcbf3274 100644 --- a/addons/advanced_throwing/functions/fnc_throwFiredXEH.sqf +++ b/addons/advanced_throwing/functions/fnc_throwFiredXEH.sqf @@ -20,14 +20,25 @@ * * Public: No */ - +params ["_unit", "", "_muzzle", "", "_ammo"]; TRACE_1("Fired",_this); { _this call _x; -} forEach ((_this select 0) getVariable "cba_xeh_fired"); +} forEach (_unit getVariable "cba_xeh_fired"); // Call muzzle fired EH { _this call compile getText (_x >> "fired"); -} forEach (configProperties [configFile >> "CfgWeapons" >> "Throw" >> (_this select 2) >> "EventHandlers", "isClass _x", true]); +} forEach (configProperties [configFile >> "CfgWeapons" >> "Throw" >> _muzzle >> "EventHandlers", "isClass _x", true]); + +// Call ammo fired EH +{ _this call _x } forEach (GVAR(ammoEventHandlers) getOrDefaultCall [_ammo, { + private _cfg = configFile >> "CfgAmmo" >> _ammo >> "EventHandlers"; + private _eventHandlers = []; + { + private _eh = getText (_x >> "fired"); + if (_eh != "") then { _eventHandlers pushBack compile _eh }; + } forEach ([_cfg] + configProperties [_cfg, "isClass _x", true]); + _eventHandlers +}, true]); diff --git a/addons/advanced_throwing/initSettings.sqf b/addons/advanced_throwing/initSettings.inc.sqf similarity index 100% rename from addons/advanced_throwing/initSettings.sqf rename to addons/advanced_throwing/initSettings.inc.sqf diff --git a/addons/advanced_throwing/stringtable.xml b/addons/advanced_throwing/stringtable.xml index a469256161..ec2354a2c0 100644 --- a/addons/advanced_throwing/stringtable.xml +++ b/addons/advanced_throwing/stringtable.xml @@ -5,7 +5,7 @@ Advanced Throwing Lanzamiento Avanzado Улучшенный бросок гранат - アドバンスド スローイング + アドバンスド投擲 Zaawansowane rzucanie Erweitertes Wurfsystem 고급 투척 @@ -21,7 +21,7 @@ Allows changing advanced throwing behaviour. Permite modificar el comportamiento del lanzamiento avanzado Позволяет настраивать поведение улучшенного броска гранат. - アドバンスド スローイングの動作挙動を変更します。 + アドバンスド投擲は投擲の高度な動作挙動を変更可能にします。 Zezwala na zmianę zachowania zaawansowanego trybu rzucania. Erlaubt es, das Verhalten des erweiterten Wurfsystems zu ändern. 고급 투척 행위를 허가합니다 @@ -36,7 +36,7 @@ Enable Advanced Throwing Activar Lanzamiento Avanzado Вкл. улучшенный бросок - アドバンスド スローイングを有効化 + アドバンスド投擲を有効化 Aktywuj zaawansowane rzucanie Aktiviere erweitertes Wurfsystem 고급 투척 활성화 @@ -52,7 +52,7 @@ Enables advanced throwing system. Activa el Lanzamiento Avanzado Включает систему улучшенного броска. - アドバンスド スローイングを有効化します。 + アドバンスド投擲は高度な投擲システムを有効化します。 Aktywuje system zaawansowanego rzucania. Aktiviert das erweiterte Wurfsystem. 고급 투척을 활성화 합니다 @@ -68,7 +68,7 @@ Show Throw Arc Mostrar Arco de Lanzamiento Показать траекторию броска - 投てき軌道を表示 + 投擲軌道を表示 Pokaż trasę lotu Zeige Wurfbogen 투척 궤적 표시 @@ -84,7 +84,7 @@ Enables visualization of the throw arc (where throwable will fly). Activa la visualización del arco de lanzamiento (donde irá el objeto lanzado) Включает визуализацию траектории броска (как полетит граната). - 投てき軌道 (投てき物がどこに飛ぶか) の表示を有効化します。 + 投擲軌道 (投擲物がどこに飛ぶか) の表示を有効化します。 Wyświetla wizualizację trasy przelotu granatu. Aktiviert die Visualisierung des Wurfbogens (wohin das Objekt geworfen werden wird). 투척 궤도를 시각화 합니다(투척물이 어디로 갈지) @@ -99,12 +99,12 @@ Show Throwing Mouse Controls Mostrar controles de ratón de lanzamiento Показывать управление мышью - 投てきのマウス操作を表示 + 投擲のマウス操作を表示 Pokaż podpowiedzi sterowania myszą Zeige Maussteuerung beim Werfen 마우스 조작 표시 Afficher les contrôles à la souris du lancé - Mostra Comandi Mouse Lancio + Mostra Comandi Mouse di Lancio 顯示滑鼠投擲控制提示 显示鼠标投掷控制提示 Mostrar os controles de mouse para Arremesso @@ -114,7 +114,7 @@ Enables visual cues for mouse controls when throwable is prepared. Activa muestras visuales para los controles del ratón cuando el objeto lanzable está preparado Включает отображение подсказок по управлению мышью, когда граната подготовлена. - 投てき物を構える時、マウス操作の説明表示を有効化します。 + 投擲物を構える時、マウス操作の説明表示を有効化します。 Wyświetla podpowiedzi sterowania myszą kiedy obiekt miotany jest w ręku. Aktiviert visuelle Hinweise zur Maussteuerung, wenn ein Objekt zum Werfen vorbereitet wird. 투척물을 준비시 마우스 조작을 시각화해서 보여줍니다 @@ -129,12 +129,12 @@ Enable Throwables Pick Up Habilitar recoger objetos lanzados Вкл. подбор гранат - 投てき物の拾い上げを有効化 + 投擲物の拾い上げを有効化 Zezwól na podnoszenie obiektów miotanych Aktiviere Aufheben von Wurfobjekten 투척물 줍기 활성화 Permettre le ramassage d'objets lançables - Abilita Raccogli Oggetti + Abilita Raccolta Lanciabili 啟用可撿取地面投擲物 启用捡取地面投掷物 Permitir pegar arremessáveis @@ -144,12 +144,12 @@ Enables ability to pick up throwables from the ground. Activa la habilidad de coger objetos lanzados del suelo Включает возможность подбирать гранаты с земли. - 地面に落ちている投てき物を拾い上げる機能を有効化します。 + 地面に落ちている投擲物を拾い上げる機能を有効化します。 Umożliwia podnoszenie obiektów miotanych z ziemi. Aktiviert die Möglichkeit, geworfene Objekte wieder vom Boden aufzuheben. 땅에 떨어진 투척물을 주울 수 있게 해줍니다. Active la possibilité de ramasser des objets lançables du sol. - Abilita la possibilità di raccogliere un oggetto lanciabile da terra. + Permette ai giocatori di raccogliere un oggetto lanciabile da terra. 啟用後, 可撿取地面上的投擲物 启用后,可捡取地面上的投掷物 Permite que objetos arremessados sejam pegos do chão. (ACE Menu de Interação) @@ -159,12 +159,12 @@ Enable Attached Throwables Pick Up Activar coger objetos lanzables que se enganchan Вкл. подбор прикрепленных гранат - 取り付けられた投てき物の拾い上げを有効化 + 装着済の投擲物の拾い上げを有効化 Zezwól na podnoszenie przyczepionych obiektów miotanych Aktiviere erneute Aufnahme befestigter Wurfobjekte 부착 투척물 줍기 활성화 Activer le ramassage d'objets lançables attachés - Abilita Raccogli Oggetti Lanciabili da altri Oggetti + Abilita Raccolta Lanciabili Attaccati 啟用可撿取附著投擲物 启用捡取附着投掷物 Permitir pegar arremessáveis fixados @@ -174,12 +174,12 @@ Enables ability to pick up throwables from attached objects. Activa la habilidad de lanzar objetos enganchados Включает возможность подбирать гранаты, прикрепленные к объектам. - 取り付けられた投てき物を拾い上げる機能を有効化します。 + オブジェクトに装着された投擲可能物を拾い上げる機能を有効化します。 Umożliwia podnoszenie obiektów miotanych przyczepionych do innych obiektów. Aktiviert die Möglichkeit, befestigte Wurfobjekte erneut aufzunehmen. 부착된 투척물을 주울 수 있게 해줍니다. Active la possibilité de ramasser des objets lançables attachés à d'autres objets. - Abilita la possibilità di raccogliere gli oggetti lanciabili dagli altri oggetti. + Permette ai giocatori di raccogliere gli oggetti lanciabili da altri oggetti attaccati. 啟用後, 可撿取附著在物件上的投擲物 启用后,可捡取附着在物体上的投掷物 Permite que arremessáveis fixados em objetos sejam pegos. @@ -189,12 +189,12 @@ Prepare/Change Throwable Preparar/Cambiar objetos lanzables Подготовить/заменить гранату - 投てき物の準備/変更 + 投擲物の準備/変更 Przygotuj/zmień ob. miotany Wurfobjekt vorbereiten/wechseln 투척물 준비/변경 Préparer/Changer d'objet lançable - Prepara/Cambia Oggetto lanciabile + Prepara/Cambia Oggetto Lanciabile 準備/變更投擲物 准备/变更投掷物 Preparar/Mudar Arremessável @@ -204,12 +204,12 @@ Throwable Drop Mode (Hold) Modo soltar objeto lanzable (Mantener pulsado) Режим броска гранаты (удерживать) - 投てきモード (押している間) + 投擲モード (押している間) Tryb upuszczania ob. miotanego (przytrzymaj) Wurfobjekt Fallmodus (halten) 투척물 떨어뜨리기 모드(꾹눌러서) Mode de lancé de l'objet (Tenir) - Modalità Oggetto Gettabile (Mantenere) + Modalità Gettare (Tieni premuto) 投擲模式 (按住) 投掷模式(按住) Modo de Arremesso (Segurar) @@ -219,12 +219,12 @@ Throwable Drop Mode (Toggle) Modo soltar objeto lanzable (interruptor) Режим броска гранаты (переключить) - 投てきモード (切り替え) + 投擲モード (切り替え) Tryb upuszczania ob. miotanego (przełącz) Wurfobjekt Fallmodus (umschalten) 투척물 떨어뜨리기 모드(토글) Mode de lancé de l'objet (Basculer) - Modalità Oggetto lanciabile Gettabile (Interruttore) + Modalità Getta Oggetto (Cambia) 投擲模式 (切換) 投掷模式(切换) Modo de Arremesso (Alternar) @@ -239,7 +239,7 @@ Scharf gemacht 뇌관 작동 amorcée - Armato + Innescato 引信開始燃燒 已开引信 Preparado @@ -254,7 +254,7 @@ Werfen 던지기 Lancer - Lanciare + Lancia 投擲 投掷 Arremessar @@ -270,7 +270,7 @@ (Scrollen) Modus wechseln (마우스 휠) 모드 변경 (Défilement) Changer de mode - (Scorrere) Cambio Modalità + (Scorri) Cambia Modalità (滾輪) 變更模式 (滚轮)变更模式 (Roda do Mouse) Alternar modo @@ -286,10 +286,10 @@ (Scrollen) Erweitern (마우스 휠) 연장 (Défilement) Étendre - (Scorrere) Estendere + (Scorri) Estendi (滾輪) 延長 (滚轮)延长 - (Roda do Mouse) Extender + (Roda do Mouse) Estender (Scrollovat) Oddálit (Tekerlek) Uzat @@ -302,7 +302,7 @@ (Klicken) Abkochen (클릭) 예열 (Clique) Dégoupiller - (Click) Arma + (Click) Innesca (點擊) 提早拉開引信 (点击)提早拉开引信 (Clique) Cozinhar @@ -313,7 +313,7 @@ Pick Up Coger Подобрать - 拾い上げる + 拾う Podnieś Aufheben 줍기 diff --git a/addons/ai/XEH_preInit.sqf b/addons/ai/XEH_preInit.sqf index 5ec0849ff9..b8b036fb31 100644 --- a/addons/ai/XEH_preInit.sqf +++ b/addons/ai/XEH_preInit.sqf @@ -11,6 +11,6 @@ if (isServer) then { GVAR(assignNVGstate) = false; }; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" ADDON = true; diff --git a/addons/ai/initSettings.sqf b/addons/ai/initSettings.inc.sqf similarity index 100% rename from addons/ai/initSettings.sqf rename to addons/ai/initSettings.inc.sqf diff --git a/addons/ai/stringtable.xml b/addons/ai/stringtable.xml index dedc339d09..12c9c8d73f 100644 --- a/addons/ai/stringtable.xml +++ b/addons/ai/stringtable.xml @@ -6,7 +6,7 @@ AI IA IA - AI + IA SI ИИ KI @@ -85,13 +85,21 @@ Auto-Equip NVGs Automatyczne zakładanie NVG Automatisch NVGs ausrüsten + Equipaggia NVG in automatico 야투경 자동 창착 + Equipement JVN automatique + Equipar NVGs automaticamente + 暗視装置の自動装備 Equips NVG in inventory during night time and unequips it during day time.\nDoes not add NVGs to inventory! Zakłada NVG w nocy i zdejmuje je w ciągu dnia.\nNie dodaje NVG do ekwipunku! Rüstet NVG nachts aus dem Inventar aus und entfernt es tagsüber.\nFügt keine NVGs zum Inventar hinzu! + Equipaggia NVG dall'inventario durante la notte, e li mette nell'inventario durante il giorno.\nNon aggiunge NVG all'inventario se non sono presenti. 야간에는 야투경을 소지품에 장착하고 주간에는 장착을 해제합니다.\n주의! 소지품에 야투경을 추가하는 것이 아닙니다! + Equipe des JVN pendant la nuit et les déséquipe le jour.\nN'ajoute pas les JVN dans l'intenvaire ! + Equipa o NVG do inventário durante a noite e desequipa durante o dia.\nNão adiciona NVGs ao inventário! + インベントリ内の暗視装置を夜間に装備し、日中は解除し収納します。\nこれはNVGをインベントリに追加しません。 diff --git a/addons/aircraft/stringtable.xml b/addons/aircraft/stringtable.xml index 6cd3700c73..97b08ed3e2 100644 --- a/addons/aircraft/stringtable.xml +++ b/addons/aircraft/stringtable.xml @@ -61,16 +61,19 @@ 30mm Odłamkowo-Burzące - Zapalające 30mm Yüksek Patlayıcı 30mm Hochexplosiv/Brandladung - 30mm 焼夷りゅう弾 + 30mm Esplosivo/Incendiario + 30mm 焼夷榴弾 30mm Tříštivo-trhavá zápalná střela 30мм Осколочно-Фугасный Зажигательный 30mm 고폭소이탄 + 30mm Alto-Explosivo Incendiária 30mm HEI 30mm AEI 30毫米高爆燃燒 30mm 高爆燃烧 + 30mm HEI 30 mm HEI 30mm OB-Z 30mm HEI @@ -79,6 +82,7 @@ 30mm HEI 30мм ОФЗ 30mm HEI + 30mm AEI 30mm DU Armor Piercing @@ -86,13 +90,15 @@ 30毫米貧化鈾穿甲彈 30 mm 贫铀穿甲 30 mm UA Armor Piercing + 30mm AP Uranio Impoverito 30mm Zubożony Uran - Przebijające 30mm DU Zırh Delici 30mm abgereichertes panzerbrechendes Uraniumgeschoss - 30mm DU 徹甲弾 + 30mm 劣化ウラン徹甲弾 30mm Protipancéřová střela z ochuzeného Uranu 30мм ОУ Бронебойный Снаряд 30mm 열화우라늄 철갑탄 + 30mm DU Perfurante de Blindagem 30mm DU AP @@ -100,6 +106,7 @@ 30毫米貧鈾穿甲 30mm 贫铀穿甲 30 mm UA AP + 30mm AP-UI 30mm ZU-P 30mm DU AP 30mm DU-PB @@ -107,6 +114,7 @@ 30 mm DU AP 30мм ОУ БС 30mm DU AP + 30mm DU AP 30mm Combat Mix 4:1 DU:HEI @@ -114,13 +122,15 @@ 30毫米戰鬥混合彈4:1 穿甲:高爆 30mm 战斗混合 穿甲/高爆 4:1 30 mm Mix de Combat 4:1 UA:HEI + 30mm Misto 4:1 UI:HEI 30mm Mieszanka bojowa 4:1 ZU:OB-Z 30mm Combat Mix 4:1 DU:HEI 30mm Kampfmischung 4:1 DU:HEB - 30mm コンバット ミックス 4:1 DU:HEI + 30mm コンバット ミックス 4:1 劣化ウラン徹甲弾:焼夷榴弾 30mm Bojový Mix 4:1 DU:HEI 30мм Смешанное боепитание 4:1 ОУ:ОФЗ 30mm 4:1 열화:고폭소이 + 30mm Mix de Combate 4:1 DU:AEI 30mm CM 4:1 @@ -128,6 +138,7 @@ 30毫米 穿高混合 4:1 30mm 穿爆混合 4:1 30 mm MdC 4:1 + 30mm Misto 4:1 30mm MB 4:1 30mm CM 4:1 30mm KM 4:1 @@ -142,10 +153,11 @@ 30毫米戰鬥混合彈5:1 穿甲:高爆 30 mm 战斗混合 穿甲/高爆 5:1 30 mm Mix de Combat 5:1 UA:HEI + 30mm Misto 5:1 UI:HEI 30mm Mieszanka bojowa 5:1 ZU:OB-Z 30mm Combat Mix 5:1 DU:HEI 30mm Kampfmischung 5:1 DU:HEB - 30mm コンバット ミックス 5:1 DU:HEI + 30mm コンバット ミックス 5:1 劣化ウラン徹甲弾:焼夷榴弾 30mm Bojový Mix 5:1 DU:HEI 30мм Смешанное боепитание 5:1 ОУ:ОФЗ 30mm 5:1 열화:고폭소이 @@ -156,6 +168,7 @@ 30毫米 穿高混合 5:1 30mm 穿爆混合 5:1 30 mm MdC 5:1 + 30mm Misto 5:1 30mm MB 5:1 30mm CM 5:1 30mm KM 5:1 diff --git a/addons/arsenal/ACE_Arsenal_Sorts.hpp b/addons/arsenal/ACE_Arsenal_Sorts.hpp index a3b5f80d28..db16192468 100644 --- a/addons/arsenal/ACE_Arsenal_Sorts.hpp +++ b/addons/arsenal/ACE_Arsenal_Sorts.hpp @@ -75,11 +75,11 @@ class GVAR(sorts) { scope = 2; displayName = CSTRING(sortByProtectionBallistic); tabs[] = {{3,4,6}, {}}; - statement = QUOTE([ARR_3(_this, 1000000, 1000)] call FUNC(sortStatement_protection)); + statement = QUOTE([ARR_3(_this,1000000,1000)] call FUNC(sortStatement_protection)); }; class ACE_protectionExplosive: ACE_protectionBallistic { displayName = CSTRING(sortByProtectionExplosive); - statement = QUOTE([ARR_3(_this, 1000, 1000000)] call FUNC(sortStatement_protection)); + statement = QUOTE([ARR_3(_this,1000,1000000)] call FUNC(sortStatement_protection)); }; }; diff --git a/addons/arsenal/ACE_Arsenal_Stats.hpp b/addons/arsenal/ACE_Arsenal_Stats.hpp index f7493b4840..7748d1bdc5 100644 --- a/addons/arsenal/ACE_Arsenal_Stats.hpp +++ b/addons/arsenal/ACE_Arsenal_Stats.hpp @@ -24,7 +24,7 @@ class GVAR(stats) { priority = 1.5; displayName = "$STR_a3_rscdisplayarsenal_stat_weight"; showText = 1; - textStatement = QUOTE([ARR_2(_this select 0, _this select 1)] call FUNC(statTextStatement_mass)); + textStatement = QUOTE([ARR_2(_this select 0,_this select 1)] call FUNC(statTextStatement_mass)); tabs[] = {{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14}, {0,1,2,3,4,5,6,7}}; }; class ACE_rateOfFire: statBase { @@ -34,8 +34,8 @@ class GVAR(stats) { displayName = "$STR_a3_rscdisplayarsenal_stat_rof"; showBar = 1; showText = 1; - barStatement = QUOTE([ARR_3((_this select 0) select 0, _this select 1, [ARR_2([ARR_2(-1.4, 0.31)], [ARR_2(1, 0.01)])])] call FUNC(statBarStatement_rateOfFIre)); - textStatement = QUOTE([ARR_3((_this select 0) select 0, _this select 1, [ARR_2([ARR_2(-1.4, 0.31)], false)])] call FUNC(statTextStatement_rateOfFire)); + barStatement = QUOTE([ARR_3((_this select 0) select 0,_this select 1,[ARR_2([ARR_2(-1.4,0.31)],[ARR_2(1,0.01)])])] call FUNC(statBarStatement_rateOfFIre)); + textStatement = QUOTE([ARR_3((_this select 0) select 0,_this select 1,[ARR_2([ARR_2(-1.4,0.31)],false)])] call FUNC(statTextStatement_rateOfFire)); tabs[] = {{0,1}, {}}; }; class ACE_accuracy: statBase { @@ -45,8 +45,8 @@ class GVAR(stats) { displayName = "$STR_a3_rscdisplayarsenal_stat_dispersion"; showBar = 1; showText = 1; - barStatement = QUOTE([ARR_3((_this select 0) select 0, _this select 1, [ARR_3([ARR_2(-4, -1.7)], [ARR_2(1, 0.01)], true)])] call FUNC(statBarStatement_accuracy)); - textStatement = QUOTE([ARR_3((_this select 0) select 0, _this select 1, [ARR_2([ARR_2(-4, -1.7)], false)])] call FUNC(statTextStatement_accuracy)); + barStatement = QUOTE([ARR_3((_this select 0) select 0,_this select 1,[ARR_3([ARR_2(-4,-1.7)],[ARR_2(1,0.01)],true)])] call FUNC(statBarStatement_accuracy)); + textStatement = QUOTE([ARR_3((_this select 0) select 0,_this select 1,[ARR_2([ARR_2(-4,-1.7)],false)])] call FUNC(statTextStatement_accuracy)); tabs[] = {{0,1}, {}}; }; class ACE_maxZeroing: statBase { @@ -55,7 +55,7 @@ class GVAR(stats) { stats[] = {"maxZeroing"}; displayName = "$STR_a3_rscdisplayarsenal_stat_range"; showBar = 1; - barStatement = QUOTE([ARR_3((_this select 0) select 0, _this select 1, [ARR_3([ARR_2(0, 2500)], [ARR_2(0.01, 1)], false)])] call FUNC(statBarStatement_default)); + barStatement = QUOTE([ARR_3((_this select 0) select 0,_this select 1,[ARR_3([ARR_2(0,2500)],[ARR_2(0.01,1)],false)])] call FUNC(statBarStatement_default)); tabs[] = {{0,1,2}, {}}; }; class ACE_impact: statBase { @@ -64,7 +64,7 @@ class GVAR(stats) { stats[] = {"hit", "initSpeed"}; displayName = "$STR_a3_rscdisplayarsenal_stat_impact"; showBar = 1; - barStatement = QUOTE([ARR_3(_this select 0, _this select 1, [ARR_2([ARR_2(0, 3.2)], [ARR_2(-1, 1100)])])] call FUNC(statBarStatement_impact)); + barStatement = QUOTE([ARR_3(_this select 0,_this select 1,[ARR_2([ARR_2(0,3.2)],[ARR_2(-1,1100)])])] call FUNC(statBarStatement_impact)); tabs[] = {{0,1,2}, {}}; }; class ACE_scopeMagnification: statBase { @@ -105,7 +105,7 @@ class GVAR(stats) { stats[] = {"passthrough"}; displayName = "$STR_a3_rscdisplayarsenal_stat_passthrough"; showBar = 1; - barStatement = QUOTE([ARR_3((_this select 0) select 0, _this select 1, [ARR_3([ARR_2(0, 0.63)], [ARR_2(0.01, 1)], false)])] call FUNC(statBarStatement_default)); + barStatement = QUOTE([ARR_3((_this select 0) select 0,_this select 1,[ARR_3([ARR_2(0,0.63)],[ARR_2(0.01,1)],false)])] call FUNC(statBarStatement_default)); tabs[] = {{3,4,6}, {}}; }; class ACE_explosiveResistance: statBase { @@ -114,7 +114,7 @@ class GVAR(stats) { stats[] = {"armor"}; displayName = "$STR_a3_rscdisplayarsenal_stat_armor"; showBar = 1; - barStatement = QUOTE([ARR_3((_this select 0) select 0, _this select 1, [ARR_3([ARR_2(0, 0.80)], [ARR_2(0.01, 1)], false)])] call FUNC(statBarStatement_default)); + barStatement = QUOTE([ARR_3((_this select 0) select 0,_this select 1,[ARR_3([ARR_2(0,0.80)],[ARR_2(0.01,1)],false)])] call FUNC(statBarStatement_default)); tabs[] = {{3,4,6}, {}}; }; class ACE_load: statBase { @@ -123,7 +123,7 @@ class GVAR(stats) { stats[] = {"maximumLoad"}; displayName = "$STR_a3_rscdisplayarsenal_stat_load"; showBar = 1; - barStatement = QUOTE([ARR_3((_this select 0) select 0, _this select 1, [ARR_3([ARR_2(0, 500)], [ARR_2(0.01, 1)], false)])] call FUNC(statBarStatement_default)); + barStatement = QUOTE([ARR_3((_this select 0) select 0,_this select 1,[ARR_3([ARR_2(0,500)],[ARR_2(0.01,1)],false)])] call FUNC(statBarStatement_default)); tabs[] = {{3,4,5}, {}}; }; class ACE_smokeChemTTL: statBase { @@ -133,7 +133,7 @@ class GVAR(stats) { displayName = CSTRING(statTTL); showText = 1; textStatement = QUOTE(call FUNC(statTextStatement_smokeChemTTL)); - condition = QUOTE((configName (_this select 1)) isKindOf [ARR_2('smokeShell', configFile >> 'CfgMagazines')]); + condition = QUOTE((configName (_this select 1)) isKindOf [ARR_2('smokeShell',configFile >> 'CfgMagazines')]); tabs[] = {{}, {5}}; }; class ACE_explosionTime: statBase { @@ -152,4 +152,13 @@ class GVAR(stats) { textStatement = QUOTE(call FUNC(statTextStatement_magCount)); tabs[] = {{}, {4}}; }; + class ACE_illuminators: statBase { + scope = 2; + priority = 1; + stats[] = {}; + displayName = CSTRING(statIlluminators); + showText = 1; + textStatement = QUOTE(call FUNC(statTextStatement_illuminators)); + tabs[] = {{}, {1}}; + }; }; diff --git a/addons/arsenal/Cfg3DEN.hpp b/addons/arsenal/Cfg3DEN.hpp index 8b40f77bfe..f119af364b 100644 --- a/addons/arsenal/Cfg3DEN.hpp +++ b/addons/arsenal/Cfg3DEN.hpp @@ -28,7 +28,7 @@ class Cfg3DEN { w = QUOTE(130 * ATTRIBUTE_W); h = QUOTE(106.83 * ATTRIBUTE_H); attributeLoad = QUOTE([ARR_2(_this,+_value)] call FUNC(attributeLoad)); - attributeSave = QUOTE(uiNamespace getVariable [ARR_2(QQGVAR(attributeValue),[ARR_2([], 0)])]); + attributeSave = QUOTE(uiNamespace getVariable [ARR_2(QQGVAR(attributeValue),[ARR_2([],0)])]); class controls { class ModeTitle: ctrlStatic { idc = -1; @@ -40,7 +40,7 @@ class Cfg3DEN { }; class Mode: ctrlToolbox { idc = IDC_ATTRIBUTE_MODE; - onToolBoxSelChanged = QUOTE([ARR_2(ctrlParentControlsGroup (_this select 0), _this select 1)] call FUNC(attributeMode)); + onToolBoxSelChanged = QUOTE([ARR_2(ctrlParentControlsGroup (_this select 0),_this select 1)] call FUNC(attributeMode)); x = QUOTE(5 * ATTRIBUTE_W); y = QUOTE(5 * ATTRIBUTE_H); w = QUOTE(125 * ATTRIBUTE_W); @@ -55,7 +55,7 @@ class Cfg3DEN { }; class Category: ctrlToolboxPictureKeepAspect { idc = IDC_ATTRIBUTE_CATEGORY; - onToolBoxSelChanged = QUOTE([ARR_2(ctrlParentControlsGroup (_this select 0), _this select 1)] call FUNC(attributeCategory)); + onToolBoxSelChanged = QUOTE([ARR_2(ctrlParentControlsGroup (_this select 0),_this select 1)] call FUNC(attributeCategory)); x = QUOTE(5 * ATTRIBUTE_W); y = QUOTE(15 * ATTRIBUTE_H); w = QUOTE(125 * ATTRIBUTE_W); @@ -129,7 +129,8 @@ class Cfg3DEN { }; class SearchButton: ctrlButtonPicture { idc = IDC_ATTRIBUTE_SEARCH_BUTTON; - onButtonClick = QUOTE( \ + #pragma hemtt suppress pw3_padded_arg + onButtonClick = QUOTE(\ params ['_searchButton']; \ private _controlsGroup = ctrlParentControlsGroup _searchButton; \ private _searchBar = _controlsGroup controlsGroupCtrl IDC_ATTRIBUTE_SEARCHBAR; \ @@ -147,7 +148,8 @@ class Cfg3DEN { class SearchBar: ctrlEdit { idc = IDC_ATTRIBUTE_SEARCHBAR; onKeyUp = QUOTE([ctrlParentControlsGroup (_this select 0)] call FUNC(attributeAddItems)); - onMouseButtonClick = QUOTE( \ + #pragma hemtt suppress pw3_padded_arg + onMouseButtonClick = QUOTE(\ params [ARR_2('_searchBar','_button')]; \ if (_button != 1) exitWith {}; \ _searchBar ctrlSetText ''; \ diff --git a/addons/arsenal/Display3DEN.hpp b/addons/arsenal/Display3DEN.hpp index b1b78b9f92..8377c38164 100644 --- a/addons/arsenal/Display3DEN.hpp +++ b/addons/arsenal/Display3DEN.hpp @@ -26,7 +26,7 @@ class Display3DEN { class GVAR(portVALoadouts) { text = CSTRING(portLoadoutsText); picture = QPATHTOEF(common,data\logo_ace3_ca.paa); - action = QUOTE(call DFUNC(portVALoadouts);); + action = QUOTE(call DFUNC(portVALoadouts)); }; }; }; diff --git a/addons/arsenal/XEH_PREP.hpp b/addons/arsenal/XEH_PREP.hpp index 3b063d8ebe..ca34487c97 100644 --- a/addons/arsenal/XEH_PREP.hpp +++ b/addons/arsenal/XEH_PREP.hpp @@ -39,11 +39,14 @@ PREP(fillLeftPanel); PREP(fillLoadoutsList); PREP(fillRightPanel); PREP(fillSort); +PREP(getVirtualItems); PREP(handleActions); PREP(handleLoadoutsSearchbar); PREP(handleMouse); PREP(handleScrollWheel); PREP(handleSearchbar); +PREP(handleSearchInputChanged); +PREP(handleSearchModeToggle); PREP(handleStats); PREP(initBox); PREP(itemInfo); @@ -92,6 +95,7 @@ PREP(statBarStatement_impact); PREP(statBarStatement_rateOfFIre); PREP(statTextStatement_accuracy); PREP(statTextStatement_explosionTime); +PREP(statTextStatement_illuminators); PREP(statTextStatement_magCount); PREP(statTextStatement_mass); PREP(statTextStatement_rateOfFire); @@ -102,4 +106,5 @@ PREP(updateCamPos); PREP(updateRightPanel); PREP(updateCurrentItemsList); PREP(updateUniqueItemsList); +PREP(updateVirtualItemsFlat); PREP(verifyLoadout); diff --git a/addons/arsenal/XEH_postInit.sqf b/addons/arsenal/XEH_postInit.sqf index ee03bff9a9..ac6283e604 100644 --- a/addons/arsenal/XEH_postInit.sqf +++ b/addons/arsenal/XEH_postInit.sqf @@ -18,6 +18,15 @@ GVAR(lastSortDirectionRight) = DESCENDING; [QGVAR(removeDefaultLoadout), LINKFUNC(removeDefaultLoadout)] call CBA_fnc_addEventHandler; [QGVAR(renameDefaultLoadout), LINKFUNC(renameDefaultLoadout)] call CBA_fnc_addEventHandler; +[QGVAR(refresh), { + params ["_object"]; + + // If the arsenal is already open, refresh arsenal display + if (!isNil QGVAR(currentBox) && {GVAR(currentBox) isEqualTo _object}) then { + [true, true] call FUNC(refresh); + }; +}] call CBA_fnc_addEventHandler; + [QGVAR(broadcastFace), { params ["_unit", "_face"]; _unit setFace _face; diff --git a/addons/arsenal/XEH_preInit.sqf b/addons/arsenal/XEH_preInit.sqf index 34299c1871..df4da91338 100644 --- a/addons/arsenal/XEH_preInit.sqf +++ b/addons/arsenal/XEH_preInit.sqf @@ -9,7 +9,7 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" // Arsenal events [QGVAR(statsToggle), { diff --git a/addons/arsenal/functions/fnc_addDefaultLoadout.sqf b/addons/arsenal/functions/fnc_addDefaultLoadout.sqf index b9b8853f15..f54ff03eeb 100644 --- a/addons/arsenal/functions/fnc_addDefaultLoadout.sqf +++ b/addons/arsenal/functions/fnc_addDefaultLoadout.sqf @@ -20,8 +20,9 @@ params [["_name", "", [""]], ["_loadout", [], [[]]], ["_global", false, [false]]]; -if (_global) then { - [QGVAR(addDefaultLoadout), [_name, _loadout]] call CBA_fnc_remoteEvent; +if (_global) exitWith { + private _eventID = format [QGVAR(loadouts_%1), _name]; + [QGVAR(addDefaultLoadout), [_name, _loadout], _eventID] call CBA_fnc_globalEventJIP; }; private _extendedInfo = createHashMap; diff --git a/addons/arsenal/functions/fnc_addVirtualItems.sqf b/addons/arsenal/functions/fnc_addVirtualItems.sqf index 0e16af3771..19859f619c 100644 --- a/addons/arsenal/functions/fnc_addVirtualItems.sqf +++ b/addons/arsenal/functions/fnc_addVirtualItems.sqf @@ -123,3 +123,10 @@ if (_items isEqualType true) then { }; _object setVariable [QGVAR(virtualItems), _cargo, _global]; + +// If the arsenal is already open, refresh arsenal display +if (_global) then { + [QGVAR(refresh), _object] call CBA_fnc_globalEvent; +} else { + [QGVAR(refresh), _object] call CBA_fnc_localEvent; +}; diff --git a/addons/arsenal/functions/fnc_attributeAddItems.sqf b/addons/arsenal/functions/fnc_attributeAddItems.sqf index 385ffccc86..5457a920a2 100644 --- a/addons/arsenal/functions/fnc_attributeAddItems.sqf +++ b/addons/arsenal/functions/fnc_attributeAddItems.sqf @@ -18,6 +18,8 @@ params ["_controlsGroup"]; +forceUnicode 0; // handle non-ANSI characters + private _category = lbCurSel (_controlsGroup controlsGroupCtrl IDC_ATTRIBUTE_CATEGORY); private _filter = ctrlText (_controlsGroup controlsGroupCtrl IDC_ATTRIBUTE_SEARCHBAR); private _configItems = uiNamespace getVariable QGVAR(configItems); @@ -28,7 +30,7 @@ _attributeValue params ["_attributeItems", "_attributeMode"]; TRACE_3("Populating list",_category,_filter,_attributeValue); if (_filter != "") then { _filter = _filter call EFUNC(common,escapeRegex); - _filter = ".*?" + (_filter splitString " " joinString ".*?" + ".*?/io"); + _filter = ".*?" + (_filter splitString " " joinString ".*?") + ".*?/io"; } else { _filter = ".*?/io"; }; @@ -139,3 +141,6 @@ private _config = _cfgClass; // Sort alphabetically _listbox lnbSort [1, false]; + +// Reset unicode flag +forceUnicode -1; diff --git a/addons/arsenal/functions/fnc_attributeInit.sqf b/addons/arsenal/functions/fnc_attributeInit.sqf index 1e44dc579f..42e72056fc 100644 --- a/addons/arsenal/functions/fnc_attributeInit.sqf +++ b/addons/arsenal/functions/fnc_attributeInit.sqf @@ -24,14 +24,12 @@ if (_mode > 0) then { // Blacklist: add full arsenal and take items away [_object, true, true] call FUNC(initBox); - // Need to delay removal by 2 frames + // Wait until all items have been added, so that the blacklisted items can be removed [{ - [{ - params ["_object", "_items"]; - - [_object, _items, true] call FUNC(removeVirtualItems); - }, _this] call CBA_fnc_execNextFrame; - }, [_object, _items]] call CBA_fnc_execNextFrame; + !isNil {(_this select 0) getVariable QGVAR(virtualItems)} + }, { + [_this select 0, _this select 1, true] call FUNC(removeVirtualItems); + }, [_object, _items], 20] call CBA_fnc_waitUntilAndExecute; // 20s timeout in case of failure } else { // Exit on whitelist mode with no items if (_items isEqualTo []) exitWith {}; diff --git a/addons/arsenal/functions/fnc_buttonCargo.sqf b/addons/arsenal/functions/fnc_buttonCargo.sqf index 48c5ee477e..d7713a2518 100644 --- a/addons/arsenal/functions/fnc_buttonCargo.sqf +++ b/addons/arsenal/functions/fnc_buttonCargo.sqf @@ -47,8 +47,8 @@ private _container = switch (GVAR(currentLeftPanel)) do { }; }; - /// Get all items from container (excluding container itself) - _containerItems = [GVAR(center), 0, 3, 0, 0, false] call EFUNC(common,uniqueUnitItems); + // Get all items from container + _containerItems = uniformItems GVAR(center); // Update currentItems GVAR(currentItems) set [IDX_CURR_UNIFORM_ITEMS, ((getUnitLoadout GVAR(center)) select IDX_LOADOUT_UNIFORM) param [1, []]]; @@ -75,8 +75,8 @@ private _container = switch (GVAR(currentLeftPanel)) do { }; }; - // Get all items from container (excluding container itself) - _containerItems = [GVAR(center), 0, 0, 3, 0, false] call EFUNC(common,uniqueUnitItems); + // Get all items from container + _containerItems = vestItems GVAR(center); // Update currentItems GVAR(currentItems) set [IDX_CURR_VEST_ITEMS, ((getUnitLoadout GVAR(center)) select IDX_LOADOUT_VEST) param [1, []]]; @@ -103,8 +103,8 @@ private _container = switch (GVAR(currentLeftPanel)) do { }; }; - // Get all items from container (excluding container itself) - _containerItems = [GVAR(center), 0, 0, 0, 3, false] call EFUNC(common,uniqueUnitItems); + // Get all items from container + _containerItems = backpackItems GVAR(center); // Update currentItems GVAR(currentItems) set [IDX_CURR_BACKPACK_ITEMS, ((getUnitLoadout GVAR(center)) select IDX_LOADOUT_BACKPACK) param [1, []]]; @@ -117,7 +117,7 @@ private _container = switch (GVAR(currentLeftPanel)) do { }; // Find out how many items of that type there are and update the number displayed -_ctrlList lnbSetText [[_lnbCurSel, 2], str (_containerItems getOrDefault [_item, 0])]; +_ctrlList lnbSetText [[_lnbCurSel, 2], str ({_item == _x} count _containerItems)]; [QGVAR(cargoChanged), [_display, _item, _addOrRemove, GVAR(shiftState)]] call CBA_fnc_localEvent; diff --git a/addons/arsenal/functions/fnc_buttonLoadoutsRename.sqf b/addons/arsenal/functions/fnc_buttonLoadoutsRename.sqf index 87191a99c2..d25fa485cf 100644 --- a/addons/arsenal/functions/fnc_buttonLoadoutsRename.sqf +++ b/addons/arsenal/functions/fnc_buttonLoadoutsRename.sqf @@ -43,11 +43,7 @@ private _loadoutIndex = _data findIf {(_x select 0) == _loadoutName}; (_data select _loadoutIndex) set [0, _editBoxContent]; if (GVAR(currentLoadoutsTab) == IDC_buttonDefaultLoadouts) then { - if (is3DEN) then { - set3DENMissionAttributes [[QGVAR(DummyCategory), QGVAR(DefaultLoadoutsListAttribute), GVAR(defaultLoadoutsList)]]; - } else { - [QGVAR(renameDefaultLoadout), [_loadoutName, _editBoxContent]] call CBA_fnc_remoteEvent; - }; + set3DENMissionAttributes [[QGVAR(DummyCategory), QGVAR(DefaultLoadoutsListAttribute), GVAR(defaultLoadoutsList)]]; }; private _currentLoadoutsTab = str GVAR(currentLoadoutsTab); diff --git a/addons/arsenal/functions/fnc_fillLeftPanel.sqf b/addons/arsenal/functions/fnc_fillLeftPanel.sqf index 2889df51ae..effcc03d20 100644 --- a/addons/arsenal/functions/fnc_fillLeftPanel.sqf +++ b/addons/arsenal/functions/fnc_fillLeftPanel.sqf @@ -7,6 +7,7 @@ * Arguments: * 0: Arsenal display * 1: Tab control + * 2: Animate panel refresh * * Return Value: * None @@ -14,28 +15,30 @@ * Public: No */ -params ["_display", "_control"]; +params ["_display", "_control", ["_animate", true]]; // Fade old control background if (!isNil QGVAR(currentLeftPanel)) then { private _previousCtrlBackground = _display displayCtrl (GVAR(currentLeftPanel) - 1); _previousCtrlBackground ctrlSetFade 1; - _previousCtrlBackground ctrlCommit FADE_DELAY; + _previousCtrlBackground ctrlCommit ([0, FADE_DELAY] select _animate); }; // Show new control background private _ctrlIDC = ctrlIDC _control; private _ctrlBackground = _display displayCtrl (_ctrlIDC - 1); _ctrlBackground ctrlSetFade 0; -_ctrlBackground ctrlCommit FADE_DELAY; +_ctrlBackground ctrlCommit ([0, FADE_DELAY] select _animate); private _ctrlPanel = _display displayCtrl IDC_leftTabContent; // Force a "refresh" animation of the panel -_ctrlPanel ctrlSetFade 1; -_ctrlPanel ctrlCommit 0; -_ctrlPanel ctrlSetFade 0; -_ctrlPanel ctrlCommit FADE_DELAY; +if (_animate) then { + _ctrlPanel ctrlSetFade 1; + _ctrlPanel ctrlCommit 0; + _ctrlPanel ctrlSetFade 0; + _ctrlPanel ctrlCommit FADE_DELAY; +}; _ctrlPanel lbSetCurSel -1; diff --git a/addons/arsenal/functions/fnc_fillRightPanel.sqf b/addons/arsenal/functions/fnc_fillRightPanel.sqf index a612268f01..346e07fa59 100644 --- a/addons/arsenal/functions/fnc_fillRightPanel.sqf +++ b/addons/arsenal/functions/fnc_fillRightPanel.sqf @@ -7,6 +7,7 @@ * Arguments: * 0: Arsenal display * 1: Tab control + * 2: Animate panel refresh (default: true) * * Return Value: * None @@ -14,13 +15,13 @@ * Public: No */ -params ["_display", "_control"]; +params ["_display", "_control", ["_animate", true]]; // Fade old control background if (!isNil QGVAR(currentRightPanel)) then { private _previousCtrlBackground = _display displayCtrl (GVAR(currentRightPanel) - 1); _previousCtrlBackground ctrlSetFade 1; - _previousCtrlBackground ctrlCommit FADE_DELAY; + _previousCtrlBackground ctrlCommit ([0, FADE_DELAY] select _animate); }; // Show new control background @@ -28,7 +29,7 @@ private _ctrlIDC = ctrlIDC _control; private _ctrlBackground = _display displayCtrl (_ctrlIDC - 1); _ctrlBackground ctrlShow true; _ctrlBackground ctrlSetFade 0; -_ctrlBackground ctrlCommit FADE_DELAY; +_ctrlBackground ctrlCommit ([0, FADE_DELAY] select _animate); private _searchbarCtrl = _display displayCtrl IDC_rightSearchbar; @@ -43,10 +44,14 @@ private _cfgMagazines = configFile >> "CfgMagazines"; private _cfgWeapons = configFile >> "CfgWeapons"; private _rightPanelCache = uiNamespace getVariable QGVAR(rightPanelCache); -private _currentCargo = itemsWithMagazines GVAR(center); +private _currentCargo = []; // we only need this if we're filtering for favorites +if (GVAR(favoritesOnly)) then { + _currentCargo = itemsWithMagazines GVAR(center) + backpacks GVAR(center); + _currentCargo = _currentCargo arrayIntersect _currentCargo; +}; private _fnc_fillRightContainer = { - params ["_configCategory", "_className", "_hasItemInfo", ["_isUnique", false, [false]], ["_unknownOrigin", false, [false]]]; + params ["_configCategory", "_className", ["_isUnique", false, [false]], ["_unknownOrigin", false, [false]]]; if (GVAR(favoritesOnly) && {!(_className in _currentCargo)} && {!((toLower _className) in GVAR(favorites))}) exitWith {}; @@ -63,7 +68,6 @@ private _fnc_fillRightContainer = { // "Misc. items" magazines (e.g. spare barrels, intel, photos) if (_className in (uiNamespace getVariable QGVAR(magazineMiscItems))) then { _configPath = _cfgMagazines >> _className; - _hasItemInfo = false; }; // If an item with unknown origin is in the arsenal list, try to find it @@ -74,34 +78,15 @@ private _fnc_fillRightContainer = { if (isNull _configPath) then { _configPath = _className call CBA_fnc_getObjectConfig; }; - - // Check if item is has item info - _itemInfo = isClass (_cfgWeapons >> configName _configPath); }; - // Get mass - private _mass = if (!_hasItemInfo) then { - getNumber (_configPath >> "mass") - } else { - private _mass = getNumber (_configPath >> "itemInfo" >> "mass"); - - if (_mass == 0) then { - _mass = getNumber (_configPath >> "WeaponSlotsInfo" >> "mass"); - }; - - _mass - }; - - _rightPanelCache set [_className, _mass]; // Needed because this provides more accurate weight for FUNC(updateRightPanel) - - [getText (_configPath >> "displayName"), getText (_configPath >> "picture"), _mass] - }, true]) params ["_displayName", "_picture", "_mass"]; + [getText (_configPath >> "displayName"), getText (_configPath >> "picture")] + }, true]) params ["_displayName", "_picture"]; private _lbAdd = _ctrlPanel lnbAddRow ["", _displayName, "0"]; _ctrlPanel lnbSetText [[_lbAdd, 1], _displayName]; _ctrlPanel lnbSetData [[_lbAdd, 0], _className]; _ctrlPanel lnbSetPicture [[_lbAdd, 0], _picture]; - _ctrlPanel lnbSetValue [[_lbAdd, 0], _mass]; _ctrlPanel lnbSetValue [[_lbAdd, 2], [0, 1] select _isUnique]; _ctrlPanel lnbSetTooltip [[_lbAdd, 0], format ["%1\n%2", _displayName, _className]]; if ((toLower _className) in GVAR(favorites)) then { @@ -113,15 +98,9 @@ private _fnc_fillRightContainer = { private _ctrlPanel = _display displayCtrl IDC_rightTabContent; private _listnBox = _display displayCtrl IDC_rightTabContentListnBox; -// Reset right panel content -lbClear _ctrlPanel; -lbClear _listnBox; - -_ctrlPanel lbSetCurSel -1; -_listnBox lbSetCurSel -1; - // Retrieve compatible items -private _itemToCheck = ""; +private _isContainer = false; +private _selectedItem = ""; private _compatibleItems = []; private _compatibleMagsMuzzle = []; private _compatibleMagsAll = createHashMap; @@ -153,12 +132,12 @@ switch (GVAR(currentLeftPanel)) do { // Check if weapon attachement or magazine if (_index != -1) then { - _itemToCheck = (GVAR(currentItems) select _currentWeaponItemsIndex) select _index; + _selectedItem = (GVAR(currentItems) select _currentWeaponItemsIndex) select _index; // If weapon attachment, get base weapon; Get compatible items if (_index <= 3) then { _compatibleItems = compatibleItems _weapon; - _itemToCheck = _itemToCheck call FUNC(baseWeapon); + _selectedItem = _selectedItem call FUNC(baseWeapon); } else { // Get compatible magazines for primary & secondary muzzle (secondary muzzle is not guaranteed to exist) // Assumption: One weapon can have two muzzles maximum @@ -170,7 +149,15 @@ switch (GVAR(currentLeftPanel)) do { case IDC_buttonUniform; case IDC_buttonVest; case IDC_buttonBackpack: { - _ctrlPanel = _listnBox; + _isContainer = true; + + // Get the currently selected item in panel + private _selectedItemIndex = lnbCurSelRow _listnBox; + + // If something is selected, save it + if (_selectedItemIndex != -1) then { + _selectedItem = _listnBox lnbData [_selectedItemIndex, 0]; + }; // This is for the "compatible magazines" tab when a container is open if (_ctrlIDC == IDC_buttonMag) then { @@ -182,11 +169,24 @@ switch (GVAR(currentLeftPanel)) do { }; }; +// Reset right panel content +lbClear _ctrlPanel; +lnbClear _listnBox; + +_ctrlPanel lbSetCurSel -1; +_listnBox lnbSetCurSelRow -1; + +if (_isContainer) then { + _ctrlPanel = _listnBox; +}; + // Force a "refresh" animation of the panel -_ctrlPanel ctrlSetFade 1; -_ctrlPanel ctrlCommit 0; -_ctrlPanel ctrlSetFade 0; -_ctrlPanel ctrlCommit FADE_DELAY; +if (_animate) then { + _ctrlPanel ctrlSetFade 1; + _ctrlPanel ctrlCommit 0; + _ctrlPanel ctrlSetFade 0; + _ctrlPanel ctrlCommit FADE_DELAY; +}; // Check if the left panel is a weapon. If so, right panel will be compatible items with weapon only private _leftPanelState = GVAR(currentLeftPanel) in [IDC_buttonPrimaryWeapon, IDC_buttonHandgun, IDC_buttonSecondaryWeapon, IDC_buttonBinoculars]; @@ -214,11 +214,11 @@ switch (_ctrlIDC) do { } forEach _compatibleItems; } else { { - ["CfgWeapons", _x, true] call _fnc_fillRightContainer; + ["CfgWeapons", _x] call _fnc_fillRightContainer; } forEach (keys ((GVAR(virtualItems) get IDX_VIRT_ATTACHMENTS) get _index)); { - ["CfgWeapons", _x, true, true] call _fnc_fillRightContainer; + ["CfgWeapons", _x, true] call _fnc_fillRightContainer; } forEach (keys ((GVAR(virtualItems) get IDX_VIRT_UNIQUE_ATTACHMENTS) get _index)); }; }; @@ -237,44 +237,44 @@ switch (_ctrlIDC) do { case IDC_buttonMag: { { if (_x in (GVAR(virtualItems) get IDX_VIRT_ITEMS_ALL)) then { - ["CfgMagazines", _x, false] call _fnc_fillRightContainer; + ["CfgMagazines", _x] call _fnc_fillRightContainer; continue; }; if (_x in (GVAR(virtualItems) get IDX_VIRT_UNIQUE_VIRT_ITEMS_ALL)) then { - ["CfgMagazines", _x, false, true] call _fnc_fillRightContainer; + ["CfgMagazines", _x, true] call _fnc_fillRightContainer; }; } forEach (keys _compatibleMagsAll); }; // All magazines case IDC_buttonMagALL: { { - ["CfgMagazines", _x, false] call _fnc_fillRightContainer; + ["CfgMagazines", _x] call _fnc_fillRightContainer; } forEach (keys (GVAR(virtualItems) get IDX_VIRT_ITEMS_ALL)); { - ["CfgMagazines", _x, false, true] call _fnc_fillRightContainer; + ["CfgMagazines", _x, true] call _fnc_fillRightContainer; } forEach (keys (GVAR(virtualItems) get IDX_VIRT_UNIQUE_VIRT_ITEMS_ALL)); }; // Grenades case IDC_buttonThrow: { { - ["CfgMagazines", _x, false] call _fnc_fillRightContainer; + ["CfgMagazines", _x] call _fnc_fillRightContainer; } forEach (keys (GVAR(virtualItems) get IDX_VIRT_GRENADES)); { - ["CfgMagazines", _x, false, true] call _fnc_fillRightContainer; + ["CfgMagazines", _x, true] call _fnc_fillRightContainer; } forEach (keys (GVAR(virtualItems) get IDX_VIRT_UNIQUE_GRENADES)); }; // Explosives case IDC_buttonPut: { { - ["CfgMagazines", _x, false] call _fnc_fillRightContainer; + ["CfgMagazines", _x] call _fnc_fillRightContainer; } forEach (keys (GVAR(virtualItems) get IDX_VIRT_EXPLOSIVES)); { - ["CfgMagazines", _x, false, true] call _fnc_fillRightContainer; + ["CfgMagazines", _x, true] call _fnc_fillRightContainer; } forEach (keys (GVAR(virtualItems) get IDX_VIRT_UNIQUE_EXPLOSIVES)); }; // Misc. items @@ -293,33 +293,35 @@ switch (_ctrlIDC) do { // "Regular" misc. items { if !(_x in _items) then { - ["CfgWeapons", _x, true] call _fnc_fillRightContainer; + ["CfgWeapons", _x] call _fnc_fillRightContainer; }; } forEach (keys (GVAR(virtualItems) get IDX_VIRT_MISC_ITEMS)); // Unique items { if !(_x in _items) then { - ["CfgWeapons", _x, true, true] call _fnc_fillRightContainer; + ["CfgWeapons", _x, true] call _fnc_fillRightContainer; }; } forEach (keys (GVAR(virtualItems) get IDX_VIRT_UNIQUE_MISC_ITEMS)); // Unique backpacks { if !(_x in _items) then { - ["CfgVehicles", _x, false, true] call _fnc_fillRightContainer; + ["CfgVehicles", _x, true] call _fnc_fillRightContainer; }; } forEach (keys (GVAR(virtualItems) get IDX_VIRT_UNIQUE_BACKPACKS)); // Unique goggles { if !(_x in _items) then { - ["CfgGlasses", _x, false, true] call _fnc_fillRightContainer; + // _y indicates if an item is truly unique or if it's a non-inventory item in a container (e.g. goggles in backpack) + ["CfgGlasses", _x, _y] call _fnc_fillRightContainer; }; - } forEach (keys (GVAR(virtualItems) get IDX_VIRT_UNIQUE_GOGGLES)); + } forEach (GVAR(virtualItems) get IDX_VIRT_UNIQUE_GOGGLES); // Unknown items { if !(_x in _items) then { - ["CfgWeapons", _x, true, true, true] call _fnc_fillRightContainer; + // _y indicates if an item is truly unique or if it's a non-inventory item in a container (e.g. helmet in backpack) + ["CfgWeapons", _x, _y, true] call _fnc_fillRightContainer; }; - } forEach (keys (GVAR(virtualItems) get IDX_VIRT_UNIQUE_UNKNOWN_ITEMS)); + } forEach (GVAR(virtualItems) get IDX_VIRT_UNIQUE_UNKNOWN_ITEMS); // if an item is here but in virtual items, it's just in the wrong place }; // Custom buttons default { @@ -331,23 +333,23 @@ switch (_ctrlIDC) do { switch (true) do { // "Regular" misc. items case (_x in (GVAR(virtualItems) get IDX_VIRT_MISC_ITEMS)): { - ["CfgWeapons", _x, true] call _fnc_fillRightContainer; + ["CfgWeapons", _x] call _fnc_fillRightContainer; }; // Unique items case (_x in (GVAR(virtualItems) get IDX_VIRT_UNIQUE_MISC_ITEMS)): { - ["CfgWeapons", _x, true, true] call _fnc_fillRightContainer; + ["CfgWeapons", _x, true] call _fnc_fillRightContainer; }; // Unique backpacks case (_x in (GVAR(virtualItems) get IDX_VIRT_UNIQUE_BACKPACKS)): { - ["CfgVehicles", _x, false, true] call _fnc_fillRightContainer; + ["CfgVehicles", _x, true] call _fnc_fillRightContainer; }; // Unique goggles case (_x in (GVAR(virtualItems) get IDX_VIRT_UNIQUE_GOGGLES)): { - ["CfgGlasses", _x, false, true] call _fnc_fillRightContainer; + ["CfgGlasses", _x, GVAR(virtualItems) get IDX_VIRT_UNIQUE_GOGGLES get _x] call _fnc_fillRightContainer; }; // Unknown items case (_x in (GVAR(virtualItems) get IDX_VIRT_UNIQUE_UNKNOWN_ITEMS)): { - ["CfgWeapons", _x, true, true, true] call _fnc_fillRightContainer; + ["CfgWeapons", _x, GVAR(virtualItems) get IDX_VIRT_UNIQUE_UNKNOWN_ITEMS get _x, true] call _fnc_fillRightContainer; }; }; } forEach _items; @@ -365,7 +367,7 @@ GVAR(currentRightPanel) = _ctrlIDC; [QGVAR(rightPanelFilled), [_display, GVAR(currentLeftPanel), _ctrlIDC]] call CBA_fnc_localEvent; // Add current items, change progress bar of container load and get relevant container -if (GVAR(currentLeftPanel) in [IDC_buttonUniform, IDC_buttonVest, IDC_buttonBackpack]) then { +if (_isContainer) then { private _containerItems = []; private _container = switch (GVAR(currentLeftPanel)) do { // Uniform @@ -373,8 +375,8 @@ if (GVAR(currentLeftPanel) in [IDC_buttonUniform, IDC_buttonVest, IDC_buttonBack // Update load bar (_display displayCtrl IDC_loadIndicatorBar) progressSetPosition (loadUniform GVAR(center)); - // Get all items from container (excluding container itself) - _containerItems = [GVAR(center), 0, 3, 0, 0, false] call EFUNC(common,uniqueUnitItems); + // Get all items from container + _containerItems = uniformItems GVAR(center); uniformContainer GVAR(center) }; @@ -383,8 +385,8 @@ if (GVAR(currentLeftPanel) in [IDC_buttonUniform, IDC_buttonVest, IDC_buttonBack // Update load bar (_display displayCtrl IDC_loadIndicatorBar) progressSetPosition (loadVest GVAR(center)); - // Get all items from container (excluding container itself) - _containerItems = [GVAR(center), 0, 0, 3, 0, false] call EFUNC(common,uniqueUnitItems); + // Get all items from container + _containerItems = vestItems GVAR(center); vestContainer GVAR(center) }; @@ -393,8 +395,8 @@ if (GVAR(currentLeftPanel) in [IDC_buttonUniform, IDC_buttonVest, IDC_buttonBack // Update load bar (_display displayCtrl IDC_loadIndicatorBar) progressSetPosition (loadBackpack GVAR(center)); - // Get all items from container (excluding container itself) - _containerItems = [GVAR(center), 0, 0, 0, 3, false] call EFUNC(common,uniqueUnitItems); + // Get all items from container + _containerItems = backpackItems GVAR(center); backpackContainer GVAR(center) }; @@ -402,7 +404,8 @@ if (GVAR(currentLeftPanel) in [IDC_buttonUniform, IDC_buttonVest, IDC_buttonBack // Find out how many items of a type there are and update the number displayed for "_lbIndex" from 0 to (lnbSize _ctrlPanel select 0) - 1 do { - _ctrlPanel lnbSetText [[_lbIndex, 2], str (_containerItems getOrDefault [_ctrlPanel lnbData [_lbIndex, 0], 0])]; + private _xItem = _ctrlPanel lnbData [_lbIndex, 0]; + _ctrlPanel lnbSetText [[_lbIndex, 2], str ({_xItem == _x} count _containerItems)]; }; // Refresh availibility of items based on space remaining in container @@ -412,17 +415,34 @@ if (GVAR(currentLeftPanel) in [IDC_buttonUniform, IDC_buttonVest, IDC_buttonBack // Sorting [_display, _control, _display displayCtrl IDC_sortRightTab, _display displayCtrl IDC_sortRightTabDirection] call FUNC(fillSort); -// Try to select previously selected item again, otherwise select first item ("Empty") -if (_itemToCheck != "") then { - private _index = 0; +if (_selectedItem != "") then { + if (_isContainer) then { + // Try to select previously selected item again, otherwise select nothing + private _index = -1; - for "_lbIndex" from 0 to (lbSize _ctrlPanel) - 1 do { - if ((_ctrlPanel lbData _lbIndex) == _itemToCheck) exitWith { - _index = _lbIndex; + for "_lbIndex" from 0 to (lnbSize _ctrlPanel select 0) - 1 do { + if ((_ctrlPanel lnbData [_lbIndex, 0]) == _selectedItem) exitWith { + _index = _lbIndex; + }; }; - }; - _ctrlPanel lbSetCurSel _index; + _ctrlPanel lnbSetCurSelRow _index; + } else { + // Try to select previously selected item again, otherwise select first item ("Empty") + private _index = 0; + + for "_lbIndex" from 0 to (lbSize _ctrlPanel) - 1 do { + if ((_ctrlPanel lbData _lbIndex) == _selectedItem) exitWith { + _index = _lbIndex; + }; + }; + + _ctrlPanel lbSetCurSel _index; + }; } else { - _ctrlPanel lbSetCurSel 0; + if (_isContainer) then { + _ctrlPanel lnbSetCurSelRow -1; // select nothing + } else { + _ctrlPanel lbSetCurSel 0; // select "Empty" + }; }; diff --git a/addons/arsenal/functions/fnc_getVirtualItems.sqf b/addons/arsenal/functions/fnc_getVirtualItems.sqf new file mode 100644 index 0000000000..0666b34087 --- /dev/null +++ b/addons/arsenal/functions/fnc_getVirtualItems.sqf @@ -0,0 +1,39 @@ +#include "..\script_component.hpp" +#include "..\defines.hpp" +/* + * Author: johnb43, Grim + * Gets list of virtual items available to the object. + * + * Arguments: + * 0: Target + * + * Return Value: + * Virtual Items + * + * Example: + * cursorObject call ace_arsenal_fnc_getVirtualItems + * + * Public: Yes +*/ +params [["_object", objNull, [objNull]]]; + +private _virtualItems = _object getVariable QGVAR(virtualItems); +if (isNil "_virtualItems") exitWith {createHashMap}; + +private _virtualItemsFlat = +_virtualItems; +private _weapons = _virtualItemsFlat deleteAt IDX_VIRT_WEAPONS; +private _attachments = _virtualItemsFlat deleteAt IDX_VIRT_ATTACHMENTS; + +for "_index" from IDX_VIRT_ITEMS_ALL to IDX_VIRT_MISC_ITEMS do { + _virtualItemsFlat merge [_virtualItemsFlat deleteAt _index, true]; +}; + +for "_index" from IDX_VIRT_PRIMARY_WEAPONS to IDX_VIRT_HANDGUN_WEAPONS do { + _virtualItemsFlat merge [_weapons deleteAt _index, true]; +}; + +for "_index" from IDX_VIRT_OPTICS_ATTACHMENTS to IDX_VIRT_BIPOD_ATTACHMENTS do { + _virtualItemsFlat merge [_attachments deleteAt _index, true]; +}; + +_virtualItemsFlat // return diff --git a/addons/arsenal/functions/fnc_handleActions.sqf b/addons/arsenal/functions/fnc_handleActions.sqf index 833a615cb5..8dbffaedfe 100644 --- a/addons/arsenal/functions/fnc_handleActions.sqf +++ b/addons/arsenal/functions/fnc_handleActions.sqf @@ -118,12 +118,14 @@ _actionsCurrentPageCtrl ctrlCommit 0; _actionTextCtrl ctrlSetFade 0; _actionTextCtrl ctrlCommit 0; _actionButtonCtrl ctrlSetFade 1; + _actionButtonCtrl ctrlEnable false; _actionButtonCtrl ctrlCommit 0; }; default { _actionTextCtrl ctrlSetFade 1; _actionTextCtrl ctrlCommit 0; _actionButtonCtrl ctrlSetFade 1; + _actionButtonCtrl ctrlEnable false; _actionButtonCtrl ctrlCommit 0; }; }; diff --git a/addons/arsenal/functions/fnc_handleSearchInputChanged.sqf b/addons/arsenal/functions/fnc_handleSearchInputChanged.sqf new file mode 100644 index 0000000000..2c7364c6ef --- /dev/null +++ b/addons/arsenal/functions/fnc_handleSearchInputChanged.sqf @@ -0,0 +1,28 @@ +#include "..\script_component.hpp" +#include "..\defines.hpp" +/* + * Author: PabstMirror + * Handles user input in the search text boxes + * + * Arguments: + * 0: Search text input (left or right) + * 1: Text + * + * Return Value: + * None + * + * Public: No +*/ + +params ["_ctrl", "_newText"]; + +if (!GVAR(liveUpdateSearch)) exitWith {}; + +private _display = ctrlParent _ctrl; + +if (GVAR(leftSearchbarFocus)) then { + [_display, _display displayCtrl IDC_leftSearchbar, false] call FUNC(handleSearchBar); +}; +if (GVAR(rightSearchbarFocus)) then { + [_display, _display displayCtrl IDC_rightSearchbar, false] call FUNC(handleSearchBar); +}; diff --git a/addons/arsenal/functions/fnc_handleSearchModeToggle.sqf b/addons/arsenal/functions/fnc_handleSearchModeToggle.sqf new file mode 100644 index 0000000000..b5c35b59a5 --- /dev/null +++ b/addons/arsenal/functions/fnc_handleSearchModeToggle.sqf @@ -0,0 +1,30 @@ +#include "..\script_component.hpp" +#include "..\defines.hpp" +/* + * Author: PabstMirror + * Handles mouse clicks on search button to toggle live results + * + * Arguments: + * 0: Search button (left or right) + * 1: Mouse Button + * 2: Not used + * 3: Not used + * 4: Not used + * 5: Ctrl Button + * + * Return Value: + * None + * + * Public: No +*/ + +params ["_ctrl", "_mouseButton", "", "", "", "_keyCtrl"]; + +if ((!_keyCtrl)) exitWith {}; // Ignore if not CTRL + Click + +GVAR(liveUpdateSearch) = !GVAR(liveUpdateSearch); + +private _display = ctrlParent _ctrl; +private _color = if (GVAR(liveUpdateSearch)) then { [0,1,0,0.5] } else { [0,0,0,0.5] }; +(_display displayCtrl IDC_leftSearchbarButton) ctrlSetBackgroundColor _color; +(_display displayCtrl IDC_rightSearchbarButton) ctrlSetBackgroundColor _color; diff --git a/addons/arsenal/functions/fnc_handleSearchbar.sqf b/addons/arsenal/functions/fnc_handleSearchbar.sqf index 3bf7c6329c..d5ff2dc69a 100644 --- a/addons/arsenal/functions/fnc_handleSearchbar.sqf +++ b/addons/arsenal/functions/fnc_handleSearchbar.sqf @@ -7,6 +7,7 @@ * Arguments: * 0: Arsenal display * 1: Searchbar control + * 2: Animate panel refresh (default: true) * * Return Value: * None @@ -14,25 +15,28 @@ * Public: No */ -params ["_display", "_control"]; +params ["_display", "_control", ["_animate", true]]; + +forceUnicode 0; // handle non-ANSI characters private _searchString = ctrlText _control; +private _searchPattern = ""; if (_searchString != "") then { - _searchString = _searchString call EFUNC(common,escapeRegex); - _searchString = ".*?" + (_searchString splitString " " joinString ".*?") + ".*?/io"; + _searchPattern = _searchString call EFUNC(common,escapeRegex); + _searchPattern = ".*?" + (_searchPattern splitString " " joinString ".*?") + ".*?/io"; }; // Right panel search bar if ((ctrlIDC _control) == IDC_rightSearchbar) then { // Don't refill if there is no need - if (GVAR(lastSearchTextRight) != "" && {GVAR(lastSearchTextRight) isNotEqualTo _searchString}) then { - [_display, _display displayCtrl GVAR(currentRightPanel)] call FUNC(fillRightPanel); + if (GVAR(lastSearchTextRight) != "" && {(_searchString find GVAR(lastSearchTextRight)) != 0}) then { + [_display, _display displayCtrl GVAR(currentRightPanel), _animate] call FUNC(fillRightPanel); }; GVAR(lastSearchTextRight) = _searchString; // If nothing searched, quit here - if (_searchString == "") exitWith {}; + if (_searchPattern == "") exitWith {}; private _rightPanelState = GVAR(currentLeftPanel) in [IDC_buttonPrimaryWeapon, IDC_buttonHandgun, IDC_buttonSecondaryWeapon, IDC_buttonBinoculars]; private _rightPanelCtrl = [_display displayCtrl IDC_rightTabContentListnBox, _display displayCtrl IDC_rightTabContent] select _rightPanelState; @@ -45,7 +49,7 @@ if ((ctrlIDC _control) == IDC_rightSearchbar) then { // If something is selected, save it if (_selectedItemIndex != -1) then { - _selectedItem = _rightPanelCtrl lbText _selectedItemIndex; + _selectedItem = _rightPanelCtrl lbData _selectedItemIndex; }; private _currentDisplayName = ""; @@ -57,7 +61,7 @@ if ((ctrlIDC _control) == IDC_rightSearchbar) then { _currentClassname = _rightPanelCtrl lbData _lbIndex; // Remove item in panel if it doesn't match search, skip otherwise - if ((_currentDisplayName == "") || {!(_currentDisplayName regexMatch _searchString) && {!(_currentClassname regexMatch _searchString)}}) then { + if ((_currentDisplayName == "") || {!(_currentDisplayName regexMatch _searchPattern) && {!(_currentClassname regexMatch _searchPattern)}}) then { _rightPanelCtrl lbDelete _lbIndex; }; }; @@ -68,7 +72,7 @@ if ((ctrlIDC _control) == IDC_rightSearchbar) then { // Try to find previously selected item in panel for "_lbIndex" from 0 to (lbSize _rightPanelCtrl) - 1 do { - if ((_rightPanelCtrl lbText _lbIndex) == _selectedItem) exitWith { + if ((_rightPanelCtrl lbData _lbIndex) == _selectedItem) exitWith { _index = _lbIndex; }; }; @@ -85,7 +89,7 @@ if ((ctrlIDC _control) == IDC_rightSearchbar) then { // If something is selected, save it if (_selectedItemIndex != -1) then { - _selectedItem = _rightPanelCtrl lnbText [_selectedItemIndex, 1]; + _selectedItem = _rightPanelCtrl lnbData [_selectedItemIndex, 0]; }; private _currentDisplayName = ""; @@ -97,7 +101,7 @@ if ((ctrlIDC _control) == IDC_rightSearchbar) then { _currentClassname = _rightPanelCtrl lnbData [_lbIndex, 0]; // Remove item in panel if it doesn't match search, skip otherwise - if ((_currentDisplayName == "") || {!(_currentDisplayName regexMatch _searchString) && {!(_currentClassname regexMatch _searchString)}}) then { + if ((_currentDisplayName == "") || {!(_currentDisplayName regexMatch _searchPattern) && {!(_currentClassname regexMatch _searchPattern)}}) then { _rightPanelCtrl lnbDeleteRow _lbIndex; }; }; @@ -108,7 +112,7 @@ if ((ctrlIDC _control) == IDC_rightSearchbar) then { // Try to find previously selected item in panel for "_lbIndex" from 0 to (lnbSize _rightPanelCtrl select 0) - 1 do { - if ((_rightPanelCtrl lnbText [_lbIndex, 1]) == _selectedItem) exitWith { + if ((_rightPanelCtrl lnbData [_lbIndex, 0]) == _selectedItem) exitWith { _index = _lbIndex; }; }; @@ -124,14 +128,14 @@ if ((ctrlIDC _control) == IDC_rightSearchbar) then { } else { // Left panel search bar // Don't refill if there is no need - if (GVAR(lastSearchTextLeft) != "" && {GVAR(lastSearchTextLeft) isNotEqualTo _searchString}) then { - [_display, _display displayCtrl GVAR(currentLeftPanel)] call FUNC(fillLeftPanel); + if (GVAR(lastSearchTextLeft) != "" && {(_searchString find GVAR(lastSearchTextLeft)) != 0}) then { + [_display, _display displayCtrl GVAR(currentLeftPanel), _animate] call FUNC(fillLeftPanel); }; GVAR(lastSearchTextLeft) = _searchString; // If nothing searched, quit here - if (_searchString == "") exitWith {}; + if (_searchPattern == "") exitWith {}; private _leftPanelCtrl = _display displayCtrl IDC_leftTabContent; @@ -141,7 +145,7 @@ if ((ctrlIDC _control) == IDC_rightSearchbar) then { // If something is selected, save it if (_selectedItemIndex != -1) then { - _selectedItem = _leftPanelCtrl lbText _selectedItemIndex; + _selectedItem = _leftPanelCtrl lbData _selectedItemIndex; }; private _currentDisplayName = ""; @@ -153,7 +157,7 @@ if ((ctrlIDC _control) == IDC_rightSearchbar) then { _currentClassname = _leftPanelCtrl lbData _lbIndex; // Remove item in panel if it doesn't match search, skip otherwise - if ((_currentDisplayName == "") || {!(_currentDisplayName regexMatch _searchString) && {!(_currentClassname regexMatch _searchString)}}) then { + if ((_currentDisplayName == "") || {!(_currentDisplayName regexMatch _searchPattern) && {!(_currentClassname regexMatch _searchPattern)}}) then { _leftPanelCtrl lbDelete _lbIndex; }; }; @@ -163,7 +167,7 @@ if ((ctrlIDC _control) == IDC_rightSearchbar) then { private _index = -1; for "_lbIndex" from 0 to (lbSize _leftPanelCtrl) - 1 do { - if ((_leftPanelCtrl lbText _lbIndex) == _selectedItem) exitWith { + if ((_leftPanelCtrl lbData _lbIndex) == _selectedItem) exitWith { _index = _lbIndex; }; }; @@ -175,3 +179,6 @@ if ((ctrlIDC _control) == IDC_rightSearchbar) then { [_display, nil, nil, configNull] call FUNC(itemInfo); }; + +// Reset unicode flag +forceUnicode -1; diff --git a/addons/arsenal/functions/fnc_initBox.sqf b/addons/arsenal/functions/fnc_initBox.sqf index 446438d2b5..8651d25db8 100644 --- a/addons/arsenal/functions/fnc_initBox.sqf +++ b/addons/arsenal/functions/fnc_initBox.sqf @@ -51,7 +51,10 @@ if (_global && {isMultiplayer} && {isNil {_object getVariable QGVAR(initBoxJIP)} ] call EFUNC(interact_menu,createAction); [_object, 0, ["ACE_MainActions"], _action] call EFUNC(interact_menu,addActionToObject); - [_object, _items, false] call FUNC(addVirtualItems); + // If items were set globally, do not add items locally + if (isNil {_object getVariable QGVAR(virtualItems)}) then { + [_object, _items, false] call FUNC(addVirtualItems); + }; [QGVAR(boxInitialized), [_object, _items]] call CBA_fnc_localEvent; }; diff --git a/addons/arsenal/functions/fnc_loadoutsChangeTab.sqf b/addons/arsenal/functions/fnc_loadoutsChangeTab.sqf index a0203ff5b9..a8938e8c48 100644 --- a/addons/arsenal/functions/fnc_loadoutsChangeTab.sqf +++ b/addons/arsenal/functions/fnc_loadoutsChangeTab.sqf @@ -63,6 +63,7 @@ switch (ctrlIDC _control) do { _saveButtonCtrl ctrlSetTooltip LLSTRING(buttonSaveTooltip); }; + _renameButtonCtrl ctrlEnable is3DEN; // no renaming mid-mission _saveButtonCtrl ctrlEnable call FUNC(canEditDefaultLoadout); _saveButtonCtrl ctrlCommit 0; }; diff --git a/addons/arsenal/functions/fnc_onArsenalClose.sqf b/addons/arsenal/functions/fnc_onArsenalClose.sqf index 4eb8126e68..bc862f2de0 100644 --- a/addons/arsenal/functions/fnc_onArsenalClose.sqf +++ b/addons/arsenal/functions/fnc_onArsenalClose.sqf @@ -51,13 +51,6 @@ if (is3DEN) then { ["ShowInterface", true] call BIS_fnc_3DENInterface; GVAR(visionMode) call BIS_fnc_3DENVisionMode; } else { - // Select correct weapon - switch (GVAR(selectedWeaponType)) do { - case 0: {GVAR(center) selectWeapon (primaryWeapon GVAR(center))}; - case 1: {GVAR(center) selectWeapon (secondaryWeapon GVAR(center))}; - case 2: {GVAR(center) selectWeapon (handgunWeapon GVAR(center))}; - }; - if (!isNull curatorCamera && {ACE_player == player}) then { curatorCamera cameraEffect ["Internal", "BACK"]; } else { @@ -104,11 +97,13 @@ GVAR(currentLeftPanel) = nil; GVAR(currentRightPanel) = nil; GVAR(leftSearchbarFocus) = nil; GVAR(rightSearchbarFocus) = nil; +GVAR(liveUpdateSearch) = nil; GVAR(shiftState) = nil; GVAR(leftTabFocus) = nil; GVAR(rightTabFocus) = nil; GVAR(rightTabLnBFocus) = nil; GVAR(ignoreFirstSortPanelCall) = nil; +GVAR(refreshing) = nil; GVAR(selectedWeaponType) = nil; GVAR(virtualItems) = nil; @@ -134,4 +129,6 @@ GVAR(favorites) = nil; GVAR(center) = nil; GVAR(centerNotPlayer) = nil; +GVAR(ignoredVirtualItems) = nil; + [QUOTE(ADDON), []] call EFUNC(common,showHud); diff --git a/addons/arsenal/functions/fnc_onArsenalOpen.sqf b/addons/arsenal/functions/fnc_onArsenalOpen.sqf index 74ef584cc9..bcc91c133a 100644 --- a/addons/arsenal/functions/fnc_onArsenalOpen.sqf +++ b/addons/arsenal/functions/fnc_onArsenalOpen.sqf @@ -42,6 +42,10 @@ if (isNil QGVAR(defaultLoadoutsList)) then { }; }; +if (isNil {profileNamespace getVariable QGVAR(saved_loadouts)}) then { + profileNamespace setVariable [QGVAR(saved_loadouts), []]; +}; + if (isNil QGVAR(virtualItems)) then { private _virtualItems = [ [IDX_VIRT_WEAPONS, createHashMapFromArray [[IDX_VIRT_PRIMARY_WEAPONS, createHashMap], [IDX_VIRT_SECONDARY_WEAPONS, createHashMap], [IDX_VIRT_HANDGUN_WEAPONS, createHashMap]]], @@ -57,25 +61,10 @@ if (isNil QGVAR(virtualItems)) then { GVAR(virtualItems) = _virtualItems; // Flatten out hashmaps for easy checking later - private _virtualItemsFlat = +_virtualItems; - private _weapons = _virtualItemsFlat deleteAt IDX_VIRT_WEAPONS; - private _attachments = _virtualItemsFlat deleteAt IDX_VIRT_ATTACHMENTS; - - for "_index" from IDX_VIRT_ITEMS_ALL to IDX_VIRT_MISC_ITEMS do { - _virtualItemsFlat merge [_virtualItemsFlat deleteAt _index, true]; - }; - - for "_index" from IDX_VIRT_PRIMARY_WEAPONS to IDX_VIRT_HANDGUN_WEAPONS do { - _virtualItemsFlat merge [_weapons deleteAt _index, true]; - }; - - for "_index" from IDX_VIRT_OPTICS_ATTACHMENTS to IDX_VIRT_BIPOD_ATTACHMENTS do { - _virtualItemsFlat merge [_attachments deleteAt _index, true]; - }; - - GVAR(virtualItemsFlat) = _virtualItemsFlat; + call FUNC(updateVirtualItemsFlat); }; +// Includes items not in the arsenal but equipped on player GVAR(virtualItemsFlatAll) = +GVAR(virtualItemsFlat); GVAR(currentFace) = face GVAR(center); @@ -241,10 +230,12 @@ GVAR(currentLeftPanel) = nil; GVAR(currentRightPanel) = nil; GVAR(leftSearchbarFocus) = false; GVAR(rightSearchbarFocus) = false; +GVAR(liveUpdateSearch) = false; GVAR(leftTabFocus) = false; GVAR(rightTabFocus) = false; GVAR(rightTabLnBFocus) = false; GVAR(ignoreFirstSortPanelCall) = false; +GVAR(refreshing) = false; { private _panel = _display displayCtrl _x; @@ -252,7 +243,15 @@ GVAR(ignoreFirstSortPanelCall) = false; _panel ctrlCommit 0; } forEach [IDC_leftTabContent, IDC_rightTabContent, IDC_rightTabContentListnBox]; -[_display, _display displayCtrl IDC_buttonPrimaryWeapon] call FUNC(fillLeftPanel); +// Open left panel for current weapon, do some math +GVAR(selectedWeaponType) = [primaryWeapon GVAR(center), secondaryWeapon GVAR(center), handgunWeapon GVAR(center), binocular GVAR(center)] find (currentWeapon GVAR(center)); +if (GVAR(selectedWeaponType) == -1) then { + GVAR(selectedWeaponType) = 0; // default to primary +}; + +private _leftPanelIDC = [IDC_buttonPrimaryWeapon, IDC_buttonSecondaryWeapon, IDC_buttonHandgun, IDC_buttonBinoculars] select GVAR(selectedWeaponType); + +[_display, _display displayCtrl _leftPanelIDC] call FUNC(fillLeftPanel); //--------------- Init camera if (isNil QGVAR(cameraPosition)) then { diff --git a/addons/arsenal/functions/fnc_onSelChangedLeft.sqf b/addons/arsenal/functions/fnc_onSelChangedLeft.sqf index be934286e0..3d356fc207 100644 --- a/addons/arsenal/functions/fnc_onSelChangedLeft.sqf +++ b/addons/arsenal/functions/fnc_onSelChangedLeft.sqf @@ -23,8 +23,9 @@ private _display = ctrlParent _control; private _item = [_control lbData _curSel, _control lnbData [_curSel, 0]] select (ctrlType _control == CT_LISTNBOX); // When having chosen a new category, see if the current right panel can be kept open, otherwise take default -private _selectCorrectPanelWeapon = [_display displayCtrl IDC_buttonOptic, _display displayCtrl GVAR(currentRightPanel)] select (!isNil QGVAR(currentRightPanel) && {GVAR(currentRightPanel) in [RIGHT_PANEL_ACC_IDCS, IDC_buttonCurrentMag, IDC_buttonCurrentMag2]}); -private _selectCorrectPanelContainer = [_display displayCtrl IDC_buttonMisc, _display displayCtrl GVAR(currentRightPanel)] select (!isNil QGVAR(currentRightPanel) && {GVAR(currentRightPanel) in [RIGHT_PANEL_ITEMS_IDCS]}); +private _currentRightPanel = _display displayCtrl GVAR(currentRightPanel); +private _selectCorrectPanelWeapon = [_display displayCtrl IDC_buttonOptic, _currentRightPanel] select (!isNil QGVAR(currentRightPanel) && {GVAR(currentRightPanel) in [RIGHT_PANEL_ACC_IDCS, IDC_buttonCurrentMag, IDC_buttonCurrentMag2]}); +private _selectCorrectPanelContainer = [_display displayCtrl IDC_buttonMisc, _currentRightPanel] select (!isNil QGVAR(currentRightPanel) && {GVAR(currentRightPanel) in [RIGHT_PANEL_ITEMS_IDCS]}); // Remove all magazines from the current weapon that aren't compatible with the new weapon private _fnc_clearCurrentWeaponMags = { @@ -115,7 +116,7 @@ switch (GVAR(currentLeftPanel)) do { TOGGLE_RIGHT_PANEL_WEAPON - [_display, _selectCorrectPanelWeapon] call FUNC(fillRightPanel); + [_display, _selectCorrectPanelWeapon, !GVAR(refreshing) && {_currentRightPanel isNotEqualTo _selectCorrectPanelWeapon}] call FUNC(fillRightPanel); }; // Make unit switch to new item @@ -191,7 +192,7 @@ switch (GVAR(currentLeftPanel)) do { TOGGLE_RIGHT_PANEL_WEAPON - [_display, _selectCorrectPanelWeapon] call FUNC(fillRightPanel); + [_display, _selectCorrectPanelWeapon, !GVAR(refreshing) && {_currentRightPanel isNotEqualTo _selectCorrectPanelWeapon}] call FUNC(fillRightPanel); }; // Make unit switch to new item @@ -273,7 +274,7 @@ switch (GVAR(currentLeftPanel)) do { _this call FUNC(fillRightPanel); }, [_display, _selectCorrectPanelWeapon]] call CBA_fnc_execNextFrame; } else { - [_display, _selectCorrectPanelWeapon] call FUNC(fillRightPanel); + [_display, _selectCorrectPanelWeapon, !GVAR(refreshing) && {_currentRightPanel isNotEqualTo _selectCorrectPanelWeapon}] call FUNC(fillRightPanel); }; }; @@ -347,7 +348,7 @@ switch (GVAR(currentLeftPanel)) do { TOGGLE_RIGHT_PANEL_CONTAINER - [_display, _selectCorrectPanelContainer] call FUNC(fillRightPanel); + [_display, _selectCorrectPanelContainer, !GVAR(refreshing) && {_currentRightPanel isNotEqualTo _selectCorrectPanelContainer}] call FUNC(fillRightPanel); }; // Make unit switch to new item @@ -385,7 +386,7 @@ switch (GVAR(currentLeftPanel)) do { TOGGLE_RIGHT_PANEL_CONTAINER - [_display, _selectCorrectPanelContainer] call FUNC(fillRightPanel); + [_display, _selectCorrectPanelContainer, !GVAR(refreshing) && {_currentRightPanel isNotEqualTo _selectCorrectPanelContainer}] call FUNC(fillRightPanel); }; // Make unit switch to new item @@ -423,7 +424,7 @@ switch (GVAR(currentLeftPanel)) do { TOGGLE_RIGHT_PANEL_CONTAINER - [_display, _selectCorrectPanelContainer] call FUNC(fillRightPanel); + [_display, _selectCorrectPanelContainer, !GVAR(refreshing) && {_currentRightPanel isNotEqualTo _selectCorrectPanelContainer}] call FUNC(fillRightPanel); }; // Make unit switch to new item @@ -538,7 +539,7 @@ switch (GVAR(currentLeftPanel)) do { TOGGLE_RIGHT_PANEL_WEAPON - [_display, _selectCorrectPanelWeapon] call FUNC(fillRightPanel); + [_display, _selectCorrectPanelWeapon, !GVAR(refreshing) && {_currentRightPanel isNotEqualTo _selectCorrectPanelWeapon}] call FUNC(fillRightPanel); }; // Make unit switch to new item diff --git a/addons/arsenal/functions/fnc_openBox.sqf b/addons/arsenal/functions/fnc_openBox.sqf index 941562a5b4..dd983776d1 100644 --- a/addons/arsenal/functions/fnc_openBox.sqf +++ b/addons/arsenal/functions/fnc_openBox.sqf @@ -28,13 +28,15 @@ if ( ) exitWith {}; // If object has no arsenal and chosen option is to not ignore virtual items of object, exit -if (isNil {_object getVariable QGVAR(virtualItems)} && {!_mode}) exitWith { +private _virtualItems = _object getVariable QGVAR(virtualItems); + +if (isNil "_virtualItems" && {!_mode}) exitWith { [LLSTRING(noVirtualItems), false, 5, 1] call EFUNC(common,displayText); }; // Don't execute in scheduled environment if (canSuspend) exitWith { - [{_this call FUNC(openBox)}, _this] call CBA_fnc_directCall; + [FUNC(openBox), _this] call CBA_fnc_directCall; }; private _displayToUse = findDisplay IDD_RSCDISPLAYCURATOR; @@ -46,53 +48,23 @@ if (isNull _displayToUse || {!isNil QGVAR(camera)}) exitWith { [LLSTRING(CantOpenDisplay), false, 5, 1] call EFUNC(common,displayText); }; +GVAR(center) = _center; GVAR(currentBox) = _object; if (_mode) then { // Add all the items from the game that the arsenal has detected GVAR(virtualItems) = +(uiNamespace getVariable QGVAR(configItems)); GVAR(virtualItemsFlat) = +(uiNamespace getVariable QGVAR(configItemsFlat)); + + GVAR(ignoredVirtualItems) = true; } else { // Add only specified items to the arsenal - private _virtualItems = _object getVariable QGVAR(virtualItems); - - GVAR(virtualItems) = if (isNil "_virtualItems") then { - _virtualItems = [ - [IDX_VIRT_WEAPONS, createHashMapFromArray [[IDX_VIRT_PRIMARY_WEAPONS, createHashMap], [IDX_VIRT_SECONDARY_WEAPONS, createHashMap], [IDX_VIRT_HANDGUN_WEAPONS, createHashMap]]], - [IDX_VIRT_ATTACHMENTS, createHashMapFromArray [[IDX_VIRT_OPTICS_ATTACHMENTS, createHashMap], [IDX_VIRT_FLASHLIGHT_ATTACHMENTS, createHashMap], [IDX_VIRT_MUZZLE_ATTACHMENTS, createHashMap], [IDX_VIRT_BIPOD_ATTACHMENTS, createHashMap]]] - ]; - - _virtualItems = createHashMapFromArray _virtualItems; - - for "_index" from IDX_VIRT_ITEMS_ALL to IDX_VIRT_MISC_ITEMS do { - _virtualItems set [_index, createHashMap]; - }; - } else { - +_virtualItems - }; + GVAR(virtualItems) = +_virtualItems; // Flatten out hashmaps for easy checking later - private _virtualItemsFlat = +_virtualItems; - private _weapons = _virtualItemsFlat deleteAt IDX_VIRT_WEAPONS; - private _attachments = _virtualItemsFlat deleteAt IDX_VIRT_ATTACHMENTS; - - for "_index" from IDX_VIRT_ITEMS_ALL to IDX_VIRT_MISC_ITEMS do { - _virtualItemsFlat merge [_virtualItemsFlat deleteAt _index, true]; - }; - - for "_index" from IDX_VIRT_PRIMARY_WEAPONS to IDX_VIRT_HANDGUN_WEAPONS do { - _virtualItemsFlat merge [_weapons deleteAt _index, true]; - }; - - for "_index" from IDX_VIRT_OPTICS_ATTACHMENTS to IDX_VIRT_BIPOD_ATTACHMENTS do { - _virtualItemsFlat merge [_attachments deleteAt _index, true]; - }; - - GVAR(virtualItemsFlat) = _virtualItemsFlat; + call FUNC(updateVirtualItemsFlat); }; -GVAR(center) = _center; - if (is3DEN) then { _displayToUse createDisplay QGVAR(display); } else { diff --git a/addons/arsenal/functions/fnc_refresh.sqf b/addons/arsenal/functions/fnc_refresh.sqf index 6539b52151..d40d59c0ff 100644 --- a/addons/arsenal/functions/fnc_refresh.sqf +++ b/addons/arsenal/functions/fnc_refresh.sqf @@ -6,6 +6,8 @@ * * Arguments: * 0: Update current and unique items lists (default: true) + * 1: Update virtual items list (default: false) + * 2: Use panel refresh animation (default: false) * * Return Value: * None @@ -15,19 +17,54 @@ * * Public: Yes */ -params [["_updateItems", true, [true]]]; +params [["_updateItems", true, [true]], ["_updateVirtualItems", false, [false]], ["_animate", false, [false]]]; +TRACE_2("",_updateItems,_updateVirtualItems); + +// Don't execute in scheduled environment +if (canSuspend) exitWith { + [{_this call FUNC(refresh)}, _this] call CBA_fnc_directCall; +}; if (_updateItems) then { // Update current item list call FUNC(updateCurrentItemsList); // This takes care of unique inventory items (arsenal doesn't have it whitelisted) + if (!_updateVirtualItems) then { + call FUNC(updateUniqueItemsList); + }; +}; + +private _virtualItems = GVAR(currentBox) getVariable QGVAR(virtualItems); + +if (is3DEN) then { + _virtualItems = uiNamespace getVariable QGVAR(configItems); // GVAR(currentBox) is nil in 3DEN + _animate = true; // CBA frame functions are disabled during preInit +}; + +// Do not close an arsenal if it was opened with ignoring the existing content (see FUNC(openBox)) +if (isNil "_virtualItems" && {isNil QGVAR(ignoredVirtualItems)}) exitWith { + [LLSTRING(noVirtualItems), false, 5, 1] call EFUNC(common,displayText); + // Delay a frame in case this is running on display open + [{(findDisplay IDD_ace_arsenal) closeDisplay 0}] call CBA_fnc_execNextFrame; +}; + +if (_updateVirtualItems) then { + GVAR(virtualItems) = +_virtualItems; + call FUNC(updateVirtualItemsFlat); + + // Gotta update this regardless of condition to prevent desync call FUNC(updateUniqueItemsList); }; // Don't refresh left panel if in loadout tab if (!isNull findDisplay IDD_loadouts_display) exitWith {}; +if (!_animate) then { + GVAR(refreshing) = true; + [{GVAR(refreshing) = false}, nil, 3] call CBA_fnc_execAfterNFrames; +}; + private _display = findDisplay IDD_ace_arsenal; -[_display, _display displayCtrl GVAR(currentLeftPanel)] call FUNC(fillLeftPanel); +[_display, _display displayCtrl GVAR(currentLeftPanel), _animate] call FUNC(fillLeftPanel); diff --git a/addons/arsenal/functions/fnc_removeBox.sqf b/addons/arsenal/functions/fnc_removeBox.sqf index 1764fe2630..984db8d099 100644 --- a/addons/arsenal/functions/fnc_removeBox.sqf +++ b/addons/arsenal/functions/fnc_removeBox.sqf @@ -1,4 +1,5 @@ #include "..\script_component.hpp" +#include "..\defines.hpp" /* * Author: Alganthe, johnb43 * Remove arsenal from target. @@ -24,7 +25,7 @@ private _id = _object getVariable QGVAR(initBoxJIP); if (_global && {isMultiplayer} && {!isNil "_id"}) then { // Remove event from JIP queue - [_id] call CBA_fnc_removeGlobalEventJIP; + _id call CBA_fnc_removeGlobalEventJIP; // Reset JIP ID _object setVariable [QGVAR(initBoxJIP), nil, true]; @@ -39,3 +40,10 @@ if (_global && {isMultiplayer} && {!isNil "_id"}) then { [_object, 0, ["ACE_MainActions", QGVAR(interaction)]] call EFUNC(interact_menu,removeActionFromObject); [QGVAR(boxRemoved), _object] call CBA_fnc_localEvent; }; + +// If the arsenal is already open and not ignoring content (see FUNC(openBox)), close arsenal display +if (!isNil QGVAR(currentBox) && {GVAR(currentBox) isEqualTo _object} && {isNil QGVAR(ignoredVirtualItems)}) then { + [LLSTRING(noVirtualItems), false, 5, 1] call EFUNC(common,displayText); + // Delay a frame in case this is running on display open + [{(findDisplay IDD_ace_arsenal) closeDisplay 0}] call CBA_fnc_execNextFrame; +}; diff --git a/addons/arsenal/functions/fnc_removeDefaultLoadout.sqf b/addons/arsenal/functions/fnc_removeDefaultLoadout.sqf index e84aad5c04..3ca877f7fd 100644 --- a/addons/arsenal/functions/fnc_removeDefaultLoadout.sqf +++ b/addons/arsenal/functions/fnc_removeDefaultLoadout.sqf @@ -17,8 +17,10 @@ */ params [["_name", "", [""]], ["_global", false, [false]]]; -if (_global) then { - [QGVAR(removeDefaultLoadout), [_name]] call CBA_fnc_remoteEvent; +if (_global) exitWith { + private _eventID = format [QGVAR(loadouts_%1), _name]; + [_eventID] call CBA_fnc_removeGlobalEventJIP; + [QGVAR(removeDefaultLoadout), [_name]] call CBA_fnc_globalEvent; }; GVAR(defaultLoadoutsList) deleteAt (GVAR(defaultLoadoutsList) findIf {(_x select 0) == _name}); diff --git a/addons/arsenal/functions/fnc_removeVirtualItems.sqf b/addons/arsenal/functions/fnc_removeVirtualItems.sqf index f9cdc76c50..71db2b15a1 100644 --- a/addons/arsenal/functions/fnc_removeVirtualItems.sqf +++ b/addons/arsenal/functions/fnc_removeVirtualItems.sqf @@ -100,5 +100,12 @@ if (_items isEqualType true) then { [_object, _global] call FUNC(removeBox); } else { _object setVariable [QGVAR(virtualItems), _cargo, _global]; + + // If the arsenal is already open, refresh arsenal display + if (_global) then { + [QGVAR(refresh), _object] call CBA_fnc_globalEvent; + } else { + [QGVAR(refresh), _object] call CBA_fnc_localEvent; + }; }; }; diff --git a/addons/arsenal/functions/fnc_showItem.sqf b/addons/arsenal/functions/fnc_showItem.sqf index 76a95e6981..7ceda5f0d5 100644 --- a/addons/arsenal/functions/fnc_showItem.sqf +++ b/addons/arsenal/functions/fnc_showItem.sqf @@ -15,6 +15,10 @@ if (GVAR(centerNotPlayer)) exitWith {}; +if (EGVAR(common,isReloading)) exitWith { // if player is reloading then wait until it's done so we don't send magazines to the shadow realm + [{!EGVAR(common,isReloading)}, FUNC(showItem)] call CBA_fnc_waitUntilAndExecute; +}; + // Determine action to play based on current category selection private _nextAction = switch (GVAR(currentLeftPanel)) do { // Primary weapon @@ -54,10 +58,12 @@ if (_nextAction != GVAR(currentAction)) then { case "PrimaryWeapon": {0}; case "SecondaryWeapon": {1}; case "HandGunOn": {2}; + case "Binoculars": {3}; default {GVAR(selectedWeaponType)}; }; if (simulationEnabled GVAR(center)) then { + GVAR(center) call EFUNC(common,stopGesture); // reset gesture state (if arsenal is opened on animation transition, animations played whilst in the arsenal break) GVAR(center) playActionNow _nextAction; } else { GVAR(center) switchAction _nextAction; @@ -65,3 +71,7 @@ if (_nextAction != GVAR(currentAction)) then { GVAR(currentAction) = _nextAction; }; + +if (!(GVAR(currentAction) in ["Civil", "Salute"])) then { + GVAR(center) selectWeapon ([primaryWeapon GVAR(center), secondaryWeapon GVAR(center), handgunWeapon GVAR(center), binocular GVAR(center)] select GVAR(selectedWeaponType)); // select correct weapon, prevents floating weapons +}; diff --git a/addons/arsenal/functions/fnc_statTextStatement_illuminators.sqf b/addons/arsenal/functions/fnc_statTextStatement_illuminators.sqf new file mode 100644 index 0000000000..b677ec8210 --- /dev/null +++ b/addons/arsenal/functions/fnc_statTextStatement_illuminators.sqf @@ -0,0 +1,42 @@ +#include "..\script_component.hpp" +/* + * Author: PabstMirror + * Text statement for the pointer slot capabilites. + * + * Arguments: + * 0: Not used + * 1: Item config path + * + * Return Value: + * Stat Text + * + * Example: + * [[], configFile >> "CfgWeapons" >> "acc_pointer_IR"] call ace_arsenal_fnc_statTextStatement_illuminators + * + * Public: No + */ + +params ["", "_config"]; +TRACE_1("statTextStatement_illuminators",_config); + +private _allModes = []; +private _allItems = [configName _config] call CBA_fnc_switchableAttachments; +if (_allItems isEqualTo []) then { _allItems = [configName _config] }; + +{ + private _xCfg = configFile >> "CfgWeapons" >> _x >> "ItemInfo"; + private _laser = (getText (_xCfg >> "Pointer" >> "irLaserPos")) != ""; + private _illum = (getNumber (_xCfg >> "Flashlight" >> "intensity")) > 0; + private _isIR = (_laser && {([_xCfg >> "Pointer" >> "isIR", "NUMBER", 1] call CBA_fnc_getConfigEntry) == 1}) + || {_illum && {([_xCfg >> "Flashlight" >> "irLight", "NUMBER", 0] call CBA_fnc_getConfigEntry) == 1}}; + + private _text = switch (true) do { // shorthand roughly based on PEQ-15 + case (_laser && _illum): { if (_isIR) then { "IR-DUAL" } else { "VIS-DUAL" } }; + case (_laser): { if (_isIR) then { "IR-AIM" } else { "VIS-AIM" } }; // AIM + case (_illum): { if (_isIR) then { "IR-ILM" } else { "VIS-ILM" } }; // ILLUMIATION + default { "_" }; // there are some purely cosmetic attachements + }; + _allModes pushBackUnique _text; +} forEach _allItems; + +_allModes joinString ", " diff --git a/addons/arsenal/functions/fnc_statTextStatement_magCount.sqf b/addons/arsenal/functions/fnc_statTextStatement_magCount.sqf index b2b46307fc..82d68d4848 100644 --- a/addons/arsenal/functions/fnc_statTextStatement_magCount.sqf +++ b/addons/arsenal/functions/fnc_statTextStatement_magCount.sqf @@ -14,6 +14,6 @@ */ params ["", "_config"]; -TRACE_1("statTextStatement_magCount",_config) +TRACE_1("statTextStatement_magCount",_config); getNumber (_config >> "count"); diff --git a/addons/arsenal/functions/fnc_updateRightPanel.sqf b/addons/arsenal/functions/fnc_updateRightPanel.sqf index e51f923655..e43f06c74f 100644 --- a/addons/arsenal/functions/fnc_updateRightPanel.sqf +++ b/addons/arsenal/functions/fnc_updateRightPanel.sqf @@ -18,19 +18,18 @@ params ["_control", "_container", "_hasItems"]; private _loadRemaining = maxLoad _container - loadAbs _container; -private _rightPanelCache = uiNamespace getVariable [QGVAR(rightPanelCache), createHashMap]; -private _mass = -1; +private _item = ""; private _color = []; private _alpha = 1; // Grey out items that are too big to fit in remaining space of the container for "_row" from 0 to (lnbSize _control select 0) - 1 do { - _mass = _rightPanelCache getOrDefault [_control lnbData [_row, 0], 0]; + _item = _control lnbData [_row, 0]; _color = _control lnbColor [_row, 1]; // Lower alpha on color for items that can't fit - _alpha = [0.25, 1] select (_mass <= _loadRemaining); + _alpha = [0.25, 1] select (_container canAdd _item); _color set [3, _alpha]; _control lnbSetColor [[_row, 1], _color]; _control lnbSetColor [[_row, 2], [1, 1, 1, _alpha]]; @@ -55,6 +54,6 @@ private _curSel = lnbCurSelRow _control; // Disable '+' button if item is unique or too big to fit in remaining space if (_curSel != -1) then { private _plusButtonCtrl = _display displayCtrl IDC_arrowPlus; - _plusButtonCtrl ctrlEnable !((_control lnbValue [_curSel, 2]) == 1 || {(_rightPanelCache getOrDefault [_control lnbData [_curSel, 0], 0]) > _loadRemaining}); + _plusButtonCtrl ctrlEnable ((_control lnbValue [_curSel, 2]) != 1 && {_container canAdd (_control lnbData [_curSel, 0])}); _plusButtonCtrl ctrlCommit FADE_DELAY; }; diff --git a/addons/arsenal/functions/fnc_updateUniqueItemsList.sqf b/addons/arsenal/functions/fnc_updateUniqueItemsList.sqf index ccbf7b7abb..fddc9b3b9c 100644 --- a/addons/arsenal/functions/fnc_updateUniqueItemsList.sqf +++ b/addons/arsenal/functions/fnc_updateUniqueItemsList.sqf @@ -125,7 +125,8 @@ private _fnc_uniqueEquipment = { }; } forEach (getUnitLoadout GVAR(center)); // Only need items, not extended loadout - +// Get all items from unit +_items = itemsWithMagazines GVAR(center) + backpacks GVAR(center); private _isMagazine = false; private _isWeapon = false; private _isGrenade = false; @@ -136,6 +137,9 @@ private _simulationType = ""; private _configItemInfo = ""; private _hasItemInfo = false; private _itemInfoType = 0; +private _baseWeapon = ""; +private _weapons = GVAR(virtualItems) get IDX_VIRT_WEAPONS; +private _attachments = GVAR(virtualItems) get IDX_VIRT_ATTACHMENTS; { _isMagazine = isClass (_cfgMagazines >> _x); @@ -184,8 +188,13 @@ private _itemInfoType = 0; // Unknown default { // Don't add items that are part of the arsenal - if !(_x in GVAR(virtualItemsFlatAll)) then { - (GVAR(virtualItems) get IDX_VIRT_UNIQUE_UNKNOWN_ITEMS) set [_x, nil]; + if ( + !(_x in (GVAR(virtualItems) get IDX_VIRT_MISC_ITEMS)) && + {!(_x in (GVAR(virtualItems) get IDX_VIRT_GRENADES))} && + {!(_x in (GVAR(virtualItems) get IDX_VIRT_EXPLOSIVES))} && + {!(_x in (GVAR(virtualItems) get IDX_VIRT_ITEMS_ALL))} + ) then { + (GVAR(virtualItems) get IDX_VIRT_UNIQUE_UNKNOWN_ITEMS) set [_x, true]; }; }; }; @@ -199,11 +208,17 @@ private _itemInfoType = 0; _itemInfoType = if (_hasItemInfo) then {getNumber (_configItemInfo >> "type")} else {0}; _isMiscItem = _x isKindOf ["CBA_MiscItem", _cfgWeapons]; + _baseWeapon = if (!_isMiscItem) then { + _x call FUNC(baseWeapon) + } else { + _x + }; + switch (true) do { // Optics case ( - !(_x in ((GVAR(virtualItems) get IDX_VIRT_ATTACHMENTS) get IDX_VIRT_OPTICS_ATTACHMENTS)) && - {_x in ((_configItems get IDX_VIRT_ATTACHMENTS) get IDX_VIRT_OPTICS_ATTACHMENTS) || + !(_baseWeapon in (_attachments get IDX_VIRT_OPTICS_ATTACHMENTS)) && + {_baseWeapon in ((_configItems get IDX_VIRT_ATTACHMENTS) get IDX_VIRT_OPTICS_ATTACHMENTS) || {_hasItemInfo && {!_isMiscItem} && {_itemInfoType == TYPE_OPTICS}}} @@ -212,8 +227,8 @@ private _itemInfoType = 0; }; // Flashlights case ( - !(_x in ((GVAR(virtualItems) get IDX_VIRT_ATTACHMENTS) get IDX_VIRT_FLASHLIGHT_ATTACHMENTS)) && - {_x in ((_configItems get IDX_VIRT_ATTACHMENTS) get IDX_VIRT_FLASHLIGHT_ATTACHMENTS) || + !(_baseWeapon in (_attachments get IDX_VIRT_FLASHLIGHT_ATTACHMENTS)) && + {_baseWeapon in ((_configItems get IDX_VIRT_ATTACHMENTS) get IDX_VIRT_FLASHLIGHT_ATTACHMENTS) || {_hasItemInfo && {!_isMiscItem} && {_itemInfoType == TYPE_FLASHLIGHT}}} @@ -222,8 +237,8 @@ private _itemInfoType = 0; }; // Muzzle attachments case ( - !(_x in ((GVAR(virtualItems) get IDX_VIRT_ATTACHMENTS) get IDX_VIRT_MUZZLE_ATTACHMENTS)) && - {_x in ((_configItems get IDX_VIRT_ATTACHMENTS) get IDX_VIRT_MUZZLE_ATTACHMENTS) || + !(_baseWeapon in (_attachments get IDX_VIRT_MUZZLE_ATTACHMENTS)) && + {_baseWeapon in ((_configItems get IDX_VIRT_ATTACHMENTS) get IDX_VIRT_MUZZLE_ATTACHMENTS) || {_hasItemInfo && {!_isMiscItem} && {_itemInfoType == TYPE_MUZZLE}}} @@ -232,8 +247,8 @@ private _itemInfoType = 0; }; // Bipods case ( - !(_x in ((GVAR(virtualItems) get IDX_VIRT_ATTACHMENTS) get IDX_VIRT_BIPOD_ATTACHMENTS)) && - {_x in ((_configItems get IDX_VIRT_ATTACHMENTS) get IDX_VIRT_BIPOD_ATTACHMENTS) || + !(_baseWeapon in (_attachments get IDX_VIRT_BIPOD_ATTACHMENTS)) && + {_baseWeapon in ((_configItems get IDX_VIRT_ATTACHMENTS) get IDX_VIRT_BIPOD_ATTACHMENTS) || {_hasItemInfo && {!_isMiscItem} && {_itemInfoType == TYPE_BIPOD}}} @@ -242,7 +257,7 @@ private _itemInfoType = 0; }; // Misc. items case ( - !(_x in (GVAR(virtualItems) get IDX_VIRT_MISC_ITEMS)) && + !(_x in (GVAR(virtualItems) get IDX_VIRT_MISC_ITEMS)) && // misc. items don't use 'baseWeapon' {_x in (_configItems get IDX_VIRT_MISC_ITEMS) || {_hasItemInfo && {_isMiscItem && @@ -254,9 +269,21 @@ private _itemInfoType = 0; }; // Unknown default { - // Don't add items that are part of the arsenal - if !(_x in GVAR(virtualItemsFlatAll)) then { - (GVAR(virtualItems) get IDX_VIRT_UNIQUE_UNKNOWN_ITEMS) set [_x, nil]; + // Don't add attachments or misc. items + if ( + !(_baseWeapon in (_attachments get IDX_VIRT_OPTICS_ATTACHMENTS)) && + {!(_baseWeapon in (_attachments get IDX_VIRT_FLASHLIGHT_ATTACHMENTS))} && + {!(_baseWeapon in (_attachments get IDX_VIRT_MUZZLE_ATTACHMENTS))} && + {!(_baseWeapon in (_attachments get IDX_VIRT_BIPOD_ATTACHMENTS))} && + {!(_x in (GVAR(virtualItems) get IDX_VIRT_MISC_ITEMS))} + ) then { + // If item is a weapon (including binos), make it unique + (GVAR(virtualItems) get IDX_VIRT_UNIQUE_UNKNOWN_ITEMS) set [_x, + _baseWeapon in (_weapons get IDX_VIRT_PRIMARY_WEAPONS) || + {_baseWeapon in (_weapons get IDX_VIRT_HANDGUN_WEAPONS)} || + {_baseWeapon in (_weapons get IDX_VIRT_SECONDARY_WEAPONS)} || + {_baseWeapon in (GVAR(virtualItems) get IDX_VIRT_BINO)} + ]; }; }; }; @@ -267,14 +294,14 @@ private _itemInfoType = 0; }; // Facewear case (isClass (_cfgGlasses >> _x)): { - (GVAR(virtualItems) get IDX_VIRT_UNIQUE_GOGGLES) set [_x, nil]; + (GVAR(virtualItems) get IDX_VIRT_UNIQUE_GOGGLES) set [_x, !(_x in (GVAR(virtualItems) get IDX_VIRT_GOGGLES))]; }; // Unknown default { // Don't add items that are part of the arsenal if !(_x in GVAR(virtualItemsFlatAll)) then { - (GVAR(virtualItems) get IDX_VIRT_UNIQUE_UNKNOWN_ITEMS) set [_x, nil]; + (GVAR(virtualItems) get IDX_VIRT_UNIQUE_UNKNOWN_ITEMS) set [_x, true]; }; }; }; -} forEach (keys ([GVAR(center), 0, 3, 3, 3, false] call EFUNC(common,uniqueUnitItems))); // Get all items from unit +} forEach (_items arrayIntersect _items); diff --git a/addons/arsenal/functions/fnc_updateVirtualItemsFlat.sqf b/addons/arsenal/functions/fnc_updateVirtualItemsFlat.sqf new file mode 100644 index 0000000000..974624d9b8 --- /dev/null +++ b/addons/arsenal/functions/fnc_updateVirtualItemsFlat.sqf @@ -0,0 +1,32 @@ +#include "..\script_component.hpp" +#include "..\defines.hpp" +/* + * Author: johnb43, Grim + * Updates flattened list of virtual items for checking + * + * Arguments: + * None + * + * Return Value: + * None + * + * Public: No +*/ + +private _virtualItemsFlat = +GVAR(virtualItems); +private _weapons = _virtualItemsFlat deleteAt IDX_VIRT_WEAPONS; +private _attachments = _virtualItemsFlat deleteAt IDX_VIRT_ATTACHMENTS; + +for "_index" from IDX_VIRT_ITEMS_ALL to IDX_VIRT_MISC_ITEMS do { + _virtualItemsFlat merge [_virtualItemsFlat deleteAt _index, true]; +}; + +for "_index" from IDX_VIRT_PRIMARY_WEAPONS to IDX_VIRT_HANDGUN_WEAPONS do { + _virtualItemsFlat merge [_weapons deleteAt _index, true]; +}; + +for "_index" from IDX_VIRT_OPTICS_ATTACHMENTS to IDX_VIRT_BIPOD_ATTACHMENTS do { + _virtualItemsFlat merge [_attachments deleteAt _index, true]; +}; + +GVAR(virtualItemsFlat) = _virtualItemsFlat; diff --git a/addons/arsenal/initSettings.sqf b/addons/arsenal/initSettings.inc.sqf similarity index 100% rename from addons/arsenal/initSettings.sqf rename to addons/arsenal/initSettings.inc.sqf diff --git a/addons/arsenal/missions/Arsenal.VR/XEH_postInit.sqf b/addons/arsenal/missions/Arsenal.VR/XEH_postInit.sqf index 9f4b0aa538..3ce0dd54d0 100644 --- a/addons/arsenal/missions/Arsenal.VR/XEH_postInit.sqf +++ b/addons/arsenal/missions/Arsenal.VR/XEH_postInit.sqf @@ -10,16 +10,18 @@ cba_diagnostic_projectileMaxLines = 10; // Player pose [{ - switch (true) do { - case (primaryWeapon _this != ""): { - _this switchMove "amovpercmstpslowwrfldnon"; - }; - case (handgunWeapon _this != ""): { - _this switchMove "amovpercmstpslowwpstdnon"; - }; - default { + switch (currentWeapon _this) do { + case (""): { _this switchMove "amovpercmstpsnonwnondnon"; }; + case (primaryWeapon _this): { + _this switchMove "amovpercmstpslowwrfldnon"; + }; + case (handgunWeapon _this): { + _this switchMove "amovpercmstpslowwpstdnon"; + }; + case (binocular _this); + case (secondaryWeapon _this): {}; // deliberately nothing }; }, _player] call CBA_fnc_execNextFrame; @@ -82,12 +84,13 @@ cba_diagnostic_projectileMaxLines = 10; _x hideObject false; } forEach allMissionObjects ""; - private _unit = objNull, + private _unit = objNull; // Update VR unit gear { _unit = _x; + removeVest _unit; if (vest _player != "") then { _unit addVest vest _player; }; removeBackpack _unit; diff --git a/addons/arsenal/stringtable.xml b/addons/arsenal/stringtable.xml index 1b0ef2a6cf..7f6947d913 100644 --- a/addons/arsenal/stringtable.xml +++ b/addons/arsenal/stringtable.xml @@ -8,7 +8,7 @@ Verstecken Ukryj 隠す - Nascondere + Nascondi 숨김 隱藏 隐藏 @@ -23,7 +23,7 @@ Masque l'interface Oberfläche verstecken Ukryj interfejs - インターフェイスを隠す + インターフェースを隠す Nascondi interfaccia 인터페이스 숨기기 隱藏介面 @@ -98,12 +98,12 @@ Kapat - No virtual item available + No virtual items available Ningún objeto virtual disponible Aucun objet virtuel disponible. Kein virtuelles Objekt verfügbar Brak dostępnych przedmiotów wirtualnych - 利用可能なバーチャル アイテムはありません + 利用可能な仮想アイテムはありません Nessun oggetto virtuale disponibile 가상장비 사용 불가 沒有可用的虛擬物品 @@ -149,14 +149,14 @@ [Shift+Click to save to mission defaults] [Shift+Click para guardar equipamiento predefinido [Umschalt+Linksklick um als Standard-Missionsausrüstung zu speichern] - [Shift + クリック] でミッション標準として保存します + [Shift + クリックでミッションの標準装備として保存します] Shift + Klik aby zapisac jako domyślne dla misji [Shift+Клик, чтобы сохранить в настройках по умолчанию] [Shift+Clique para salvar nos padrões da missão] [Shift+Clic pour enregistrer en tant qu'équipement prédéfini.] [Shift+左鍵來保存至任務預設] [Shift+左鍵 以保存至任务默认值] - [Shift+Click per salvare la missione con gli equipaggiamenti predefiniti] + [Shift+Click per salvare come equipaggiamento predefinito della missione] [Shift+Klik pro uložení jako standardního vybavení pro misi] [Shift+Click varsayılan kıyafetlere kaydet] [쉬프트+클릭 하여 임무 기본으로 설정] @@ -279,8 +279,8 @@ Équipements prédéfinis Standard-Ausrüstungen Domyślne zestawy - 標準の装備 - Equipaggiamenti standard + 標準装備 + Equipaggiamenti predefiniti 기본 로드아웃 預設裝備 默认负载 @@ -295,7 +295,7 @@ Sets d'équipement mis à disposition par le créateur de mission. Ausrüstungen, die durch den Missionsersteller zur Verfügung gestellt worden sind Zestawy udostępnione przez twórcę misji - 装備はミッション著者によって利用できます + ミッション著者によって作成された装備です Equipaggiamenti resi disponibili dal creatore della missione 미션메이커가 허용한 로드아웃 任務作者提供的預設裝備 @@ -343,7 +343,7 @@ Trier par poids Nach Gewicht sortieren Sortuj wg wagi - 重量で並び替え + 重量順に並び替え Ordina per peso 무게 순서로 정렬 以重量排序 @@ -359,8 +359,8 @@ Trier par quantité Nach Menge sortieren Sortuj wg ilości - 量で並び替え - Ordina per quantitativo + 数量順に並び替え + Ordina per quantità 갯수 순서로 정렬 以數量排序 以数量排序 @@ -373,81 +373,95 @@ Sort by load Nach Tragelast sortieren Trier par capacité de chargement - 容量で並び替え + Ordina per capacità di carico + 容量順に並び替え Ordenar por capacidad Сортировка по вместимости Sortuj po rozmiarze 공간 순서로 정렬 以容量排序 + Ordenar por capacidade Sort by accuracy Nach Genauigkeit sortieren Trier par précision - 精度で並び替え + Ordina per precisione + 精度順に並び替え Isabet doğruluğuna göre sırala Ordenar por precisión Сортировка по точности Sortuj po celności 정확도 순서로 정렬 以精度排序 + Ordenar por precisão Sort by rate of fire Nach Schussrate sortieren Trier par cadence de tir - 連射速度で並び替え + Ordina per cadenza di tiro + 連射速度順に並び替え Atış hızına göre sırala Ordenar por cadencia de tiro Сортировка по темпу стрельбы Sortuj po szybkostrzelności 발사속도 순서로 정렬 以射速排序 + Ordenar por cadência Sort by magnification Nach Vergrößerung sortieren Trier par grossissement - 倍率で並び替え + Ordina per ingrandimento + 倍率順に並び替え Ordenar por magnificación Сортировка по кратности приближения Sortuj po przybliżeniu 배율 순서로 정렬 以放大倍数排序 + Ordenar por magnificação Sort by ammo count Nach Munitionszahl sortieren Trier par nombre de munitions - 装弾数で並び替え + Ordina per numero di colpi + 装弾数順に並び替え Mermi sayısına göre sırala Ordenar por cantidad de munición Сортировка по количеству боеприпасов Sortuj po ilości amunicji 총알 갯수 순서롤 정렬 以弹量排序 + Ordenar por quantidade de munição Sort by ballistic protection Trier par protection balistique - 防弾性能で並び替え + Ordina per protezione balistica + 防弾性能順に並び替え Ordenar por protección balística Сортировка по баллистической защите Sortuj po ochronie balistycznej Nach ballistischem Schutz sortieren 방탄 성능 순서로 정렬 以防弹性能排序 + Ordenar por proteção balística Sort by explosive protection Trier par résistance aux explosifs - 防爆性能で並び替え + Ordina per protezione esplosiva + 防爆性能順に並び替え Ordenar por protección de explosivos Сортировка по защите от взрывов Sortuj po ochronie przeciw wybuchom Nach Explosionsschutz sortieren 방폭 성능 순서로 정렬 以防爆性能排序 + Ordenar por proteção a explosivos Share or stop sharing the selected loadout @@ -503,8 +517,8 @@ La liste des équipements prédéfinis est vide ! Die Standard-Ausrüstungen-Liste ist leer! Lista domyślnych zestawów jest pusta! - 標準の装備一欄が空です! - La lista degli equipaggiamenti standard è vuota! + 標準装備の一覧は空です! + La lista degli equipaggiamenti predefiniti è vuota! 기본 로드아웃 목록이 비어있습니다! 沒有預設的裝備清單! 没有默认负载清单! @@ -519,8 +533,8 @@ Liste des équipements prédéfinis exportée dans le presse-papier. Standard-Ausrüstungen-Liste in die Zwischenablage exportiert Lista domyślnych zestawów została eksportowana do schowka - 標準の装備一欄はクリップボードへエクスポートされました - La lista degli equipaggiamenti standard è stata esportata negli appunti + 標準装備の一覧をクリップボードへエクスポートしました + La lista degli equipaggiamenti predefiniti è stata esportata negli appunti 클립보드에 기본 로드아웃 목록 내보내기 預設的裝備清單已匯出到剪貼簿中 默认负载清单已导出到剪贴板 @@ -535,7 +549,7 @@ Équipement actuel exporté dans le presse-papier. Derzeitige Ausrüstung in die Zwischenablage exportiert Obecny zestaw został eksportowany do schowka - 現在の装備はクリップボードへ出力されました + 現在の装備をクリップボードへ出力しました Equipaggiamento corrente esportato negli appunti 현재 로드아웃을 클립보드로 내보냈습니다. 當前的裝備已匯出到剪貼簿中 @@ -567,8 +581,8 @@ Liste des équipements prédéfinis importée depuis le presse-papier. Standard-Ausrüstungen-Liste aus der Zwischenablage importiert Lista domyślnych zestawów została importowana ze schowka - 標準の装備一欄はクリップボードからインポートされました - La lista degli equipaggiamenti standard è stata importata dagli appunti + 標準装備の一覧をクリップボードからインポートしました + La lista degli equipaggiamenti predefiniti è stata importata dagli appunti 클립보드에서 기본 로드아웃 가져오기 預設的裝備清單已從剪貼簿中匯入 默认负载已从剪贴板导入 @@ -583,7 +597,7 @@ Set d'équipement importé depuis le presse-papier. Ausrüstung aus der Zwischenablage importiert Zestaw został importowany ze schowka - 装備はクリップボードからインポートされました + 装備をクリップボードからインポートしました Equipaggiamento importato dagli appunti 클립보드에서 로드아웃을 가져왔습니다. 裝備已從剪貼簿中匯入 @@ -728,7 +742,7 @@ wurde umbenannt in zmienił nazwę na 次の名前に変更されました - E' stato rinominato in + È stato rinominato in 이름이 다음과 같이 변경됨: 已被改名為 已被改名为 @@ -775,7 +789,7 @@ Taille de police des panneaux Schrifthöhe für die linke und rechte Liste Wysokość czcionki - パネルにあるフォントの高さ + パネルのフォントの高さ Altezza carattere del pannello 패널 폰트 높이 面板字體高度 @@ -791,8 +805,8 @@ Autoriser les équipements prédéfinis Erlaubt die Benutzung der Standardausrüstungen Zezwól na użycie domyślnych zestawów - 標準の装備を許可 - Consenti equipaggiamenti standard + 標準装備を許可 + Consenti equipaggiamenti predefiniti 기본 로드아웃 허용 允許預設裝備 允许默认负载 @@ -807,7 +821,7 @@ Autoriser le partage des sets d'équipement Erlaubt das Teilen von Ausrüstungen Zezwól na udostępnianie zestawów - 装備の共有を許可 + 装備共有を許可 Consenti condivisione equipaggiamenti 로드아웃 공유 허용 允許分享裝備 @@ -902,8 +916,8 @@ Permitir el uso de la pestaña de equipamientos por defecto Active l'onglet "Équipements prédéfinis". Zezwól na użycie zakładki domyślnych zestawów - 標準の装備タブの使用を許可します - Consenti l'uso della sezione per gli equipaggiamenti standard + 標準装備タブの使用を許可します + Consenti l'uso della sezione per gli equipaggiamenti predefiniti 기본 로드아웃 탭 사용 허가 Erlaube die Nutzung des Standardausrüstungsreiters 允許使用預設的裝備 @@ -918,7 +932,7 @@ Mostrar / ocultar iconos de mods en el panel izquierdo Affiche/masque les icônes de mod du panneau gauche. Pokaż / ukryj ikony modów w lewym panelu - 左パネルにある MOD アイコンの表示 / 非表示をします + 左パネルにあるMODアイコンを表示/非表示します Mostra / nascondi le icone delle mod dal pannello sinistro 왼쪽 패널의 모드 아이콘 표시 / 숨기기 Zeigt/Versteckt Mod-Symbole in der linken Leiste @@ -934,7 +948,7 @@ Cambiar el tamaño de fuente para el texto de los paneles izquierdo y derecho Change la taille de police des panneaux latéraux. Zmień wysokość czcionki dla tekstu lewego i prawego panelu - パネルにあるフォントの高さを変更します。 + 左右パネル内の文字フォントの高さを変更します。 Cambia l'altezza del font per il testo sul pannello sinistro / destro 왼쪽 / 오른쪽 패널 텍스트의 글꼴 높이 변경 Ändert die Schriftgröße für die linke/rechte Leiste @@ -950,7 +964,7 @@ Registrar elementos no encontrados o no disponibles en el RPT Consigne les objets manquants ou indisponibles dans le RPT. Rejestruj brakujące / niedostępne przedmioty do pliku RPT - PRT で欠落 / 利用不可アイテムを記録します + PRTに欠落/利用不可アイテムを記録します Log mancante / oggetto non disponibile nell' RPT RPT에 누락 된 항목 / 사용할 수없는 항목 기록 Fehlende Gegenstände werden in der RPT aufgezeichnet @@ -982,7 +996,7 @@ Importar equipamientos de BI Arsenal hacia el arsenal de ACE Importer les sets BI VA dans l'arsenal ACE Importiert die BI-VA-Ausrüstungen in das ACE-Arsenal - 標準の VA 装備から ACE 武器庫へ取り込み + BI 武器庫の装備を ACE 武器庫へインポート 바닐라 로드아웃을 ACE 아스날로 가져오기 匯入BI原廠虛擬軍火庫的裝備到ACE虛擬軍火庫中 导入 BI 原版虚拟军火库的负载到 ACE 虚拟军火库中 @@ -997,7 +1011,7 @@ Ninguna unidad de jugador disponible! Coloca una unidad y márcala como "Jugador". Aucune unité joueur disponible ! Placez une unité et marquez-la en tant que "joueur". Keine Spielereinheit verfügbar. Setze eine Einheit und markiere sie als "Spieler". - プレイヤーユニットがありません!ユニットを設置し"Player"と名付けてください。 + プレイヤーユニットがありません!ユニットを設置し"プレイヤー"に設定してください。 플레이어 유닛을 사용할 수 없습니다! 유닛을 놓고 "플레이어"라고 표시하십시오. 沒有可用的玩家單位!請擺放一個單位並設定成"玩家" 没有可用的玩家单位!请摆放一个单位并设定成“玩家”。 @@ -1138,7 +1152,7 @@ Taux de potassium 钾水平 鉀水平 - Ilvello di potassio + Livello di potassio Poziomy potasu Уровень Калия Níveis de Potássio @@ -1228,7 +1242,7 @@ Not Supported No soportada Nicht unterstützt - セカンダリに内蔵 + 非対応 Nie wspierane Non supportato Не поддерживается @@ -1282,7 +1296,7 @@ Nocturna Notturno Nocturne - 暗視装置 + 暗視 야간 夜视 夜視 @@ -1298,7 +1312,7 @@ Térmica Termico Thermique - 熱源画像 + 熱画像 열상 热成像 熱成像 @@ -1325,7 +1339,7 @@ Habilitar las pestañas de caras / voces / insignias Aktiviere die Gesichter-, Stimmen- und Abzeichenübersicht Activer les onglets visages/voix/insignes - 顔 / 声 / 記章(バッジ)タブを有効化 + 顔/声/バッジ(記章)タブを有効化 启用脸谱/语音/徽章选项 啟用臉譜/聲音/徽章選項 Abilita volti, voci e insegne @@ -1435,7 +1449,7 @@ Export current items list as an array for use in scripts Exportar la lista actual de objetos como una tabla para su uso en scripts Exportiert aktuelle Gegenstände als Array, um es in Scripten zu verwenden - スクリプト用に現在のアイテム リストをアレイでエクスポートします + スクリプト用に現在のアイテムリストをアレイでエクスポートします Esporta l'attuale lista di elementi come un array, per essere usati negli script Eksportuj obecną listę przedmiotów jako tablicę do wykorzystania w skryptach Exportar a lista atual de itens como uma matriz para usar em scripts @@ -1481,7 +1495,7 @@ Añade automáticamente accesorios o cargadores (de la categoría seleccionada) a todas las armas de la lista de objetos Es werden automatisch kompatible Aufsätze oder Magazine für alle ausgewählten Waffen hinzugefügt Automatycznie doda kompatybilne dodatki oraz magazynki (odpowiednio do każdej kategorii) dla wszystkich broni na liście - 現在のアイテム リスト内にある全武器に対応するアタッチメントと弾倉 (選択したカテゴリに基づき) を自動的に追加します + 現在のアイテムリスト内にある全武器に対応する アタッチメントと弾倉(選択したカテゴリに基づく)を自動的に追加します Добавляет совместимые приспособления или магазины (в зависимости от выбранной категории) для всего оружия в текущем списке предметов Irá automaticamente adicionar acessórios ou carregadores (baseado na categoria selecionada) para todas as armas na lista de itens atual Ajoute automatiquement des accessoires ou des chargeurs compatibles (en fonction de la catégorie sélectionnée), pour toutes les armes de la liste actuelle. @@ -1496,9 +1510,9 @@ Tiempo de vida Lebenszeit Durée d'expiration - 有効時間 + 効力持続時間 Czas by żyć - Scadenza (TTL) + Tempo di vita Время действия Time to live 有效時間 @@ -1513,14 +1527,17 @@ Задержка детонации Opoźnienie zapalnika 信管設定時間 + Tempo di spoletta Tiempo de espoleta Detonationsverzögerung 引信时间 신관 시간 + Atraso de detonação Detonates on impact Aufschlagzünder + Spoletta a impatto Détonation à l'impact Детонация от удара Detonuj przy uderzeniu @@ -1528,47 +1545,63 @@ Detona mediante impacto 碰炸引信 충격 신관 + Detona por impacto Save Face 얼굴 저장 Сохранить лицо Guardar Cara + Salva faccia 顔の保存 Zapisz Twarz Gesicht Speichern + Sauvegarder le visage + Salvar Rosto Save Voice 목소리 저장 Сохранить голос Guardar Voz + Salva voce 声の保存 Zapisz Głos Stimme Speichern + Sauvegarder la voix + Salvar Voz Save Insignia 계급장 저장 Сохранить эмблему Guardar Insignia - 記章(バッジ)の保存 + Salva insegna + バッジ(記章)の保存 Zapisz Naszywkę Insignia Speichern + Sauvegarder l'insigne + Salvar Insígnia Descending - 下降 + 降順 Malejąco Absteigend + Decrescente 내림차순 + Décroissant + Decrescente Ascending 昇順 Rosnąco Aufsteigend + Ascendente 오름차순 + Croissant + Crescente Tools @@ -1591,42 +1624,76 @@ 弾薬数 Ilość amunicji Munitionszahl + Numero di colpi 장탄 수 + Nombre de munitions + Quantidade de munição + + + Illuminators + Illuminateurs + Illuminanti + Leuchtmittel + 조명 + Iluminadores + イルミネーター Default to Favorites - お気に入りをデフォルト + お気に入りを標準に Domyślnie do Ulubionych + Mostra solo Preferiti come predefinito Standardmäßig auf Favoriten eingestellt 즐겨찾기 기본값 + Favoris par défaut + Favoritos por padrão Controls whether the ACE Arsenal defaults to showing all items or favorites. - ACE Arsenalがデフォルトで全てのアイテムを表示するか、お気に入りを表示するかを制御します。 + ACE 武器庫が標準ですべてのアイテムを表示するか、お気に入りを表示するかを制御します。 Kontroluje, czy ACE Arsenal domyślnie wyświetla wszystkie przedmioty, czy tylko ulubione. + Controlla se lo stato predefinito dell'arsenale ACE mostra tutti gli oggetti o solo i preferiti. Steuert, ob das ACE Arsenal standardmäßig alle Gegenstände oder nur Favoriten anzeigt. ACE 아스널이 기본적으로 모든 아이템 또는 즐겨찾기를 표시할 지 여부를 조정합니다. + Contrôle si l'arsenal ACE affiche par défaut tous les éléments ou les favoris. + Controla se o Arsenal ACE exibe por padrão todos os itens ou favoritos. Favorites Color お気に入りの色 Kolor Ulubionych Favoritenfarbe + Colore preferiti 즐겨찾기 색상 + Couleurs favorites + Cor dos favoritos Highlight color for favorited items. お気に入りアイテムのハイライト色。 Kolor podświetlenia ulubionych elementów. Hervorhebungsfarbe für Lieblingsgegenstände. + Colore che mette in mostra i preferiti nella lista. 즐겨찾기한 아이템을 색상으로 강조합니다. + Met en surbrillance les éléments favoris. + Cor de destaque para itens favoritados. Switch between displaying all items or your favorites.\nDouble click while holding Shift to add or remove an item. - Shiftを押しながらダブルクリックするとアイテムを追加・削除できます。 + アイテムをすべて表示するかお気に入りのみを表示するかを切り替えます。\nアイテムをお気に入りに追加または削除するには、Shiftキーを押しながらダブルクリックします。 Przełączanie między wyświetlaniem wszystkich przedmiotów lub tylko ulubionych. \nKliknij dwukrotnie, przytrzymując Shift, aby dodać lub usunąć przedmiot. Wechseln Sie zwischen der Anzeige aller Elemente oder Ihrer Favoriten.\nDoppelklicken Sie bei gedrückter Umschalttaste, um ein Element hinzuzufügen oder zu entfernen. + Cambia tra mostrare tutti gli oggetti o solo i tuoi preferiti.\nShift + Doppio Click per aggiungere o rimuovere un preferito. 모든 아이템을 표시하거나 즐겨찾기를 표시할 때 전환합니다\nShift 키를 누른 상태에서 두 번 클릭하여 아이템을 추가하거나 제거합니다. + Change entre l'affichage de tous les éléments ou de vos favoris.\nDouble-cliquez en maintenant la touche Maj enfoncée pour ajouter ou supprimer un élément. + Alterna entre a exibição de todos os itens ou seus favoritos.\nClique duas vezes enquanto mantém pressionada a tecla Shift para adicionar ou remover um item. + + + Search\nCTRL + Click to enable live results + Suche\nSTRG + Click für Live-Aktualisierung während des Schreibens + Cerca\nCTRL + Click per modificare i risultati mentre scrivi + 検索\nCTRL + クリックで検索結果の即時表示を有効化 + 검색\nCtrl + 클릭으로 실시간 검색 결과를 활성화 diff --git a/addons/arsenal/ui/RscAttributes.hpp b/addons/arsenal/ui/RscAttributes.hpp index e1e6da5da8..0265e86f3f 100644 --- a/addons/arsenal/ui/RscAttributes.hpp +++ b/addons/arsenal/ui/RscAttributes.hpp @@ -4,12 +4,12 @@ class GVAR(display) { idd = IDD_ace_arsenal; enableSimulation = 1; - onLoad = QUOTE([ARR_3('onLoad', _this, QQGVAR(display))] call FUNC(onArsenalOpen)); - onUnload = QUOTE([ARR_3('onUnload', _this, QQGVAR(display))] call FUNC(onArsenalClose)); - onKeyDown = QUOTE([ARR_3('onKeyDown', _this, QQGVAR(display))] call FUNC(onKeyDown)); + onLoad = QUOTE([ARR_3('onLoad',_this,QQGVAR(display))] call FUNC(onArsenalOpen)); + onUnload = QUOTE([ARR_3('onUnload',_this,QQGVAR(display))] call FUNC(onArsenalClose)); + onKeyDown = QUOTE([ARR_3('onKeyDown',_this,QQGVAR(display))] call FUNC(onKeyDown)); onKeyUp = QUOTE(GVAR(shiftState) = _this select 2); - onMouseButtonDown = QUOTE([ARR_3('onMouseButtonDown', _this, QQGVAR(display))] call FUNC(onMouseButtonDown)); - onMouseButtonUp = QUOTE([ARR_3('onMouseButtonUp', _this, QQGVAR(display))] call FUNC(onMouseButtonUp)); + onMouseButtonDown = QUOTE([ARR_3('onMouseButtonDown',_this,QQGVAR(display))] call FUNC(onMouseButtonDown)); + onMouseButtonUp = QUOTE([ARR_3('onMouseButtonUp',_this,QQGVAR(display))] call FUNC(onMouseButtonUp)); icon = "\A3\Ui_f\data\Logos\a_64_ca.paa"; logo = "\A3\Ui_f\data\Logos\arsenal_1024_ca.paa"; class ControlsBackground { @@ -28,9 +28,9 @@ class GVAR(display) { class mouseArea: ctrlStatic { idc = IDC_mouseArea; style = 16; - onMouseMoving = QUOTE([ARR_3('onMouseMoving', _this, GVAR(display))] call FUNC(handleMouse)); - onMouseHolding = QUOTE([ARR_3('onMouseHolding', _this, GVAR(display))] call FUNC(handleMouse)); - onMouseZChanged = QUOTE([ARR_3('onMouseZChanged', _this, GVAR(display))] call FUNC(handleScrollWheel)); + onMouseMoving = QUOTE([ARR_3('onMouseMoving',_this,GVAR(display))] call FUNC(handleMouse)); + onMouseHolding = QUOTE([ARR_3('onMouseHolding',_this,GVAR(display))] call FUNC(handleMouse)); + onMouseZChanged = QUOTE([ARR_3('onMouseZChanged',_this,GVAR(display))] call FUNC(handleScrollWheel)); x = QUOTE(safezoneX); y = QUOTE(safezoneY); w = QUOTE(safezoneW); @@ -42,7 +42,7 @@ class GVAR(display) { idc = IDC_arrowMinus; text = "-"; colorBackground[] = {0,0,0,0.8}; - onButtonClick = QUOTE([ARR_2(ctrlParent (_this select 0), -1)] call FUNC(buttonCargo)); + onButtonClick = QUOTE([ARR_2(ctrlParent (_this select 0),-1)] call FUNC(buttonCargo)); fade = 1; enable = 0; x = 0.5; @@ -53,7 +53,7 @@ class GVAR(display) { }; class ArrowRight: ArrowLeft { idc = IDC_arrowPlus; - onButtonClick = QUOTE([ARR_2(ctrlParent (_this select 0), 1)] call FUNC(buttonCargo)); + onButtonClick = QUOTE([ARR_2(ctrlParent (_this select 0),1)] call FUNC(buttonCargo)); text = "+"; }; class blockLeftFrame: RscFrame { @@ -205,7 +205,7 @@ class GVAR(display) { x = QUOTE(5 * WIDTH_GAP + 4 * WIDTH_SINGLE); text = ""; tooltip = CSTRING(buttonFavoritesTooltip); - onButtonClick = QUOTE([ARR_2(ctrlParent (_this select 0), (_this select 0))] call FUNC(buttonFavorites)); + onButtonClick = QUOTE([ARR_2(ctrlParent (_this select 0),(_this select 0))] call FUNC(buttonFavorites)); }; class buttonClose: ctrlButtonOK { idc = IDC_menuBarClose; @@ -417,7 +417,7 @@ class GVAR(display) { text = "<"; colorBackground[] = {0,0,0,0}; colorBackgroundDisabled[] = {0,0,0,0}; - onButtonClick = QUOTE([ARR_2(QQGVAR(statsChangePage),[ARR_3(ctrlParent (_this select 0), _this select 0, false)])] call CBA_fnc_localEvent); + onButtonClick = QUOTE([ARR_2(QQGVAR(statsChangePage),[ARR_3(ctrlParent (_this select 0),_this select 0,false)])] call CBA_fnc_localEvent); x = QUOTE((0.5 - WIDTH_TOTAL / 2) + WIDTH_GAP); y = QUOTE(safezoneY + 1.8 * GRID_H); w = QUOTE(5 * GRID_W); @@ -427,7 +427,7 @@ class GVAR(display) { class statsNextPage: statsPreviousPage { idc = IDC_statsNextPage; text = ">"; - onButtonClick = QUOTE([ARR_2(QQGVAR(statsChangePage),[ARR_3(ctrlParent (_this select 0), _this select 0, true)])] call CBA_fnc_localEvent); + onButtonClick = QUOTE([ARR_2(QQGVAR(statsChangePage),[ARR_3(ctrlParent (_this select 0),_this select 0,true)])] call CBA_fnc_localEvent); x = QUOTE((0.5 - WIDTH_TOTAL / 2) + WIDTH_GAP + 42 * GRID_W); }; class statsCurrentPage: RscText { @@ -524,7 +524,7 @@ class GVAR(display) { text="<"; colorBackground[]={0,0,0,0}; colorBackgroundDisabled[]= {0,0,0,0}; - onButtonClick = QUOTE([ARR_2(QQGVAR(actionsChangePage),[ARR_3(ctrlParent (_this select 0), _this select 0, false)])] call CBA_fnc_localEvent); + onButtonClick = QUOTE([ARR_2(QQGVAR(actionsChangePage),[ARR_3(ctrlParent (_this select 0),_this select 0,false)])] call CBA_fnc_localEvent); x = QUOTE(0); y = QUOTE(0); w = QUOTE(5 * GRID_W); @@ -534,7 +534,7 @@ class GVAR(display) { class actionsNextPage: actionsPreviousPage { idc = IDC_actionsNextPage; text = ">"; - onButtonClick = QUOTE([ARR_2(QQGVAR(actionsChangePage),[ARR_3(ctrlParent (_this select 0), _this select 0, true)])] call CBA_fnc_localEvent); + onButtonClick = QUOTE([ARR_2(QQGVAR(actionsChangePage),[ARR_3(ctrlParent (_this select 0),_this select 0,true)])] call CBA_fnc_localEvent); x = QUOTE(42 * GRID_W); }; class actionsCurrentPage: RscText { @@ -637,7 +637,8 @@ class GVAR(display) { idc = IDC_leftSearchbar; onSetFocus = QUOTE(GVAR(leftSearchbarFocus) = true); onKillFocus = QUOTE(GVAR(leftSearchbarFocus) = false); - onMouseButtonClick = QUOTE([ARR_3(ctrlParent (_this select 0), _this select 0, _this select 1)] call FUNC(clearSearchbar)); + onMouseButtonClick = QUOTE([ARR_3(ctrlParent (_this select 0),_this select 0,_this select 1)] call FUNC(clearSearchbar)); + onEditChanged = QUOTE(call FUNC(handleSearchInputChanged)); x = QUOTE(safezoneX + 13 * GRID_W); y = QUOTE(safezoneY + 1.8 * GRID_H); w = QUOTE(74 * GRID_W); @@ -647,8 +648,10 @@ class GVAR(display) { class leftSearchbarButton: ctrlButtonPicture { idc = IDC_leftSearchbarButton; text = "\a3\Ui_f\data\GUI\RscCommon\RscButtonSearch\search_start_ca.paa"; + tooltip = CSTRING(buttonSearchTooltip); colorBackground[] = {0,0,0,0.5}; - onButtonClick = QUOTE([ARR_2(ctrlParent (_this select 0), ctrlParent (_this select 0) displayCtrl IDC_leftSearchbar)] call FUNC(handleSearchbar)); + onButtonClick = QUOTE([ARR_2(ctrlParent (_this select 0),ctrlParent (_this select 0) displayCtrl IDC_leftSearchbar)] call FUNC(handleSearchbar)); + onMouseButtonDown = QUOTE(call FUNC(handleSearchModeToggle)); x = QUOTE(safezoneX + 87 * GRID_W); y = QUOTE(safezoneY + 1.8 * GRID_H); w = QUOTE(6 * GRID_W); @@ -662,7 +665,7 @@ class GVAR(display) { }; class rightSearchbarButton: leftSearchbarButton { idc = IDC_rightSearchbarButton; - onButtonClick = QUOTE([ARR_2(ctrlParent (_this select 0), ctrlParent (_this select 0) displayCtrl IDC_rightSearchbar)] call FUNC(handleSearchbar)); + onButtonClick = QUOTE([ARR_2(ctrlParent (_this select 0),ctrlParent (_this select 0) displayCtrl IDC_rightSearchbar)] call FUNC(handleSearchbar)); x = QUOTE(safezoneX + safezoneW - 93 * GRID_W); }; class tabLeft: RscControlsGroupNoScrollbars { @@ -686,7 +689,7 @@ class GVAR(display) { idc = IDC_buttonPrimaryWeapon; text = "\A3\Ui_f\data\GUI\Rsc\RscDisplayArsenal\PrimaryWeapon_ca.paa"; tooltip = "$STR_A3_RscDisplayArsenal_tab_PrimaryWeapon"; - onButtonClick = QUOTE([ARR_2(ctrlParent (_this select 0), _this select 0)] call FUNC(fillLeftPanel)); + onButtonClick = QUOTE([ARR_2(ctrlParent (_this select 0),_this select 0)] call FUNC(fillLeftPanel)); colorBackground[] = {0,0,0,0.5}; x = QUOTE(0 * GRID_W); y = QUOTE(0 * GRID_H); @@ -879,7 +882,7 @@ class GVAR(display) { idc = IDC_buttonOptic; tooltip = "$STR_A3_RscDisplayArsenal_tab_ItemOptic"; text = "\A3\Ui_f\data\GUI\Rsc\RscDisplayArsenal\ItemOptic_ca.paa"; - onButtonClick = QUOTE([ARR_2(ctrlParent (_this select 0), _this select 0)] call FUNC(fillRightPanel)); + onButtonClick = QUOTE([ARR_2(ctrlParent (_this select 0),_this select 0)] call FUNC(fillRightPanel)); colorBackground[] = {0,0,0,0.5}; x = QUOTE(safezoneW + safezoneX - 10 * GRID_W); y = QUOTE(safezoneY + 8 * GRID_H); @@ -1005,8 +1008,8 @@ class GVAR(display) { class GVAR(loadoutsDisplay) { idd = IDD_loadouts_display; - onLoad = QUOTE([ARR_3('onLoad', _this, QQGVAR(loadoutsDisplay))] call FUNC(onLoadoutsOpen)); - onUnload = QUOTE([ARR_3('onUnload', _this, QQGVAR(loadoutsDisplay))] call FUNC(onLoadoutsClose)); + onLoad = QUOTE([ARR_3('onLoad',_this,QQGVAR(loadoutsDisplay))] call FUNC(onLoadoutsOpen)); + onUnload = QUOTE([ARR_3('onUnload',_this,QQGVAR(loadoutsDisplay))] call FUNC(onLoadoutsClose)); class controls { class centerBox: ctrlControlsGroupNoScrollbars { idc = IDC_centerBox; @@ -1048,8 +1051,8 @@ class GVAR(loadoutsDisplay) { disableOverflow = 1; onSetFocus = QUOTE(GVAR(loadoutsPanelFocus) = true); onKillFocus = QUOTE(GVAR(loadoutsPanelFocus) = false); - onLBSelChanged = QUOTE([ARR_3(ctrlParent (_this select 0), _this select 0, _this select 1)] call FUNC(onSelChangedLoadouts)); - onLBDblClick = QUOTE([ARR_2(ctrlParent (_this select 0), (ctrlParent (_this select 0)) displayCtrl IDC_buttonLoad)] call FUNC(buttonLoadoutsLoad)); + onLBSelChanged = QUOTE([ARR_3(ctrlParent (_this select 0),_this select 0,_this select 1)] call FUNC(onSelChangedLoadouts)); + onLBDblClick = QUOTE([ARR_2(ctrlParent (_this select 0),(ctrlParent (_this select 0)) displayCtrl IDC_buttonLoad)] call FUNC(buttonLoadoutsLoad)); x = QUOTE(0); y = QUOTE(5 * GRID_H); w = QUOTE(160 * GRID_W); @@ -1078,7 +1081,7 @@ class GVAR(loadoutsDisplay) { idc = IDC_loadoutsSearchbar; onSetFocus = QUOTE(GVAR(loadoutsSearchbarFocus) = true); onKillFocus = QUOTE(GVAR(loadoutsSearchbarFocus) = false); - onMouseButtonClick = QUOTE([ARR_3(ctrlParent (_this select 0), _this select 0, _this select 1)] call FUNC(clearSearchbar)); + onMouseButtonClick = QUOTE([ARR_3(ctrlParent (_this select 0),_this select 0,_this select 1)] call FUNC(clearSearchbar)); x = QUOTE(83 * GRID_W); y = QUOTE(safezoneH - (51 * GRID_H)); w = QUOTE(72 * GRID_W); @@ -1089,7 +1092,7 @@ class GVAR(loadoutsDisplay) { idc = -1; text = "\a3\Ui_f\data\GUI\RscCommon\RscButtonSearch\search_start_ca.paa"; colorBackground[] = {0,0,0,0.5}; - onButtonClick = QUOTE([ARR_2(ctrlParent (_this select 0), ctrlParent (_this select 0) displayCtrl IDC_loadoutsSearchbar)] call FUNC(handleLoadoutsSearchbar)); + onButtonClick = QUOTE([ARR_2(ctrlParent (_this select 0),ctrlParent (_this select 0) displayCtrl IDC_loadoutsSearchbar)] call FUNC(handleLoadoutsSearchbar)); x = QUOTE(155 * GRID_W); y = QUOTE(safezoneH - (51 * GRID_H)); w = QUOTE(5 * GRID_W); @@ -1104,7 +1107,7 @@ class GVAR(loadoutsDisplay) { text = CSTRING(buttonSaveText); tooltip = CSTRING(buttonSaveTooltip); sizeEx = QUOTE(5 * GRID_H); - onButtonClick = QUOTE([ARR_2(ctrlParent (_this select 0), _this select 0)] call FUNC(buttonLoadoutsSave)); + onButtonClick = QUOTE([ARR_2(ctrlParent (_this select 0),_this select 0)] call FUNC(buttonLoadoutsSave)); colorBackground[] = {0,0,0,0.8}; }; class buttonRename: buttonSave { @@ -1112,21 +1115,21 @@ class GVAR(loadoutsDisplay) { x = QUOTE(32.5 * GRID_W); text = ECSTRING(common,rename); tooltip = CSTRING(buttonRenameTooltip); - onButtonClick = QUOTE([ARR_2(ctrlParent (_this select 0), _this select 0)] call FUNC(buttonLoadoutsRename)); + onButtonClick = QUOTE([ARR_2(ctrlParent (_this select 0),_this select 0)] call FUNC(buttonLoadoutsRename)); }; class buttonLoad: buttonSave { idc = IDC_buttonLoad; x = QUOTE(65 * GRID_W); text = CSTRING(buttonLoadText); tooltip = CSTRING(buttonLoadTooltip); - onButtonClick = QUOTE([ARR_2(ctrlParent (_this select 0), _this select 0)] call FUNC(buttonLoadoutsLoad)); + onButtonClick = QUOTE([ARR_2(ctrlParent (_this select 0),_this select 0)] call FUNC(buttonLoadoutsLoad)); }; class buttonShare: buttonSave { idc = IDC_buttonShare; x = QUOTE(97.5 * GRID_W); text = CSTRING(buttonSharePrivateText); tooltip = CSTRING(buttonShareTooltip); - onButtonClick = QUOTE([ARR_2(ctrlParent (_this select 0), _this select 0)] call FUNC(buttonLoadoutsShare)); + onButtonClick = QUOTE([ARR_2(ctrlParent (_this select 0),_this select 0)] call FUNC(buttonLoadoutsShare)); }; class buttonDelete: buttonSave { idc = IDC_buttonDelete; @@ -1134,7 +1137,7 @@ class GVAR(loadoutsDisplay) { text = CSTRING(buttonDeleteText); tooltip = CSTRING(buttonDeleteTooltip); colorBackgroundActive[] = {0.5,0,0,1}; - onButtonClick = QUOTE([ARR_2(ctrlParent (_this select 0), _this select 0)] call FUNC(buttonLoadoutsDelete)); + onButtonClick = QUOTE([ARR_2(ctrlParent (_this select 0),_this select 0)] call FUNC(buttonLoadoutsDelete)); }; }; }; @@ -1174,7 +1177,7 @@ class GVAR(loadoutsDisplay) { sizeEx = QUOTE(5 * GRID_H); text = CSTRING(tabMyLoadoutsText); tooltip = CSTRING(tabMyLoadoutsTooltip); - onButtonClick = QUOTE([ARR_2(ctrlParent (_this select 0), _this select 0)] call FUNC(loadoutsChangeTab)); + onButtonClick = QUOTE([ARR_2(ctrlParent (_this select 0),_this select 0)] call FUNC(loadoutsChangeTab)); }; class buttonDefaultLoadoutsBackground: buttonMyLoadoutsBackground { idc = IDC_buttonDefaultLoadoutsBackground; diff --git a/addons/arsenal/ui/RscCustomArsenalButton.hpp b/addons/arsenal/ui/RscCustomArsenalButton.hpp index abe3358399..0aa077f424 100644 --- a/addons/arsenal/ui/RscCustomArsenalButton.hpp +++ b/addons/arsenal/ui/RscCustomArsenalButton.hpp @@ -6,7 +6,7 @@ class GVAR(customArsenalButton_Button): RscButtonArsenal { text = QPATHTOF(data\iconCustom.paa); tooltip = ""; - onButtonClick = QUOTE([ARR_2(ctrlParent (_this select 0), _this select 0)] call FUNC(fillRightPanel)); + onButtonClick = QUOTE([ARR_2(ctrlParent (_this select 0),_this select 0)] call FUNC(fillRightPanel)); colorBackground[] = {0,0,0,0.5}; }; diff --git a/addons/artillerytables/CfgWeapons.hpp b/addons/artillerytables/CfgWeapons.hpp index 56aa257b46..f3716173f9 100644 --- a/addons/artillerytables/CfgWeapons.hpp +++ b/addons/artillerytables/CfgWeapons.hpp @@ -10,7 +10,7 @@ class CfgWeapons { picture = QPATHTOF(UI\icon_rangeTable.paa); ACE_isTool = 1; class ItemInfo: CBA_MiscItem_ItemInfo { - mass = 0.5; + mass = 0.1; }; }; }; diff --git a/addons/artillerytables/XEH_postInit.sqf b/addons/artillerytables/XEH_postInit.sqf index 6bc444d700..4f0e203208 100644 --- a/addons/artillerytables/XEH_postInit.sqf +++ b/addons/artillerytables/XEH_postInit.sqf @@ -31,6 +31,6 @@ }] call CBA_fnc_addEventHandler; #ifdef DEBUG_MODE_FULL -#include "dev\showShotInfo.sqf" -#include "dev\checkConfigs.sqf" +#include "dev\showShotInfo.inc.sqf" +#include "dev\checkConfigs.inc.sqf" #endif diff --git a/addons/artillerytables/XEH_preInit.sqf b/addons/artillerytables/XEH_preInit.sqf index 9361d05015..894773534a 100644 --- a/addons/artillerytables/XEH_preInit.sqf +++ b/addons/artillerytables/XEH_preInit.sqf @@ -6,6 +6,6 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" ADDON = true; diff --git a/addons/artillerytables/dev/checkConfigs.sqf b/addons/artillerytables/dev/checkConfigs.inc.sqf similarity index 100% rename from addons/artillerytables/dev/checkConfigs.sqf rename to addons/artillerytables/dev/checkConfigs.inc.sqf diff --git a/addons/artillerytables/dev/showShotInfo.sqf b/addons/artillerytables/dev/showShotInfo.inc.sqf similarity index 100% rename from addons/artillerytables/dev/showShotInfo.sqf rename to addons/artillerytables/dev/showShotInfo.inc.sqf diff --git a/addons/artillerytables/initSettings.sqf b/addons/artillerytables/initSettings.inc.sqf similarity index 100% rename from addons/artillerytables/initSettings.sqf rename to addons/artillerytables/initSettings.inc.sqf diff --git a/addons/artillerytables/stringtable.xml b/addons/artillerytables/stringtable.xml index 5aef75b4ed..ba5962ae52 100644 --- a/addons/artillerytables/stringtable.xml +++ b/addons/artillerytables/stringtable.xml @@ -6,9 +6,9 @@ Artillerieschusstafel 火炮射程表 火炮射表 - Tavola balistica per artigliria + Tavola balistica per artiglieria Dělostřelecké tabulky střelby - 火砲射表 + 火砲用 射表 Tabela Strzelnicza Table de tir d'artillerie Tabela de Artilharia @@ -24,7 +24,7 @@ 通用火炮射表 Tavola balistica universale per artiglieria Univerzální dělostřelecká tabulka střelby - 汎用の火砲用射程表 + 砲兵火砲用の汎用射撃表 Uniwersalna Tabela Strzelnicza Table de tir universelle pour l'artillerie. Tabela de Artilharia Universal @@ -61,8 +61,8 @@ Játékos általi lövésekhez, legyen-e számított légellenállás és szélhatás Для выстрелов игрока. Моделирует сопротивление воздуха и эффект ветра Per Proiettili dei Giocatori, simula la Resistenza dell'Aria e gli Effetti del Vento - プレイヤが射撃すると、空気抵抗モデルと風による影響を与えます。 - 플레이어 사격시 공기저항과 바람에 영향을 받습니다 + プレイヤーが射撃すると、空気抵抗モデルと風による影響を与えます。 + 플레이어가 사격 시 공기저항과 바람에 영향을 받습니다 设定由玩家射击的炮弹是否受到空气阻力与风力的影响 設定由玩家射擊的迫擊砲,將會受到空氣阻力與風力的影響 Oyuncu atışları, hava direnci ve rüzgar efektleri için @@ -72,9 +72,9 @@ Artilleriecomputer ausgeschaltet 停用火炮電腦 停用弹道计算机 - Computer artiglieria disattivato + Computer balistico disattivato Zakázat používání dělostřeleckého počítače - 砲撃コンピュータ無効化 + 砲撃コンピュータの無効化 Wyłączony Komputer Artyleryjski Désactiver l'ordinateur de tir Computador de Artilharia Desabilitado @@ -88,7 +88,7 @@ Deaktiviert die Vanilla-Artilleriecomputer 停用原本的火炮控制電腦 禁用游戏自带的弹道计算机 - Disattiva il computer artiglieria vanilla + Disattiva il computer balistico vanilla Zakázat používání dělostřeleckého počítače základní hry ゲームの砲撃コンピュータを無効化します。 Wyłącza komputer artyleryjski wprowadzony w vanili diff --git a/addons/atragmx/XEH_postInit.sqf b/addons/atragmx/XEH_postInit.sqf index 9034016212..62d45555b1 100644 --- a/addons/atragmx/XEH_postInit.sqf +++ b/addons/atragmx/XEH_postInit.sqf @@ -1,6 +1,6 @@ #include "script_component.hpp" -#include "initKeybinds.sqf" +#include "initKeybinds.inc.sqf" GVAR(active) = false; GVAR(initialised) = false; diff --git a/addons/atragmx/initKeybinds.sqf b/addons/atragmx/initKeybinds.inc.sqf similarity index 100% rename from addons/atragmx/initKeybinds.sqf rename to addons/atragmx/initKeybinds.inc.sqf diff --git a/addons/atragmx/stringtable.xml b/addons/atragmx/stringtable.xml index 04f678ec21..a7c08712aa 100644 --- a/addons/atragmx/stringtable.xml +++ b/addons/atragmx/stringtable.xml @@ -46,7 +46,7 @@ Megerősített PDA, ATragMX-el PDA s ATragMX PDA Robusto com ATragMX - ATragMX 付きの携行型端末 + ATragMX を搭載した頑丈な携帯情報端末 ATragMX가 달린 PDA 裝有軍用PDA的ATragMX 装有 ATragMX 的军用 PDA diff --git a/addons/attach/CfgVehicles.hpp b/addons/attach/CfgVehicles.hpp index 189853dcf9..7d5c611f2c 100644 --- a/addons/attach/CfgVehicles.hpp +++ b/addons/attach/CfgVehicles.hpp @@ -13,7 +13,7 @@ class GVAR(DetachVehicle) { \ displayName = CSTRING(Detach); \ condition = QUOTE(_this call FUNC(canDetach)); \ - statement = QUOTE(_this call FUNC(detach) ); \ + statement = QUOTE(_this call FUNC(detach)); \ exceptions[] = {"isNotSwimming"}; \ showDisabled = 0; \ icon = QPATHTOF(UI\detach_ca.paa); \ diff --git a/addons/attach/GUI_VirtualAmmo.hpp b/addons/attach/GUI_VirtualAmmo.hpp index c05e0e62a5..d70573fba2 100644 --- a/addons/attach/GUI_VirtualAmmo.hpp +++ b/addons/attach/GUI_VirtualAmmo.hpp @@ -5,7 +5,7 @@ class RscTitles { duration = 9999999; fadein = 0; fadeout = 0; - onLoad = QUOTE(uiNamespace setVariable [ARR_2(QQGVAR(virtualAmmoDisplay), _this select 0)]); + onLoad = QUOTE(uiNamespace setVariable [ARR_2(QQGVAR(virtualAmmoDisplay),_this select 0)]); class controls {}; class objects { class TheObject { diff --git a/addons/attach/functions/fnc_attach.sqf b/addons/attach/functions/fnc_attach.sqf index e36f2ba316..6a0c408271 100644 --- a/addons/attach/functions/fnc_attach.sqf +++ b/addons/attach/functions/fnc_attach.sqf @@ -26,10 +26,12 @@ if ((_itemClassname == "") || {(!_silentScripted) && {!(_this call FUNC(canAttac private _itemVehClass = getText (configFile >> "CfgWeapons" >> _itemClassname >> "ACE_Attachable"); private _onAttachText = getText (configFile >> "CfgWeapons" >> _itemClassname >> "displayName"); +private _itemModelOrientation = getArray (configFile >> "CfgWeapons" >> _itemClassname >> QGVAR(orientation)); if (_itemVehClass == "") then { _itemVehClass = getText (configFile >> "CfgMagazines" >> _itemClassname >> "ACE_Attachable"); _onAttachText = getText (configFile >> "CfgMagazines" >> _itemClassname >> "displayName"); + _itemModelOrientation = getArray (configFile >> "CfgWeapons" >> _itemClassname >> QGVAR(orientation)); }; if (_itemVehClass == "") exitWith {ERROR("no ACE_Attachable for Item");}; @@ -68,7 +70,7 @@ if (_unit == _attachToVehicle) then { //Self Attachment [{ params ["_args","_idPFH"]; - _args params ["_unit","_attachToVehicle","_itemClassname","_itemVehClass","_onAttachText","_actionID"]; + _args params ["_unit","_attachToVehicle","_itemClassname","_itemVehClass","_onAttachText","_actionID", "_itemModelOrientation"]; private _virtualPosASL = (eyePos _unit) vectorAdd (positionCameraToWorld [0,0,0.6]) vectorDiff (positionCameraToWorld [0,0,0]); if (cameraView == "EXTERNAL") then { @@ -95,7 +97,7 @@ if (_unit == _attachToVehicle) then { //Self Attachment (QGVAR(virtualAmmo) call BIS_fnc_rscLayer) cutText ["", "PLAIN"]; if (GVAR(placeAction) == PLACE_APPROVE) then { - [_unit, _attachToVehicle, _itemClassname, _itemVehClass, _onAttachText, _virtualPos] call FUNC(placeApprove); + [_unit, _attachToVehicle, _itemClassname, _itemVehClass, _onAttachText, _virtualPos, _itemModelOrientation] call FUNC(placeApprove); }; } else { //Show the virtual object: @@ -112,9 +114,13 @@ if (_unit == _attachToVehicle) then { //Self Attachment ((uiNamespace getVariable [QGVAR(virtualAmmoDisplay), displayNull]) displayCtrl 800851) ctrlSetPosition _screenPos; private _dir = (positionCameraToWorld [0,0,1]) vectorFromTo (positionCameraToWorld [0,0,0]); private _angle = asin (_dir select 2); - private _up = [0, cos _angle, sin _angle]; - ((uiNamespace getVariable [QGVAR(virtualAmmoDisplay), displayNull]) displayCtrl 800851) ctrlSetModelDirAndUp [[1,0,0], _up]; + + // Tranform yaw/roll angle to vector, defaults are pre-#9623 behavior + _itemModelOrientation params [["_roll", 0], ["_yaw", 90]]; + private _dirAndUp = [[[0,1,0], [0,0,1]], _yaw, 0, _roll] call BIS_fnc_transformVectorDirAndUp; + private _dirAndUp = [_dirAndUp, 0, _angle, 0] call BIS_fnc_transformVectorDirAndUp; + ((uiNamespace getVariable [QGVAR(virtualAmmoDisplay), displayNull]) displayCtrl 800851) ctrlSetModelDirAndUp _dirAndUp; }; }; - }, 0, [_unit, _attachToVehicle, _itemClassname, _itemVehClass, _onAttachText, _actionID]] call CBA_fnc_addPerFrameHandler; + }, 0, [_unit, _attachToVehicle, _itemClassname, _itemVehClass, _onAttachText, _actionID, _itemModelOrientation]] call CBA_fnc_addPerFrameHandler; }; diff --git a/addons/attach/functions/fnc_detach.sqf b/addons/attach/functions/fnc_detach.sqf index 2ae30f5663..ec87f96dd0 100644 --- a/addons/attach/functions/fnc_detach.sqf +++ b/addons/attach/functions/fnc_detach.sqf @@ -16,7 +16,7 @@ * Public: No */ -params ["_attachToVehicle","_unit"], +params ["_attachToVehicle","_unit"]; TRACE_2("params",_attachToVehicle,_unit); private _attachedList = _attachToVehicle getVariable [QGVAR(attached), []]; diff --git a/addons/attach/functions/fnc_placeApprove.sqf b/addons/attach/functions/fnc_placeApprove.sqf index b9b5466018..2f0c4d6b75 100644 --- a/addons/attach/functions/fnc_placeApprove.sqf +++ b/addons/attach/functions/fnc_placeApprove.sqf @@ -15,17 +15,18 @@ * 3: Light Vehicle Classname * 4: On Attach Text * 5: Starting Pos of dummy item + * 5: Orientation of model * * Return Value: * None * * Example: - * No + * None * * Public: No */ -params ["_unit", "_attachToVehicle", "_itemClassname", "_itemVehClass", "_onAttachText", "_startingPosition"]; +params ["_unit", "_attachToVehicle", "_itemClassname", "_itemVehClass", "_onAttachText", "_startingPosition", "_itemModelOrientation"]; TRACE_6("params",_unit,_attachToVehicle,_itemClassname,_itemVehClass,_onAttachText,_startingPosition); private _startingOffset = _attachToVehicle worldToModel _startingPosition; @@ -93,6 +94,19 @@ _endPosTestOffset set [2, (_startingOffset select 2)]; private _attachedObject = _itemVehClass createVehicle (getPos _unit); _attachedObject attachTo [_attachToVehicle, _endPosTestOffset]; +// Get wanted orientation if any is set +_itemModelOrientation params [["_roll", 0], ["_yaw", 90]]; +private _dirAndUp = [[[0,1,0],[0,0,1]], -_yaw, 0, _roll] call BIS_fnc_transformVectorDirAndUp; + +// Transform dir and up vector from player model to world, then to model-space of _attachToVehicle +private _dir = _unit vectorModelToWorldVisual _dirAndUp#0; +_dir = _attachToVehicle vectorWorldToModelVisual _dir; + +private _up = _unit vectorModelToWorldVisual _dirAndUp#1; +_up = _attachToVehicle vectorWorldToModelVisual _up; + +_attachedObject setVectorDirAndUp [_dir, _up]; + //Remove Item from inventory _unit removeItem _itemClassname; diff --git a/addons/attach/stringtable.xml b/addons/attach/stringtable.xml index f7c01c5f61..2d5671dec1 100644 --- a/addons/attach/stringtable.xml +++ b/addons/attach/stringtable.xml @@ -132,7 +132,7 @@ Chemlight hozzácsatolva Химсвет прикреплён ケミライトを取り付けました - 켐라이트 부착됨 + 화학조명 부착됨 已附掛螢光棒 已附挂荧光棒 Işık Çubuğu Bağlandı @@ -149,7 +149,7 @@ Chemlight hozzácsatolva Химсвет отсоединён ケミライトを外しました - 켐라이트 떼어냄 + 화학조명 떼어냄 已取下螢光棒 已取下荧光棒 Işık Çubuğu Söküldü @@ -182,7 +182,7 @@ La Strobo IR è una luce stroboscopica che ti permette di segnalare la tua posizione grazie all'emissione di impulsi ad infrarossi visibili solo con i visori notturni. Az infravörös jeladóval megjelölheted a helyzetedet úgy, hogy annak pulzáló fénye csak éjjellátó készülékkel látható. ИК-маяк позволяет сигнализировать о своём местоположении через пульсирующий свет, видимый только через ПНВ. - 赤外線ストロボはあなたの位置を知らせますが、夜間暗視装置を介してでしか見れません。 + 赤外線ストロボを使用すると、暗視装置を介してのみ見ることが出来る点滅表示で自分の位置を知らせることができます。 적외선 스트로브는 자신의 위치를 반짝이면서 표시합니다. 이는 야간투시경으로 밖에 보지 못합니다. 紅外線閃頻器,藉由紅外線閃頻信號來辨識你的位置,僅能使用夜視系統來辨識紅外線信號 红外频闪器制造只有用夜视仪才能看到的频闪信标,发出一个位置信号。 @@ -199,7 +199,7 @@ Posiziona Elhelyez Установить - 置く + 設置 놓기 放置 放置 @@ -250,7 +250,7 @@ %1<br/>attaccata %1<br/>hozzácsatolva %1<br/>присоединен(-а) - %1<br/>を取り付けました + %1 を<br/>取り付けました %1<br/>부착됨 %1<br/>已附掛 %1<br/>已附挂 @@ -267,7 +267,7 @@ %1<br/>staccata %1<br/>lecsatolva %1<br/>отсоединен(-а) - %1<br/>を外しました + %1 を<br/>外しました %1<br/>떼어냄 %1<br/>已取下 %1<br/>已取下 diff --git a/addons/ballistics/ACE_Arsenal_Stats.hpp b/addons/ballistics/ACE_Arsenal_Stats.hpp index c3a1de2bce..52efa9702b 100644 --- a/addons/ballistics/ACE_Arsenal_Stats.hpp +++ b/addons/ballistics/ACE_Arsenal_Stats.hpp @@ -6,7 +6,7 @@ class EGVAR(arsenal,stats) { stats[] = {"ACE_barrelTwist"}; displayName= CSTRING(statBarrelTwist); showText = 1; - textStatement = QUOTE(params [ARR_2('_stat', '_config')]; private _barrelTwist = getNumber (_config >> _stat select 0); format [ARR_3('%1mm (%2in)',_barrelTwist toFixed 0, (_barrelTwist / 25.4) toFixed 1)]); + textStatement = QUOTE(params [ARR_2('_stat','_config')]; private _barrelTwist = getNumber (_config >> _stat select 0); format [ARR_3('%1mm (%2in)',_barrelTwist toFixed 0,(_barrelTwist / 25.4) toFixed 1)]); tabs[] = {{0,1}, {}}; }; class ACE_barrelLength: statBase { @@ -15,7 +15,7 @@ class EGVAR(arsenal,stats) { stats[] = {"ACE_barrelLength"}; displayName = CSTRING(statBarrelLength); showText = 1; - textStatement = QUOTE(params [ARR_2('_stat', '_config')]; private _barrelLength = getNumber (_config >> _stat select 0); format [ARR_3('%1mm (%2in)',_barrelLength toFixed 0, (_barrelLength / 25.4) toFixed 1)]); + textStatement = QUOTE(params [ARR_2('_stat','_config')]; private _barrelLength = getNumber (_config >> _stat select 0); format [ARR_3('%1mm (%2in)',_barrelLength toFixed 0,(_barrelLength / 25.4) toFixed 1)]); tabs[] = {{0,1}, {}}; }; class ACE_ammo: statBase { @@ -25,7 +25,7 @@ class EGVAR(arsenal,stats) { displayName = "$STR_dn_ammo"; showText = 1; condition = QUOTE(getText (_this select 1 >> _this select 0 select 0) isNotEqualTo ''); - textStatement = QUOTE(params [ARR_2('_stat', '_config')]; private _ammoDisplayName = getText (configFile >> 'CfgAmmo' >> (getText (_config >> 'ammo')) >> _stat select 1); [ARR_2(_ammoDisplayName, getText (_config >> _stat select 0))] select (_ammoDisplayName == '')); + textStatement = QUOTE(params [ARR_2('_stat','_config')]; private _ammoDisplayName = getText (configFile >> 'CfgAmmo' >> (getText (_config >> 'ammo')) >> _stat select 1); [ARR_2(_ammoDisplayName,getText (_config >> _stat select 0))] select (_ammoDisplayName == '')); tabs[] = {{}, {4}}; }; class ACE_ballisticCoef: statBase { @@ -34,8 +34,8 @@ class EGVAR(arsenal,stats) { stats[] = {"ACE_dragModel","ACE_ballisticCoefficients", "ACE_standardAtmosphere"}; displayName= CSTRING(statBallisticCoef); showText= 1; - textStatement = QUOTE(params[ARR_2('_stat', '_config')]; private _ammoCfg = (configFile >> 'CfgAmmo' >> (getText (_config >> 'ammo'))); private _ballisticCoef = getArray (_ammoCfg >> _stat select 1); _ballisticCoef sort false; format [ARR_4('%1 G%2 (%3)', _ballisticCoef select 0 ,getNumber (_ammoCfg >> _stat select 0), getText (_ammoCfg >> _stat select 2))]); - condition = QUOTE(params[ARR_2('_stat', '_config')]; private _ammoCfg = (configFile >> 'CfgAmmo' >> (getText (_config >> 'ammo'))); (getArray (_ammoCfg >> _stat select 1) isNotEqualTo [])); + textStatement = QUOTE(params[ARR_2('_stat','_config')]; private _ammoCfg = (configFile >> 'CfgAmmo' >> (getText (_config >> 'ammo'))); private _ballisticCoef = getArray (_ammoCfg >> _stat select 1); _ballisticCoef sort false; format [ARR_4('%1 G%2 (%3)',_ballisticCoef select 0,getNumber (_ammoCfg >> _stat select 0),getText (_ammoCfg >> _stat select 2))]); + condition = QUOTE(params[ARR_2('_stat','_config')]; private _ammoCfg = (configFile >> 'CfgAmmo' >> (getText (_config >> 'ammo'))); (getArray (_ammoCfg >> _stat select 1) isNotEqualTo [])); tabs[] ={{}, {4}}; }; class ACE_bulletMass: statBase { @@ -44,8 +44,8 @@ class EGVAR(arsenal,stats) { stats[] = {"ACE_bulletMass"}; displayName = CSTRING(statBulletMass); showText = 1; - textStatement = QUOTE(params[ARR_2('_stat', '_config')]; private _ammoWeight = getNumber (configFile >> 'CfgAmmo' >> (getText (_config >> 'ammo')) >> _stat select 0); format [ARR_3('%1g (%2gr)', _ammoWeight toFixed 1, (_ammoWeight * 15.43) toFixed 1)]); - condition = QUOTE(params[ARR_2('_stat', '_config')]; getNumber (configFile >> 'CfgAmmo' >> (getText (_config >> 'ammo')) >> _stat select 0) > 0); + textStatement = QUOTE(params[ARR_2('_stat','_config')]; private _ammoWeight = getNumber (configFile >> 'CfgAmmo' >> (getText (_config >> 'ammo')) >> _stat select 0); format [ARR_3('%1g (%2gr)',_ammoWeight toFixed 1,(_ammoWeight * 15.43) toFixed 1)]); + condition = QUOTE(params[ARR_2('_stat','_config')]; getNumber (configFile >> 'CfgAmmo' >> (getText (_config >> 'ammo')) >> _stat select 0) > 0); tabs[] = {{}, {4}}; }; class ACE_magMuzzleVelocity: statBase { @@ -54,7 +54,7 @@ class EGVAR(arsenal,stats) { stats[] = {"initSpeed", "ammo"}; displayName= CSTRING(statMuzzleVelocity); showText= 1; - textStatement = QUOTE([ARR_2(_this select 0, _this select 1)] call FUNC(statTextStatement_magazineMuzzleVelocity)); + textStatement = QUOTE([ARR_2(_this select 0,_this select 1)] call FUNC(statTextStatement_magazineMuzzleVelocity)); condition = QUOTE(getText (_this select 1 >> _this select 0 select 1) isNotEqualTo '' && {getNumber (_this select 1 >> (_this select 0) select 0) > 0}); tabs[] = {{}, {4}}; }; @@ -64,7 +64,7 @@ class EGVAR(arsenal,stats) { stats[] = {"initSpeed"}; displayName= CSTRING(statMuzzleVelocity); showText = 1; - textStatement = QUOTE([ARR_2(_this select 0, _this select 1)] call FUNC(statTextStatement_weaponMuzzleVelocity)); + textStatement = QUOTE([ARR_2(_this select 0,_this select 1)] call FUNC(statTextStatement_weaponMuzzleVelocity)); tabs[] = {{0,1}, {}}; }; class ACE_magazineAiUsage: statBase { @@ -74,7 +74,7 @@ class EGVAR(arsenal,stats) { displayName= CSTRING(ammoUsage_ai); showText= 1; textStatement = QUOTE(call FUNC(statTextStatement_magazineAiUsage)); - condition = QUOTE(is3DEN || {!isNull getAssignedCuratorLogic player} || {missionNamespace getVariable [ARR_2(QQGVAR(showAIMagazineUse), missionName == 'Arsenal')]}); + condition = QUOTE(is3DEN || {!isNull getAssignedCuratorLogic player} || {missionNamespace getVariable [ARR_2(QQGVAR(showAIMagazineUse),missionName == 'Arsenal')]}); tabs[] = {{}, {4}}; }; }; diff --git a/addons/ballistics/functions/fnc_statTextStatement_magazineMuzzleVelocity.sqf b/addons/ballistics/functions/fnc_statTextStatement_magazineMuzzleVelocity.sqf index 04e9f4d327..701ce544f7 100644 --- a/addons/ballistics/functions/fnc_statTextStatement_magazineMuzzleVelocity.sqf +++ b/addons/ballistics/functions/fnc_statTextStatement_magazineMuzzleVelocity.sqf @@ -48,7 +48,7 @@ if (_magIsForCurrentWeapon && {["ace_advanced_ballistics"] call EFUNC(common,isM private _barrelLengthTable = getArray (_configAmmo >> "ACE_barrelLengths"); private _abShift = [_barrelLength, _muzzleVelocityTable, _barrelLengthTable, 0] call EFUNC(advanced_ballistics,calculateBarrelLengthVelocityShift); if (_abShift != 0) then { - _abAdjustText = " [AB]", + _abAdjustText = " [AB]"; _muzzleVelocity = _abShift; }; }; diff --git a/addons/ballistics/functions/fnc_statTextStatement_weaponMuzzleVelocity.sqf b/addons/ballistics/functions/fnc_statTextStatement_weaponMuzzleVelocity.sqf index 4f6bdd0412..16ab9e2a47 100644 --- a/addons/ballistics/functions/fnc_statTextStatement_weaponMuzzleVelocity.sqf +++ b/addons/ballistics/functions/fnc_statTextStatement_weaponMuzzleVelocity.sqf @@ -44,7 +44,7 @@ if (_magazine isEqualTo "") then { private _barrelLengthTable = getArray (_configAmmo >> "ACE_barrelLengths"); private _abShift = [_barrelLength, _muzzleVelocityTable, _barrelLengthTable, 0] call EFUNC(advanced_ballistics,calculateBarrelLengthVelocityShift); if (_abShift != 0) then { - _abAdjustText = " [AB]", + _abAdjustText = " [AB]"; _muzzleVelocity = _abShift; }; }; diff --git a/addons/ballistics/stringtable.xml b/addons/ballistics/stringtable.xml index 4b88d9fd5e..40385e9680 100644 --- a/addons/ballistics/stringtable.xml +++ b/addons/ballistics/stringtable.xml @@ -8,12 +8,12 @@ #00 Schrotmunition #00 鹿彈 #00 鹿弹 - #00 Buckshot + #00 Pallettoni #00 バックショット Chevrotine #00 #00 Broky velké #00 Śrut - #00 Chumbo + #00 Chumbo Grosso #00 Irisaçma #00 Картечь #00 벅샷 @@ -24,12 +24,12 @@ #00 Schrotmunition #00 鹿彈(8.38 mm) #00 鹿弹(8.38 mm) - #00 Buckshot - #00 バックショット + #00 Pallettoni + #00 バックショット - 直径 8.38 mm粒弾 Chevrotine #00 #00 Broky velké - kalibr 8.38 mm #00 Śrut - #00 Chumbo + #00 Chumbo Grosso #00 Irisaçma #00 Картечь #00 벅샷 @@ -40,12 +40,12 @@ #0 Schrotmunition #0 鹿彈 #0 鹿弹 - #0 Buckshot + #0 Pallettoni #0 バックショット Chevrotine #0 #0 Broky velké #0 Śrut - #0 Chumbo + #0 Chumbo Grosso #0 Irisaçma #0 Картечь #0 벅샷 @@ -56,12 +56,12 @@ #0 Schrotmunition #0 鹿彈 #0 鹿弹(8.1 mm) - #0 Buckshot - #0 バックショット + #0 Pallettoni + #0 バックショット - 直径 8.1 mm粒弾 Chevrotine #0 #0 Broky velké - kalibr 8.1 mm #0 Śrut - #0 Chumbo + #0 Chumbo Grosso #0 Irisaçma #0 Картечь #0 벅샷 @@ -72,12 +72,12 @@ #1 Schrotmunition #1 鹿彈 #1 鹿弹 - #1 Buckshot + #1 Pallettoni #1 バックショット Chevrotine #1 #1 Broky velké #1 Śrut - #1 Chumbo + #1 Chumbo Grosso #1 Irisaçma #1 Картечь #1 벅샷 @@ -88,12 +88,12 @@ #1 Schrotmunition #1 鹿彈 #1 鹿弹(7.6 mm) - #1 Buckshot - #1 バックショット + #1 Pallettoni + #1 バックショット - 直径 7.6 mm粒弾 Chevrotine #1 #1 Broky velké - kalibr 7.6 mm #1 Śrut - #1 Chumbo + #1 Chumbo Grosso #1 Irisaçma #1 Картечь #1 벅샷 @@ -104,12 +104,12 @@ #2 Schrotmunition #2 鹿彈 #2 鹿弹 - #2 Buckshot + #2 Pallettoni #2 バックショット Chevrotine #2 #2 Broky velké #2 Śrut - #2 Chumbo + #2 Chumbo Grosso #2 Irisaçma #2 Картечь #2 벅샷 @@ -120,12 +120,12 @@ #2 Schrotmunition #2 鹿彈 #2 鹿弹(6.9 mm) - #2 Buckshot - #2 バックショット + #2 Pallettoni + #2 バックショット - 直径 6.9 mm粒弾 Chevrotine #2 #2 Broky velké - kalibr 6.9 mm #2 Śrut - #2 Chumbo + #2 Chumbo Grosso #2 Irisaçma #2 Картечь #2 벅샷 @@ -136,12 +136,12 @@ #3 Schrotmunition #3 鹿彈 #3 鹿弹 - #3 Buckshot + #3 Pallettoni #3 バックショット Chevrotine #3 #3 Broky velké #3 Śrut - #3 Chumbo + #3 Chumbo Grosso #3 Irisaçma #3 Картечь #3 벅샷 @@ -152,12 +152,12 @@ #3 Schrotmunition #3 鹿彈 #3 鹿弹(6.4 mm) - #3 Buckshot - #3 バックショット + #3 Pallettoni + #3 バックショット - 直径 6.4 mm粒弾 Chevrotine #3 #3 Broky velké - kalibr 6.4 mm #3 Śrut - #3 Chumbo + #3 Chumbo Grosso #3 Irisaçma #3 Картечь #3 벅샷 @@ -168,12 +168,12 @@ #4 Schrotmunition #4 鹿彈 #4 鹿弹 - #4 Buckshot + #4 Pallettoni #4 バックショット Chevrotine #4 #4 Broky velké #4 Śrut - #4 Chumbo + #4 Chumbo Grosso #4 Irisaçma #4 Картечь #4 벅샷 @@ -184,12 +184,12 @@ #4 Schrotmunition #4 鹿彈 #4 鹿弹(6.10 mm) - #4 Buckshot - #4 バックショット + #4 Pallettoni + #4 バックショット - 直径 6.1 mm粒弾 Chevrotine #4 #4 Broky velké - kalibr 6.1 mm #4 Śrut - #4 Chumbo + #4 Chumbo Grosso #4 Irisaçma #4 Картечь #4 벅샷 @@ -200,14 +200,15 @@ #4 Vogelschrot #4 鳥彈 #4 鸟弹 - #4 Birdshot - #4 バックショット + #4 Pallini + #4 バードショット Grenaille No.4 #4 Broky malé #4 Śrut Drobny #4 Küçük saçma #4 Дробь #4 버드샷 + #4 Chumbo Fino #4 Birdshot @@ -215,14 +216,15 @@ #4 Vogelschrot #4 鳥彈 #4 鸟弹(3.30 mm) - #4 Birdshot - #4 バックショット + #4 Pallini + #4 バードショット - 直径 3.3 mm粒弾 Grenaille No.4 #4 Broky malé - kalibr 3.3 mm #4 Śrut Drobny (Birdshot) #4 Küçük saçma #4 Дробь #4 버드샷 + #4 Chumbo Fino 12 Gauge 2Rnd #00 Buckshot @@ -230,12 +232,12 @@ 12 Gauge 2Schuss #00 Schrotmunition 12鉛徑 2發 #00 鹿彈 12铅径 2发 #00 鹿弹 - 12 Gauge 2Rnd #00 Buckshot - 12 ゲージ 2 発入り #00 バックショット + Calibro 12 2cp #00 Pallettoni + 12 ゲージ 2Rnd #00 バックショット 2 balles cal. 12 Chevrotine #00 2x #00 Broky velké (kalibr 8.38 mm) 12 Gauge 2 naboje #00 Śrut - Chumbo #00 Calibre Doze 2 Tiros + Chumbo Grosso #00 Calibre Doze 2 Tiros 12 Калибр 2 патр. #00 Картечь 12 kalibre 2 mermi #00 İrisaçma 12 게이지 2발 #00 벅샷 @@ -246,12 +248,12 @@ 12 Gauge 2Schuss #0 Schrotmunition 12鉛徑 2發 #0 鹿彈 12铅径 2发 #0 鹿弹 - 12 Gauge 2Rnd #0 Buckshot - 12 ゲージ 2 発入り #0 バックショット + Calibro 12 2cp #0 Pallettoni + 12 ゲージ 2Rnd #0 バックショット 2 balles cal. 12 Chevrotine #0 2x #0 Broky velké (kalibr 8.1 mm) 12 Gauge 2 naboje #0 Śrut - Chumbo #0 Calibre Doze 2 Tiros + Chumbo Grosso #0 Calibre Doze 2 Tiros 12 Калибр 2 патр. #0 Картечь 12 kalibre 2 mermi #0 İrisaçma 12 게이지 2발 #00 벅샷 @@ -262,12 +264,12 @@ 12 Gauge 2Schuss #1 Schrotmunition 12鉛徑 2發 #1 鹿彈 12铅径 2发 #1 鹿弹 - 12 Gauge 2Rnd #1 Buckshot - 12 ゲージ 2 発入り #1 バックショット + Calibro 12 2cp #1 Pallettoni + 12 ゲージ 2Rnd #1 バックショット 2 balles cal. 12 Chevrotine #1 2x #1 Broky velké (kalibr 7.6 mm) 12 Gauge 2 naboje #1 Śrut - Chumbo #1 Calibre Doze 2 Tiros + Chumbo Grosso #1 Calibre Doze 2 Tiros 12 Калибр 2 патр. #1 Картечь 12 kalibre 2 mermi #1 İrisaçma 12 게이지 2발 #1 벅샷 @@ -278,12 +280,12 @@ 12 Gauge 2Schuss #2 Schrotmunition 12鉛徑 2發 #2 鹿彈 12铅径 2发 #2 鹿弹 - 12 Gauge 2Rnd #2 Buckshot - 12 ゲージ 2 発入り #2 バックショット + Calibro 12 2cp #2 Pallettoni + 12 ゲージ 2Rnd #2 バックショット 2 balles cal. 12 Chevrotine #2 2x #2 Broky velké (kalibr 6.9 mm) 12 Gauge 2 naboje #2 Śrut - Chumbo #2 Calibre Doze 2 Tiros + Chumbo Grosso #2 Calibre Doze 2 Tiros 12 Калибр 2 патр. #2 Картечь 12 kalibre 2 mermi #2 İrisaçma 12 게이지 2발 #2 벅샷 @@ -294,12 +296,12 @@ 12 Gauge 2Schuss #3 Schrotmunition 12鉛徑 2發 #3 鹿彈 12铅径 2发 #3 鹿弹 - 12 Gauge 2Rnd #3 Buckshot - 12 ゲージ 2 発入り #3 バックショット + Calibro 12 2cp #3 Pallettoni + 12 ゲージ 2Rnd #3 バックショット 2 balles cal. 12 Chevrotine #3 2x #3 Broky velké (kalibr 6.4 mm) 12 Gauge 2 naboje #3 Śrut - Chumbo #3 Calibre Doze 2 Tiros + Chumbo Grosso #3 Calibre Doze 2 Tiros 12 Калибр 2 патр. #3 Картечь 12 kalibre 2 mermi #3 İrisaçma 12 게이지 2발 #3 벅샷 @@ -310,12 +312,12 @@ 12 Gauge 2Schuss #4 Schrotmunition 12鉛徑 2發 #4 鹿彈 12铅径 2发 #4 鹿弹 - 12 Gauge 2Rnd #4 Buckshot - 12 ゲージ 2 発入り #4 バックショット + Calibro 12 2cp #4 Pallettoni + 12 ゲージ 2Rnd #4 バックショット 2 balles cal. 12 Chevrotine #4 2x #4 Broky velké (kalibr 6.1 mm) 12 Gauge 2 naboje #4 Śrut - Chumbo #4 Calibre Doze 2 Tiros + Chumbo Grosso #4 Calibre Doze 2 Tiros 12 Калибр 2 патр. #4 Картечь 12 kalibre 2 mermi #4 İrisaçma 12 게이지 2발 #4 벅샷 @@ -326,12 +328,12 @@ 12 Gauge 2Schuss #4 Schrotmunition 12鉛徑 2發 #4 鳥彈 12铅径 2发 #4 鸟弹 - 12 Gauge 2Rnd #4 Birdshot - 12 ゲージ 2 発入り #4 バックショット + Calibro 12 2cp #4 Pallini + 12 ゲージ 2Rnd #4 バードショット 2 balles cal. 12 Grenaille No.4 2x #4 Broky malé (kalibr 3.3 mm) 12 Gauge 2 naboje #4 Śrut - Chumbo #4 Calibre Doze 2 Tiros + Chumbo Fino #4 Calibre Doze 2 Tiros 12 Калибр 2 патр. #4 Дробь 12 kalibre 2 mermi #4 İrisaçma 12 게이지 2발 #4 버드샷 @@ -342,12 +344,12 @@ 12 Gauge 6Schuss #00 Schrotmunition 12鉛徑 6發 #00 鹿彈 12铅径 6发 #00 鹿弹 - 12 Gauge 6Rnd #00 Buckshot - 12 ゲージ 6 発入り #00 バックショット + Calibro 12 6cp #00 Pallettoni + 12 ゲージ 6Rnd #00 バックショット 6 balles cal. 12 Chevrotine #00 6x #00 Broky velké (kalibr 8.38 mm) 12 Gauge 6 naboi #00 Śrut - Chumbo #00 Calibre Doze 6 Tiros + Chumbo Grosso #00 Calibre Doze 6 Tiros 12 Калибр 6 патр. #00 Картечь 12 kalibre 6 mermi #00 İrisaçma 12 게이지 6발 #00 벅샷 @@ -358,12 +360,12 @@ 12 Gauge 6Schuss #0 Schrotmunition 12鉛徑 6發 #0 鹿彈 12铅径 6发 #0 鹿弹 - 12 Gauge 6Rnd #0 Buckshot - 12 ゲージ 6 発入り #0 バックショット + Calibro 12 6cp #0 Pallettoni + 12 ゲージ 6Rnd #0 バックショット 6 balles cal. 12 Chevrotine #0 6x #0 Broky velké (kalibr 8.1 mm) 12 Gauge 6 naboi #0 Śrut - Chumbo #0 Calibre Doze 6 Tiros + Chumbo Grosso #0 Calibre Doze 6 Tiros 12 Калибр 6 патр. #0 Картечь 12 kalibre 6 mermi #0 İrisaçma 12 게이지 6발 #0 벅샷 @@ -374,12 +376,12 @@ 12 Gauge 6Schuss #1 Schrotmunition 12鉛徑 6發 #1 鹿彈 12铅径 6发 #1 鹿弹 - 12 Gauge 6Rnd #1 Buckshot - 12 ゲージ 6 発入り #1 バックショット + Calibro 12 6cp #1 Pallettoni + 12 ゲージ 6Rnd #1 バックショット 6 balles cal. 12 Chevrotine #1 6x #1 Broky velké (kalibr 7.6 mm) 12 Gauge 6 naboi #1 Śrut - Chumbo #1 Calibre Doze 6 Tiros + Chumbo Grosso #1 Calibre Doze 6 Tiros 12 Калибр 6 патр. #1 Картечь 12 kalibre 6 mermi #1 İrisaçma 12 게이지 6발 #1 벅샷 @@ -390,12 +392,12 @@ 12 Gauge 6Schuss #2 Schrotmunition 12鉛徑 6發 #2 鹿彈 12铅径 6发 #2 鹿弹 - 12 Gauge 6Rnd #2 Buckshot - 12 ゲージ 6 発入り #2 バックショット + Calibro 12 6cp #2 Pallettoni + 12 ゲージ 6Rnd #2 バックショット 6 balles cal. 12 Chevrotine #2 6x #2 Broky velké (kalibr 6.9 mm) 12 Gauge 6 naboi #2 Śrut - Chumbo #2 Calibre Doze 6 Tiros + Chumbo Grosso #2 Calibre Doze 6 Tiros 12 Калибр 6 патр. #2 Картечь 12 kalibre 6 mermi #2 İrisaçma 12 게이지 6발 #2 벅샷 @@ -406,12 +408,12 @@ 12 Gauge 6Schuss #3 Schrotmunition 12鉛徑 6發 #3 鹿彈 12铅径 6发 #3 鹿弹 - 12 Gauge 6Rnd #3 Buckshot - 12 ゲージ 6 発入り #3 バックショット + Calibro 12 6cp #3 Pallettoni + 12 ゲージ 6Rnd #3 バックショット 6 balles cal. 12 Chevrotine #3 6x #3 Broky velké (kalibr 6.4 mm) 12 Gauge 6 naboi #3 Śrut - Chumbo #3 Calibre Doze 6 Tiros + Chumbo Grosso #3 Calibre Doze 6 Tiros 12 Калибр 6 патр. #3 Картечь 12 kalibre 6 mermi #3 İrisaçma 12 게이지 6발 #3 벅샷 @@ -422,12 +424,12 @@ 12 Gauge 6Schuss #4 Schrotmunition 12鉛徑 6發 #4 鹿彈 12铅径 6发 #4 鹿弹 - 12 Gauge 6Rnd #4 Buckshot - 12 ゲージ 6 発入り #4 バックショット + Calibro 12 6cp #4 Pallettoni + 12 ゲージ 6Rnd #4 バックショット 6 balles cal. 12 Chevrotine #4 6x #4 Broky velké (kalibr 6.1 mm) 12 Gauge 6 naboi #4 Śrut - Chumbo #4 Calibre Doze 6 Tiros + Chumbo Grosso #4 Calibre Doze 6 Tiros 12 Калибр 6 патр. #4 Картечь 12 kalibre 6 mermi #4 İrisaçma 12 게이지 6발 #4 벅샷 @@ -438,14 +440,15 @@ 12 Gauge 6Schuss #4 Schrotmunition 12鉛徑 6發 #4 鳥彈 12铅径 6发 #4 鸟弹 - 12 Gauge 6Rnd #4 Birdshot - 12 ゲージ 6 発入り #4 バックショット + Calibro 12 6cp #4 Pallini + 12 ゲージ 6Rnd #4 バードショット 6 balles cal. 12 Grenaille No.4 6x #4 Broky malé (kalibr 3.3 mm) 12 Gauge 6 naboi #4 Śrut 12 Калибр 6 патр. #4 Дробь 12 kalibre 6 mermi #4 İrisaçma 12 게이지 6발 #4 버드샷 + Chumbo Fino #4 Calibre Doze 6 Tiros 12 Gauge 15Rnd #00 Buckshot @@ -453,12 +456,12 @@ 12 Gauge 15Schuss #00 Schrotmunition 12鉛徑 15發 #00 鹿彈 12铅径 15发 #00 鹿弹 - 12 Gauge 15Rnd #00 Buckshot - 12 ゲージ 15 発入り #00 バックショット + Calibro 12 15cp #00 Pallettoni + 12 ゲージ 15Rnd #00 バックショット 15 balles cal. 12 Chevrotine #00 15x #00 Broky velké (kalibr 8.38 mm) 12 Gauge 15 naboi #00 Śrut - Chumbo #00 Calibre Doze 15 Tiros + Chumbo Grosso #00 Calibre Doze 15 Tiros 12 Калибр 15 патр. #00 Картечь 12 kalibre 15 mermi #00 İrisaçma 12 게이지 15발 #00 벅샷 @@ -471,11 +474,11 @@ Magazynek 6,5x47 mm 20rd (HPBT Scenar) Магазин из 20-ти 6,5x47 мм (экспансивные Scenar) 6,5x47 mm 20-Patronen-Magazin (HPBT Scenar) - 6.5x47 mm 20Rnd Mag (HPBT Scenar) + 6.5x47 mm 20cp Car (HPBT Scenar) 6.5x47 mm 20náb. Zásobník (HPBT Scenar) Carregador 6.5x47 mm com 20 cartuchos (HPBT Scenar) 6,5x47 mm 20-lövedékes tár (HPBT Scenar) - 6.5x47 mm 20発入り 弾倉 (HPBT Scenar) + 6.5x47 mm 20Rnd マガジン (HPBT Scenar) 20발 들이 6.5x47mm (HPBT Scenar) 6.5x47毫米 20發 彈匣 (拉普 空尖艇尾狙擊專用彈) 6.5x47 mm 20发 弹匣(HPBT Scenar) @@ -518,7 +521,7 @@ 6.5 mm Creedmor 20Rnd Mag Magazynek 6,5 mm Creedmor 20rd - 6.5 mm Creedmor 20Rnd Mag + 6.5 mm Creedmor 20cp Car Магазин из 20-ти 6,5 мм Creedmor 6,5 mm Creedmor 20-Patronen-Magazin Cargador de 20 balas Creedmor de 6.5 mm @@ -526,7 +529,7 @@ 6.5 mm Creedmor 20náb. Zásobník Carregador 6.5 mm com 20 cartuchos Creedmor 6,5 mm Creedmor 20-lövedékes tár - 6.5 mm Creedmor 20発入り 弾倉 + 6.5 mm クリードモア 20Rnd マガジン 20발 들이 6.5mm 크리드무어 탄창 6.5毫米 20發 彈匣 (克里德莫爾(CM) 狙擊專用彈) 6.5 mm 20发 弹匣(Creedmor) @@ -560,7 +563,7 @@ Ráže: 6.5x47 mm Creedmor<br />Nábojů: 20<br />Použití u: QBU-88 Calibre: 6.5x47 mm Creedmor<br/>Cartuchos: 20<br/>Usado em: QBU-88 Kaliber: 6,5x47 mm Creedmor<br />Lövedékek: 20<br />Használható: QBU-88 - 口径: 6.5x47 mm Creedmor<br />装填数: 20<br />次で使用: QBU-88 + 口径: 6.5x47 mm クリードモア<br />装填数: 20<br />次で使用: QBU-88 구경: 6.5x47mm 크리드무어<br/>장탄수: 20<br/>사용처: QBU-88 口徑: 6.5x47毫米 克里德莫爾 狙擊專用彈<br />發數: 20<br />使用於: QBU-88 口径:6.5x47 mm Creedmor 狙击专用弹<br />发数:20<br />使用于:QBU-88 @@ -569,7 +572,7 @@ 5.8 mm DBP88 10Rnd Mag Magazynek 5,8 mm DBP88 10rd - 5.8 mm DBP88 10Rnd Mag + 5.8 mm DBP88 10cp Car Магазин из 10-ти 5,8 мм DBP88 5,8 mm DBP88 10-Patronen-Magazin Cargador de 10 balas DBP88 de 5.8 mm @@ -577,7 +580,7 @@ 5.8 mm DBP88 10náb. Zásobník Carregador 5.8 mm com 10 cartuchos DBP88 5,8 mm DBP88 10-lövedékes tár - 5.8 mm DBP88 10発入り 弾倉 + 5.8 mm DBP88 10Rnd マガジン 10발 들이 5.8mm DBP88 탄창 5.8毫米 10發 彈匣 (DBP88) 5.8 mm 10发 弹匣(DBP88) @@ -627,9 +630,9 @@ Magazynek 6,5 mm 30rd Smugacz IR-DIM 6.5 mm 30náb. Svítící IR-DIM Zásobník Carregador de 30 projéteis traçantes IR-DIM de 6,5 mm - Caricatore 6.5 mm 30Rnd Traccianti IR-DIM + Caricatore 6.5 mm 30cp Traccianti IR-DIM Магазин из 30-ти 6,5 мм ИК-трассирующих - 6.5 mm 30発入り IR-DIM曳光弾 弾倉 + 6.5 mm 30Rnd IR-DIM トレーサー ケースレスマガジン 30발 들이 6.5mm IR-DIM 예광탄 탄창 6.5毫米 30發 低視度紅外線曳光彈 彈匣 6.5 mm 30发 弹匣(红外曳光) @@ -646,7 +649,7 @@ 6,5 mm IR-DIM 6.5 mm IR-DIM 6,5 мм ИК-трассирующие - 6.5 mm IR-DIM曳光弾 + 6.5 mm IR-DIM 6.5mm IR-DIM 예광탄 6.5毫米 低視紅外曳光彈 6.5 mm 红外曳光 @@ -661,9 +664,9 @@ Kaliber: 6,5x39 mm Smugacz IR-DIM<br />Pociski: 30<br />Używane w: MX/C/M/SW/3GL Ráže: 6.5x39 mm Svítící IR-DIM<br />Nábojů: 30<br />Použití u: MX Calibre: 6,5x39 mm Traçante IR-DIM<br />Projéteis: 30<br />Usado em: MX/C/M/SW/3GL - Calibro: 6.5x39 mm Traccianti IR-DIM <br />Munizioni: 30<br />In uso su: MX/C/M/SW/3GL + Calibro: 6.5x39 mm Tracciante IR-DIM <br />Munizioni: 30<br />In uso su: MX/C/M/SW/3GL Калибр: 6,5x39 мм ИК-трассирующие<br />Патронов: 30<br />Используются с: MX/C/M/SW/3GL - 口径: 6.5x39 mm 曳光弾 IR-DIM<br />装填数: 30<br />次で使用: MX/C/M/SW/3GL + 口径: 6.5x39 mm IR-DIM トレーサー<br />装填数: 30<br />次で使用: MX/C/M/SW/3GL 구경: 6.5x39mm IR-DIM 예광탄<br/>장탄수: 30<br/>사용처: MX/C/M/SW/3GL 口徑: 6.5x39毫米 低視度紅外線曳光彈<br />發數: 30<br />使用於: MX/C/M/SW/3GL 口径:6.5x39 mm 红外曳光<br />发数:30<br />使用于:MX/C/M/SW/3GL @@ -678,9 +681,9 @@ Magazynek 6,5 mm 30rd SD 6.5 mm 30náb. SD Zásobník Carregador de 30 projéteis SD de 6,5 mm - Caricatore 6.5 mm 30Rnd Sil. + Caricatore 6.5 mm 30cp Sil. Магазин из 30-ти 6,5 мм дозвуковых - 6.5 mm 30発入り 亜音速弾 弾倉 + 6.5 mm 30Rnd 亜音速弾 マガジン 30발 들이 6.5mm 아음속탄 탄창 6.5毫米 30發 消音彈 彈匣 6.5 mm 30发 弹匣(亚音速) @@ -697,7 +700,7 @@ 6,5 mm SD 6.5 mm Sil. 6,5 мм дозвуковые - 6.5 mm 亜音速弾 + 6.5 mm SD 6.5mm 아음속탄 6.5毫米 消音彈 6.5 mm 亚音速 @@ -729,9 +732,9 @@ Magazynek 6,5 mm 30rd AP 6.5 mm 30náb. AP Zásobník Carregador de 30 projéteis AP de 6,5 mm - Caricatore 6.5 mm 30Rnd AP + Caricatore 6.5 mm 30cp AP Магазин из 30-ти 6,5 мм бронебойных - 6.5 mm 30 発入り徹甲弾 弾倉 + 6.5 mm 30Rnd 徹甲弾 マガジン 30발 들이 6.5mm 철갑탄 탄창 6.5毫米30發 穿甲彈 彈匣 6.5 mm 30发 弹匣(穿甲) @@ -781,9 +784,9 @@ Magazynek 6,5 mm 30rd Smugacz IR-DIM 6.5 mm 30náb. Svítící IR-DIM Zásobník Carregador de 30 projéteis traçantes IR-DIM de 6,5 mm - Caricatore 6.5 mm 30Rnd Traccianti IR-DIM + Caricatore 6.5 mm 30cp Traccianti IR-DIM Магазин из 30-ти 6,5 мм ИК-трассирующих - 6.5 mm 30発入り IR-DIM曳光弾 弾倉 + 6.5 mm 30Rnd IR-DIM トレーサー マガジン 30발 들이 6.5mm IR-DIM 예광탄 탄창 6.5毫米 30發 低視度紅外線曳光彈 彈匣 6.5 mm 30发 弹匣(红外曳光) @@ -800,7 +803,7 @@ 6,5 mm IR-DIM 6.5 mm IR-DIM 6,5 мм ИК-трассирующие - 6.5 mm IR-DIM曳光弾 + 6.5 mm IR-DIM 6.5mm IR-DIM 예광탄 6.5毫米 低視紅外曳光彈 6.5 mm 红外曳光 @@ -817,7 +820,7 @@ Calibre: 6,5x39 mm Traçante IR-DIM<br />Projéteis: 30<br />Usado em: Katiba Calibro: 6.5x39 mm Tracciant IR-DIM<br />Munizioni: 30<br />In uso su: Katiba Калибр: 6,5x39 мм ИК-трассирующие<br />Патронов: 30<br />Используются с: Katiba - 口径: 6.5x39 mm IR-DIM曳光弾<br />装填数: 30<br />次で使用: Katiba + 口径: 6.5x39 mm IR-DIM トレーサー<br />装填数: 30<br />次で使用: Katiba 구경: 6.5x39mm IR-DIM 예광탄<br/>장탄수: 30<br/>사용처: KH-2002 口徑: 6.5x39毫米 低視度紅外線曳光彈<br />發數: 30<br />使用於: Katiba 口径:6.5x39 mm 红外曳光<br />发数:30<br />使用于:Katiba @@ -832,9 +835,9 @@ Magazynek 6,5 mm 30rd SD 6.5 mm 30náb. SD Zásobník Carregador de 30 projéteis SD de 6,5 mm - Caricatore 6.5 mm 30Rnd Sil. + Caricatore 6.5 mm 30cp Sil. Магазин из 30-ти 6,5 мм дозвуковых - 6.5 mm 30発入り 亜音速弾 弾倉 + 6.5 mm 30Rnd 亜音速弾 マガジン 30발 들이 6.5mm 아음속탄 탄창 6.5毫米 30發 消音彈 彈匣 6.5 mm 30发 弹匣(亚音速) @@ -851,7 +854,7 @@ 6,5 mm SD 6.5 mm Sil. 6,5 мм дозвуковые - 6.5 mm 亜音速弾 + 6.5 mm SD 6.5mm 아음속탄 6.5毫米 消音彈 6.5 mm 亚音速 @@ -883,9 +886,9 @@ Magazynek 6,5 mm 30rd AP 6.5 mm 30náb. AP Zásobník Carregador de 30 projéteis AP de 6,5 mm - Caricatore 6.5 mm 30Rnd AP + Caricatore 6.5 mm 30cp AP Магазин из 30-ти 6,5 мм бронебойных - 6.5 mm 30 発入り徹甲弾 弾倉 + 6.5 mm 30Rnd 徹甲弾 マガジン 30발 들이 6.5mm 철갑탄 탄창 6.5毫米 30發 穿甲彈 彈匣 6.5 mm 30发 弹匣(穿甲) @@ -902,7 +905,7 @@ 6,5 mm AP 6.5 mm AP 6,5 мм бронебойные - 6.5 mm 徹甲弾 + 6.5 mm AP 6.5mm 철갑탄 6.5毫米 穿甲彈 6.5 mm 穿甲 @@ -935,9 +938,9 @@ Magazynek 5,56 mm 30rd Smugacz IR-DIM 5.56 mm 30náb. Svítící IR-DIM Zásobník Carregador de 30 projéteis traçantes IR-DIM de 5,56 mm - Caricatore 5.56 mm 30rnd Traccianti IR-DIM + Caricatore 5.56 mm 30cp Traccianti IR-DIM Магазин из 30-ти 5,56 мм ИК-трассирующих - 5.56 mm 30発入り IR-DIM曳光弾 弾倉 + 5.56mm 30Rnd IR-DIM トレーサー マガジン 30발 들이 5.56mm IR-DIM 예광탄 탄창 5.56毫米 30發 低視度紅外線曳光彈 彈匣 5.56 mm 30发 弹匣(红外曳光) @@ -954,7 +957,7 @@ 5,56 mm IR-DIM 5.56 mm IR-DIM 5,56 мм ИК-трассирующие - 5.56 mm IR-DIM曳光弾 + 5.56 mm IR-DIM 5.56mm IR-DIM 예광탄 5.56毫米 低視紅外曳光彈 5.56 mm 红外曳光 @@ -969,9 +972,9 @@ Kaliber: 5,56x45 mm Smugacz IR-DIM<br />Pociski: 30<br />Używane w: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR Ráže: 5.56x45 mm Svítící IR-DIM<br />Nábojů: 30<br />Použití u: CTAR-21, TAR-21, F2000, RFB SDAR Calibre: 5,56x45 mm Traçante IR-DIM<br />Projéteis: 30<br />Usado em: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR - Calibro: 5.56x45 mm Traccianti IR-DIM<br />Munizioni: 30<br />In uso su: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR + Calibro: 5.56x45 mm Tracciante IR-DIM<br />Munizioni: 30<br />In uso su: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR Калибр: 5,56x45 мм ИК-трассирующие<br />Патронов: 30<br />Используются с: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR - 口径: 5.56x45 mm IR-DIM曳光弾<br />装填数: 30<br />次で使用: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR + 口径: 5.56x45 mm IR-DIM トレーサー<br />装填数: 30<br />次で使用: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR 구경: 5.56x45 mm IR-DIM 예광탄<br/>장탄수: 30<br/>사용처: CTAR-21, TAR-21/GTAR-21 EGLM, F2000/택티컬/EGLM, SDAR 口徑: 5.56x45毫米 低視度紅外線曳光彈<br />發數: 30<br />使用於: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR 口径:5.56x45 mm 红外曳光<br />发数:30<br />使用于:TRG-20,TRG-21/EGLM, Mk20/C/EGLM, SDAR @@ -987,9 +990,9 @@ Magazynek 7,62 mm 20rd Smugacz 7.62 mm 20náb. Svítící Zásobník Carregador de 20 projéteis traçantes de 7,62 mm - Caricatore 7.62 mm 20Rnd Traccianti + Caricatore 7.62 mm 20cp Traccianti Магазин из 20-ти 7,62 мм трассирующих - 7.62 mm 20発入り 曳光弾 + 7.62mm 20Rnd マガジン (トレーサー) 20발 들이 7.62mm 예광탄 탄창 7.62毫米 20發 曳光彈 彈匣 7.62 mm 20发 弹匣(曳光) @@ -1004,9 +1007,9 @@ 7,62 mm Smugacz 7.62 mm Svítící 7,62 mm Traçante - 7.62 mm Traccianti + 7.62 mm Tracciante 7,62 мм трассирущие - 7.62 mm 曳光弾 + 7.62 mm トレーサー 7.62mm 예광탄 7.62毫米 曳光彈 7.62 mm 曳光 @@ -1021,9 +1024,9 @@ Kaliber: 7,62x51 mm Smugacz<br />Pociski: 20<br />Używane w: Mk18 ABR Ráže: 7.62x51 mm Svítící<br />Nábojů: 20<br />Použití u: Mk14 Mod 1 EBR Calibre: 7,62x51 mm Traçante<br />Projéteis: 20<br />Usado em: Mk18 ABR - Calibro: 7.62x51 mm Traccianti<br />Munizioni: 20<br />In uso su: Mk18 ABR + Calibro: 7.62x51 mm Tracciante<br />Munizioni: 20<br />In uso su: Mk18 ABR Калибр: 7,62x51 мм трассирующие<br />Патронов: 20<br />Используются с: Mk18 ABR - 口径: 7.62x51 mm 曳光弾<br />装填数: 20<br />次で使用: Mk18 ABR + 口径: 7.62x51 mm トレーサー<br />装填数: 20<br />次で使用: Mk18 ABR 구경: 7.62x51mm 예광탄<br/>장탄수: 20<br/>사용처: Mk.14 Mod 1 EBR 口徑: 7.62x51毫米 曳光彈<br />發數: 20<br />使用於: Mk18 ABR 口径:7.62x51 mm 曳光<br />发数:20<br />使用于:Mk18 ABR @@ -1038,9 +1041,9 @@ Magazynek 7,62 mm 20rd Smugacz IR-DIM 7.62 mm 20náb. Svítící IR-DIM Zásobník Carregador de 20 projéteis IR-DIM de 7,62 mm - Caricatore 7.62 mm 20rnd Traccianti IR-DIM + Caricatore 7.62 mm 20cp Traccianti IR-DIM Магазин из 20-ти 7,62 мм ИК-трассирующих - 7.62 mm 20発入り IR-DIM曳光弾 + 7.62mm 20Rnd マガジン (IR-DIM) 20발 들이 7.62mm IR-DIM 예광탄 탄창 7.62毫米 20發 低視度紅外線曳光彈 彈匣 7.62 mm 20发 弹匣(红外曳光) @@ -1057,7 +1060,7 @@ 7,62 mm IR-DIM 7.62 mm IR-DIM 7,62 мм ИК-трассирующие - 7.62 mm IR-DIM曳光弾 + 7.62 mm IR-DIM 7.62mm IR-DIM 예광탄 7.62毫米 低視紅外曳光彈 7.62 mm 红外曳光 @@ -1074,7 +1077,7 @@ Calibre: 7,62x51 mm Traçante IR-DIM<br />Projéteis: 20<br />Usado em: Mk18 ABR Calibro: 7.62x51 mm Traccianti IR-DIM<br />Munizioni: 20<br />In uso su: Mk18 ABR Калибр: 7,62x51 мм ИК-трассирующие<br />Патронов: 20<br />Используются с: Mk18 ABR - 口径: 7.62x51 mm IR-DIM曳光弾<br />装填数: 20<br />次で使用: Mk18 ABR + 口径: 7.62x51 mm IR-DIM トレーサー<br />装填数: 20<br />次で使用: Mk18 ABR 구경: 7.62x51mm IR-DIM 예광탄<br/>장탄수: 20<br/>사용처: Mk.14 Mod 1 EBR 口徑: 7.62x51毫米 低視度紅外線曳光彈<br />發數: 20<br />使用於: Mk18 ABR 口径:7.62x51 mm 红外曳光<br />发数:20<br />使用于:Mk18 ABR @@ -1089,9 +1092,9 @@ Magazynek 7,62 mm 20rd SD 7.62 mm 20náb. SD Zásobník Carregador de 20 projéteis SD de 7,62 mm - Caricatore 7.62 mm 20Rnd Sil. + Caricatore 7.62 mm 20cp Sil. Магазин из 20-ти 7,62 мм дозвуковых - 7.62 mm 20発入り 亜音速弾 弾倉 + 7.62mm 20Rnd マガジン (亜音速弾) 20발 들이 7.62mm 아음속탄 탄창 7.62毫米 20發 消音彈 彈匣 7.62 mm 20发 弹匣(亚音速) @@ -1108,7 +1111,7 @@ 7,62 mm SD 7.62 mm Sil. 7,62 мм дозвуковые - 7.62 mm 亜音速弾 + 7.62 mm SD 7.62mm 아음속탄 7.62毫米 消音彈 7.62 mm 亚音速 @@ -1140,9 +1143,9 @@ Magazynek 7,62 mm 10rd Smugacz 7.62 mm 10náb. Svítící Zásobník Carregador de 10 projéteis traçantes de 7,62 mm - Caricatore 7.62 mm 10Rnd Traccianti + Caricatore 7.62 mm 10cp Traccianti Магазин из 10-ти 7,62 мм трассирующих - 7.62 mm 10発入り 曳光弾 + 7.62mm 10Rnd マガジン (トレーサー) 10발 들이 7.62mm 예광탄 탄창 7.62毫米 10發 曳光彈 彈匣 7.62 mm 10发 弹匣(曳光) @@ -1157,9 +1160,9 @@ 7,62 mm Smugacz 7.62 mm Svítící 7,62 mm Traçante - 7.62 mm Traccianti + 7.62 mm Tracciante 7,62 мм трассирущие - 7.62 mm 曳光弾 + 7.62 mm トレーサー 7.62mm 예광탄 7.62毫米 曳光彈 7.62 mm 曳光 @@ -1174,9 +1177,9 @@ Kaliber: 7,62x51 mm Smugacz<br />Pociski: 10<br />Używane w: Mk18 ABR Ráže: 7.62x51 mm Svítící<br />Nábojů: 10<br />Použití u: Mk14 Mod 1 EBR Calibre: 7,62x51 mm Traçante<br />Projéteis: 10<br />Usado em: Mk18 ABR - Calibro: 7.62x51 mm Traccianti<br />Munizioni: 10<br />In uso su: Mk18 ABR + Calibro: 7.62x51 mm Tracciante<br />Munizioni: 10<br />In uso su: Mk18 ABR Калибр: 7,62x51 мм трассирующие<br />Патронов: 10<br />Используются с: Mk18 ABR - 口径: 7.62x51 mm 曳光弾<br />装填数: 10<br />次で使用: Mk18 ABR + 口径: 7.62x51 mm トレーサー<br />装填数: 10<br />次で使用: Mk18 ABR 구경: 7.62x51mm 예광탄<br/>장탄수: 10<br/>사용처: Mk.14 Mod 1 EBR 口徑: 7.62x51毫米 曳光彈<br />發數: 10<br />使用於: Mk18 ABR 口径:7.62x51 mm 曳光<br />发数:10<br />使用于:Mk18 ABR @@ -1191,9 +1194,9 @@ Magazynek 7,62 mm 10rd Smugacz IR-DIM 7.62 mm 10náb. Svítící IR-DIM Zásobník Carregador de 10 projéteis IR-DIM de 7,62 mm - Caricatore 7.62 mm 10rnd Traccianti IR-DIM + Caricatore 7.62 mm 10cp Traccianti IR-DIM Магазин из 10-ти 7,62 мм ИК-трассирующих - 7.62 mm 10発入り IR-DIM曳光弾 + 7.62mm 10Rnd マガジン (IR-DIM) 10발 들이 7.62mm IR-DIM 예광탄 탄창 7.62毫米 10發 低視度紅外線曳光彈 彈匣 7.62 mm 10发 弹匣(红外曳光) @@ -1210,7 +1213,7 @@ 7,62 mm IR-DIM 7.62 mm IR-DIM 7,62 мм ИК-трассирующие - 7.62 mm IR-DIM曳光弾 + 7.62 mm IR-DIM 7.62mm IR-DIM 예광탄 7.62毫米 低視紅外曳光彈 7.62 mm 红外曳光 @@ -1225,9 +1228,9 @@ Kaliber: 7,62x51 mm Smugacz IR-DIM<br />Pociski: 10<br />Używane w: Mk18 ABR Ráže: 7.62x51 mm Svítící IR-DIM<br />Nábojů: 10<br />Použití u: Mk14 Mod 1 EBR Calibre: 7,62x51 mm Traçante IR-DIM<br />Projéteis: 10<br />Usado em: Mk18 ABR - Calibro: 7.62x51 mm Traccianti IR-DIM<br />Munizioni: 10<br />In uso su: Mk18 ABR + Calibro: 7.62x51 mm Tracciante IR-DIM<br />Munizioni: 10<br />In uso su: Mk18 ABR Калибр: 7,62x51 мм ИК-трассирующие<br />Патронов: 10<br />Используются с: Mk18 ABR - 口径: 7.62x51 mm IR-DIM曳光弾<br />装填数: 10<br />次で使用: Mk18 ABR + 口径: 7.62x51 mm IR-DIM トレーサー<br />装填数: 10<br />次で使用: Mk18 ABR 구경: 7.62x51mm IR-DIM 예광탄<br/>장탄수: 10<br/>사용처: Mk.14 Mod 1 EBR 口徑: 7.62x51毫米 低視度紅外線曳光彈<br />發數: 10<br />使用於: Mk18 ABR 口径:7.62x51 mm 红外曳光<br />发数:10<br />使用于:Mk18 ABR @@ -1242,9 +1245,9 @@ Magazynek 7,62 mm 10rd SD 7.62 mm 10náb. SD Zásobník Carregador de 10 projéteis SD de 7,62 mm - Caricatore 7.62 mm 10Rnd Sil. + Caricatore 7.62 mm 10cp Sil. Магазин из 10-ти 7,62 мм дозвуковых - 7.62 mm 10発入り 亜音速弾 弾倉 + 7.62mm 10Rnd マガジン (亜音速弾) 10발 들이 7.62mm 아음속탄 탄창 7.62毫米 10發 消音彈 彈匣 7.62 mm 10发 弹匣(亚音速) @@ -1261,7 +1264,7 @@ 7,62 mm SD 7.62 mm Sil. 7,62 мм дозвуковые - 7.62 mm 亜音速弾 + 7.62 mm SD 7.62mm 아음속탄 7.62毫米 消音彈 7.62 mm 亚音速 @@ -1292,11 +1295,11 @@ Bande .338 NM 130Cps Traçantes Cinta de 130 balas trazadoras de .338 NM Лента из 130-ти .338 NM трассирующих - .338 NM 130Rnd Tracciante Belt + .338 NM 130cp Nastro Tracciante .338 NM 130náb. Svítící Pás Cinto de munição .338 NM com 130 cartuchos .338 NM 130-lövedékes nyomkövető heveder - .338 NM 130発入り 曳光弾ベルト + .338 NM 130Rnd トレーサー ベルト 130발 들이 .338구경 노르마 매그넘 예광탄 벨트 .338 拉普麥格農(NM) 130發 曳光彈 彈鏈 .338 NM 130发 弹链(曳光) @@ -1310,10 +1313,10 @@ .338 NM Traçante .338 NM Trazadora .338 NM трассирующие - .338 NM 130Rnd Tracciante + .338 NM 130cp Traccianti .338 NM Traçante .338 NM nyomkövető - .338 NM 曳光弾 + .338 NM トレーサー .338구경 노르마 매그넘 예광탄 .338 NM 曳光彈 .338 NM 曳光 @@ -1330,7 +1333,7 @@ Ráže: .338 Norma Magnum Svítící<br />Nábojů: 130<br />Použití u: LWMMG Calibre: .338 Norma Magnum Traçante<br />Cartuchos: 130<br />Usado em: SPMG Kaliber: .338 Norma Magnum nyomkövető<br />Lövedékek: 130<br />Használható: SPMG - 口径: .338 Norma Magnum 曳光弾<br />装填数: 130<br />次で使用: SPMG + 口径: .338 Norma Magnum トレーサー<br />装填数: 130<br />次で使用: SPMG 구경: .338구경 노르마 매그넘 예광탄<br/>장탄수: 130<br/>사용처: LWMMG 口徑: .338 拉普麥格農 曳光彈<br />發數: 130<br />使用於: SPMG 口径:.338 Norma Magnum 曳光<br />发数:130<br />使用于:SPMG @@ -1343,11 +1346,11 @@ Bande .338 NM 130Cps IR-DIM Cinta de 130 balas IR-DIM de .338 NM Лента из 130-ти .338 NM ИК-трассирующих - .338 NM 130Rnd IR-DIM Belt + .338 NM 130cp Nastro IR-DIM .338 NM 130náb. IR-DIM Pás Cinto de munição traçante .338 NM IR-DIM com 130 cartuchos .338 NM 130-lövedékes infravörös nyomkövető heveder - .338 NM 130発入り IR-DIM曳光弾ベルト + .338 NM 130Rnd IR-DIM ベルト 130발 들이 .338rnrud 노르마 매그넘 IR-DIM 예광탄 벨트 .338 拉普麥格農(NM) 130發 低視度紅外線曳光彈 彈鏈 .338 NM 130发 弹链(红外曳光) @@ -1364,7 +1367,7 @@ .338 NM IR-DIM .338 NM IR-DIM .338 NM infravörös nyomkövető - .338 NM IR-DIM曳光弾 + .338 NM IR-DIM .338구경 노르마 매그넘 IR-DIM 예광탄 .338 NM 低視紅外曳光彈 .338 NM 红外曳光 @@ -1381,7 +1384,7 @@ Ráže: .338 Noma Magnum Svítící IR-DIM<br />Nábojů: 130<br />Použití u: LWMMG Calibre: .338 Norma Magnum Traçante IR-DIM<br />Cartuchos: 130<br />Usado em: SPMG Kaliber: .338 Norma Magnum infravörös nyomkövető<br />Lövedékek: 130<br />Használható: SPMG - 口径: .338 Norma Magnum IR-DIM曳光弾<br />装填数: 130<br />次で使用: SPMG + 口径: .338 Norma Magnum IR-DIM トレーサー<br />装填数: 130<br />次で使用: SPMG 구경: .338구경 노르마 매그넘 IR-DIM 예광탄<br/>장탄수: 130<br/>사용처: LWMMG 口徑: .338 拉普麥格農 低視度紅外線曳光彈<br />發數: 130<br />使用於: SPMG 口径:.338 Norma Magnum 红外曳光<br />发数:130<br />使用于:SPMG @@ -1394,11 +1397,11 @@ Bande .338 NM 130Cps AP Cinta de 130 balas AP de .338 NM Лента из 130-ти .338 NM бронебойных - .338 NM 130Rnd AP Belt + .338 NM 130cp Nastro AP .338 NM 130náb. AP Pás Cinto de munição .338 NM com 130 cartuchos AP .338 NM 130-lövedékes páncéltörő heveder - .338 NM 130発入り 徹甲弾ベルト + .338 NM 130Rnd 徹甲弾 ベルト 130발 들이 .338구경 노르마 매그넘 철갑탄 벨트 .338 拉普麥格農(NM) 130發 穿甲彈 彈鏈 .338 NM 130发 弹链(穿甲) @@ -1415,7 +1418,7 @@ .338 NM AP .338 NM AP .338 NM páncéltörő - .338 NM 徹甲弾 + .338 NM AP .338구경 노르마 매그넘 철갑탄 .338 NM 穿甲彈 .338 NM 穿甲 @@ -1446,11 +1449,11 @@ Ch. 9,3 mm 10Cps Traçantes Cargador de 10 balas trazadoras de 9.3 mm Магазин из 10-ти 9,3 мм трассирующих - 9.3 mm 10Rnd Tracer Mag + 9.3 mm 10cp Traccianti 9.3 mm 10náb. Svítící Zásobník Carregador de 10 cartuchos 9.3 mm traçantes 9,3 mm 10-lövedékes nyomkövető tár - 9.3 mm 10発入り 曳光弾 弾倉 + 9.3mm 10Rnd トレーサー マガジン 10발 들이 9.3 mm 예광탄 탄창 9.3毫米 10發 曳光彈 彈匣 9.3 mm 10发 弹匣(曳光) @@ -1464,10 +1467,10 @@ 9,3 mm Traçante 9.3 mm Trazadora 9,3 мм трассирующие - 9.3 mm Tracer + 9.3 mm Tracciante 9.3 mm Traçante 9,3 mm nyomkövető - 9.3 mm 曳光弾 + 9.3 mm トレーサー 9.3mm 예광탄 9.3毫米 曳光彈 9.3 mm 曳光 @@ -1480,11 +1483,11 @@ Calibre: 9,3x64 mm Traçante<br />Cartouches: 10<br />Utilisé avec: Cyrus Calibre: 9.3x64 mm trazadora<br />Balas: 10<br />Se usa en: Cyrus Калибр: 9,3x64 мм трассирующие<br />Патронов: 10<br />Используются с: Cyrus - Calibro: 9.3x64 mm Tracer<br />Munizioni: 10<br />In uso su: Cyrus + Calibro: 9.3x64 mm Tracciante<br />Munizioni: 10<br />In uso su: Cyrus Ráže: 9.3x64 mm Svítící<br />Nábojů: 10<br />Použití u: Cyrus Calibre: 9.3x64 mm Traçante<br />Cartuchos: 10<br />Usado em: Cyrus Kaliber: 9,3x64 mm nyomkövető<br />Lövedékek: 10<br />Használható: Cyrus - 口径: 9.3x64 mm 曳光弾<br />装填数: 10<br />次で使用: Cyrus + 口径: 9.3x64 mm トレーサー<br />装填数: 10<br />次で使用: Cyrus 구경: 9.3x64mm 예광탄<br/>장탄수: 10<br/>사용처: 사이러스 口徑: 9.3x64毫米 曳光彈<br />發數: 10<br />使用於: Cyrus 口径:9.3x64 mm 曳光<br />发数:10<br />使用于:"居鲁士" @@ -1497,11 +1500,11 @@ Ch. 9,3 mm 10Cps Traçantes IR-DIM Cargador de 10 balas trazadoras IR-DIM de 9.3 mm Магазин из 10-ти 9,3 мм ИК-трассирующих - 9.3 mm 10Rnd Tracciante IR-DIM Mag + 9.3 mm 10cp Traccianti IR-DIM 9.3 mm 10náb. Svítící IR-DIM Zásobník Carregador de 10 cartuchos 9.3 mm traçantes IR-DIM 9,3 mm 10-lövedékes infravörös nyomkövető tár - 9.3 mm 10発入り IR-DIM曳光弾 弾倉 + 9.3mm 10Rnd IR-DIM トレーサー マガジン 10발들이 9.3mm IR-DIM 예광탄 탄창 9.3毫米 10發 低視度紅外線曳光彈 彈匣 9.3 mm 10发 弹匣(红外曳光) @@ -1518,7 +1521,7 @@ 9.3 mm IR-DIM 9.3 mm IR-DIM 9,3 mm infravörös nyomkövető - 9.3 mm IR-DIM曳光弾 + 9.3 mm IR-DIM 9.3mm IR-DIM 예광탄 9.3毫米 低視紅外曳光彈 9.3 mm 红外曳光 @@ -1535,7 +1538,7 @@ Ráže: 9.3x64 mm Svítící IR-DIM<br />Nábojů: 10<br />Použití u: Cyrus Calibre: 9.3x64 mm Traçante IR-DIM<br />Cartuchos: 10<br />Usado em: Cyrus Kaliber: 9,3x64 mm infravörös nyomkövető<br />Lövedékek: 10<br /> Használható: Cyrus - 口径: 9.3x64 mm IR-DIM曳光弾<br />装填数: 10<br />次で使用: Cyrus + 口径: 9.3x64 mm IR-DIM トレーサー<br />装填数: 10<br />次で使用: Cyrus 구경: 9.3x64mm IR-DIM 예광탄<br/>장탄수: 10<br/>사용처: 사이러스 口徑: 9.3x64毫米 低視度紅外線曳光彈<br />發數: 10<br />使用於: Cyrus 口径:9.3x64 mm 红外曳光<br />发数:10<br />使用于:"居鲁士" @@ -1549,11 +1552,11 @@ Bande 9,3 mm 150Cps Traçantes Cinta de 150 balas trazadoras de 9.3 mm Лента из 150-ти 9,3 мм трассирующих - 9.3 mm 150Rnd Tracer Belt + 9.3 mm 150cp Nastro Tracciante 9.3 mm 150náb. Svítící Pás Cinto de munição traçante 9.3 mm com 150 cartuchos 9,3 mm 150-lövedékes nyomkövető heveder - 9.3 mm 150発入り 曳光弾ベルト + 9.3mm 150Rnd トレーサー ベルト 150발 들이 9.3mm 예광탄 벨트 9.3毫米 150發 曳光彈 彈鏈 9.3 mm 150发 弹链(曳光) @@ -1570,7 +1573,7 @@ 9.3 mm Tracciante 9.3 mm Traçante 9,3 mm nyomkövető - 9.3 mm 曳光弾 + 9.3 mm トレーサー 9.3mm 예광탄 9.3毫米 曳光彈 9.3 mm 曳光 @@ -1587,7 +1590,7 @@ Ráže: 9.3x64 mm Svítící<br />Nábojů: 150<br />Použití u: HK121 Calibre: 9.3x64 mm Traçante<br />Cartuchos: 150<br />Usado em: Navid Kaliber: 9,3x64 mm nyomkövető<br />Lövedékek: 150<br />Használható: Navid - 口径: 9.3x64 mm 曳光弾<br />装填数: 150<br />次で使用: Navid + 口径: 9.3x64 mm トレーサー<br />装填数: 150<br />次で使用: Navid 구경: 9.3x64mm 예광탄<br/>장탄수: 150<br/>사용처: HK121 口徑: 9.3x64m毫米 曳光彈<br />發數: 150<br />使用於: Navid 口径:9.3x64 mm 曳光<br />发数:150<br />使用于:Navid @@ -1600,11 +1603,11 @@ Bande 9,3 mm 150Cps Traçantes IR-DIM Cinta de 150 balas trazadoras IR-DIM de 9.3 mm Лента из 150-ти 9,3 мм ИК-трассирующих - 9.3 mm 150Rnd Tracciante IR-DIM Belt + 9.3 mm 150cp Nastro Tracciante IR-DIM 9.3 mm 150náb. Svítící IR-DIM Pás Cinto de munição traçante 9.3 mm IR-DIM com 150 cartuchos 9,3 mm 150-lövedékes infravörös nyomkövető heveder - 9.3 mm 150発入り IR-DIM曳光弾ベルト + 9.3mm 150Rnd IR-DIM トレーサー ベルト 150발들이 9.3mm IR-DIM 예광탄 벨트 9.3毫米 150發 低視度紅外線曳光彈 彈鏈 9.3 mm 150发 弹链(红外曳光) @@ -1621,7 +1624,7 @@ 9.3 mm IR-DIM 9.3 mm IR-DIM 9,3 mm infravörös nyomkövető - 9.3 mm IR-DIM曳光弾 + 9.3 mm IR-DIM 9.3mm IR-DIM 예광탄 9.3毫米 低視紅外曳光彈 9.3 mm 红外曳光 @@ -1638,7 +1641,7 @@ Ráže: 9.3x64 mm Svítící IR-DIM<br />Nábojů: 150<br />Použití u: HK121 Calibre: 9.3x64 mm Traçante IR-DIM<br />Cartuchos: 150<br />Usado em: Navid Kaliber: 9,3x64 mm infravörös nyomkövető<br />Lövedékek: 150<br />Használható: Navid - 口径: 9.3x64 mm IR-DIM曳光弾<br />装填数: 150<br />次で使用: Navid + 口径: 9.3x64 mm IR-DIM トレーサー<br />装填数: 150<br />次で使用: Navid 구경: 9.3x64mm IR-DIM 예광탄<br/>장탄수: 150<br/>사용처: HK121 口徑: 9.3x64毫米 低視度紅外線曳光彈<br />發數: 150<br />使用於: Navid 口径:9.3x64 mm 红外曳光<br />发数:150<br />使用于:Navid @@ -1651,11 +1654,11 @@ Bande 9,3 mm 150Cps AP Cinta de 150 balas AP de 9.3 mm Лента из 150-ти 9,3 мм бронебойных - 9.3 mm 150Rnd AP Belt + 9.3 mm 150cp Nastro AP 9.3 mm 150náb. AP Pás Cinto de munição 9.3 mm AP com 150 cartuchos 9,3 mm 150-lövedékes páncéltörő heveder - 9.3 mm 150発入り 徹甲弾ベルト + 9.3mm 150Rnd 徹甲弾 ベルト 150발들이 9.3mm 철갑탄 벨트 9.3毫米 150發 穿甲彈 彈鏈 9.3 mm 150发 弹链(穿甲) @@ -1672,7 +1675,7 @@ 9.3 mm AP 9.3 mm AP 9,3 mm páncéltörő - 9.3 mm 徹甲弾 + 9.3 mm AP 9.3mm 철갑탄 9.3毫米 穿甲彈 9.3 mm 穿甲 @@ -1702,12 +1705,12 @@ Cargador de 16 balas de 9x19 mm Магазин из 16-ти 9х19 мм 9x19 mm 20-Patronen-Magazin - 9x19 mm 16Rnd Mag + 9x19 mm 16cp Car 9x19 mm 16náb. Zásobník Carregador de 16 cartuchos 9x19 mm 9x19 mm 16-lövedékes tár - 9x19 mm 16発入り 弾倉 - 16발들이 9x19mm 탄창 + 9x19 mm 16Rnd マガジン + 17발들이 9x19mm 탄창 9x19毫米 16發 彈匣 9x19 mm 16发 弹匣 9x19 mm 16Rnd Mag @@ -1736,11 +1739,11 @@ Cargador de 16 balas de 9x19 mm Магазин из 16-ти 9х19 мм 9x19 mm 30-Patronen-Magazin - 9x19 mm 30Rnd Mag + 9x19 mm 30cp Car 9x19 mm 30náb. Zásobník Carregador de 16 cartuchos 9x19 mm 9x19 mm 16-lövedékes tár - 9x19 mm 30発入り 弾倉 + 9x19 mm 30Rnd マガジン 30발 들이 9x19mm 탄창 9x19毫米 30發 彈匣 9x19 mm 30发 弹匣 @@ -1753,11 +1756,11 @@ Cargador de 30 balas de 9x19 mm Магазин из 30-ти 9х19 мм 9x19 mm 30-Patronen-Magazin - 9x19 mm 30Rnd Mag + 9x19 mm 30cp Car 9x19 mm 30náb. Zásobník Carregador de 30 cartuchos 9x19 mm 9x19 mm 30-lövedékes tár - 9x19 mm 30発入り 弾倉 + 9x19 mm 30Rnd マガジン 30발 들이 9x19mm 탄창 9x19毫米 30發 彈匣 9x19 mm 30发 弹匣 @@ -1787,11 +1790,11 @@ Cargador de 30 balas de 9x19 mm Магазин из 30-ти 9х19 мм 9x19 mm 30-Patronen-Magazin - 9x19 mm 30Rnd Mag + 9x19 mm 30cp Car 9x19 mm 30náb. Zásobník Carregador de 30 cartuchos 9x19 mm 9x19 mm 30-lövedékes tár - 9x19 mm 30発入り 弾倉 + 9x19 mm 30Rnd マガジン 30발 들이 9x19mm 탄창 9x19毫米 30發 彈匣 9x19 mm 30发 弹匣 @@ -1802,47 +1805,47 @@ Magazynek 7,62x54 mm 10rd Smugacz Ch. 7,62x54 mm 10Cps Traçantes Cargador de 10 balas trazadoras de 7.62x54 mm - Магазин из 10-ти 7,62 мм ИК-трассирующих + Магазин из 10-ти 7,62 мм трассирующих 7,62x54 mm 10-Patronen-Magazin Leuchtspur - 7.62x54 mm 10Munizioni Traccianti IR-DIM Mag + 7.62x54 mm 10cp Traccianti 7.62x54 mm 10náb. Svítící Zásobník Carregador com 10 cartuchos 7.62x54 mm Traçante 7,62x54 mm 10-lövedékes nyomkövető tár - 7.62x54 mm 10発入り 曳光弾 弾倉 + 7.62mm 10Rnd マガジン (トレーサー) 10발 들이 7.62x54mm 예광탄 탄창 7.62x54毫米 10發 曳光彈 彈匣 7.62x54 mm 10发 弹匣(曳光) 7.62x54 mm 10Rnd Tracer Mag - 7.62 mm - 7,62 mm - 7,62 mm - 7.62 mm - 7,62 мм - 7,62 mm - 7.62 mm - 7.62 mm - 7.62 mm - 7,62 mm - 7.62 mm - 7.62mm - 7.62毫米 - 7.62 mm - 7.62 mm + Tracer + Smugacz + Traçantes + trazadoras + трассирующих + Leuchtspur + Tracciante + Svítící + Traçante + nyomkövető + トレーサー + 예광탄 + 曳光 + 曳光 + Tracer 7.62x54 mm 10Rnd Tracer Mag Magazynek 7,62x54 mm 10rd Smugacz Ch. 7,62x54 mm 10Cps Traçantes Cargador de 10 balas trazadoras de 7.62x54 mm - Магазин из 10-ти 7,62 мм ИК-трассирующих + Магазин из 10-ти 7,62 мм трассирующих 7,62x54 mm 10-Patronen-Magazin Leuchtspur - 7.62x54 mm 10Munizioni Traccianti IR-DIM Mag + 7.62x54 mm 10cp Traccianti 7.62x54 mm 10náb. Svítící Zásobník Carregador com 10 cartuchos 7.62x54 mm Traçante 7,62x54 mm 10-lövedékes nyomkövető tár - 7.62x54 mm 10発入り 曳光弾 弾倉 + 口径: 7.62x54 mm トレーサー<br />弾薬: 10<br />使用: ラヒム 10발 들이 7.62x54mm 예광탄 탄창 7.62x54毫米 10發 曳光彈 彈匣 7.62x54 mm 10发 弹匣(曳光) @@ -1855,11 +1858,11 @@ Cargador de 100 balas trazadoras IR-DIM de 6.5 mm Магазин из 100 6,5 мм ИК-трассирующих 6,5 mm 100-Patronen-Magazin IR-DIM Leuchtspur - 6.5 mm 100Munizioni Traccianti IR-DIM Mag + 6.5 mm 100cp Traccianti IR-DIM 6.5 mm 100náb. Svítící IR-DIM Zásobník Carregador com 100 cartuchos 6.5 mm IR-DIM Traçante 6,5 mm 100-lövedékes infravörös nyomkövető tár - 6.5 mm 100発入り IR-DIM曳光弾 弾倉 + 6.5mm 100Rnd IR-DIM トレーサー マガジン 100발 들이 6.5mm IR-DIM 예광탄 탄창 6.5毫米 100發 低視度紅外線曳光彈 彈匣 6.5 mm 100发 弹匣(红外曳光) @@ -1876,7 +1879,7 @@ 6.5 mm IR-DIM 6.5 mm IR-DIM 6,5 mm infravörös nyomkövető - 6.5 mm IR-DIM曳光弾 + 6.5 mm IR-DIM 6.5mm IR-DIM 예광탄 6.5毫米 低視紅外曳光彈 6.5 mm 红外曳光 @@ -1889,11 +1892,11 @@ Cargador de 100 balas trazadoras IR-DIM de 6.5 mm Магазин из 100 6,5 мм ИК-трассирующих 6,5 mm 100-Patronen-Magazin IR-DIM Leuchtspur<br />Patronen: 100<br />Eingesetzt von: MXLSW - 6.5 mm 100Rnd Tracer IR-DIM Mag<br />Munizioni: 100<br />In uso su: MX LSW + 6.5 mm 100cp Traccianti IR-DIM Car<br />Munizioni: 100<br />In uso su: MX LSW 6.5 mm 100náb. Svítící IR-DIM Zásobník<br />Nábojů: 100<br />Použití u: MX LSW Carregador 6.5 mm 100 Cartuchos Traçantes IR-DIM<br />Cartuchos: 100<br />Usado em: MX LSW 6.5 mm 100-lövedékes infravörös nyomkövető tár<br />Lövedékek: 100<br />Használható: MX LSW - 6.5 mm 100発入り IR-DIM曳光弾 弾倉<br />装填数: 100<br />次で使用: MX LSW + 6.5 mm 100Rnd IR-DIM トレーサー マガジン<br />装填数: 100<br />次で使用: MX LSW 6.5mm IR-DIM 예광탄<br/>장탄수: 100<br/>사용처: MX LSW 6.5毫米 100發 低視度紅外線曳光彈<br />發數: 100<br />使用於: MX LSW 口径:6.5 mm 100发 红外曳光<br />发数:100<br />使用于:MX LSW @@ -1906,11 +1909,11 @@ Cinta de 200 balas trazadoras IR-DIM de 6.5 mm Магазин из 200-т 6,5 мм ИК-трассирующих 6,5 mm 200-Patronen-Gurt IR-DIM Leuchtspur - 6.5 mm 200Rnd Belt Tracer (IR-DIM) + 6.5 mm 200cp Nastro Tracciante (IR-DIM) 6.5 mm 200náb. Svítící IR-DIM Pás Cinto de munição traçante 6.5 mm IR-DIM com 200 cartuchos 6,5 mm 200-lövedékes infravörös nyomkövető heveder - 6.5 mm 200発入り IR-DIM曳光弾ベルト + 6.5mm 200Rnd ベルト トレーサー(IR-DIM) 200발 들이 6.5mm IR-DIM 예광탄 탄창 6.5毫米 200發 低視度紅外線曳光彈 彈鏈 6.5 mm 200发 弹链(红外曳光) @@ -1927,7 +1930,7 @@ 6.5 mm IR-DIM 6.5 mm IR-DIM 6,5 mm infravörös nyomkövető - 6.5 mm IR-DIM曳光弾 + 6.5 mm IR-DIM 6.5mm IR-DIM 예광탄 6.5毫米 低視紅外曳光彈 6.5 mm 红外曳光 @@ -1940,11 +1943,11 @@ Cinta de 200 balas trazadoras IR-DIM de 6.5 mm Магазин из 200-т 6,5 мм ИК-трассирующих 6,5 mm 200-Patronen-Gurt IR-DIM Leuchtspur<br />Patronen: 200<br />Eingesetzt von: Stoner 99 LMG - 6.5 mm 200Rnd Belt Tracer (IR-DIM)<br />Munizioni: 200<br />In uso su: Stoner 99 LMG + 6.5 mm 200cp Nastro Tracciante (IR-DIM)<br />Munizioni: 200<br />In uso su: Stoner 99 LMG 6.5 mm 200náb. Svítící IR-DIM Pás<br />Nábojů: 200<br />Použití u: Stoner 99 LMG Cinto de munição traçante 6.5 mm IR-DIM com 200 cartuchos<br />Cartuchos: 200<br />Usado em: Stoner 99 LMG 6.5 mm 200-lövedékes infravörös nyomkövető heveder<br />Lövedékek: 200<br />Használható: Stoner 99 LMG - 6.5 mm 200発入り IR-DIM曳光弾ベルト<br />装填数: 200<br />次で使用: Stoner 99 LMG + 6.5 mm 200Rnd ベルト トレーサー (IR-DIM)<br />装填数: 200<br />次で使用: Stoner 99 LMG 200발 들이 6.5mm IR-DIM 예광탄 벨트<br/>장탄수: 200<br/>사용처: 스토너 99 LMG 6.5毫米 200發 低視度紅外線曳光彈<br />發數: 200<br />使用於: Stoner 99 重機槍 口径:6.5 mm 200发 红外曳光<br />发数:200<br />使用于:Stoner 99 LMG @@ -1957,11 +1960,11 @@ Cargador de 30 balas de 5.56 mm (Mk262) Магазин из 30-ти 5.56 мм Mk262 5,56 mm 30-Patronen-Magazin (Mk262) - 5.56 mm 30Rnd Mag (Mk262) + 5.56 mm 30cp Car (Mk262) 5.56 mm 30náb. Zásobník (Mk262) Carregador 5.56 mm com 30 cartuchos (Mk262) 5,56 mm 30-lövedékes tár (Mk262) - 5.56 mm 30発入り 弾倉 (Mk262) + 5.56mm 30Rnd マガジン (Mk262) 30발 들이 5.56mm 탄창 (Mk.262) 5.56毫米 30發 彈匣 (Mk262 狙擊專用彈) 5.56 mm 30发 弹匣(Mk262) @@ -2008,11 +2011,11 @@ Cargador de 30 balas de 5.56 mm (Mk318) Магазин из 30-ти 5.56 мм (Mk318) 5,56 mm 30-Patronen-Magazin (Mk318) - 5.56 mm 30Rnd Mag (Mk318) + 5.56 mm 30cp Car (Mk318) 5.56 mm 30Rnd Zásobník (Mk318) Carregador 5.56 mm com 30 cartuchos (Mk318) 5,56 mm 30-lövedékes tár (Mk318) - 5.56 mm 30発入り 弾倉 (Mk318) + 5.56mm 30Rnd マガジン (Mk318) 30발들이 5.56mm 탄창 (Mk.318) 5.56毫米 30發 彈匣 (Mk318 特戰專用彈) 5.56 mm 30发 弹匣(Mk318) @@ -2059,11 +2062,11 @@ Cargador de 30 balas de 5.56 mm (M995 AP) Магазин из 30-ти 5.56 мм (M995 бронебойные) 5,56 mm 30-Patronen-Magazin (M995AP) - 5.56 mm 30Rnd Mag (M995 AP) + 5.56 mm 30cp Car (M995 AP) 5.56 mm 30náb. Zásobník (M995 AP) Carregador 5.56 mm com 30 cartuchos (M995 AP) 5,56 mm 30-lövedékes tár (M995 páncéltörő) - 5.56 mm 30発入り 弾倉 (M995 徹甲弾) + 5.56mm 30Rnd マガジン (M995 徹甲弾) 30발 들이 5.56mm 탄창 (M995 철갑탄) 5.56毫米 30發 彈匣 (M995 穿甲彈) 5.56 mm 30发 弹匣(M995 穿甲) @@ -2080,7 +2083,7 @@ 5.56 mm AP 5.56 mm M995 AP 5,56 mm páncéltörő - 5.56 mm 徹甲弾 + 5.56 mm AP 5.56mm 철갑탄 5.56毫米 M995 穿甲彈 5.56 mm 穿甲 @@ -2110,11 +2113,11 @@ Cargador de 10 balas de 7.62 mm (M118LR) Магазин из 10-ти 7,62 мм (M118LR) 7,62 mm 10-Patronen-Magazin (M118LR) - 7.62 mm 10Rnd Mag (M118LR) + 7.62 mm 10cp Car (M118LR) 7.62 mm 10náb. Zásobník (M118LR) Carregador 7.62 mm com 10 cartuchos (M118LR) 7,62 mm 10-lövedékes tár (M118LR) - 7.62 mm 10発入り 弾倉 (M118LR) + 7.62mm 10Rnd マガジン (M118LR) 10발 들이 7.62mm 탄창 (M118LR) 7.62毫米 10發 彈匣 (M118LR 狙擊專用彈) 7.62 mm 10发 弹匣(M118LR) @@ -2161,11 +2164,11 @@ Cargador de 20 balas de 7.62 mm (M118LR) Магазин из 20-ти 7,62 мм (M118LR) 7,62 mm 20-Patronen-Magazin (M118LR) - 7.62 mm 20Rnd Mag (M118LR) + 7.62 mm 20cp Car (M118LR) 7.62 mm 20náb. Zásobník (M118LR) Carregador 7.62 mm com 20 cartuchos (M118LR) 7,62 mm 20-lövedékes tár (M118LR) - 7.62 mm 20発入り 弾倉 (M118LR) + 7.62mm 20Rnd マガジン (M118LR) 20발 들이 7.62mm 탄창 (M118LR) 7.62毫米 20發 彈匣 (M118LR 狙擊專用彈) 7.62 mm 20发 弹匣(M118LR) @@ -2212,11 +2215,11 @@ Cargador de 10 balas de 7.62 mm (Mk316 Mod 0) Магазин из 10-ти 7,62 мм (Mk316 Mod 0) 7,62 mm 10-Patronen-Magazin (Mk316 Mod 0) - 7.62 mm 10Rnd Mag (Mk316 Mod 0) + 7.62 mm 10cp Car (Mk316 Mod 0) 7.62 mm 10náb. Zásobník (Mk316 Mod 0) Carregador 7.62 mm com 10 cartuchos (Mk316 Mod 0) 7,62 mm 10-lövedékes tár (Mk316 Mod 0) - 7.62 mm 10発入り 弾倉 (Mk316 Mod 0) + 7.62mm 10Rnd マガジン (Mk316 Mod 0) 10발 들이 7.62mm 탄창 (Mk.316 Mod 0) 7.62毫米 10發 彈匣 (Mk316 Mod 0 狙擊專用彈) 7.62 mm 10发 弹匣(Mk316 Mod 0) @@ -2263,11 +2266,11 @@ Cargador de 20 balas de 7.62 mm (Mk316 Mod 0) Магазин из 20-ти 7,62 мм (Mk316 Mod 0) 7,62 mm 20-Patronen-Magazin (Mk316 Mod 0) - 7.62 mm 20Rnd Mag (Mk316 Mod 0) + 7.62 mm 20cp Car (Mk316 Mod 0) 7.62 mm 20náb. Zásobník (Mk316 Mod 0) Carregador 7.62 mm com 20 cartuchos (Mk316 Mod 0) 7,62 mm 20-lövedékes tár (Mk316 Mod 0) - 7.62 mm 20発入り 弾倉 (Mk316 Mod 0) + 7.62mm 20Rnd マガジン (Mk316 Mod 0) 20발 들이 7.62mm 탄창 (Mk.316 Mod 0) 7.62毫米 20發 彈匣 (Mk316 Mod 0 狙擊專用彈) 7.62 mm 20发 弹匣(Mk316 Mod 0) @@ -2314,11 +2317,11 @@ Cargador de 10 balas de 7.62 mm (Mk319 Mod 0) Магазин из 10-ти 7,62 мм (Mk319 Mod 0) 7,62 mm 10-Patronen-Magazin (Mk319 Mod 0) - 7.62 mm 10Rnd Mag (Mk319 Mod 0) + 7.62 mm 10cp Car (Mk319 Mod 0) 7.62 mm 10náb. Zásobník (Mk319 Mod 0) Carregador 7.62 mm com 10 cartuchos (Mk319 Mod 0) 7,62 mm 10-lövedékes tár (Mk319 Mod 0) - 7.62 mm 10発入り 弾倉 (Mk319 Mod 0) + 7.62mm 10Rnd マガジン (Mk319 Mod 0) 10발들이 7.62mm 탄창 (Mk.319 Mod 0) 7.62毫米 10發 彈匣 (Mk319 Mod 0 特戰專用彈) 7.62 mm 10发 弹匣(Mk319 Mod 0) @@ -2365,11 +2368,11 @@ Cargador de 20 balas de 7.62 mm (Mk319 Mod 0) Магазин из 20-ти 7,62 мм (Mk319 Mod 0) 7,62 mm 20-Patronen-Magazin (Mk319 Mod 0) - 7.62 mm 20Rnd Mag (Mk319 Mod 0) + 7.62 mm 20cp Car (Mk319 Mod 0) 7.62 mm 20náb. Zásobník (Mk319 Mod 0) Carregador 7.62 mm com 20 cartuchos (Mk319 Mod 0) 7,62 mm 20-lövedékes tár (Mk319 Mod 0) - 7.62 mm 20発入り 弾倉 (Mk319 Mod 0) + 7.62mm 20Rnd マガジン (Mk319 Mod 0) 20들이 7.62mm 탄창 (Mk.319 Mod 0) 7.62毫米 20發 彈匣 (Mk319 Mod 0 特戰專用彈) 7.62 mm 20发 弹匣(Mk319 Mod 0) @@ -2416,11 +2419,11 @@ Cargador de 10 balas de 7.62 mm (M993 AP) Магазин из 10-ти 7,62 мм (M993 бронебойные) 7,62 mm 10-Patronen-Magazin (M993 AP) - 7.62 mm 10Rnd Mag (M993 AP) + 7.62 mm 10cp Car (M993 AP) 7.62 10náb. Zásobník (M993 AP) Carregador 7.62 mm com 10 cartuchos (M993 AP) 7,62 mm 10-lövedékes tár (M993 páncéltörő) - 7.62 mm 10発入り 弾倉 (M993 徹甲弾) + 7.62mm 10Rnd マガジン (M993 徹甲弾) 10발 들이 7.62mm 탄창 (M993 철갑탄) 7.62毫米 10發 彈匣 (M993 穿甲專用彈) 7.62 mm 10发 弹匣(M993 穿甲) @@ -2437,7 +2440,7 @@ 7.62 mm AP 7.62 mm AP 7,62 mm páncéltörő - 7.62 mm 徹甲弾 + 7.62 mm AP 7.62mm 철갑탄 7.62毫米 M993 穿甲專用彈 7.62 mm M993 @@ -2467,11 +2470,11 @@ Cargador de 20 balas de 7.62 mm (M993 AP) Магазин из 20-ти 7,62 мм (M993 бронебойные) 7,62 mm 20-Patronen-Magazin (M993 AP) - 7.62 mm 20Rnd Mag (M993 AP) + 7.62 mm 20cp Car (M993 AP) 7.62 mm 20náb. Zásobník (M993 AP) Carregador 7.62 mm com 20 cartuchos (M993 AP) 7,62 mm 20-lövedékes tár (M993 páncéltörő) - 7.62 mm 20発入り 弾倉 (M993 徹甲弾) + 7.62mm 20Rnd マガジン (M993 徹甲弾) 20발 들이 7.62mm 탄창 (M993 철갑탄) 7.62毫米 20發 彈匣 (M993 穿甲專用彈) 7.62 mm 20发 弹匣(M993 穿甲) @@ -2488,7 +2491,7 @@ 7.62 mm AP 7.62 mm AP 7,62 mm páncéltörő - 7.62 mm 徹甲弾 + 7.62 mm AP 7.62mm 철갑탄 7.62毫米 M993 穿甲專用彈 7.62 mm M993 @@ -2518,11 +2521,11 @@ Cargador de 20 balas de .300 WM (Mk248 Mod 0) Магазин из 20-ти .300 WM (Mk248 Mod 0) .300 WM 20-Patronen-Magazin (Mk248 Mod 0) - .300 WM 20Rnd Mag (Mk248 Mod 0) + .300 WM 20cp Car (Mk248 Mod 0) .300 WM 20náb. Zásobník (Mk248 Mod 0) Carregador .300 WM com 20 cartuchos (Mk248 Mod 0) .300 WM 20-lövedékes tár (Mk248 Mod 0) - .300 WM 20発入り 弾倉 (Mk248 Mod 0) + .300 WM 20Rnd マガジン (Mk248 Mod 0) 20발 들이 .300구경 윈체스터 매그넘 탄창 (Mk.248 Mod 0) .300 萬能(WM) 20發 彈匣 (Mk248 Mod 0 狙擊專用彈) .300 WM 20发 弹匣(Mk248 Mod 0) @@ -2569,11 +2572,11 @@ Cargador de 20 balas de .300 WM (Mk248 Mod 1) Магазин из 20-ти .300 WM (Mk248 Mod 1) .300 WM 20-Patronen-Magazin (Mk248 Mod 1) - .300 WM 20Rnd Mag (Mk248 Mod 1) + .300 WM 20cp Car (Mk248 Mod 1) .300 WM 20náb. Zásobník (Mk248 Mod 1) Carregador .300 WM com 20 cartuchos (Mk248 Mod 1) .300 WM 20-lövedékes tár (Mk248 Mod 1) - .300 WM 20発入り 弾倉 (Mk248 Mod 1) + .300 WM 20Rnd マガジン (Mk248 Mod 1) 20발 들이 .300구경 윈체스터 매그넘 탄창 (Mk.248 Mod 1) .300 西米 20發 彈匣 (Mk248 Mod 1 狙擊專用彈) .300 WM 20发 弹匣(Mk248 Mod 1) @@ -2620,11 +2623,11 @@ Cargador de 20 balas de .300 WM (Berger Hybrid OTM) Магазин из 20-ти .300 WM (Berger Hybrid OTM) .300 WM 20-Patronen-Magazin (Berger Hybrid OTM) - .300 WM 20Rnd Mag (Berger Hybrid OTM) + .300 WM 20cp Car (Berger Hybrid OTM) .300 WM 20náb. Zásobník (Berger Hybrid OTM) Carregador .300 WM com 20 cartuchos (Berger Hybrid OTM) .300 WM 20-lövedékes tár (Berger Hybrid OTM) - .300 WM 20発入り 弾倉 (Berger Hybrid OTM) + .300 WM 20Rnd マガジン (Berger Hybrid OTM) 20발 들이 .300구경 윈체스터 매그넘 탄창 (Berger Hybrid OTM) .300 西米 20發 彈匣 (Berger Hybrid 空尖比賽專用彈) .300 WM 20发 弹匣(Berger Hybrid 空尖) @@ -2671,11 +2674,11 @@ Cargador de 10 balas de .300 WM (Mk248 Mod 0) Магазин из 10-ти .300 WM (Mk248 Mod 0) .300 WM 10-Patronen-Magazin (Mk248 Mod 0) - .300 WM 10Rnd Mag (Mk248 Mod 0) + .300 WM 10cp Car (Mk248 Mod 0) .300 WM 10náb. Zásobník (Mk248 Mod 0) Carregador .300 WM com 10 cartuchos (Mk248 Mod 0) .300 WM 10-lövedékes tár (Mk248 Mod 0) - .300 WM 10発入り 弾倉 (Mk248 Mod 0) + .300 WM 10Rnd マガジン (Mk248 Mod 0) 10발 들이 .300구경 윈체스터 매그넘 탄창 (Mk.248 Mod 0) .300 萬能(WM) 10發 彈匣 (Mk248 Mod 0 狙擊專用彈) .300 WM 10发 弹匣(Mk248 Mod 0) @@ -2722,11 +2725,11 @@ Cargador de 10 balas de .300 WM (Mk248 Mod 1) Магазин из 10-ти .300 WM (Mk248 Mod 1) .300 WM 10-Patronen-Magazin (Mk248 Mod 1) - .300 WM 10Rnd Mag (Mk248 Mod 1) + .300 WM 10cp Car (Mk248 Mod 1) .300 WM 10náb. Zásobník (Mk248 Mod 1) Carregador .300 WM com 10 cartuchos (Mk248 Mod 1) .300 WM 10-lövedékes tár (Mk248 Mod 1) - .300 WM 10発入り 弾倉 (Mk248 Mod 1) + .300 WM 10Rnd マガジン (Mk248 Mod 1) 10발 들이 .300구경 윈체스터 매그넘 탄창 (Mk.248 Mod 1) .300 西米 10發 彈匣 (Mk248 Mod 1 狙擊專用彈) .300 WM 10发 弹匣(Mk248 Mod 1) @@ -2773,11 +2776,11 @@ Cargador de 10 balas de .300 WM (Berger Hybrid OTM) Магазин из 10-ти .300 WM (Berger Hybrid OTM) .300 WM 10-Patronen-Magazin (Berger Hybrid OTM) - .300 WM 10Rnd Mag (Berger Hybrid OTM) + .300 WM 10cp Car (Berger Hybrid OTM) .300 WM 10náb. Zásobník (Berger Hybrid OTM) Carregador .300 WM com 10 cartuchos (Berger Hybrid OTM) .300 WM 10-lövedékes tár (Berger Hybrid OTM) - .300 WM 10発入り 弾倉 (Berger Hybrid OTM) + .300 WM 10Rnd マガジン (Berger Hybrid OTM) 10발 들이 .300구경 윈체스터 매그넘 탄창 (Berger Hybrid OTM) .300 西米 10發 彈匣 (Berger Hybrid 空尖比賽專用彈) .300 WM 10发 弹匣(Berger Hybrid 空尖) @@ -2819,47 +2822,55 @@ 6.5x47 mm 30Rnd Sand Mag (HPBT Scenar) - 6.5x47 mm 30発入り サンド 弾倉 (HPBT Scenar) + 6.5x47mm 30Rnd(砂色)マガジン (HPBT Scenar) Ch. 6,5x47 mm 30Cps Sable (HPBT Scenar) 6.5x47 mm 30-Patronen-Magazin Sandfarben (HPBT Scenar) + 6.5x47 mm 30cp Sabbia (HPBT Scenar) Magazynek 6.5x47 mm 30rd Piaskowy (HPBT Scenar) 6.5x47 mm 30发 沙色弹匣(HPBT Scenar) 6.5x47mm 30발 사막 탄창 (HPBT Scenar) Магазин из 30-ти 6.5x47 мм Песочный (HPBT Scenar) Cargador de 30 balas de 6.5x47mm Arena (HPBT Scenar) + Carregador 6.5x47 mm com 30 cartuchos Areia (HPBT Scenar) 6.5x47 mm 30Rnd Promet Mag (HPBT Scenar) - 6.5x47 mm 30発入り プロメット 弾倉 (HPBT Scenar) + 6.5x47 mm 30Rnd Promet マガジン (HPBT Scenar) Ch. 6,5x47 mm 30Cps Promet (HPBT Scenar) 6.5x47 mm 30-Patronen-Magazin für Promet (HPBT Scenar) + 6.5x47 mm 30cp Car Promet (HPBT Scenar) Magazynek 6.5x47 mm 30rd Promet (HPBT Scenar) 6.5x47 mm 30发 Promet 弹匣(HPBT Scenar) 6.5x47mm 30발 그롯 탄창 (HPBT Scenar) Магазин из 30-ти 6.5x47 мм Promet (HPBT Scenar) Cargador de 30 balas de 6.5x47mm Promet (HPBT Scenar) + Carregador 6.5x47 mm com 30 cartuchos Promet (HPBT Scenar) 6.5x47 mm 30Rnd Black Mag (HPBT Scenar) - 6.5x47 mm 30発入り ブラック 弾倉 (HPBT Scenar) + 6.5x47mm 30Rnd(黒)マガジン (HPBT Scenar) Ch. 6,5x47 mm 30Cps Noir (HPBT Scenar) 6.5x47 mm 30-Patronen-Magazin Schwarz (HPBT Scenar) + 6.5x47 mm 30cp Car Nero (HPBT Scenar) Magazynek 6.5x47 mm 30rd Czarny (HPBT Scenar) 6.5x47 mm 30发 黑色弹匣(HPBT Scenar) 6.5x47mm 30발 검정 탄창 (HPBT Scenar) Магазин из 30-ти 6.5x47 мм Чёрный (HPBT Scenar) Cargador de 30 balas de 6.5x47mm Negro (HPBT Scenar) + Carregador 6.5x47 mm com 30 cartuchos Preto (HPBT Scenar) 6.5x47 mm 30Rnd Khaki Mag (HPBT Scenar) - 6.5x47 mm 30発入り カーキ 弾倉 (HPBT Scenar) + 6.5x47mm 30Rnd(カーキ)マガジン (HPBT Scenar) Ch. 6,5x47 mm 30Cps Kaki (HPBT Scenar) 6.5x47 mm 30-Patronen-Magazin Khaki (HPBT Scenar) + 6.5x47 mm 30cp Car Cachi (HPBT Scenar) Magazynek 6.5x47 mm 30rd Khaki (HPBT Scenar) 6.5x47 mm 30发 卡其色弹匣(HPBT Scenar) 6.5x47mm 30발 카키 탄창 (HPBT Scenar) Магазин из 30-ти 6.5x47 мм Хаки (HPBT Scenar) Cargador de 30 balas de 6.5x47mm Caqui (HPBT Scenar) + Carregador 6.5x47 mm com 30 cartuchos Caqui (HPBT Scenar) 6.5 mm Lapua @@ -2914,47 +2925,55 @@ 6.5 mm Creedmor 30Rnd Sand Mag - 6.5 mm クリードモア 30発入り サンド 弾倉 + 6.5mm 30Rnd クリードモア(砂色)マガジン Ch. 6,5 mm Creedmor 30Cps Sable 6.5 mm Creedmor 30-Patronen-Magazin Sandfarben + 6.5 mm Creedmor 30cp Car Sabbia Magazynek 6.5 mm Creedmor 30Rnd Piaskowy 6.5 mm 30发 沙色弹匣(Creedmor) 6.5mm 크리드무어 30발 사막 탄창 Магазин из 30-ти 6.5 мм Creedmor Песочный Cargador de 30 balas de 6.5mm Creedmor Arena + Carregador 6.5 mm com 30 cartuchos Creedmor Areia 6.5 mm Creedmor 30Rnd Promet Mag - 6.5 mm クリードモア 30発入り プロメット 弾倉 + 6.5 mm 30Rnd Promet クリードモア・マガジン Ch. 6,5 mm Creedmor 30Cps Promet 6.5 mm Creedmor 30-Patronen-Magazin für Promet + 6.5 mm Creedmor 30cp Car Promet Magazynek 6.5 mm Creedmor 30Rnd Promet 6.5 mm 30发 Promet 弹匣(Creedmor) 6.5mm 크리드무어 30발 프로멧 탄창 Магазин из 30-ти 6.5 мм Creedmor Promet Cargador de 30 balas de 6.5mm Creedmor Promet + Carregador 6.5 mm com 30 cartuchos Creedmor Promet 6.5 mm Creedmor 30Rnd Black Mag - 6.5 mm クリードモア 30発入り ブラック 弾倉 + 6.5mm 30Rnd クリードモア(黒)マガジン Ch. 6,5 mm Creedmor 30Cps Noir 6.5 mm Creedmor 30-Patronen-Magazin Schwarz + 6.5 mm Creedmor 30cp Car Nero Magazynek 6.5 mm Creedmor 30Rnd Czarny 6.5 mm 30发 黑色弹匣(Creedmor) 6.5mm 크리드무어 30발 검정 탄창 Магазин из 30-ти 6.5 мм Creedmor Чёрный Cargador de 30 balas de 6.5mm Creedmor Negro + Carregador 6.5 mm com 30 cartuchos Creedmor Preto 6.5 mm Creedmor 30Rnd Khaki Mag - 6.5 mm クリードモア 30発入り カーキ 弾倉 + 6.5mm 30Rnd クリードモア(カーキ)マガジン Ch. 6,5 mm Creedmor 30Cps Kaki 6.5 mm Creedmor 30-Patronen-Magazin Khaki + 6.5 mm Creedmor 30cp Car Cachi Magazynek 6.5 mm Creedmor 30Rnd Khaki 6.5 mm 30发 卡其色弹匣(Creedmor) 6.5mm 크리드무어 30발 카키 탄창 Магазин из 30-ти 6.5 мм Creedmor Хаки Cargador de 30 balas de 6.5mm Creedmor Caqui + Carregador 6.5 mm com 30 cartuchos Creedmor Caqui 6.5 mm CM @@ -2984,7 +3003,7 @@ Ráže: 6.5x47 mm Creedmor<br />Nábojů: 30<br />Použití u: MXM Calibre: 6.5x47 mm Creedmor<br/>Cartuchos: 30<br/>Usado em: MXM Kaliber: 6,5x47 mm Creedmor<br />Lövedékek: 30<br />Használható: MXM - 口径: 6.5x47 mm Creedmor<br />装填数: 30<br />次で使用: MXM + 口径: 6.5x47 mm クリードモア<br />装填数: 30<br />次で使用: MXM 구경: 6.5x47mm 크리드무어<br/>장탄수: 30<br/>사용처: MXM 口徑: 6.5x47毫米 克里德莫爾 狙擊專用彈<br />發數: 30<br />使用於: MXM 口径:6.5x47 mm Creedmor 狙击专用弹<br />发数:30<br />使用于:MXM @@ -3001,7 +3020,7 @@ Ráže: 6.5x47 mm Creedmor<br />Nábojů: 30<br />Použití u: Promet MR Calibre: 6.5x47 mm Creedmor<br/>Cartuchos: 30<br/>Usado em: Promet MR Kaliber: 6,5x47 mm Creedmor<br />Lövedékek: 30<br />Használható: Promet MR - 口径: 6.5x47 mm Creedmor<br />装填数: 30<br />次で使用: Promet MR + 口径: 6.5x47 mm クリードモア<br />装填数: 30<br />次で使用: Promet MR 구경: 6.5x47mm 크리드무어<br/>장탄수: 30<br/>사용처: MSBS 그롯/GL/MR/SG 口徑: 6.5x47毫米 克里德莫爾 狙擊專用彈<br />發數: 30<br />使用於: Promet MR 口径:6.5x47 mm Creedmor 狙击专用弹<br />发数:30<br />使用于:Promet MR @@ -3014,11 +3033,11 @@ Magazynek .338 LM 10rd (300gr Lapua Scenar) Магазин из 10-ти .338 LM (300 гран Lapua Scenar) .338 LM 10-Patronen-Magazin (300gr Lapua Scenar) - .338 LM 10Munizioni Mag (300gr Lapua Scenar) + .338 LM 10cp Car (300gr Lapua Scenar) .338 LM 10náb. Zásobník (300gr Lapua Scenar) Carregador .338 LM (300gr Lapua Scenar) com 10 cartuchos .338 LM 10-lövedékes tár (300gr Lapua Scenar) - .338 LM 10発入り 弾倉 (300gr Lapua Scenar) + .338 LM 10Rnd マガジン (300gr Lapua Scenar) 10발 들이 .338구경 라푸아 매그넘 탄창 (300그레인 Scenar) .338 10發 彈匣 (300公克 Lapua Scenar) .338 LM 10发 弹匣(300gr Lapua Scenar) @@ -3065,11 +3084,11 @@ Magazynek .338 LM 10rd (API526) Магазин из 10-ти .338 LM (API526) .338 LM 10-Patronen-Magazin (API526) - .338 LM 10Rnd Mag (API526) + .338 LM 10cp Car (API526) .338 LM 10náb. Zásobník (API526) Carregador .338 LM (API526) com 10 cartuchos .338 LM 10-lövedékes tár (API526) - .338 LM 10発入り 弾倉 (API526) + .338 LM 10Rnd マガジン (API526) 10발 들이 .338구경 라푸아 매그넘 탄창 (API526) .338 10發 彈匣 (API526 穿甲燃燒彈) .338 LM 10发 弹匣(API526 穿燃) @@ -3086,7 +3105,7 @@ .338 AP .338 AP .338 páncéltörő - .338 徹甲弾 + .338 AP .338구경 라푸아 매그넘 철갑탄 .338 API526 穿甲燃燒彈 .338 穿燃 @@ -3116,11 +3135,11 @@ Magazynek .408 7rd (305gr) Магазин из 7-ти .408 (305gr) .408 7-Patronen-Magazin (305gr) - .408 7Rnd Mag (305gr) + .408 7cp Car (305gr) .408 7náb. Zásobník (305gr) Carregador .408 (305gr) com 7 cartuchos .408 7-lövedékes tár (305gr) - .408 7発入り 弾倉 (305gr) + .408 7Rnd マガジン (305gr) 7발 들이 .408구경 샤이택 탄창 (305그레인) .408 7發 彈匣 (305公克) .408 7发 弹匣(305gr) @@ -3167,11 +3186,11 @@ Magazynek 12,7x99 mm 5rd Магазин из 5-ти 12,7x99 мм 12,7x99 mm 5-Patronen-Magazin - 12.7x99 mm 5Rnd Mag + 12.7x99 mm 5cp Car 12.7x99 mm 5náb. Zásobník Carregador 12.7x99 mm com 5 cartuchos 12,7x99 mm 5-lövedékes tár - 12.7x99 mm 5発入り 弾倉 + 12.7x99mm 5Rnd マガジン 5발 들이 12.7x99mm 탄창 12.7x99毫米 5發 彈匣 12.7x99 mm 5发 弹匣 @@ -3201,11 +3220,11 @@ Magazynek 12,7x99 mm 10rd Магазин из 10-ти 12,7x99 мм 12,7x99 mm 10-Patronen-Magazin - 12.7x99 mm 10Rnd Mag + 12.7x99 mm 10cp Car 12.7x99 mm 10náb. Zásobník Carregador 12.7x99 mm com 10 cartuchos 12,7x99 mm 10-lövedékes tár - 12.7x99 mm 10発入り 弾倉 + 12.7x99mm 10Rnd マガジン 10발 들이 12.7x99mm 탄창 12.7x99毫米 10發 彈匣 12.7x99 mm 10发 弹匣 @@ -3250,13 +3269,13 @@ Ch. 12,7x99 mm API 5Cps Cargador de 5 balas de 12.7x99 mm API Magazynek 12,7x99 mm API 5rd - 12.7x99 mm API 5Rnd Mag + 12.7x99 mm API 5cp Car Магазин из 5-ти 12,7x99 мм (бронебойно-зажигательные) 12,7x99 mm 5-Patronen-Magazin (API) 12.7x99 mm API 5náb. Zásobník Carregador 12.7x99 mm API com 5 cartuchos 12,7x99 mm 5-lövedékes tár (páncéltörő-gyújtó) - 12.7x99 mm 5発入り焼夷徹甲弾 弾倉 + 12.7x99mm 5Rnd 焼夷徹甲弾 マガジン 5발 들이 12.7x99mm 철갑소이탄 탄창 12.7x99毫米 穿甲燃燒彈 5發 彈匣 12.7x99 mm 穿燃 5发 弹匣 @@ -3284,13 +3303,13 @@ Ch. 12,7x99 mm API 10Cps Cargador de 10 balas de 12.7x99 mm API Magazynek 12,7x99 mm API 10rd - 12.7x99 mm API 10Rnd Mag + 12.7x99 mm API 10cp Car Магазин из 10-ти 12,7x99 мм (бронебойно-зажигательные) 12,7x99 mm 10-Patronen-Magazin (API) 12.7x99 mm API 10náb. Zásobník Carregador 12.7x99 mm API com 10 cartuchos 12,7x99 mm 10-lövedékes tár (páncéltörő-gyújtó) - 12.7x99 mm 10発入り焼夷徹甲弾 弾倉 + 12.7x99mm 10Rnd 焼夷徹甲弾 マガジン 10발 들이 12.7x99mm 철갑소이탄 탄창 12.7x99毫米 穿甲燃燒彈 10發 彈匣 12.7x99 mm 穿燃 10发 弹匣 @@ -3320,11 +3339,11 @@ Magazynek 12,7x99 mm 5rd (AMAX) Магазин из 5-ти 12,7x99 мм (A-MAX) 12,7x99 mm 5-Patronen-Magazin (AMAX) - 12.7x99 mm 5Rnd Mag (AMAX) + 12.7x99 mm 5cp Car (AMAX) 12.7x99 mm 5náb. Zásobník (AMAX) Carregador 12.7x99 mm (AMAX) com 5 cartuchos 12,7x99 mm 5-lövedékes tár (AMAX) - 12.7x99 mm 5発入り 弾倉 (AMAX) + 12.7x99mm 5Rnd マガジン (AMAX) 5발들이 12.7x99mm 탄창 (AMAX) 12.7x99毫米 5發 彈匣 (AMAX 比賽專用彈) 12.7x99 mm 5发 弹匣(AMAX) @@ -3354,11 +3373,11 @@ Magazynek 12,7x99 mm 10rd (AMAX) Магазин из 10-ти 12,7x99 мм (A-MAX) 12,7x99 mm 10-Patronen-Magazin (AMAX) - 12.7x99 mm 10Rnd Mag (AMAX) + 12.7x99 mm 10cp Car (AMAX) 12.7x99 mm 10náb. Zásobník (AMAX) Carregador 12.7x99 mm (AMAX) com 10 cartuchos 12,7x99 mm 10-lövedékes tár (AMAX) - 12.7x99 mm 10発入り 弾倉 (AMAX) + 12.7x99mm 10Rnd マガジン (AMAX) 10발들이 12.7x99mm 탄창 (AMAX) 12.7x99毫米 10發 彈匣 (AMAX 比賽專用彈) 12.7x99 mm 10发 弹匣(AMAX) @@ -3382,21 +3401,21 @@ Kalibre: 12.7x99 mm (AMAX)<br />Mermi: 10 - 12.7 mm - 12,7 mm - 12.7 mm - 12,7 mm - 12,7 мм - 12,7 mm - 12.7 mm - 12.7 mm - 12.7 mm - 12,7 mm - 12.7 mm - 12.7mm + 12.7 mm AMAX + 12,7 mm AMAX + 12.7 mm AMAX + 12,7 mm AMAX + 12,7 мм AMAX + 12,7 mm AMAX + 12.7 mm AMAX + 12.7 mm AMAX + 12.7 mm AMAX + 12,7 mm AMAX + 12.7 mm AMAX + 12.7mm AMAX 12.7毫米 AMAX 比賽專用彈 - 12.7 mm - 12.7 mm + 12.7 mm AMAX + 12.7 mm AMAX 12.7 mm API @@ -3409,7 +3428,7 @@ 12.7 mm API 12.7 mm API 12,7 mm páncéltörő-gyújtó - 12.7 mm 焼夷徹甲弾 + 12.7 mm API 12.7mm 철갑소이탄 12.7毫米 穿甲燃燒彈 12.7 mm 穿燃 @@ -3425,7 +3444,7 @@ [ACE] Caisse de munitions [ACE] Lőszeres láda [ACE] Ящик с боеприпасами - [ACE] Cassa munizioni + [ACE] Cassa Munizioni [ACE] 弾薬物資箱 [ACE] 탄약 보급상자 [ACE] 彈藥補給箱 @@ -3435,7 +3454,7 @@ Barrel twist Dralllänge - 銃身の転度 + 銃身転度 膛线缠距 膛線扭度 Rigatura della canna @@ -3470,7 +3489,7 @@ 弾道係数 弹道系数 彈道係數 - Coefficente balistico + Coefficiente balistico Współczynnik balistyczny Баллистический коэффициент Coeficiente balístico @@ -3502,7 +3521,7 @@ 銃口初速 枪口初速 槍口初速 - Velocità iniziale + Velocità alla volata Prędkość wylotowa Начальная скорость Velocidade de Saída @@ -3516,49 +3535,70 @@ AIの使用 Wykorzystanie przez AI KI Verwendet + Utilizzo IA 인공지능 사용 + Utilisation de l'IA + Utilização por IA Illum 照明弾 Flary Leuchtmittel + Illuminante 조명탄 + Fusées éclairantes + Sinalizadoras Smoke 発煙弾 Granaty dymne Rauch + Fumogeno 연막탄 + Fumigènes + Fumígenas Inf 歩兵 Piechota Infanterie + Fanti 보병 + Infanterie + Infantaria Veh 車両 Pojazdy Fahrzeug + Veicoli 차량 + Véhicule + Veículo Armor 機甲 Pojazdy opancerzone Panzerung + Blidati 기갑 + Blindage + Blindagem Air 航空 Lotnictwo Luft + Velivoli 항공 + Aviation + Aeronaves diff --git a/addons/captives/CfgVehicles.hpp b/addons/captives/CfgVehicles.hpp index 831ee0dff8..ca1194e614 100644 --- a/addons/captives/CfgVehicles.hpp +++ b/addons/captives/CfgVehicles.hpp @@ -6,8 +6,8 @@ class CfgVehicles { displayName = CSTRING(SetCaptive); selection = "righthand"; distance = HANDCUFFS_DISTANCE; - condition = QUOTE([ARR_2(_player, _target)] call FUNC(canApplyHandcuffs)); - statement = QUOTE([ARR_2(_player, _target)] call FUNC(doApplyHandcuffs)); + condition = QUOTE([ARR_2(_player,_target)] call FUNC(canApplyHandcuffs)); + statement = QUOTE([ARR_2(_player,_target)] call FUNC(doApplyHandcuffs)); exceptions[] = {"isNotSwimming", "isNotInside"}; icon = QPATHTOF(UI\handcuff_ca.paa); }; @@ -17,16 +17,16 @@ class CfgVehicles { displayName = CSTRING(ReleaseCaptive); selection = "righthand"; distance = HANDCUFFS_DISTANCE; - condition = QUOTE([ARR_2(_player, _target)] call FUNC(canRemoveHandcuffs)); - statement = QUOTE([ARR_2(_player, _target)] call FUNC(doRemoveHandcuffs)); + condition = QUOTE([ARR_2(_player,_target)] call FUNC(canRemoveHandcuffs)); + statement = QUOTE([ARR_2(_player,_target)] call FUNC(doRemoveHandcuffs)); exceptions[] = {"isNotSwimming", "isNotInside"}; icon = QPATHTOF(UI\handcuff_ca.paa); }; class ACE_EscortCaptive { displayName = CSTRING(EscortCaptive); distance = 4; - condition = QUOTE([ARR_2(_player, _target)] call FUNC(canEscortCaptive)); - statement = QUOTE([ARR_3(_player, _target, true)] call FUNC(doEscortCaptive)); + condition = QUOTE([ARR_2(_player,_target)] call FUNC(canEscortCaptive)); + statement = QUOTE([ARR_3(_player,_target,true)] call FUNC(doEscortCaptive)); exceptions[] = {"isNotSwimming"}; showDisabled = 0; icon = QPATHTOF(UI\captive_ca.paa); @@ -34,8 +34,8 @@ class CfgVehicles { class ACE_StopEscorting { displayName = CSTRING(StopEscorting); distance = 4; - condition = QUOTE([ARR_2(_player, _target)] call FUNC(canStopEscorting)); - statement = QUOTE([ARR_3(_player,_target, false)] call FUNC(doEscortCaptive)); + condition = QUOTE([ARR_2(_player,_target)] call FUNC(canStopEscorting)); + statement = QUOTE([ARR_3(_player,_target,false)] call FUNC(doEscortCaptive)); exceptions[] = {"isNotEscorting", "isNotSwimming"}; showDisabled = 0; icon = QPATHTOF(UI\captive_ca.paa); @@ -43,8 +43,8 @@ class CfgVehicles { class ACE_LoadCaptive { displayName = CSTRING(LoadCaptive); distance = 4; - condition = QUOTE([ARR_3(_player, _target, objNull)] call FUNC(canLoadCaptive)); - statement = QUOTE([ARR_3(_player, _target, objNull)] call FUNC(doLoadCaptive)); + condition = QUOTE([ARR_3(_player,_target,objNull)] call FUNC(canLoadCaptive)); + statement = QUOTE([ARR_3(_player,_target,objNull)] call FUNC(doLoadCaptive)); exceptions[] = {"isNotEscorting", "isNotSwimming"}; showDisabled = 0; icon = QPATHTOF(UI\captive_ca.paa); @@ -53,23 +53,23 @@ class CfgVehicles { class GVAR(UnloadCaptive) { displayName = CSTRING(UnloadCaptive); distance = 4; - condition = QUOTE([ARR_2(_player, _target)] call FUNC(canUnloadCaptive)); - statement = QUOTE([ARR_2(_player, _target)] call FUNC(doUnloadCaptive)); + condition = QUOTE([ARR_2(_player,_target)] call FUNC(canUnloadCaptive)); + statement = QUOTE([ARR_2(_player,_target)] call FUNC(doUnloadCaptive)); exceptions[] = {"isNotSwimming"}; }; class GVAR(BlindfoldCaptive) { displayName = CSTRING(BlindfoldCaptive); distance = 4; - condition = QUOTE([ARR_2(_player, _target)] call FUNC(canBlindfoldCaptive)); - statement = QUOTE([ARR_3(_player, _target, true)] call FUNC(doBlindfoldCaptive)); + condition = QUOTE([ARR_2(_player,_target)] call FUNC(canBlindfoldCaptive)); + statement = QUOTE([ARR_3(_player,_target,true)] call FUNC(doBlindfoldCaptive)); exceptions[] = {"isNotSwimming"}; showDisabled = 0; }; class GVAR(RemoveBlindfoldCaptive) { displayName = CSTRING(RemoveBlindfoldCaptive); distance = 4; - condition = QUOTE([ARR_2(_player, _target)] call FUNC(canRemoveBlindfoldCaptive)); - statement = QUOTE([ARR_3(_player, _target, false)] call FUNC(doBlindfoldCaptive)); + condition = QUOTE([ARR_2(_player,_target)] call FUNC(canRemoveBlindfoldCaptive)); + statement = QUOTE([ARR_3(_player,_target,false)] call FUNC(doBlindfoldCaptive)); exceptions[] = {"isNotSwimming"}; showDisabled = 0; }; @@ -79,23 +79,23 @@ class CfgVehicles { class ACE_SelfActions { class ACE_StopEscortingSelf { displayName = CSTRING(StopEscorting); - condition = QUOTE([ARR_2(_player, objNull)] call FUNC(canStopEscorting)); - statement = QUOTE([ARR_3(_player,objNull, false)] call FUNC(doEscortCaptive)); + condition = QUOTE([ARR_2(_player,objNull)] call FUNC(canStopEscorting)); + statement = QUOTE([ARR_3(_player,objNull,false)] call FUNC(doEscortCaptive)); exceptions[] = {"isNotEscorting", "isNotSwimming"}; showDisabled = 0; }; class ACE_StartSurrenderingSelf { displayName = CSTRING(StartSurrendering); - condition = QUOTE([ARR_2(_player, true)] call FUNC(canSurrender)); - statement = QUOTE([ARR_2(_player, true)] call FUNC(setSurrendered)); + condition = QUOTE([ARR_2(_player,true)] call FUNC(canSurrender)); + statement = QUOTE([ARR_2(_player,true)] call FUNC(setSurrendered)); exceptions[] = {"isNotSwimming"}; showDisabled = 0; icon = QPATHTOF(UI\Surrender_ca.paa); }; class ACE_StopSurrenderingSelf { displayName = CSTRING(StopSurrendering); - condition = QUOTE([ARR_2(_player, false)] call FUNC(canSurrender)); - statement = QUOTE([ARR_2(_player, false)] call FUNC(setSurrendered)); + condition = QUOTE([ARR_2(_player,false)] call FUNC(canSurrender)); + statement = QUOTE([ARR_2(_player,false)] call FUNC(setSurrendered)); exceptions[] = {"isNotSurrendering", "isNotSwimming"}; showDisabled = 0; icon = QPATHTOF(UI\Surrender_ca.paa); @@ -109,8 +109,8 @@ class CfgVehicles { class GVAR(LoadCaptive) { \ displayName = CSTRING(LoadCaptive); \ distance = 4; \ - condition = QUOTE([ARR_3(_player, objNull, _target)] call FUNC(canLoadCaptive)); \ - statement = QUOTE([ARR_3(_player, objNull, _target)] call FUNC(doLoadCaptive)); \ + condition = QUOTE([ARR_3(_player,objNull,_target)] call FUNC(canLoadCaptive)); \ + statement = QUOTE([ARR_3(_player,objNull,_target)] call FUNC(doLoadCaptive)); \ exceptions[] = {"isNotEscorting", "isNotSwimming"}; \ }; \ }; \ diff --git a/addons/captives/CfgWeapons.hpp b/addons/captives/CfgWeapons.hpp index 23c7d0c2ce..ce3c989ee5 100644 --- a/addons/captives/CfgWeapons.hpp +++ b/addons/captives/CfgWeapons.hpp @@ -11,7 +11,7 @@ class CfgWeapons { picture = QPATHTOF(UI\ace_cabletie_ca.paa); scope = 2; class ItemInfo: CBA_MiscItem_ItemInfo { - mass = 1; + mass = 0.3; }; }; }; diff --git a/addons/captives/XEH_preInit.sqf b/addons/captives/XEH_preInit.sqf index 09ea454f03..8104e55b39 100644 --- a/addons/captives/XEH_preInit.sqf +++ b/addons/captives/XEH_preInit.sqf @@ -11,6 +11,6 @@ GVAR(captivityEnabled) = false; GVAR(restraints) = keys (uiNamespace getVariable QGVAR(restraints)); GVAR(blindfolds) = keys (uiNamespace getVariable QGVAR(blindfolds)); -#include "initSettings.sqf" +#include "initSettings.inc.sqf" ADDON = true; diff --git a/addons/captives/functions/fnc_canBlindfoldCaptive.sqf b/addons/captives/functions/fnc_canBlindfoldCaptive.sqf index 892ed5b5df..7020b1a9a6 100644 --- a/addons/captives/functions/fnc_canBlindfoldCaptive.sqf +++ b/addons/captives/functions/fnc_canBlindfoldCaptive.sqf @@ -22,7 +22,5 @@ params ["_unit", "_target"]; (_target getVariable [QGVAR(isHandcuffed), false]) && {isNull (attachedTo _target)} && {alive _target} && -{isNull objectParent _unit} && -{isNull objectParent _target} && {(GVAR(blindfolds) findAny (_unit call EFUNC(common,uniqueItems))) != -1} && {!((goggles _target) in GVAR(blindfolds))} diff --git a/addons/captives/functions/fnc_canRemoveBlindfoldCaptive.sqf b/addons/captives/functions/fnc_canRemoveBlindfoldCaptive.sqf index b509197fea..b01f62e26c 100644 --- a/addons/captives/functions/fnc_canRemoveBlindfoldCaptive.sqf +++ b/addons/captives/functions/fnc_canRemoveBlindfoldCaptive.sqf @@ -22,6 +22,4 @@ params ["_unit", "_target"]; (_target getVariable [QGVAR(isHandcuffed), false]) && {isNull (attachedTo _target)} && {alive _target} && -{isNull objectParent _unit} && -{isNull objectParent _target} && {(goggles _target) in GVAR(blindfolds)} diff --git a/addons/captives/functions/fnc_canUnloadCaptive.sqf b/addons/captives/functions/fnc_canUnloadCaptive.sqf index 0eb64e7373..58899f088d 100644 --- a/addons/captives/functions/fnc_canUnloadCaptive.sqf +++ b/addons/captives/functions/fnc_canUnloadCaptive.sqf @@ -1,6 +1,6 @@ #include "..\script_component.hpp" /* - * Author: commy2 + * Author: commy2, LinkIsGrim * Check if the unit can unload a captive from the vehicle. * * Arguments: @@ -19,4 +19,6 @@ params ["_player", "_unit"]; // Don't show "Unload Captive" if unit is unconscious (already has "Unload Patient") -(vehicle _unit != _unit) && {vehicle _player == _player} && {_unit getVariable [QGVAR(isHandcuffed), false]} && {!(_unit getVariable ["ACE_isUnconscious", false])} +!isNull objectParent _unit && +{_unit getVariable [QGVAR(isHandcuffed), false]} && +{lifeState _unit in ["HEALTHY", "INJURED"]} diff --git a/addons/captives/functions/fnc_doBlindfoldCaptive.sqf b/addons/captives/functions/fnc_doBlindfoldCaptive.sqf index aff7444909..e4463909e6 100644 --- a/addons/captives/functions/fnc_doBlindfoldCaptive.sqf +++ b/addons/captives/functions/fnc_doBlindfoldCaptive.sqf @@ -66,10 +66,16 @@ if (_state) then { // Blindfold target removeGoggles _target; }; -// Handle for things that need to be dropped to the ground +// Handle for things that need to be dropped to the ground or in a vehicle inventory if (_dropGoggles) then { private _weaponHolder = nearestObject [_target, "WeaponHolder"]; - if (isNull _weaponHolder || {_target distance _weaponHolder > 2}) then { + // if _target is in a vehicle, use vehicle inventory as container + private _inVehicle = !isNull objectParent _target; + if (_inVehicle) then { + _weaponHolder = objectParent _target; + }; + + if (!_inVehicle && {isNull _weaponHolder || {_target distance _weaponHolder > 2}}) then { _weaponHolder = createVehicle ["GroundWeaponHolder", [0, 0, 0], [], 0, "NONE"]; _weaponHolder setPosASL getPosASL _target; }; diff --git a/addons/captives/functions/fnc_doEscortCaptive.sqf b/addons/captives/functions/fnc_doEscortCaptive.sqf index 1d94b30b87..817745ece3 100644 --- a/addons/captives/functions/fnc_doEscortCaptive.sqf +++ b/addons/captives/functions/fnc_doEscortCaptive.sqf @@ -50,9 +50,14 @@ if (_state) then { detach _target; _unit removeAction _actionID; _unit setVariable [QGVAR(escortedUnit), objNull, true]; + + // Public event + [QGVAR(escortingCaptive), [_target, false, _unit]] call CBA_fnc_localEvent; }; }, 0, [_unit, _target, _actionID]] call CBA_fnc_addPerFrameHandler; + // Public event + [QGVAR(escortingCaptive), [_target, true, _unit]] call CBA_fnc_localEvent; } else { _unit setVariable [QGVAR(isEscorting), false, true]; _unit setVariable [QGVAR(escortedUnit), objNull, true]; diff --git a/addons/captives/functions/fnc_handlePlayerChanged.sqf b/addons/captives/functions/fnc_handlePlayerChanged.sqf index 1e4c729c0e..bafe93bef9 100644 --- a/addons/captives/functions/fnc_handlePlayerChanged.sqf +++ b/addons/captives/functions/fnc_handlePlayerChanged.sqf @@ -11,7 +11,7 @@ * The return value * * Example: - * [bob1, bob2] call ACE_captives_fnc_handlePlayerChange + * [bob1, bob2] call ACE_captives_fnc_handlePlayerChanged * * Public: No */ diff --git a/addons/captives/initSettings.sqf b/addons/captives/initSettings.inc.sqf similarity index 100% rename from addons/captives/initSettings.sqf rename to addons/captives/initSettings.inc.sqf diff --git a/addons/captives/stringtable.xml b/addons/captives/stringtable.xml index 1a6fbf2fd8..c12a02a574 100644 --- a/addons/captives/stringtable.xml +++ b/addons/captives/stringtable.xml @@ -62,7 +62,7 @@ Escoltar Prisioneiro Fogoly kísérése Конвоировать пленного - 捕虜を移動させる + 捕虜を移送する 포로 호송하기 護送俘虜 护送俘虏 @@ -79,7 +79,7 @@ Largar Prisioneiro Fogoly elengedése Прекратить конвоирование - 捕虜を解放する + 捕虜を手放す 포로 풀어주기 停止護送俘虜 停止护送俘虏 @@ -96,7 +96,7 @@ Você deve tomá-lo como prisioneiro primeiro! Először foglyul kell ejtened őt! Вы должны сначала арестовать его! - 捕虜を取っている必要があります! + 先に対象を捕虜にする必要があります! 먼저 포로로 만들어야합니다! 你必須先逮捕他! 你必须先俘获他! @@ -144,6 +144,7 @@ Benda gli occhi Załóż opaskę na oczy 포로 눈 가리기 + 目隠しをする Remove blindfold @@ -152,6 +153,7 @@ Rimuovi la benda per gli occhi Zdejmij opaskę z oczu 눈가리개 풀기 + 目隠しを外す Cable Tie @@ -161,7 +163,7 @@ Serflex Stahovací pásek Algema Plástica - Fascietta + Fascetta Gyorskötöző Кабельная стяжка ケーブル タイ @@ -181,7 +183,7 @@ Fascetta per arrestare i prigionieri Gyorskötöző, emberek foglyulejtéséhez használható. Кабельные стяжки используются для связывания рук при аресте - ケーブル タイは捕虜を制圧できます。 + ケーブル タイによって捕虜を拘束することが出来る。 케이블 타이는 포로를 구류시킬때 씁니다. 束線帶可以綁住俘虜 束线带可以绑住俘虏 @@ -248,7 +250,7 @@ Synchronise l'unité pour qu'elle se rende. Egység szinkronizálása, hogy kapituláljon. Синхронизируйте с юнитами, чтобы заставить их сдаться. - Sincronizza una unità per farla arrendere. + Sincronizza un'unità per farla arrendere. 同期されたユニットを投降させます。 투항시키기 위해 동기화합니다. 同步此模塊到一個單位,使該單位投降 @@ -264,7 +266,7 @@ Metti manette all'unità Hacer que la unidad esté esposada Est menottée - ユニットを拘束する + ユニットを拘束させる 포박하기 使單位戴上手銬 使单位戴上手铐 @@ -330,7 +332,7 @@ Saját oldal megbilincselhető Можно связывать руки союзникам Puoi ammanettare unità alleate - 拘束ユニットを自陣営へ + 自陣営を拘束可能に 자기편을 포박 할 수 있습니다. 可以銬住同陣營隊友 可以铐住同阵营队友 @@ -345,8 +347,8 @@ Les joueurs peuvent menotter les unités de leur propre camp. A játékosok megkötözhetik-e a saját oldalukon lévő egységeket Разрешить игрокам арестовывать юнитов своей стороны - I giocatori possono ammanettare unità alleate - プレイヤーが拘束したユニットの陣営を自陣営に変更させます。 + I giocatori possono ammanettare unità della tua fazione + プレーヤーが自陣営のユニットをケーブルタイで拘束ができるようにします 자기 편에게 케이블 타이를 사용할 수 있게 합니다 玩家可以使用束線帶銬住同陣營隊友 玩家可以使用束线带铐住同阵营队友 @@ -376,7 +378,7 @@ Vyžaduje, aby se hráč nejdříve vzdal, poté může být spoután I giocatori devono arrendersi prima che possano essere arrestati Définit si les joueurs doivent d'abord s'être rendus avant qu'on ne puisse les arrêter. - プレイヤーは拘束される前に、投降する必要があります。 + プレイヤーを拘束する前に、投降を必要とさせます 체포하기 전에 먼저 플레이어가 투항을 해야만 합니다 玩家須先要求目標投降,才可以進行逮捕 玩家须先要求目标投降,才可以进行俘获 @@ -438,7 +440,7 @@ A játékosok megadhatják magukat a fegyverük elrakása után Игроки могут сдаваться после того, как уберут оружие I giocatori possono arrendersi dopo aver messo via le proprie armi - プレイヤーは武器を収めたあと投降できるようにします。 + プレイヤーが武器を収めたあとに投降できるようにします 비무장한 플레이어가 투항할 수 있게 합니다 玩家能在收起自己武器後投降 玩家能在收起自己武器后投降 @@ -446,7 +448,7 @@ Require AI surrendering Benötigt für KI Kapitulation - Necessita arresa AI + Necessita arresa IA AIの投降を必要とする 需要AI先行投降 需要 AI 先行投降 @@ -461,8 +463,8 @@ Require AI to surrender before they can be arrested KI muss sich erst ergeben, bevor sie gefangen genommen werden kann - Necessita che le AI si arrendano prima di essere arrestate - AIの拘束はAIが投降している場合に限り可能にします。 + Necessita che le IA si arrendano prima di poter essere arrestate + AIを拘束する前に、投降を必要とさせます 在逮捕AI之前該AI必須先進入投降狀態 在俘获 AI 之前该 AI 必须先进入投降状态。 포박하기 전에 먼저 AI가 투항해야만 합니다. @@ -477,7 +479,7 @@ Sets the unit under the cursor captive. Nimmt die Einheit unter dem Cursor fest. カーソル先のユニットを拘束 - Imposta l'unità nello stato di prigioniero. + Imposta l'unità puntata come prigioniero. 設置在游標下的單位成俘虜狀態 设置在光标下的单位成俘虏状态。 커서의 병력을 포박합니다. diff --git a/addons/cargo/CfgEden.hpp b/addons/cargo/CfgEden.hpp index 4a64dee025..0a4cc7ba1b 100644 --- a/addons/cargo/CfgEden.hpp +++ b/addons/cargo/CfgEden.hpp @@ -9,7 +9,7 @@ class Cfg3DEN { property = QGVAR(customName); control = "Edit"; - expression = QUOTE(_this setVariable [ARR_3(QQGVAR(customName), _value, true)];); + expression = QUOTE(_this setVariable [ARR_3(QQGVAR(customName),_value,true)]); defaultValue = "''"; condition = "objectHasInventoryCargo - objectVehicle"; @@ -21,7 +21,7 @@ class Cfg3DEN { property = QGVAR(space); control = "Edit"; - expression = QUOTE([ARR_2(_this,_value)] call DFUNC(setSpace);); + expression = QUOTE([ARR_2(_this,_value)] call DFUNC(setSpace)); defaultValue = QUOTE(GET_NUMBER(configOf _this >> QQGVAR(space),0)); validate = "number"; @@ -35,7 +35,7 @@ class Cfg3DEN { control = "Edit"; // Expression only runs on the server, must handle actions for all machines and future JIPs (Why BI?!) - expression = QUOTE([ARR_2(_this,_value)] call DFUNC(setSize);); + expression = QUOTE([ARR_2(_this,_value)] call DFUNC(setSize)); defaultValue = QUOTE(GET_NUMBER(configOf _this >> QQGVAR(size),-1)); validate = "number"; diff --git a/addons/cargo/CfgEventHandlers.hpp b/addons/cargo/CfgEventHandlers.hpp index 6c29240403..f6503c2479 100644 --- a/addons/cargo/CfgEventHandlers.hpp +++ b/addons/cargo/CfgEventHandlers.hpp @@ -1,4 +1,3 @@ - class Extended_PreStart_EventHandlers { class ADDON { init = QUOTE(call COMPILE_SCRIPT(XEH_preStart)); diff --git a/addons/cargo/CfgVehicles.hpp b/addons/cargo/CfgVehicles.hpp index f3b6f2af5b..485a53d8f5 100644 --- a/addons/cargo/CfgVehicles.hpp +++ b/addons/cargo/CfgVehicles.hpp @@ -173,7 +173,7 @@ class CfgVehicles { }; - // misc. vehicles + // Misc. vehicles class Quadbike_01_base_F: Car_F { GVAR(space) = 0; GVAR(hasCargo) = 0; @@ -184,7 +184,7 @@ class CfgVehicles { GVAR(hasCargo) = 0; }; - // helicopters + // Helicopters class Air; class Helicopter: Air { GVAR(space) = 8; @@ -224,7 +224,7 @@ class CfgVehicles { }; class Heli_Transport_04_base_F: Helicopter_Base_H { - // note the double brackets are because loadmasterTurrets is an array of arrays / turret paths + // Note the double brackets are because loadmasterTurrets is an array of arrays / turret paths GVAR(loadmasterTurrets)[] = {{1}}; GVAR(space) = 0; GVAR(hasCargo) = 0; @@ -363,8 +363,9 @@ class CfgVehicles { GVAR(size) = 6; }; + // Slingload pallets class Slingload_base_F: ReammoBox_F {}; - class CargoNet_01_base_F: Slingload_base_F { //Slingload pallets + class CargoNet_01_base_F: Slingload_base_F { GVAR(size) = 6; }; diff --git a/addons/cargo/XEH_PREP.hpp b/addons/cargo/XEH_PREP.hpp index 95fefb4ba0..2d77fc90de 100644 --- a/addons/cargo/XEH_PREP.hpp +++ b/addons/cargo/XEH_PREP.hpp @@ -5,7 +5,6 @@ PREP(canUnloadItem); PREP(getCargoSpaceLeft); PREP(getNameItem); PREP(getSizeItem); -PREP(handleDeleted); PREP(handleDestroyed); PREP(initObject); PREP(initVehicle); @@ -21,4 +20,3 @@ PREP(startLoadIn); PREP(startUnload); PREP(unloadCarryItem); PREP(unloadItem); -PREP(validateCargoSpace); diff --git a/addons/cargo/XEH_postInit.sqf b/addons/cargo/XEH_postInit.sqf index 6146f2c862..1848a1e77b 100644 --- a/addons/cargo/XEH_postInit.sqf +++ b/addons/cargo/XEH_postInit.sqf @@ -1,49 +1,33 @@ #include "script_component.hpp" -["ace_addCargo", {_this call FUNC(addCargoItem)}] call CBA_fnc_addEventHandler; -[QGVAR(paradropItem), { - params ["_item", "_vehicle", ["_showHint", true]]; - - private _unloaded = [_item, _vehicle, _showHint] call FUNC(paradropItem); - - if (_unloaded && {GVAR(openAfterUnload) in [2, 3]}) then { - GVAR(interactionVehicle) = _vehicle; - GVAR(interactionParadrop) = true; - createDialog QGVAR(menu); - }; -}] call CBA_fnc_addEventHandler; +["ace_addCargo", LINKFUNC(addCargoItem)] call CBA_fnc_addEventHandler; ["ace_loadCargo", { params ["_item", "_vehicle"]; TRACE_2("LoadCargo EH",_item,_vehicle); - private _loaded = [_item, _vehicle] call FUNC(loadItem); + private _loaded = [_item, _vehicle] call FUNC(loadItem); // returns true if successful // Show hint as feedback - private _hint = [LSTRING(LoadingFailed), LSTRING(LoadedItem)] select _loaded; + private _hint = [LSTRING(loadingFailed), LSTRING(loadedItem)] select _loaded; private _itemName = [_item, true] call FUNC(getNameItem); private _vehicleName = getText (configOf _vehicle >> "displayName"); - [[_hint, _itemName, _vehicleName], 3.0] call EFUNC(common,displayTextStructured); - - if (_loaded) then { - // Invoke listenable event - ["ace_cargoLoaded", [_item, _vehicle]] call CBA_fnc_globalEvent; - }; + [[_hint, _itemName, _vehicleName], 3] call EFUNC(common,displayTextStructured); }] call CBA_fnc_addEventHandler; ["ace_unloadCargo", { params ["_item", "_vehicle", ["_unloader", objNull]]; TRACE_3("UnloadCargo EH",_item,_vehicle,_unloader); - private _unloaded = [_item, _vehicle, _unloader] call FUNC(unloadItem); //returns true if sucessful + private _unloaded = [_item, _vehicle, _unloader] call FUNC(unloadItem); // returns true if successful // Show hint as feedback - private _hint = [LSTRING(UnloadingFailed), LSTRING(UnloadedItem)] select _unloaded; + private _hint = [LSTRING(unloadingFailed), LSTRING(unloadedItem)] select _unloaded; private _itemName = [_item, true] call FUNC(getNameItem); private _vehicleName = getText (configOf _vehicle >> "displayName"); - [[_hint, _itemName, _vehicleName], 3.0] call EFUNC(common,displayTextStructured); + [[_hint, _itemName, _vehicleName], 3] call EFUNC(common,displayTextStructured); if (_unloaded && {GVAR(openAfterUnload) in [1, 3]}) then { GVAR(interactionVehicle) = _vehicle; @@ -58,16 +42,27 @@ _item hideObjectGlobal false; _item setPosASL (AGLtoASL _emptyPosAGL); - [_item, "blockDamage", "ACE_cargo", false] call EFUNC(common,statusEffect_set); + [_item, "blockDamage", QUOTE(ADDON), false] call EFUNC(common,statusEffect_set); +}] call CBA_fnc_addEventHandler; + +[QGVAR(paradropItem), { + params ["_item", "_vehicle", ["_showHint", true]]; + + private _unloaded = [_item, _vehicle, _showHint] call FUNC(paradropItem); + + if (_unloaded && {GVAR(openAfterUnload) in [2, 3]}) then { + GVAR(interactionVehicle) = _vehicle; + GVAR(interactionParadrop) = true; + createDialog QGVAR(menu); + }; }] call CBA_fnc_addEventHandler; // Private events to handle adding actions globally via public functions -[QGVAR(initObject), DFUNC(initObject)] call CBA_fnc_addEventHandler; -[QGVAR(initVehicle), DFUNC(initVehicle)] call CBA_fnc_addEventHandler; - +[QGVAR(initObject), LINKFUNC(initObject)] call CBA_fnc_addEventHandler; +[QGVAR(initVehicle), LINKFUNC(initVehicle)] call CBA_fnc_addEventHandler; GVAR(vehicleAction) = [ - QGVAR(openMenu), localize LSTRING(openMenu), "", + QGVAR(openMenu), LLSTRING(openMenu), "", { //IGNORE_PRIVATE_WARNING ["_target", "_player"]; GVAR(interactionVehicle) = _target; @@ -77,16 +72,17 @@ GVAR(vehicleAction) = [ { //IGNORE_PRIVATE_WARNING ["_target", "_player"]; GVAR(enable) && - {(_target getVariable [QGVAR(hasCargo), getNumber (configOf _target >> QGVAR(hasCargo)) == 1])} && - {locked _target < 2} && - {([_player, _target] call EFUNC(interaction,getInteractionDistance)) < MAX_LOAD_DISTANCE} && {alive _target} && - {[_player, _target, ["isNotSwimming"]] call EFUNC(common,canInteractWith)} + {locked _target < 2} && + {(_target getVariable [QGVAR(hasCargo), getNumber (configOf _target >> QGVAR(hasCargo)) == 1])} && + {[_player, _target, ["isNotSwimming"]] call EFUNC(common,canInteractWith)} && + {[_player, _target] call EFUNC(interaction,canInteractWithVehicleCrew)} && + {([_player, _target] call EFUNC(interaction,getInteractionDistance)) < MAX_LOAD_DISTANCE} } ] call EFUNC(interact_menu,createAction); GVAR(objectActions) = [ - [QGVAR(renameObject), LELSTRING(common,rename), "", //TODO: add icon, maybe a pencil couldn't find it before. + [QGVAR(renameObject), LELSTRING(common,rename), "\a3\Modules_F_Curator\Data\iconMissionName_ca.paa", { //IGNORE_PRIVATE_WARNING ["_target", "_player"]; GVAR(interactionVehicle) = _target; @@ -96,57 +92,67 @@ GVAR(objectActions) = [ //IGNORE_PRIVATE_WARNING ["_target", "_player"]; GVAR(enable) && {GVAR(enableRename)} && - {(_target getVariable [QGVAR(canLoad), getNumber (configOf _target >> QGVAR(canLoad))]) in [true, 1]} && {alive _target} && + {_target getVariable [QGVAR(canLoad), getNumber (configOf _target >> QGVAR(canLoad)) == 1]} && + {!(_target getVariable [QGVAR(noRename), getNumber (configOf _target >> QGVAR(noRename)) == 1])} && {[_player, _target, ["isNotSwimming"]] call EFUNC(common,canInteractWith)} && - {(_target getVariable [QGVAR(noRename), getNumber (configOf _target >> QGVAR(noRename))]) in [false, 0]} + {[_player, _target] call EFUNC(interaction,canInteractWithVehicleCrew)} } ] call EFUNC(interact_menu,createAction), - [QGVAR(load), localize LSTRING(loadObject), "a3\ui_f\data\IGUI\Cfg\Actions\loadVehicle_ca.paa", + [QGVAR(load), LLSTRING(loadObject), "a3\ui_f\data\IGUI\Cfg\Actions\loadVehicle_ca.paa", { - params ["_target", "_player"]; + //IGNORE_PRIVATE_WARNING ["_target", "_player"]; [_player, _target] call FUNC(startLoadIn); }, { //IGNORE_PRIVATE_WARNING ["_target", "_player"]; GVAR(enable) && - {(_target getVariable [QGVAR(canLoad), getNumber (configOf _target >> QGVAR(canLoad))]) in [true, 1]} && - {locked _target < 2} && {alive _target} && + {locked _target < 2} && + {_target getVariable [QGVAR(canLoad), getNumber (configOf _target >> QGVAR(canLoad)) == 1]} && {[_player, _target, ["isNotSwimming"]] call EFUNC(common,canInteractWith)} && - {((nearestObjects [_target, GVAR(cargoHolderTypes), (MAX_LOAD_DISTANCE + 10)]) findIf { - private _hasCargoConfig = 1 == getNumber (configOf _x >> QGVAR(hasCargo)); - private _hasCargoPublic = _x getVariable [QGVAR(hasCargo), false]; - (_hasCargoConfig || {_hasCargoPublic}) && {_x != _target} && {alive _x} && {locked _x < 2} && + {[_player, _target] call EFUNC(interaction,canInteractWithVehicleCrew)} && + {((nearestObjects [_target, GVAR(cargoHolderTypes), MAX_LOAD_DISTANCE + 10]) findIf { + _x != _target && + {alive _x} && + {locked _x < 2} && + {_x getVariable [QGVAR(hasCargo), getNumber (configOf _x >> QGVAR(hasCargo)) == 1]} && {([_target, _x] call EFUNC(interaction,getInteractionDistance)) < MAX_LOAD_DISTANCE} - }) > -1} + }) != -1} }, LINKFUNC(addCargoVehiclesActions) ] call EFUNC(interact_menu,createAction) ]; -// find all remaining configured classes and init them, see XEH_preStart.sqf +// Find all remaining configured classes and init them, see XEH_preStart.sqf private _vehicleClassesAddAction = call (uiNamespace getVariable [QGVAR(initializedVehicleClasses), {[]}]); + { [_x, 0, ["ACE_MainActions"], GVAR(vehicleAction)] call EFUNC(interact_menu,addActionToClass); } forEach _vehicleClassesAddAction; + GVAR(initializedVehicleClasses) append _vehicleClassesAddAction; private _objectClassesAddAction = call (uiNamespace getVariable [QGVAR(initializedItemClasses), {[]}]); + { private _objectClass = _x; + { [_objectClass, 0, ["ACE_MainActions"], _x] call EFUNC(interact_menu,addActionToClass); } forEach GVAR(objectActions); } forEach _objectClassesAddAction; + GVAR(initializedItemClasses) append _objectClassesAddAction; private _vehicleClassesAddClassEH = call (uiNamespace getVariable [QGVAR(vehicleClasses_classEH), {[]}]); + { [_x, "initPost", DFUNC(initVehicle), nil, nil, true] call CBA_fnc_addClassEventHandler; } forEach _vehicleClassesAddClassEH; private _objectClassesAddClassEH = call (uiNamespace getVariable [QGVAR(objectClasses_classEH), {[]}]); + { [_x, "initPost", DFUNC(initObject), nil, nil, true] call CBA_fnc_addClassEventHandler; } forEach _objectClassesAddClassEH; @@ -154,7 +160,9 @@ private _objectClassesAddClassEH = call (uiNamespace getVariable [QGVAR(objectCl if (isServer) then { ["ace_placedInBodyBag", { params ["_target", "_bodyBag", "_isGrave"]; + if (_isGrave) exitWith {}; // assume graves aren't cargo + _bodyBag setVariable [QGVAR(customName), [_target, false, true] call EFUNC(common,getName), true]; }] call CBA_fnc_addEventHandler; }; diff --git a/addons/cargo/XEH_preInit.sqf b/addons/cargo/XEH_preInit.sqf index f14ccc5958..35f2d78e45 100644 --- a/addons/cargo/XEH_preInit.sqf +++ b/addons/cargo/XEH_preInit.sqf @@ -6,15 +6,15 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" GVAR(initializedItemClasses) = []; GVAR(initializedVehicleClasses) = []; -GVAR(cargoHolderTypes) = ["Car", "Air", "Tank", "Ship", "Cargo_base_F", "Land_PaperBox_closed_F"]; -GVAR(disableParadropEffectsClasstypes) = ["Car_F"]; +GVAR(cargoHolderTypes) = ["Car", "Air", "Tank", "Ship", "Cargo_base_F", "Land_PaperBox_closed_F"] apply {_x call EFUNC(common,getConfigName)}; // make sure they are config case +GVAR(disableParadropEffectsClasstypes) = ["Car_F"] apply {_x call EFUNC(common,getConfigName)}; if (isServer) then { - ["All", "Deleted", LINKFUNC(handleDeleted)] call CBA_fnc_addClassEventHandler; + ["All", "Deleted", LINKFUNC(handleDestroyed)] call CBA_fnc_addClassEventHandler; }; ["All", "Killed", LINKFUNC(handleDestroyed)] call CBA_fnc_addClassEventHandler; diff --git a/addons/cargo/XEH_preStart.sqf b/addons/cargo/XEH_preStart.sqf index e7b3f5c59b..e5ef507556 100644 --- a/addons/cargo/XEH_preStart.sqf +++ b/addons/cargo/XEH_preStart.sqf @@ -2,36 +2,38 @@ #include "XEH_PREP.hpp" - -//See XEH_postInit.sqf +// See XEH_postInit.sqf private _vehicleClasses_addClassEH = ["ThingX", "LandVehicle", "Air", "Ship_F"]; private _objectClasses_addClassEH = ["ThingX", "StaticWeapon"]; private _vehicleClasses_addAction = []; private _itemClasses_addAction = []; +private _class = ""; -// find all remaining configured classes and init them +// Find all remaining configured classes and init them { - private _class = configName _x; - // init vehicle + _class = configName _x; + + // Init vehicle if ( - 1 == getNumber (_x >> QGVAR(hasCargo)) - && {-1 == _vehicleClasses_addClassEH findIf {_class isKindOf _x}} + getNumber (_x >> QGVAR(hasCargo)) == 1 && + {_vehicleClasses_addClassEH findIf {_class isKindOf _x} == -1} ) then { if (_class isKindOf "Static") then { - if (2 == getNumber (_x >> "scope")) then { + if (getNumber (_x >> "scope") == 2) then { _vehicleClasses_addAction pushBackUnique _class; }; } else { _vehicleClasses_addClassEH pushBackUnique _class; }; }; - // init object + + // Init object if ( - 1 == getNumber (_x >> QGVAR(canLoad)) - && {-1 == _objectClasses_addClassEH findIf {_class isKindOf _x}} + getNumber (_x >> QGVAR(canLoad)) == 1 && + {_objectClasses_addClassEH findIf {_class isKindOf _x} == -1} ) then { if (_class isKindOf "Static") then { - if (2 == getNumber (_x >> "scope")) then { + if (getNumber (_x >> "scope") == 2) then { _itemClasses_addAction pushBackUnique _class; }; } else { @@ -40,7 +42,6 @@ private _itemClasses_addAction = []; }; } forEach ("true" configClasses (configFile >> "CfgVehicles")); - uiNamespace setVariable [QGVAR(vehicleClasses_classEH), compileFinal str _vehicleClasses_addClassEH]; uiNamespace setVariable [QGVAR(objectClasses_classEH), compileFinal str _objectClasses_addClassEH]; uiNamespace setVariable [QGVAR(initializedVehicleClasses), compileFinal str _vehicleClasses_addAction]; diff --git a/addons/cargo/functions/fnc_addCargoItem.sqf b/addons/cargo/functions/fnc_addCargoItem.sqf index ecaa4e316f..38ccdc0dd9 100644 --- a/addons/cargo/functions/fnc_addCargoItem.sqf +++ b/addons/cargo/functions/fnc_addCargoItem.sqf @@ -4,26 +4,34 @@ * Adds a cargo item to the vehicle. * * Arguments: - * 0: Item Classname - * 1: Vehicle + * 0: Item to be loaded or + * 1: Holder object (vehicle) * 2: Amount (default: 1) - * 3: Show Hint (default: false) * * Return Value: * None * * Example: - * ["item", vehicle] call ace_cargo_fnc_addCargoItem + * ["ACE_Wheel", cursorObject] call ace_cargo_fnc_addCargoItem * * Public: No */ -params ["_itemClass", "_vehicle", ["_amount", 1], ["_showHint", false, [false]]]; -TRACE_3("params",_itemClass,_vehicle,_amount); +params ["_item", "_vehicle", ["_amount", 1]]; +TRACE_3("params",_item,_vehicle,_amount); -for "_i" from 1 to _amount do { - [_itemClass, _vehicle] call FUNC(loadItem); +// Get config sensitive case name +if (_item isEqualType "") then { + _item = _item call EFUNC(common,getConfigName); + + for "_i" from 1 to _amount do { + [_item, _vehicle] call FUNC(loadItem); + }; +} else { + [_item, _vehicle] call FUNC(loadItem); + + _item = typeOf _item; }; // Invoke listenable event -["ace_cargoAdded", [_itemClass, _vehicle, _amount]] call CBA_fnc_globalEvent; +["ace_cargoAdded", [_item, _vehicle, _amount]] call CBA_fnc_globalEvent; diff --git a/addons/cargo/functions/fnc_addCargoVehiclesActions.sqf b/addons/cargo/functions/fnc_addCargoVehiclesActions.sqf index 811ccd2b36..4aa18867d6 100644 --- a/addons/cargo/functions/fnc_addCargoVehiclesActions.sqf +++ b/addons/cargo/functions/fnc_addCargoVehiclesActions.sqf @@ -1,32 +1,34 @@ #include "..\script_component.hpp" /* * Author: Dystopian - * Create actions for nearest vehicles with cargo. + * Creates actions for nearest vehicles with cargo. * * Arguments: - * 0: Target + * 0: Holder object (vehicle) * * Return Value: * Child actions * * Example: - * [cursorObject] call ace_cargo_fnc_addCargoVehiclesActions + * cursorObject call ace_cargo_fnc_addCargoVehiclesActions * * Public: No */ -params ["_target"]; +params ["_vehicle"]; private _statement = { - params ["_target", "_player", "_vehicle"]; - [_player, _target, _vehicle] call FUNC(startLoadIn); + params ["_item", "_loader", "_vehicle"]; + + [_loader, _item, _vehicle] call FUNC(startLoadIn); }; -private _vehicles = (nearestObjects [_target, GVAR(cargoHolderTypes), (MAX_LOAD_DISTANCE + 10)]) select { - private _hasCargoConfig = 1 == getNumber (configOf _x >> QGVAR(hasCargo)); - private _hasCargoPublic = _x getVariable [QGVAR(hasCargo), false]; - (_hasCargoConfig || {_hasCargoPublic}) && {_x != _target} && {alive _x} && {locked _x < 2} && - {([_target, _x] call EFUNC(interaction,getInteractionDistance)) < MAX_LOAD_DISTANCE} +private _vehicles = (nearestObjects [_vehicle, GVAR(cargoHolderTypes), MAX_LOAD_DISTANCE + 10]) select { + _x != _vehicle && + {alive _x} && + {locked _x < 2} && + {_x getVariable [QGVAR(hasCargo), getNumber (configOf _x >> QGVAR(hasCargo)) == 1]} && + {([_vehicle, _x] call EFUNC(interaction,getInteractionDistance)) < MAX_LOAD_DISTANCE} }; -[_vehicles, _statement, _target] call EFUNC(interact_menu,createVehiclesActions) +[_vehicles, _statement, _vehicle] call EFUNC(interact_menu,createVehiclesActions) diff --git a/addons/cargo/functions/fnc_canLoadItemIn.sqf b/addons/cargo/functions/fnc_canLoadItemIn.sqf index 0851c07fac..6a45593297 100644 --- a/addons/cargo/functions/fnc_canLoadItemIn.sqf +++ b/addons/cargo/functions/fnc_canLoadItemIn.sqf @@ -1,48 +1,57 @@ #include "..\script_component.hpp" /* * Author: Glowbal - * Check if item can be loaded into other Object. + * Checks if the item can be loaded into another object. * * Arguments: - * 0: Item - * 1: Holder Object (Vehicle) - * 2: Ignore interaction distance and stability checks + * 0: Item to be loaded or + * 1: Holder object (vehicle) + * 2: Ignore interaction distance and stability checks (default: false) * * Return Value: - * Can load in + * Can be loaded * * Example: - * [item, holder] call ace_cargo_fnc_canLoadItemIn + * ["ACE_Wheel", cursorObject] call ace_cargo_fnc_canLoadItemIn * * Public: No */ -params [["_item", "", [objNull,""]], "_vehicle", ["_ignoreInteraction", false]]; +params ["_item", "_vehicle", ["_ignoreInteraction", false]]; -if ((!_ignoreInteraction) && {speed _vehicle > 1 || {((getPos _vehicle) select 2) > 3}}) exitWith {TRACE_1("vehicle not stable",_vehicle); false}; +// Check if vehicle is stable +if (!_ignoreInteraction && {speed _vehicle > 1 || {((getPos _vehicle) select 2) > 3}}) exitWith { + TRACE_1("vehicle not stable",_vehicle); -if (_item isEqualType objNull && {{alive _x && {getText (configOf _x >> "simulation") != "UAVPilot"}} count crew _item > 0}) exitWith { - TRACE_1("item is occupied",_item); - false + false // return }; -private _itemSize = [_item] call FUNC(getSizeItem); -private _validItem = false; -if (_item isEqualType "") then { - _validItem = - isClass (configFile >> "CfgVehicles" >> _item) && - {getNumber (configFile >> "CfgVehicles" >> _item >> QGVAR(canLoad)) == 1}; +// If there is crew that isn't UAV crew, exit +if (_item isEqualType objNull && {(crew _item) findIf {alive _x && {!unitIsUAV _x}} != -1}) exitWith { + TRACE_1("item is occupied",_item); + + false // return +}; + +private _itemSize = _item call FUNC(getSizeItem); + +private _validItem = if (_item isEqualType "") then { + private _config = configFile >> "CfgVehicles" >> _item; + + isClass _config && + {getNumber (_config >> QGVAR(canLoad)) == 1} } else { - _validItem = - (alive _item) && - {_ignoreInteraction || {([_item, _vehicle] call EFUNC(interaction,getInteractionDistance)) < MAX_LOAD_DISTANCE}} && - {!(_item getVariable [QEGVAR(cookoff,isCookingOff), false])} && - {isNull(_item getVariable [QEGVAR(refuel,nozzle), objNull])} && // Objects which have a refueling nozzle connected to them cannot be loaded - {isNull(_item getVariable [QEGVAR(refuel,ownedNozzle), objNull])}; // Fuel sources which have their nozzle out cannot be loaded + alive _item && + {_item getVariable [QGVAR(canLoad), getNumber (configOf _item >> QGVAR(canLoad)) == 1]} && + {_ignoreInteraction || {([_item, _vehicle] call EFUNC(interaction,getInteractionDistance)) < MAX_LOAD_DISTANCE}} && + {!(_item getVariable [QEGVAR(cookoff,isCookingOff), false])} && // do not load items that are cooking off + {isNull (_item getVariable [QEGVAR(refuel,nozzle), objNull])} && // objects which have a refueling nozzle connected to them cannot be loaded + {isNull (_item getVariable [QEGVAR(refuel,ownedNozzle), objNull])} // fuel sources which have their nozzle out cannot be loaded }; _validItem && -{_itemSize > 0} && {alive _vehicle} && -{_itemSize <= ([_vehicle] call FUNC(getCargoSpaceLeft))} && -{locked _vehicle < 2} +{locked _vehicle < 2} && +{_vehicle getVariable [QGVAR(hasCargo), getNumber (configOf _vehicle >> QGVAR(hasCargo)) == 1]} && +{_itemSize >= 0} && +{_itemSize <= (_vehicle call FUNC(getCargoSpaceLeft)) max 0} diff --git a/addons/cargo/functions/fnc_canUnloadItem.sqf b/addons/cargo/functions/fnc_canUnloadItem.sqf index fd69d5f9bd..357ba78f21 100644 --- a/addons/cargo/functions/fnc_canUnloadItem.sqf +++ b/addons/cargo/functions/fnc_canUnloadItem.sqf @@ -1,30 +1,44 @@ #include "..\script_component.hpp" /* * Author: Glowbal, ViperMaul - * Check if item can be unloaded. + * Checks if the item can be unloaded from another object. * * Arguments: - * 0: loaded Object - * 1: Object - * 2: Unloader (player) (default: objNull) + * 0: Item to be unloaded or + * 1: Holder object (vehicle) + * 2: Unit doing the unloading (default: objNull) + * 3: Ignore interaction distance and stability checks (default: false) + * 4: Ignore finding a suitable position (default: false) * * Return Value: * Can be unloaded * * Example: - * [item, holder] call ace_cargo_fnc_canUnloadItem + * ["ACE_Wheel", cursorObject] call ace_cargo_fnc_canUnloadItem * * Public: No */ -params ["_item", "_vehicle", ["_unloader", objNull]]; +params ["_item", "_vehicle", ["_unloader", objNull], ["_ignoreInteraction", false], ["_ignoreFindPosition", false]]; TRACE_2("params",_item,_vehicle); -private _loaded = _vehicle getVariable [QGVAR(loaded), []]; -if !(_item in _loaded) exitWith {false}; +// Get config sensitive case name +if (_item isEqualType "") then { + _item = _item call EFUNC(common,getConfigName); +}; -private _itemClass = if (_item isEqualType "") then {_item} else {typeOf _item}; +if !(_item in (_vehicle getVariable [QGVAR(loaded), []])) exitWith {false}; -private _emptyPos = [_vehicle, _itemClass, _unloader] call EFUNC(common,findUnloadPosition); +private _validItem = if (_item isEqualType objNull) then { + alive _item +} else { + true +}; -(count _emptyPos) == 3 +_validItem && +{alive _vehicle} && +{locked _vehicle < 2} && +{_vehicle getVariable [QGVAR(hasCargo), getNumber (configOf _vehicle >> QGVAR(hasCargo)) == 1]} && +{_item call FUNC(getSizeItem) >= 0} && +{_ignoreInteraction || {([_unloader, _vehicle] call EFUNC(interaction,getInteractionDistance)) < MAX_LOAD_DISTANCE}} && +{_ignoreFindPosition || {([_vehicle, _item, _unloader, MAX_LOAD_DISTANCE, !_ignoreInteraction] call EFUNC(common,findUnloadPosition)) isNotEqualTo []}} diff --git a/addons/cargo/functions/fnc_getCargoSpaceLeft.sqf b/addons/cargo/functions/fnc_getCargoSpaceLeft.sqf index a0e8d2993d..e797b0820d 100644 --- a/addons/cargo/functions/fnc_getCargoSpaceLeft.sqf +++ b/addons/cargo/functions/fnc_getCargoSpaceLeft.sqf @@ -1,21 +1,20 @@ #include "..\script_component.hpp" /* * Author: Glowbal - * Get the cargo space left on object. + * Gets the object's remaining cargo space. * * Arguments: - * 0: Object + * 0: Holder object (vehicle) * * Return Value: * Cargo space left * * Example: - * [object] call ace_cargo_fnc_getCargoSpaceLeft + * cursorObject call ace_cargo_fnc_getCargoSpaceLeft * * Public: No */ -params ["_object"]; -// TRACE_1("params",_object); +params ["_vehicle"]; -(_object getVariable [QGVAR(space), getNumber (configOf _object >> QGVAR(space))]) max 0 +_vehicle getVariable [QGVAR(space), getNumber (configOf _vehicle >> QGVAR(space))] diff --git a/addons/cargo/functions/fnc_getNameItem.sqf b/addons/cargo/functions/fnc_getNameItem.sqf index a28d128c63..b71ae073cb 100644 --- a/addons/cargo/functions/fnc_getNameItem.sqf +++ b/addons/cargo/functions/fnc_getNameItem.sqf @@ -4,31 +4,31 @@ * Gets the name of the item, and alternatively the custom name if requested and available. * * Arguments: - * 0: Target - * 1: Add custom name part (default: false) + * 0: Item or (default: "") + * 1: Add custom name (default: false) * * Return Value: - * Item Name + * Item name * * Example: - * [crate_7] call ace_cargo_fnc_getNameItem + * cursorObject call ace_cargo_fnc_getNameItem * * Public: Yes */ -params ["_object", ["_addCustomPart", false]]; +params [["_item", "", [objNull, ""]], ["_addCustomName", false, [false]]]; -private _displayName = if (_object isEqualType "") then { - getText (configFile >> "CfgVehicles" >> _object >> "displayName") +private _displayName = if (_item isEqualType "") then { + getText (configFile >> "CfgVehicles" >> _item >> "displayName") } else { - getText ((configOf _object) >> "displayName") + getText (configOf _item >> "displayName") }; -if (_addCustomPart && {!(_object isEqualType "")}) then { - private _customPart = _object getVariable [QGVAR(customName), ""]; +if (_addCustomName && {_item isEqualType objNull}) then { + private _customName = _item getVariable [QGVAR(customName), ""]; - if (_customPart isNotEqualTo "") then { - _displayName = _displayName + " [" + _customPart + "]"; + if (_customName isNotEqualTo "") then { + _displayName = _displayName + " [" + _customName + "]"; }; }; diff --git a/addons/cargo/functions/fnc_getSizeItem.sqf b/addons/cargo/functions/fnc_getSizeItem.sqf index 24b47f70b2..bf049b71b3 100644 --- a/addons/cargo/functions/fnc_getSizeItem.sqf +++ b/addons/cargo/functions/fnc_getSizeItem.sqf @@ -1,29 +1,25 @@ #include "..\script_component.hpp" /* * Author: Glowbal, kymckay - * Get the cargo size of an object. + * Gets the cargo size of an object. * * Arguments: - * 0: Item + * 0: Item or * * Return Value: * Cargo size (default: -1) * * Example: - * [object] call ace_cargo_fnc_getSizeItem + * cursorObject call ace_cargo_fnc_getSizeItem * * Public: No */ params ["_item"]; -// Virtual items are much easier to deal with +// Default cargo size is -1 as 0 is a valid size if (_item isEqualType "") then { - CARGO_SIZE(_item) + GET_NUMBER(configFile >> "CfgVehicles" >> _item >> QGVAR(size),-1) } else { - if (isNil {_item getVariable QGVAR(size)}) then { - CARGO_SIZE(typeOf _item) - } else { - _item getVariable QGVAR(size) - }; + _item getVariable [QGVAR(size), GET_NUMBER(configOf _item >> QGVAR(size),-1)] }; diff --git a/addons/cargo/functions/fnc_handleDeleted.sqf b/addons/cargo/functions/fnc_handleDeleted.sqf deleted file mode 100644 index a4300aea25..0000000000 --- a/addons/cargo/functions/fnc_handleDeleted.sqf +++ /dev/null @@ -1,25 +0,0 @@ -#include "..\script_component.hpp" -/* - * Author: mharis001 - * Handles an object being deleted by deleting all loaded cargo. - * - * Arguments: - * 0: Object - * - * Return Value: - * None - * - * Example: - * [_object] call ace_cargo_fnc_handleDeleted - * - * Public: No - */ - -params ["_object"]; - -{ - if (_x isEqualType objNull) then { - detach _x; - deleteVehicle _x; - }; -} forEach (_object getVariable [QGVAR(loaded), []]); diff --git a/addons/cargo/functions/fnc_handleDestroyed.sqf b/addons/cargo/functions/fnc_handleDestroyed.sqf index 016917f5f7..cc5777723d 100644 --- a/addons/cargo/functions/fnc_handleDestroyed.sqf +++ b/addons/cargo/functions/fnc_handleDestroyed.sqf @@ -1,7 +1,9 @@ #include "..\script_component.hpp" /* - * Author: Glowbal - * Handle object being destroyed. + * Author: mharis001, Glowbal + * Handles an object being destroyed/deleted. + * If object contained loaded cargo, the cargo is deleted. + * If object was loaded cargo, it's removed from loaded cargo list. * * Arguments: * 0: Object @@ -10,23 +12,34 @@ * None * * Example: - * [_object] call ace_cargo_fnc_handleDestroyed + * cursorObject call ace_cargo_fnc_handleDestroyed * * Public: No */ -params ["_vehicle"]; -TRACE_1("params",_vehicle); +params ["_object"]; -private _loaded = _vehicle getVariable [QGVAR(loaded), []]; -if (_loaded isEqualTo []) exitWith {}; +private _loaded = _object getVariable [QGVAR(loaded), []]; -{ - // TODO Do we want to be able to recover destroyed equipment? - if (_x isEqualType objNull) then { - detach _x; - deleteVehicle _x; - }; -} forEach _loaded; +if (_loaded isNotEqualTo []) then { + // Delete all cargo + { + if (_x isEqualType objNull) then { + detach _x; + deleteVehicle _x; + }; + } forEach _loaded; -[_vehicle] call FUNC(validateCargoSpace); + // In case vehicle is killed, but not deleted, reset loaded list + _object setVariable [QGVAR(loaded), [], true]; +}; + +// Update remaining cargo space, if loaded as cargo in a vehicle +private _vehicle = attachedTo _object; + +if (!isNull _vehicle && {_object in (_vehicle getVariable [QGVAR(loaded), []])}) then { + private _cargoSpace = _vehicle call FUNC(getCargoSpaceLeft); + private _itemSize = (_object call FUNC(getSizeItem)) max 0; // don't let negative size items increase space + + _vehicle setVariable [QGVAR(space), _cargoSpace + _itemSize, true]; +}; diff --git a/addons/cargo/functions/fnc_initObject.sqf b/addons/cargo/functions/fnc_initObject.sqf index 0842d51faa..a8522ad283 100644 --- a/addons/cargo/functions/fnc_initObject.sqf +++ b/addons/cargo/functions/fnc_initObject.sqf @@ -4,51 +4,57 @@ * Initializes variables for loadable objects. Called from init EH. * * Arguments: - * 0: Object + * 0: Item * * Return Value: * None * * Example: - * [object] call ace_cargo_fnc_initObject + * cursorObject call ace_cargo_fnc_initObject * * Public: No */ -params ["_object"]; -private _type = typeOf _object; -private _config = configOf _object; -TRACE_2("params",_object,_type); +// Dedicated servers and HCs do not require action menus +if (!hasInterface) exitWith {}; -// If object had size given to it via eden/public then override config canLoad setting -private _canLoadPublic = _object getVariable [QGVAR(canLoad), false]; -if (!(_canLoadPublic isEqualType false)) then { - WARNING_4("%1[%2] - Variable %3 is %4 - Should be bool",_object,_type,QGVAR(canLoad),_canLoadPublic); +params ["_item"]; +private _type = typeOf _item; +TRACE_2("params",_item,_type); + +// If object had size given to it via eden/public, then override config canLoad setting +private _canLoadPublic = _item getVariable QGVAR(canLoad); +private _canLoadPublicDefined = !isNil "_canLoadPublic"; + +if (_canLoadPublicDefined && {!(_canLoadPublic isEqualType false)}) then { + WARNING_4("%1[%2] - Variable %3 is %4 - Should be bool",_item,_type,QGVAR(canLoad),_canLoadPublic); }; -private _canLoadConfig = getNumber (_config >> QGVAR(canLoad)) == 1; + +private _canLoadConfig = getNumber (configOf _item >> QGVAR(canLoad)) == 1; // Nothing to do here if object can't be loaded -if !(_canLoadConfig || {_canLoadPublic in [true, 1]}) exitWith {}; - -// Servers and HCs do not require action menus (beyond this point) -if !(hasInterface) exitWith {}; +if !((_canLoadPublicDefined && {_canLoadPublic in [true, 1]}) || {!_canLoadPublicDefined && {_canLoadConfig}}) exitWith {}; // Unnecessary to add actions to an object class that's already got them if (_type in GVAR(initializedItemClasses)) exitWith {}; -if (_object getVariable [QGVAR(initObject),false]) exitWith {}; +if (_item getVariable [QGVAR(initObject),false]) exitWith {}; // Objects given size via eden have their actions added to the object // So this function may run for multiple of the same class in that case if (_canLoadConfig) then { GVAR(initializedItemClasses) pushBack _type; + TRACE_1("Adding load cargo action to class", _type); + { [_type, 0, ["ACE_MainActions"], _x] call EFUNC(interact_menu,addActionToClass); } forEach GVAR(objectActions); } else { - _object setVariable [QGVAR(initObject),true]; - TRACE_1("Adding load cargo action to object", _object); + _item setVariable [QGVAR(initObject), true]; + + TRACE_1("Adding load cargo action to object", _item); + { - [_object, 0, ["ACE_MainActions"], _x] call EFUNC(interact_menu,addActionToObject); + [_item, 0, ["ACE_MainActions"], _x] call EFUNC(interact_menu,addActionToObject); } forEach GVAR(objectActions); }; diff --git a/addons/cargo/functions/fnc_initVehicle.sqf b/addons/cargo/functions/fnc_initVehicle.sqf index 948fdf525e..ed0a02cba9 100644 --- a/addons/cargo/functions/fnc_initVehicle.sqf +++ b/addons/cargo/functions/fnc_initVehicle.sqf @@ -10,7 +10,7 @@ * None * * Example: - * [vehicle] call ace_cargo_fnc_initVehicle + * cursorObject call ace_cargo_fnc_initVehicle * * Public: No */ @@ -21,7 +21,7 @@ TRACE_1("params", _vehicle); private _type = typeOf _vehicle; private _config = configOf _vehicle; -// If vehicle had space given to it via eden/public then override config hasCargo setting +// If vehicle had space given to it via eden/public, then override config hasCargo setting private _hasCargoPublic = _vehicle getVariable [QGVAR(hasCargo), false]; private _hasCargoConfig = getNumber (_config >> QGVAR(hasCargo)) == 1; @@ -29,41 +29,53 @@ private _hasCargoConfig = getNumber (_config >> QGVAR(hasCargo)) == 1; if !(_hasCargoConfig || _hasCargoPublic) exitWith {}; // Check if cargo is in cargo holder types (checked when trying to search for loadable objects) -private _addCargoType = true; -{ - if (_type isKindOf _x) exitWith {_addCargoType = false}; -} forEach GVAR(cargoHolderTypes); +private _addCargoType = GVAR(cargoHolderTypes) findIf {_type isKindOf _x} == -1; + TRACE_2("",_addCargoType,_type); + if (_addCargoType) then { GVAR(cargoHolderTypes) pushBack _type; }; -// Vehicle can have default ace cargo in its config +// If already initialised (both actions and cargo), then skip +if (_vehicle getVariable [QGVAR(initVehicle), false]) exitWith {}; + +// Vehicles can have default ace cargo in their config if (isServer) then { + _vehicle setVariable [QGVAR(initVehicle), true]; + + private _cargoClassname = ""; + private _cargoCount = 0; + { - private _cargoClassname = getText (_x >> "type"); - private _cargoCount = getNumber (_x >> "amount"); - TRACE_3("adding ACE_Cargo", (configName _x), _cargoClassname, _cargoCount); + _cargoClassname = getText (_x >> "type"); + _cargoCount = getNumber (_x >> "amount"); + + TRACE_3("adding ACE_Cargo",configName _x,_cargoClassname,_cargoCount); + ["ace_addCargo", [_cargoClassname, _vehicle, _cargoCount]] call CBA_fnc_localEvent; - } forEach ("true" configClasses (_config >> QUOTE(ADDON) >> "Cargo")); + } forEach ("true" configClasses (_config >> QUOTE(ADDON) >> "cargo")); }; // Servers and HCs do not require action menus (beyond this point) -if !(hasInterface) exitWith {}; +if (!hasInterface) exitWith {}; // Unnecessary to add actions to a vehicle class that's already got them if (_type in GVAR(initializedVehicleClasses)) exitWith {}; -if (_vehicle getVariable [QGVAR(initVehicle),false]) exitWith {}; // Vehicles given cargo via eden have their actions added to the object // So this function may run for multiple of the same class in that case if (_hasCargoConfig) then { GVAR(initializedVehicleClasses) pushBack _type; + TRACE_1("Adding unload cargo action to class", _type); + [_type, 0, ["ACE_MainActions"], GVAR(vehicleAction)] call EFUNC(interact_menu,addActionToClass); } else { - _vehicle setVariable [QGVAR(initVehicle),true]; + _vehicle setVariable [QGVAR(initVehicle), true]; + TRACE_1("Adding unload cargo action to object", _vehicle); + [_vehicle, 0, ["ACE_MainActions"], GVAR(vehicleAction)] call EFUNC(interact_menu,addActionToObject); }; @@ -71,24 +83,31 @@ if (_hasCargoConfig) then { if (_vehicle isKindOf "Air") then { private _condition = { //IGNORE_PRIVATE_WARNING ["_target", "_player"]; - GVAR(enable) && {[_player, _target, []] call EFUNC(common,canInteractWith)} && { - private _turretPath = _player call CBA_fnc_turretPath; - (_player == (driver _target)) || // pilot - {(getNumber (([_target, _turretPath] call CBA_fnc_getTurret) >> "isCopilot")) == 1} || // coPilot - {_turretPath in (getArray (configOf _target >> QGVAR(loadmasterTurrets)))}} // loadMaster turret from config + GVAR(enable) && + {[_player, _target, []] call EFUNC(common,canInteractWith)} && { + private _turretPath = _target unitTurret _player; + + (_player == currentPilot _target) || // Pilot/Co-pilot + {(getNumber ([_target, _turretPath] call CBA_fnc_getTurret >> "isCopilot")) == 1} || // Co-pilot + {_turretPath in (getArray (configOf _target >> QGVAR(loadmasterTurrets)))} + } }; + private _statement = { //IGNORE_PRIVATE_WARNING ["_target", "_player"]; GVAR(interactionVehicle) = _target; GVAR(interactionParadrop) = true; createDialog QGVAR(menu); }; - private _text = localize LSTRING(openMenu); + + private _text = LLSTRING(openMenu); private _icon = ""; private _action = [QGVAR(openMenu), _text, _icon, _statement, _condition] call EFUNC(interact_menu,createAction); + + // Self action on the vehicle if (_hasCargoConfig) then { - [_type, 1, ["ACE_SelfActions"], _action] call EFUNC(interact_menu,addActionToClass); // self action on the vehicle + [_type, 1, ["ACE_SelfActions"], _action] call EFUNC(interact_menu,addActionToClass); } else { [_vehicle, 1, ["ACE_SelfActions"], _action] call EFUNC(interact_menu,addActionToObject); }; diff --git a/addons/cargo/functions/fnc_loadItem.sqf b/addons/cargo/functions/fnc_loadItem.sqf index ae2d845d38..21ebc0d52a 100644 --- a/addons/cargo/functions/fnc_loadItem.sqf +++ b/addons/cargo/functions/fnc_loadItem.sqf @@ -1,27 +1,36 @@ #include "..\script_component.hpp" /* * Author: Glowbal - * Load object into vehicle. + * Loads an object into a vehicle. * Objects loaded via classname remain virtual until unloaded. * * Arguments: - * 0: Item - * 1: Vehicle - * 2: Ignore interaction distance and stability checks + * 0: Item to be loaded or (default: "") + * 1: Holder object (vehicle) (default: objNull) + * 2: Ignore interaction distance and stability checks (default: false) * * Return Value: * Object loaded * * Example: - * [object, vehicle] call ace_cargo_fnc_loadItem + * ["ACE_Wheel", cursorObject] call ace_cargo_fnc_loadItem * * Public: Yes */ -params [["_item","",[objNull,""]], ["_vehicle",objNull,[objNull]], ["_ignoreInteraction", false]]; -TRACE_2("params",_item,_vehicle); +params [["_item", "", [objNull, ""]], ["_vehicle", objNull, [objNull]], ["_ignoreInteraction", false, [false]]]; +TRACE_3("params",_item,_vehicle,_ignoreInteraction); -if !([_item, _vehicle, _ignoreInteraction] call FUNC(canLoadItemIn)) exitWith {TRACE_2("cannot load",_item,_vehicle); false}; +// Get config sensitive case name +if (_item isEqualType "") then { + _item = _item call EFUNC(common,getConfigName); +}; + +if !([_item, _vehicle, _ignoreInteraction] call FUNC(canLoadItemIn)) exitWith { + TRACE_3("cannot load",_item,_vehicle,_ignoreInteraction); + + false // return +}; private _loaded = _vehicle getVariable [QGVAR(loaded), []]; _loaded pushBack _item; @@ -29,17 +38,33 @@ _vehicle setVariable [QGVAR(loaded), _loaded, true]; TRACE_1("added to loaded array",_loaded); -private _space = [_vehicle] call FUNC(getCargoSpaceLeft); -private _itemSize = [_item] call FUNC(getSizeItem); -_vehicle setVariable [QGVAR(space), _space - _itemSize, true]; +// Update cargo space remaining +private _cargoSpace = _vehicle call FUNC(getCargoSpaceLeft); +private _itemSize = (_item call FUNC(getSizeItem)) max 0; // don't let negative size items increase space +_vehicle setVariable [QGVAR(space), _cargoSpace - _itemSize, true]; +// Attach object 100m below vehicle if (_item isEqualType objNull) then { detach _item; - _item attachTo [_vehicle,[0,0,-100]]; + _item attachTo [_vehicle, [0, 0, -100]]; [QEGVAR(common,hideObjectGlobal), [_item, true]] call CBA_fnc_serverEvent; - // Some objects below water will take damage over time and eventualy become "water logged" and unfixable (because of negative z attach) - [_item, "blockDamage", "ACE_cargo", true] call EFUNC(common,statusEffect_set); + if (["ace_zeus"] call EFUNC(common,isModLoaded)) then { + private _objectCurators = objectCurators _item; + + // Save which curators had this object as editable + _item setVariable [QGVAR(objectCurators), _objectCurators, true]; + + if (_objectCurators isEqualTo []) exitWith {}; + + [QEGVAR(zeus,removeObjects), [[_item], _objectCurators]] call CBA_fnc_serverEvent; + }; + + // Some objects below water will take damage over time, eventually becoming "water logged" and unfixable (because of negative z attach) + [_item, "blockDamage", QUOTE(ADDON), true] call EFUNC(common,statusEffect_set); }; -true +// Invoke listenable event +["ace_cargoLoaded", [_item, _vehicle]] call CBA_fnc_globalEvent; + +true // return diff --git a/addons/cargo/functions/fnc_onMenuOpen.sqf b/addons/cargo/functions/fnc_onMenuOpen.sqf index 16e66a6ed1..b0f7e7ffb9 100644 --- a/addons/cargo/functions/fnc_onMenuOpen.sqf +++ b/addons/cargo/functions/fnc_onMenuOpen.sqf @@ -1,7 +1,7 @@ #include "..\script_component.hpp" /* * Author: Glowbal - * Handle the UI data display. + * Handles the UI data display. * * Arguments: * 0: Display @@ -10,7 +10,7 @@ * None * * Example: - * [display] call ace_cargo_fnc_onMenuOpen + * display call ace_cargo_fnc_onMenuOpen * * Public: No */ @@ -22,37 +22,79 @@ params ["_display"]; uiNamespace setVariable [QGVAR(menuDisplay), _display]; if (GVAR(interactionParadrop)) then { - (_display displayCtrl 12) ctrlSetText (localize LSTRING(paradropButton)); + (_display displayCtrl 12) ctrlSetText LLSTRING(paradropButton); }; [{ + params ["_vehicle", "_pfhID"]; + disableSerialization; + private _display = uiNamespace getVariable QGVAR(menuDisplay); - if (isnil "_display") exitWith { - [_this select 1] call CBA_fnc_removePerFrameHandler; + + if (isNil "_display") exitWith { + GVAR(interactionVehicle) = nil; + GVAR(interactionParadrop) = nil; + + _pfhID call CBA_fnc_removePerFrameHandler; }; - if (isNull GVAR(interactionVehicle) || {(([ACE_player, GVAR(interactionVehicle)] call EFUNC(interaction,getInteractionDistance)) >= MAX_LOAD_DISTANCE) && {(vehicle ACE_player) != GVAR(interactionVehicle)}}) exitWith { + // Close menu if in invalid state + if ( + !alive _vehicle || + {locked _vehicle >= 2} || + {!(_vehicle getVariable [QGVAR(hasCargo), true])} || // if the cargo menu could be opened, the vehicle has QGVAR(hasCargo) in its config or the variable is set using FUNC(setSpace) + { + isNull findDisplay 312 && // if in Zeus, ignore the following checks + {([ACE_player, _vehicle] call EFUNC(interaction,getInteractionDistance)) >= MAX_LOAD_DISTANCE} && + {(vehicle ACE_player) != _vehicle} + } + ) exitWith { closeDialog 0; - [_this select 1] call CBA_fnc_removePerFrameHandler; + + GVAR(interactionVehicle) = nil; + GVAR(interactionParadrop) = nil; + + _pfhID call CBA_fnc_removePerFrameHandler; }; - private _loaded = GVAR(interactionVehicle) getVariable [QGVAR(loaded), []]; private _ctrl = _display displayCtrl 100; private _label = _display displayCtrl 2; + // Remove previous entries lbClear _ctrl; + + // Display item names + private _displayName = ""; + private _itemSize = 0; + private _index = -1; + private _damageStr = "0%"; + private _damage = 0; + { - private _class = if (_x isEqualType "") then {_x} else {typeOf _x}; - private _displayName = [_x, true] call FUNC(getNameItem); - if (GVAR(interactionParadrop)) then { - _ctrl lbAdd format ["%1 (%2s)", _displayName, GVAR(paradropTimeCoefficent) * ([_class] call FUNC(getSizeItem))]; + _displayName = [_x, true] call FUNC(getNameItem); + _itemSize = _x call FUNC(getSizeItem); + _damage = if (_x isEqualType "") then {0} else {damage _x}; + _damageStr = ((_damage * 100) toFixed 0) + "%"; + + if (_itemSize >= 0) then { + _index = if (GVAR(interactionParadrop)) then { + _ctrl lbAdd format ["%1. %2 (%3s)", _forEachIndex + 1, _displayName, GVAR(paradropTimeCoefficent) * _itemSize] + } else { + _ctrl lbAdd format ["%1. %2", _forEachIndex + 1, _displayName] + }; + + private _tooltip = format ["%1\n%2", format [LLSTRING(sizeMenu), _itemSize], format ["%1: %2", localize "str_a3_normaldamage1", _damageStr]]; + _ctrl lbSetTooltip [_index, _tooltip]; } else { - _ctrl lbAdd _displayName; + // If item has a size < 0, it means it's not loadable + _index = _ctrl lbAdd _displayName; + + _ctrl lbSetTooltip [_index, LLSTRING(unloadingImpossible)]; + _ctrl lbSetColor [_index, [1, 0, 0, 1]]; // set text to red + _ctrl lbSetSelectColor [_index, [1, 0, 0, 1]]; }; + } forEach (_vehicle getVariable [QGVAR(loaded), []]); - true - } count _loaded; - - _label ctrlSetText format[localize LSTRING(labelSpace), [GVAR(interactionVehicle)] call DFUNC(getCargoSpaceLeft)]; -}, 0, []] call CBA_fnc_addPerFrameHandler; + _label ctrlSetText format [LLSTRING(labelSpace), (_vehicle call FUNC(getCargoSpaceLeft)) max 0]; +}, 0, GVAR(interactionVehicle)] call CBA_fnc_addPerFrameHandler; diff --git a/addons/cargo/functions/fnc_paradropItem.sqf b/addons/cargo/functions/fnc_paradropItem.sqf index d1f61fb6a2..acd780f463 100644 --- a/addons/cargo/functions/fnc_paradropItem.sqf +++ b/addons/cargo/functions/fnc_paradropItem.sqf @@ -1,18 +1,18 @@ #include "..\script_component.hpp" /* * Author: marc_book, commy2, CAA-Picard - * Unload and paradrop object from plane or helicopter. + * Unloads and paradrops an object from a plane or helicopter. * * Arguments: - * 0: Object - * 1: Vehicle + * 0: Item or + * 1: Holder object (vehicle) * 2: Show Hint (default: true) * * Return Value: * Object unloaded * * Example: - * [object, vehicle] call ace_cargo_fnc_paradropItem + * ["ACE_Wheel", vehicle player] call ace_cargo_fnc_paradropItem * * Public: No */ @@ -20,51 +20,68 @@ params ["_item", "_vehicle", ["_showHint", true]]; TRACE_2("params",_item,_vehicle); +// Get config sensitive case name +if (_item isEqualType "") then { + _item = _item call EFUNC(common,getConfigName); +}; + +// Check if item is actually part of cargo private _loaded = _vehicle getVariable [QGVAR(loaded), []]; -if !(_item in _loaded) exitWith {false}; +if !(_item in _loaded) exitWith { + false // return +}; -// unload item from cargo +// Check if item can be unloaded +private _itemSize = _item call FUNC(getSizeItem); + +if (_itemSize < 0) exitWith { + false // return +}; + +// Unload item from cargo _loaded deleteAt (_loaded find _item); _vehicle setVariable [QGVAR(loaded), _loaded, true]; -private _cargoSpace = [_vehicle] call FUNC(getCargoSpaceLeft); -private _itemSize = [_item] call FUNC(getSizeItem); -_vehicle setVariable [QGVAR(space), (_cargoSpace + _itemSize), true]; +// Update cargo space remaining +private _cargoSpace = _vehicle call FUNC(getCargoSpaceLeft); +_vehicle setVariable [QGVAR(space), _cargoSpace + _itemSize, true]; (boundingBoxReal _vehicle) params ["_bb1", "_bb2"]; private _distBehind = ((_bb1 select 1) min (_bb2 select 1)) - 4; // 4 meters behind max bounding box -TRACE_1("",_distBehind); private _posBehindVehicleAGL = _vehicle modelToWorld [0, _distBehind, -2]; +TRACE_1("",_distBehind); private _object = _item; + if (_item isEqualType objNull) then { detach _object; + // hideObjectGlobal must be executed before setPos to ensure light objects are rendered correctly - // do both on server to ensure they are executed in the correct order + // Do both on server to ensure they are executed in the correct order [QGVAR(serverUnload), [_object, _posBehindVehicleAGL]] call CBA_fnc_serverEvent; } else { _object = createVehicle [_item, _posBehindVehicleAGL, [], 0, "NONE"]; _object setPosASL (AGLtoASL _posBehindVehicleAGL); }; -[QEGVAR(common,setVelocity), [_object, ((velocity _vehicle) vectorAdd ((vectorNormalized (vectorDir _vehicle)) vectorMultiply -5))], _object] call CBA_fnc_targetEvent; +[QEGVAR(common,setVelocity), [_object, (velocity _vehicle) vectorAdd ((vectorNormalized (vectorDir _vehicle)) vectorMultiply -5)], _object] call CBA_fnc_targetEvent; -// open parachute and ir light effect +// Open parachute and IR light effect [{ params ["_object"]; if (isNull _object || {getPos _object select 2 < 1}) exitWith {}; - private _parachute = createVehicle ["B_Parachute_02_F", [0,0,0], [], 0, "CAN_COLLIDE"]; + private _parachute = createVehicle ["B_Parachute_02_F", [0, 0, 0], [], 0, "CAN_COLLIDE"]; // Prevent collision damage [QEGVAR(common,fixCollision), _parachute] call CBA_fnc_localEvent; [QEGVAR(common,fixCollision), _object, _object] call CBA_fnc_targetEvent; - // cannot use setPos on parachutes without them closing down - _parachute attachTo [_object, [0,0,0]]; + // Cannot use setPos on parachutes without them closing down + _parachute attachTo [_object, [0, 0, 0]]; detach _parachute; private _velocity = velocity _object; @@ -76,13 +93,12 @@ if (_item isEqualType objNull) then { _parachute setVelocity _velocity; if ((GVAR(disableParadropEffectsClasstypes) findIf {_object isKindOf _x}) == -1) then { - private _light = "Chemlight_yellow" createVehicle [0,0,0]; - _light attachTo [_object, [0,0,0]]; + private _light = "Chemlight_yellow" createVehicle [0, 0, 0]; + _light attachTo [_object, [0, 0, 0]]; }; +}, _object, 0.7] call CBA_fnc_waitAndExecute; -}, [_object], 0.7] call CBA_fnc_waitAndExecute; - -// smoke effect when crate landed +// Create smoke effect when crate landed [{ (_this select 0) params ["_object"]; @@ -90,21 +106,20 @@ if (_item isEqualType objNull) then { [_this select 1] call CBA_fnc_removePerFrameHandler; }; - if (getPos _object select 2 < 1) then { - if ((GVAR(disableParadropEffectsClasstypes) findIf {_object isKindOf _x}) == -1) then { - private _smoke = "SmokeshellYellow" createVehicle [0,0,0]; - _smoke attachTo [_object, [0,0,0]]; - }; - + if (getPos _object select 2 < 1) exitWith { [_this select 1] call CBA_fnc_removePerFrameHandler; - }; -}, 1, [_object]] call CBA_fnc_addPerFrameHandler; + if ((GVAR(disableParadropEffectsClasstypes) findIf {_object isKindOf _x}) == -1) then { + private _smoke = "SmokeshellYellow" createVehicle [0, 0, 0]; + _smoke attachTo [_object, [0, 0, 0]]; + }; + }; +}, 1, _object] call CBA_fnc_addPerFrameHandler; if (_showHint) then { [ [ - LSTRING(UnloadedItem), + LSTRING(unloadedItem), [_object, true] call FUNC(getNameItem), getText (configOf _vehicle >> "displayName") ], @@ -115,4 +130,4 @@ if (_showHint) then { // Invoke listenable event ["ace_cargoUnloaded", [_object, _vehicle, "paradrop"]] call CBA_fnc_globalEvent; -true +true // return diff --git a/addons/cargo/functions/fnc_removeCargoItem.sqf b/addons/cargo/functions/fnc_removeCargoItem.sqf index b15a5a7434..6e95893992 100644 --- a/addons/cargo/functions/fnc_removeCargoItem.sqf +++ b/addons/cargo/functions/fnc_removeCargoItem.sqf @@ -4,23 +4,28 @@ * Removes a cargo item from the vehicle. * * Arguments: - * 0: Item or - * 1: Vehicle + * 0: Item to be removed or (default: "") + * 1: Holder object (vehicle) (default: objNull) * 2: Amount (default: 1) * * Return Value: * Number of items removed * * Example: - * ["ACE_Wheel", vehicle, 2] call ace_cargo_fnc_removeCargoItem + * ["ACE_Wheel", cursorObject, 2] call ace_cargo_fnc_removeCargoItem * [crate_7, truck] call ace_cargo_fnc_removeCargoItem * * Public: Yes */ -params ["_item", "_vehicle", ["_amount", 1]]; +params [["_item", "", [objNull, ""]], ["_vehicle", objNull, [objNull]], ["_amount", 1, [0]]]; TRACE_3("params",_item,_vehicle,_amount); +// Get config sensitive case name +if (_item isEqualType "") then { + _item = _item call EFUNC(common,getConfigName); +}; + private _loaded = _vehicle getVariable [QGVAR(loaded), []]; private _addedSpace = 0; @@ -29,31 +34,40 @@ private _itemsRemoved = 0; private _continue = if (_item isEqualType objNull) then { if !(_item in _loaded) exitWith {false}; - _addedSpace = [_item] call FUNC(getSizeItem); + + _addedSpace = (_item call FUNC(getSizeItem)) max 0; // don't let negative size items increase space _loaded deleteAt (_loaded find _item); + _itemClass = typeOf _item; + + // Delete item deleteVehicle _item; + _itemsRemoved = 1; + true } else { { if (_itemsRemoved == _amount) exitWith {}; if ( - (_x isEqualType "" && {_x == _item}) || // Check for classname, case-insensitive - {_x isEqualType objNull && {typeOf _x isEqualTo _item}} + (_x isEqualType "" && {_x == _item}) || + {_x isEqualType objNull && {typeOf _x == _item}} ) then { INC(_itemsRemoved); - ADD(_addedSpace,[_x] call FUNC(getSizeItem)); + _addedSpace = _addedSpace + ((_x call FUNC(getSizeItem)) max 0); // don't let negative size items increase space + // Delete item if (_x isEqualType objNull) then { deleteVehicle _x; }; + _loaded set [_forEachIndex, nil]; }; } forEach _loaded; FILTER(_loaded,!isNil "_x"); + true }; @@ -61,8 +75,9 @@ if (!_continue) exitWith {0}; _vehicle setVariable [QGVAR(loaded), _loaded, true]; -private _space = [_vehicle] call FUNC(getCargoSpaceLeft); -_vehicle setVariable [QGVAR(space), _space + _addedSpace, true]; +// Update remaining cargo space +private _cargoSpace = _vehicle call FUNC(getCargoSpaceLeft); +_vehicle setVariable [QGVAR(space), _cargoSpace + _addedSpace, true]; // Invoke listenable event ["ace_cargoRemoved", [_itemClass, _vehicle, _amount, _itemsRemoved]] call CBA_fnc_globalEvent; diff --git a/addons/cargo/functions/fnc_renameObject.sqf b/addons/cargo/functions/fnc_renameObject.sqf index c088dcf62a..a10d54df7e 100644 --- a/addons/cargo/functions/fnc_renameObject.sqf +++ b/addons/cargo/functions/fnc_renameObject.sqf @@ -1,7 +1,7 @@ #include "..\script_component.hpp" /* * Author: JasperRab - * Renames object. + * Renames an object. * * Arguments: * None @@ -10,19 +10,23 @@ * None * * Example: - * [] call ace_cargo_fnc_renameObject + * call ace_cargo_fnc_renameObject * - * Public: Yes + * Public: No */ private _display = uiNamespace getVariable QGVAR(menuDisplay); + if (isNil "_display") exitWith {}; private _ctrlEditText = ctrlText 100; -_ctrlEditText = _ctrlEditText select [0,32]; -if (_ctrlEditText isEqualTo "") then { // custom name has been removed +_ctrlEditText = _ctrlEditText select [0, 32]; + +// Check if custom name has been removed +if (_ctrlEditText isEqualTo "") then { [LSTRING(clearedCustomName), 3] call EFUNC(common,displayTextStructured); } else { [[LSTRING(renamedObject), _ctrlEditText], 3] call EFUNC(common,displayTextStructured); }; + GVAR(interactionVehicle) setVariable [QGVAR(customName), _ctrlEditText, true]; diff --git a/addons/cargo/functions/fnc_setSize.sqf b/addons/cargo/functions/fnc_setSize.sqf index 523bbdbb61..8804c81266 100644 --- a/addons/cargo/functions/fnc_setSize.sqf +++ b/addons/cargo/functions/fnc_setSize.sqf @@ -1,57 +1,55 @@ #include "..\script_component.hpp" /* * Author: kymckay - * Set the cargo size of any object. Has global effect. + * Sets the cargo size of any object. Has global effect. * Adds the load action menu if necessary. - * Negative size makes unloadable. + * A negative size disables the object's cargo interactions. * * Arguments: - * 0: Object - * 1: Cargo size + * 0: Object (default: objNull) + * 1: Cargo size (default: nil) * * Return Value: * None * * Example: - * [cursorTarget, 3] call ace_cargo_fnc_setSize + * [cursorObject, 3] call ace_cargo_fnc_setSize * * Public: Yes */ -// Only run this after the settings are initialized -if !(EGVAR(common,settingsInitFinished)) exitWith { - EGVAR(common,runAtSettingsInitialized) pushBack [FUNC(setSize), _this]; -}; - params [ - ["_object",objNull,[objNull]], - ["_size",nil,[0]] // Default can't be a number since all are valid + ["_object", objNull, [objNull]], + ["_size", nil, [0]] // default can't be a number since all are valid ]; TRACE_2("setSize",_object,_size); +private _oldSize = _object call FUNC(getSizeItem); + // Nothing to do here -if ( - (isNil "_size") || - {isNull _object} || - {_size == _object getVariable [QGVAR(size), CARGO_SIZE(typeOf _object)]} -) exitWith {}; +if (isNil "_size" || {isNull _object} || {_size == _oldSize}) exitWith {}; // Apply new size globally -// Necessary to update value, even if unloadable, as API could be used again +// Necessary to update value, even if disabled, as API could be used again _object setVariable [QGVAR(canLoad), _size >= 0, true]; _object setVariable [QGVAR(size), _size, true]; -// If no size no need for load action -if (_size < 0) exitWith {}; +// Update remaining cargo space, if loaded as cargo in a vehicle +private _vehicle = attachedTo _object; -// If an existing ID is present, load action has already been added globally -private _jipID = _object getVariable QGVAR(setSize_jipID); +if (!isNull _vehicle && {_object in (_vehicle getVariable [QGVAR(loaded), []])}) then { + private _cargoSpace = _vehicle call FUNC(getCargoSpaceLeft); -// Actions should be added to all future JIP players too -if (isNil "_jipID") then { - _jipID = [QGVAR(initObject), [_object]] call CBA_fnc_globalEventJIP; + _vehicle setVariable [QGVAR(space), _cargoSpace + (_oldSize max 0) - (_size max 0), true]; // don't let negative size items increase space +}; + +// Actions should be added for all future JIP players too, regardless of size +private _jipID = format [QGVAR(sizeJipID_%1), hashValue _object]; +[QGVAR(initObject), _object, _jipID] call CBA_fnc_globalEventJIP; + +// Remove from JIP queue if object is deleted +if !(_object getVariable [QGVAR(setSizeRemoveJip), false]) then { [_jipID, _object] call CBA_fnc_removeGlobalEventJIP; - // Store the ID for any future calls to this function - _object setVariable [QGVAR(setSize_jipID), _jipID, true]; + _object setVariable [QGVAR(setSizeRemoveJip), true, true]; }; diff --git a/addons/cargo/functions/fnc_setSpace.sqf b/addons/cargo/functions/fnc_setSpace.sqf index f573019a11..01c078496c 100644 --- a/addons/cargo/functions/fnc_setSpace.sqf +++ b/addons/cargo/functions/fnc_setSpace.sqf @@ -1,12 +1,12 @@ #include "..\script_component.hpp" /* * Author: kymckay - * Set the cargo space of any object. Has global effect. + * Sets the cargo space of any object. Has global effect. * Adds the cargo action menu if necessary. * * Arguments: - * 0: Object - * 1: Cargo space + * 0: Vehicle (default: objNull) + * 1: Cargo space (default: nil) * * Return Value: * None @@ -17,49 +17,38 @@ * Public: Yes */ -// Only run this after the settings are initialized -if !(EGVAR(common,settingsInitFinished)) exitWith { - EGVAR(common,runAtSettingsInitialized) pushBack [FUNC(setSpace), _this]; -}; - params [ - ["_vehicle",objNull,[objNull]], - ["_space",nil,[0]] // Default can't be a number since all are valid + ["_vehicle", objNull, [objNull]], + ["_space", nil, [0]] // default can't be a number since all are valid ]; -TRACE_2("setSpace",_vehicle,_size); +TRACE_2("setSpace",_vehicle,_space); // Nothing to do here -if ( - (isNil "_space") || - {isNull _vehicle} -) exitWith {}; +if (isNil "_space" || {isNull _vehicle}) exitWith {}; // Account for cargo already in the vehicle private _loaded = _vehicle getVariable [QGVAR(loaded), []]; -private _newSpace = _space; +private _cargoSpace = _space; + { - _newSpace = _newSpace - ([_x] call FUNC(getSizeItem)); + _cargoSpace = _cargoSpace - ((_x call FUNC(getSizeItem)) max 0); } forEach _loaded; // If the new value is the same as the old, do nothing -if (_newSpace == (_vehicle getVariable [QGVAR(space), CARGO_SPACE(typeOf _vehicle)])) exitwith {}; +if (_cargoSpace == (_vehicle call FUNC(getCargoSpaceLeft))) exitwith {}; // Apply new space globally -_vehicle setVariable [QGVAR(space), _newSpace, true]; // Necessary to update value, even if no space, as API could be used again _vehicle setVariable [QGVAR(hasCargo), _space > 0, true]; +_vehicle setVariable [QGVAR(space), _cargoSpace, true]; -// If no cargo space no need for cargo menu -if (_space <= 0) exitWith {}; +// Space should be added for all future JIP players too, regardless of space +private _jipID = format [QGVAR(spaceJipID_%1), hashValue _vehicle]; +[QGVAR(initVehicle), _vehicle, _jipID] call CBA_fnc_globalEventJIP; -// If an existing ID is present, cargo menu has already been added globally -private _jipID = _vehicle getVariable QGVAR(setSpace_jipID); - -// Cargo menu should be added to all future JIP players too -if (isNil "_jipID") then { - _jipID = [QGVAR(initVehicle), [_vehicle]] call CBA_fnc_globalEventJIP; +// Remove from JIP queue if vehicle is deleted +if !(_vehicle getVariable [QGVAR(setSpaceRemoveJip), false]) then { [_jipID, _vehicle] call CBA_fnc_removeGlobalEventJIP; - // Store the ID for any future calls to this function - _vehicle setVariable [QGVAR(setSpace_jipID), _jipID, true]; + _vehicle setVariable [QGVAR(setSpaceRemoveJip), true, true]; }; diff --git a/addons/cargo/functions/fnc_startLoadIn.sqf b/addons/cargo/functions/fnc_startLoadIn.sqf index 5add1386ed..767e5b8d68 100644 --- a/addons/cargo/functions/fnc_startLoadIn.sqf +++ b/addons/cargo/functions/fnc_startLoadIn.sqf @@ -1,67 +1,103 @@ #include "..\script_component.hpp" /* * Author: Glowbal - * Start load item. + * Starts loading item. * * Arguments: - * 0: Player - * 1: Object - * 2: Vehicle (Optional) + * 0: Unit doing the loading + * 1: Item to be loaded + * 2: Holder object (vehicle) (default: objNull) * * Return Value: * Load ProgressBar Started * * Example: - * [player, cursorTarget] call ace_cargo_fnc_startLoadIn + * [player, cursorObject] call ace_cargo_fnc_startLoadIn * * Public: No */ -params ["_player", "_object", ["_cargoVehicle", objNull]]; -TRACE_3("params",_player,_object,_cargoVehicle); +params ["_loader", "_item", ["_vehicle", objNull]]; +TRACE_3("params",_loader,_item,_vehicle); -private _vehicle = _cargoVehicle; if (isNull _vehicle) then { { - if ([_object, _x] call FUNC(canLoadItemIn)) exitWith {_vehicle = _x}; - } forEach (nearestObjects [_player, GVAR(cargoHolderTypes), (MAX_LOAD_DISTANCE + 10)]); + if ([_item, _x] call FUNC(canLoadItemIn)) exitWith { + _vehicle = _x; + }; + } forEach (nearestObjects [_loader, GVAR(cargoHolderTypes), MAX_LOAD_DISTANCE + 10]); }; if (isNull _vehicle) exitWith { - TRACE_3("Could not find vehicle",_player,_object,_vehicle); - false + TRACE_3("Could not find vehicle",_loader,_item,_vehicle); + + false // return }; -private _return = false; // Start progress bar -if ([_object, _vehicle] call FUNC(canLoadItemIn)) then { - [_player, _object, true] call EFUNC(common,claim); - private _size = [_object] call FUNC(getSizeItem); +if ([_item, _vehicle] call FUNC(canLoadItemIn)) then { + private _duration = GVAR(loadTimeCoefficient) * (_item call FUNC(getSizeItem)); + + // If load time is 0, don't show a progress bar + if (_duration <= 0) exitWith { + ["ace_loadCargo", [_item, _vehicle]] call CBA_fnc_localEvent; + + true // return + }; + + // Claim so nobody else can interact with it + [_loader, _item, true] call EFUNC(common,claim); [ - GVAR(loadTimeCoefficient) * _size, - [_object, _vehicle], + _duration, + [_item, _vehicle], { TRACE_1("load finish",_this); + [objNull, _this select 0 select 0, true] call EFUNC(common,claim); + ["ace_loadCargo", _this select 0] call CBA_fnc_localEvent; }, { TRACE_1("load fail",_this); - [objNull, _this select 0 select 0, true] call EFUNC(common,claim); + (_this select 0) params ["_item", "_vehicle"]; + + [objNull, _item, true] call EFUNC(common,claim); + + // Fix cancelling loading a carried item + if (!isNull attachedTo _item) then { + detach _item; + + // Prevent coliisions between item and vehicle + [QEGVAR(common,fixCollision), _vehicle, _vehicle] call CBA_fnc_targetEvent; + [QEGVAR(common,fixCollision), _item, _item] call CBA_fnc_targetEvent; + + [QEGVAR(common,fixPosition), _item, _item] call CBA_fnc_targetEvent; + [QEGVAR(common,fixFloating), _item, _item] call CBA_fnc_targetEvent; + }; }, - localize LSTRING(LoadingItem), + LLSTRING(loadingItem), { - (_this select 0) params ["_item", "_target"]; - (alive _target) && {locked _target < 2} && {alive _item} - && {([_item, _target] call EFUNC(interaction,getInteractionDistance)) < MAX_LOAD_DISTANCE} + (_this select 0) call FUNC(canLoadItemIn) }, ["isNotSwimming"] ] call EFUNC(common,progressBar); - _return = true; -} else { - private _displayName = [_object, true] call FUNC(getNameItem); - [[LSTRING(LoadingFailed), _displayName], 3] call EFUNC(common,displayTextStructured); -}; -_return + true // return +} else { + [[LSTRING(loadingFailed), [_item, true] call FUNC(getNameItem)], 3] call EFUNC(common,displayTextStructured); + + // Fix cancelling loading a carried item + if (!isNull attachedTo _item) then { + detach _item; + + // Prevent coliisions between item and vehicle + [QEGVAR(common,fixCollision), _vehicle, _vehicle] call CBA_fnc_targetEvent; + [QEGVAR(common,fixCollision), _item, _item] call CBA_fnc_targetEvent; + + [QEGVAR(common,fixPosition), _item, _item] call CBA_fnc_targetEvent; + [QEGVAR(common,fixFloating), _item, _item] call CBA_fnc_targetEvent; + }; + + false // return +}; diff --git a/addons/cargo/functions/fnc_startUnload.sqf b/addons/cargo/functions/fnc_startUnload.sqf index cf00327dcc..2fe9e923c2 100644 --- a/addons/cargo/functions/fnc_startUnload.sqf +++ b/addons/cargo/functions/fnc_startUnload.sqf @@ -1,16 +1,16 @@ #include "..\script_component.hpp" /* * Author: Glowbal - * Start unload action. + * Starts unloading item selected in the cargo menu. * * Arguments: - * None + * 0: Unit doing the unloading * * Return Value: * None * * Example: - * [] call ace_cargo_fnc_startUnload + * player call ace_cargo_fnc_startUnload * * Public: No */ @@ -18,75 +18,105 @@ disableSerialization; private _display = uiNamespace getVariable QGVAR(menuDisplay); + if (isNil "_display") exitWith {}; private _loaded = GVAR(interactionVehicle) getVariable [QGVAR(loaded), []]; + if (_loaded isEqualTo []) exitWith {}; -private _ctrl = _display displayCtrl 100; +// This can be an object or a classname string +private _item = _loaded param [lbCurSel (_display displayCtrl 100), nil]; -private _selected = (lbCurSel _ctrl) max 0; +if (isNil "_item") exitWith {}; -if (count _loaded <= _selected) exitWith {}; -private _item = _loaded select _selected; // This can be an object or a classname string +params ["_unit"]; if (GVAR(interactionParadrop)) exitWith { - // If drop time is 0 don't show a progress bar - if (GVAR(paradropTimeCoefficent) == 0) exitWith { + // Close the cargo menu + closeDialog 0; + + private _duration = GVAR(paradropTimeCoefficent) * (_item call FUNC(getSizeItem)); + + // If drop time is 0, don't show a progress bar + if (_duration <= 0) exitWith { [QGVAR(paradropItem), [_item, GVAR(interactionVehicle)]] call CBA_fnc_localEvent; }; // Start progress bar - paradrop - private _size = [_item] call FUNC(getSizeItem); - [ - GVAR(paradropTimeCoefficent) * _size, - [_item, GVAR(interactionVehicle), ACE_player], + // Delay execution by a frame, to avoid progress bar stopping prematurely because of the cargo menu still being open + [EFUNC(common,progressBar), [ + _duration, + [_item, GVAR(interactionVehicle)], { - (_this select 0) params ["_item", "_target", "_player"]; - [QGVAR(paradropItem), [_item, _target]] call CBA_fnc_localEvent; + [QGVAR(paradropItem), _this select 0] call CBA_fnc_localEvent; }, { - params ["_args", "", "", "_errorCode"]; // show warning if we failed because of flight conditions - if (_errorCode == 3) then { - _args params ["_item", "_target", "_player"]; - [localize LSTRING(unlevelFlightWarning)] call EFUNC(common,displayTextStructured); + params ["", "", "", "_errorCode"]; + + if (_errorCode == 3) then { // show warning if we failed because of flight conditions + [LSTRING(unlevelFlightWarning)] call EFUNC(common,displayTextStructured); }; }, - localize LSTRING(UnloadingItem), + LLSTRING(unloadingItem), { - (_this select 0) params ["_item", "_target", "_player"]; + (_this select 0) params ["", "_target"]; + if ((acos ((vectorUp _target) select 2)) > 30) exitWith {false}; // check flight level if (((getPos _target) select 2) < 25) exitWith {false}; // check height if ((speed _target) < -5) exitWith {false}; // check reverse + true }, - ["isNotSwimming", "isNotInside"] - ] call EFUNC(common,progressBar); + ["isNotSwimming", "isNotInside"], + false + ]] call CBA_fnc_execNextFrame; }; +// If in zeus +if (!isNull findDisplay 312) exitWith { + // Do not check distance to unit, but do check for valid position + if !([_item, GVAR(interactionVehicle), objNull, true] call FUNC(canUnloadItem)) exitWith { + [[LSTRING(unloadingFailed), [_item, true] call FUNC(getNameItem)], 3] call EFUNC(common,displayTextStructured); + }; + + // Close the cargo menu + closeDialog 1; + + ["ace_unloadCargo", [_item, GVAR(interactionVehicle)]] call CBA_fnc_localEvent; +}; // Start progress bar - normal ground unload -if ([_item, GVAR(interactionVehicle), ACE_player] call FUNC(canUnloadItem)) then { - private _size = [_item] call FUNC(getSizeItem); +if ([_item, GVAR(interactionVehicle), _unit] call FUNC(canUnloadItem)) then { + // Close the cargo menu + closeDialog 0; + + private _duration = GVAR(loadTimeCoefficient) * (_item call FUNC(getSizeItem)); + + // If unload time is 0, don't show a progress bar + if (_duration <= 0) exitWith { + ["ace_unloadCargo", [_item, GVAR(interactionVehicle), _unit]] call CBA_fnc_localEvent; + }; [ - GVAR(loadTimeCoefficient) * _size, - [_item, GVAR(interactionVehicle), ACE_player], - {TRACE_1("unload finish",_this); ["ace_unloadCargo", _this select 0] call CBA_fnc_localEvent}, - {TRACE_1("unload fail",_this);}, - localize LSTRING(UnloadingItem), + _duration, + [_item, GVAR(interactionVehicle), _unit], { - (_this select 0) params ["_item", "_target", "_player"]; + TRACE_1("unload finish",_this); - (alive _target) - && {locked _target < 2} - && {([_player, _target] call EFUNC(interaction,getInteractionDistance)) < MAX_LOAD_DISTANCE} - && {_item in (_target getVariable [QGVAR(loaded), []])} + ["ace_unloadCargo", _this select 0] call CBA_fnc_localEvent; + }, + { + TRACE_1("unload fail",_this); + }, + LLSTRING(unloadingItem), + { + (_this select 0) params ["_item", "_vehicle", "_unit"]; + + [_item, _vehicle, _unit, false, true] call FUNC(canUnloadItem) // don't check for a suitable unloading position every frame }, ["isNotSwimming"] ] call EFUNC(common,progressBar); } else { - private _displayName = [_item, true] call FUNC(getNameItem); - - [[LSTRING(UnloadingFailed), _displayName], 3] call EFUNC(common,displayTextStructured); + [[LSTRING(unloadingFailed), [_item, true] call FUNC(getNameItem)], 3] call EFUNC(common,displayTextStructured); }; diff --git a/addons/cargo/functions/fnc_unloadCarryItem.sqf b/addons/cargo/functions/fnc_unloadCarryItem.sqf index 3b97cf1599..7baac21b73 100644 --- a/addons/cargo/functions/fnc_unloadCarryItem.sqf +++ b/addons/cargo/functions/fnc_unloadCarryItem.sqf @@ -4,17 +4,18 @@ * Dragging integration. Unloader starts carrying unloaded object. * * Arguments: - * 0: Unloader - * 1: Item + * 0: Unit doing the unloading + * 1: Unloaded item * * Return Value: * None * * Example: - * [player, object] call ace_cargo_fnc_unloadCarryItem + * [player, cursorObject] call ace_cargo_fnc_unloadCarryItem * * Public: No */ + params ["_unloader", "_object"]; TRACE_2("unloadCarryItem-start",_unloader,_object); @@ -24,17 +25,21 @@ if (!GVAR(carryAfterUnload) || {getNumber (configOf _object >> QGVAR(blockUnload // When unloading attached objects, this code will run before server has finished moving object to the safe position [{ params ["_unloader", "_object"]; + (_unloader distance _object) < 10 }, { params ["_unloader", "_object"]; + TRACE_2("unloadCarryItem-unloaded",_unloader,_object); + if ([_unloader, _object] call EFUNC(dragging,canCarry)) exitWith { [_unloader, _object] call EFUNC(dragging,startCarry); }; + if ([_unloader, _object] call EFUNC(dragging,canDrag)) exitWith { [_unloader, _object] call EFUNC(dragging,startDrag); }; -}, _this, 1.0, { // delay is based on how long it will take server event to trigger and take effect - // not a hard error if this fails, could have just unloaded to other side of vehicle because of findSafePos +}, _this, 1, { // Delay is based on how long it will take server event to trigger and take effect + // Not a hard error if this fails, could have just unloaded to other side of vehicle because of findSafePos TRACE_1("unloadCarryItem-failed to unload nearby player",_this); }] call CBA_fnc_waitUntilAndExecute; diff --git a/addons/cargo/functions/fnc_unloadItem.sqf b/addons/cargo/functions/fnc_unloadItem.sqf index 83b0b2ff0e..c18e89361e 100644 --- a/addons/cargo/functions/fnc_unloadItem.sqf +++ b/addons/cargo/functions/fnc_unloadItem.sqf @@ -1,58 +1,84 @@ #include "..\script_component.hpp" /* * Author: Glowbal, ViperMaul - * Unload object from vehicle. + * Unloads an object from a vehicle. * * Arguments: - * 0: Item - * 1: Vehicle + * 0: Item to be unloaded or (default: "") + * 1: Holder object (vehicle) (default: objNull) * 2: Unloader (default: objNull) * * Return Value: - * Object was unloaded + * Object unloaded * * Example: - * [object, vehicle] call ace_cargo_fnc_unloadItem + * ["ACE_Wheel", cursorObject] call ace_cargo_fnc_unloadItem * * Public: Yes */ -params ["_item", "_vehicle", ["_unloader", objNull]]; +params [["_item", "", [objNull, ""]], ["_vehicle", objNull, [objNull]], ["_unloader", objNull, [objNull]]]; TRACE_3("params",_item,_vehicle,_unloader); -//This covers testing vehicle stability and finding a safe position -private _emptyPosAGL = [_vehicle, _item, _unloader] call EFUNC(common,findUnloadPosition); -TRACE_1("findUnloadPosition",_emptyPosAGL); - -if ((count _emptyPosAGL) != 3) exitWith { - TRACE_4("Could not find unload pos",_vehicle,getPosASL _vehicle,isTouchingGround _vehicle,speed _vehicle); - if ((!isNull _unloader) && {_unloader == ACE_player}) then { - //display text saying there are no safe places to exit the vehicle - [localize ELSTRING(common,NoRoomToUnload)] call EFUNC(common,displayTextStructured); - }; - false +// Get config sensitive case name +if (_item isEqualType "") then { + _item = _item call EFUNC(common,getConfigName); }; +// Check if item is actually part of cargo private _loaded = _vehicle getVariable [QGVAR(loaded), []]; if !(_item in _loaded) exitWith { - ERROR_3("Tried to unload item [%1] not in vehicle[%2] cargo[%3]", _item, _vehicle, _loaded); - false + ERROR_3("Tried to unload item [%1] not in vehicle[%2] cargo[%3]",_item,_vehicle,_loaded); + + false // return }; +// Check if item can be unloaded +private _itemSize = _item call FUNC(getSizeItem); + +if (_itemSize < 0) exitWith { + false // return +}; + +// This covers testing vehicle stability and finding a safe position +private _emptyPosAGL = [_vehicle, _item, _unloader] call EFUNC(common,findUnloadPosition); +TRACE_1("findUnloadPosition",_emptyPosAGL); + +if (_emptyPosAGL isEqualTo []) exitWith { + // Display text saying there are no safe places to exit the vehicle + if (!isNull _unloader && {_unloader == ACE_player}) then { + [ELSTRING(common,NoRoomToUnload)] call EFUNC(common,displayTextStructured); + }; + + false // return +}; + +// Unload item from cargo _loaded deleteAt (_loaded find _item); _vehicle setVariable [QGVAR(loaded), _loaded, true]; -private _space = [_vehicle] call FUNC(getCargoSpaceLeft); -private _itemSize = [_item] call FUNC(getSizeItem); -_vehicle setVariable [QGVAR(space), (_space + _itemSize), true]; +// Update cargo space remaining +private _cargoSpace = _vehicle call FUNC(getCargoSpaceLeft); +_vehicle setVariable [QGVAR(space), _cargoSpace + _itemSize, true]; private _object = _item; + if (_object isEqualType objNull) then { detach _object; + // hideObjectGlobal must be executed before setPos to ensure light objects are rendered correctly - // do both on server to ensure they are executed in the correct order + // Do both on server to ensure they are executed in the correct order [QGVAR(serverUnload), [_object, _emptyPosAGL]] call CBA_fnc_serverEvent; + + if (["ace_zeus"] call EFUNC(common,isModLoaded)) then { + // Get which curators had this object as editable + private _objectCurators = _object getVariable [QGVAR(objectCurators), []]; + + if (_objectCurators isEqualTo []) exitWith {}; + + [QEGVAR(zeus,addObjects), [[_object], _objectCurators]] call CBA_fnc_serverEvent; + }; } else { _object = createVehicle [_item, _emptyPosAGL, [], 0, "NONE"]; _object setPosASL (AGLtoASL _emptyPosAGL); @@ -66,4 +92,5 @@ if (_object isEqualType objNull) then { // Invoke listenable event ["ace_cargoUnloaded", [_object, _vehicle, "unload"]] call CBA_fnc_globalEvent; -true + +true // return diff --git a/addons/cargo/functions/fnc_validateCargoSpace.sqf b/addons/cargo/functions/fnc_validateCargoSpace.sqf deleted file mode 100644 index f5b976c395..0000000000 --- a/addons/cargo/functions/fnc_validateCargoSpace.sqf +++ /dev/null @@ -1,37 +0,0 @@ -#include "..\script_component.hpp" -/* - * Author: Glowbal - * Validate the vehicle cargo space. - * - * Arguments: - * 0: Object - * - * Return Value: - * None - * - * Example: - * [object] call ace_cargo_fnc_validateCargoSpace - * - * Public: No - */ - -params ["_vehicle"]; -TRACE_1("params",_vehicle); - -private _loaded = _vehicle getVariable [QGVAR(loaded), []]; - -private _newLoaded = []; -private _totalSpaceOccupied = 0; -{ - if ((_x isEqualType "") || {!isNull _x}) then { - _newLoaded pushback _x; - _totalSpaceOccupied = _totalSpaceOccupied + ([_x] call FUNC(getSizeItem)); - }; - true -} count _loaded; - -if (count _loaded != count _newLoaded) then { - _vehicle setVariable [QGVAR(loaded), _newLoaded, true]; -}; - -_vehicle setVariable [QGVAR(space), getNumber (configOf _vehicle >> QGVAR(space)) - _totalSpaceOccupied, true]; diff --git a/addons/cargo/initSettings.sqf b/addons/cargo/initSettings.inc.sqf similarity index 69% rename from addons/cargo/initSettings.sqf rename to addons/cargo/initSettings.inc.sqf index e971d2d9c7..2f9fd94024 100644 --- a/addons/cargo/initSettings.sqf +++ b/addons/cargo/initSettings.inc.sqf @@ -1,52 +1,60 @@ +private _category = [ELSTRING(main,Category_Logistics), LSTRING(openMenu)]; + [ - QGVAR(enable), "CHECKBOX", + QGVAR(enable), + "CHECKBOX", [LSTRING(ModuleSettings_enable), LSTRING(ModuleSettings_enable_Description)], - [LELSTRING(OptionsMenu,CategoryLogistics), LLSTRING(openMenu)], + _category, true, true, {[QGVAR(enable), _this] call EFUNC(common,cbaSettings_settingChanged)} ] call CBA_fnc_addSetting; [ - QGVAR(loadTimeCoefficient), "SLIDER", + QGVAR(loadTimeCoefficient), + "SLIDER", [LSTRING(loadTimeCoefficient), LSTRING(loadTimeCoefficient_description)], - [LELSTRING(OptionsMenu,CategoryLogistics), LLSTRING(openMenu)], + _category, [0, 10, 5, 1], true, {[QGVAR(loadTimeCoefficient), _this, true] call EFUNC(common,cbaSettings_settingChanged)} ] call CBA_fnc_addSetting; [ - QGVAR(paradropTimeCoefficent), "SLIDER", + QGVAR(paradropTimeCoefficent), + "SLIDER", [LSTRING(paradropTimeCoefficent), LSTRING(paradropTimeCoefficent_description)], - [LELSTRING(OptionsMenu,CategoryLogistics), LLSTRING(openMenu)], + _category, [0, 10, 2.5, 1], true, {[QGVAR(paradropTimeCoefficent), _this, true] call EFUNC(common,cbaSettings_settingChanged)} ] call CBA_fnc_addSetting; [ - QGVAR(openAfterUnload), "LIST", + QGVAR(openAfterUnload), + "LIST", [LSTRING(openAfterUnload), LSTRING(openAfterUnload_description)], - [LELSTRING(OptionsMenu,CategoryLogistics), LLSTRING(openMenu)], + _category, [[0, 1, 2, 3], [ELSTRING(common,never), LSTRING(unloadObject), LSTRING(paradropButton), ELSTRING(common,both)], 0], false, {[QGVAR(openAfterUnload), _this, true] call EFUNC(common,cbaSettings_settingChanged)} ] call CBA_fnc_addSetting; [ - QGVAR(enableRename), "CHECKBOX", + QGVAR(enableRename), + "CHECKBOX", [LSTRING(ModuleSettings_enableRename), LSTRING(ModuleSettings_enableRename_Description)], - [LELSTRING(OptionsMenu,CategoryLogistics), LLSTRING(openMenu)], + _category, true, false, {[QGVAR(enableRename), _this, true] call EFUNC(common,cbaSettings_settingChanged)} ] call CBA_fnc_addSetting; [ - QGVAR(carryAfterUnload), "CHECKBOX", + QGVAR(carryAfterUnload), + "CHECKBOX", [LSTRING(carryAfterUnload), LSTRING(carryAfterUnload_description)], - [LELSTRING(OptionsMenu,CategoryLogistics), LLSTRING(openMenu)], + _category, true, false, {[QGVAR(carryAfterUnload), _this] call EFUNC(common,cbaSettings_settingChanged)} diff --git a/addons/cargo/menu.hpp b/addons/cargo/menu.hpp index d86c49e6f5..8c41fc43a5 100644 --- a/addons/cargo/menu.hpp +++ b/addons/cargo/menu.hpp @@ -4,7 +4,7 @@ class GVAR(menu) { idd = 314614; movingEnable = 1; onLoad = QUOTE([_this select 0] call FUNC(onMenuOpen)); - onUnload = QUOTE(uiNamespace setVariable [ARR_2(QUOTE(QGVAR(menuDisplay)),nil)];); + onUnload = QUOTE(uiNamespace setVariable [ARR_2(QQGVAR(menuDisplay),nil)]); class controlsBackground { class HeaderBackground: ACE_gui_backgroundBase { idc = -1; @@ -20,7 +20,7 @@ class GVAR(menu) { h = "13.1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; text = "#(argb,8,8,3)color(0,0,0,0.8)"; colorText[] = {0, 0, 0, "(profilenamespace getVariable ['GUI_BCG_RGB_A',0.9])"}; - colorBackground[] = {0,0,0,"(profilenamespace getVariable ['GUI_BCG_RGB_A',0.9])"}; + colorBackground[] = {0, 0, 0, "(profilenamespace getVariable ['GUI_BCG_RGB_A',0.9])"}; }; }; @@ -46,8 +46,8 @@ class GVAR(menu) { w = "13 * (((safezoneW / safezoneH) min 1.2) / 40)"; h = "1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; style = ST_CENTER; - colorText[] = {1, 1, 1.0, 0.9}; - colorBackground[] = {0,0,0,0}; + colorText[] = {1, 1, 1, 0.9}; + colorBackground[] = {0, 0, 0, 0}; SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1.2)"; text = ""; }; @@ -83,12 +83,12 @@ class GVAR(menu) { animTexturePressed = "#(argb,8,8,3)color(1,1,1,1)"; animTextureDefault = "#(argb,8,8,3)color(1,1,1,1)"; color[] = {1, 1, 1, 1}; - color2[] = {0,0,0, 1}; - colorBackgroundFocused[] = {1,1,1,1}; - colorBackground[] = {1,1,1,1}; - colorbackground2[] = {1,1,1,1}; - colorDisabled[] = {1,1,1,1}; - colorFocused[] = {0,0,0,1}; + color2[] = {0, 0, 0, 1}; + colorBackgroundFocused[] = {1, 1, 1, 1}; + colorBackground[] = {1, 1, 1, 1}; + colorbackground2[] = {1, 1, 1, 1}; + colorDisabled[] = {1, 1, 1, 1}; + colorFocused[] = {0, 0, 0, 1}; periodFocus = 1; periodOver = 1; action = QUOTE(closeDialog 0); @@ -97,7 +97,7 @@ class GVAR(menu) { text = CSTRING(unloadObject); idc = 12; x = "20.9 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - action = QUOTE([] call FUNC(startUnload);); + action = QUOTE(ACE_player call FUNC(startUnload)); }; }; }; diff --git a/addons/cargo/renameMenu.hpp b/addons/cargo/renameMenu.hpp index a1d0885f9e..b6acc9ad4e 100644 --- a/addons/cargo/renameMenu.hpp +++ b/addons/cargo/renameMenu.hpp @@ -3,8 +3,8 @@ class GVAR(renameMenu) { idd = 314615; movingEnable = 0; - onLoad = QUOTE(uiNamespace setVariable [ARR_2(QUOTE(QGVAR(menuDisplay)),_this select 0)];); - onUnload = QUOTE(uiNamespace setVariable [ARR_2(QUOTE(QGVAR(menuDisplay)),nil)];); + onLoad = QUOTE(uiNamespace setVariable [ARR_2(QQGVAR(menuDisplay),_this select 0)]); + onUnload = QUOTE(uiNamespace setVariable [ARR_2(QQGVAR(menuDisplay),nil)]); class controlsBackground { class HeaderBackground: ACE_gui_backgroundBase { idc = -1; @@ -20,7 +20,7 @@ class GVAR(renameMenu) { h = "2.9 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; text = "#(argb,8,8,3)color(0,0,0,0.8)"; colorText[] = {0, 0, 0, "(profilenamespace getVariable ['GUI_BCG_RGB_A',0.9])"}; - colorBackground[] = {0,0,0,"(profilenamespace getVariable ['GUI_BCG_RGB_A',0.9])"}; + colorBackground[] = {0, 0, 0, "(profilenamespace getVariable ['GUI_BCG_RGB_A',0.9])"}; }; }; @@ -36,11 +36,11 @@ class GVAR(renameMenu) { font = "RobotoCondensed"; SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; colorText[] = {0.95, 0.95, 0.95, 0.75}; - colorBackground[] = {"(profilenamespace getVariable ['GUI_BCG_RGB_R',0.69])","(profilenamespace getVariable ['GUI_BCG_RGB_G',0.75])","(profilenamespace getVariable ['GUI_BCG_RGB_B',0.5])", "(profilenamespace getVariable ['GUI_BCG_RGB_A',0.9])"}; + colorBackground[] = {"(profilenamespace getVariable ['GUI_BCG_RGB_R',0.69])", "(profilenamespace getVariable ['GUI_BCG_RGB_G',0.75])", "(profilenamespace getVariable ['GUI_BCG_RGB_B',0.5])", "(profilenamespace getVariable ['GUI_BCG_RGB_A',0.9])"}; text = CSTRING(renameObjectUI); }; class edit: ACE_gui_editBase { - onLoad = QUOTE((_this select 0) ctrlSetText (GVAR(interactionVehicle) getVariable [ARR_2(QUOTE(QGVAR(customName)), '')])); + onLoad = QUOTE((_this select 0) ctrlSetText (GVAR(interactionVehicle) getVariable [ARR_2(QQGVAR(customName),'')])); idc = 100; canModify = 1; x = "13.1 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; @@ -65,12 +65,12 @@ class GVAR(renameMenu) { animTexturePressed = "#(argb,8,8,3)color(1,1,1,1)"; animTextureDefault = "#(argb,8,8,3)color(1,1,1,1)"; color[] = {1, 1, 1, 1}; - color2[] = {0,0,0, 1}; - colorBackgroundFocused[] = {1,1,1,1}; - colorBackground[] = {1,1,1,1}; - colorbackground2[] = {1,1,1,1}; - colorDisabled[] = {1,1,1,1}; - colorFocused[] = {0,0,0,1}; + color2[] = {0, 0, 0, 1}; + colorBackgroundFocused[] = {1, 1, 1, 1}; + colorBackground[] = {1, 1, 1, 1}; + colorbackground2[] = {1, 1, 1, 1}; + colorDisabled[] = {1, 1, 1, 1}; + colorFocused[] = {0, 0, 0, 1}; periodFocus = 1; periodOver = 1; action = QUOTE(closeDialog 0); diff --git a/addons/cargo/script_component.hpp b/addons/cargo/script_component.hpp index d5cee60c39..00629c73d2 100644 --- a/addons/cargo/script_component.hpp +++ b/addons/cargo/script_component.hpp @@ -19,7 +19,3 @@ #define MAX_LOAD_DISTANCE 5 #define GET_NUMBER(config,default) (if (isNumber (config)) then {getNumber (config)} else {default}) - -// Default cargo size is -1 as 0 is a valid size -#define CARGO_SIZE(classname) GET_NUMBER(configFile >> "CfgVehicles" >> (classname) >> QGVAR(size),-1) -#define CARGO_SPACE(classname) GET_NUMBER(configFile >> "CfgVehicles" >> (classname) >> QGVAR(space),0) diff --git a/addons/cargo/stringtable.xml b/addons/cargo/stringtable.xml index b81fcf9886..5e42af6c13 100644 --- a/addons/cargo/stringtable.xml +++ b/addons/cargo/stringtable.xml @@ -27,7 +27,7 @@ Descargar Scarica Décharger - 下ろす + 降ろす 내리기 卸載 卸载 @@ -38,22 +38,26 @@ 名前を次に変更:<br/>%1 Renommé en :<br/>%1 Переименовано в:<br/>%1 - Neu Bewaffnet: <br/>%1 + Neu umbenannt zu: <br/>%1 + Rinominato in: <br/>%1 Nazwa zmieniona na:<br/>%1 重命名为:<br/>%1 %1(으)로 명칭을 바꿈 Renombrado a:<br/>%1 + Renomeado para: <br/>%1 Custom name has been cleared. - カスタム名が削除されました。 + カスタムネームが削除されました。 Le nom personnalisé a été supprimé. Пользовательское название удалено. Eigener Name wurde gelöscht. + Nome personalizzato cancellato. Własna nazwa została usunięta 自定义名称已被清除。 임의로 지은 명칭을 지웠습니다. El nombre personalizado ha sido borrado. + O nome personalizado foi apagado. Set New Name: @@ -61,10 +65,12 @@ Définir un nouveau nom : Задать новое название: Neuen Namen setzen: + Imposta nome personalizzato: Ustaw nową nazwę: 设定新名称: 새로운 명칭 설정: Establecer nuevo nombre: + Definir novo nome: Enable Rename Action @@ -72,21 +78,25 @@ Possibilité de renommage Вкл. возможность переименования Aktiviere Umbenennungs-Aktion + Attiva azione di rinomina Włącz możliwość zmiany nazwy 启用重命名动作 새로 명칭 짓기 행동 활성화 Habilitar renombrado + Habilitar ação de renomear Enables the rename action for renamable objects. - 名前変更が可能なオブジェクトに対して、名前変更動作を有効化します。 + 名前変更が可能なオブジェクトに対して、名前変更アクションを有効化します。 Active la possibilité de donner un nom personnalisé aux objets transportables (si renommables). Включает переименование для объектов, допускающих переименование. Aktiviert die Umbenennungs-Aktion für neu benennbare Objekte. + Attiva la funzione di rinomina per nuovi oggetti rinominabili. Włącza akcję zmiany nazwy dla obiektów z możliwością zmiany nazwy. 启用可重命名物体的重命名动作。 개체의 명칭을 새로 짓는 것을 허가합니다. Habilitar renombrado para los objetos renombrables. + Habilita a ação de renomear para objetos renomeáveis. Cargo @@ -96,7 +106,7 @@ Грузовой отсек Náklad Carga - Cargo + Carico Cargaison カーゴ 화물 @@ -112,7 +122,7 @@ Грузовой отсек Menu nákladu Menu de carga - Menù Cargo + Menù del Carico Menu de cargaison カーゴ メニュー 화물 메뉴 @@ -128,7 +138,7 @@ Осталось мест: %1 Zbývající prostor: %1 Espacio de carga restante: %1 - Spazio cargo rimanente: %1 + Spazio di carico rimanente: %1 Espace de chargement restant : %1 カーゴの空き容量: %1 선적 공간 남음: %1 @@ -144,7 +154,7 @@ Вкл. модуль перевозки грузов Povolit náklad Habilitar carga - Abilita Cargo + Abilita Carico Activer la cargaison カーゴを有効化 화물 활성화 @@ -160,7 +170,7 @@ Включает модуль погрузки и перевозки грузов Habilitar la carga en el módulo de carga Umožňuje naložit předměty do nákladového prostoru vozidla - Abilita il modulo di caricamento in cargo + Abilita il modulo di caricamento nel carico Active la possibilité de charger du matériel dans un module de fret (véhicule/container). カーゴ モジュールで積み込みを有効化 화물 모듈을 활성화합니다 @@ -175,7 +185,7 @@ Перевозка грузов Nastavení nákladu Ajustes de carga - Impostazioni Cargo + Impostazioni Carico Paramètres de cargaison カーゴ設定 화물 설정 @@ -191,7 +201,7 @@ Конфигурирует настройки модуля перевозки грузов Configure los ajustes del módulo de carga Konfigurace nákladního modulu - Configura le impostazioni del modulo cargo + Configura le impostazioni del modulo carico Configure les paramètres du module de cargaison. カーゴ モジュールの設定を構成 화물 모듈의 환경 설정을 바꿉니다 @@ -209,7 +219,7 @@ %1<br/>caricato su<br/>%2 %1<br/>berakodva ide:<br/>%2 %1<br/>загружен в<br/>%2 - %1<br/>は<br/>%2へ積み込まれました + %1 は<br/>%2 へ<br/>積み込まれました %1은(는)<br/>%2 에 실림 %1<br/>裝載至<br/>%2 %1<br/>装载至<br/>%2 @@ -225,7 +235,7 @@ Hai scaricato<br/>%1 da<br/>%2 1%<br/>kirakodva ebből:<br/>%2 %1<br/>разгружен из<br/>%2 - <br/>%1が<br/>%2から降ろされました + %1 が<br/>%2 から<br/>降ろされました %1은(는)<br/>%2에서 내려짐 從<br/>%2卸載<br/>%1 从<br/>%2卸载<br/>%1 @@ -272,7 +282,7 @@ %1<br/>non può essere caricato %1<br/>no pudo ser cargado %1<br />n'a pas pu être chargé - %1<br/>は積み込めませんでした + %1 は<br/>積み込めませんでした %1을(를) 싣을 수가 없습니다 %1<br/>無法被裝載 %1<br/>无法被装载 @@ -288,38 +298,58 @@ %1<br/>non può essere scaricato %1<br/>no pudo ser descargado %1<br />n'a pas pu être déchargé - %1<br/>は降ろせませんでした + %1 は<br/>降ろせませんでした %1을(를) 하역할 수가 없습니다 %1<br/>無法被卸載 %1<br/>无法被卸载 %1<br/> kargo boşaltılamadı + + Can't be unloaded + Kann nicht entladen werden + Impossibile da scaricare + Ne peut pas être déchargé + 降ろせません + 하역할 수가 없습니다 + + + Cargo Size: %1 + Frachtgröße: %1 + Dimensione Carico: %1 + Encombrement fret: %1 + カーゴ サイズ: %1 + 화물 크기: %1 + Custom Name - カスタム名 + カスタムネーム Nom personnalisé Eigener Name + Nome Personalizzato Własna nazwa 自定义名称 임의 명칭 Собственное название Nombre personalizado + Nome personalizado Set a custom cargo name used in the cargo interface. - カーゴ欄で使われるカスタム名を設定します。 + カーゴ一覧で使用されるカスタムネームを設定します。 Définit un nom de fret personnalisé qui sera visible dans le menu de cargaison. Установить пользовательское имя груза, используемое в интерфейсе погрузки. Definiere eigenen Frachtnamen, welcher im Frachtraum genutzt wird. + Definisce nome personalizzato, verrà mostrato nel menù del carico. Ustaw własną nazwę ładunku, używaną w menu ładunku. 设置货物界面中使用的一个自定义货物名称。 화물 인터페이스에 쓰일 화물의 명칭을 설정합니다. Establecer un nombre personalizado de carga en la interfaz de carga. + Defina um nome de carga personalizado usado na interface de carga. Cargo Space Frachtraum - Spazio Cargo + Spazio di Carico カーゴ スペース 貨物空間 货物空间 @@ -350,7 +380,7 @@ Cargo Size Frachtgröße - Dimensioni Cargo + Dimensioni nel Carico カーゴ サイズ 貨物的大小 货物的大小 @@ -364,10 +394,10 @@ Kargo Boyutu - The cargo space required to hold this object (-1 for unloadable) + The cargo space required to hold this object (-1 for not loadable) Frachtraumgröße, welche zum Einladen dieses Objektes benötigt wird (-1 nicht einladbar) - Lo spazio del cargo necessita di mantenere questo oggetto (-1 per scaricabile) - オブジェクトを積載するのに必要なカーゴ スペース (-1 で積載不可) + Lo spazio di carico necessario per contenere questo oggetto (-1 per non caricabile) + オブジェクトを積載するのに必要なカーゴ スペース (-1 で積載不可にします) 此貨物會佔掉多少空間(設定-1的話此貨物就不能被裝載) 此货物会占掉多少空间(设定 -1 的话此货物就不能被装载) Wymagana przestrzeń ładunkowa dla tego obiektu (-1 dla niemożliwych do załadowania) @@ -411,8 +441,8 @@ Paradrop Time Coefficient Türlast Zeitfaktor - 空中投下までの時間係数 - Coefficente Tempo Lancio Paracadute + 空中投下の所要時間係数 + Coefficiente Tempo Lancio Aereo Coefficient du temps de paralargage 空投時間係數 空投时间系数 @@ -427,7 +457,7 @@ Modifier for how long it takes to paradrop a cargo item. Beeinflusst die zusätzliche Zeit für Türlastabwürfe. カーゴ アイテムを空中投下するまでの時間を変更します。 - Modificato per quanto tempo ci impiega a paracadutare un oggetto cargo. + Modifica quanto tempo viene impiegato per paracadutare oggetti dal carico. Modifie le temps nécessaire au paralargage d'une cargaison. 設定空投所需消耗的時間 设定空投所需消耗的时间。 @@ -441,7 +471,7 @@ Load Time Coefficient Ladezeitmultiplikator - 積載時間の係数 + 積載所要時間係数 Współczynnik czasu załadowania Coefficente Tempo Caricamento Коэф. времени погрузки @@ -456,9 +486,9 @@ Modifies how long it takes to load/unload items.\nTime, in seconds, is the size of the item multiplied by this value. Gibt an, wie lange das Laden / Entladen von Gegenständen dauern soll.\nZeit in Sekunden, die mit der Größe des Gegenstandes multipliziert wird. - アイテムの積み下ろし作業にかかる時間を編集できます。\nアイテムの大きさにこの値が乗法され、時間 (秒) を変更できます。 + アイテムのロード/アンロードに掛かる時間を変更します。\n時間 (秒) は、アイテムのサイズにこの値を掛けたものです。 Modyfikuje, jak długo zajmuje załadowywanie/wyładowywanie przedmiotów. \nCzasem, w sekundach, jest wielkość przedmiotu razy jego wartość. - Modifica quanto tempo ci impiega a caricare o scaricare gli oggetti.\n Tempo, in secondi, è la dimensione dell'oggetto moltiplicata per questo valore + Modifica il tempo impiegato per caricare o scaricare gli oggetti.\nIl tempo, in secondi, equivale alla dimensione dell'oggetto moltiplicata per questo valore Изменяет время для загрузки/выгрузки предметов. \n Время (сек) - это размер предмета, умноженный на это значение. Coeficiente de quanto tempo leva para carregar/descarregar itens.\nTempo, em segundos, é o tamanho do objeto multiplicado por esse valor. Modifie le temps nécessaire pour charger/décharger des objets.\nLe temps, en secondes, est calculé en multipliant la taille de l'élément par ce coefficient. @@ -475,10 +505,12 @@ Rouvrir le menu de cargaison Переоткрыть меню погрузки Frachtmenü erneut öffnen + Riapri Menù del Carico Ponownie otwórz menu załadunku 重新打开货物菜单 화물 메뉴 다시 열기 Reabrir menú de carga + Reabrir menu de carga Reopen the Cargo Menu after successful unload. @@ -487,10 +519,12 @@ Réouvre le menu de cargaison après un déchargement réussi. Переоткрыть меню погрузки после успешной выгрузки. Frachtmenü erneut öffnen, nach erfolgreichen Entladen. + Riapri il Menù del Carico dopo aver scaricato un oggetto con successo. Ponownie otwórz menu załadunku po udanym wyładowaniu. 成功卸货后,重新打开货物菜单。 화물을 성공적으로 내리고 난 다음 화물 메뉴를 열지 결정합니다. Reabrir menú de carga despues de una descarga satisfactoria. + Reabre o menu de carga após uma descarga bem sucedida. Carry After Unload @@ -500,6 +534,9 @@ 荷降ろし後の運搬 Niesienie Po Rozładowaniu Nach dem Entladen tragen + Trasporta dopo aver Scaricato + Porter après déchargement + Transporte após descarregar Controls whether cargo items are carried or dragged after unloading. @@ -509,6 +546,9 @@ 荷降ろし後、貨物アイテムを運ぶか引きずるかを制御する。 Kontroluje, czy przedmioty z ładunku są przenoszone lub ciągnięte po ich wyładowaniu. Steuert, ob Objekte nach dem Entladen getragen oder gezogen werden. + Determina se un oggetto verrà subito trasportato o trascinato dopo essere stato scaricato. + Active si les éléments de cargaison sont portés ou traînés après le déchargement. + Controla se os itens de carga são carregados ou arrastados após a descarga. diff --git a/addons/casings/XEH_preInit.sqf b/addons/casings/XEH_preInit.sqf index 9361d05015..894773534a 100644 --- a/addons/casings/XEH_preInit.sqf +++ b/addons/casings/XEH_preInit.sqf @@ -6,6 +6,6 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" ADDON = true; diff --git a/addons/casings/initSettings.sqf b/addons/casings/initSettings.inc.sqf similarity index 100% rename from addons/casings/initSettings.sqf rename to addons/casings/initSettings.inc.sqf diff --git a/addons/casings/stringtable.xml b/addons/casings/stringtable.xml index 5250262098..bf30ac36d9 100644 --- a/addons/casings/stringtable.xml +++ b/addons/casings/stringtable.xml @@ -6,30 +6,39 @@ ACE 薬莢 ACE Łuski ACE 탄피 + ACE Bossoli ACE 弹壳 ACE Гильзы ACE Casquillos ACE Patronenhülsen + ACE Douilles + ACE Cartuchos Casings Enabled 薬莢の有効化 Łuski włączone + Abilita Bossoli 탄피 활성화 开启弹壳生成 Гильзы включены Habilitar Casquillos Patronenhülsen aktiviert + Douilles activées + Cartuchos habilitados Enable persistent casings (POTENTIAL performance impact on old/weak systems) 永続的な薬莢を有効にする (古い/弱いシステムに対する潜在的なパフォーマンスの影響) Włącz pozostawanie łusek (MOŻLIWY wpływ na wydajność na starych/słabych komputerach) - 영구적으로 남는 탄피를 활성화합니다(오래되고 취약한 시스템에 잠재적인 성능에 영향을 미칩니다.) + 영구적으로 남는 탄피를 활성화합니다(오래되거나 저사양에 잠재적인 성능 영향을 줄 수 있음) 开启生成持续存在的弹壳(可能对较老和性能不行的系统有影响) Включить постоянные гильзы (ПОТЕНЦИАЛЬНО может повлиять на производительность на старых/слабых системах) Habilitar persistencia de casquillos (POTENCIAL impacto en el rendimiento de ordenadores antiguos o no potentes) Persistente Patronenhülsen aktivieren (POTENZIELLE Leistungseinbußen bei alten/schwachen Systemen) + Abilita bossoli persistenti (POTENZIALE impatto sulla perfomance su sistemi vecchi/deboli) + Active la persistance des douilles (POTENTIEL impact sur les performances sur les anciens/faibles systèmes) + Habilitar persistência de cartuchos (POTENCIAL impacto no desempenho de sistemas antigos/fracos) Maximum casings @@ -40,6 +49,9 @@ Макс. кол-во гильз Casquillos máximos Maximale Patronenhülsen + Numero massimo di bossoli + Nombre maximum de douilles + Máxima de cartuchos Maximum amount of casings to display @@ -50,6 +62,9 @@ Максимальное количество гильз для отображения Máxima cantidad de casquillos para mostrar Maximale Anzahl an Patronenhülsen, die angezeigt werden + Numero massimo di bossoli renderizzati + Nombre maximum de douilles à afficher + Quantidade máxima de cartuchos para exibir diff --git a/addons/chemlights/stringtable.xml b/addons/chemlights/stringtable.xml index ce31e952ab..2c4066e9b7 100644 --- a/addons/chemlights/stringtable.xml +++ b/addons/chemlights/stringtable.xml @@ -35,12 +35,12 @@ %1<br/>Prepared - %1<br/>を使った + %1 を<br/>使った %1<br/>Przygotowany %1<br/>vorbereitet %1<br/>준비됨 %1<br/>prêt - %1 <br/> Preparata + %1 <br/>Preparata %1<br/>已使用 %1<br/>已使用 %1<br/>Приготовлен @@ -51,12 +51,12 @@ [ACE] Chemlights - [ACE] ケミライト + [ACE] ケミカルライト [ACE] Świetliki [ACE] Knicklichter [ACE] 화학조명 [ACE] Cyalumes - [ACE] Luci chimiche + [ACE] Luci Chimiche [ACE] 螢光棒 [ACE] 荧光棒 [ACE] Химсвет @@ -67,10 +67,10 @@ Chemlight (Orange) - ケミライト (オレンジ) + ケミカルライト(橙) Świetlik (pomarańczowy) Knicklicht (orange) - 켐라이트 (주황) + 화학조명 (주황) Cyalume (orange) Luce chimica (Arancione) 螢光棒 (橘色) @@ -83,7 +83,7 @@ Orange Light - オレンジ色 + 橙ライト Pomarańczowe światło Oranges Knicklicht 주황색 @@ -99,7 +99,7 @@ Type: Light - Orange<br />Rounds: 1<br />Used in: Hand - 種類: 照明 - オレンジ<br />装填数: 1<br />次で使用: 携帯 + タイプ: ライト - 橙<br />弾薬: 1<br />使用: 手 Typ: Światło - pomarańczowe<br/>Pociski: 1<br/>Używany w: ręce Typ: Licht - orange<br />Anzahl: 1<br />Benutzt in: Hand 종류: 밝은 오렌지<br />수량: 1<br />사용처: 손 @@ -115,7 +115,7 @@ Chemlight (White) - ケミライト (白) + ケミカルライト(白) Świetlik (biały) Knicklicht (weiß) 화학조명 (하양) @@ -131,7 +131,7 @@ White Light - 白色 + 白ライト Białe światło Weißes Knicklicht 하얀색 @@ -147,7 +147,7 @@ Type: Light - White<br />Rounds: 1<br />Used in: Hand - 種類: 照明 - 白<br />装填数: 1<br />次で使用: 携帯 + タイプ: ライト - 白<br />弾薬: 1<br />使用: 手 Typ: Światło - białe<br/>Pociski: 1<br/>Używany w: ręce Typ: Licht - weiß<br />Anzahl: 1<br />Benutzt in: Hand 종류: 하얀색<br />수량: 1<br />사용처: 손 @@ -163,12 +163,12 @@ Chemlight (Hi Red) - ケミライト (高輝度 赤) + ケミカルライト(高輝度 赤) Świetlik (jaskrawy czerwony) Knicklicht (rot, hell) 화학조명 (밝은 빨간색) Cyalume HL (rouge) - Luce chimica (Hi Rossa) + Luce chimica (Rossa Intensa) 螢光棒 (超亮紅色) 荧光棒(高亮红色) Химсвет (ярко-красный) @@ -179,12 +179,12 @@ Red Hi Light - 高輝度の赤色 + 赤ライト 高輝度 Jaskrawe czerwone światło Helles, rotes Knicklicht 밝은 빨간색 Lum. rouge HL - Luce Hi Rossa + Luce Rossa Intensa 超亮紅色光 高亮红色光 Яркий красный свет @@ -195,12 +195,12 @@ Type: Light - Red Hi (30 minute)<br />Rounds: 1<br />Used in: Hand - 種類: 照明 - 高輝度 赤 (30分間)<br />装填数: 1<br />次で使用: 携帯 + タイプ: ライト - 高輝度 赤 (30分間)<br />弾薬: 1<br />使用: 手 Typ: Światło - jaskrawe czerwone (30 minut)<br/>Pociski: 1<br/>Używany w: ręce Typ: Licht - rot, hell (30 Minuten)<br />Anzahl: 1<br />Benutzt in: Hand 종류: 밝은 빨간색 (30분)<br />수량: 1<br />사용처: 손 Type : lumière HL (30 minutes) - Rouge<br />Munitions : 1<br />Application : main - Tipo: Luce - Rossa Hi (30 minuti)<br />Rimanenti: 1<br/>Usata in: Mano + Tipo: Luce - Rossa Intensa (30 minuti)<br />Rimanenti: 1<br/>Usata in: Mano 類型: 光 - 超亮紅色 (30分鐘)<br />發數: 1<br />使用於: 手 类型:光—高亮红色(30分钟)<br />发数:1<br />使用于:手 Тип: Свет - ярко-красный (30 минут)<br />1 штука<br />В руках @@ -211,12 +211,12 @@ Chemlight (Hi Yellow) - ケミライト (高輝度 黄) + ケミカルライト(高輝度 黄) Świetlik (jaskrawy żółty) Knicklicht (gelb, hell) 화학조명 (밝은 노란색) Cyalume HL (jaune) - Luce chimica (Hi Gialla) + Luce chimica (Gialla Intensa) 螢光棒 (超亮黃色) 荧光棒(高亮黄色) Химсвет (ярко-жёлтый) @@ -227,12 +227,12 @@ Yellow Hi Light - 高輝度の黄色 + 黄ライト 高輝度 Jaskrawe żółte światło Helles, gelbes Knicklicht 밝은 노란색 Lum. jaune HL - Luce Hi Gialla + Luce Gialla Intensa 超亮黃色光 高亮黄色光 Яркий жёлтый свет @@ -243,12 +243,12 @@ Type: Light - Yellow Hi (30 minute)<br />Rounds: 1<br />Used in: Hand - 種類: 照明 - 高輝度 黄 (30分間)<br />装填数: 1<br />次で使用: 携帯 + タイプ: ライト - 高輝度 黄 (30分間)<br />弾薬: 1<br />使用: 手 Typ: Światło - jaskrawe żółte (30 minut)<br/>Pociski: 1<br/>Używany w: ręce Typ: Licht - gelb, hell (30 Minuten)<br />Anzahl: 1<br />Benutzt in: Hand 종류: 밝은 노란색 (30분)<br />수량: 1<br />사용처: Hand Type : lumière HL (30 minutes) - Jaune<br />Munitions : 1<br />Application : main - Tipo: Luce - Gialla Hi (30 minuti)<br />Rimanenti: 1<br/>Usata in: Mano + Tipo: Luce - Gialla Intensa (30 minuti)<br />Rimanenti: 1<br/>Usata in: Mano 類型: 光 - 超亮黃色 (30分鐘)<br />發數: 1<br />使用於: 手 类型:光—高亮黄色(30分钟)<br />发数:1<br />使用于:手 Тип: Свет - ярко-жёлтый (30 минут)<br />1 штука<br />В руках @@ -259,12 +259,12 @@ Chemlight (Hi White) - ケミライト (高輝度 白) + ケミカルライト(高輝度 白) Świetlik (jaskrawy biały) Knicklicht (weiß, hell) 화학조명 (밝은 하얀색) Cyalume HL (blanc) - Luce chimica (Hi Bianca) + Luce chimica (Bianca Intensa) 螢光棒 (超亮白色) 荧光棒(高亮白色) Химсвет (ярко-белый) @@ -275,12 +275,12 @@ White Hi Light - 高輝度の白色 + 白ライト 高輝度 Jaskrawe białe światło Helles, weißes Knicklicht 밝은 하얀색 Lum. blanche HL - Luce Hi Bianca + Luce Bianca Intensa 超亮白色光 高亮白色光 Яркий белый свет @@ -291,12 +291,12 @@ Type: Light - White Hi (30 minute)<br />Rounds: 1<br />Used in: Hand - 種類: 照明 - 高輝度 白 (30分間)<br />装填数: 1<br />次で使用: 携帯 + タイプ: ライト - 高輝度 白 (30分間)<br />弾薬: 1<br />使用: 手 Typ: Światło - jaskrawe białe (30 minut)<br/>Pociski: 1<br/>Używany w: ręce Typ: Licht - weiß, hell (30 Minuten)<br />Anzahl: 1<br />Benutzt in: Hand 종류: 밝은 하얀색 (30분)<br />수량: 1<br />사용처: 손 Type : lumière HL (30 minutes) - Blanche<br />Munitions : 1<br />Application : main - Tipo: Luce - Bianca Hi (30 minuti)<br />Rimanenti: 1<br/>Usata in: Mano + Tipo: Luce - Bianca Intensa (30 minuti)<br />Rimanenti: 1<br/>Usata in: Mano 類型: 光 - 超亮白色 (30分鐘)<br />發數: 1<br />使用於: 手 类型:光—高亮白色(30分钟)<br />发数:1<br />使用于:手 Тип: Свет - ярко-белый (30 минут)<br />1 штука<br />В руках @@ -308,10 +308,10 @@ Chemlight (Hi Blue) Cyalume HL (bleu) - ケミライト (高輝度 青) + ケミカルライト(高輝度 青) Świetlik (jaskrawy niebieski) Knicklicht (Blau, Hell) - Luce chimica (Hi Blu) + Luce chimica (Blu Intensa) Химсвет (ярко-синий) Bastão de Luz (Azul Forte) 螢光棒(超亮藍色) @@ -325,9 +325,9 @@ Blue Hi Light Lum. bleue HL Helles, blaues Knicklicht - 高輝度の青色 + 青ライト 高輝度 Jaskrawe niebieskie światło - Luce Hi Blu + Luce Blu Intensa Яркий синий свет Luz forte azul 超亮藍色光 @@ -341,9 +341,9 @@ Type: Light - Blue Hi (30 minute)<br />Rounds: 1<br />Used in: Hand Type : lumière HL (30 minutes) - Bleue<br />Munitions : 1<br />Application : main Typ: Licht - blau, hell (30 Minuten)<br />Anzahl: 1<br />Benutzt in: Hand - 種類: 照明 - 高輝度 青 (30分間)<br />装填数: 1<br />次で使用: 携帯 + タイプ: ライト - 高輝度 青 (30分間)<br />弾薬: 1<br />使用: 手 Typ: Światło - jaskrawe niebieskie (30 minut)<br/>Pociski: 1<br/>Używany w: ręce - Tipo: Luce - Hi blu (30 minuti)<br/>Rimanenti:1 <br/>Usata in: Mano + Tipo: Luce - Blu Intensa (30 minuti)<br/>Rimanenti: 1<br/>Usata in: Mano Тип: Свет - ярко-синий (30 минут)<br />1 штука<br />В руках Tipo: Luz - Azul Forte (30 minutos)<br/>Usos: 1<br/>Usado em: Mão 類型: 光 - 超亮藍色 (30分鐘)<br />發數: 1<br />使用於: 手 @@ -357,9 +357,9 @@ Chemlight (Hi Green) Cyalume HL (vert) Knicklicht (Grün, Hell) - ケミライト (高輝度 緑) + ケミカルライト(高輝度 緑) Świetlik (jaskrawy zielony) - Luce chimica (Hi Verde) + Luce chimica (Verde Intensa) Химсвет (ярко-зелёный) Bastão de Luz (Verde Forte) 螢光棒(超亮綠色) @@ -373,9 +373,9 @@ Green Hi Light Lum. verte HL Helles, grünes Knicklicht - 高輝度の青色 + 緑ライト 高輝度 Jaskrawe zielone światło - Luce Hi Verde + Luce Verde Intensa Яркий зелёный свет Luz forte verde 超亮綠色光 @@ -389,9 +389,9 @@ Type: Light - Green Hi (30 minute)<br />Rounds: 1<br />Used in: Hand Type : lumière HL (30 minutes) - Verte<br />Munitions : 1<br />Application : main Typ: Licht - grün, hell (30 Minuten)<br />Anzahl: 1<br />Benutzt in: Hand - 種類: 照明 - 高輝度 緑 (30分間)<br />装填数: 1<br />次で使用: 携帯 + タイプ: ライト - 高輝度 緑 (30分間)<br />弾薬: 1<br />使用: 手 Typ: Światło - jaskrawe zielone (30 minut)<br/>Pociski: 1<br/>Używany w: ręce - Tipo: Luce - Hi verde (30 minuti)<br/>Rimanenti: 1<br/>Usata in: Mano + Tipo: Luce - Verde Intensa (30 minuti)<br/>Rimanenti: 1<br/>Usata in: Mano Тип: Свет - ярко-зелёный (30 минут)<br />1 штука<br />В руках Tipo: Luz - Verde Forte (30 minutos)<br/>Usos: 1<br/>Usado em: Mão 類型: 光 - 超亮綠色 (30分鐘)<br />發數: 1<br />使用於: 手 @@ -405,9 +405,9 @@ Chemlight (Ultra-Hi Orange) Cyalume UHL (orange) Knicklicht (Orange, Hell) - ケミライト (高輝度 オレンジ) + ケミカルライト(超高輝度 橙) Świetlik (ultra-jaskrawy pomarańczowy) - Luce chimica (Ultra-Hi Arancione) + Luce chimica (Ultra-Intensa Arancione) Химсвет (ультраяркий оранжевый) Bastão de Luz (Laranja Ultra Forte) 螢光棒(極亮橘色) @@ -421,9 +421,9 @@ Orange Ultra-Hi Light Lum. orange UHL Helles, orangenes Knicklicht - ウルトラ高輝度のオレンジ色 + 橙ライト 超高輝度 Ultra-jaskrawe pomarańczowe światło - Luce Ultra-Hi Arancione + Luce Ultra-Intensa Arancione Ультраяркий оранжевый свет Luz ultra forte laranja 極亮橘色光 @@ -437,9 +437,9 @@ Type: Light - Orange Ultra-Hi (5 minute)<br />Rounds: 1<br />Used in: Hand Type : lumière UHL (5 minutes) - Orange<br />Munitions : 1<br />Application : main Typ: Licht - orange, hell (5 Minuten)<br />Anzahl: 1<br />Benutzt in: Hand - 種類: 照明 - ウルトラ高輝度 オレンジ (5分間)<br />装填数: 1<br />次で使用: 携帯 + タイプ: ライト - 超高輝度 橙 (5分間)<br />弾薬: 1<br />使用: 手 Typ: Światło - ultra-jaskrawe pomarańczowe (5 minut)<br/>Pociski: 1<br/>Używany w: ręce - Tipo: Luce - Ultra-Hi (5 minuti)<br/>Rimanenti: 1<br/>Usata in: Mano + Tipo: Luce - Ultra-Intensa (5 minuti)<br/>Rimanenti: 1<br/>Usata in: Mano Тип: Свет - ультраяркий оранжевый (5 минут)<br />1 штука<br />В руках Tipo: Luz - Laranja Ultra Forte (5 minutos)<br/>Usos: 1<br/>Usado em: Mão 類型: 光 - 極亮橘色 (5分鐘)<br />發數: 1<br />使用於: 手 @@ -451,7 +451,7 @@ Chemlight (IR) - ケミライト (IR) + ケミカルライト(IR) Świetlik (podczerwony) Knicklicht (IR) 화학조명 (적외선) @@ -467,7 +467,7 @@ IR Light - 赤外線光 + 赤外線ライト Światło podczerwone IR-Knicklicht 적외선 화학조명 @@ -483,7 +483,7 @@ Type: Light - Infrared<br />Rounds: 1<br />Used in: Hand - 種類: 照明 - 赤外線<br />装填数: 1<br />次で使用: 携帯 + タイプ: ライト - 赤外線<br />弾薬: 1<br />使用: 手 Typ: Światło - podczerwone<br/>Pociski: 1<br/>Używany w: ręce Typ: Licht - infrarot<br />Anzahl: 1<br />Benutzt in: Hand 종류: 적외선<br />수량: 1<br />사용처: 손 @@ -499,7 +499,7 @@ Chemlight Shield (Empty) - ケミライト シールド (空) + ケミカルライト シールド(空) Osłona na świetlik (pusta) Knicklicht-Abschirmung (leer) 화학조명 가림막 (비어있음) @@ -508,19 +508,19 @@ 螢光棒保護殼 (空) 荧光棒保护壳(空) Контейнер для химсвета (пустой) - Estojo de Luz (Vazio) + Protetor de Bastão de Luz (Vazio) Clona na chemické světlo Protector de luz química (Vacía) Işık çubuğu koruması (Boş) Shield for chemlights. Combine with chemlight to prepare reading light. - ケミライトを入れられます。シールドとケミライトを組み合わせることで、照明にもなりえます。 + ケミカルライトのためのシールド。ケミカルライトと組み合わせることで、読書灯に出来る。 Osłona na świetliki. Połącz ją ze świetlikiem by stworzyć lampkę do czytania. Abschirmung für Knicklichter. Mit Knicklicht kombinieren, um Leselicht zu erhalten. 화학조명을 위한 가림막입니다. 화학조명과 같이 사용하여 읽을 때 씁니다. Étui pour cyalume. Le combiner avec un cyalume pour obtenir une lampe de lecture. - Scudo per luci chimiche. Combina con una luce chimica per una luce da lettura. + Scudo per luci chimiche. Combina con una luce chimica per creare una luce da lettura. 螢光棒的保護殼. 與螢光棒結合後可充當閱讀燈 荧光棒的保护壳。与萤光棒结合后可充当阅读灯。 Защитный контейнер для химсвета. Объедините с химсветом, чтобы подготовить ночник. @@ -531,7 +531,7 @@ Chemlight Shield (Green) - ケミライト シールド (緑) + ケミカルライト シールド(緑) Osłona na świetlik (zielona) Knicklicht-Abschirmung (grün) 화학조명 가림막 (초록) @@ -540,14 +540,14 @@ 螢光棒保護殼 (綠色) 荧光棒保护壳(绿色) Контейнер для химсвета (зелёный) - Estojo de Luz (Verde) + Protetor de Bastão de Luz (Verde) Clona s vloženým chemickým světlem (Zelené) Protector de luz química (Verde) Işık çubuğu koruması (Yeşil) Green reading light. - 緑色の照明。 + 緑色の読書灯。 Zielona lampka. Grünes Leselicht. 초록빛 조명 @@ -563,7 +563,7 @@ Chemlight Shield (Red) - ケミライト シールド (赤) + ケミカルライト シールド(赤) Osłona na świetlik (czerwona) Knicklicht-Abschirmung (rot) 화학조명 가림막 (빨강) @@ -572,14 +572,14 @@ 螢光棒保護殼 (紅色) 荧光棒保护壳(红色) Контейнер для химсвета (красный) - Estojo de Luz (Vermelho) + Protetor de Bastão de Luz (Vermelho) Clona s vloženým chemickým světlem (Červené) Protector de luz química (Roja) Işık çubuğu koruması (Kırmızıl) Red reading light. - 赤色の照明。 + 赤色の読書灯。 Czerwona lampka. Rotes Leselicht. 빨간색 조명 @@ -595,7 +595,7 @@ Chemlight Shield (Blue) - ケミライト シールド (青) + ケミカルライト シールド(青) Osłona na świetlik (niebieska) Knicklicht-Abschirmung (blau) 화학조명 가림막 (파랑) @@ -604,14 +604,14 @@ 螢光棒保護殼 (藍色) 荧光棒保护壳(蓝色) Контейнер для химсвета (синий) - Estojo de Luz (Azul) + Protetor de Bastão de Luz (Azul) Clona s vloženým chemickým světlem (Modré) Protector de luz química (Azul) Işık çubuğu koruması (Mavi) Blue reading light. - 青色の照明。 + 青色の読書灯。 Niebieska lampka. Blaues Leselicht. 파란색 조명 @@ -627,7 +627,7 @@ Chemlight Shield (Yellow) - ケミライト シールド (黄) + ケミカルライト シールド(黄) Osłona na świetlik (żółta) Knicklicht-Abschirmung (gelb) 화학조명 가림막 (노랑) @@ -636,14 +636,14 @@ 螢光棒保護殼 (黃色) 荧光棒保护壳(黄色) Контейнер для химсвета (жёлтый) - Estojo de Luz (Amarelo) + Protetor de Bastão de Luz (Amarelo) Clona s vloženým chemickým světlem (Žluté) Protector de luz química (Amarilla) Işık çubuğu koruması (Sarı) Yellow reading light. - 黄色の照明。 + 黄色の読書灯。 Żółta lampka. Gelbes Leselicht. 노란색 조명 @@ -659,7 +659,7 @@ Chemlight Shield (Orange) - ケミライト シールド (オレンジ) + ケミカルライト シールド(橙) Osłona na świetlik (pomarańczowa) Knicklicht-Abschirmung (orange) 화학조명 가림막 (주황) @@ -668,14 +668,14 @@ 螢光棒保護殼 (橘色) 荧光棒保护壳(橘色) Контейнер для химсвета (оранжевый) - Estojo de Luz (Laranja) + Protetor de Bastão de Luz (Laranja) Clona s vloženým chemickým světlem (Oranžové) Protector de luz química (Naranja) Işık çubuğu koruması (Turuncu) Orange reading light. - オレンジの照明。 + 橙色の読書灯。 Pomarańczowa lampka. Oranges Leselicht. 주황색 조명 @@ -691,7 +691,7 @@ Chemlight Shield (White) - ケミライト シールド (白) + ケミカルライト シールド(白) Osłona na świetlik (biała) Knicklicht-Abschirmung (weiß) 화학조명 가림막 (하양) @@ -700,14 +700,14 @@ 螢光棒保護殼 (白色) 荧光棒保护壳(白色) Контейнер для химсвета (белый) - Estojo de Luz (Branco) + Protetor de Bastão de Luz (Branco) Clona s vloženým chemickým světlem (Bílé) Protector de luz química (Blanca) Işık çubuğu koruması (Beyazl) White reading light. - 白色の照明。 + 白色の読書灯。 Biała lampka. Weißes Leselicht. 주황색 조명 diff --git a/addons/common/CfgEventHandlers.hpp b/addons/common/CfgEventHandlers.hpp index 4d4b0c7b59..70f35357c4 100644 --- a/addons/common/CfgEventHandlers.hpp +++ b/addons/common/CfgEventHandlers.hpp @@ -22,7 +22,7 @@ class Extended_DisplayLoad_EventHandlers { ADDON = QUOTE(_this call COMPILE_SCRIPT(XEH_missionDisplayLoad)); }; class RscUnitInfo { - ADDON = QUOTE([ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;); + ADDON = QUOTE([ARR_2('ace_infoDisplayChanged',[ARR_2(_this select 0,'Any')])] call CBA_fnc_localEvent;); }; }; diff --git a/addons/common/CfgGesturesMale.hpp b/addons/common/CfgGesturesMale.hpp new file mode 100644 index 0000000000..0d3737cb62 --- /dev/null +++ b/addons/common/CfgGesturesMale.hpp @@ -0,0 +1,14 @@ +// From ACRE +class CfgGesturesMale { + skeletonName = "OFP2_ManSkeleton"; + class States { + class GestureNod; + class GVAR(stop): GestureNod { + file = "a3\anims_f\data\anim\sdr\gst\gestureEmpty.rtm"; + disableWeapons = 0; + disableWeaponsLong = 0; + enableOptics = 1; + mask = "empty"; + }; + }; +}; diff --git a/addons/common/CfgMoves.hpp b/addons/common/CfgMoves.hpp index b0df9a4466..14686526e9 100644 --- a/addons/common/CfgMoves.hpp +++ b/addons/common/CfgMoves.hpp @@ -1,9 +1,15 @@ - class CfgMovesBasic { class Default; + // From ACRE + class ManActions { + GVAR(stop) = QGVAR(stop); + }; class Actions { + class NoActions: ManActions { + GVAR(stop)[] = {QGVAR(stop), "Gesture"}; + }; + // fixes grab animation with equipped pistol - class NoActions; class PistolStandActions: NoActions { grabDrag = "AmovPercMstpSlowWrflDnon_AcinPknlMwlkSlowWrflDb_2"; }; @@ -62,8 +68,12 @@ class CfgMovesMaleSdr: CfgMovesBasic { // fix falling back to unconsciousness animation and disable rotating in that state class Unconscious: Default { - ConnectTo[] = {}; + // Prevents AI from moving torso and head when unconscious + aiming = "aimingNo"; + aimingBody = "aimingUpNo"; head = "headNo"; + + ConnectTo[] = {}; forceAim = 1; static = 1; }; diff --git a/addons/common/CompassControl.hpp b/addons/common/CompassControl.hpp index 971a4a2f99..627e18d2f8 100644 --- a/addons/common/CompassControl.hpp +++ b/addons/common/CompassControl.hpp @@ -19,6 +19,7 @@ class RscPicture; class RscControlsGroupNoScrollbars; class GVAR(CompassControl): RscControlsGroupNoScrollbars { + #pragma hemtt suppress pw3_padded_arg onLoad = QUOTE(\ params ['_control'];\ private _display = ctrlParent _control;\ @@ -58,6 +59,7 @@ class GVAR(CompassControl): RscControlsGroupNoScrollbars { h = QUOTE(HEIGHT); }; class CompassGroup: RscControlsGroupNoScrollbars { + #pragma hemtt suppress pw3_padded_arg onLoad = QUOTE(\ params ['_control'];\ private _display = ctrlParent _control;\ diff --git a/addons/common/HintConfig.hpp b/addons/common/HintConfig.hpp index 72fd7f6233..c299bee8df 100644 --- a/addons/common/HintConfig.hpp +++ b/addons/common/HintConfig.hpp @@ -10,6 +10,11 @@ class GVAR(debug_structuredText): ctrlStructuredText { }; class RscTitles { + class GVAR(ProgressBar_Display): GVAR(ProgressBar_Dialog) { + duration = 1e11; // forever, essentially + fadeIn = 0; + fadeOut = 0; + }; class GVAR(watchVariableUI) { idd = -1; onLoad = QUOTE(with uiNameSpace do {GVAR(watchVariableUI) = _this select 0};); diff --git a/addons/common/RscInfoType.hpp b/addons/common/RscInfoType.hpp index 0eadb83617..672d043276 100644 --- a/addons/common/RscInfoType.hpp +++ b/addons/common/RscInfoType.hpp @@ -2,107 +2,107 @@ class RscInGameUI { class RscUnitInfo; class RscUnitInfoNoHUD { - onLoad = QUOTE([ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;); + onLoad = QUOTE([ARR_2('ace_infoDisplayChanged',[ARR_2(_this select 0,'Any')])] call CBA_fnc_localEvent;); }; class RscUnitInfoSoldier: RscUnitInfo { - onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); uiNamespace setVariable [ARR_2('ACE_dlgSoldier', _this select 0)]; [ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Soldier')])] call CBA_fnc_localEvent;); + onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); uiNamespace setVariable [ARR_2('ACE_dlgSoldier',_this select 0)]; [ARR_2('ace_infoDisplayChanged',[ARR_2(_this select 0,'Soldier')])] call CBA_fnc_localEvent;); }; class RscUnitInfoTank: RscUnitInfo { - onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); uiNamespace setVariable [ARR_2('ACE_dlgVehicle', _this select 0)];); + onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); uiNamespace setVariable [ARR_2('ACE_dlgVehicle',_this select 0)];); }; class RscUnitInfoAirNoWeapon: RscUnitInfo { - onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); uiNamespace setVariable [ARR_2('ACE_dlgAircraft', _this select 0)];); + onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); uiNamespace setVariable [ARR_2('ACE_dlgAircraft',_this select 0)];); }; class RscUnitInfoAir: RscUnitInfoAirNoWeapon { - onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); uiNamespace setVariable [ARR_2('ACE_dlgAircraft', _this select 0)];); + onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); uiNamespace setVariable [ARR_2('ACE_dlgAircraft',_this select 0)];); }; class RscUnitInfo_AH64D_gunner { - onLoad = QUOTE(uiNamespace setVariable [ARR_2('ACE_dlgAircraft', _this select 0)]; [ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Aircraft')])] call CBA_fnc_localEvent;); + onLoad = QUOTE(uiNamespace setVariable [ARR_2('ACE_dlgAircraft',_this select 0)]; [ARR_2('ace_infoDisplayChanged',[ARR_2(_this select 0,'Aircraft')])] call CBA_fnc_localEvent;); }; class RscUnitInfoUAV { - onLoad = QUOTE(uiNamespace setVariable [ARR_2('ACE_dlgUAV', _this select 0)]; [ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'UAV')])] call CBA_fnc_localEvent;); + onLoad = QUOTE(uiNamespace setVariable [ARR_2('ACE_dlgUAV',_this select 0)]; [ARR_2('ace_infoDisplayChanged',[ARR_2(_this select 0,'UAV')])] call CBA_fnc_localEvent;); }; class RscUnitInfoSubmarine: RscUnitInfo { - onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); uiNamespace setVariable [ARR_2('ACE_dlgSubmarine', _this select 0)];); + onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); uiNamespace setVariable [ARR_2('ACE_dlgSubmarine',_this select 0)];); }; class RscUnitInfoShip: RscUnitInfo { - onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); uiNamespace setVariable [ARR_2('ACE_dlgShip', _this select 0)];); + onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); uiNamespace setVariable [ARR_2('ACE_dlgShip',_this select 0)];); }; class RscWeaponEmpty { - onLoad = QUOTE([ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;); + onLoad = QUOTE([ARR_2('ace_infoDisplayChanged',[ARR_2(_this select 0,'Any')])] call CBA_fnc_localEvent;); }; class RscWeaponRangeFinder { - onLoad = QUOTE([ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;); + onLoad = QUOTE([ARR_2('ace_infoDisplayChanged',[ARR_2(_this select 0,'Any')])] call CBA_fnc_localEvent;); }; class RscWeaponRangeArtillery { - onLoad = QUOTE(uiNamespace setVariable [ARR_2('ACE_dlgArtillery', _this select 0)]; [ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Artillery')])] call CBA_fnc_localEvent;); + onLoad = QUOTE(uiNamespace setVariable [ARR_2('ACE_dlgArtillery',_this select 0)]; [ARR_2('ace_infoDisplayChanged',[ARR_2(_this select 0,'Artillery')])] call CBA_fnc_localEvent;); }; class RscWeaponRangeArtilleryAuto { - onLoad = QUOTE(uiNamespace setVariable [ARR_2('ACE_dlgArtillery', _this select 0)]; [ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Artillery')])] call CBA_fnc_localEvent;); + onLoad = QUOTE(uiNamespace setVariable [ARR_2('ACE_dlgArtillery',_this select 0)]; [ARR_2('ace_infoDisplayChanged',[ARR_2(_this select 0,'Artillery')])] call CBA_fnc_localEvent;); }; class RscWeaponRangeFinderPAS13 { - onLoad = QUOTE([ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;); + onLoad = QUOTE([ARR_2('ace_infoDisplayChanged',[ARR_2(_this select 0,'Any')])] call CBA_fnc_localEvent;); }; class RscOptics_LaserDesignator { - onLoad = QUOTE([ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;); + onLoad = QUOTE([ARR_2('ace_infoDisplayChanged',[ARR_2(_this select 0,'Any')])] call CBA_fnc_localEvent;); }; class RscWeaponRangeFinderMAAWS { - onLoad = QUOTE([ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;); + onLoad = QUOTE([ARR_2('ace_infoDisplayChanged',[ARR_2(_this select 0,'Any')])] call CBA_fnc_localEvent;); }; class RscWeaponRangeFinderAbramsCom { - onLoad = QUOTE([ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;); + onLoad = QUOTE([ARR_2('ace_infoDisplayChanged',[ARR_2(_this select 0,'Any')])] call CBA_fnc_localEvent;); }; class RscWeaponRangeFinderAbramsGun { - onLoad = QUOTE([ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;); + onLoad = QUOTE([ARR_2('ace_infoDisplayChanged',[ARR_2(_this select 0,'Any')])] call CBA_fnc_localEvent;); }; class RscWeaponRangeFinderStrykerMGSGun { - onLoad = QUOTE([ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;); + onLoad = QUOTE([ARR_2('ace_infoDisplayChanged',[ARR_2(_this select 0,'Any')])] call CBA_fnc_localEvent;); }; class RscOptics_strider_commander { - onLoad = QUOTE([ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;); + onLoad = QUOTE([ARR_2('ace_infoDisplayChanged',[ARR_2(_this select 0,'Any')])] call CBA_fnc_localEvent;); }; class RscOptics_titan { - onLoad = QUOTE([ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;); + onLoad = QUOTE([ARR_2('ace_infoDisplayChanged',[ARR_2(_this select 0,'Any')])] call CBA_fnc_localEvent;); }; class RscOptics_punisher { - onLoad = QUOTE([ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;); + onLoad = QUOTE([ARR_2('ace_infoDisplayChanged',[ARR_2(_this select 0,'Any')])] call CBA_fnc_localEvent;); }; class RscOptics_SDV_periscope { - onLoad = QUOTE([ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;); + onLoad = QUOTE([ARR_2('ace_infoDisplayChanged',[ARR_2(_this select 0,'Any')])] call CBA_fnc_localEvent;); }; class RscUnitInfoParachute: RscUnitInfo { - onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); uiNamespace setVariable [ARR_2('ACE_dlgParachute', _this select 0)]; [ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Parachute')])] call CBA_fnc_localEvent;); + onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); uiNamespace setVariable [ARR_2('ACE_dlgParachute',_this select 0)]; [ARR_2('ace_infoDisplayChanged',[ARR_2(_this select 0,'Parachute')])] call CBA_fnc_localEvent;); }; class RscUnitVehicle { - onLoad = QUOTE([ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;); + onLoad = QUOTE([ARR_2('ace_infoDisplayChanged',[ARR_2(_this select 0,'Any')])] call CBA_fnc_localEvent;); }; class RscOptics_LaserDesignator_02 { - onLoad = QUOTE([ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;); + onLoad = QUOTE([ARR_2('ace_infoDisplayChanged',[ARR_2(_this select 0,'Any')])] call CBA_fnc_localEvent;); }; class RscStaminaBar { @@ -110,6 +110,6 @@ class RscInGameUI { }; class RscStanceInfo { - onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscStanceInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); [ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Stance')])] call CBA_fnc_localEvent;); + onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscStanceInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); [ARR_2('ace_infoDisplayChanged',[ARR_2(_this select 0,'Stance')])] call CBA_fnc_localEvent;); }; }; diff --git a/addons/common/XEH_PREP.hpp b/addons/common/XEH_PREP.hpp index 24ffbce3b7..ce6ac334ee 100644 --- a/addons/common/XEH_PREP.hpp +++ b/addons/common/XEH_PREP.hpp @@ -27,6 +27,7 @@ PREP(canGetInPosition); PREP(canInteractWith); PREP(changeProjectileDirection); PREP(checkFiles); +PREP(checkFiles_diagnoseACE); PREP(checkPBOs); PREP(claim); PREP(claimSafeServer); @@ -180,6 +181,7 @@ PREP(statusEffect_resetVariables); PREP(statusEffect_respawnEH); PREP(statusEffect_sendEffects); PREP(statusEffect_set); +PREP(stopGesture); PREP(stringCompare); PREP(stringToColoredText); PREP(swayLoop); diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index c250bda652..414a0ff7b5 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -28,6 +28,7 @@ ["setHidden", true, ["ace_unconscious"]] call FUNC(statusEffect_addType); ["blockRadio", false, [QEGVAR(captives,Handcuffed), QEGVAR(captives,Surrendered), "ace_unconscious"]] call FUNC(statusEffect_addType); ["blockSpeaking", false, ["ace_unconscious"]] call FUNC(statusEffect_addType); +["disableWeaponAssembly", false, ["ace_common", "ace_common_lockVehicle", "ace_csw"]] call FUNC(statusEffect_addType); ["lockInventory", true, []] call FUNC(statusEffect_addType); [QGVAR(forceWalk), { @@ -121,6 +122,11 @@ _object setMass _mass; }] call CBA_fnc_addEventHandler; +[QGVAR(disableWeaponAssembly), { + params ["_object", "_set"]; + _object enableWeaponDisassembly (_set < 1); +}] call CBA_fnc_addEventHandler; + [QGVAR(lockInventory), { params ["_object", "_set"]; TRACE_2("lockInventory EH",_object,_set); @@ -161,10 +167,16 @@ if (isServer) then { [QGVAR(lockVehicle), { _this setVariable [QGVAR(lockStatus), locked _this]; _this lock 2; + if ([] isNotEqualTo getArray (configOf _this >> "assembleInfo" >> "dissasembleTo")) then { + [_this, "disableWeaponAssembly", QGVAR(lockVehicle), true] call FUNC(statusEffect_set); + }; }] call CBA_fnc_addEventHandler; [QGVAR(unlockVehicle), { _this lock (_this getVariable [QGVAR(lockStatus), locked _this]); + if ([] isNotEqualTo getArray (configOf _target >> "assembleInfo" >> "dissasembleTo")) then { + [_this, "disableWeaponAssembly", QGVAR(lockVehicle), false] call FUNC(statusEffect_set); + }; }] call CBA_fnc_addEventHandler; [QGVAR(setDir), {(_this select 0) setDir (_this select 1)}] call CBA_fnc_addEventHandler; diff --git a/addons/common/XEH_preInit.sqf b/addons/common/XEH_preInit.sqf index efe9b10c0c..78c08d5e42 100644 --- a/addons/common/XEH_preInit.sqf +++ b/addons/common/XEH_preInit.sqf @@ -78,6 +78,6 @@ isHC = !hasInterface && !isDedicated; // deprecated because no tag missionNamespace setVariable ["ACE_isHC", ACE_isHC]; uiNamespace setVariable ["ACE_isHC", ACE_isHC]; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" ADDON = true; diff --git a/addons/common/config.cpp b/addons/common/config.cpp index 758957987e..144e7d96c6 100644 --- a/addons/common/config.cpp +++ b/addons/common/config.cpp @@ -4,7 +4,7 @@ class CfgPatches { class ADDON { name = COMPONENT_NAME; units[] = {"ACE_Box_Misc", "ACE_bananaItem", "ACE_Flag_Black", "ACE_Flag_White"}; - weapons[] = {"ACE_ItemCore","ACE_FakePrimaryWeapon", "ACE_Banana"}; + weapons[] = {"ACE_ItemCore", "ACE_FakePrimaryWeapon", "ACE_Banana"}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_main","ace_modules"}; author = CSTRING(ACETeam); @@ -17,6 +17,7 @@ class CfgPatches { #include "CfgEden.hpp" #include "CfgEventHandlers.hpp" #include "CfgLocationTypes.hpp" +#include "CfgGesturesMale.hpp" #include "CfgMagazines.hpp" #include "CfgMoves.hpp" #include "CfgSounds.hpp" diff --git a/addons/common/functions/fnc_checkFiles.sqf b/addons/common/functions/fnc_checkFiles.sqf index 622855da02..8b00cad533 100644 --- a/addons/common/functions/fnc_checkFiles.sqf +++ b/addons/common/functions/fnc_checkFiles.sqf @@ -18,7 +18,9 @@ /////////////// // check addons /////////////// -private _version = getText (configFile >> "CfgPatches" >> "ace_main" >> "versionStr"); +private _mainCfg = configFile >> "CfgPatches" >> "ace_main"; +private _mainVersion = getText (_mainCfg >> "versionStr"); +private _mainSource = configSourceMod _mainCfg; //CBA Versioning check - close main display if using incompatible version private _cbaVersionAr = getArray (configFile >> "CfgPatches" >> "cba_main" >> "versionAr"); @@ -27,7 +29,7 @@ private _cbaRequiredAr = getArray (configFile >> "CfgSettings" >> "CBA" >> "Vers private _cbaVersionStr = _cbaVersionAr joinString "."; private _cbaRequiredStr = _cbaRequiredAr joinString "."; -INFO_3("ACE is version %1 - CBA is version %2 (min required %3)",_version,_cbaVersionStr,_cbaRequiredStr); +INFO_3("ACE is version %1 - CBA is version %2 (min required %3)",_mainVersion,_cbaVersionStr,_cbaRequiredStr); if ([_cbaRequiredAr, _cbaVersionAr] call cba_versioning_fnc_version_compare) then { private _errorMsg = format ["CBA version %1 is outdated (required %2)", _cbaVersionStr, _cbaRequiredStr]; @@ -39,29 +41,47 @@ if ([_cbaRequiredAr, _cbaVersionAr] call cba_versioning_fnc_version_compare) the //private _addons = activatedAddons; // broken with High-Command module, see #2134 private _addons = (cba_common_addons select {(_x select [0,4]) == "ace_"}) apply {toLower _x}; - +private _oldAddons = []; +private _oldSources = []; private _oldCompats = []; { - if (getText (configFile >> "CfgPatches" >> _x >> "versionStr") != _version) then { - private _errorMsg = format ["File %1.pbo is outdated.", _x]; - - ERROR(_errorMsg); + private _addonCfg = configFile >> "CfgPatches" >> _x; + private _addonVersion = getText (_addonCfg >> "versionStr"); + if (_addonVersion != _mainVersion) then { + private _addonSource = configSourceMod _addonCfg; + _oldSources pushBackUnique _addonSource; + call FUNC(checkFiles_diagnoseACE); if ((_x select [0, 10]) != "ace_compat") then { if (hasInterface) then { - ["[ACE] ERROR", _errorMsg, {findDisplay 46 closeDisplay 0}] call FUNC(errorMessage); + _oldAddons pushBack _x; }; } else { - _oldCompats pushBack _x; // Don't block game if it's just an old compat pbo + _oldCompats pushBack [_x, _addonVersion]; // Don't block game if it's just an old compat pbo }; }; - false -} count _addons; +} forEach _addons; + +if (_oldAddons isNotEqualTo []) then { + _oldAddons = _oldAddons apply { format ["%1.pbo", _x] }; + private _errorMsg = ""; + if (count _oldAddons > 3) then { + _errorMsg = format ["The following files are outdated: %1, and %2 more.
ACE Main version is %3 from %4.
Loaded mods with outdated ACE files: %5", (_oldAddons select [0, 3]) joinString ", ", (count _oldAddons) -3, _mainVersion, _mainSource, (_oldSources joinString ", ")]; + } else { + _errorMsg = format ["The following files are outdated: %1.
ACE Main version is %2 from %3.
Loaded mods with outdated ACE files: %4", (_oldAddons) joinString ", ", _mainVersion, _mainSource, (_oldSources) joinString ", "]; + }; + if (hasInterface) then { + ["[ACE] ERROR", _errorMsg, {findDisplay 46 closeDisplay 0}] call FUNC(errorMessage); + }; + ERROR(_errorMsg); +}; + if (_oldCompats isNotEqualTo []) then { + _oldCompats = _oldCompats apply {format ["%1 (%2)", _x select 0, _x select 1]}; [{ // Lasts for ~10 seconds - ERROR_WITH_TITLE_1("The following ACE compatiblity PBOs are outdated", "%1", _this); - }, _oldCompats, 1] call CBA_fnc_waitAndExecute; + ERROR_WITH_TITLE_3("The following ACE compatiblity PBOs are outdated", "%1. ACE Main version is %2 from %3.",_this select 0,_this select 1,_this select 2); + }, [_oldCompats, _mainVersion, _mainSource], 1] call CBA_fnc_waitAndExecute; }; /////////////// @@ -116,7 +136,7 @@ if (isMultiplayer) then { if (isServer) then { // send servers version of ACE to all clients - GVAR(ServerVersion) = _version; + GVAR(ServerVersion) = _mainVersion; GVAR(ServerAddons) = _addons; publicVariable QGVAR(ServerVersion); publicVariable QGVAR(ServerAddons); @@ -125,11 +145,12 @@ if (isMultiplayer) then { [{ if (isNil QGVAR(ServerVersion) || isNil QGVAR(ServerAddons)) exitWith {}; - (_this select 0) params ["_version", "_addons"]; + (_this select 0) params ["_mainVersion", "_addons"]; - if (_version != GVAR(ServerVersion)) then { - private _errorMsg = format ["Client/Server Version Mismatch. Server: %1, Client: %2.", GVAR(ServerVersion), _version]; + if (_mainVersion != GVAR(ServerVersion)) then { + private _errorMsg = format ["Client/Server Version Mismatch. Server: %1, Client: %2.", GVAR(ServerVersion), _mainVersion]; + call FUNC(checkFiles_diagnoseACE); ERROR(_errorMsg); if (hasInterface) then { @@ -141,6 +162,7 @@ if (isMultiplayer) then { if (_addons isNotEqualTo []) then { private _errorMsg = format ["Client/Server Addon Mismatch. Client has extra addons: %1.",_addons]; + call FUNC(checkFiles_diagnoseACE); ERROR(_errorMsg); if (hasInterface) then { @@ -149,6 +171,6 @@ if (isMultiplayer) then { }; [_this select 1] call CBA_fnc_removePerFrameHandler; - }, 1, [_version,_addons]] call CBA_fnc_addPerFrameHandler; + }, 1, [_mainVersion,_addons]] call CBA_fnc_addPerFrameHandler; }; }; diff --git a/addons/common/functions/fnc_checkFiles_diagnoseACE.sqf b/addons/common/functions/fnc_checkFiles_diagnoseACE.sqf new file mode 100644 index 0000000000..5b7f80198b --- /dev/null +++ b/addons/common/functions/fnc_checkFiles_diagnoseACE.sqf @@ -0,0 +1,58 @@ +#include "..\script_component.hpp" +/* + * Author: PabstMirror + * Diagnose ACE install problems, this will only be called if there is a known problem + * + * Arguments: + * None + * + * Return Value: + * None + * + * Example: + * [] call ace_common_fnc_checkFiles_diagnoseACE + * + * Public: No + */ + +// Only run once +if (missionNameSpace getVariable [QGVAR(checkFiles_diagnoseACE), false]) exitWith {}; +GVAR(checkFiles_diagnoseACE) = true; + +private _addons = cba_common_addons select {(_x select [0,4]) == "ace_"}; +private _cfgPatches = configFile >> "CfgPatches"; +private _allMods = createHashMap; + +// Check ACE_ADDONs are in expected mod DIR +{ + private _cfg = (_cfgPatches >> _x); + private _actualModDir = configSourceMod _cfg; + private _expectedModDir = getText (_cfg >> "ACE_expectedModDir"); + if (_expectedModDir == "") then { _expectedModDir = "@ace" }; + private _expectedSteamID = getText (_cfg >> "ACE_expectedSteamID"); + if (_expectedSteamID == "") then { _expectedSteamID = "463939057" }; + + (_allMods getOrDefault [_actualModDir, [], true]) pushBackUnique _expectedSteamID; + if (_actualModDir != _expectedModDir) then { + private _errorMsg = format ["%1 loading from unexpected modDir [%2]",_x,_actualModDir]; + systemChat _errorMsg; + WARNING_1("%1",_errorMsg); + }; +} forEach _addons; + +// Check all ACE ModDirs have expected steam WS ID +{ + private _modDir = _x; + if ((count _y) != 1) then { ERROR_2("Unexpected multiple steamIDs %1 - %2",_modDir,_y) }; + private _expectedSteamID = _y # 0; + private _index = getLoadedModsInfo findIf {_x#1 == _modDir}; + (getLoadedModsInfo param [_index, []]) params [["_modName", "$Error$"], "", "", "", "", "", "", ["_actualID", ""]]; + + if (_actualID != _expectedSteamID) then { + private _errorMsg = format ["%1 [%2] unexpected workshopID [%3]",_modDir,_modName,_actualID]; + systemChat _errorMsg; + WARNING_1("%1",_errorMsg); + }; +} forEach _allMods; + +_allMods diff --git a/addons/common/functions/fnc_claim.sqf b/addons/common/functions/fnc_claim.sqf index 06b13d0778..997d54f33b 100644 --- a/addons/common/functions/fnc_claim.sqf +++ b/addons/common/functions/fnc_claim.sqf @@ -30,17 +30,10 @@ _target setVariable [QGVAR(owner), _unit, true]; // lock target object if (_lockTarget) then { - private _canBeDisassembled = ([] isNotEqualTo getArray (configOf _target >> "assembleInfo" >> "dissasembleTo")) && { !([false, true] select (_target getVariable [QEGVAR(csw,assemblyMode), 0])) }; if (!isNull _unit) then { [QGVAR(lockVehicle), _target, _target] call CBA_fnc_targetEvent; - if (_canBeDisassembled) then { - _target enableWeaponDisassembly false; - }; } else { [QGVAR(unlockVehicle), _target, _target] call CBA_fnc_targetEvent; - if (_canBeDisassembled) then { - _target enableWeaponDisassembly true; - }; }; }; diff --git a/addons/common/functions/fnc_claimSafeServer.sqf b/addons/common/functions/fnc_claimSafeServer.sqf index b8d761c22a..e24a421549 100644 --- a/addons/common/functions/fnc_claimSafeServer.sqf +++ b/addons/common/functions/fnc_claimSafeServer.sqf @@ -36,17 +36,10 @@ _target setVariable [QGVAR(owner), _unit, true]; // lock target object if (_lockTarget) then { - private _canBeDisassembled = ([] isNotEqualTo getArray (configOf _target >> "assembleInfo" >> "dissasembleTo")) && { !([false, true] select (_target getVariable [QEGVAR(csw,assemblyMode), 0])) }; if (!isNull _unit) then { [QGVAR(lockVehicle), _target, _target] call CBA_fnc_targetEvent; - if (_canBeDisassembled) then { - _target enableWeaponDisassembly false; - }; } else { [QGVAR(unlockVehicle), _target, _target] call CBA_fnc_targetEvent; - if (_canBeDisassembled) then { - _target enableWeaponDisassembly true; - }; }; }; diff --git a/addons/common/functions/fnc_disableUserInput.sqf b/addons/common/functions/fnc_disableUserInput.sqf index 629d5b42e5..4037a168b7 100644 --- a/addons/common/functions/fnc_disableUserInput.sqf +++ b/addons/common/functions/fnc_disableUserInput.sqf @@ -60,7 +60,7 @@ if (_state) then { }; private _ctrl = _dlg displayctrl 103; - _ctrl ctrlSetEventHandler ["buttonClick", QUOTE(while {!isNull (uiNamespace getVariable [ARR_2(QUOTE(QGVAR(dlgDisableMouse)),displayNull)])} do {closeDialog 0}; failMission 'LOSER'; [false] call DFUNC(disableUserInput);)]; + _ctrl ctrlSetEventHandler ["buttonClick", QUOTE(while {!isNull (uiNamespace getVariable [ARR_2(QUOTE(QGVAR(dlgDisableMouse)),displayNull)])} do {closeDialog 0}; failMission 'LOSER'; [false] call DFUNC(disableUserInput))]; _ctrl ctrlEnable true; _ctrl ctrlSetText "ABORT"; _ctrl ctrlSetTooltip "Abort."; @@ -69,7 +69,7 @@ if (_state) then { if (["ace_medical"] call FUNC(isModLoaded)) then { _ctrl ctrlSetEventHandler ["buttonClick", 'closeDialog 0; [player, "respawn_button"] call EFUNC(medical_status,setDead); [false] call DFUNC(disableUserInput);']; } else { - _ctrl ctrlSetEventHandler ["buttonClick", QUOTE(closeDialog 0; player setDamage 1; [false] call DFUNC(disableUserInput);)]; + _ctrl ctrlSetEventHandler ["buttonClick", QUOTE(closeDialog 0; player setDamage 1; [false] call DFUNC(disableUserInput))]; }; _ctrl ctrlEnable ((getMissionConfigValue ["respawnButton", -1]) != 0); // handles 3den attribute or description.ext _ctrl ctrlSetText localize "$str_3den_multiplayer_attributecategory_respawn_displayname"; diff --git a/addons/common/functions/fnc_findUnloadPosition.sqf b/addons/common/functions/fnc_findUnloadPosition.sqf index 3e961b50d1..2047f7349d 100644 --- a/addons/common/functions/fnc_findUnloadPosition.sqf +++ b/addons/common/functions/fnc_findUnloadPosition.sqf @@ -2,138 +2,150 @@ /* * Author: PabstMirror, ViperMaul * Find a safe place near a vehicle to unload something. - * Handles Normal Terrain, In Water or On Buildings (Pier, StaticShip). + * Handles normal terrain, water or on buildings (Pier, StaticShip). * * Arguments: - * 0: Source Vehicle - * 1: Cargo or - * 2: Unloader (player) (default: objNull) - * 3: Max Distance (meters) (default: 10) - * 4: Check Vehicle is Stable (default: true) + * 0: Holder object (vehicle) + * 1: Item to be unloaded or + * 2: Unit doing the unloading (default: objNull) + * 3: Max distance (meters) (default: 10) + * 4: Check if holder object is stable (default: true) * * Return Value: - * Unload PositionAGL (can Be [] if no valid pos found) + * Unload PositionAGL ([] if no valid pos found) * * Example: - * [theCar, "CAManBase", player, 10, true] call ace_common_fnc_findUnloadPosition + * [cursorObject, "CAManBase", player, 10, true] call ace_common_fnc_findUnloadPosition * * Public: No */ -//Number of tests run (effects performance in worst case scenarior where nothing is found VERSUES reliably finding a pos): +// Number of tests run (effects performance in worst case scenario where nothing is found VERSUS reliably finding a pos) #define MAX_TESTS 75 -//Manual collision tests (count and radius): +// Manual collision tests (count and radius) #define COL_TEST_COUNT 12 -params ["_vehicle", "_cargo", ["_theUnloader", objNull], ["_maxDistance", 10], ["_checkVehicleIsStable", true]]; -TRACE_5("params",_vehicle,_cargo,_theUnloader,_maxDistance,_checkVehicleIsStable); +params ["_vehicle", "_item", ["_unloader", objNull], ["_maxDistance", 10], ["_checkVehicleIsStable", true]]; +TRACE_5("params",_vehicle,_item,_unloader,_maxDistance,_checkVehicleIsStable); scopeName "main"; if (_checkVehicleIsStable) then { if (((vectorMagnitude (velocity _vehicle)) > 1.5) || {(!(_vehicle isKindOf "Ship")) && {(!isTouchingGround _vehicle) && {((getPos _vehicle) select 2) > 1.5}}}) then { TRACE_4("bad vehicle state",_vehicle,velocity _vehicle,isTouchingGround _vehicle,getPos _vehicle); - [] breakOut "main"; + + [] breakOut "main" }; }; private _radiusOfItem = 1; -if (_cargo isKindOf "CAManBase") then { + +if (_item isKindOf "CAManBase") then { _radiusOfItem = 1.1; } else { - //`sizeOf` is unreliable, and does not work with object types that don't exist on map, so estimate size based on cargo size - private _configOfCargo = if (_cargo isEqualType objNull) then { - configOf _cargo - } else { - configFile >> "CfgVehicles" >> _cargo - }; - private _itemSize = if (isNumber (_configOfCargo >> QEGVAR(cargo,size)) && {getNumber (_configOfCargo >> QEGVAR(cargo,size)) != -1}) then { - getNumber (_configOfCargo >> QEGVAR(cargo,size)); - } else { - if (["ace_cargo"] call FUNC(isModLoaded)) then { - [_cargo] call EFUNC(cargo,getSizeItem); - } else { - _radiusOfItem; + // `sizeOf` is unreliable, and does not work with object types that don't exist on map, so estimate size based on cargo size + if (["ace_cargo"] call FUNC(isModLoaded)) then { + private _itemSize = _item call EFUNC(cargo,getSizeItem); + + if (_itemSize > 0) then { + _radiusOfItem = (_itemSize ^ 0.35) max 0.75; }; }; - if (_itemSize != -1) then { - _radiusOfItem = (_itemSize ^ 0.35) max 0.75; - }; }; -if (isNull _theUnloader) then {_theUnloader = _vehicle;}; +if (isNull _unloader || {_unloader in _vehicle}) then { + _unloader = _vehicle; +}; -//Ideal unload pos is halfway between unloader and vehicle (at the unloader's height) -private _originASL = ((getPosASL _theUnloader) vectorAdd (getPosASL _vehicle)) vectorMultiply 0.5; -_originASL set [2, (getPosASL _theUnloader) select 2]; +// Ideal unload pos is halfway between unloader and vehicle (at the unloader's height) +private _originASL = ((getPosASL _unloader) vectorAdd (getPosASL _vehicle)) vectorMultiply 0.5; +_originASL set [2, (getPosASL _unloader) select 2]; private _originAGL = ASLtoAGL _originASL; -//Do a manual search for empty pos (handles underwater, buildings or piers) +// Do a manual search for empty pos (handles underwater, buildings or piers) TRACE_2("Checking for unload",_originAGL,_radiusOfItem); private _rangeToCheck = 0; + while {_rangeToCheck < _maxDistance} do { private _roundDistance = random _rangeToCheck; private _roundAngle = random 360; private _roundAGL = _originAGL vectorAdd [(cos _roundAngle) * _roundDistance, (sin _roundAngle) * _roundDistance, 0]; private _roundPointIsValid = false; + if (((AGLtoASL _roundAGL) select 2) > 0) then { - //Shoot a ray down, and make sure we hit something solid like a building or the ground: - private _belowRoundArray = lineIntersectsSurfaces [(AGLtoASL _roundAGL) vectorAdd [0,0,0.5], (AGLtoASL _roundAGL) vectorAdd [0,0,-1]]; + // Shoot a ray down, and make sure we hit something solid like a building or the ground + private _belowRoundArray = lineIntersectsSurfaces [(AGLtoASL _roundAGL) vectorAdd [0, 0, 0.5], (AGLtoASL _roundAGL) vectorAdd [0, 0, -1]]; TRACE_4("Testing for solid",_roundDistance,_roundAngle,_roundAGL,_belowRoundArray); + if (_belowRoundArray isNotEqualTo []) then { private _aboveBuilding = (_belowRoundArray select 0) select 2; - //Point is above something: Terrain(null) or Building + + // Point is above something: Terrain (null) or Building if ((isNull _aboveBuilding) || {_aboveBuilding isKindOf "Building"}) then { - //Get the real intersection point: + // Get the real intersection point _roundAGL = ASLtoAGL ((_belowRoundArray select 0) select 0); + _roundPointIsValid = true; }; }; } else { - //Underwater, just unload anywhere + // Underwater, just unload anywhere TRACE_3("Under the sea",_roundDistance,_roundAngle,_roundAGL); + _roundPointIsValid = true; }; - //Make sure point is valid and do a fast check for people in the way (which sometimes aren't caught by line scaning) + // Make sure point is valid and do a fast check for people in the way (which sometimes aren't caught by line scanning) if (_roundPointIsValid && {(_roundAGL nearEntities ["Man", _radiusOfItem]) isEqualTo []}) then { for "_index" from 0 to (COL_TEST_COUNT -1) do { - //Scan for colisions with objects with lineIntersectsSurfaces + // Scan for collisions with objects with lineIntersectsSurfaces private _angle = _index * (360 / COL_TEST_COUNT); private _point1ASL = (AGLtoASL _roundAGL) vectorAdd [_radiusOfItem * cos _angle, _radiusOfItem * sin _angle, 0.1]; - private _point2ASL = (AGLtoASL _roundAGL) vectorAdd [-_radiusOfItem * cos _angle, -_radiusOfItem * sin _angle, (_radiusOfItem + 0.5)]; + private _point2ASL = (AGLtoASL _roundAGL) vectorAdd [-_radiusOfItem * cos _angle, -_radiusOfItem * sin _angle, _radiusOfItem + 0.5]; private _testIntersections = lineIntersectsSurfaces [_point1ASL, _point2ASL]; + if (((count _testIntersections) == 1) && {isNull ((_testIntersections select 0) select 2)}) then { private _hitGroundASL = (_testIntersections select 0) select 0; private _hitHeightOffset = ((AGLtoASL _roundAGL) select 2) - (_hitGroundASL select 2); private _hit2dOffset = _roundAGL distance2D _hitGroundASL; private _slope = _hitHeightOffset atan2 _hit2dOffset; - if (_slope < 25) then { //Ignore ground hit if slope is reasonable + + // Ignore ground hit if slope is reasonable + if (_slope < 25) then { _testIntersections = []; }; }; + if (_testIntersections isNotEqualTo []) exitWith { TRACE_2("collision low/high",_roundAGL,_testIntersections); + _roundPointIsValid = false; }; + _point1ASL = (AGLtoASL _roundAGL) vectorAdd [_radiusOfItem * cos _angle, _radiusOfItem * sin _angle, 0.5]; _point2ASL = (AGLtoASL _roundAGL) vectorAdd [-_radiusOfItem * cos _angle, -_radiusOfItem * sin _angle, 1]; _testIntersections = lineIntersectsSurfaces [_point1ASL, _point2ASL]; + if (_testIntersections isNotEqualTo []) exitWith { TRACE_2("collision mid",_roundAGL,_testIntersections); + _roundPointIsValid = false; }; }; + if (_roundPointIsValid) then { - TRACE_3("Valid point found", _rangeToCheck,_roundAGL, (_originAGL distance _roundAGL)); - //Raise it slightly so we don't sink through the floor: - (_roundAGL vectorAdd [0,0,0.05]) breakOut "main"; + TRACE_3("Valid point found",_rangeToCheck,_roundAGL,_originAGL distance _roundAGL); + + // Raise it slightly so we don't sink through the floor + (_roundAGL vectorAdd [0, 0, 0.05]) breakOut "main"; // return }; }; + _rangeToCheck = _rangeToCheck + (_maxDistance / MAX_TESTS); }; TRACE_1("no valid spots found",_rangeToCheck); -[] //return empty array + +[] // return diff --git a/addons/common/functions/fnc_isModLoaded.sqf b/addons/common/functions/fnc_isModLoaded.sqf index fb7b1807b6..b070b39b38 100644 --- a/addons/common/functions/fnc_isModLoaded.sqf +++ b/addons/common/functions/fnc_isModLoaded.sqf @@ -4,24 +4,17 @@ * Check in CfgPatches if modification is loaded * * Arguments: - * 0: Mod Name or Classname of the mod in CfgPatches + * 0: Classname of the mod in CfgPatches * * Return Value: - * if modification is loaded + * If modification is loaded * * Example: - * ["class"] call ace_common_fnc_isModLoaded + * "class" call ace_common_fnc_isModLoaded * * Public: Yes */ params [["_modName", "", [""]]]; -private _return = GVAR(isModLoadedCache) get _modName; - -if (isNil "_return") then { - _return = isClass (configFile >> "CfgPatches" >> _modName); - GVAR(isModLoadedCache) set [_modName, _return]; -}; - -_return +GVAR(isModLoadedCache) getOrDefaultCall [toLowerANSI _modName, {isClass (configFile >> "CfgPatches" >> _modName)}, true] diff --git a/addons/common/functions/fnc_progressBar.sqf b/addons/common/functions/fnc_progressBar.sqf index 20c1283da4..9b5519c232 100644 --- a/addons/common/functions/fnc_progressBar.sqf +++ b/addons/common/functions/fnc_progressBar.sqf @@ -1,4 +1,5 @@ #include "..\script_component.hpp" +#include "\a3\ui_f\hpp\defineDIKCodes.inc" /* * Author: commy2, Glowbal, PabstMirror * Draw progress bar and execute given function if succesful. @@ -9,9 +10,10 @@ * 1: Arguments, passed to condition, fail and finish * 2: On Finish: Code called or STRING raised as event. * 3: On Failure: Code called or STRING raised as event. - * 4: (Optional) Localized Title - * 5: Code to check each frame (Optional) - * 6: Exceptions for checking EFUNC(common,canInteractWith) (Optional) + * 4: Localized Title (default: "") + * 5: Code to check each frame (default: {true}) + * 6: Exceptions for checking ace_common_fnc_canInteractWith (default: []) + * 7: Create progress bar as dialog, this blocks user input (default: true) * * Return Value: * None @@ -22,13 +24,17 @@ * Public: Yes */ -params ["_totalTime", "_args", "_onFinish", "_onFail", ["_localizedTitle", ""], ["_condition", {true}], ["_exceptions", []]]; +params ["_totalTime", "_args", "_onFinish", "_onFail", ["_localizedTitle", ""], ["_condition", {true}], ["_exceptions", []], ["_dialog", true]]; private _player = ACE_player; //Open Dialog and set the title closeDialog 0; -createDialog QGVAR(ProgressBar_Dialog); +if (_dialog) then { + createDialog QGVAR(ProgressBar_Dialog); +} else { + QGVAR(progressBarDisplay) cutRsc [QGVAR(ProgressBar_Display), "PLAIN"]; +}; private _display = uiNamespace getVariable QGVAR(dlgProgress); @@ -36,8 +42,16 @@ private _display = uiNamespace getVariable QGVAR(dlgProgress); _display call (uiNamespace getVariable "CBA_events_fnc_initDisplayCurator"); // Hide cursor by using custom transparent cursor -private _map = _display displayCtrl 101; -_map ctrlMapCursor ["", QGVAR(blank)]; +if (_dialog) then { + private _map = _display displayCtrl 101; + _map ctrlMapCursor ["", QGVAR(blank)]; +} else { // Add key handler for ESC to cancel + [DIK_ESCAPE, [false, false, false], { + QGVAR(progressBarDisplay) cutText ["", "PLAIN"]; + [QGVAR(progressBarKeyHandler), "keydown"] call CBA_fnc_removeKeyHandler; + true + }, "keydown", QGVAR(progressBarKeyHandler)] call CBA_fnc_addKeyHandler; +}; (uiNamespace getVariable QGVAR(ctrlProgressBarTitle)) ctrlSetText _localizedTitle; @@ -53,7 +67,7 @@ _ctrlPos set [1, ((0 + 29 * GVAR(settingProgressBarLocation)) * ((((safezoneW / (uiNamespace getVariable QGVAR(ctrlProgressBarTitle)) ctrlCommit 0; [{ - (_this select 0) params ["_args", "_onFinish", "_onFail", "_condition", "_player", "_startTime", "_totalTime", "_exceptions", "_title"]; + (_this select 0) params ["_args", "_onFinish", "_onFail", "_condition", "_player", "_startTime", "_totalTime", "_exceptions", "_title", "_dialog"]; private _elapsedTime = CBA_missionTime - _startTime; private _errorCode = -1; @@ -71,8 +85,12 @@ _ctrlPos set [1, ((0 + 29 * GVAR(settingProgressBarLocation)) * ((((safezoneW / if !([_player, objNull, _exceptions] call EFUNC(common,canInteractWith)) then { _errorCode = 4; } else { - if (_elapsedTime >= _totalTime) then { - _errorCode = 0; + if (!_dialog && {dialog}) then { + _errorCode = 5; + } else { + if (_elapsedTime >= _totalTime) then { + _errorCode = 0; + }; }; }; }; @@ -84,7 +102,13 @@ _ctrlPos set [1, ((0 + 29 * GVAR(settingProgressBarLocation)) * ((((safezoneW / //Only close dialog if it's the progressBar: if (!isNull (uiNamespace getVariable [QGVAR(ctrlProgressBar), controlNull])) then { - closeDialog 0; + if (_dialog) then { + closeDialog 0; + } else { + QGVAR(progressBarDisplay) cutText ["", "PLAIN"]; + // Remove key handler for non-dialog bar + [QGVAR(progressBarKeyHandler), "keydown"] call CBA_fnc_removeKeyHandler; + }; }; [_this select 1] call CBA_fnc_removePerFrameHandler; @@ -116,4 +140,4 @@ _ctrlPos set [1, ((0 + 29 * GVAR(settingProgressBarLocation)) * ((((safezoneW / }; }; }; -}, 0, [_args, _onFinish, _onFail, _condition, _player, CBA_missionTime, _totalTime, _exceptions, _localizedTitle]] call CBA_fnc_addPerFrameHandler; +}, 0, [_args, _onFinish, _onFail, _condition, _player, CBA_missionTime, _totalTime, _exceptions, _localizedTitle, _dialog]] call CBA_fnc_addPerFrameHandler; diff --git a/addons/common/functions/fnc_replaceRegisteredItems.sqf b/addons/common/functions/fnc_replaceRegisteredItems.sqf index 43f3b0153c..bfe2e493e0 100644 --- a/addons/common/functions/fnc_replaceRegisteredItems.sqf +++ b/addons/common/functions/fnc_replaceRegisteredItems.sqf @@ -33,37 +33,50 @@ if (GVAR(blockItemReplacement)) exitWith { }; private _cfgWeapons = configFile >> "CfgWeapons"; // Microoptimization +private _containerItems = [uniformItems _unit, vestItems _unit, backpackItems _unit]; for "_i" from 0 to count _newItems - 1 do { private _item = _newItems#_i; - // Get count of item in each container - private _containerCount = []; - { - _containerCount pushBack ({_x == _item} count _x) - } forEach [uniformItems _unit, vestItems _unit, backpackItems _unit]; + private _doReplace = false; + private _replacements = []; // Determine replacement items: direct replacements, ... - private _replacements = GVAR(itemReplacements) getVariable [_item, []]; + private _directReplacements = GVAR(itemReplacements) getVariable _item; + if (!isNil "_directReplacements") then { + _doReplace = true; + _replacements append _directReplacements; + }; // ... item type replacements ... private _type = getNumber (_cfgWeapons >> _item >> "ItemInfo" >> "type"); - private _typeReplacements = GVAR(itemReplacements) getVariable ["$" + str _type, []]; - _replacements append _typeReplacements; + private _typeReplacements = GVAR(itemReplacements) getVariable ("$" + str _type); + if (!isNil "_typeReplacements") then { + _doReplace = true; + _replacements append _typeReplacements; + }; // ... and inherited replacements { if (_item isKindOf [_x, _cfgWeapons]) then { - private _inheritedReplacements = GVAR(itemReplacements) getVariable [_x, []]; - _replacements append _inheritedReplacements; + private _inheritedReplacements = GVAR(itemReplacements) getVariable _x; + if (!isNil "_inheritedReplacements") then { + _doReplace = true; + _replacements append _inheritedReplacements; + }; }; } forEach GVAR(inheritedReplacements); // Replace all items of current class in list - if (_replacements isNotEqualTo []) then { - TRACE_3("replace",_item,_count,_replacements); + if (_doReplace) then { + TRACE_2("replace",_item,_replacements); _unit removeItems _item; + if (_replacements isEqualTo []) exitWith {}; + // Get count of item in each container + private _containerCount = _containerItems apply {{_x == _item} count _x}; + TRACE_1("",_containerCount); + { if (_x == 0) then {continue}; private _container = ["uniform", "vest", "backpack"] select _forEachIndex; diff --git a/addons/common/functions/fnc_stopGesture.sqf b/addons/common/functions/fnc_stopGesture.sqf new file mode 100644 index 0000000000..53e319b04b --- /dev/null +++ b/addons/common/functions/fnc_stopGesture.sqf @@ -0,0 +1,20 @@ +#include "..\script_component.hpp" +/* + * Author: ACRE2Team + * Stops a unit's gesture. + * + * Arguments: + * 0: Target + * + * Return Value: + * None + * + * Example: + * [bob] call ace_common_fnc_stopGesture + * + * Public: Yes + */ + +params ["_unit"]; + +[QGVAR(playActionNow), [_unit, QGVAR(stop)], _unit] call CBA_fnc_targetEvent diff --git a/addons/common/functions/fnc_swayLoop.sqf b/addons/common/functions/fnc_swayLoop.sqf index ec12f3f0aa..069d908d1a 100644 --- a/addons/common/functions/fnc_swayLoop.sqf +++ b/addons/common/functions/fnc_swayLoop.sqf @@ -27,4 +27,4 @@ if (GVAR(swayFactorsMultiplier) isNotEqualTo []) then { ACE_player setCustomAimCoef (_baseline * _multiplier); -[FUNC(swayLoop), [], 1] call CBA_fnc_waitAndExecute +[FUNC(swayLoop), [], 0.5] call CBA_fnc_waitAndExecute diff --git a/addons/common/initSettings.sqf b/addons/common/initSettings.inc.sqf similarity index 90% rename from addons/common/initSettings.sqf rename to addons/common/initSettings.inc.sqf index e6b8b73248..41fcdafecd 100644 --- a/addons/common/initSettings.sqf +++ b/addons/common/initSettings.inc.sqf @@ -33,7 +33,7 @@ private _categoryColors = [_category, format ["| %1 |", LLSTRING(subcategory_col "LIST", [LSTRING(SettingFeedbackIconsName), LSTRING(SettingFeedbackIconsDesc)], _category, - [[0, 1, 2, 3, 4], [ELSTRING(optionsmenu,Hide), ELSTRING(optionsmenu,TopRightDown), ELSTRING(optionsmenu,TopRightLeft), ELSTRING(optionsmenu,TopLeftDown), ELSTRING(optionsmenu,TopLeftRight)], 1], + [[0, 1, 2, 3, 4], [LSTRING(Hide), LSTRING(TopRightDown), LSTRING(TopRightLeft), LSTRING(TopLeftDown), LSTRING(TopLeftRight)], 1], 0 ] call CBA_fnc_addSetting; @@ -42,7 +42,7 @@ private _categoryColors = [_category, format ["| %1 |", LLSTRING(subcategory_col "LIST", [LSTRING(SettingProgressBarLocationName), LSTRING(SettingProgressBarLocationDesc)], _category, - [[0, 1], [ELSTRING(optionsmenu,Top), ELSTRING(optionsmenu,Bottom)], 0], + [[0, 1], [LSTRING(Top), LSTRING(Bottom)], 0], 0 ] call CBA_fnc_addSetting; diff --git a/addons/common/stringtable.xml b/addons/common/stringtable.xml index 9cb581b91f..bfce2cd510 100644 --- a/addons/common/stringtable.xml +++ b/addons/common/stringtable.xml @@ -5,7 +5,7 @@ Common Allgemein Comune - 全般 + 一般 通用 通用 일반 @@ -334,7 +334,7 @@ ONO NyÉNy ONO - 北北西 + 西北西 서북서 西北西 西北偏西 @@ -385,7 +385,7 @@ Ação cancelada. Művelet megszakítva. Azione cancellata. - 動作を中止した。 + アクションを中断した。 행동 취소됨. 動作已被取消 动作已被取消 @@ -482,7 +482,7 @@ Controlla Azioni PBO 檢查PBO動作 检查 PBO 动作 - PBO 検査の挙動 + PBO検査の挙動 PBO 검사 Sprawdź akcję PBO Действие при проверке PBO @@ -498,11 +498,13 @@ 设定当玩家有错误的 PBO 时要如何处理。 Nastavuje jakou akci provést pokud hráč nemá správné PBO. Określa akcję, która ma być podjęta, jeśli gracz nie ma właściwych PBO. - プレイヤーが不正規の PBO を所持している場合の動作を決定します。 + プレイヤーが不正規のPBOを所持している場合の動作を決定します。 Define la accion a tomar si un jugador no tiene el PBO correcto + Definisce l'azione che verrà presa se il giocatore non ha gli stessi PBO. Определяет, какое действие будет предпринято, если игрок не имеет корректные PBO. Definiert, was passieren soll, wenn ein Spieler nicht die korrekten PBOs nutzt. 플레이어가 같은 PBO를 가지고 있지 않을 시 취할 행동을 정합니다. + Define a ação a ser tomada se um jogador não tiver os PBOs corretos. Check PBO All @@ -510,7 +512,7 @@ Controlla Tutti i PBO 檢查所有PBO 检查所有 PBO - PBO 全てを検査 + 全てのPBOを検査 모든 PBO 검사 Sprawdź wszystkie PBO Проверять все PBO @@ -522,15 +524,17 @@ Check all addons, not only those of ACE. Vérifie tous les addons, même ceux qui ne sont pas liés à ACE. + Controlla tutti gli addon, non solo quelli ACE. 檢查全部的插件而非只有ACE。 检查全部插件而非只有 ACE。 Zkontrolovat všechny addony a ne jenom ACE. Sprawdź wszystkie dodatki, nie tylko ACE. - ACE のみならず、全てのアドオンを検査します。 + ACE だけでなく、全てのアドオンを検査します。 Comprueba todos los complementos, no sólo los de ACE Проверять все аддоны, а не только ACE. Überprüft alle Erweiterungen, nicht nur die von ACE. ACE 뿐만이 아닌 다른 PBO 모두 검사합니다. + Verifica todos os addons, não apenas os do ACE. Check PBO Whitelist @@ -538,7 +542,7 @@ Controlla Whitelist PBO 檢查PBO白名單 检查 PBO 白名单 - 許可リスト内の PBO を検査 + PBO 検査のホワイトリスト PBO 화이트리스트 확인 Sprawdź białą listę PBO Белый список для проверки PBO @@ -550,15 +554,17 @@ Define a list of regardless allowed addons. Permet de définir une liste d'addons autorisés systématiquement. + Definisce una lista di PBO permessi in ogni caso. 定義哪些插件是允許使用的。 定义哪些插件是允许使用的。 Nastavte seznam addonů, které jsou povolené. Zdefiniuj listę niezależnie od dozwolonych dodatków. - 許可するアドオンを定義します。 + 関係なく使用が許可されるアドオンのリストを定義します。 Comprueba la lista de PBOs permitidos Задать список непроверяемых аддонов. Ermöglicht das Erstellen einer Liste von immer erlaubten Erweiterungen. 허용된 애드온 목록을 정의합니다. + Define uma lista de addons permitidos. Feedback icons @@ -587,7 +593,7 @@ Nastavuje pozici nebo vypíná pomocné ikony. Tyto ikony ukazují extra informace ke stavu postavy a vykonávaných činností. Itt beállítható a visszajelző ikonok képernyőn lévő helyzete és jelenléte. Ezek az ikonok extra visszajelzést biztosítanak a karaktered állapotán és végrehajtott cselekvésein. Selecione a posição ou disabilite a posição dos ícones de feedback na sua tela. Esses ícones irão aparecer para mostrar feedback extra do status do seu personagem e ações realizadas. - 画面上に表示するフィードバック アイコンの位置や無効化を選択できます。このアイコンは自キャラクター状態や動作の状況をフィードバックするために表示されています。 + 画面上のフィードバック アイコンの位置を選択するか、無効にします。 これらのアイコンは、キャラクターのステータスと実行されたアクションに関する追加のフィードバックを提供するために表示されます。 피드백 아이콘의 위치를 설정하거나 비활성화합니다. 피드백 아이콘은 캐릭터의 상세정보와 행동을 보여줍니다. 選擇位置或取消回饋圖標顯示在螢幕上。這些圖標將顯示出你角色額外的狀態與行動等資訊 选择位置或取消回馈图标显示在屏幕上。这些图标将显示出你角色额外的状态与行动等信息。 @@ -667,7 +673,7 @@ Barva fontu nápovědy. Súgószöveg betűinek színe Cor do do texto da hint - ヒント文章の色 + ヒント文章の文字色 힌트 글씨색 提示文字的顏色 提示文字的颜色 @@ -683,7 +689,7 @@ Barva fontu ACE nápověd. Toto je standardní barva pro všechen text zobrazovaný ACE nápovědami, pokud nemá nápověda žádnou specifikanou barvu. Az ACE-súgók betűkészletének színek. Ez a szín alapértelmezett az összes szövegre az ACE-súgórendszerben, ha a súgószöveg maga nem ad meg más színt. A cor do texto das hints do ACE. Essa cor é a cor default para todos os texos exibidos pelo sistema de hints do ACE , caso o texto da hint não tem outra cor especificada. - ACE によるヒントの文章に色を設定できます。この色は ACE ヒント システムを介して表示される全文章の色と標準でなっており、特定の色を設定していても、標準色になります。 + ACE ヒント文章の文字色。 ヒント文章に他の色が指定されていない場合、この色は、ACE ヒント システムを通じて表示されるすべての文章の標準色になります。 ACE 힌트에 쓰이는 글씨 색입니다. 힌트 글씨의 색이 정해지지 않을경우 모든 힌트의 색은 기본으로 설정됩니다. 設定ACE提示文字的顏色。若提示字體並無指定其他顏色,將會自動選用ACE系統的預設顏色 设定 ACE 提示文字的颜色。若提示字体并无指定其他颜色,将会自动选用 ACE 的预设颜色。 @@ -705,8 +711,8 @@ Persistent weapon laserpointer/flashlight Автоматический ЛЦУ/тактический фонарь - 武器のレーザー ポインタ/フラッシュライトの永続 - Laser/torcia dell'arma costantemente accesi + 武器のレーザー ポインター/フラッシュライトの永続性 + Laser/torcia dell'arma rimangono accesi 무기 레이저 지시기/손전등 지속 Kontinuität des Laserpointers/Taktischen Lichts 保持武器雷射/手電筒的狀態 @@ -775,7 +781,7 @@ PBO-k ellenőrzése Проверка аддонов Controlla PBO - PBO を検査 + PBOを検査 PBO 검사 檢查PBO檔 检查 PBO @@ -790,7 +796,7 @@ Выполняет проверку версий аддонов ACE у подключаемых игроков /!\ Module obsolète /!\ - Vérifie l'intégrité des addons avec le serveur, et effectue l'action sélectionnée si un addon est manquant. Controlla l'integrità degli addon con il server ed esegui l'azione selezionata se un addon è mancante - サーバがアドオンの整合性を検査し、もし不備があれば実行する動作を選択できます。 + サーバーとのアドオンの整合性をチェックし、不備があった場合は選択したアクションを実行します。 서버 애드온의 무결성을 검사하고 사라진 애드온이 있을 경우 행동을 선택합니다. 檢查客戶端與伺服器端的模組清單是否一致且完整,並提供訊息表示遺失的模組 检查客户端与服务器端的模组清单是否一致且完整,并提供信息表示遗失的模组。 @@ -822,7 +828,7 @@ Mi legyen azokkal a személyekkel, akiknek nincsenek meg a helyes PBO-k? Что делать с игроками с неправильными аддонами? Cosa fare con giocatori che non hanno i PBO corretti? - プレイヤーが正しい PBO を持っていない場合は? + プレイヤーが正しいPBOを持っていない場合は? 올바르지 않은 PBO를 가진 사람을 어떻게 할까요? 若玩家沒有正確的PBO檔時,將採取何種動作? 若玩家没有正确的 PBO 档时,将采取何种动作? @@ -838,7 +844,7 @@ Egyszeri figyelmeztetés Предупредить один раз Avverti una volta - 一度の警告 + 一度警告 경고 한 번 警告 (一次) 警告(一次) @@ -855,7 +861,7 @@ Figyelmeztetés (tartós) Предупреждать (постоянно) Avverti (permanente) - 警告 (永久的) + 警告 (永続) 경고 (영구적) 警告 (持續) 警告(持续) @@ -905,7 +911,7 @@ Az összes bővítmény ellenőrzése, csak az ACE helyett? Проверять все аддоны, а не только ACE? Controlla tutti gli addon invece dei soli addon ACE? - ACE MOD の代わりに全アドオンを検査しますか? + ACE のアドオンだけではなく、すべてのアドオンをチェックしますか? ACE를 제외한 모든 모드를 검사할까요? 檢查包含ACE之外的其他模組? 检查包含 ACE 之外的其他模组? @@ -921,7 +927,7 @@ Fehérlista Вайтлист доп. аддонов Lista Bianca - 許可制 + ホワイトリスト 화이트리스트 白名單 白名单 @@ -970,7 +976,7 @@ LSD-effekt hozzáadása a szinkronizált járművekhez Добавляет эффект LSD (мигание всеми цветами радуги) синхронизированным транспортным средствам Aggiunge effetti LSD ai veicoli sincronizzati - 同期されたオブジェクトに LSD の効果を追加します + 同期された車両に LSD 効果を追加します 동기화된 차량에 LSD 효과를 추가합니다. 使被同步的載具產生瘋狂的迷幻效果。(後果自負) 使被同步的载具产生疯狂的迷幻效果。(后果自负) @@ -986,7 +992,7 @@ Kézi eszköz kapcsolása Включить портативное устройство Apri dispositivo palmare - デバイスを常に表示 + 携帯装置の表示を切り替え 휴대장치 토글 切換手持裝備 切换手持装备 @@ -1002,7 +1008,7 @@ Kézi eszköz bezárása Закрыть портативное устройство Chiudi dispositivo palmare - デバイスを閉じる + 携帯装置を閉じる 휴대장치 닫기 關閉手持裝備 关闭手持装备 @@ -1018,7 +1024,7 @@ Kézi eszköz váltása Следующее портативное устройство Cicla tra dispositivi palmari - 表示するデバイスを変える + 表示する携帯装置をサイクル 휴대장치 순환 循環切換手持裝備 循环切换手持装备 @@ -1246,7 +1252,7 @@ ACE Obecné ACE Comune ACE Commun - ACE 全般 + ACE 一般 ACE 일반 ACE 通用按鍵 ACE 通用 @@ -1320,10 +1326,13 @@ ACE 未分类 ACE 무분류 ACE Unkategorisiert + ACE Non-Categorizzati ACE Nieskategoryzowane - ACE 未区分 + ACE 未分類 ACE Без категории ACE Sin categoría + ACE Non classé + ACE Sem Categoria No Room to unload @@ -1359,7 +1368,7 @@ Toggle - переключить + Przełącz переключить Basculer Cambiar @@ -1413,7 +1422,7 @@ ACE 스크립트가 음악을 끌 수 있습니다. 允許ACE腳本去控制音樂的音量 允许 ACE 脚本去控制音乐的音量。 - ACE スプリントへ音量低下を許可します。 + ACEのスクリプトに音量低下を許可します。 Permetti agli script di ACEdi abbassare la musica. Zezwól skrypty ACE na przyciszanie muzyki. Позволить скриптам ACE приглушать музыку @@ -1429,21 +1438,25 @@ けいれん回避モード Tryb dla epileptyków Mode adapté à l'épilepsie + Modalità per Epilettici 癫痫病友好模式 광과민 친화적 모드 Режим для эпилептиков Modo adaptado para epilepsia + Modo adaptado para epilepsia Disables some flashing light effects to reduce seizure risk. Deaktiviert einige Lichtflackereffekte um das Risiko von Epilepsieanfällen zu reduzieren. - 点滅する光エフェクトを無効化し、けいれんする恐れを低下させます。 + いくつかの光点滅エフェクトを無効化し、けいれんの恐れを低下させます。 Wyłącz część migających efektów w celu zredukowania ryzyka napadu epilepsji Désactive certains effets de lumière clignotante afin de réduire les risques de crise d'épilepsie. + Disattiva alcuni effetti di luci intermittenti per ridurre il rischio di crisi epilettiche. 禁用一些闪烁的灯光效果,以降低癫痫发作的风险。 반짝거리는 빛으로 인해 일어날 발작 상황을 줄여줍니다. Отключает некоторые вспышки во избежание риска приступа. Deshabilita algunos efectos de iluminación para reducir el riesgo de convulsiones. + Desabilita alguns efeitos de luz para reduzir o risco de convulsões. Flag (ACE - Black) @@ -1499,10 +1512,13 @@ Tylko dla AI 인공지능만 Nur KI + Solo IA 仅 AI AIのみ Только ИИ Sólo IA + IA uniquement + Somente IA Players and AI @@ -1528,7 +1544,7 @@ 在自我互动菜单内显示动作 Pokaż akcje w menu interakcji własnej Mostra a ação no menu de auto-interação - セルフ インタラクションに動作を表示 + セルフ インタラクションにアクションを表示 Mostra le azioni nel menu di interazione con se stessi Mostrar la acción en el menú de interacción propio Zobrazit akci v menu vlastních interakcí @@ -1544,32 +1560,38 @@ Les deux Оба Beide + Entrambi Oba 两方 둘 다 Ambos + Ambos Additional progress bar information - プログレス バー詳細情報 + プログレス バーの詳細情報 Infos supplémentaires de la barre de progression Доп. информация индикатора процесса Zusätzliche Informationen beim Fortschrittsbalken + Info aggiuntive sulla barra del progresso Dodatkowe informacje na pasku postępu 额外的进度条信息 추가 진행 막대 정보 Barra adicional de información de progreso + Informações adicionais na barra de progresso Controls extra information shown in progress bar. プログレス バーへ表示される情報量を決定します。 Définit quelles informations supplémentaires sont affichées dans la barre de progression. Устанавливает дополнительную информацию в индикаторе процесса. - Kontrolliert zusätzliche Informationen beim Fortschrittsbalkens + Kontrolliert zusätzliche Informationen beim Fortschrittsbalkens. + Mostra ulteriori informazioni nella barra di avanzamento. Kontroluje dodatkowe informacje na pasku postępu. 控制进度条中显示的额外信息。 진행 막대에 추가적인 정보를 보여주는걸 결정합니다. Controla la información extra mostrada en la barra de progreso. + Controla informações adicionais mostradas na barra de progresso. Percentage @@ -1577,10 +1599,12 @@ Pourcentage Процент выполнения Prozent + Percentuale Procent 百分比 백분율 Porcentaje + Porcentagem Time remaining @@ -1588,10 +1612,12 @@ Temps restant Времени осталось Zeit verbleibend + Tempo rimanente Pozostały czas 剩余时间 남은 시간 Tiempo restante + Tempo restante None @@ -1627,26 +1653,28 @@ Time left: %1s - 残り時間: %1 秒 + 残り時間: %1秒 Temps restant : %1 s Оставшееся время: %1s Zeit übrig %1s + Tempo rimanente: %1s Pozostały czas: %1s 剩余时间:%1秒 남은 시간: %1초 Tiempo restante: %1s + Tempo restante: %1s Locations Boost Training Zdravotnická místa zvyšují zdravotnickou úrovně - Sedi per potenziare la formazione + Luoghi che potenziano le abilità Örtliche Trainingssteigerung Ubicación mejora entrenamiento. Miejsca zwiększają wyszkolenie Localização melhora treinamento Le lieu améliore l'efficacité Места ускоренного обучения - 衛生能力の上昇位置 + 能力が向上する場所 교육 증가 지역 位置提升能力 受所在位置影響提升醫療能力 @@ -1661,6 +1689,9 @@ Разрядить оружие Descargar arma Waffe entladen + Scarica Arma + Décharger l'arme + Descarregar arma Load @@ -1678,5 +1709,124 @@ 装载 Yükle + + Hide + Ukryj + Ocultar + Verstecken + Skrýt + Ocultar + Cacher + Elrejtés + Скрыть + Nascondi + 非表示 + 숨기기 + 隐藏 + 隱藏 + Gizle + + + Top right, downwards + Po prawej u góry, w dół + Arriba a la derecha, hacia abajo + Oben rechts, nach unten + Vpravo nahoře, dolů + Superior direito, para baixo + En haut à droite, vers le bas + Jobb felül, lefele + Справа — сверху вниз + In Alto a Destra, verso il Basso + 右上、下向 + 오른쪽 위에서 아래로 + 右上角,向下 + 右上角,向下 + Sağ üst, aşağı + + + Top right, to the left + Po prawej u góry, do lewej + Arriba a la derecha, hacia la izquierda + Von rechts nach links + Vpravo nahoře, do leva + Superior direito, à esquerda + En haut à droite, vers la gauche + Jobb felül, balra + Сверху — справа налево + In Alto a Destra, verso Sinistra + 右上、左向 + 오른쪽 위에서 왼쪽으로 + 右上角,向左 + 右上角,向左 + Sağ üstte, solda + + + Top left, downwards + Po lewej u góry, w dół + Arriba a la izquierda, hacia abajo + Von links, nach unten + Vlevo nahoře, dolů + Superior esquerdo, para baixo + En haut à gauche, vers le bas + Bal felül, lefele + Слева - сверху вниз + In Alto a Sinistra, verso il Basso + 左上、下向 + 왼쪽 위에서 아래로 + 左上角,向下 + 左上角,向下 + Sol üst, aşağı + + + Top left, to the right + Po lewej u góry, do prawej + Arriba a la izquierda, hacia la derecha + Oben links nach rechts + Vlevo nahoře, do prava + Superior esquerdo, para a direita + En haut à gauche, vers la droite + Bal felül, jobbra + Сверху — слева направо + In Alto a Sinistra, verso Destra + 右上、右向 + 왼쪽 위에서 오른쪽으로 + 左上角,向右 + 左上角,向右 + Sol üst, sağa + + + Top + Góra + Arriba + Oben + Nahoře + Acima + En haut + Fent + Сверху + Alto + 上側 + 상단 + 上方 + 上方 + Üst + + + Bottom + Dół + Abajo + Unten + Dole + Abaixo + En bas + Alul + Снизу + Basso + 下側 + 하단 + 下方 + 下方 + Alt + diff --git a/addons/compat_rhs_saf3/compat_rhs_saf3_explosives/config.cpp b/addons/compat_rhs_saf3/compat_rhs_saf3_explosives/config.cpp index 12cf2a9a55..099fef0b9d 100644 --- a/addons/compat_rhs_saf3/compat_rhs_saf3_explosives/config.cpp +++ b/addons/compat_rhs_saf3/compat_rhs_saf3_explosives/config.cpp @@ -20,3 +20,4 @@ class CfgPatches { #include "CfgAmmo.hpp" #include "CfgMagazines.hpp" +#include "CfgVehicles.hpp" diff --git a/addons/compat_rhs_usf3/CfgMagazineWells.hpp b/addons/compat_rhs_usf3/CfgMagazineWells.hpp index a5d8f8c58d..01223ec141 100644 --- a/addons/compat_rhs_usf3/CfgMagazineWells.hpp +++ b/addons/compat_rhs_usf3/CfgMagazineWells.hpp @@ -6,6 +6,6 @@ class CfgMagazineWells { ADDON[] = {QGVAR(pylon_mag_2rnd_hellfire_n)}; }; class ace_hellfire_L { - ADDON[] = {QGVAR(pylon_mag_2rnd_hellfire_L)}; + ADDON[] = {QGVAR(pylon_mag_2rnd_hellfire_l)}; }; }; diff --git a/addons/compat_rhs_usf3/CfgVehicles.hpp b/addons/compat_rhs_usf3/CfgVehicles.hpp index 64a2112a82..0593c5a868 100644 --- a/addons/compat_rhs_usf3/CfgVehicles.hpp +++ b/addons/compat_rhs_usf3/CfgVehicles.hpp @@ -158,7 +158,9 @@ class CfgVehicles { }; EGVAR(vehicle_damage,canHaveFireRing) = 1; }; - class RHS_M2A3; + class RHS_M2A3: RHS_M2A2 { + ace_hunterkiller = 1; + }; class RHS_M2A3_BUSKI: RHS_M2A3 { EGVAR(vehicle_damage,eraHitpoints)[] = { "era_1_hitpoint", "era_2_hitpoint", "era_3_hitpoint", "era_4_hitpoint", "era_5_hitpoint", diff --git a/addons/compat_rhs_usf3/compat_rhs_usf3_arsenal/CfgWeapons.hpp b/addons/compat_rhs_usf3/compat_rhs_usf3_arsenal/CfgWeapons.hpp index 7888e52393..8dc735265c 100644 --- a/addons/compat_rhs_usf3/compat_rhs_usf3_arsenal/CfgWeapons.hpp +++ b/addons/compat_rhs_usf3/compat_rhs_usf3_arsenal/CfgWeapons.hpp @@ -18,6 +18,8 @@ class CfgWeapons { baseWeapon = "rhsusf_acc_anpeq15_wmx"; }; class rhsusf_acc_M952V: rhsusf_acc_anpeq15_light { + rhs_acc_combo = ""; // prevent materializing a PEQ-15 if RHS's attachment switch is called + rhs_anpeq15_base = ""; // same deal baseWeapon = "rhsusf_acc_M952V"; }; class rhsusf_acc_wmx: rhsusf_acc_M952V { @@ -29,6 +31,12 @@ class CfgWeapons { class rhsusf_acc_anpeq15A: acc_pointer_IR { baseWeapon = "rhsusf_acc_anpeq15A"; }; + class rhsusf_acc_anpeq15_top: rhsusf_acc_anpeq15A { + baseWeapon = "rhsusf_acc_anpeq15_top"; + }; + class rhsusf_acc_anpeq15_bk_top: rhsusf_acc_anpeq15_top { + baseWeapon = "rhsusf_acc_anpeq15_bk_top"; + }; class rhsusf_acc_anpeq15side: acc_pointer_IR { baseWeapon = "rhsusf_acc_anpeq15side"; }; diff --git a/addons/compat_rhs_usf3/compat_rhs_usf3_csw/stringtable.xml b/addons/compat_rhs_usf3/compat_rhs_usf3_csw/stringtable.xml index d79afe08c6..bb185513a7 100644 --- a/addons/compat_rhs_usf3/compat_rhs_usf3_csw/stringtable.xml +++ b/addons/compat_rhs_usf3/compat_rhs_usf3_csw/stringtable.xml @@ -8,6 +8,8 @@ [班组] BGM-71A TOW [CSW] BGM-71A TOW [CSW] BGM-71A TOW + [CSW] BGM-71A TOW + [CSW] BGM-71A TOW [CSW] BGM-71B TOW @@ -16,6 +18,8 @@ [班组] BGM-71B TOW [CSW] BGM-71B TOW [CSW] BGM-71B TOW + [CSW] BGM-71B TOW + [CSW] BGM-71B TOW [CSW] BGM-71C ITOW @@ -24,6 +28,8 @@ [班组] BGM-71C ITOW [CSW] BGM-71C ITOW [CSW] BGM-71C ITOW + [CSW] BGM-71C ITOW + [CSW] BGM-71C ITOW [CSW] BGM-71D TOW-2 @@ -32,6 +38,8 @@ [班组] BGM-71D TOW-2 [CSW] BGM-71D TOW-2 [CSW] BGM-71D TOW-2 + [CSW] BGM-71D TOW-2 + [CSW] BGM-71D TOW-2 [CSW] BGM-71E TOW-2A @@ -40,6 +48,8 @@ [班组] BGM-71E TOW-2A [CSW] BGM-71E TOW-2A [CSW] BGM-71E TOW-2A + [CSW] BGM-71E TOW-2A + [CSW] BGM-71E TOW-2A [CSW] BGM-71F TOW-2B @@ -48,6 +58,8 @@ [班组] BGM-71F TOW-2B [CSW] BGM-71F TOW-2B [CSW] BGM-71F TOW-2B + [CSW] BGM-71F TOW-2B + [CSW] BGM-71F TOW-2B [CSW] BGM-71F-3 TOW-2B AERO @@ -56,14 +68,18 @@ [班组] BGM-71F-3 TOW-2B AERO [CSW] BGM-71F-3 TOW-2B AERO [CSW] BGM-71F-3 TOW-2B AERO + [CSW] BGM-71F-3 TOW-2B AERO + [CSW] BGM-71F-3 TOW-2B AERO [CSW] BGM-71H Bunker Buster [CSW] BGM-71H 벙커버스터 - [CSW] BGM-71H Bunker Buster + [CSW] BGM-71H バンカーバスター [班组] BGM-71H “碉堡克星” [CSW] BGM-71H Bunker Buster [CSW] BGM-71H Anti-Búnquer + [CSW] BGM-71H Bunker Buster + [CSW] BGM-71H Anti-Bunker [CSW] Mk. 19 40mm M384 HE @@ -72,6 +88,8 @@ [班组] Mk. 19 40mm M384 高爆 [CSW] Mk. 19 40 мм M384 HE [CSW] Mk. 19 40mm M384 HE + [CSW] Mk. 19 40mm M384 HE + [CSW] Mk. 19 40mm M384 HE [CSW] Mk. 19 40mm M430I HEDP @@ -80,6 +98,8 @@ [班组] Mk. 19 40mm M430I 两用高爆 [CSW] Mk. 19 40 мм M430I HEDP [CSW] Mk. 19 40mm M430I HEDP + [CSW] Mk. 19 40mm M430I HEDP + [CSW] Mk. 19 40mm M430I HEDP [CSW] Mk. 19 40mm M430A1 HEDP @@ -88,6 +108,8 @@ [班组] Mk. 19 40mm M430A1 两用高爆 [CSW] Mk. 19 40 мм M430A1 HEDP [CSW] Mk. 19 40mm M430A1 HEDP + [CSW] Mk. 19 40mm M430A1 HEDP + [CSW] Mk. 19 40mm M430A1 HEDP [CSW] Mk. 19 40mm M1001 Canister @@ -96,6 +118,8 @@ [班组] Mk. 19 40mm M1001 霰弹 [CSW] Mk. 19 40 мм M1001 Канистровый [CSW] Mk. 19 40mm M1001 Bote de metralla + [CSW] Mk. 19 40mm M1001 Kanister + [CSW] Mk. 19 40mm M1001 Pallettoni diff --git a/addons/compat_rhs_usf3/compat_rhs_usf3_explosives/CfgMagazines.hpp b/addons/compat_rhs_usf3/compat_rhs_usf3_explosives/CfgMagazines.hpp index 552ef8628c..332c2bf1f2 100644 --- a/addons/compat_rhs_usf3/compat_rhs_usf3_explosives/CfgMagazines.hpp +++ b/addons/compat_rhs_usf3/compat_rhs_usf3_explosives/CfgMagazines.hpp @@ -24,7 +24,7 @@ class CfgMagazines { class ATMine_Range_Mag; class rhs_mine_M19_mag: ATMine_Range_Mag { - EGVAR(explosives,setupObject) = QEGVAR(explosives,Place_rhsusf_explosive_mine_M19); + EGVAR(explosives,setupObject) = QEGVAR(explosives,Place_rhsusf_mine_M19); class ACE_Triggers { SupportedTriggers[] = {"PressurePlate"}; class PressurePlate { @@ -34,7 +34,7 @@ class CfgMagazines { }; class rhsusf_mine_m14_mag: ATMine_Range_Mag { - EGVAR(explosives,setupObject) = QEGVAR(explosives,Place_rhsusf_explosive_mine_m14); + EGVAR(explosives,setupObject) = QEGVAR(explosives,Place_rhsusf_mine_m14); class ACE_Triggers { SupportedTriggers[] = {"PressurePlate"}; class PressurePlate { @@ -44,7 +44,7 @@ class CfgMagazines { }; class rhsusf_mine_m49a1_3m_mag: ATMine_Range_Mag { - EGVAR(explosives,setupObject) = QEGVAR(explosives,Place_rhsusf_explosive_mine_m49a1_3m); + EGVAR(explosives,setupObject) = QEGVAR(explosives,Place_rhsusf_mine_m49a1_3m); class ACE_Triggers { SupportedTriggers[] = {"Tripwire"}; class Tripwire { @@ -54,10 +54,10 @@ class CfgMagazines { }; class rhsusf_mine_m49a1_6m_mag: rhsusf_mine_m49a1_3m_mag { - EGVAR(explosives,setupObject) = QEGVAR(explosives,Place_rhsusf_explosive_mine_m49a1_6m); + EGVAR(explosives,setupObject) = QEGVAR(explosives,Place_rhsusf_mine_m49a1_6m); }; class rhsusf_mine_m49a1_10m_mag: rhsusf_mine_m49a1_3m_mag { - EGVAR(explosives,setupObject) = QEGVAR(explosives,Place_rhsusf_explosive_mine_m49a1_10m); + EGVAR(explosives,setupObject) = QEGVAR(explosives,Place_rhsusf_mine_m49a1_10m); }; }; diff --git a/addons/compat_sog/compat_sog_trenches/CfgVehicles.hpp b/addons/compat_sog/compat_sog_trenches/CfgVehicles.hpp index 3c2ba22410..bb222eaed1 100644 --- a/addons/compat_sog/compat_sog_trenches/CfgVehicles.hpp +++ b/addons/compat_sog/compat_sog_trenches/CfgVehicles.hpp @@ -39,7 +39,7 @@ class CfgVehicles { class ACE_ContinueDiggingTrench { displayName = ECSTRING(trenches,ContinueDiggingTrench); condition = QUOTE([ARR_2(_target,_player)] call EFUNC(trenches,canContinueDiggingTrench)); - statement = QUOTE([ARR_2(_target,_player)] call EFUNC(trenches,continueDiggingTrench);); + statement = QUOTE([ARR_2(_target,_player)] call EFUNC(trenches,continueDiggingTrench)); }; }; }; diff --git a/addons/compat_sog/functions/fnc_handlePunjiTrapTrigger.sqf b/addons/compat_sog/functions/fnc_handlePunjiTrapTrigger.sqf index 17ed92a172..d2e9abdbbc 100644 --- a/addons/compat_sog/functions/fnc_handlePunjiTrapTrigger.sqf +++ b/addons/compat_sog/functions/fnc_handlePunjiTrapTrigger.sqf @@ -15,7 +15,7 @@ * Public: No */ params ["_trap"]; -if (!(["ACE_Medical"] call EFUNC(common,isModLoaded))) exitWith {}; +if (!(["ace_medical"] call EFUNC(common,isModLoaded))) exitWith {}; private _radius = getNumber (configOf _trap >> "indirectHitRange"); private _affectedUnits = _trap nearEntities ["CAManBase", _radius]; diff --git a/addons/compat_sog/stringtable.xml b/addons/compat_sog/stringtable.xml index 57e4106b78..06f0827d08 100644 --- a/addons/compat_sog/stringtable.xml +++ b/addons/compat_sog/stringtable.xml @@ -5,381 +5,457 @@ Dig in Zakop Eingraben + Trincerati 掘る 땅파기 挖掘 Закопать Enterrarse + Escavar M49A2 60mm HE M49A2 60mm HE - M49A2 60mm りゅう弾 + M49A2 60mm HE + M49A2 60mm 榴弾 M49A2 60mm HE M49A2 60mm 고폭 M49A2 60 mm 高爆弹 M49A2 60 мм ОФ M49A2 60mm HE + M49A2 60mm HE M302 60mm WP M302 60mm Weißer Phosphor + M302 60mm Fosforo Bianco M302 60mm 白リン弾 M302 60mm WP M302 60mm 백린 M302 60 mm 白磷弹 M302 60 мм Фосфорная M302 60mm WP + M302 60mm WP M83 60mm Lume M83 60mm Leuchtpatrone + M83 60mm Illuminante M83 60mm 照明弾 M83 60mm ILUM M83 60mm 조명 M83 60 mm 照明弹 M83 60 мм Осветительная M83 60mm Iluminación + M83 60mm Iluminação M374 81mm HE M374 81mm HE - M374 81mm りゅう弾 + M374 81mm HE + M374 81mm 榴弾 M374 81mm HE M374 81mm 고폭 M374 81 mm 高爆弹 M374 81 мм ОФ M374 81mm HE + M374 81mm HE M375 81mm WP M375 81mm Weißer Phosphor + M375 81mm Fosforo Bianco M375 81mm 白リン弾 M375 81mm WP M375 81mm 백린 M375 81 mm 白磷弹 M375 81 мм Фосфорная M375 81mm WP + M375 81mm WP M301A3 81mm Lume M301A3 81mm Leuchtpatrone + M301A3 81mm Illuminante M301A3 81mm 照明弾 M301A3 81mm ILUM M301A3 81mm 조명 M301A3 81 mm 照明弹 M301A3 81 мм Осветительная M301A3 81mm Iluminación + M301A3 81mm Iluminação M57 81mm Smoke M57 81mm Nebelpatrone + M57 81mm Fumogeno M57 81mm 発煙弾 M57 81mm Dymny M57 81mm 연막 M57 81 mm 烟雾弹 M57 81 мм Дымовая M57 81mm Smoke + M57 81mm Fumígena O-832D 82mm HE O-832D 82mm HE - O-832D 82mm りゅう弾 + O-832D 82mm HE + O-832D 82mm 榴弾 O-832D 82mm HE O-832D 82mm 고폭 O-832D 82 mm 高爆弹 О-832Д 82 мм ОФ O-832D 82mm HE + O-832D 82mm HE D-832 82mm WP D-832 82mm Weißer Phosphor + D-832 82mm Fosforo Bianco D-832 82mm 白リン弾 D-832 82mm WP D-832 82mm 백린 D-832 82 mm 白磷弹 Д-832 82 мм Фосфорная D-832 82mm WP + D-832 82mm WP S-832S 82mm Lume S-832S 82mm Leuchtpatrone + S-832S 82mm Illuminante S-832S 82mm 照明弾 S-832S 82mm ILUM S-832S 82mm 조명 S-832S 82 mm 照明弹 С-832С 82 мм Осветительная S-832S 82mm Iluminación + S-832S 82mm Iluminação [ACE] M49A2 60mm HE Box [ACE] M49A2 60mm HE Box - [ACE] M49A2 60mm りゅう弾入り弾薬箱 + [ACE] Scatola M49A2 60mm HE + [ACE] M49A2 60mm 榴弾入り弾薬箱 [ACE] Skrzynia M49A2 60mm HE [ACE] M49A2 60mm 고폭 상자 [ACE] M49A2 60 mm 高爆弹弹药箱 [ACE] Коробка M49A2 60 мм ОФ [ACE] M49A2 60mm Caja de HE + [ACE] M49A2 60mm Caixa de HE [ACE] M302 60mm WP Box [ACE] M302 60mm Weißer Phosphor Box + [ACE] Scatola M302 60mm Fosforo Bianco [ACE] M302 60mm 白リン弾入り弾薬箱 [ACE] Skrzynia M302 60mm WP [ACE] M302 60mm 백린 상자 [ACE] M302 60 mm 白磷弹弹药箱 [ACE] Коробка M302 60 мм Фосфорных [ACE] M302 60mm Caja de WP + [ACE] M302 60mm Caixa de WP [ACE] M83 60mm Lume Box [ACE] M83 60mm Leuchtpatrone Box + [ACE] Scatola M83 60mm Illuminanti [ACE] M83 60mm 照明弾弾入り弾薬箱 [ACE] Skrzynia ILUM M83 60mm [ACE] M83 60mm 조명 상자 [ACE] M83 60 mm 照明弹弹药箱 [ACE] Коробка M83 60 мм Осветительных [ACE] M83 60mm Caja de Iluminación + [ACE] M83 60mm Caixa de Iluminação [ACE] M374 81mm HE Box [ACE] M374 81mm HE Box - [ACE] M374 81mm りゅう弾入り弾薬箱 + [ACE] Scatola M374 81mm HE + [ACE] M374 81mm 榴弾入り弾薬箱 [ACE] Skrzynia M374 81mm HE [ACE] M374 81mm 고폭 상자 [ACE] M374 81 mm 高爆弹弹药箱 [ACE] Коробка M374 81 мм ОФ [ACE] M374 81mm Caja de HE + [ACE] M374 81mm Caixa de HE [ACE] M375 81mm WP Box [ACE] M375 81mm Weißer Phosphor Box + [ACE] Scatola M375 81mm Fosforo Bianco [ACE] M375 81mm 白リン弾入り弾薬箱 [ACE] Skrzynia M375 81mm WP [ACE] M375 81mm 백린 상자 [ACE] M375 81 mm 白磷弹弹药箱 [ACE] Коробка M375 81 мм Фосфорных [ACE] M375 81mm Caja de WP + [ACE] M375 81mm Caixa de WP [ACE] M301A3 81mm Lume Box [ACE] M301A3 81mm Leuchtpatrone Box + [ACE] Scatola M301A3 81mm Illuminanti [ACE] M301A1 81mm 照明弾入り弾薬箱 [ACE] Skrzynia M301A3 81mm ILUM [ACE] M301A3 81mm 조명 상자 [ACE] M301A3 81 mm 照明弹弹药箱 [ACE] Коробка M301A3 81 мм Осветительных [ACE] M301A3 81mm Caja de Iluminación + [ACE] M301A3 81mm Caixa de Iluminação [ACE] M57 81mm Smoke Box [ACE] M57 81mm Nebelpatrone Box + [ACE] Scatola M57 81mm Fumogeni [ACE] M57 81mm 煙幕弾入り弾薬箱 [ACE] Skrzynia M57 81mm Dymny [ACE] M57 81mm 연막 상자 [ACE] M57 81 mm 烟雾弹弹药箱 [ACE] Коробка M57 81 мм Дымовых [ACE] M57 81mm Caja de Humo + [ACE] M57 81mm Caixa de Fumígena [ACE] O-832D 82mm HE Box [ACE] O-832D 82mm HE Box - [ACE] O-832D 82mm りゅう弾入り弾薬箱 + [ACE] Scatola O-832D 82mm HE + [ACE] O-832D 82mm 榴弾入り弾薬箱 [ACE] Skrzynia O-832D 82mm HE [ACE] O-832D 82mm 고폭 상자 [ACE] O-832D 82 mm 高爆弹弹药箱 [ACE] Коробка О-832Д 82 мм ОФ [ACE] O-832D 82mm Caja de HE + [ACE] O-832D 82mm Caixa de HE [ACE] D-832 82mm WP Box [ACE] D-832 82mm Weißer Phosphor Box + [ACE] Scatola D-832 82mm Fosforo Bianco [ACE] D-832 82mm 白リン弾入り弾薬箱 [ACE] Skrzynia D-832 82mm WP [ACE] D-832 82mm 백린 상자 [ACE] D-832 82 mm 白磷弹弹药箱 [ACE] Коробка Д-832 82 мм Фосфорных [ACE] D-832 82mm Caja de WP + [ACE] D-832 82mm Caixa de WP [ACE] S-832S 82mm Lume Box [ACE] S-832S 82mm Leuchtpatrone Box + [ACE] Scatola S-832S 82mm Illuminanti [ACE] S-832S 82mm 照明弾入り弾薬箱 [ACE] Skrzynia S-832S 82mm ILUM [ACE] S-832S 82mm 조명 상자 [ACE] S-832S 82 mm 照明弹弹药箱 [ACE] Коробка С-832С 82 мм Осветительных [ACE] S-832S 82mm Caja de Iluminación + [ACE] S-832S 82mm Caixa de Iluminação Dig Spiderhole Schützenloch graben + Scava buco di ragno 蛸壺壕を掘る Wykop Lisią Norę 개인호 파기 挖掘散兵坑 Выкопать паучью дыру Excavar Agujero de araña + Escavar buraco de aranha Dig Spiderhole (Angled Cover) Schützenloch graben (Abgeschrägte Abdeckung) + Scava buco di ragno (Coperchio Angolato) 蛸壺壕 (屋根) を掘る Wykop Lisią Norę (z dachem) 개인호 파기 (각진 엄폐) 挖掘带斜盖散兵坑 Выкопать крытую паучью дыру Excavar Agujero de araña (Cubierta inclinada) + Escavar buraco de aranha (Cobertura inclinada) Dig Spiderhole (Dual) Großes Schützenloch graben + Scava buco di ragno (Doppio) 蛸壺壕 (2人用) を掘る Wykop Lisią Norę (podwójną) 개인호 파기 (2인용) 挖掘双人散兵坑 Выкопать двойную паучью дыру Excavar Agujero de araña (Doble) + Escavar buraco de aranha (Duplo) [CSW] M1919A4 Gun Bag [CSW] M1919A4 Waffentasche + [CSW] Borsa per Mitra M1919A4 [CSW] M1919A4 ガン バッグ [CSW] Torba na M1919A4 [CSW] M1919A4 총가방 [班组] M1919A4 枪袋 [CSW] Сумка с M1919A4 [CSW] M1919A4 Bolsa para arma + [CSW] Bolsa para M1919A4 [CSW] M1919A6 Gun Bag [CSW] M1919A6 Waffentasche + [CSW] Borsa per Mitra M1919A6 [CSW] M1919A6 ガン バッグ [CSW] Torba na M1919A6 [CSW] M1919A6 총가방 [班组] M1919A6 枪袋 [CSW] Сумка с M1919A6 [CSW] M1919A6 Bolsa para arma + [CSW] Bolsa para M1919A6 [CSW] M60 Gun Bag [CSW] M60 Waffentasche + [CSW] Borsa per Mitra M60 [CSW] M60 ガン バッグ [CSW] Torba na M60 [CSW] M60 총가방 [班组] M60 枪袋 [CSW] Сумка с M60 [CSW] M60 Bolsa para arma + [CSW] Bolsa para M60 [CSW] DShK (Shield) Gun Bag [CSW] DShK (Schutzschild) Waffentasche + [CSW] Borsa per Mitra DShK (con scudo) [CSW] DShK (防盾) ガン バッグ [CSW] Torba na DShK (z tarczą) [CSW] DShK (방패) 총가방 [班组] DShK(防盾)枪袋 [CSW] Сумка с ДШК (со щитом) [CSW] DShK (Apantallada) Bolsa para arma + [CSW] Bolsa para DShK (Escudo) [CSW] DShK (AA) Gun Bag [CSW] DShK (AA) Waffentasche + [CSW] Borsa per Mitra DShK (AA) [CSW] DShK (対空) ガン バッグ [CSW] Torba na DShK (AA) [CSW] DShK (대공) 총가방 [班组] DShK(高)枪袋 [CSW] Сумка с ДШК (зенитный) [CSW] DShK (AA) Bolsa para arma + [CSW] Bolsa para DShK (AA) [CSW] RPD Gun Bag [CSW] RPD Waffentasche + [CSW] Borsa per Mitra RPD [CSW] RPD ガン バッグ [CSW] Torba na RPD [CSW] RPD 총가방 [班组] RPD 枪袋 [CSW] Сумка с РПД [CSW] RPD Bolsa para arma + [CSW] Bolsa para RPD [CSW] PK Gun Bag [CSW] PK Waffentasche + [CSW] Borsa per Mitra PK [CSW] PK ガン バッグ [CSW] Torba na PK [CSW] PK 총가방 [班组] PK 枪袋 [CSW] Сумка с ПК [CSW] PK Bolsa para arma + [CSW] Bolsa para PK [CSW] MG42 Gun Bag [CSW] MG42 Waffentasche + [CSW] Borsa per Mitra MG42 [CSW] MG42 ガン バッグ [CSW] Torba na MG42 [CSW] MG42 총가방 [班组] MG42 枪袋 [CSW] Сумка с MG42 [CSW] MG42 Bolsa para arma + [CSW] Bolsa para MG42 [CSW] SGM Gun Bag [CSW] SGM Waffentasche + [CSW] Borsa per Mitra SGM [CSW] SGM ガン バッグ [CSW] Torba na SGM [CSW] SGM 총가방 [班组] SGM 枪袋 [CSW] Сумка с СГМ [CSW] SGM Bolsa para arma + [CSW] Bolsa para SGM [CSW] SGM (Shield) Gun Bag [CSW] SGM (Schutzschild) Waffentasche + [CSW] Borsa per Mitra SGM (con scudo) [CSW] SGM (防盾) ガン バッグ [CSW] Torba na SGM (z tarczą) [CSW] SGM (방패) 총가방 [班组] SGM(防盾)枪袋 [CSW] Сумка с СГМ (со щитом) [CSW] SGM (Apantallada) Bolsa para arma + [CSW] Bolsa para SGM (Escudo) [CSW] Mk18 Gun Bag [CSW] Mk18 Waffentasche + [CSW] Borsa per GMG Mk18 [CSW] Mk18 ガン バッグ [CSW] Torba na Mk18 [CSW] Mk18 총가방 [班组] Mk18 枪袋 [CSW] Сумка с Mk18 [CSW] Mk18 Bolsa para arma + [CSW] Bolsa para Mk18 [CSW] M29 Mortar Tube [CSW] M29 Mörserrohr + [CSW] Tubo di Mortaio M29 [CSW] M29 発射筒 [CSW] M29 Rura od moździerza [CSW] M29 박격포 포신 [班组] M29 迫击炮炮管 [CSW] Сумка с миномётом M29 [CSW] M29 Tubo de Mortero + [CSW] M29 Tubo de Morteiro [CSW] M2 Mortar Tube [CSW] M2 Mörserrohr + [CSW] Tubo di Mortaio M2 [CSW] M2 底盤 [CSW] M2 Rura od moździerza [CSW] M2 박격포 포신 [班组] M2 迫击炮炮管 [CSW] Сумка с миномётом M2 [CSW] M2 Tubo de mortero + [CSW] M2 Tubo de Morteiro [CSW] Type 53 Mortar Tube [CSW] Typ 53 Mörserrohr + [CSW] Tubo di Mortaio Type 53 [CSW] 53 式 発射筒 [CSW] Type 53 Rura od moździerza [CSW] 53식 박격포 포신 [班组] 53式迫击炮炮管 [CSW] Сумка с миномётом Type 53 [CSW] Type 53 Tubo de mortero + [CSW] Type 53 Tubo de Morteiro diff --git a/addons/compat_spe/CfgVehicles/spe_boxes.hpp b/addons/compat_spe/CfgVehicles/spe_boxes.hpp index 2d6afc9b4a..ebf70f5518 100644 --- a/addons/compat_spe/CfgVehicles/spe_boxes.hpp +++ b/addons/compat_spe/CfgVehicles/spe_boxes.hpp @@ -31,5 +31,17 @@ class SPE_Fuel_Barrel_US_01: SPE_Fuel_Barrel_base { EGVAR(refuel,hooks)[] = {{0.2,0,0.22}}; }; class SPE_Fuel_Barrel_German_01: SPE_Fuel_Barrel_base { + EGVAR(cargo,size) = 2; //reference SPE_Fuel_Barrel_US_01 + EGVAR(cargo,canLoad) = 1; //reference SPE_Fuel_Barrel_US_01 + + EGVAR(dragging,canCarry) = 1; //reference SPE_Fuel_Barrel_US_01 + EGVAR(dragging,carryPosition)[] = {0,1,1}; //reference SPE_Fuel_Barrel_US_01 + EGVAR(dragging,carryDirection) = 0; //reference SPE_Fuel_Barrel_US_01 + + EGVAR(dragging,canDrag) = 1; //reference SPE_Fuel_Barrel_US_01 + EGVAR(dragging,dragPosition)[] = {0,1.2,0}; //reference SPE_Fuel_Barrel_US_01 + EGVAR(dragging,dragDirection) = 0; //reference SPE_Fuel_Barrel_US_01 + + EGVAR(refuel,fuelCargo) = 208; //reference SPE_Fuel_Barrel_US_01 EGVAR(refuel,hooks)[] = {{0.32,0,-0.3}}; }; diff --git a/addons/compat_ws/compat_ws_realisticnames/stringtable.xml b/addons/compat_ws/compat_ws_realisticnames/stringtable.xml index 210e4446b5..b9341cf19f 100644 --- a/addons/compat_ws/compat_ws_realisticnames/stringtable.xml +++ b/addons/compat_ws/compat_ws_realisticnames/stringtable.xml @@ -4,126 +4,218 @@ AA12 AA-12 + AA12 + AA12 + AA12 AA12 (Sand) AA-12 (모래) + AA12 (Sand) + AA12 (Sabbia) + AA12 (サンド) AA12 (Snake) AA-12 (뱀 위장) + AA12 (Schlange) + AA12 (Serpe) + AA12 (ヘビ柄) Galil ARM 갈릴 ARM + Galil ARM + Galil ARM + ガリル ARM Galil ARM (Old) 갈릴 ARM (낡음) + Galil ARM (Alt) + Galil ARM (Vecchio) + ガリル ARM (使い古し) GLX 160 GLX-160 + GLX 160 + GLX-160 + GLX 160 GLX 160 (Snake) GLX-160 (뱀 위장) + GLX 160 (Schlange) + GLX-160 (Serpe) + GLX 160 (ヘビ柄) GLX 160 (Hex) GLX-160 (육각) + GLX 160 (Hex) + GLX-160 (Hex) + GLX 160 (ヘックス) GLX 160 (Green Hex) GLX-160 (초록육각) + GLX 160 (Grün Hex) + GLX-160 (Hex Verde) + GLX 160 (緑ヘックス) GLX 160 (Camo) GLX-160 (위장) + GLX 160 (Tarn) + GLX-160 (Mimetica) + GLX 160 (迷彩) GLX 160 (Sand) GLX-160 (모래) + GLX 160 (Sand) + GLX-160 (Sabbia) + GLX 160 (サンド) Mk14 Mod 1 EBR (Black) Mk.14 Mod 1 EBR (검정) + Mk14 Mod 1 EBR (Schwarz) + Mk14 Mod 1 EBR (Nero) + Mk14 Mod 1 EBR (ブラック) Mk14 Mod 1 EBR (Snake) Mk.14 Mod 1 EBR (뱀 위장) + Mk14 Mod 1 EBR (Schlange) + Mk14 Mod 1 EBR (Serpe) + Mk14 Mod 1 EBR (ヘビ柄) Vektor SS-77 벡터 SS-77 + Vektor SS-77 + ヴェクター SS-77 Vektor SS-77 (Camo) 벡터 SS-77 (위장) + Vektor SS-77 (Tarn) + Vektor SS-77 (Mimetica) + ヴェクター SS-77 (迷彩) Vektor SS-77 (Hex) 벡터 SS-77 (육각) + Vektor SS-77 (Hex) + Vektor SS-77 (Hex) + ヴェクター SS-77 (ヘックス) Vektor SS-77 (Green Hex) 벡터 SS-77 (초록육각) + Vektor SS-77 (Grün Hex) + Vektor SS-77 (Hex Verde) + ヴェクター SS-77 (緑ヘックス) Vektor SS-77 (Desert) 벡터 SS-77 (사막) + Vektor SS-77 (Wüste) + Vektor SS-77 (Deserto) + ヴェクター SS-77 (砂漠迷彩) Vektor SS-77 Compact 벡터 SS-77 단축형 + Vektor SS-77 Kompakt + Vektor SS-77 Compatto + ヴェクター SS-77 コンパクト Vektor SS-77 Compact (Snake) 벡터 SS-77 단축형 (뱀 위장) + Vektor SS-77 Compact (Schlange) + Vektor SS-77 Compatto (Serpe) + ヴェクター SS-77 コンパクト (ヘビ柄) FN FAL 50.00 (Wood) FN FAL 50.00 (목재) + FN FAL 50.00 (Holz) + FN FAL 50.00 (Legno) + FN FAL 50.00 (森林迷彩) FN FAL 50.00 GL (Wood) FN FAL 50.00 GL (목재) + FN FAL 50.00 GL (Holz) + FN FAL 50.00 GL (Legno) + FN FAL 50.00 GL (森林迷彩) FN FAL 50.00 FN FAL 50.00 + FN FAL 50.00 + FN FAL 50.00 + FN FAL 50.00 FN FAL 50.00 GL FN FAL 50.00 GL + FN FAL 50.00 GL + FN FAL 50.00 GL + FN FAL 50.00 GL FN FAL 50.00 (Desert) FN FAL 50.00 (사막) + FN FAL 50.00 (Wüstet) + FN FAL 50.00 (Deserto) + FN FAL 50.00 (砂漠迷彩) FN FAL 50.00 (Jungle) FN FAL 50.00 (정글) + FN FAL 50,00 (Dschungel) + FN FAL 50,00 (Giungla) + FN FAL 50.00 (熱帯迷彩) Vektor R4 벡터 R4 + Vektor R4 + Vektor R4 + ヴェクター R5 Vektor R5 Carbine 벡터 R5 카빈 + Vektor R5 Carbine + Vektor R5 Carabina + ヴェクター R5 カービン Vektor R5 Carbine GL 벡터 R5 카빈 GL + Vektor R5 Carbine GL + Vektor R5 Carabina GL + ヴェクター R5 カービン GL Vektor R5 Carbine (Snake) 벡터 R5 카빈 (뱀 위장) + Vektor R5 Carbine (Schlange) + Vektor R5 Carabina (Serpe) + ヴェクター R5 カービン (ヘビ柄) Vektor R5 Carbine GL (Snake) 벡터 R5 카빈 GL (뱀 위장) + Vektor R5 Carbine GL (Schlange) + Vektor R5 Carabina GL (Serpe) + ヴェクター R5 カービン GL (ヘビ柄) XMS @@ -135,28 +227,31 @@ XMS XMS XMS + XMS XMS (Khaki) XMS (kaki) XMS (khaki) - XMS (kaki) + XMS (Cachi) XMS (Cáqui) XMS (caqui) XMS(卡其色) XMS (хаки) XMS (카키) + XMS (カーキ) XMS (Sand) XMS (sable) XMS (Sand) - XMS (sabbia) + XMS (Sabbia) XMS (Areia) XMS (arena) XMS(沙色) XMS (песочный) XMS (모래) + XMS (サンド) XMS GL @@ -168,28 +263,31 @@ XMS GL XMS GL XMS GL + XMS GL XMS GL (Khaki) XMS GL (kaki) XMS GL (khaki) - XMS GL (kaki) + XMS GL (Cachi) XMS GL (Cáqui) XMS GL (caqui) XMS GL(卡其色) XMS GL (хаки) XMS GL (카키) + XMS GL (カーキ) XMS GL (Sand) XMS GL (sable) XMS GL (Sand) - XMS GL (sabbia) + XMS GL (Sabbia) XMS GL (Areia) XMS GL (arena) XMS GL(沙色) XMS GL (песочный) XMS GL (모래) + XMS GL (サンド) XMS SG @@ -201,28 +299,31 @@ XMS SG XMS SG XMS SG + XMS SG XMS SG (Khaki) XMS SG (kaki) XMS SG (khaki) - XMS SG (kaki) + XMS SG (Cachi) XMS SG (Cáqui) XMS SG (caqui) XMS SG(卡其色) XMS SG (хаки) XMS SG (카키) + XMS SG (カーキ) XMS SG (Sand) XMS SG (sable) XMS SG (Sand) - XMS SG (sabbia) + XMS SG (Sabbia) XMS SG (Areia) XMS SG (arena) XMS SG(沙色) XMS SG (песочный) XMS SG (모래) + XMS SG (サンド) XMS SW @@ -234,28 +335,31 @@ XMS SW XMS SW XMS SW + XMS SW XMS SW (Khaki) XMS SW (kaki) XMS SW (khaki) - XMS SW (kaki) + XMS SW (Cachi) XMS SW (Cáqui) XMS SW (caqui) XMS SW(卡其色) XMS SW (хаки) XMS SW (카키) + XMS SW (カーキ) XMS SW (Sand) XMS SW (sable) XMS SW (Sand) - XMS SW (sabbia) + XMS SW (Sabbia) XMS SW (Areia) XMS SW (arena) XMS SW(沙色) XMS SW (песочный) XMS SW (모래) + XMS SW (サンド) diff --git a/addons/concertina_wire/CfgVehicles.hpp b/addons/concertina_wire/CfgVehicles.hpp index 8f22f42b4a..0983f636c2 100644 --- a/addons/concertina_wire/CfgVehicles.hpp +++ b/addons/concertina_wire/CfgVehicles.hpp @@ -136,7 +136,7 @@ class CfgVehicles { distance = 4; condition = "true"; //wait a frame to handle "Do When releasing action menu key" option: - statement = QUOTE([ARR_2({_this call FUNC(deploy)}, [ARR_2(_target,_player)])] call CBA_fnc_execNextFrame); + statement = QUOTE([ARR_2({_this call FUNC(deploy)},[ARR_2(_target,_player)])] call CBA_fnc_execNextFrame); showDisabled = 0; exceptions[] = {}; icon = QPATHTOF(UI\icon_sandbag_ca.paa); diff --git a/addons/concertina_wire/stringtable.xml b/addons/concertina_wire/stringtable.xml index e0fd904086..0ea44fc063 100644 --- a/addons/concertina_wire/stringtable.xml +++ b/addons/concertina_wire/stringtable.xml @@ -9,7 +9,7 @@ Alambre de espino Fil barbelé Ostnatý drát - Filo a concertina + Filo spinato NATO Concertina wire Arame farpado 鉄条網 @@ -26,7 +26,7 @@ Bobina de alambre de espino Bobine de fil barbelé Svitek ostnatého drátu - Bobina di filo a concertina + Bobina di filo spinato NATO Concertina wire coil Bobina de arame farpado 鉄条網コイル @@ -43,7 +43,7 @@ Desmontar alambre de espino Démontage du fil barbelé... Svinout ostnatý drát - Smonta il filo a concertina + Smonta il filo spinato NATO Dismount Concertina wire Desmontar arame farpado 鉄条網をほどく @@ -60,7 +60,7 @@ Desplegar alambre de espino Mettre en place le fil barbelé Rozvinout ostnatý drát - Piazza il filo a concertina + Piazza il filo spinato NATO Deploy Concertina wire Colocar arame farpado 鉄条網を置く diff --git a/addons/cookoff/XEH_preInit.sqf b/addons/cookoff/XEH_preInit.sqf index 9361d05015..894773534a 100644 --- a/addons/cookoff/XEH_preInit.sqf +++ b/addons/cookoff/XEH_preInit.sqf @@ -6,6 +6,6 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" ADDON = true; diff --git a/addons/cookoff/initSettings.sqf b/addons/cookoff/initSettings.inc.sqf similarity index 100% rename from addons/cookoff/initSettings.sqf rename to addons/cookoff/initSettings.inc.sqf diff --git a/addons/cookoff/stringtable.xml b/addons/cookoff/stringtable.xml index 7974e2f9bb..76aebcad60 100644 --- a/addons/cookoff/stringtable.xml +++ b/addons/cookoff/stringtable.xml @@ -4,7 +4,7 @@ ACE Cook off ACE Detonación inducida por calor - ACE Esplosione + ACE Detonazione Munizioni ACE 殉爆效果 ACE 殉爆效果 ACE 誘爆 @@ -26,10 +26,10 @@ Dégâts et effets de tourelle 傷害控制及炮塔效果 损坏处理和炮塔效果 - Manovrabilità danneggiata ed effetti torretta + Gestione danni ed effetti torretta Poškodit ovládání a efekty věže Obsługa obrażeń i efekty wieży - 피해량 조절 및 터렛에 효과 부여 + 피해량 조절 및 포탑에 효과 부여 Changes damage handling for cook off and turret explosion effects @@ -41,20 +41,20 @@ Modifie la gestion des dégâts pour l'auto-inflammation et les effets d'explosion de tourelle. 更改殉爆以及炮塔爆炸之傷害控制 改变殉爆和炮塔爆炸的损坏处理效果 - Modifica la gestione dei danni per gli effetti di esplosione della torretta e danneggiamenti + Modifica la gestione dei danni per l'esplosione di munizioni e gli effetti di esplosione della torretta Změní poškození ovládání a efekty výbuchu veže Zmienia obsługę obrażeń podczas samozapłonu i eksplozji wieży - 쿡오프로 인해 피해량의 변화와 터렛 터짐현상을 결정합니다. + 쿡오프로 인해 피해량의 변화와 포탑 터짐현상을 결정합니다. Enable ammo box cook off Habilitar detonación inducida por calor en las cajas de munición - 弾薬箱に誘爆を有効化 + 弾薬箱の誘爆を有効化 Durchzündung für Munitionskisten ermöglichen 탄약 상자 쿡오프 현상 활성화 Aktywuj samozapłon skrzyń z amunicją Auto-inflammation des caisses de munitions - Abilita esplosione cassa munizioni + Abilita esplosione casse munizioni 開啟彈藥箱殉爆效果 开启弹药箱殉爆效果 Разрешить детонацию ящиков с боеприпасами @@ -69,7 +69,7 @@ 탄약 상자에 쿡오프 현상을 적용합니다. Aktywuje samozapłon skrzyń z amunicją Permet l'auto-inflammation des caisses de munitions. - Abilita l'esplosione della cassa di munizioni. + Abilita l'esplosione di casse di munizioni distrutte. 開啟彈藥箱殉爆效果 开启弹药箱殉爆效果 Активирует детонацию ящиков с боеприпасами @@ -84,7 +84,7 @@ 탄약 쿡오프 현상 활성화 Aktywuj samozapłon amunicji Auto-inflammation des munitions - Abilita Esplosione munizioni + Abilita Esplosione Munizioni 開啟彈藥殉爆效果 开启弹药殉爆效果 Разрешить детонацию боекомплекта @@ -98,7 +98,7 @@ Ermöglicht Durchzündung von Munition. Feuert Projektile der Munition ab, solange das Fahrzeug brennt und Munition besitzt. Aktywuje samozapłon amunicji. Wystrzeliwuje pociski podczas gdy pojazd płonie i posiada amunicję. Permet l'auto-inflammation des munitions. Tire des projectiles tant que le véhicule est en feu et contient des munitions. - Abilita l'esplosione delle munizioni. Spara munizioni di proiettili quando il veicolo va a fuoco e contiene munizioni. + Abilita l'esplosione di munizioni. Spara proiettili di munizioni quando il veicolo va a fuoco e contiene ancora munizioni. 開啟彈藥殉爆效果。當一台載有彈藥的載具起火時, 將會有殉爆的效果 开启弹药殉爆效果。当一台载有弹药的载具起火时,将会有殉爆的效果。 쿡오프 현상을 활성화 합니다. 이것은 탄약에 불이 붙어 있는 동안 주변에 발사체를 발사합니다. @@ -113,7 +113,7 @@ Czas trwania samozapłonu amunicji 弾薬の誘爆持続時間 Durée d'auto-inflammation des munitions - Durata esplosione munizioni + Durata Esplosione Munizioni 彈藥殉爆效果持續時間 弹药殉爆效果持续时间 쿡오프 지속 시간 @@ -128,7 +128,7 @@ Multiplicateur permettant de régler la durée durant laquelle les munitions continuent d'exploser [Une valeur de 0 désactive l'auto-inflammation]. Mnożnik decydujący jak długo ma trwać samozapłon amunicji [Ustawienie na 0 spowoduje wyłącznie samozapłonu] 誘爆の持続時間を乗数で設定します。[0 に設定で誘爆を無効化] - Moltiplicatore della durata dell'esplosione [Impostare 0 disabiliterà l'esplosione delle munizioni] + Moltiplicatore della durata delle esplosioni di munizioni [Se impostato su 0 disabiliterà le esplosioni delle munizioni] 設定彈藥殉爆效果會持續多久時間 [輸入0來關閉殉爆效果] 设定弹药殉爆效果会持续多久时间 [输入0来关闭殉爆效果] 쿡오프 지속 시간의 배수 [0 이면 비활성] @@ -140,7 +140,7 @@ Cook-off probability coefficient Coeficiente de probabilidad de detonación inducida por calor 誘爆の可能性係数 - Coefficiente probabilità esplosione + Coefficiente Probabilità Esplosione Faktor für Wahrscheinlichkeit der Durchzündung 殉爆發生機率係數 殉爆发生机率系数 @@ -155,7 +155,7 @@ Multiplier for cook-off probability. Higher value results in higher cook-off probability Multiplicador de probabilidad de detonación inducida por calor. Valores más altos producen mayor probabilidad 誘爆する可能性の乗数。高い値では誘爆する可能性が高まります。 - Moltiplicatore per la probabilità dell'esplosione. Un valore più alto aumenta la probabilità dell'esplosione + Moltiplicatore per la probabilità dell'esplosione di munizioni. Un valore più alto aumenta la probabilità. Faktor für Wahrscheinlichkeit der Durchzündung. Ein höherer Wert führt zu höherer Durchzündungswahrscheinlichkeit. 調整殉爆發生機率係數。值越高代表越容易發生殉爆 调整殉爆发生机率系数。值越高代表越容易发生殉爆。 @@ -175,13 +175,19 @@ 誘爆後に車両を破壊する Zniszcz Pojazdy po Zakończeniu Samozapłonu Zerstöre Fahrzeuge nach der Durchzündung + Distruggi Veicoli dopo Esplosione Munizioni + Destruction des véhicules après auto-inflammation + Destruir veículos após cozinhamento Controls whether vehicles will always be destroyed after cooking off. 誘爆後に車両を破壊するかどうかを設定する。 Kontroluje, czy pojazdy będą zawsze niszczone po samozapłonie. Steuert, ob Fahrzeuge nach dem Durchzünden immer zerstört werden. - 쿸오프 후 차량이 항상 파괴되는지 여부를 조정합니다. + Determina se veicoli saranno sempre distrutti dall'esplosione delle munizioni. + 쿡오프 후 차량이 항상 파괴되는지 여부를 조정합니다. + Contrôle si les véhicules seront toujours détruits après l'auto-inflammation. + Define se os veículos serão sempre destruídos após cozinhamento. Enable Cook-Off Vehicle Fire @@ -189,10 +195,12 @@ Véhicules - Feu durant l'auto-inflammation Вкл. горение техники от детонации Aktiviert das in Brand setzen des Fahrzeugs während des Durchzündens der Munition + Abilita incendiamento veicoli Włącz pożar pojazdu podczas samozapłonu 启用殉爆载具火灾 차량 쿡오프 화재 활성화 Habilitar incendio a causa de la detonación inducida por calor + Ativar incêndio de veículo durante cozinhamento Whether or not vehicles will catch on fire during cook-off @@ -200,10 +208,12 @@ Définit si les véhicules prennent feu durant l'auto-inflammation de leurs munitions. Будет ли техника гореть при детонации боеприпасов Ob Fahrzeuge in Brand gesetzt werden, während deren Munition durchzündet. + Determina se veicoli cominceranno a bruciare se le loro munizioni esplodono. Określa, czy pojazdy zapalą się podczas samozapłonu ich amunicji. 车辆在殉爆过程中是否会起火 쿡오프가 일어나면 차량에 불이 붙습니다. Define si los vehículos salen ardiendo despues de una detonación inducida por calor. + Define se os veículos pegarão fogo durante o cozinhamento. diff --git a/addons/csw/XEH_postInit.sqf b/addons/csw/XEH_postInit.sqf index a1aa348659..8a0f92ce47 100644 --- a/addons/csw/XEH_postInit.sqf +++ b/addons/csw/XEH_postInit.sqf @@ -12,12 +12,6 @@ GVAR(vehicleMagCache) = createHashMap; // Event handlers: -[QGVAR(disableVanillaAssembly), { - params ["_staticWeapon"]; - TRACE_1("disableVanillaAssembly eh",_staticWeapon); - _staticWeapon enableWeaponDisassembly false; -}] call CBA_fnc_addEventHandler; - [QGVAR(addTurretMag), LINKFUNC(reload_handleAddTurretMag)] call CBA_fnc_addEventHandler; [QGVAR(removeTurretMag), LINKFUNC(reload_handleRemoveTurretMag)] call CBA_fnc_addEventHandler; [QGVAR(returnAmmo), LINKFUNC(reload_handleReturnAmmo)] call CBA_fnc_addEventHandler; diff --git a/addons/csw/XEH_preInit.sqf b/addons/csw/XEH_preInit.sqf index 6ecb2a0c2f..2cef0dfd2c 100644 --- a/addons/csw/XEH_preInit.sqf +++ b/addons/csw/XEH_preInit.sqf @@ -6,7 +6,7 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" GVAR(initializedStaticTypes) = []; diff --git a/addons/csw/functions/fnc_assemble_deployTripod.sqf b/addons/csw/functions/fnc_assemble_deployTripod.sqf index b2ba0e4ea5..d3317a4e40 100644 --- a/addons/csw/functions/fnc_assemble_deployTripod.sqf +++ b/addons/csw/functions/fnc_assemble_deployTripod.sqf @@ -40,8 +40,7 @@ _cswTripod setVariable [QGVAR(secondaryWeaponMagazine), _secondaryWeaponMagazine]; }; if (!GVAR(defaultAssemblyMode)) then { - TRACE_1("global disableVanillaAssembly event",_cswTripod); // handles it being assembled when setting is disabled - [QGVAR(disableVanillaAssembly), [_cswTripod]] call CBA_fnc_globalEvent; + [_cswTripod, "disableWeaponAssembly", "ace_csw", true] call EFUNC(common,statusEffect_set); }; private _posATL = _player getRelPos [2, 0]; @@ -54,7 +53,7 @@ [_player, "PutDown"] call EFUNC(common,doGesture); // drag after deploying - if ((missionNamespace getVariable [QGVAR(dragAfterDeploy), false]) && {["ACE_dragging"] call EFUNC(common,isModLoaded)}) then { + if ((missionNamespace getVariable [QGVAR(dragAfterDeploy), false]) && {["ace_dragging"] call EFUNC(common,isModLoaded)}) then { if ([_player, _cswTripod] call EFUNC(dragging,canCarry)) then { TRACE_1("starting carry",_cswTripod); [_player, _cswTripod] call EFUNC(dragging,startCarry); diff --git a/addons/csw/functions/fnc_assemble_deployWeapon.sqf b/addons/csw/functions/fnc_assemble_deployWeapon.sqf index f646047da2..e34e5d19d8 100644 --- a/addons/csw/functions/fnc_assemble_deployWeapon.sqf +++ b/addons/csw/functions/fnc_assemble_deployWeapon.sqf @@ -46,8 +46,7 @@ // Assembly mode: [0=disabled, 1=enabled, 2=enabled&unload, 3=default] _csw setVariable [QGVAR(assemblyMode), 2, true]; // Explicitly set advanced assembly mode + unload, and broadcast if (!GVAR(defaultAssemblyMode)) then { - TRACE_1("global disableVanillaAssembly event",_csw); // handles it being assembled when setting is disabled - [QGVAR(disableVanillaAssembly), [_csw]] call CBA_fnc_globalEvent; + [_csw, "disableWeaponAssembly", QUOTE(ADDON), true] call EFUNC(common,statusEffect_set); }; _csw setDir _tripodDir; _csw setPosATL _tripodPos; @@ -75,4 +74,3 @@ [TIME_PROGRESSBAR(_deployTime), [_tripod, _player, _assembledClassname, _carryWeaponClassname], _onFinish, _onFailure, localize LSTRING(AssembleCSW_progressBar), _codeCheck] call EFUNC(common,progressBar); }, _this] call CBA_fnc_execNextFrame; - diff --git a/addons/csw/functions/fnc_staticWeaponInit.sqf b/addons/csw/functions/fnc_staticWeaponInit.sqf index 3b1d7ef66e..6dcbbf52e6 100644 --- a/addons/csw/functions/fnc_staticWeaponInit.sqf +++ b/addons/csw/functions/fnc_staticWeaponInit.sqf @@ -16,6 +16,7 @@ */ params ["_staticWeapon"]; +if (isNull _staticWeapon) exitWith { WARNING_1("%1 became null",_staticWeapon) }; private _typeOf = typeOf _staticWeapon; private _configOf = configOf _staticWeapon; private _configEnabled = (getNumber (_configOf >> "ace_csw" >> "enabled")) == 1; @@ -49,8 +50,8 @@ if (_assemblyConfig) then { if (!alive _staticWeapon) exitWith { TRACE_1("dead/deleted",_staticWeapon); }; private _assemblyMode = [false, true, true, GVAR(defaultAssemblyMode)] select (_staticWeapon getVariable [QGVAR(assemblyMode), 3]); TRACE_2("assemblyConfig present",_staticWeapon,_assemblyMode); - if (_assemblyMode) then { // Disable vanilla assembly if assemblyMode eanbled - [QGVAR(disableVanillaAssembly), [_staticWeapon]] call CBA_fnc_localEvent; + if (_assemblyMode) then { // Disable vanilla assembly if assemblyMode enabled + [_staticWeapon, "disableWeaponAssembly", QUOTE(ADDON), true] call EFUNC(common,statusEffect_set); }; }, [_staticWeapon]] call CBA_fnc_execNextFrame; // need to wait a frame to allow setting object vars during assembly }; @@ -88,7 +89,7 @@ if (hasInterface && {!(_typeOf in GVAR(initializedStaticTypes))}) then { _ammoActionPath = [_typeOf, 0, ["ACE_MainActions"], _ammoAction] call EFUNC(interact_menu,addActionToClass); }; - if (["ACE_reload"] call EFUNC(common,isModLoaded)) then { + if (["ace_reload"] call EFUNC(common,isModLoaded)) then { // move reload's check ammo action to the ammo handling point (remove and re-add) [_typeOf, 0, ["ACE_MainActions", QEGVAR(reload,CheckAmmo)]] call EFUNC(interact_menu,removeActionFromClass); private _checkAmmoAction = [QGVAR(checkAmmo), localize ELSTRING(reload,checkAmmo), "", EFUNC(reload,checkAmmo), EFUNC(reload,canCheckAmmo)] call EFUNC(interact_menu,createAction); diff --git a/addons/csw/initSettings.sqf b/addons/csw/initSettings.inc.sqf similarity index 100% rename from addons/csw/initSettings.sqf rename to addons/csw/initSettings.inc.sqf diff --git a/addons/csw/stringtable.xml b/addons/csw/stringtable.xml index 2782bad850..b6f8ecb47e 100644 --- a/addons/csw/stringtable.xml +++ b/addons/csw/stringtable.xml @@ -37,7 +37,7 @@ Rozložit Démonter Auseinandernehmen - Disassemblare + Disassembla Złóż Desmontar Разобрать @@ -53,12 +53,12 @@ Nastup Entrer Einsteigen - A bordo + Entra Wsiadać Entrar Войти Entrar - 乗る + 乗り込む 進入 进入 Bin @@ -71,7 +71,7 @@ Nabít %1 Charger %1 Załaduj %1 - Carico %1 + Carica %1 Загрузить %1 Load %1 Carregar %1 @@ -79,7 +79,7 @@ 裝填 %1 装填 %1 Yükle %1 - %1 싣는중 + %1 싣기 Unload %1 @@ -96,7 +96,7 @@ 卸載 %1 卸载 %1 Boşalt %1 - %1 내리는중 + %1 내리기 Link %1 @@ -118,7 +118,7 @@ Erweiterter Zusammenbau Montagem Avançada Assemblage avancé - アドバンスド設置 + 高度な組み立て 進階組裝 高级组装 Montaggio avanzato @@ -133,10 +133,10 @@ Benutze ACE um unterstützte statische Waffen zu montieren/demontieren. Geladene Munition ist auf ein einzelnes Magazin reduziert. Usar o ACE para Montar/Desmontar armas estáticas suportadas. Munição carregada é reduzida para um único carregador. Utilise ACE pour l'assemblage/le désassemblage des armes statiques supportées.\nLes munitions chargées sont réduites à un seul chargeur. - 対応している設置型火器に ACE3 の設置と解体を使用します。装填済みの弾倉は 1 つの弾倉に減少します。 + 対応している設置型火器に ACE の設置と解体を使用します。装填済みの弾倉は1つの弾倉のみに減少します。 使用ACE來組裝/拆解固定型武器。上膛的限制為單個彈匣。 使用 ACE 来组装/拆解固定式武器。限制弹药为一个弹匣。 - Utilizzare ace per l'Assemblaggio/smontaggio di armi statiche supportate. Le munizioni cariche sono ridotte ad un solo caricatore. + Utilizza ACE per assemblaggio/smontaggio di armi statiche supportate. Le munizioni caricate sono ridotte ad un solo caricatore. Použít ACE pro složení/rozložení podporovaných statických zbraní. Nabitá munice je snížená na jeden zásobník. Użyj ACE do składania/rozkładania broni statycznych. Załadowana amunicja zostaje zredukowana do jednego magazynku. Usar el ACE para el ensamblado/desamblado de armas estáticas soportadas. La munición cargada es reducida a un sólo cargador @@ -148,10 +148,10 @@ Spare extra Munition Economizar munição extra Conserver le surplus de munitions - 過剰弾薬を保持 + 追加の弾薬を保持 保存額外彈藥 保存额外弹药 - Risparmiare munizioni extra + Conserva munizioni extra Uložit munici navíc. Zapisz dodatkową amunicje Guardar munición extra @@ -163,10 +163,10 @@ Lager extra Magazine neben der statischen Waffe Carregar munições extras próximo à arma estática Range les chargeurs en surplus auprès de l'arme statique. - 次の設置型火器用に過剰弾薬を保持します。 + 追加の弾倉を固定火器の横に保管します。 在固定型武器旁存放額外彈匣 在固定式武器旁边存放额外的弹匣 - Conservare i caricatori extra accanto all'arma statica + Conserva i caricatori extra accanto all'arma statica Ukládat munici navíc vedle statické zbraně. Dodatkowe magazynki przechowuj obok broni statycznej Almacenar cargadores extra junto al arma estática @@ -176,42 +176,54 @@ Ammo Storage Munitionslager + Scorta di munizioni 탄약 보관 Magazyn amunicji - 弾薬の格納 + 弾薬の格納場所 弹药存储 Хранилище боеприпасов Almacenamiento de munición + Stockage des munitions + Armazenamento de Munição Determines whether extra magazines are stored on the ground or inside an ammo box Legt fest, ob zusätzliche Magazine auf dem Boden oder in einer Munitionskiste aufbewahrt werden - 여분의 탄약을 지면 또는 탄약 상자에 넣을지 결정합니다. + Determina se ulteriori caricatori verranno stoccati sul suolo o in una cassa di munizioni. + 여분의 탄약을 지면 또는 탄약 상자에 넣을 지 결정합니다. Decyduje, czy dodatkowe magazynki przechowywane są na ziemi, czy w skrzynce z amunicją. - 追加のマガジンを地面に設置するか、弾薬箱の中に保管するかを決定します + 追加の弾倉を地面に配置するか、弾薬箱内に保管するかを設定します。 设置多余的弹夹是存放在地面上还是弹药箱内 Определяет будут ли дополнительные магазины лежать на земле или внутри хранилища Determina si los cargadores extra son almacenados en el suelo o en una caja de munición + Détermine si les chargeurs supplémentaires sont stockés par terre ou dans une caisse de munitions. + Determina se munições extras são armazenadas no chão ou dentro de uma caixa de munição Ground Boden + Suolo 지면 Ziemia 地面 地面 Земля Suelo + Sol + Solo Ammo Box Munitionskiste + Cassa di munizioni 탄약 상자 Skrzynka amunicyjna 弾薬箱 弹药箱 Коробка с боеприпасами Caja de munición + Caisse de munitions + Caixa de Munição Ammo handling @@ -236,19 +248,19 @@ 弾薬の装填と除去を許可します。 允許裝填或卸載彈匣 允许装卸弹匣 - Permettere il carico e lo scarico dei caricatori + Permetti caricamento e scaricamento delle munizioni Povolit nabíjení a vybíjení zásobníků. Zezwalaj na ładowanie i rozładowywanie magazynków Permitir la carga y descarga de cargadores Разрешить загрузку и разгрузку магазинов - 탄을 장전하고 빼는걸 가능하게 합니다. + 탄을 장전하고 빼는 걸 가능하게 합니다. Interaction Time Coefficent Interaktionsdauerkoeffizient Coeficiente de tempo para a interação Coefficient du temps d'interaction - インタラクション時間係数 + インタラクションの所要時間係数 互動時間係數 交互时间系数 Coefficente per il tempo di interazione @@ -263,7 +275,7 @@ Skaliert die Zeit die benötigt wird um statische Waffen aufzubauen und nachzuladen. Escala o tempo requerido para montar e recarregar armas estáticas. Définit l'échelle de temps nécessaire à l'assemblage et au rechargement des armes statiques. - 設置型火器の設置と再装填時間を管理できます。 + 設置型火器の設置と再装填の所要時間を管理できます。 設置組裝及裝填組裝固定型武器 衡量组装和重新装填固定式武器所需的时间 Tempo necessario per assemblare e ricaricare le armi statiche @@ -281,7 +293,7 @@ 設置後に三脚を引きずる 在佈置三腳架後拖拉 部署后拖动三脚架 - Trascinare i treppiedi dopo lo schieramento + Trascina i treppiedi dopo il montaggio Tahat trojnožku po položení Przeciągnij statyw po rozmieszczeniu Arrastrar trípodes despues de desplegarlos @@ -296,12 +308,12 @@ 三脚を設置後、動かせるよう三脚を引きずるようにします。 在部署三腳架後,開始拖動它使其在你所要的精準位置 部署好三脚架后,开始拖动它到一个精确的位置 - Dopo aver posizionato un treppiede, iniziate a trascinarlo in una posizione precisa + Dopo aver montato un treppiede, inizia a trascinarlo su una posizione precisa Po položení trojnožky začít automaticky tahání pro lepší polohu. Po rozłożeniu trójnogu zacznij od przeciągania go w określone miejsce Después de desplegar un trípode, comenzar a arrastrarlo hacia la ubicación precisa После развертывания начать тащить треногу на другое место - 조립 후 위치선정을 위해 배치하지 않고 끌고다닙니다. + 조립 후 위치선정을 위해 배치하지 않고 끌고 다닙니다. Pickup Tripod @@ -311,7 +323,7 @@ 三脚を拾う 撿起三腳架 捡起三脚架 - Recupero treppiede + Recupera treppiede Složit trojnožku Podnieś Trójnóg Recoger trípode @@ -326,7 +338,7 @@ 火器を乗せる 裝載武器 装载武器 - Montare l'arma + Monta l'arma Připevnit zbraň Zamontuj Broń Montar arma @@ -353,7 +365,7 @@ Montiere Waffe... Montando Arma... Assemblage de l'arme... - 火器を設置中です・・・ + 火器を組み立て中です・・・ 組裝武器中... 正在组装武器... Montaggio arma... @@ -368,7 +380,7 @@ Nehme Dreibein auf... Carregando Tripé... Récupération du trépied... - 三脚を取得中です・・・ + 三脚を回収中・・・ 撿起三腳架... 捡起三脚架... Recupero treppiede... @@ -386,7 +398,7 @@ 三脚を設置中です・・・ 部署三腳架... 部署三脚架... - Piazzare treppiede... + Piazzamento treppiede... Pokládám trojnožku... Rozmieszczanie Trójnogu... Ubicando trípode... @@ -416,7 +428,7 @@ この火器で共用火器を有効化します。 對此武器啟用班組支援能力 在该武器上启用班组支援能力 - Abilita l'abilità dell'equipaggio su quest'arma + Abilita il servizio da equipaggio su quest'arma Zapne CSW funkce na této zbrani Włącza opcje systemu CSW na tej broni Habilitar el manejo de uso colectivo para esta arma @@ -428,10 +440,10 @@ Aktiviere und lasse diese Waffe leer Ativado e deixar arma vazia Activer et laisser l'arme vide - 火器有効化し空を維持 + 有効にして火器を空のままにする 啟用並不裝填武器 启用并不装填武器 - Abilitato e lascia l'arma vuota + Abilita e lascia l'arma vuota Povolit a nechat zbraň prázdnou Włącz i pozostaw broń pustą Habilitar y dejar el arma vacía @@ -463,7 +475,7 @@ [CSW] 設置型ミニ スパイク ランチャー (AT) [CSW] 固定型 "迷你長釘"導彈發射器(對地) [班组] 固定式"迷你长钉"导弹发射器(反坦) - [CSW] Static Mini-Spike Launcher (AT) + [CSW] Lanciatore Mini-Spike (AT) Statico [CSW] Statický raketomet Mini-Spike (protitankový) [CSW] Static Mini-Spike Launcher (AT) [CSW] Mini-Spike Przeciwpancerny pocisk rakietowy @@ -479,7 +491,7 @@ [CSW] 設置型ミニ スパイク ランチャー (AA) [CSW] 固定型 "迷你長釘"導彈發射器(對空) [班组] 固定式"迷你长钉"导弹发射器(防空) - [CSW] Static Mini-Spike Launcher (AA) + [CSW] Lanciatore Mini-Spike (AA) Statico [CSW] Statický raketomet Mini-Spike (protiletadlový) [CSW] Static Mini-Spike Launcher (AA) [CSW] Mini-Spike Przeciwlotniczy pocisk rakietowy @@ -495,7 +507,7 @@ [CSW] 設置型 XM312 [CSW] 固定型 XM312重機槍 [班组] 固定式 XM312 重机枪 - [CSW] Static XM312 Gun + [CSW] XM312 Statico [CSW] Statická zbraň XM312 [CSW] Static XM312 Gun [CSW] Statyczny karabin maszynowy XM312 @@ -511,8 +523,10 @@ [CSW] Станковый M2 со щитом [CSW] 設置型 防盾付き M2 [CSW] Statisches M2 mit Schild + [CSW] M2 Statico con Scudo [班组] 固定式防盾型 M2 重机枪 [CSW] 거치형 M2 (방패) + [CSW] Arma Estática - M2 com Escudo [CSW] Static XM312 Gun (Autonomous) @@ -523,7 +537,7 @@ [CSW] 設置型 XM312 (自律型) [CSW] 固定型 XM312重機槍(自主型) [班组] 固定式 XM312 重机枪(自主) - [CSW] Static XM312 Gun (Autonomo) + [CSW] XM312 Statico (Autonomo) [CSW] Statická zbraň XM312 (autonomická) [CSW] Static XM312 Gun (Autonomous) [CSW] Statyczny karabin maszynowy XM312 (Dron) @@ -539,7 +553,7 @@ [CSW] 設置型 XM307 [CSW] 固定型XM307榴彈機槍 [班组] 固定式 XM307 榴弹发射器 - [CSW] Static XM307 Gun + [CSW] XM307 Statico [CSW] Statická zbraň XM307 [CSW] Static XM307 Gun [CSW] Statyczny granatnik automatyczny XM307 @@ -555,7 +569,7 @@ [CSW] 設置型 XM307 (自律型) [CSW] 固定型 XM307榴彈機槍(自主型) [班组] 固定式 XM307 榴弹发射器(自主) - [CSW] Static XM307 Gun (Autonomo) + [CSW] XM307 Statico (Autonomo) [CSW] Statická zbraň XM307 (autonomická) [CSW] Static XM307 Gun (Autonomous) [CSW] Statyczny granatnik automatyczny XM307 (Dron) @@ -571,7 +585,7 @@ [CSW] 12.7x108 mm HMG ベルト [CSW]12.7x108毫米 重機槍彈鏈 [班组] 12.7x108 mm 重机枪弹链 - [CSW] 12.7x108mm HMG Belt + [CSW] Nastro da HMG 12.7x108mm [CSW] Pás 12.7×108mm pro těžký kulomet [CSW] 12.7x108mm HMG Belt [CSW] Taśma 12.7x108mm CKM @@ -587,7 +601,7 @@ [CSW] 12.7x99 mm HMG ベルト [CSW]12.7x99毫米 重機槍彈鏈 [班组] 12.7x99 mm 重机枪弹链 - [CSW] 12.7x99mm HMG Belt + [CSW] Nastro da HMG 12.7x99mm [CSW] Pás 12.7×99mm pro těžký kulomet [CSW] 12.7x99mm HMG Belt [CSW] Taśma 12.7x99mm CKM @@ -600,10 +614,10 @@ [CSW] 12.7x99mm Leuchtspur HMG-Gurt (Rot) [CSW] Cinto de Munição - 12.7x99mm HMG (Traçante Vermelho) [CSW] Bande 12,7x99 mm HMG traçantes (Rouges) - [CSW] 12.7x99 mm HMG 曳光弾ベルト (赤) + [CSW] 12.7x99 mm HMG トレーサーベルト (赤) [CSW] 12.7x99毫米 重機槍曳光彈鏈(紅色) [班组] 12.7x99 mm 重机枪弹链(曳光,红) - [CSW] 12.7x99mm Tracer HMG Belt (Red) + [CSW] Nastro da HMG 12.7x99mm Traccianti (Red) [CSW] Pás 12.7×99mm pro těžký kulomet (červená stopovka) [CSW] 12.7x99mm Tracer HMG Belt (Red) [CSW] Taśma 12.7x99mm CKM Smugowa (Czerwona) @@ -616,10 +630,10 @@ [CSW] 12.7x99mm Leuchtspur HMG-Gurt (Grün) [CSW] Cinto de Munição - 12.7x99mm HMG (Traçante Verde) [CSW] Bande 12,7x99 mm HMG traçantes (Vertes) - [CSW] 12.7x99 mm HMG 曳光弾ベルト (緑) + [CSW] 12.7x99 mm HMG トレーサーベルト (緑) [CSW] 12.7x99毫米 重機槍曳光彈鏈(綠色) [班组] 12.7x99 mm 重机枪弹链(曳光,绿) - [CSW] 12.7x99mm Tracer HMG Belt (Green) + [CSW] Nastro da HMG 12.7x99mm Traccianti (Green) [CSW] Pás 12.7×99mm pro těžký kulomet (zelená stopovka) [CSW] 12.7x99mm Tracer HMG Belt (Green) [CSW] Taśma 12.7x99mm CKM Smugowa (Zielona) @@ -632,10 +646,10 @@ [CSW] 12.7x99mm Leuchtspur HMG-Gurt (Gelb) [CSW] Cinto de Munição - 12.7x99mm HMG (Traçante Amarelo) [CSW] Bande 12,7x99 mm HMG traçantes (Jaunes) - [CSW] 12.7x99 mm HMG 曳光弾ベルト (黄) + [CSW] 12.7x99 mm HMG トレーサーベルト (黄) [CSW] 12.7x99毫米 重機槍曳光彈鏈(黃色) [班组] 12.7x99 mm 重机枪弹链(曳光,黄) - [CSW] 12.7x99mm Tracer HMG Belt (Yellow) + [CSW] Nastro da HMG 12.7x99mm Traccianti (Yellow) [CSW] Pás 12.7×99mm pro těžký kulomet (žlutá stopovka) [CSW] 12.7x99mm Tracer HMG Belt (Yellow) [CSW] Taśma 12.7x99mm CKM Smugowa (Żółta) @@ -648,10 +662,10 @@ [CSW] 20mm Granate GMG-Gurt [CSW] Cinto de Munição - Granada 20mm GMG [CSW] Bande grenades 20 mm GMG - [CSW] 20 mm てき弾 GMG ベルト + [CSW] 20 mm 擲弾 GMG ベルト [CSW]20毫米 榴彈 榴彈機槍彈鏈 [班组] 20 mm 榴弹发射器弹链 - [CSW] 20mm Grenade GMG Belt + [CSW] Nastro di Granate 20mm da GMG [CSW] Pás 20mm granátů pro granátomet [CSW] 20mm Grenade GMG Belt [CSW] Taśma 20mm do granatnika @@ -667,7 +681,7 @@ M3 三脚 M3 三腳架 M3 三脚架 - M3 Tripod + Treppiede M3 M3 trojnožka M3 Tripod Trójnóg M3 @@ -683,7 +697,7 @@ [CSW] 6P57 設置型三脚 [CSW] 6P57 部署型三腳架 [班组] 6P57 部署型三脚架 - [CSW] 6P57 Deployable Tripod + [CSW] Treppiede 6P57 piazzabile [CSW] 6P57 trojnožka [CSW] 6P57 Deployable Tripod [CSW] Trójnóg Rozkładany 6P57 @@ -699,7 +713,7 @@ [CSW] 6P57 設置型三脚 (低座) [CSW] 6P57 部署型(低位) [班组] 6P57 部署型(低) - [CSW] 6P57 Deployable Tripod (Low) + [CSW] Treppiede 6P57 piazzabile (Basso) [CSW] 6P57 trojnožka (nízká) [CSW] 6P57 Deployable Tripod (Low) [CSW] Trójnóg Rozkładany 6P57 (Niski) @@ -715,7 +729,7 @@ [CSW] M220 設置型三脚 [CSW] M220 部署型三腳架 [班组] M220 部署型三脚架 - [CSW] M220 Deployable Tripod + [CSW] Treppiede M220 piazzabile [CSW] M220 trojnožka [CSW] M220 Deployable Tripod [CSW] Trójnóg Rozkładany M220 @@ -731,7 +745,7 @@ [CSW] SAG-30 設置型三脚 [CSW] SAG-30 部署型三腳架 [班组] SAG-30 部署型三脚架 - [CSW] SAG-30 Deployable Tripod + [CSW] Treppiede SAG-30 piazzabile [CSW] SAG-30 trojnožka [CSW] SAG-30 Deployable Tripod [CSW] Trójnóg Rozkładany SAG-30 @@ -747,7 +761,7 @@ 6P57 三脚 6P57 三腳架 6P57 三脚架 - 6P57 Tripod + Treppiede 6P57 6P57 trojnožka 6P57 Tripod Trójnóg 6P57 @@ -763,7 +777,7 @@ SAG-30 三脚 SAG-30 三腳架 SAG-30 三脚架 - SAG-30 Tripod + Treppiede SAG-30 SAG-30 trojnožka SAG-30 Tripod Trójnóg SAG-30 @@ -779,7 +793,7 @@ M220 三脚 M220 三腳架 M220 三脚架 - M220 Tripod + Treppiede M220 M220 trojnožka M220 Tripod Trójnóg M220 @@ -795,7 +809,7 @@ [CSW] M3 設置型三脚 [CSW] M3 部屬型三腳架 [班组] M3 部属型三脚架 - [CSW] M3 Deployable Tripod + [CSW] Treppiede M3 piazzabile [CSW] M3 trojnožka [CSW] M3 Deployable Tripod [CSW] Trójnóg Rozkładany M3 @@ -811,7 +825,7 @@ [CSW] M3 設置型三脚 (低座) [CSW] M3 部署型三腳架(低位) [班组] M3 部署型三脚架(低) - [CSW] M3 Deployable Tripod (Low) + [CSW] Treppiede M3 piazzabile (Basso) [CSW] M3 trojnožka (nízká) [CSW] M3 Deployable Tripod (Low) [CSW] Trójnóg Rozkładany M3 (Niski) @@ -827,7 +841,7 @@ [CSW] 迫撃砲基盤 [CSW] 迫擊炮基座 [班组] 迫击炮底座 - [CSW] Mortar Baseplate + [CSW] Base di Mortaio [CSW] Podstavec pro minomet [CSW] Mortar Baseplate [CSW] Podstawa Moździerza @@ -843,7 +857,7 @@ 迫撃砲基盤 迫擊炮基座 迫击炮底座 - Mortar Baseplate + Base di Mortaio Podstavec pro minomet Mortar Baseplate Podstawa Moździerza @@ -859,7 +873,7 @@ [CSW] Mk6 迫撃砲発射筒 [CSW] Mk6 迫擊炮炮管 [班组] Mk6 迫击炮管 - [CSW] Mk6 Mortar Tube + [CSW] Tubo di Mortaio Mk6 [CSW] Minomet Mk6 hlaveň [CSW] Mk6 Mortar Tube [CSW] Rura Moździerza Mk6 @@ -875,7 +889,7 @@ [CSW] M252 発射筒バッグ [CSW] M252 炮管袋 [班组] M252 炮管包 - [CSW] M252 Tube Bag + [CSW] Borsa per Tubo M252 [CSW] M252 minometná hlaveň v pouzdře [CSW] M252 Tube Bag [CSW] Torba na M252 @@ -891,7 +905,7 @@ [CSW] M2 ガン バッグ [CSW] M2槍械袋 [班组] M2 枪械包 - [CSW] M2 Gun Bag + [CSW] Borsa per Mitra M2 [CSW] M2 zbraň v pouzdře [CSW] M2 Gun Bag [CSW] Torba na M2 @@ -907,7 +921,7 @@ [CSW] Mk19 ガン バッグ [CSW] Mk19槍械袋 [班组] Mk19 枪械包 - [CSW] MK19 Gun Bag + [CSW] Borsa per Mitra MK19 [CSW] MK19 zbraň v pouzdře [CSW] MK19 Gun Bag [CSW] Torba na MK19 @@ -923,7 +937,7 @@ [CSW] BGM-71 TOW ランチャー バッグ [CSW] BGM-71 拖式飛彈發射器袋 [班组] BGM-71 陶式导弹发射器包 - [CSW] BGM-71 TOW Launcher Bag + [CSW] Borsa per Lanciatore BGM-71 TOW [CSW] BGM-71 TOW raketomet v pouzdře [CSW] BGM-71 TOW Launcher Bag [CSW] Torba na BGM-71 TOW @@ -939,7 +953,7 @@ [CSW] DShK ガン バッグ [CSW]DShK 槍械袋 [班组] DShK 枪械包 - [CSW] DSHK Gun Bag + [CSW] Borsa per Mitra DSHK [CSW] DSHK zbraň v pouzdře [CSW] DSHK Gun Bag [CSW] Torba na DSzK @@ -955,7 +969,7 @@ [CSW] 2B14 発射筒バッグ [CSW] 2B14 炮管袋 [班组] 2B14 炮管包 - [CSW] 2B14 Tube Bag + [CSW] Borsa per Tubo 2B14 [CSW] 2B14 minometná hlaveň v pouzdře [CSW] 2B14 Tube Bag [CSW] Torba na 2B14 @@ -971,7 +985,7 @@ [CSW] NSV ガン バッグ [CSW] NSV 槍械袋 [班组] NSV 枪械包 - [CSW] NSV Gun Bag + [CSW] Borsa per Mitra NSV [CSW] NSV zbraň v pouzdře [CSW] NSV Gun Bag [CSW] Torba na NSV @@ -987,7 +1001,7 @@ [CSW] KORD ガン バッグ [CSW] KORD 槍械袋 [班组] KORD 枪械包 - [CSW] KORD Gun Bag + [CSW] Borsa per Mitra KORD [CSW] KORD zbraň v pouzdře [CSW] KORD Gun Bag [CSW] Torba na KORD @@ -1003,7 +1017,7 @@ [CSW] AGS-30 バッグ [CSW] AGS-30 槍械袋 [班组] AGS-30 枪械包 - [CSW] AGS-30 Gun Bag + [CSW] Borsa per GMG AGS-30 [CSW] ASG-30 zbraň v pouzdře [CSW] AGS-30 Gun Bag [CSW] Torba na AGS-30 @@ -1019,7 +1033,7 @@ [CSW] 9K115 メティス ランチャー バッグ [CSW] 9K115 麥士蒂索人發射器袋 [班组] 9K115 麦士蒂索人反坦克发射器包 - [CSW] 9K115 Metis Launcher Bag + [CSW] Borsa per Lanciatore 9K115 Metis [CSW] 9K115 Metis raketomet v pouzdře [CSW] Torba na 9K115 Metis [CSW] 9k115 Metis Launcher Bag @@ -1035,7 +1049,7 @@ [CSW] 9M113 コルネット ランチャー バッグ [CSW] 9M113 短號發射器 [班组] 9M113 短号发射器 - [CSW] 9M113 Kornet Launcher + [CSW] Borsa per Lanciatore 9M113 Kornet [CSW] 9M113 Kornet raketomet [CSW] Wyrzutnia 9M113 Kornet [CSW] 9m113 Kornet Launcher @@ -1051,7 +1065,7 @@ SPG-9 三脚 SPG-9 三腳架 SPG-9 三脚架 - SPG-9 Tripod + Treppiede SPG-9 SPG-9 trojnožka SPG-9 Tripod Trójnóg SPG-9 @@ -1067,7 +1081,7 @@ [CSW] SPG-9 設置型三脚 [CSW] SPG-9 部署型三腳架 [班组] SPG-9 部署型三脚架 - [CSW] SPG-9 Deployable Tripod + [CSW] Treppiede SPG-9 piazzabile [CSW] SPG-9 trojnožka [CSW] SPG-9 Deployable Tripod [CSW] Trójnóg rozkładany SPG-9 @@ -1083,7 +1097,7 @@ [CSW] SPG-9 ランチャー バッグ [CSW] SPG-9 發射器袋 [班组] SPG-9 发射器包 - [CSW] SPG-9 Launcher Bag + [CSW] Borsa per Lanciatore SPG-9 [CSW] SPG-9 raketomet v pouzdře [CSW] SPG-9 Launcher Bag [CSW] Torba na SPG-9 @@ -1099,7 +1113,7 @@ [CSW] SPG-9M ランチャー バッグ [CSW] SPG-9M 發射器袋 [班组] SPG-9M 发射器包 - [CSW] SPG-9M Launcher Bag + [CSW] Borsa per Lanciatore SPG-9M [CSW] SPG-9M raketomet v pouzdře [CSW] SPG-9M Launcher Bag [CSW] Torba na SPG-9M diff --git a/addons/dagr/XEH_postInit.sqf b/addons/dagr/XEH_postInit.sqf index 4c3fce167d..6996ced7f2 100644 --- a/addons/dagr/XEH_postInit.sqf +++ b/addons/dagr/XEH_postInit.sqf @@ -2,7 +2,7 @@ if (!hasInterface) exitWith {}; -#include "initKeybinds.sqf" +#include "initKeybinds.inc.sqf" GVAR(outputPFH) = -1; diff --git a/addons/dagr/functions/fnc_menuInit.sqf b/addons/dagr/functions/fnc_menuInit.sqf index a7c78dcc65..5bc757e295 100644 --- a/addons/dagr/functions/fnc_menuInit.sqf +++ b/addons/dagr/functions/fnc_menuInit.sqf @@ -10,6 +10,7 @@ * None * * Example: + * [] call ace_dagr_fnc_menuInit * * Public: No */ diff --git a/addons/dagr/initKeybinds.sqf b/addons/dagr/initKeybinds.inc.sqf similarity index 100% rename from addons/dagr/initKeybinds.sqf rename to addons/dagr/initKeybinds.inc.sqf diff --git a/addons/dagr/stringtable.xml b/addons/dagr/stringtable.xml index 38dfd89254..3251052002 100644 --- a/addons/dagr/stringtable.xml +++ b/addons/dagr/stringtable.xml @@ -41,9 +41,9 @@ Переключить DAGR Mostrar DAGR Přepnout DAGR - Apri DAGR + Apri/Chiudi DAGR Activer/Désactiver le DAGR - DAGR を常に表示 + DAGR 表示切替 DAGR 토글 切換軍用GPS接收器 切换军用 GPS 接收器 @@ -59,7 +59,7 @@ Defense Advanced GPS Receiver Defense Advanced GPS Receiver Defense Advanced GPS Receiver - アドバンスド DAGR の受信を定義します + 国防のための高度なGPS受信機 (Defense Advanced GPS Receiver) 국방 고급위성항법시스템 수신기 軍用高級防禦GPS接收器 军用高级防御 GPS 接收器 diff --git a/addons/disarming/functions/fnc_canBeDisarmed.sqf b/addons/disarming/functions/fnc_canBeDisarmed.sqf index 25d072f1e5..4fde1597c4 100644 --- a/addons/disarming/functions/fnc_canBeDisarmed.sqf +++ b/addons/disarming/functions/fnc_canBeDisarmed.sqf @@ -29,7 +29,6 @@ if (_putDownAnim != "") exitWith { false }; (alive _target) && {(abs (speed _target)) < 1} && -{(vehicle _target) == _target} && {(_target getVariable ["ACE_isUnconscious", false]) || {_target getVariable [QEGVAR(captives,isHandcuffed), false]} || {_target getVariable [QEGVAR(captives,isSurrendering), false]}} diff --git a/addons/disarming/functions/fnc_disarmDropItems.sqf b/addons/disarming/functions/fnc_disarmDropItems.sqf index d43d3542f7..26e00dfa5f 100644 --- a/addons/disarming/functions/fnc_disarmDropItems.sqf +++ b/addons/disarming/functions/fnc_disarmDropItems.sqf @@ -39,6 +39,11 @@ if (_doNotDropAmmo && {({_x in _listOfItemsToRemove} count (magazines _target)) private _holder = objNull; +// if _target is in a vehicle, use vehicle inventory as container +if (!isNull objectParent _target) then { + _holder = objectParent _target; +}; + //If not dropping ammo, don't use an existing container if (!_doNotDropAmmo) then { { diff --git a/addons/disarming/gui_disarm.hpp b/addons/disarming/gui_disarm.hpp index 1863eb9b0b..4c8ce53e6c 100644 --- a/addons/disarming/gui_disarm.hpp +++ b/addons/disarming/gui_disarm.hpp @@ -17,10 +17,10 @@ class RscListBox; #define W_MAKEITBIGGA(num) (num * (safeZoneH / 40)) #define H_MAKEITBIGGA(num) (num * (safeZoneH / 30)) -#define X_PART(num) QUOTE(linearConversion [ARR_5(0, 2, (missionNamespace getVariable [ARR_2(QUOTE(QEGVAR(inventory,inventoryDisplaySize)), 0)]), X_BIS(num), X_MAKEITBIGGA(num))]) -#define Y_PART(num) QUOTE(linearConversion [ARR_5(0, 2, (missionNamespace getVariable [ARR_2(QUOTE(QEGVAR(inventory,inventoryDisplaySize)), 0)]), Y_BIS(num), Y_MAKEITBIGGA(num))]) -#define W_PART(num) QUOTE(linearConversion [ARR_5(0, 2, (missionNamespace getVariable [ARR_2(QUOTE(QEGVAR(inventory,inventoryDisplaySize)), 0)]), W_BIS(num), W_MAKEITBIGGA(num))]) -#define H_PART(num) QUOTE(linearConversion [ARR_5(0, 2, (missionNamespace getVariable [ARR_2(QUOTE(QEGVAR(inventory,inventoryDisplaySize)), 0)]), H_BIS(num), H_MAKEITBIGGA(num))]) +#define X_PART(num) QUOTE(linearConversion [ARR_5(0,2,(missionNamespace getVariable [ARR_2(QUOTE(QEGVAR(inventory,inventoryDisplaySize)),0)]),X_BIS(num),X_MAKEITBIGGA(num))]) +#define Y_PART(num) QUOTE(linearConversion [ARR_5(0,2,(missionNamespace getVariable [ARR_2(QUOTE(QEGVAR(inventory,inventoryDisplaySize)),0)]),Y_BIS(num),Y_MAKEITBIGGA(num))]) +#define W_PART(num) QUOTE(linearConversion [ARR_5(0,2,(missionNamespace getVariable [ARR_2(QUOTE(QEGVAR(inventory,inventoryDisplaySize)),0)]),W_BIS(num),W_MAKEITBIGGA(num))]) +#define H_PART(num) QUOTE(linearConversion [ARR_5(0,2,(missionNamespace getVariable [ARR_2(QUOTE(QEGVAR(inventory,inventoryDisplaySize)),0)]),H_BIS(num),H_MAKEITBIGGA(num))]) class GVAR(remoteInventory) { idd = -1; diff --git a/addons/disposable/stringtable.xml b/addons/disposable/stringtable.xml index 8c5fe9f095..8878ed6e03 100644 --- a/addons/disposable/stringtable.xml +++ b/addons/disposable/stringtable.xml @@ -45,7 +45,7 @@ Előtöltött műrakéta Предзаряженная ракетная болванка Missile inerte precaricato - Míssel inerte pré-carregado + Míssil inerte pré-carregado 仮置きのミサイルをあらかじめ装填 더미 미사일을 미리 장전하기 預裝訓練導彈 diff --git a/addons/dogtags/RscTitles.hpp b/addons/dogtags/RscTitles.hpp index 5bcd318205..aad72dfc5d 100644 --- a/addons/dogtags/RscTitles.hpp +++ b/addons/dogtags/RscTitles.hpp @@ -13,8 +13,8 @@ class RscTitles { class controls { class background: RscPicture { idc = 1000; - x = QUOTE(profileNamespace getVariable [ARR_2('TRIPLES(IGUI,GVAR(grid),X)', (safeZoneX + safeZoneW) - 12.9 * GUI_GRID_W)]); - y = QUOTE(profileNamespace getVariable [ARR_2('TRIPLES(IGUI,GVAR(grid),Y)', safeZoneY + 0.175 * safeZoneH)]); + x = QUOTE(profileNamespace getVariable [ARR_2('TRIPLES(IGUI,GVAR(grid),X)',(safeZoneX + safeZoneW) - 12.9 * GUI_GRID_W)]); + y = QUOTE(profileNamespace getVariable [ARR_2('TRIPLES(IGUI,GVAR(grid),Y)',safeZoneY + 0.175 * safeZoneH)]); w = QUOTE(8 * GUI_GRID_W); h = QUOTE(8 * GUI_GRID_H); text = QPATHTOF(data\dogtagSingle.paa); @@ -26,8 +26,8 @@ class RscTitles { sizeEx = QUOTE(GUI_GRID_H); colorText[] = {1, 1, 1, 1}; colorBackground[] = {0, 0, 0, 0}; - x = QUOTE(1.6 * GUI_GRID_W + (profileNamespace getVariable [ARR_2('TRIPLES(IGUI,GVAR(grid),X)', (safeZoneX + safeZoneW) - 12.9 * GUI_GRID_W)])); - y = QUOTE(0.065 * safeZoneH + (profileNamespace getVariable [ARR_2('TRIPLES(IGUI,GVAR(grid),Y)', safeZoneY + 0.175 * safeZoneH)])); + x = QUOTE(1.6 * GUI_GRID_W + (profileNamespace getVariable [ARR_2('TRIPLES(IGUI,GVAR(grid),X)',(safeZoneX + safeZoneW) - 12.9 * GUI_GRID_W)])); + y = QUOTE(0.065 * safeZoneH + (profileNamespace getVariable [ARR_2('TRIPLES(IGUI,GVAR(grid),Y)',safeZoneY + 0.175 * safeZoneH)])); w = QUOTE(5.9 * GUI_GRID_W); h = QUOTE(3 * GUI_GRID_H); font = "RobotoCondensed"; diff --git a/addons/dogtags/XEH_postInit.sqf b/addons/dogtags/XEH_postInit.sqf index ea8e9bbd38..f683f6f253 100644 --- a/addons/dogtags/XEH_postInit.sqf +++ b/addons/dogtags/XEH_postInit.sqf @@ -7,7 +7,7 @@ // Add actions and event handlers only if ace_medical is loaded // - Adding actions via config would create a dependency -if (["ACE_Medical"] call EFUNC(common,isModLoaded)) then { +if (["ace_medical"] call EFUNC(common,isModLoaded)) then { if (hasInterface) then { private _checkTagAction = [ "ACE_CheckDogtag", @@ -17,7 +17,7 @@ if (["ACE_Medical"] call EFUNC(common,isModLoaded)) then { {!isNil {_target getVariable QGVAR(dogtagData)}} ] call EFUNC(interact_menu,createAction); - ["ACE_bodyBagObject", 0, ["ACE_MainActions"], _checkTagAction] call EFUNC(interact_menu,addActionToClass); + ["ACE_bodyBagObject", 0, ["ACE_MainActions"], _checkTagAction, true] call EFUNC(interact_menu,addActionToClass); private _takeTagAction = [ "ACE_TakeDogtag", @@ -27,7 +27,7 @@ if (["ACE_Medical"] call EFUNC(common,isModLoaded)) then { {(!isNil {_target getVariable QGVAR(dogtagData)}) && {((_target getVariable [QGVAR(dogtagTaken), objNull]) != _target)}} ] call EFUNC(interact_menu,createAction); - ["ACE_bodyBagObject", 0, ["ACE_MainActions"], _takeTagAction] call EFUNC(interact_menu,addActionToClass); + ["ACE_bodyBagObject", 0, ["ACE_MainActions"], _takeTagAction, true] call EFUNC(interact_menu,addActionToClass); }; if (isServer) then { @@ -47,7 +47,7 @@ if (["ACE_Medical"] call EFUNC(common,isModLoaded)) then { }; // If the arsenal is loaded, show the custom names for dog tags when in the arsenal -if (["ACE_Arsenal"] call EFUNC(common,isModLoaded)) then { +if (["ace_arsenal"] call EFUNC(common,isModLoaded)) then { [QEGVAR(arsenal,rightPanelFilled), { params ["_display", "_leftPanelIDC", "_rightPanelIDC"]; diff --git a/addons/dogtags/stringtable.xml b/addons/dogtags/stringtable.xml index ac9dc939f5..db3b0ee8fe 100644 --- a/addons/dogtags/stringtable.xml +++ b/addons/dogtags/stringtable.xml @@ -6,7 +6,7 @@ Nieśmiertelnik Жетон Identifikační známka - ドッグ タグ + ドッグタグ Erkennungsmarke 군번줄 Plaque d'identification @@ -22,7 +22,7 @@ Sprawdź nieśmiertelnik Проверить жетон Zkontrolovat známku - ドッグ タグを見る + ドッグタグを確認 Erkennungsmarke prüfen 군번줄 확인 Vérifier la plaque d'identification @@ -70,7 +70,7 @@ Zabrałeś nieśmiertelnik %1... Жетон снят с %1... Sebral jsem známku od %1... - %1 からドッグ タグを取っています・・・ + %1 からドッグタグを取っています・・・ Erkennungsmarke von %1 genommen... %1(으)로부터 군번줄을 회수했습니다... Plaque d'identification prise sur %1... @@ -86,7 +86,7 @@ Ktoś już zabrał ten nieśmiertelnik... Кто-то уже забрал жетон... Někdo jiný už vzal identifikační známku... - すでにドッグ タグは取られています・・・ + すでにドッグタグは取られています・・・ Jemand anderes hat bereits die Erkennungsmarke genommen... 누군가 이미 군번줄을 회수해갔습니다... Quelqu'un d'autre a déjà pris la plaque d'identification... @@ -103,7 +103,7 @@ 在畫面中顯示檢查兵籍牌 在画面中显示检查兵籍牌 確認中のドッグタグを画面上で表示します - Display su schermo per il controllo delle piastrine + Indicatore su schermo per il controllo delle piastrine Wyświetlacz ekranowy dla sprawdzania nieśmiertelników Экран для проверки жетонов Tela de Exibição para verificar dogtags diff --git a/addons/dragging/CfgEventHandlers.hpp b/addons/dragging/CfgEventHandlers.hpp index 94ebf2cda6..d3b43b314a 100644 --- a/addons/dragging/CfgEventHandlers.hpp +++ b/addons/dragging/CfgEventHandlers.hpp @@ -42,6 +42,13 @@ class Extended_Init_EventHandlers { class WeaponHolder { class ADDON { init = QUOTE(_this call FUNC(initObject)); + exclude[] = {"GroundWeaponHolder_Scripted"}; + }; + }; + class WeaponHolderSimulated { + class ADDON { + init = QUOTE(_this call FUNC(initObject)); + exclude[] = {"WeaponHolderSimulated_Scripted"}; }; }; class Land_Camping_Light_F { diff --git a/addons/dragging/XEH_postInit.sqf b/addons/dragging/XEH_postInit.sqf index 32b7d72faa..84bcffb544 100644 --- a/addons/dragging/XEH_postInit.sqf +++ b/addons/dragging/XEH_postInit.sqf @@ -4,16 +4,6 @@ if (isServer) then { // Release object on disconnection. Function is identical to killed addMissionEventHandler ["HandleDisconnect", LINKFUNC(handleKilled)]; - - // Handle surrending and handcuffing - ["ace_captiveStatusChanged", { - params ["_unit", "_state"]; - - // If surrended or handcuffed, drop dragged/carried object - if (_state) then { - _unit call FUNC(handleKilled); - }; - }] call CBA_fnc_addEventHandler; }; if (!hasInterface) exitWith {}; @@ -38,12 +28,45 @@ if (isNil QGVAR(maxWeightCarryRun)) then { ["vehicle", {[ACE_player, objNull] call FUNC(handlePlayerChanged)}] call CBA_fnc_addPlayerEventHandler; ["weapon", LINKFUNC(handlePlayerWeaponChanged)] call CBA_fnc_addPlayerEventHandler; +// When changing cameras, drop carried and dragged objects +["featureCamera", { + params ["_unit", "_camera"]; + + // Unit can either drag or carry, functions themselves handle which ones are executed + switch (_camera) do { + // Default camera + case "": { + _unit call FUNC(resumeDrag); + _unit call FUNC(resumeCarry); + }; + // Arsenals make the unit change animations, which makes the unit drop dragged/carried objects regardless + case "arsenal"; + case "ace_arsenal": { + _unit call FUNC(handleKilled); + }; + default { + _unit call FUNC(pauseDrag); + _unit call FUNC(pauseCarry); + }; + }; +}] call CBA_fnc_addPlayerEventHandler; + // Handle waking up dragged unit and falling unconscious while dragging ["ace_unconscious", LINKFUNC(handleUnconscious)] call CBA_fnc_addEventHandler; // Display event handler ["MouseZChanged", {(_this select 1) call FUNC(handleScrollWheel)}] call CBA_fnc_addDisplayHandler; +// Handle surrendering and handcuffing +["ace_captiveStatusChanged", { + params ["_unit", "_state"]; + + // If surrended or handcuffed, drop dragged/carried object + if (_state && {local _unit}) then { + _unit call FUNC(handleKilled); + }; +}] call CBA_fnc_addEventHandler; + [QGVAR(carryingContainerClosed), { params ["_container", "_owner"]; TRACE_2("carryingContainerClosed EH",_container,_owner); @@ -81,27 +104,4 @@ if (isNil QGVAR(maxWeightCarryRun)) then { }; }] call CBA_fnc_addEventHandler; -// When changing cameras, drop carried and dragged objects -["featureCamera", { - params ["_unit", "_camera"]; - - // Unit can either drag or carry, functions themselves handle which ones are executed - switch (_camera) do { - // Default camera - case "": { - _unit call FUNC(resumeDrag); - _unit call FUNC(resumeCarry); - }; - // Arsenals make the unit change animations, which makes the unit drop dragged/carried objects regardless - case "arsenal"; - case "ace_arsenal": { - _unit call FUNC(handleKilled); - }; - default { - _unit call FUNC(pauseDrag); - _unit call FUNC(pauseCarry); - }; - }; -}] call CBA_fnc_addPlayerEventHandler; - -#include "initKeybinds.sqf" +#include "initKeybinds.inc.sqf" diff --git a/addons/dragging/XEH_preInit.sqf b/addons/dragging/XEH_preInit.sqf index 9361d05015..894773534a 100644 --- a/addons/dragging/XEH_preInit.sqf +++ b/addons/dragging/XEH_preInit.sqf @@ -6,6 +6,6 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" ADDON = true; diff --git a/addons/dragging/functions/fnc_canCarry.sqf b/addons/dragging/functions/fnc_canCarry.sqf index dce4440a8e..caea20fb8a 100644 --- a/addons/dragging/functions/fnc_canCarry.sqf +++ b/addons/dragging/functions/fnc_canCarry.sqf @@ -33,7 +33,7 @@ if (_target isKindOf "StaticWeapon") exitWith { // Units need to be unconscious or limping; Units also need to not be in ragdoll, as that causes desync issues if (_target isKindOf "CAManBase") exitWith { - !(alive _target != isAwake _target) && + isAwake _target && // not ragdolled {lifeState _target == "INCAPACITATED" || {_target getHitPointDamage "HitLegs" >= 0.5}} }; diff --git a/addons/dragging/functions/fnc_canDrag.sqf b/addons/dragging/functions/fnc_canDrag.sqf index 7083eec76b..33dcd134b6 100644 --- a/addons/dragging/functions/fnc_canDrag.sqf +++ b/addons/dragging/functions/fnc_canDrag.sqf @@ -29,7 +29,7 @@ if (_target isKindOf "StaticWeapon") exitWith { // Units need to be unconscious or limping; Units also need to not be in ragdoll, as that causes desync issues if (_target isKindOf "CAManBase") exitWith { - !(alive _target != isAwake _target) && + isAwake _target && // not ragdolled {lifeState _target == "INCAPACITATED" || {_target getHitPointDamage "HitLegs" >= 0.5}} }; diff --git a/addons/dragging/functions/fnc_carryObject.sqf b/addons/dragging/functions/fnc_carryObject.sqf index d1c5294144..dfff18a3c0 100644 --- a/addons/dragging/functions/fnc_carryObject.sqf +++ b/addons/dragging/functions/fnc_carryObject.sqf @@ -55,12 +55,6 @@ _unit setVariable [QGVAR(releaseActionID), [ // Add anim changed EH [_unit, "AnimChanged", FUNC(handleAnimChanged), [_unit]] call CBA_fnc_addBISEventHandler; -// Check everything -[FUNC(carryObjectPFH), 0.5, [_unit, _target, CBA_missionTime]] call CBA_fnc_addPerFrameHandler; - -// Reset current dragging height -GVAR(currentHeightChange) = 0; - // Prevent UAVs from firing private _UAVCrew = _target call EFUNC(common,getVehicleUAVCrew); @@ -71,3 +65,9 @@ if (_UAVCrew isNotEqualTo []) then { _target setVariable [QGVAR(isUAV), true, true]; }; + +// Check everything +[FUNC(carryObjectPFH), 0.5, [_unit, _target, CBA_missionTime]] call CBA_fnc_addPerFrameHandler; + +// Reset current dragging height +GVAR(currentHeightChange) = 0; diff --git a/addons/dragging/functions/fnc_carryObjectPFH.sqf b/addons/dragging/functions/fnc_carryObjectPFH.sqf index 932e30cf71..b73ff97261 100644 --- a/addons/dragging/functions/fnc_carryObjectPFH.sqf +++ b/addons/dragging/functions/fnc_carryObjectPFH.sqf @@ -53,6 +53,18 @@ if !(alive _target && {_unit distance _target <= 10} && {_unit getHitPointDamage _idPFH call CBA_fnc_removePerFrameHandler; }; +// Drop static if crew is in it (UAV crew deletion may take a few frames) +if (_target isKindOf "StaticWeapon" && {(crew _target) isNotEqualTo []} && {!(_target getVariable [QGVAR(isUAV), false])}) then { + TRACE_2("static weapon crewed",_unit,_target); + + [_unit, _target] call FUNC(dropObject_carry); + + _unit setVariable [QGVAR(hint), nil]; + call EFUNC(interaction,hideMouseHint); + + _idPFH call CBA_fnc_removePerFrameHandler; +}; + private _previousHint = _unit getVariable [QGVAR(hint), []]; // If paused, don't show mouse button hints @@ -60,17 +72,16 @@ if (_previousHint isEqualType "") exitWith {}; // Mouse hint private _hintLMB = LLSTRING(Drop); -getCursorObjectParams params ["_cursorObject", "", "_distance"]; +private _cursorObject = cursorObject; if ( - !isNull _cursorObject && - {_distance < MAX_LOAD_DISTANCE} && - {[_unit, _cursorObject, ["isNotCarrying"]] call EFUNC(common,canInteractWith)} && + !isNull _cursorObject && {[_unit, _cursorObject, ["isNotCarrying"]] call EFUNC(common,canInteractWith)} && { if (_target isKindOf "CAManBase") then { - [_cursorObject, 0, true] call EFUNC(common,nearestVehiclesFreeSeat) isNotEqualTo [] + (_unit distance _cursorObject <= MAX_LOAD_DISTANCE_MAN) && {[_cursorObject, 0, true] call EFUNC(common,nearestVehiclesFreeSeat) isNotEqualTo []} } else { ["ace_cargo"] call EFUNC(common,isModLoaded) && + {EGVAR(cargo,enable)} && {[_target, _cursorObject] call EFUNC(cargo,canLoadItemIn)} } } diff --git a/addons/dragging/functions/fnc_dragObject.sqf b/addons/dragging/functions/fnc_dragObject.sqf index e6def58c34..ddad0ad7bb 100644 --- a/addons/dragging/functions/fnc_dragObject.sqf +++ b/addons/dragging/functions/fnc_dragObject.sqf @@ -68,18 +68,8 @@ if !(GVAR(dragAndFire)) then { // Add anim changed EH [_unit, "AnimChanged", FUNC(handleAnimChanged), [_unit]] call CBA_fnc_addBISEventHandler; -// Check everything -[FUNC(dragObjectPFH), 0.5, [_unit, _target, CBA_missionTime]] call CBA_fnc_addPerFrameHandler; - -// Reset current dragging height. -GVAR(currentHeightChange) = 0; - // Prevent UAVs from firing private _UAVCrew = _target call EFUNC(common,getVehicleUAVCrew); - -// Fixes not being able to move when in combat pace -[_unit, "forceWalk", QUOTE(ADDON), true] call EFUNC(common,statusEffect_set); - if (_UAVCrew isNotEqualTo []) then { { _target deleteVehicleCrew _x; @@ -87,3 +77,12 @@ if (_UAVCrew isNotEqualTo []) then { _target setVariable [QGVAR(isUAV), true, true]; }; + +// Check everything +[FUNC(dragObjectPFH), 0.5, [_unit, _target, CBA_missionTime]] call CBA_fnc_addPerFrameHandler; + +// Reset current dragging height. +GVAR(currentHeightChange) = 0; + +// Fixes not being able to move when in combat pace +[_unit, "forceWalk", QUOTE(ADDON), true] call EFUNC(common,statusEffect_set); diff --git a/addons/dragging/functions/fnc_dragObjectPFH.sqf b/addons/dragging/functions/fnc_dragObjectPFH.sqf index 4162f570ff..a2895f4216 100644 --- a/addons/dragging/functions/fnc_dragObjectPFH.sqf +++ b/addons/dragging/functions/fnc_dragObjectPFH.sqf @@ -45,3 +45,15 @@ if (!alive _target || {_unit distance _target > 10}) then { _idPFH call CBA_fnc_removePerFrameHandler; }; + +// Drop static if crew is in it (UAV crew deletion may take a few frames) +if (_target isKindOf "StaticWeapon" && {(crew _target) isNotEqualTo []} && {!(_target getVariable [QGVAR(isUAV), false])}) then { + TRACE_2("static weapon crewed",_unit,_target); + + [_unit, _target] call FUNC(dropObject); + + _unit setVariable [QGVAR(hint), nil]; + call EFUNC(interaction,hideMouseHint); + + _idPFH call CBA_fnc_removePerFrameHandler; +}; diff --git a/addons/dragging/functions/fnc_dropObject.sqf b/addons/dragging/functions/fnc_dropObject.sqf index 59a3cf9eeb..debe757101 100644 --- a/addons/dragging/functions/fnc_dropObject.sqf +++ b/addons/dragging/functions/fnc_dropObject.sqf @@ -80,9 +80,14 @@ if (_unit getVariable ["ACE_isUnconscious", false]) then { [_unit, "unconscious", 2] call EFUNC(common,doAnimation); }; -// Recreate UAV crew +// Recreate UAV crew (add a frame delay or this may cause the vehicle to be moved to [0,0,0]) if (_target getVariable [QGVAR(isUAV), false]) then { - createVehicleCrew _target; + [{ + params ["_target"]; + if (!alive _target) exitWith {}; + TRACE_2("restoring uav crew",_target,getPosASL _target); + createVehicleCrew _target; + }, [_target]] call CBA_fnc_execNextFrame; }; // Fixes not being able to move when in combat pace diff --git a/addons/dragging/functions/fnc_dropObject_carry.sqf b/addons/dragging/functions/fnc_dropObject_carry.sqf index b6033ed2b5..f3f15fac14 100644 --- a/addons/dragging/functions/fnc_dropObject_carry.sqf +++ b/addons/dragging/functions/fnc_dropObject_carry.sqf @@ -30,8 +30,17 @@ private _inBuilding = _unit call FUNC(isObjectOnObject); [QEGVAR(common,fixCollision), _unit] call CBA_fnc_localEvent; [QEGVAR(common,fixCollision), _target, _target] call CBA_fnc_targetEvent; -// Release object -detach _target; +private _cursorObject = cursorObject; +_tryLoad = _tryLoad && {!isNull _cursorObject} && {[_unit, _cursorObject, ["isNotCarrying"]] call EFUNC(common,canInteractWith)}; +private _loadCargo = false; + +// Don't release object if loading into vehicle (object might be released into vehicle) +if (_tryLoad && {!(_target isKindOf "CAManBase")} && {["ace_cargo"] call EFUNC(common,isModLoaded)} && {[_target, _cursorObject] call EFUNC(cargo,canLoadItemIn)}) then { + _loadCargo = true; +} else { + // Release object + detach _target; +}; // Fix anim when aborting carrying persons if (_target isKindOf "CAManBase" || {animationState _unit in CARRY_ANIMATIONS}) then { @@ -77,9 +86,14 @@ if !(_target isKindOf "CAManBase") then { [QEGVAR(common,fixFloating), _target, _target] call CBA_fnc_targetEvent; }; -// Recreate UAV crew +// Recreate UAV crew (add a frame delay or this may cause the vehicle to be moved to [0,0,0]) if (_target getVariable [QGVAR(isUAV), false]) then { - createVehicleCrew _target; + [{ + params ["_target"]; + if (!alive _target) exitWith {}; + TRACE_2("restoring uav crew",_target,getPosASL _target); + createVehicleCrew _target; + }, [_target]] call CBA_fnc_execNextFrame; }; // Reset mass @@ -92,11 +106,11 @@ if (_mass != 0) then { // Reset temp direction _target setVariable [QGVAR(carryDirection_temp), nil]; -private _cursorObject = cursorObject; - -// Try loading into vehicle -if (_tryLoad && {!isNull _cursorObject} && {[_unit, _cursorObject, ["isNotCarrying"]] call EFUNC(common,canInteractWith)}) then { - if (_target isKindOf "CAManBase") then { +// (Try) loading into vehicle +if (_loadCargo) then { + [_unit, _target, _cursorObject] call EFUNC(cargo,startLoadIn); +} else { + if (_tryLoad && {_unit distance _cursorObject <= MAX_LOAD_DISTANCE_MAN} && {_target isKindOf "CAManBase"}) then { private _vehicles = [_cursorObject, 0, true] call EFUNC(common,nearestVehiclesFreeSeat); if ([_cursorObject] isEqualTo _vehicles) then { @@ -106,12 +120,5 @@ if (_tryLoad && {!isNull _cursorObject} && {[_unit, _cursorObject, ["isNotCarryi [_unit, _target, _cursorObject] call EFUNC(common,loadPerson); }; }; - } else { - if ( - ["ace_cargo"] call EFUNC(common,isModLoaded) && - {[_target, _cursorObject] call EFUNC(cargo,canLoadItemIn)} - ) then { - [_unit, _target, _cursorObject] call EFUNC(cargo,startLoadIn); - }; }; }; diff --git a/addons/dragging/functions/fnc_getWeight.sqf b/addons/dragging/functions/fnc_getWeight.sqf index 76346148c4..f6b93feca0 100644 --- a/addons/dragging/functions/fnc_getWeight.sqf +++ b/addons/dragging/functions/fnc_getWeight.sqf @@ -18,6 +18,9 @@ params ["_object"]; +// Skip weight checking if it will be 0 +if (GVAR(weightCoefficient) == 0) exitWith {0}; + private _weight = loadAbs _object; if !(GVAR(skipContainerWeight)) then { @@ -36,4 +39,4 @@ if !(GVAR(skipContainerWeight)) then { // Mass in Arma isn't an exact amount but rather a volume/weight value // This attempts to work around that by making it a usable value (sort of) -_weight * 0.5 // return +GVAR(weightCoefficient) * _weight * 0.5 // return diff --git a/addons/dragging/functions/fnc_initPerson.sqf b/addons/dragging/functions/fnc_initPerson.sqf index fd166cfab9..6ac2b5d569 100644 --- a/addons/dragging/functions/fnc_initPerson.sqf +++ b/addons/dragging/functions/fnc_initPerson.sqf @@ -16,6 +16,7 @@ */ params ["_unit"]; +if (isNull _unit) exitWith { WARNING_1("%1 became null",_unit) }; [_unit, true, [0, 1.1, 0.092], 180] call FUNC(setDraggable); [_unit, true, [0.4, -0.1, -1.25], 195] call FUNC(setCarryable); // Hard-coded selection: "LeftShoulder" diff --git a/addons/dragging/functions/fnc_setCarryable.sqf b/addons/dragging/functions/fnc_setCarryable.sqf index 0348bd0483..174bdbf972 100644 --- a/addons/dragging/functions/fnc_setCarryable.sqf +++ b/addons/dragging/functions/fnc_setCarryable.sqf @@ -54,7 +54,7 @@ GVAR(initializedClasses_carry) = _initializedClasses; [QGVAR(carryingContainerClosed), [_object, _owner], _owner] call CBA_fnc_targetEvent; }, false] call CBA_fnc_addClassEventHandler; -private _icon = [QUOTE(PATHTOF(UI\icons\box_carry.paa)), QUOTE(PATHTOF(UI\icons\person_carry.paa))] select (_object isKindOf "Man"); +private _icon = [QPATHTOF(UI\icons\box_carry.paa), QPATHTOF(UI\icons\person_carry.paa)] select (_object isKindOf "CAManBase"); private _carryAction = [QGVAR(carry), LLSTRING(Carry), _icon, {[_player, _target] call FUNC(startCarry)}, {[_player, _target] call FUNC(canCarry)}] call EFUNC(interact_menu,createAction); private _dropAction = [QGVAR(drop_carry), LLSTRING(Drop), "", {[_player, _target] call FUNC(dropObject_carry)}, {[_player, _target] call FUNC(canDrop_carry)}] call EFUNC(interact_menu,createAction); diff --git a/addons/dragging/functions/fnc_setDraggable.sqf b/addons/dragging/functions/fnc_setDraggable.sqf index d2adba1a61..a00e3005e9 100644 --- a/addons/dragging/functions/fnc_setDraggable.sqf +++ b/addons/dragging/functions/fnc_setDraggable.sqf @@ -54,8 +54,7 @@ GVAR(initializedClasses) = _initializedClasses; [QGVAR(draggingContainerClosed), [_object, _owner], _owner] call CBA_fnc_targetEvent; }, false] call CBA_fnc_addClassEventHandler; - -private _icon = [QUOTE(PATHTOF(UI\icons\box_drag.paa)), QUOTE(PATHTOF(UI\icons\person_drag.paa))] select (_object isKindOf "Man"); +private _icon = [QPATHTOF(UI\icons\box_drag.paa), QPATHTOF(UI\icons\person_drag.paa)] select (_object isKindOf "CAManBase"); private _dragAction = [QGVAR(drag), LLSTRING(Drag), _icon, {[_player, _target] call FUNC(startDrag)}, {[_player, _target] call FUNC(canDrag)}] call EFUNC(interact_menu,createAction); private _dropAction = [QGVAR(drop), LLSTRING(Drop), "", {[_player, _target] call FUNC(dropObject)}, {[_player, _target] call FUNC(canDrop)}] call EFUNC(interact_menu,createAction); diff --git a/addons/dragging/initKeybinds.sqf b/addons/dragging/initKeybinds.inc.sqf similarity index 100% rename from addons/dragging/initKeybinds.sqf rename to addons/dragging/initKeybinds.inc.sqf diff --git a/addons/dragging/initSettings.sqf b/addons/dragging/initSettings.inc.sqf similarity index 67% rename from addons/dragging/initSettings.sqf rename to addons/dragging/initSettings.inc.sqf index a3e444e29c..039327330d 100644 --- a/addons/dragging/initSettings.sqf +++ b/addons/dragging/initSettings.inc.sqf @@ -1,3 +1,12 @@ +[ + QGVAR(weightCoefficient), + "SLIDER", + [LSTRING(weightCoefficient_DisplayName), LSTRING(weightCoefficient_Description)], + LLSTRING(SettingsName), + [0, 2, 1, 2], + true +] call CBA_fnc_addSetting; + [ QGVAR(dragAndFire), "CHECKBOX", @@ -10,7 +19,7 @@ QGVAR(allowRunWithLightweight), "CHECKBOX", [LSTRING(allowRunWithLightweight_DisplayName), LSTRING(allowRunWithLightweight_Description)], - localize LSTRING(SettingsName), + LLSTRING(SettingsName), true, true ] call CBA_fnc_addSetting; @@ -19,7 +28,7 @@ QGVAR(skipContainerWeight), "CHECKBOX", [LSTRING(skipContainerWeight_DisplayName), LSTRING(skipContainerWeight_Description)], - localize LSTRING(SettingsName), + LLSTRING(SettingsName), false, true ] call CBA_fnc_addSetting; diff --git a/addons/dragging/script_component.hpp b/addons/dragging/script_component.hpp index 195edabe3a..4417d5d941 100644 --- a/addons/dragging/script_component.hpp +++ b/addons/dragging/script_component.hpp @@ -16,7 +16,7 @@ #include "\z\ace\addons\main\script_macros.hpp" -#define MAX_LOAD_DISTANCE 5 +#define MAX_LOAD_DISTANCE_MAN 5 #define DRAG_ANIMATIONS ["amovpercmstpslowwrfldnon_acinpknlmwlkslowwrfldb_2", "amovpercmstpsraswpstdnon_acinpknlmwlksnonwpstdb_2", "amovpercmstpsnonwnondnon_acinpknlmwlksnonwnondb_2", "acinpknlmstpsraswrfldnon", "acinpknlmstpsnonwpstdnon", "acinpknlmstpsnonwnondnon", "acinpknlmwlksraswrfldb", "acinpknlmwlksnonwnondb", "ace_dragging_rifle_limpb", "ace_dragging", "ace_dragging_limpb", "ace_dragging_static", "ace_dragging_drop"] #define CARRY_ANIMATIONS ["acinpercmstpsnonwnondnon", "acinpknlmstpsnonwnondnon_acinpercmrunsnonwnondnon"] diff --git a/addons/dragging/stringtable.xml b/addons/dragging/stringtable.xml index ba76b7f87a..5c8a355be2 100644 --- a/addons/dragging/stringtable.xml +++ b/addons/dragging/stringtable.xml @@ -61,8 +61,10 @@ Objeyi Taşı/Bırak Arrastrar/Soltar Objeto Objekt tragen/loslassen + Trasporta/Lascia Oggetto 背负/释放物体 물건 업기/놓기 + Carregar/Soltar Objeto Item too heavy @@ -101,6 +103,7 @@ Raise/Lower | (Ctrl + Scroll) Rotate Heben/Senken | (Strg + Scrollen) Drehen + Alza/Abbassa | (Ctrl + Rotellina) Ruota Lever/Baisser | (Ctrl + Scroll) Rotation 上げる/下げる | (Ctrl + スクロール) 回転 Zvednout/Snížit | (Ctrl + Kolečko myši) Otáčet @@ -110,11 +113,13 @@ Subir/Bajar | (Ctrl + Scroll) Rotar 抬起/放低 |(Ctrl + 鼠标滚轮)旋转 높이기/내리기 | (컨트롤 + 스크롤) 회전 + Subir/Abaixar | (Ctrl + Scroll) Rotacionar ACE Dragging ACE Traînage d'objets et d'unités ACE Ziehen + ACE Trascinamento ACE Húzás ACE Перетаскивание ACE Arrastrar @@ -122,58 +127,93 @@ ACE ドラッグ ACE 拖曳 ACE 끌기 + ACE Arraste Allow firing while dragging Arme utilisable durant le traînage Schießen während des Ziehens erlauben + Permetti di sparare durante il trascinamento Húzás közbeni tüzelés engedélyezése Стрельба во время перетаскивания Permitir disparar mientras se arrastra Pozwól na strzelanie podczas przeciągania 搬送中に射撃許可 允许在拖动时开火 - 사격 중 끌기 가능하게 하기 + 끌기 중 사격 가능하게 하기 + Permitir disparar enquanto arrasta Allow the player to fire their gun while dragging. Cette option permet aux joueurs de faire usage de leur arme pendant qu'ils traînent un objet ou une unité.\nL'arme secondaire est utilisée si le joueur en est équipé. Erlaubt dem Spieler während des Ziehens das Abfeuern der Waffe. + Permette al giocatore di fare fuoco con la propria arma mentre trascina qualcosa o qualcuno. Húzás közben a játékos elsütheti a fegyverét. Позволяет игроку стрелять во время перетаскивания Permite al jugador disparar mientras está arrastrando. Pozwala graczom strzelać z broni podczas przeciągania obiektów. プレイヤーが引きずっている最中でも射撃できるようにします。 允许玩家在拖动时开火。 - 플레이어가 무기를 끄는 동안에 무기를 사용할 수 있게합니다. + 플레이어가 뭔가를 끌고 있는 동안에 무기를 사용할 수 있게 합니다. + Permite ao jogador disparar sua arma enquanto arrasta. Allow Running with Lightweight Objects 軽量物を持って走れるようにする + Permetti la corsa con oggetti leggeri Zezwól na Bieganie z Lekkimi Obiektami Erlauben das Sprinten mit leichten Gegenständen 가벼운 개체 들고 달리기 허용 + Autoriser la course avec des objets légers + Permitir corrida com objetos leves Allow the player to run when carrying lightweight objects. プレイヤーが軽量オブジェクトを持ち運んでいるときに走れるようにする。 + Permetti al giocatore di correre se l'oggetto trasportato è leggero. Zezwalaj graczowi na bieganie podczas przenoszenia lekkich przedmiotów. Erlauben Sie dem Spieler, zu rennen, wenn er leichte Gegenstände trägt. 가벼운 개체를 들고 다닐 때 플레이어가 뛸 수 있도록 허용합니다. + Autorise le joueur à courir lorsqu'il porte un objet léger. + Permite ao jogador correr enquanto carrega objetos leves. Skip Object Weight オブジェクトの重量を無視 + Ignora Peso Contenitore Pomiń Wagę Obiektu Objektgewicht überspringen 개체 무게 무시 + Ignorer le poids de l'objet + Ignorar Peso do Objeto Determines whether object's weight is added onto weight calculations. 重量計算にオブジェクトの重量を追加するかどうかを決定します。 + Determina se la massa del contenitore è sommata alla massa del contenuto per i calcoli di peso. Określa, czy waga obiektu jest dodawana do obliczeń ciężaru. Legt fest, ob das Gewicht des Objekts zu den Gewichtsberechnungen hinzugefügt wird. 무게 계산에 개체의 무게를 추가할 지 여부를 결정합니다. + Défini si le poids d'un objet est ajouté aux calculs du poids. + Determina se o peso do objeto é adicionado aos cálculos de peso. + + + Max Weight Coefficient + Coefficient de poids maximal + 최대 무게 계수 + Coefficiente di peso massimo + Coeficiente Máximo de Peso + Maximaler Gewichtskoeffizient + 最大重量係数 + + + Modifies weight limit calculations. Set to 0 to ignore. + Modifie les calculs de limite de poids. Configurer à 0 pour ignorer. + 무게 제한 계산을 수정합니다. 무시하려면 0으로 설정하십시오. + Altera il calcolo di peso massimo trasportabile. Impostalo su 0 per ignorare del tutto il peso. + Modifica os cálculos do limite de peso. Defina como 0 para ignorar. + Ändert die Berechnung der Gewichtsbegrenzung. Zum Ignorieren auf 0 setzen. + 重量制限の計算を変更します。 無視するには 0 に設定します。 diff --git a/addons/dragon/stringtable.xml b/addons/dragon/stringtable.xml index 4170974dc5..d6269eb82b 100644 --- a/addons/dragon/stringtable.xml +++ b/addons/dragon/stringtable.xml @@ -71,7 +71,7 @@ SU-36/P デイサイト SU-36/P 日間瞄具 SU-36/P 常规瞄具 - SU-36/P Daysight + SU-36/P Mirino Diurno SU-36/P denní puškohled SU-36/P Celownik dzienny SU-36/P Daysight @@ -84,10 +84,10 @@ Ein leichte, billige Visierung for Tageseinsätze. Beinhaltet den Zielsuchcomputer für das ganze System. Uma mira leve e comum utilizada para operações de dia. Contêm o computador de orientação para todo o sistema. Un viseur léger et bon marché utilisé pour les opérations de jour.\nContient l'ordinateur de guidage pour tout le système. - 昼間時に使用される軽量で、低価格の照準器です。システム全体の誘導コンピュータを備えています。 + 昼間時に使用される軽量で、低価格の照準器。システム全体の誘導コンピュータを備えている。 一個輕量,便宜適合日間行動使用的廉價瞄具。內含全套制導電腦系統 一种用于日间作战的轻型廉价瞄准具。包含整个系统的制导计算机 - Una luce,un mirino usato per le operazioni diurne.Contiene il computer di guida per l'intero sistema + Un mirino leggero ed economico usato per le operazioni diurne. Contiene il computer di guida per l'intero sistema. Lehký a levný puškohled pro použití za denního světla. Obsahuje navigační počítač pro celý systém. Lekki, tani celownik używany do działania w trakcie dnia. Zawiera komputer naprowadząjący dla całego systemu Лёгкий дешёвый прицел, используемый для дневных операций. Содержит компьютер для всей системы @@ -102,7 +102,7 @@ 特徴的な飛行特性を持つ、ワイヤ誘導の SACLOS ミサイルです。 一個有線制導半自動指令型飛彈並有著獨特的飛航動作 具有独特飞行特性的线导半自动指令型导弹 - Un missile SACLOS filo-guidato con uniche caratterische di volo + Un missile SACLOS filo-guidato con una caratterisca di volo particolare Drátem naváděná SACLOS raketa s unikátními letovými vlastnostmi Naprowadzany przewodowo rakietowy pocisk SACLOS o unikalnej charakterystyce lotu Ракета SACLOS с проводным наведением с уникальной характеристикой полета diff --git a/addons/explosives/ACE_Arsenal_Stats.hpp b/addons/explosives/ACE_Arsenal_Stats.hpp index cde27f3bde..821ac65bfd 100644 --- a/addons/explosives/ACE_Arsenal_Stats.hpp +++ b/addons/explosives/ACE_Arsenal_Stats.hpp @@ -6,8 +6,8 @@ class EGVAR(arsenal,stats) { stats[] = {QGVAR(Range)}; displayName = CSTRING(statExploRange); showText = 1; - textStatement = QUOTE(params [ARR_2('_stat', '_config')]; private _exploRangeStat = getNumber (_config >> _stat select 0); format [ARR_3('%1m (%2ft)', _exploRangeStat, (_exploRangeStat / 0.3048) toFixed 1)]); - condition = QUOTE(params [ARR_2('', '_config')]; (getNumber (_config >> QQGVAR(Detonator))) > 0); + textStatement = QUOTE(params [ARR_2('_stat','_config')]; private _exploRangeStat = getNumber (_config >> _stat select 0); format [ARR_3('%1m (%2ft)',_exploRangeStat,(_exploRangeStat / 0.3048) toFixed 1)]); + condition = QUOTE(params [ARR_2('','_config')]; (getNumber (_config >> QQGVAR(Detonator))) > 0); tabs[] = {{}, {7}}; }; }; diff --git a/addons/explosives/ACE_Triggers.hpp b/addons/explosives/ACE_Triggers.hpp index aab36121a0..27d63a736d 100644 --- a/addons/explosives/ACE_Triggers.hpp +++ b/addons/explosives/ACE_Triggers.hpp @@ -56,7 +56,7 @@ class ACE_Triggers { isAttachable = 1; displayName = CSTRING(timerName); picture = QPATHTOF(data\UI\Timer.paa); - onPlace = QUOTE([ARR_4(_this select 1, _this select 3 select 0, nil, _this select 0)] call FUNC(startTimer); false); + onPlace = QUOTE([ARR_4(_this select 1,_this select 3 select 0,nil,_this select 0)] call FUNC(startTimer); false); onSetup = QUOTE(_this call FUNC(openTimerUI)); }; class Tripwire { diff --git a/addons/explosives/CfgEventHandlers.hpp b/addons/explosives/CfgEventHandlers.hpp index 78da7be599..ae0e5fe541 100644 --- a/addons/explosives/CfgEventHandlers.hpp +++ b/addons/explosives/CfgEventHandlers.hpp @@ -28,7 +28,7 @@ class Extended_Take_EventHandlers { }; class Extended_Put_EventHandlers { class CAManBase { - GVAR(takeHandler) = QUOTE([ARR_3(_this select 1, _this select 0, _this select 2)] call FUNC(onInventoryChanged)); + GVAR(takeHandler) = QUOTE([ARR_3(_this select 1,_this select 0,_this select 2)] call FUNC(onInventoryChanged)); }; }; diff --git a/addons/explosives/CfgVehicles.hpp b/addons/explosives/CfgVehicles.hpp index 96889784b9..91a708beb8 100644 --- a/addons/explosives/CfgVehicles.hpp +++ b/addons/explosives/CfgVehicles.hpp @@ -11,7 +11,7 @@ class CfgVehicles { exceptions[] = {"isNotSwimming", "isNotInside", "isNotSitting"}; showDisabled = 1; icon = QPATHTOF(UI\Explosives_Menu_ca.paa); - insertChildren = QUOTE([_player] call FUNC(addTransmitterActions);); + insertChildren = QUOTE([_player] call FUNC(addTransmitterActions)); class ACE_Place { displayName = CSTRING(Place); statement = ""; @@ -49,7 +49,7 @@ class CfgVehicles { distance = 1; displayName = CSTRING(Defuse); condition = QUOTE([ARR_2(_player,_target)] call FUNC(canDefuse)); - statement = QUOTE([ARR_2(_player,_target)] call FUNC(startDefuse);); + statement = QUOTE([ARR_2(_player,_target)] call FUNC(startDefuse)); exceptions[] = {"isNotSwimming"}; icon = QPATHTOF(UI\Defuse_ca.paa); }; @@ -87,7 +87,7 @@ class CfgVehicles { displayName = CSTRING(TriggerMenu); condition = "true"; statement = ""; - insertChildren = QUOTE([ARR_3(_target getVariable QUOTE(QGVAR(class)),_target,_player)] call FUNC(addTriggerActions);); + insertChildren = QUOTE([ARR_3(_target getVariable QUOTE(QGVAR(class)),_target,_player)] call FUNC(addTriggerActions)); showDisabled = 0; exceptions[] = {"isNotSwimming"}; icon = QPATHTOF(UI\Explosives_Menu_ca.paa); diff --git a/addons/explosives/ExplosivesUI.hpp b/addons/explosives/ExplosivesUI.hpp index 75f29afbfe..ef32c0c04b 100644 --- a/addons/explosives/ExplosivesUI.hpp +++ b/addons/explosives/ExplosivesUI.hpp @@ -142,7 +142,7 @@ class Rsc_ACE_PhoneInterface { w = "0.0309375 * safezoneW"; h = "0.033 * safezoneH"; tooltip = CSTRING(Phone_AddToSpeedDial); - action = QUOTE([ARR_2(ctrlText 1401,ctrlText 1400)] call FUNC(addToSpeedDial);); + action = QUOTE([ARR_2(ctrlText 1401,ctrlText 1400)] call FUNC(addToSpeedDial)); }; class clear: Rsc_ACE_HiddenButton { idc = 1610; @@ -160,7 +160,7 @@ class Rsc_ACE_PhoneInterface { w = "0.04125 * safezoneW"; h = "0.033 * safezoneH"; tooltip = CSTRING(Phone_Dial); - action = QUOTE([ARR_2(ace_player,ctrlText 1400)] call FUNC(dialPhone);); + action = QUOTE([ARR_2(ace_player,ctrlText 1400)] call FUNC(dialPhone)); }; class up: Rsc_ACE_HiddenButton { idc = 1612; diff --git a/addons/explosives/GUI_VirtualAmmo.hpp b/addons/explosives/GUI_VirtualAmmo.hpp index ba288f019b..ace807dc44 100644 --- a/addons/explosives/GUI_VirtualAmmo.hpp +++ b/addons/explosives/GUI_VirtualAmmo.hpp @@ -5,7 +5,7 @@ class RscTitles { duration = 9999999; fadein = 0; fadeout = 0; - onLoad = QUOTE(uiNamespace setVariable [ARR_2(QQGVAR(virtualAmmoDisplay), _this select 0)]); + onLoad = QUOTE(uiNamespace setVariable [ARR_2(QQGVAR(virtualAmmoDisplay),_this select 0)]); class controls {}; class objects { class TheObject { diff --git a/addons/explosives/TimerDialog.hpp b/addons/explosives/TimerDialog.hpp index 50ee0086bc..5bc4954fbf 100644 --- a/addons/explosives/TimerDialog.hpp +++ b/addons/explosives/TimerDialog.hpp @@ -2,7 +2,7 @@ class GVAR(timerUI) { idd = -1; movingEnable = 1; enableSimulation = 1; - onLoad = QUOTE(uiNamespace setVariable [ARR_2(QQGVAR(timerDisplay), _this select 0)]); + onLoad = QUOTE(uiNamespace setVariable [ARR_2(QQGVAR(timerDisplay),_this select 0)]); class controlsBackground { class Header: RscText { idc = -1; diff --git a/addons/explosives/XEH_preInit.sqf b/addons/explosives/XEH_preInit.sqf index 6970d2b7f4..a6b4e97ed3 100644 --- a/addons/explosives/XEH_preInit.sqf +++ b/addons/explosives/XEH_preInit.sqf @@ -8,7 +8,7 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" GVAR(detonationHandlers) = []; GVAR(excludedMines) = []; diff --git a/addons/explosives/dev/test_magazines.sqf b/addons/explosives/dev/test_magazines.sqf new file mode 100644 index 0000000000..ca9744f08d --- /dev/null +++ b/addons/explosives/dev/test_magazines.sqf @@ -0,0 +1,24 @@ +#include "..\script_component.hpp" +// call compileScript ["z\ace\addons\explosives\dev\test_magazines.sqf"]; + +INFO("--- Checking Explosive Mags ---"); + +private _explosivesMags = compatibleMagazines "Put"; +private _setupHash = createHashMap; +{ + private _mag = _x; + private _cfg = configFile >> "CfgMagazines" >> _mag; + private _scope = getNumber (_cfg >> "scope"); + + private _setupObject = getText (_cfg >> QGVAR(SetupObject)); + if (_setupObject == "") then { + WARNING_2("[%1](scope %2) has no setupObject",_mag,_scope); + continue + }; + if (!isClass (configFile >> "CfgVehicles" >> _setupObject)) then { + ERROR_2("[%1](scope %2) has invalid setup object",_mag,_scope); + }; + if ((((_setupHash getOrDefault [_setupObject, [], true]) pushBack _mag) > 0)) then { + INFO_2("[%1] setupObject has multiple mags %2",_setupObject,_setupHash get _setupObject); + }; +} forEach _explosivesMags; diff --git a/addons/explosives/functions/fnc_dialingPhone.sqf b/addons/explosives/functions/fnc_dialingPhone.sqf index 1ac0679959..40b7bb21c5 100644 --- a/addons/explosives/functions/fnc_dialingPhone.sqf +++ b/addons/explosives/functions/fnc_dialingPhone.sqf @@ -13,7 +13,7 @@ * None * * Example: - * [FUNC(dialingPhone), 0.25, [_unit,4,_arr,_code]] call CALLSTACK(CBA_fnc_addPerFrameHandler); + * [ace_explosives_fnc_dialingPhone, 0.25, [_unit,4,_arr,_code]] call CBA_fnc_addPerFrameHandler; * * Public: No */ diff --git a/addons/explosives/initSettings.sqf b/addons/explosives/initSettings.inc.sqf similarity index 100% rename from addons/explosives/initSettings.sqf rename to addons/explosives/initSettings.inc.sqf diff --git a/addons/explosives/stringtable.xml b/addons/explosives/stringtable.xml index c38c226d17..86c3183fe3 100644 --- a/addons/explosives/stringtable.xml +++ b/addons/explosives/stringtable.xml @@ -227,7 +227,7 @@ Używany do zdalnego detonowania ładunków wybuchowych Utilisé pour déclencher des explosifs à distance. Používaný ke vzdálenému odpalování výbušnin - Usato per l'attivazione a distanza degli esplosivi + Usato per l'innesco a distanza degli esplosivi Robbanóanyagok távoli robbantásához való Usado para acionar explosivos remotamente Используется для удаленной детонации СВУ @@ -248,8 +248,8 @@ M57 Gyújtóeszköz M57 Dispositivo de Detonação Взрыватель M57 - M57 起爆装置 - M57 격발기 + M57 点火装置 + 격발기 (M57) M57 引爆装置 M57 引爆裝置 M57 Ateşleme Cihazı @@ -261,7 +261,7 @@ Używany do zdalnego detonowania ładunków wybuchowych Utilisé pour déclencher des explosifs à distance. Používané ke vzdálenému odpalování výbušnin - Usato per l'attivazione a distanza degli esplosivi + Usato per l'innesco a distanza degli esplosivi Robbanóanyagok távoli robbantásához Usado para acionar explosivos remotamente Используется для удаленной детонации зарядов @@ -282,8 +282,8 @@ M152 Gyújtóeszköz M152 Dispositivo de Detonação Взрыватель M152 - M152 起爆装置 - M152 격발기 + M152 点火装置 + 격발기 (M152) M152 引爆装置 M152 引爆裝置 M152 Ateşleme Cihazı @@ -329,7 +329,7 @@ Umożliwia rozbrajanie ładunków wybuchowych Outils nécessaires au désamorçage des explosifs. Dovoluje zneškodňování výbušnin - Consente la disattivazione degli ordigni esplosivi + Consente il disinnesco degli ordigni esplosivi Robbanóanyagok hatástalanítását teszi lehetővé Permite o desarme de explosivos Позволяет обезвреживать взрывчатку @@ -346,7 +346,7 @@ Dodaj do szybkiego wybierania Ajouter à la numérotation rapide Přidat jako rychlou volbu - Aggiungi alla selezione rapida + Aggiungi alle chiamate rapide Hozzáadás a gyorstárcsázóhoz Adicionar à ligação rápida Добавить в быстрый вызов @@ -380,7 +380,7 @@ Wybierz numer Composer Vytočit - Composizione numero + Componi numero Tárcsázás Discar Hабрать @@ -397,7 +397,7 @@ W górę Haut Nahoru - Sopra + Su Fel Cima Вызов @@ -414,7 +414,7 @@ W dół Bas Dolu - Sotto + Giù Le Baixo Сброс @@ -465,7 +465,7 @@ Menu umieszczania Menu de placement Menu umístění - Menù di collocamento + Menù di piazzamento Elhelyezési menü Menu de posicionamento Меню установки @@ -499,12 +499,12 @@ Rozbrajanie ładunku... Désamorçage de l'explosif... Zneškodňuji Výbušninu... - Esposivo in fase di disattivazione... + Disinnescando l'Esplosivo... Robbanóanyag hatástalanítása... Desarmando Explosivo... Обезвреживание... 爆発物を無力化しています・・・ - 폭발물 해체중... + 폭발물 해체 중... 正在拆除爆炸物... 炸彈拆除中... Patlayıcı Imha Ediliyor... @@ -516,7 +516,7 @@ Czasomierz Minuteur Časovač - Cronometro + Spoletta a tempo Időzítő Timer Таймер @@ -537,7 +537,7 @@ Idő: %1m %2s Tempo: %1m %2s Время: %1m %2c - 設定時間: %1分 %2秒 + タイマー: %1分 %2秒 시간: %1분 %2초 时间:%1分%2秒 時間: %1分%2秒 @@ -550,11 +550,11 @@ Ustaw czas Valider la durée Nastavit čas - Modifica il conto alla rovescia + Imposta tempo della spoletta Idő beállítása Configurar Tempo Установить время - 時間を設定 + タイマーを設定 시간 설정 设定时间 設定時間 @@ -567,7 +567,7 @@ Wybierz zapalnik Sélectionner un déclencheur Zvolit detonátor - Seleziona un attivatore + Seleziona la spoletta Gyújtóeszköz kiválasztása Selecionar um Gatilho Выберите детонатор @@ -652,7 +652,7 @@ Keine Auslöser für %1 vorhanden Pas de déclencheur disponible pour %1. Žádný detonátor k dispozici pro %1 - Nessun attivatore disponibile per %1 + Nessuna spoletta disponibile per %1 Nincs elérhető gyújtóeszköz ide: %1 Nenhum gatilho disponível para %1 Нет доступных взрывателей для %1 @@ -685,7 +685,7 @@ Magnetfeldsensor (Bodenangriff) Capteur magnétique (par le bas) Magnetický Senzor (Výbuch ze spoda) - Sensore Magnetico di Prossimità (attacco inferiore) + Sensore Magnetico di Prossimità (attacco dal basso) Mágneses mező érzékelő (Bottom Attack) Influência magnética (ataque inferior) Магнитный сенсор (детонация вверх) @@ -738,7 +738,7 @@ Usado para detonar remotamente o explosivo quando solto. Используется для дистанционного подрыва, после смерти оператора. Usato per attivare a distanza esplosivi al momento del rilascio - 点火装置から遠隔から起爆したい時に使います。 + 放した時に爆発物を遠隔で起爆させるためのデッドマンスイッチ。 압력이 해제될때 원격으로 폭발시킵니다. 当放开按钮时,将会引爆炸弹。 當放開按鈕時, 將會引爆炸彈. @@ -789,7 +789,7 @@ Specialisták igénylése? Требуется специалист? Richiedi specialisti? - 特技兵を必須 + 専門兵特性を必須にするか? 전문가가 필요합니까? 需要专家? 需要專家? @@ -805,8 +805,8 @@ Seul un spécialiste peut désamorcer des explosifs. Szükséges-e egy specialista a robbanóanyagok hatástalanításához? Alapértelmezett: Nem Требуется ли специалист по минному делу для обезвреживания взрывчатки? По умолчанию: Нет - Richiedi specialisti esplosivi per disabilitare esplosivi? Default: No - 爆発物を無効化するには特技兵である必要かどうかを設定できます。標準: 無効化 + Richiedi specialisti esplosivi per disabilitare esplosivi? Predefinito: No + 爆発物を無効にするために爆発物専門兵の特性を必要としますか? デフォルト: 不要 폭발물을 해제하기 위해서는 전문가가 필요합니까? 기본설정: 아니요 需要爆破专业兵才能拆除爆炸物? 预设:否 需要炸彈專家才能拆除炸彈? 預設: 否 @@ -823,7 +823,7 @@ Nem-specialisták büntetése? Штраф не-специалистам? Punisci non-specialisti? - 非特技兵へ足かせ + 非専門兵にペナルティを与える? 비전문가에게 불이익을 줍니까? 惩罚非专业人士? 折磨非專業人員? @@ -838,9 +838,9 @@ Augmente le temps nécessaire au désamorçage pour les unités non spécialisées. Nem-specialisták esetén több ideig tartson a cselekvés befejezése? Alapértelmezett: Igen Увеличивать время завершения действий для не-специалистов? По умолчанию: Нет - Aumenta il tempo richiesto per completare azioni per non-specialisti? Default: Si - 非特技兵は動作完了までの時間を増加させますか? 標準: 有効化 - 비전문가가 폭발물을 해제시 더욱 많은 시간을 소요합니까? 기본설정: 예 + Aumenta il tempo richiesto per completare azioni per non-specialisti? Predefinito: Si + 専門兵以外がアクション完了するのに必要な時間を増加しますか? デフォルト: 有効 + 비전문가가 폭발물을 해제 시 더욱 많은 시간을 소요합니까? 기본설정: 예 增加非专业人员相关操作的时间? 预设:是 增加非專業人員相關操作的時間? 預設: 是 @@ -854,8 +854,8 @@ Explosion au désamorçage Robbanás hatástalanításkor? Взрыв при разминировании? - Fai esplodere quando disarmato? - 解除中に爆発 + Detona se disarmati? + 解除中に爆発するか? 해제 시 폭발합니까? 拆除时引爆? 拆除時引爆? @@ -870,8 +870,8 @@ Certains explosifs exploseront durant le désamorçage. Valeur par défaut : activé. Meghatározott robbanóanyagok felrobbanjanak-e hatástalanításkor? Alapértelmezett: Igen Разрешить определенным взрывным устройствам взрываться при разминировании? По умолчанию: Да - Abilita alcuni esplosivi per esplosione al disarmo? Default: Si - 特定の爆発物を解除中に爆発させるかどうかを設定できます。? 標準: 有効化 + Permettere ad alcuni esplosivi di esplodere quando si tenta il disinnesco? Predefinito: Si + 特定の爆発物を解除中に爆発可能にしますか? デフォルト: 有効 특정 폭발물이 해제 시 폭발하게 합니까? 기본설정: 예 启用后,某些爆炸物会在拆除时引爆? 预设:是 啟用後, 某些炸彈會在拆除時引爆? 預設: 是 @@ -887,7 +887,7 @@ Этот модуль управляет настройками, связанными со взрывными устройствами Este módulo ajusta las configuraciones relacionadas con explosivos. Questo modulo cambia le impostazioni relative agli esplosivi - モジュールを調節し爆発物に設定を反映させます。 + このモジュールは爆発物に関する設定を調整します。 이 모듈은 폭발물에 관한 설정을 수정할 수 있게합니다. 此模块用来调整炸药的相关设定 此模塊用來調整炸藥的相關設定 @@ -898,7 +898,7 @@ M6-SLAM-Mine (Bodenangriff) Mina M6 SLAM (atak od dołu) Mina M6 SLAM (Ataque Inferior) - Mina M6 SLAM (base) + Mina M6 SLAM (Da Sotto) M6 SLAM (Útok zespoda) Mina M6 SLAM (Ataque Inferior) Мина M6 SLAM (направлена вверх) @@ -913,7 +913,7 @@ M6-SLAM-Mine (Seitenangriff) Mina M6 SLAM (atak od boku) Mina M6 SLAM (Ataque Lateral) - Mina M6 SLAM (Laterale) + Mina M6 SLAM (Dal Lato) M6 SLAM (Útok do strany) Mina M6 SLAM (Ataque Lateral) Мина M6 SLAM (направлена вбок) @@ -928,12 +928,12 @@ Große USBV (Stadt, Druckplatte) Duży IED (miejski, płyta naciskowa) IED Grande (Urbano, Placa de presión) - IED grande (urbano, a pressione) + IED grande (Urbano, a pressione) IED, Velké (Městské, Nášlapné) IED Grande (Urbano, Placa de pressão) Большое СВУ (городское, нажимного действия) 大きな IED (市街地用、圧力感知) - 대형 급조폭발물 (시가지, 압력식) + 급조폭발물 (대형, 시가지, 압력식) 大型 IED(地表上,压力盘) 大型簡易爆炸裝置 (地表上, 壓力盤) @@ -943,12 +943,12 @@ Große USBV (Eingegraben, Druckplatte) Duży IED (zakopany, płyta naciskowa) IED Grande (Enterrado, Placa de presión) - IED grande (interrato, a pressione) + IED grande (Interrato, a pressione) IED, Velké (Zakopané, Nášlapné) IED Grande (Enterrado, Placa de pressão) Большое СВУ (закопанное, нажимного действия) 大きな IED (埋め込み型、圧力感知) - 대형 급조폭발물 (묻힘, 압력식) + 급조폭발물 (대형, 묻힘, 압력식) 大型 IED(地表下,压力盘) 大型簡易爆炸裝置 (地表下, 壓力盤) @@ -958,12 +958,12 @@ Kleine USBV (Stadt, Druckplatte) Mały IED (miejski, płyta naciskowa) IED Pequeño (Urbano, Placa de presión) - IED piccolo (urbano, a pressione) + IED piccolo (Urbano, a pressione) IED, Malé (Městské, Nášlapné) IED Pequeno(Urbano, Placa de pressão) Малое СВУ (городское, нажимного действия) 小さな IED (市街地用、圧力感知) - 소형 급조폭발물 (시가지, 압력식) + 급조폭발물 (소형, 시가지, 압력식) 小型 IED(地表上,压力盘) 小型簡易爆炸裝置 (地表上, 壓力盤) @@ -973,12 +973,12 @@ Kleine USBV (Eingegraben, Druckplatte) Mały IED (zakopany, płyta naciskowa) IED Pequeño (Enterrado, Placa de presión) - IED piccolo (interrato, a pressione) + IED piccolo (Interrato, a pressione) IED, Malé (Zakopané, Nášlapné) IED Pequeno (Enterrado, Placa de pressão) Малое СВУ (закопанное, нажимного действия) 小さな IED (埋め込み型、圧力感知) - 소형 급조폭발물 (묻힘, 압력식) + 급조폭발물 (소형, 묻힘, 압력식) 小型 IED(地表下,压力盘) 小型簡易爆炸裝置 (地表下, 壓力盤) @@ -991,10 +991,10 @@ Podłącz do %1 Connecter %1 Csatlakozás %1 - Collega a %1 + Collega a %1 Conectar à %1 %1 へ接続 - %1에 연결중 + %1에 연결 중 连接到%1 連接到%1 Bağlandı %1 @@ -1002,12 +1002,12 @@ Tripwire Flare Сигнальная растяжка - 仕掛け型照明地雷 + 仕掛け線照明地雷 Flara na linkę Stolperdraht-Leuchtrakete 조명지뢰 Fusée éclairante avec fil piège - Cavo d'innesco + Bengala a filo d'inciampo 绊线信号弹 絆線閃光地雷 Tripwire (Sinalizador) @@ -1017,12 +1017,12 @@ Type: Tripwire flare - Ignites a non-lethal flare when triggered.<br />Rounds: 1<br />Used on: Ground Тип: Сигнальная растяжка - При срабатывании выпускает несмертельную сигнальную вспышку.<br />Зарядов: 1<br />Используется на: Земле - 種類: 仕掛け型照明地雷 - 発動したとき、非致死性の照明を発炎します。<br />装填数: 1<br />次で使用: 地表 + 種類: 仕掛け線照明地雷 - 発動したとき、非致死性の照明を発炎します。<br />装填数: 1<br />次で使用: 地表 Typ: Flara na linkę - Wystrzeliwuje nieszkodliwą flarę przy nadepnięciu linki.<br/>Pociski: 1<br/>Używane na: ziemia Typ: Stolperdraht-Leuchtrakete - Schießt bei Auslösung eine nicht-tödliche Leuchtrakete ab.<br />Ladungen: 1<br />Benutzt auf: Boden 종류: 조명지뢰 - 작동시 무해한 조명을 사출합니다.<br />장탄수: 1<br />사용처: 지면 Type : Fusée éclairante avec fil piège - Allume une fusée éclairante lorsque déclenchée.<br />Coups : 1<br />Utilisé sur : le sol - Tipo: Cavo d'innesco - Sfocio un abbaglio non letale quanto attivato. <br />Rimanenti: 1<br />Usato: A terra + Tipo: Bengala a cavo d'innesco - Accende un bengala abbagliante non letale quando innescato. <br />Rimanenti: 1<br />Usato: A terra 类型:绊线信号弹—触发后产生非致命性的强光。<br />发数:1<br />使用于:地面 類型: 絆線閃光地雷 - 觸發後產生非致命性的強光.<br />發數: 1<br />使用於: 地面 Tipo: Flare de Tripwire - Acende um sinalizador não letal quando acionado.<br/>Usos: 1<br/>Usado em: Chão @@ -1064,7 +1064,7 @@ Is EOD Kampfmittelbeseitigung - EOD に + EODにする Spécialiste en explosifs 是EOD 爆破专家 @@ -1074,11 +1074,12 @@ Сапёр ¿Es EOD? 폭발물 처리반 + É EOD Controls whether the unit is an explosive specialist. Steuert, ob die Einheit ein Sprengstoffspezialist ist. - ユニットが何であれ爆発物専門家にします。 + ユニットが爆発物専門兵であるかどうかを定義します。 Définit si l'unité est un spécialiste en explosifs. 控制該單位是否是爆裂物處置專家 控制该单位是否是爆破专家 @@ -1088,39 +1089,46 @@ Определяет, является ли юнит сапёром. Controla si la unidad es un especialista en explosivos 유닛이 폭발물 처리반인지 결정합니다 + Controla se a unidade é um especialista em explosivos. Minimum Time Мин. время Durée minimale - 最短時間 + タイマーの最短時間 Tiempo mínimo Minimalny czas Minimale Zeit + Tempo Minimo 最短时间 최소 시간 + Tempo Mínimo Maximum Time Макс. время Durée maximale - 最長時間 + タイマーの最長時間 Tiempo máximo Maksymalny czas Maximale Zeit + Tempo Massimo 最长时间 최대 시간 + Tempo Máximo Default Time Стандартное время Durée par défaut - 標準時間 + タイマーの標準時間 Tiempo por defecto Domyślny czas Standardmäßige Zeit + Tempo Predefinito 默认时间 기본 시간 + Tempo Padrão Minimum time value (in seconds) for the explosive timer. @@ -1130,8 +1138,10 @@ Tiempo mínimo (en segundos) para el temporizador del explosivo. Minimalna wartość czasomierza dla ładunku (w sekundach). Minimale Zeit (in Sekunden) für den Zeitzünder. + Tempo minimo (in secondi) per le spolette a tempo. 定时爆炸的最短时间(单位:秒) 초 단위로, 폭발 타이머의 최소 시간을 정합니다 + Tempo mínimo (em segundos) para o temporizador do explosivo. Maximum time value (in seconds) for the explosive timer. @@ -1141,8 +1151,10 @@ Tiempo máximo (en segundos) para el temporizador del explosivo. Maksymalna wartość czasomierza dla ładunku (w sekundach). Maximale Zeit (in Sekunden) für den Zeitzünder. + Tempo massimo (in secondi) per le spolette a tempo. 定时爆炸的最长时间(单位:秒) 초 단위로, 폭발 타이머의 최대 시간을 정합니다 + Tempo máximo (em segundos) para o temporizador do explosivo. Default time value (in seconds) for the explosive timer. @@ -1152,8 +1164,10 @@ Tiempo por defecto (en segundos) para el temporizador del explosivo. Domyślna wartość czasomierza dla ładunku (w sekundach). Standardmäßige Zeit (in Sekunden) für den Zeitzünder. + Tempo predefinito (in secondi) per le spolette a tempo. 定时爆炸的默认时间(单位:秒) 초 단위로, 기본 폭발 타이머 시간을 정합니다 + Tempo padrão (em segundos) para o temporizador do explosivo. diff --git a/addons/fastroping/CfgVehicles.hpp b/addons/fastroping/CfgVehicles.hpp index 710f70f94e..ef2483e05b 100644 --- a/addons/fastroping/CfgVehicles.hpp +++ b/addons/fastroping/CfgVehicles.hpp @@ -83,8 +83,8 @@ class CfgVehicles { }; class ACE_fastRope { displayName = CSTRING(Interaction_fastRope); - condition = QUOTE([ARR_2(_player, _target)] call FUNC(canFastRope)); - statement = QUOTE([ARR_2(_player, _target)] call FUNC(fastRope)); + condition = QUOTE([ARR_2(_player,_target)] call FUNC(canFastRope)); + statement = QUOTE([ARR_2(_player,_target)] call FUNC(fastRope)); }; }; }; diff --git a/addons/fastroping/XEH_preInit.sqf b/addons/fastroping/XEH_preInit.sqf index 6d6065b323..b750275167 100644 --- a/addons/fastroping/XEH_preInit.sqf +++ b/addons/fastroping/XEH_preInit.sqf @@ -6,7 +6,7 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" if (isServer) then { ["Helicopter", "Deleted", LINKFUNC(unequipFRIES)] call CBA_fnc_addClassEventHandler; diff --git a/addons/fastroping/initSettings.sqf b/addons/fastroping/initSettings.inc.sqf similarity index 100% rename from addons/fastroping/initSettings.sqf rename to addons/fastroping/initSettings.inc.sqf diff --git a/addons/fastroping/stringtable.xml b/addons/fastroping/stringtable.xml index 0ea0e8aafb..ef613c633e 100644 --- a/addons/fastroping/stringtable.xml +++ b/addons/fastroping/stringtable.xml @@ -22,7 +22,7 @@ Wyposaża kompatybilne helikoptery w zestaw Fast Rope Insertion Extraction System. Équipe les hélicoptères compatibles avec un FRIES (Fast Rope Insertion Extraction System). Equipar helicoptero compatible con un Sistema de Inserción/Extracción Rápida por Cuerda. - Equipagga l'elicottero compatibile con il Fast Rope Insertion Extraction System + Equipagga elicotteri compatibili con il Fast Rope Insertion Extraction System Vybavit kompatibilní vrtulníky systémem Fast Rope Insertion Extraction (FRIES). Equipa um helicóptero compatível com o Fast Rope Insertion Exctraction System. Снаряжает совместимые вертолеты оборудованием для спуска десанта по канатам. @@ -41,7 +41,7 @@ Připravit systém slaňování Prepara sistema de descida rápida Подготовить канаты - ファスト ロープのシステムを準備 + ファストロープ システムを準備 패스트로프 준비 准备快速绳降系统 準備快速繩降系統 @@ -51,7 +51,7 @@ Stow fast roping system Verstaue "Fast Roping"-System Arrotola le corde - ファスト ロープのシステムを収容 + ファストロープ システムを収容 收起快速繩降系統 收起快速绳降系统 패스트로프 시스템 보관 @@ -89,7 +89,7 @@ SLANIT Descida rápida Спуститься по канату - ファスト ロープをする + ファストロープする 패스트로프 快速绳降 快速繩降 @@ -144,11 +144,11 @@ LET UNITS FAST ROPE EINHEITEN ABSEILEN LASSEN - SCENDI DALLE CORDE + FAI SCENDERE CON FASTROPE Equipa o helicóptero selecionado com o Fast Rope Insertion Extraction System LAISSER LES UNITÉS UTILISER LA CORDE ДЕСАНТИРОВАНИЕ ПО КАНАТУ - ユニットへファスト ロープをさせる + ユニットへファストロープをさせる ZJAZD NA LINACH 让单位快速绳降 讓單位快速繩降 @@ -162,8 +162,8 @@ Déployer les cordes de 3 m Wysuń linę o długości 3 m. Выпустить 3 м канат - Jogar cordar (3m) - Dispiegamento corde 3m + Jogar cordas (3m) + Dispiega corde da 3m Připravit 3m lana 3m halat sal Desplegar cuerdas de 3m @@ -178,8 +178,8 @@ Déployer les cordes de 6 m Wysuń linę o długości 6 m. Выпустить 6 м канат - Jogar cordar (6m) - Dispiegamento corde 6m + Jogar cordas (6m) + Dispiega corde da 6m Připravit 6m lana 6m halat sal Desplegar cuerdas de 6m @@ -195,10 +195,10 @@ 12m ロープを展開 Wysuń linę o długości 12 m. Выпустить 12 м канат - Jogar cordar (12m) + Jogar cordas (12m) 部屬12公尺長之繩索 部署12米长的绳索 - Dispiegamento corde 12m + Dispiega corde da 12m Připravit 12m lana 12m halat sal Desplegar cuerdas de 12m @@ -211,10 +211,10 @@ 15m ロープを展開 Wysuń linę o długości 15 m. Выпустить 15 м канат - Jogar cordar (15m) + Jogar cordas (15m) 部屬15公尺長之繩索 部署15米长的绳索 - Dispiegamento corde 15m + Dispiega corde da 15m Připravit 15m lana 15m halat sal Desplegar cuerdas de 15m @@ -227,10 +227,10 @@ 18m ロープを展開 Wysuń linę o długości 18 m. Выпустить 18 м канат - Jogar cordar (18m) + Jogar cordas (18m) 部屬18公尺長之繩索 部署18米长的绳索 - Dispiegamento corde 18m + Dispiega corde da 18m Připravit 18m lana 18m halat sal Desplegar cuerdas de 18m @@ -243,10 +243,10 @@ 27m ロープを展開 Wysuń linę o długości 27 m. Выпустить 27 м канат - Jogar cordar (27m) + Jogar cordas (27m) 部屬27公尺長之繩索 部署27米长的绳索 - Dispiegamento corde 27m + Dispiega corde da 27m Připravit 27m lana 27m halat sal Desplegar cuerdas de 27m @@ -259,10 +259,10 @@ 36m ロープを展開 Wysuń linę o długości 36 m. Выпустить 36 м канат - Jogar cordar (36m) + Jogar cordas (36m) 部屬36公尺長之繩索 部署36米长的绳索 - Dispiegamento corde 36m + Dispiega corde da 36m Připravit 36m lana 36m halat sal Desplegar cuerdas de 36m @@ -289,13 +289,14 @@ Hélicordage 快速繩降 快速索降 - ファスト ロープ + ファストロープ Cuerdas rápidas Zjazd na linach Halatla Kayma Slaňování Спуск по канату Schnelles-Abseilen + Fast Rope 패스트로프 @@ -319,14 +320,20 @@ Automatycznie Zamontuj FRIES FRIESの自動装備 FRIES automatisch ausrüsten + Auto-Aggiungi FRIES FRIES 로프 자동 장착 + Equipement automatique FRIES + Auto-equipar FRIES Automatically add FRIES to helicopters that support them. Automatycznie dodawaj FRIES do śmigłowców które je wspierają. FRIESをサポートするヘリコプターに自動的にFRIESを追加します。 FRIES automatisch Helikoptern hinzufügen, die es unterstützen + Aggiunge il sistema FRIES in automatico su elicotteri compatibili. 로프를 지원하는 헬기에 자동으로 FRIES 로프를 추가합니다. + Ajoute automatiquement des FRIES aux hélicoptères qui les supportent. + Adiciona automaticamente FRIES a helicópteros que os suportam. diff --git a/addons/fcs/ACE_UI.hpp b/addons/fcs/ACE_UI.hpp index c285248b83..98f4073122 100644 --- a/addons/fcs/ACE_UI.hpp +++ b/addons/fcs/ACE_UI.hpp @@ -1,7 +1,7 @@ class ACE_UI { class gunnerZeroing { class conditions { - ADDON = QUOTE(getNumber ([ARR_2(vehicle ACE_player, ACE_player call CBA_fnc_turretPath)] call CBA_fnc_getTurret >> 'ace_fcs_enabled') != 1); + ADDON = QUOTE(getNumber ([ARR_2(vehicle ACE_player,ACE_player call CBA_fnc_turretPath)] call CBA_fnc_getTurret >> 'ace_fcs_enabled') != 1); }; }; }; diff --git a/addons/fcs/CfgVehicles.hpp b/addons/fcs/CfgVehicles.hpp index 8461fcc05a..a8b9660393 100644 --- a/addons/fcs/CfgVehicles.hpp +++ b/addons/fcs/CfgVehicles.hpp @@ -27,7 +27,7 @@ class CfgVehicles { class ResetFCS { displayName = CSTRING(ResetFCS); condition = QUOTE(_player call FUNC(canResetFCS)); - statement = QUOTE([ARR_2(vehicle _player,[_player] call DEFUNC(common,getTurretIndex))] call DFUNC(reset);); + statement = QUOTE([ARR_2(vehicle _player,[_player] call DEFUNC(common,getTurretIndex))] call DFUNC(reset)); showDisabled = 0; icon = ""; }; @@ -39,7 +39,7 @@ class CfgVehicles { class ResetFCS { displayName = CSTRING(ResetFCS); condition = QUOTE(_player call FUNC(canResetFCS)); - statement = QUOTE([ARR_2(vehicle _player,[_player] call DEFUNC(common,getTurretIndex))] call DFUNC(reset);); + statement = QUOTE([ARR_2(vehicle _player,[_player] call DEFUNC(common,getTurretIndex))] call DFUNC(reset)); showDisabled = 0; icon = ""; }; diff --git a/addons/fcs/XEH_postInit.sqf b/addons/fcs/XEH_postInit.sqf index 7693fecb6c..a63b03c5d9 100644 --- a/addons/fcs/XEH_postInit.sqf +++ b/addons/fcs/XEH_postInit.sqf @@ -6,7 +6,7 @@ GVAR(position) = [0,0,0]; if (!hasInterface) exitWith {}; -#include "initKeybinds.sqf" +#include "initKeybinds.inc.sqf" ["ace_infoDisplayChanged", { if (!isNull ((_this select 0) displayCtrl 1713151)) then { diff --git a/addons/fcs/initKeybinds.sqf b/addons/fcs/initKeybinds.inc.sqf similarity index 100% rename from addons/fcs/initKeybinds.sqf rename to addons/fcs/initKeybinds.inc.sqf diff --git a/addons/fcs/stringtable.xml b/addons/fcs/stringtable.xml index 91c180545a..dd0c20922f 100644 --- a/addons/fcs/stringtable.xml +++ b/addons/fcs/stringtable.xml @@ -10,7 +10,7 @@ Iluminar objetivo / Medir distancia Подсветить цель / Замерить расстояние Célpont lézerezése / Távolság Bemérése - Misura la distanza + Telemetra bersaglio / Rileva distanza Marcar com laser / Medir Distância レーザー ターゲット / 計測距離 목표까지 거리를 레이저로 취득 @@ -27,7 +27,7 @@ Выставлено на Nullázási táv Fixado em - Azzeramento a + Azzerato a 次にゼロイン 영점 조절 已归零到 @@ -42,7 +42,7 @@ SCT - Augmenter la portée FCS tartomány állítása (Fel) Ajustar distância do FCS (Acima) - Aumentare la distanza dell'FCS + Aumenta la portata dell'FCS Диапазон СУО (выше) FCS による距離を調節 (上げ) 사통장치 거리 조정 (위로) @@ -58,7 +58,7 @@ SCT - Réduire la portée FCS tartomány állítása (Le) Ajustar distância do FCS (Abaixo) - Ridurre la distanza dell'FCS + Riduci la portata dell'FCS Диапазон СУО (ниже) FCS による距離を調節 (下げ) 사통장치 거리 조정 (아래로) diff --git a/addons/field_rations/RscTitles.hpp b/addons/field_rations/RscTitles.hpp index 241b5b0e1f..e156766ac7 100644 --- a/addons/field_rations/RscTitles.hpp +++ b/addons/field_rations/RscTitles.hpp @@ -12,15 +12,15 @@ class RscTitles { class controls { class Thirst: RscPicture { idc = IDC_COLORED_HUD_THIRST; - x = QUOTE(profileNamespace getVariable [ARR_2(QUOTE(QUOTE(TRIPLES(IGUI,XGVAR(grid),X))), safeZoneX + safeZoneW - 4.2 * GUI_GRID_W)]); - y = QUOTE(profileNamespace getVariable [ARR_2(QUOTE(QUOTE(TRIPLES(IGUI,XGVAR(grid),Y))), safeZoneY + safeZoneH - 2.2 * GUI_GRID_H)]); + x = QUOTE(profileNamespace getVariable [ARR_2(QUOTE(QUOTE(TRIPLES(IGUI,XGVAR(grid),X))),safeZoneX + safeZoneW - 4.2 * GUI_GRID_W)]); + y = QUOTE(profileNamespace getVariable [ARR_2(QUOTE(QUOTE(TRIPLES(IGUI,XGVAR(grid),Y))),safeZoneY + safeZoneH - 2.2 * GUI_GRID_H)]); w = QUOTE(2 * GUI_GRID_W); h = QUOTE(2 * GUI_GRID_H); text = QPATHTOF(ui\icon_hud_thirststatus.paa); }; class Hunger: Thirst { idc = IDC_COLORED_HUD_HUNGER; - x = QUOTE(2 * GUI_GRID_W + (profileNamespace getVariable [ARR_2(QUOTE(QUOTE(TRIPLES(IGUI,XGVAR(grid),X))), safeZoneX + safeZoneW - 4.2 * GUI_GRID_W)])); + x = QUOTE(2 * GUI_GRID_W + (profileNamespace getVariable [ARR_2(QUOTE(QUOTE(TRIPLES(IGUI,XGVAR(grid),X))),safeZoneX + safeZoneW - 4.2 * GUI_GRID_W)])); text = QPATHTOF(ui\icon_hud_hungerstatus.paa); }; }; @@ -35,23 +35,23 @@ class RscTitles { class controlsBackground { class Thirst: RscPicture { idc = -1; - x = QUOTE(profileNamespace getVariable [ARR_2(QUOTE(QUOTE(TRIPLES(IGUI,XGVAR(grid),X))), safeZoneX + safeZoneW - 4.2 * GUI_GRID_W)]); - y = QUOTE(profileNamespace getVariable [ARR_2(QUOTE(QUOTE(TRIPLES(IGUI,XGVAR(grid),Y))), safeZoneY + safeZoneH - 2.2 * GUI_GRID_H)]); + x = QUOTE(profileNamespace getVariable [ARR_2(QUOTE(QUOTE(TRIPLES(IGUI,XGVAR(grid),X))),safeZoneX + safeZoneW - 4.2 * GUI_GRID_W)]); + y = QUOTE(profileNamespace getVariable [ARR_2(QUOTE(QUOTE(TRIPLES(IGUI,XGVAR(grid),Y))),safeZoneY + safeZoneH - 2.2 * GUI_GRID_H)]); w = QUOTE(2 * GUI_GRID_W); h = QUOTE(2 * GUI_GRID_H); text = QPATHTOF(ui\icon_hud_thirststatus.paa); colorText[] = {1, 1, 1, 0.2}; }; class Hunger: Thirst { - x = QUOTE(2 * GUI_GRID_W + (profileNamespace getVariable [ARR_2(QUOTE(QUOTE(TRIPLES(IGUI,XGVAR(grid),X))), safeZoneX + safeZoneW - 4.2 * GUI_GRID_W)])); + x = QUOTE(2 * GUI_GRID_W + (profileNamespace getVariable [ARR_2(QUOTE(QUOTE(TRIPLES(IGUI,XGVAR(grid),X))),safeZoneX + safeZoneW - 4.2 * GUI_GRID_W)])); text = QPATHTOF(ui\icon_hud_hungerstatus.paa); }; }; class controls { class ThirstGroup: RscControlsGroupNoScrollbars { idc = IDC_DRAINING_HUD_THIRST_GROUP; - x = QUOTE(profileNamespace getVariable [ARR_2(QUOTE(QUOTE(TRIPLES(IGUI,XGVAR(grid),X))), safeZoneX + safeZoneW - 4.2 * GUI_GRID_W)]); - y = QUOTE(profileNamespace getVariable [ARR_2(QUOTE(QUOTE(TRIPLES(IGUI,XGVAR(grid),Y))), safeZoneY + safeZoneH - 2.2 * GUI_GRID_H)]); + x = QUOTE(profileNamespace getVariable [ARR_2(QUOTE(QUOTE(TRIPLES(IGUI,XGVAR(grid),X))),safeZoneX + safeZoneW - 4.2 * GUI_GRID_W)]); + y = QUOTE(profileNamespace getVariable [ARR_2(QUOTE(QUOTE(TRIPLES(IGUI,XGVAR(grid),Y))),safeZoneY + safeZoneH - 2.2 * GUI_GRID_H)]); w = QUOTE(2 * GUI_GRID_W); h = QUOTE(2 * GUI_GRID_H); class controls { @@ -67,7 +67,7 @@ class RscTitles { }; class HungerGroup: ThirstGroup { idc = IDC_DRAINING_HUD_HUNGER_GROUP; - x = QUOTE(2 * GUI_GRID_W + (profileNamespace getVariable [ARR_2(QUOTE(QUOTE(TRIPLES(IGUI,XGVAR(grid),X))), safeZoneX + safeZoneW - 4.2 * GUI_GRID_W)])); + x = QUOTE(2 * GUI_GRID_W + (profileNamespace getVariable [ARR_2(QUOTE(QUOTE(TRIPLES(IGUI,XGVAR(grid),X))),safeZoneX + safeZoneW - 4.2 * GUI_GRID_W)])); class controls: controls { class Icon: Icon { idc = IDC_DRAINING_HUD_HUNGER_ICON; diff --git a/addons/field_rations/XEH_preInit.sqf b/addons/field_rations/XEH_preInit.sqf index a54da0834a..e74e4086ca 100644 --- a/addons/field_rations/XEH_preInit.sqf +++ b/addons/field_rations/XEH_preInit.sqf @@ -6,7 +6,7 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" #define ARSENAL_CATEGORY_ICON QPATHTOF(ui\icon_survival.paa) diff --git a/addons/field_rations/functions/fnc_canDrinkFromSource.sqf b/addons/field_rations/functions/fnc_canDrinkFromSource.sqf index 78b08fb231..c970214aeb 100644 --- a/addons/field_rations/functions/fnc_canDrinkFromSource.sqf +++ b/addons/field_rations/functions/fnc_canDrinkFromSource.sqf @@ -11,7 +11,7 @@ * Can Drink From Source * * Example: - * [_player, _source] call ace_field_rations_canDrinkFromSource + * [_player, _source] call ace_field_rations_fnc_canDrinkFromSource * * Public: No */ diff --git a/addons/field_rations/functions/fnc_drinkFromSource.sqf b/addons/field_rations/functions/fnc_drinkFromSource.sqf index 3d76d4ff62..cf0d18018b 100644 --- a/addons/field_rations/functions/fnc_drinkFromSource.sqf +++ b/addons/field_rations/functions/fnc_drinkFromSource.sqf @@ -11,7 +11,7 @@ * None * * Example: - * [_player, _source] call ace_field_rations_drinkFromSource + * [_player, _source] call ace_field_rations_fnc_drinkFromSource * * Public: No */ diff --git a/addons/field_rations/functions/fnc_getDrinkAnimation.sqf b/addons/field_rations/functions/fnc_getDrinkAnimation.sqf index 2b4ce41bd3..3d577ef7f9 100644 --- a/addons/field_rations/functions/fnc_getDrinkAnimation.sqf +++ b/addons/field_rations/functions/fnc_getDrinkAnimation.sqf @@ -11,7 +11,7 @@ * Animation * * Example: - * [_player, _source] call ace_field_rations_getDrinkAnimation + * [_player, _source] call ace_field_rations_fnc_getDrinkAnimation * * Public: No */ diff --git a/addons/field_rations/functions/fnc_scanFieldRations.sqf b/addons/field_rations/functions/fnc_scanFieldRations.sqf index f252071df4..c5f45d4d4c 100644 --- a/addons/field_rations/functions/fnc_scanFieldRations.sqf +++ b/addons/field_rations/functions/fnc_scanFieldRations.sqf @@ -10,7 +10,7 @@ * None * * Example: - * call acex_field_rations_fnc_scanFieldRations + * call ace_field_rations_fnc_scanFieldRations * * Public: No */ diff --git a/addons/field_rations/initSettings.sqf b/addons/field_rations/initSettings.inc.sqf similarity index 100% rename from addons/field_rations/initSettings.sqf rename to addons/field_rations/initSettings.inc.sqf diff --git a/addons/field_rations/stringtable.xml b/addons/field_rations/stringtable.xml index 34c7fa2240..8a513a2926 100644 --- a/addons/field_rations/stringtable.xml +++ b/addons/field_rations/stringtable.xml @@ -9,7 +9,7 @@ ACE Rations sur le terrain ACE Feld Rationen ACE Terepi adagok - ACE Razioni di campo + ACE Razioni da Campo ACE フィールド レーション ACE 전투식량 ACE Racje polowe @@ -21,6 +21,7 @@ ACE Field Rations HUD ACE Feldrationen HUD + ACE Razioni da Campo HUD ACE 戰地口糧界面 ACE 野战军粮界面 ACE フィールド レーション HUD @@ -29,6 +30,7 @@ ACE Gıda Göstergesi ACE 전투식량 HUD ACE HUD de Raciones de campo + ACE HUD de Rações de Campo Indicates current hunger and thirst status. @@ -38,8 +40,8 @@ Indique l'état actuel de la faim et de la soif. Zeigt den aktuellen Hunger- und Durststatus an. Jelzi az éhínség és a szomjúság állapotát. - Indica lo stato attuale di fame e sete. - 現在の空腹感と渇きの状態を示します。 + Mostra lo stato attuale di fame e sete. + 現在の喉の渇きと空腹度の状態を示します。 굶주림과 갈증 정도를 표시합니다. Wskazuje bieżący status głodu i pragnienia. Indica o status atual de fome e sede. @@ -67,6 +69,7 @@ Eat/Drink Essen/Trinken + Mangia/Bevi Jeść/Pić Есть/Пить Yeme / Içme @@ -74,6 +77,7 @@ 吃/喝 먹기/마시기 Comer/Beber + Comer/Beber Enable/Disable Field Rations @@ -83,7 +87,7 @@ Activer / désactiver les rations de champ Feldrationen aktivieren / deaktivieren Terepi adagok engedélyezése / letiltása - Abilita / disabilita le razioni di campo + Abilita / disabilita le razioni da campo フィールド レーションを有効/無効化します 전투식량 활성화/비활성화 Włącz / wyłącz racje polowe @@ -101,7 +105,7 @@ Zeit ohne Wasser Víz nélküli idő Tempo senza acqua - 水なしの時間 + 水分無しでの耐久時間 물 없이 생존 가능 시간 Czas bez wody Tempo sem água @@ -117,8 +121,8 @@ Combien de temps une unité devrait-elle pouvoir se passer d'eau (heures)? Wie lange sollte eine Einheit ohne Wasser auskommen (Stunden)? Mennyi ideig kell egy egység víz nélkül (óra) - Mennyi ideig kell egy egység víz nélkül (óra) - ユニットが水なしでどれくらい時間を過ごすことができるか (一時間単位) + Per quanto tempo ci si può muovere senza acqua (ore) + ユニットが水分無しでどれくらいの時間耐えられるか (一時間単位) 물을 안 마시고 얼마나 생존할 수 있는지 정합니다 (시간) Jak długo jednostka powinna przetrwać bez wody (godziny) Quanto tempo uma unidade pode passar sem água (horas) @@ -135,7 +139,7 @@ Zeit ohne Essen Élelmiszer nélkül Tempo senza cibo - 食べ物なしの時間 + 食事抜きでの耐久時間 밥 없이 생존 가능 시간 Czas bez jedzenia Tempo sem comida @@ -151,8 +155,8 @@ Combien de temps une unité doit-elle pouvoir se passer de nourriture (heures)? Wie lange sollte eine Einheit ohne Essen gehen können (Stunden)? Mennyi ideig kell egy egység élni nélkül (óra) - Per quanto tempo un'unità dovrebbe essere in grado di andare senza cibo (ore) - ユニットが食糧なしでどれくらい時間を過ごすことができるか (一時間単位) + Per quanto tempo ci si può muovere senza cibo (ore) + ユニットが食事抜きでどれくらいの時間耐えられるか (一時間単位) 밥을 안 먹고 얼마나 생존할 수 있는지 정합니다 (시간) Jak długo jednostka powinna przetrwać bez jedzenia (godziny) Quanto tempo uma unidade pode ir sem alimentos (horas) @@ -163,133 +167,156 @@ Thirst Quenched Durst gestillt + Sete placata 止渴程度 解渴程度 - 乾きの満たし + 喉の渇き度の満たされ量 Утоление жажды Pragnienie zaspokojone Susuzluk Giderme Katsayısı 갈증 해소 Sed saciada + Sede saciada Coefficient for the amount of thirst quenched from drinking. Koeffizient für die Menge des Dursts, der durch Trinken gestillt wird. + Coefficiente che determina la quantità di sete placata bevendo. 從飲用中能夠攝取多少水份。 通过喝水能够补充多少水份。 - 飲むことによって得られる乾きの満たし量の係数を設定します + 水分補給によって満たされる喉の渇きの量を表す係数。 Коэффициент утоления жажды от питья Współczynnik ilości zaspokojnego pragnienia od picia Bir şey içince, susuzluğunun ne kadar giderileceğini belirler. 마심으로써 갈증이 얼마나 해소되는지를 정합니다 Coeficiente del saciamiento de sed por beber. + Coeficiente para a quantidade de sede saciada por beber. Hunger Satiated Hunger gesättigt + Fame placata 飽足感 饱腹感 - 満腹感 + 空腹度の満たされ量 Утоление голода Głód Zaspokojony Açlık Giderme Katsayısı 배부름 Hambre saciada + Fome saciada Coefficient for the amount of hunger satiated from eating. Koeffizient für die Menge des Hungers, der durch essen gesättigt wird. + Coefficiente che determina la quantità di fame placata mangiando. 從飲食中獲取多少飽食感。 通过饮食能够补充多少能量。 - 食べることによって得られる満腹感の量の係数を設定します + 食事によって満たされる空腹度の量を表す係数。 Коэффициент утоления голода от принятия пищи Współczynnik ilosci zaspokojnego głodu od jedzenia Bir şey yiyince, açlığın ne kadar giderileceğini belirler. 밥을 먹어서 배고픔이 얼마나 해결되는지를 정합니다 Coeficiente del saciamiento del hambre por comer. + Coeficiente para a quantidade de fome saciada por comer. Water Source Actions Действия с источником воды Akcje przy źrodle wody Su Içme Animasyonu - 水源動作 + 水源でのアクション Wasserquellen-Aktionen + Interazioni su sorgenti d'acqua 水源动作 물 근처 행동 Acciones para suministros de agua + Ações para suprimentos de água Controls what actions are available on water sources. Определяет какие действия будут доступны с источником воды. Kontroluje jakie akcje są dostępne przy źrodle wody. Su içerken hangi animasyonu yapacağını belirler - 水源で可能な動作を設定します。 + 水源で可能なアクションを設定します。 Bestimmt, welche Aktionen an Wasserquellen verfügbar sind. + Determina quali azioni sono disponibili presso sorgenti di acqua. 控制对水源可用的动作。 물가에서 어떤 행동을 취할지 정합니다 Controla qué acciones están disponibles para los suministros de agua. + Controla quais ações estão disponíveis para os suprimentos de água. Refill Only Только пополнить Tylko napełnij Sadece içeceği iç - 汲むだけ + 水汲みのみ Nur Befüllen + Solo riempimento 仅限取水 다시 채우기만 가능 Sólo rellenar + Apenas reabastecer Terrain Object Actions Действия с объектами ландшафта Akcje Objektu terenu Varsayılan Nesne Animasyonu - マップ オブジェクト動作 + 地形オブジェクトでのアクション Geländeobjekt-Aktionen + Interazioni su oggetti del terreno 地形物体动作 지형 물체 상호작용 Acciones sobre objetos del terreno + Ações para objetos do terreno Enables water source actions for terrain objects. Включает действия с источниками воды для объектов ландшафта. Umożliwia akcje przy źrodle wody na obiektach terenu. Varsayılan nesneler için animasyonu etkinleştir - マップに存在するオブジェクトを水源として動作するよう設定できます。 + 地形に存在するオブジェクトを水源として動作するよう設定できます。 Aktiviert Wasserquellen-Aktionen für Geländeobjekte. + Permette le interazioni da sorgenti d'acqua anche su oggetti del terreno. 为地形物体启用水源动作。 지형 물체에서 물을 얻는 게 가능해집니다. Habilitar acciones de suministros de agua para los objetos en el suelo. + Habilita ações para suprimentos de água para objetos do terreno. Affect Advanced Fatigue Beeinflusst die erweiterte Ausdauer + Influenza la Fatica Avanzata 與進階疲勞聯動 与进阶疲劳联动 - アドバンスド ファティーグへの影響 + アドバンスド疲労への影響 Влияние на продвинутую усталость Wpływ na zaawansowane zmęczenie Gelişmiş Yorgunluk 고급 피로도에 영향을 끼침 Afecta a la Fatiga Avanzada + Afeta a Fadiga Avançada Controls if thirst and hunger should affect ACE Advanced Fatigue. Bestimmt, ob Durst und Hunger ACE Erweiterte Ausdauer beeinflussen sollen. + Determina se fame e sete influenzano la Fatica Avanzata ACE. 是否讓飲食影響到ACE的進階疲勞。 是否让饮食影响到 ACE 的进阶疲劳。 - 喉の渇きと空腹感が ACE アドバンスド ファティーグへ与える影響を決定します + 喉の渇きと空腹度が ACE アドバンスド疲労へ与える影響を定義します。 Определяет, будет ли жажда и голод влиять на продвинутую усталость ACE. Kontroluje czy pragnienie i głód mają wpływ na zaawansowane zmęczenie ACE. Acıkınca veya susayınca kişinin yorulup yorulmayacağını belirler. 배고픔과 목마름이 고급 피로도에 영향을 끼칠지를 정합니다 Controla si la sed y el hambre afectan a la Fatiga Avanzada de ACE + Controla se a sede e a fome afetam a Fadiga Avançada do ACE. HUD Type HUD Typ + Tipo HUD 界面類型 界面类型 HUD タイプ @@ -298,10 +325,12 @@ HUD Tipi HUD 종류 Tipo de HUD + Tipo de HUD Selects which HUD style will be used. Wählt, welcher HUD Stil benutzt wird. + Seleziona lo stile utilizzato per l'HUD. 選擇妳想使用的界面類型。 选择你想使用的界面类型。 使用する HUD のタイプを選択できます @@ -310,10 +339,12 @@ Hangi HUD sitilini kullanılacağını seçer. 사용될 HUD 스타일을 고르십시오. Selecciona qué estilo de HUD será utilizado. + Seleciona qual estilo de HUD será usado. Colored Icons Farbige Icons + Icone colorate 顏色化圖示 彩色图标 色付きアイコン @@ -322,22 +353,26 @@ Renkli Ikonlar 색깔 아이콘 Iconos coloreados + Ícones coloridos Draining Icons Farblose Icons + Icone non colorate 增減化圖示 渐化图标 - ドレイン アイコン + レベルゲージアイコン Ubywające ikony Исчезающие иконки Içi Boşalan Ikonlar 빠지는 아이콘 Iconos de drenado + Ícones de drenagem HUD Show Level HUD zeigen Level + Livello Mostra HUD 界面顯示程度 界面显示程度 HUD 表示レベル @@ -346,18 +381,21 @@ HUD Gösterilme Seviyesi HUD 표시 Mostrar nivel en HUD + Mostrar nível no HUD Automatically show the HUD when either thirst or hunger are above this level. Zeigt automatisch das HUD an, sobald Durst oder Hunger über diesem Level sind. + Mostra le icone HUD in automatico quando fame o sete superano questo livello. 在飲食低於多少程度時顯示界面。 在饮食能量低于多少程度时显示界面。 - この値以上に空腹感か乾きを感じると自動的に HUD を表示します + この値以上に空腹度か喉の渇きを感じると自動的に HUD を表示します Automatycznie pokaż HUD kiedy pragnienie albo głód przekroczy ten poziom Автоматически отображает иконки при достижении определенных уровней голода и жажды. Susuzluk veya açlık belli bir seviyenin altına inince otomatik olarak HUD u göster. 정한 퍼센트 이하로 내려가면 HUD가 나타나게 합니다. Mostrar automáticamente el HUD cuando la sed o el hambre están por encima de este nivel. + Mostrar automaticamente o HUD quando a sede ou a fome estão acima deste nível. Always @@ -379,6 +417,7 @@ Colored Icons - Transparency Farbige Icons - Transparenz + Icone Colorate - Trasparenza 顏色化圖示 - 透明度 彩色图标—透明度 色付きアイコン - 透明度 @@ -387,18 +426,21 @@ Renkli Ikonlar - Şeffaflaşan 색깔 아이콘 - 투명도 Iconos coloreados - Transparencia + Ícones coloridos - Transparência Controls the transparency of the Colored Icons HUD. Dynamic setting makes the HUD less transparent as thirst or hunger increase. Bestimmt die Tranzparenz der farbigen HUD Icons. Die Dynamische Einstellung macht das HUD weniger transparent, wenn Hunger oder Durst steigen. + Determina la trasparenza di icone HUD colorate. L'impostazione 'Dinamico' rende l'HUD meno trasparente quando la fame o sete è maggiore. 控制顏色化圖示的透明度。設定為動態使其界面透明度與飲食需求一樣,越透明越需要。 控制彩色图标 HUD 的透明度。动态设置使 HUD 的透明度随着口渴或饥饿的增加而减弱。 Kontroluje transparentność kolorowych ikon HUD. Dynamiczne ustawienie zmniejsza przejrzystość wraz z zwiększeniem głodu czy pragnienia. - 色付きアイコンの透明度を決定できます。動的に設定されると、喉の渇きや空腹感が増すにつれて、アイコンの透明度を下げます。 + 色付きアイコンの透明度を決定できます。動的に設定されると、空腹度や喉の渇きが増すにつれて、アイコンの透明度を下げます。 Настраивает прозрачность цветных иконок. «Динамическая» делает иконки менее прозрачными при увеличении жажды и голода. Renkli Simgeler Gösterge Paneli'nin şeffaflığını kontrol eder. Dinamik ayar, susuzluk veya açlık arttıkça HUD'yi daha az şeffaf hale getirir. 색깔 아이콘의 투명도를 조절합니다. 동적 설정의 경우 배고픔이나 목마름이 해결되면 덜 투명하게 바뀝니다. Controla la transparencia de los Iconos coloreados en el HUD. La opción dinámica muestra el HUD menos transparente cuando la sed o el hambre aumentan. + Controla a transparência dos ícones coloridos no HUD. A configuração dinâmica torna o HUD menos transparente à medida que a sede ou a fome aumentam. Dynamic @@ -420,6 +462,7 @@ Water Supply Wasservorrat + Scorta d'acqua 飲用水補給 饮用水补给 水資源 @@ -427,10 +470,12 @@ Źródło wody 식수 보급량 Suministro de agua + Suprimentos de água The amount of water available for ACE Field Rations water source actions (-1 disabled, -10 infinite) Die Menge des für ACE Feldrationen Wasserquellenaktionen verfügbaren Wassers (-1 ausgeschaltet, -10 unendlich) + La quantità di acqua disponibile per interazioni ACE Razioni da Campo di sorgenti d'acqua (-1 nessuna, -10 infinita) 水源可供補充飲用水的次數(-1為關閉,-10為無限次)。 水源可供取水的次数(-1为关闭,-10为无限次)。 ACE フィールド レーションで利用できる水源の量を設定できます。(-1で無効化、-10で無限) @@ -438,10 +483,12 @@ Ilość wody dostępnej dla Akcji ACE Źródła wody (-1 wyłączone, -10 nieskończone) ACE 전투식량 물 근처 행동에서 얼마나 물을 얻어 갈 수 있는지를 정합니다 (-1은 비활성화, -10은 무한대) La cantidad de agua disponible para las acciones de suministro de agua de las Raciones de Combate de ACE (-1 deshabilitado, -10 infinito) + A quantidade de água disponível para as ações de suprimentos de água das Rações de Campo do ACE (-1 desativado, -10 infinito) Water Source Wasserquelle + Sorgente d'acqua 水源 水源 水源 @@ -450,10 +497,12 @@ Matara 수원지 Suministro de agua + Fonte de água Check Remaining Water Überprüfe verbleibendes Wasser + Controlla acqua rimanente 檢查剩餘飲用水 检查剩余饮用水 残っている水を確認 @@ -462,10 +511,12 @@ Kalan Suyu Kontrol Et 남은 물 확인 Comprobar agua restante + Verificar água restante Checking remaining water... Überprüfe verbleibendes Wasser... + Controllando acqua rimanente... 檢查剩下的飲用水... 检查剩余饮用水中... 残っている水量を確認中です・・・ @@ -474,34 +525,40 @@ Kalan Su Kontrol Ediliyor... 남은 물 확인 중... Comprobando agua restante... + Verificando água restante... There are %1 litres left. Es sind %1 Liter übrig. + Ci sono ancora %1 Litri. 那還有 %1 公升 还剩下 %1 升 - 残り %1 リットル残っています。 + あと %1 リットル残っています。 Pozostało %1 litrów. Осталось %1 л воды %1 Litre kaldı. %1 리터의 물이 남아있습니다. Quedan %1 litros. + Ainda há %1 litros. There is no water left. Es ist kein Wasser mehr übrig. + Non c'è più acqua rimanente 水已經用完了 水已经喝完了。 - 水はもうありません。 + 水は残っていません。 Nie ma wody Воды больше не осталось Hiç su kalmadı. 물이 한 방울도 없습니다. No queda agua. + Não há mais água. Drink From Source Trinke direkt + Bevi da sorgente Выпить из источника Pij z źródła wody Mataradan Iç @@ -509,6 +566,7 @@ 从水源处喝水 수원에서 물 마시기 Beber desde el suministro + Beber da fonte Refill @@ -518,8 +576,8 @@ Recharge Nachfüllung Utántöltés - Ricarica - 汲む + Riempi + 水を汲む 다시 채우기 Uzupełnij Recarga @@ -535,7 +593,7 @@ Remplissage ... Nachfüllen... Utántöltés ... - Ricarica ... + Riempendo... 汲んでいます・・・ 채우는 중... Uzupełnianie ... @@ -552,7 +610,7 @@ Article rechargé Artikel nachgefüllt Újratöltött tétel - Articolo riempito + Oggetto riempito 中身がいっぱいになりました 아이템 채워짐 Przedmiot uzupełniony @@ -564,6 +622,7 @@ Eating %1... Esse %1... + Mangiando %1... 食用 %1... 食用 %1... %1 を食べています・・・ @@ -572,10 +631,12 @@ %1 Yeniyor... %1 먹는 중... Comiendo %1... + Comendo %1... Drinking %1... Trinke %1... + Bevendo %1... 飲用自 %1... 饮用 %1... %1 を飲んでいます・・・ @@ -584,10 +645,12 @@ %1 Içiliyor... %1 마시는 중... Bebiendo %1... + Bebendo %1... Drinking from %1... Trinke von %1... + Bevendo da %1... 飲用%1的水中... 从%1饮用中... %1 から飲んでいます・・・ @@ -596,6 +659,7 @@ %1 den içiliyor... %1 으로 부터 마시는 중... Bebiendo desde %1... + Bebendo de %1... Drinking from source... @@ -604,9 +668,11 @@ Mataradan Içiliyor... 水源から飲んでいます・・・ Trinke von Quelle... + Bevendo da sorgente... 从水源处喝水中... 수원에서 마시는 중... Bebiendo desde el suministro... + Bebendo da fonte... Water Bottle @@ -617,10 +683,10 @@ Wasserflasche Vizesüveg Bottiglia d'acqua - ウォーターボトル + 水のペットボトル 물병 Butelka wody - Garrafa de agua + Garrafa de água Бутылка воды (полная) Botella de agua Su Şişesi @@ -634,7 +700,7 @@ Eine Wasserflasche Egy vizes palackot Una bottiglia d'acqua - ウォーター ボトル + 水入りペットボトル 물병 Butelka wody Uma garrafa de água @@ -651,7 +717,7 @@ Wasserflasche (Hälfte) Vízpalack (fél) Bottiglia d'acqua (metà) - ウォーター ボトル (半分) + 水のペットボトル (半分) 물병 (절반) Butelka wody (połowa) Garrafa de água (meio) @@ -667,8 +733,8 @@ Une bouteille d'eau à moitié pleine Eine halbvolle Wasserflasche Fél-teljes vizes palack - Una mezza bottiglia piena d'acqua - 半分入っているウォーター ボトル + Una bottiglia d'acqua mezza piena o mezza vuota + 半分残っている水入りペットボトル 절반만 차 있는 물병입니다. Pół butelki z wodą Uma garrafa de água meia cheia @@ -685,7 +751,7 @@ Wasserflasche (leer) Vízpalack (üres) Bottiglia d'acqua (vuota) - ウォーター ボトル (空) + 水のペットボトル (空) 물병 (비어 있음) Butelka na wodę (pusta) Garrafa de água (vazia) @@ -702,7 +768,7 @@ Eine leere Wasserflasche Egy üres palack Una bottiglia d'acqua vuota - 空のウォーター ボトル + 空のウォーターボトル 빈 물병입니다 Pusta butelka wody Uma garrafa de água vazia @@ -718,7 +784,7 @@ Cantine Feldflasche Kantin - Mensa + Borraccia 水筒 수통 Manierka @@ -735,7 +801,7 @@ Une cantine remplie d'eau Eine Feldflasche mit Wasser gefüllt Vízzel töltött kantin - Una mensa piena d'acqua + Una borraccia piena d'acqua 水で一杯の水筒 물이 가득찬 수통입니다 Manierka wypełniona wodą @@ -752,7 +818,7 @@ Cantine (Demi) Feldflasche (halb) Étkezés (fél) - Mensa (metà) + Borraccia (metà) 水筒 (半分) 수통 (절반) Manierka (połowa) @@ -769,7 +835,7 @@ Une cantine à moitié remplie d'eau Eine Feldflasche zur Hälfte mit Wasser gefüllt A vízzel töltött kantin - Una mensa riempita per metà di acqua + Una borraccia riempita per metà di acqua 半分入っている水筒 반이 차 있는 수통입니다 Manierka w połowie wypełniona wodą @@ -786,7 +852,7 @@ Cantine (Vide) Feldflasche (leer) Étkezde (üres) - Mensa (vuota) + Borraccia (vuota) 水筒 (空) 수통 (비어 있음) Manierka (pusta) @@ -803,7 +869,7 @@ Une cantine vide Eine leere Feldflasche Egy üres kantin - Una mensa vuota + Una borraccia vuota 空の水筒 빈 수통입니다 Pusta manierka @@ -815,6 +881,7 @@ Refreshing lemon and lime flavored soft drink Ein erfrischender Softdrink mit Zitronen- und Limettengeschmack. + Una bibita rinfrescante con gusto di limoni e lime. 清新檸檬以及有著酸橙味的汽水 清爽的柠檬和青柠味汽水 新鮮なレモンとライムの風味を味わえるソフトドリンク @@ -823,10 +890,12 @@ Limon Ve Yeşil Limondan Yapılmış Gazlı Bir Içecek 상쾌한 레몬라임향의 탄산음료 Bebida refrescante de sabor lima y limón + Bebida refrescante de sabor limão e lima Orange flavored soft drink with a tingly, fruity taste Ein nach Orange schmeckender Softdrink mit einem prickelndem und fruchtigem Geschmack + Una bibita frizzante con gusto di arancia 有著微微的橘子水果味的汽水 橙子味汽水,有刺鼻的水果味 口いっぱいに果物を感じるオレンジ風味のソフトドリンク @@ -835,18 +904,21 @@ Gazlı Portakallı Bir Içecek 오렌지 향의 톡쏘는 탄산음료 Bebida refrescante de sabor naranja, con un chispeante y afrutado sabor. + Bebida refrescante de sabor laranja, com um sabor frutado e formigante. Red Gull gives you wings Red Gull verleiht Flügel + Red Gull mette le ali 紅鷹讓你猛虎添翼 红鹰让你猛虎添翼 - レッドガル 翼をさずける + レッドガル 翼を授ける Red Gull doda ci skrzydeł Рэд Гулл окрыляет! Red Gull kanatlandırrrrr 레드굴은 날개를 달아줘요 Red Gull te da alas + Red Gull te dá asas MRE Lamb Curry @@ -856,7 +928,7 @@ MRE Curry d'agneau EPA Lamm Curry MRE bárány Curry - MRE Curry di agnello + MRE Agnello al curry MRE ラムカレー MRE 양고기 카레 MRE jagnięcina Curry @@ -873,7 +945,7 @@ Un MRE contenant du Curry d'agneau. Chaleur pour le meilleur effet Eine EPA mit Lamm Curry. Für den besten Geschmack erhitzen. Egy MRE, amely Lamb Curry-t tartalmaz. Hő a legjobb hatás érdekében - Un MRE contenente Lamb Curry. Calore per il miglior effetto + Un MRE contenente Agnello al Curry. Riscalda per un sapore migliore. ラム(羊肉)カレーの MRE。温めるとなお美味しい 양고기 카레가 들어있는 MRE입니다. 뜨겁게 먹을 때 가장 좋습니다 MRE zawierające jagnięcine Curry. Podgrzej dla najlepszego efektu @@ -885,6 +957,7 @@ MRE Beef Stew EPA Rindereintopf + MRE Zuppa di bovino 軍糧 牛肉燉湯 军粮炖牛肉汤 MRE ビーフシチュー @@ -893,10 +966,12 @@ MRE Dana Yahni MRE 비프스튜 MRE Estofado de ternera + MRE ensopado de carne An MRE containing Beef Stew. Heat for best effect Eine EPA, welche Rindereintopf beeinhaltet. Für den besten Geschmack erhitzen. + Un MRE contenente zuppa di bovino. Riscalda per un sapore migliore. 含有牛肉燉湯的軍用口糧。加熱以達到最佳效果 含有牛肉炖汤的军粮。加热以达到最佳效果 ビーフ シチューの MRE。温めるとなお美味しい @@ -905,6 +980,7 @@ Sığır Yahni içeren bir MRE. 비프스튜가 들어있는 MRE입니다. 뜨겁게 먹을 때 가장 좋습니다 Un MRE que contiene estofado de ternera. Calentar para mejor efecto. + Um MRE contendo ensopado de carne. Aquecer para melhor efeito MRE Cream Tomato Soup @@ -914,7 +990,7 @@ MRE Soupe de tomate crème EPA Cremige Tomatensuppe MRE krémes paradicsomleves - MRE Crema di pomodoro + MRE Zuppa di pomodoro MRE クリームトマトスープ MRE 크림 토마토 수프 MRE Kremowa Zupa Pomidorowa @@ -931,7 +1007,7 @@ Un MRE contenant de la soupe à la tomate et à la crème. Mélanger avec de l'eau et chauffer pour obtenir le meilleur effet Eine EPA mit Creme Tomatensuppe. Für beste Wirkung mit Wasser und Hitze mischen. Egy krémes paradicsomleveset tartalmazó MRE. Keverjük össze vízzel és hővel a legjobb hatás érdekében - Un MRE contenente zuppa di pomodoro crema. Mescolare con acqua e calore per ottenere il massimo effetto + Un MRE contenente zuppa di pomodoro cremosa. Mescolare con acqua e riscaldare per il sapore migliore クリームトマトスープの MRE。水と混ぜて温めるとなお美味しい 크림 토마토 수프가 들어 있는 MRE입니다. 물과 섞어 뜨겁게 먹을 때 가장 좋습니다 MRE zawierające śmietanową zupę pomidorową. Wymieszaj z wodą i podgrzej, aby uzyskać najlepszy efekt @@ -948,7 +1024,7 @@ MRE Soupe à la crème au poulet EPA Cream Hühnersuppe MRE krémes csirke leves - MRE Zuppa di pollo crema + MRE Zuppa di pollo MRE クリームチキンスープ MRE 크림 치킨 수프 MRE Kremowy Rosół @@ -965,7 +1041,7 @@ Un MRE contenant une soupe au poulet. Mélanger avec de l'eau et chauffer pour obtenir le meilleur effet Eine EPA mit Hühnersuppe. Für beste Wirkung mit Wasser und Hitze mischen. A csirke leves tartalmú MRE. Keverjük össze vízzel és hővel a legjobb hatás érdekében - Un MRE contenente zuppa di pollo. Mescolare con acqua e calore per ottenere il massimo effetto + Un MRE contenente zuppa di pollo. Mescolare con acqua e riscaldare per il sapore migliore クリームチキンスープの MRE。水と混ぜて温めるとなお美味しい 치킨 수프가 들어 있는 MRE입니다. 물과 섞어 뜨겁게 먹을 때 가장 좋습니다 MRE zawierające rosół. Wymieszaj z wodą i podgrzej, aby uzyskać najlepszy efekt @@ -982,7 +1058,7 @@ MRE Poulet Tikka Masala EPA Huhn Tikka Masala MRE csirke Tikka Masala - MRE pollo Tikka Masala + MRE Pollo Tikka Masala MRE チキン ティッカ マサラ MRE 치킨 티카 마살라 MRE kurczak Tikka Masala @@ -999,7 +1075,7 @@ Un MRE avec du poulet Tikka Masala. Chaleur pour le meilleur effet Eine EPA mit Hühnchen Tikka Masala. Für den besten Geschmack erhitzen. Egy MRE csirkével Tikka Masala. Hő a legjobb hatás érdekében - Un MRE con pollo Tikka Masala. Calore per effetto migliore + Un MRE con pollo Tikka Masala. Riscaldare per il sapore migliore チキン ティッカ マサラの MRE。温めるとなお美味しい 치킨 티카 마살라 MRE입니다. 뜨겁게 먹을 때 가장 좋습니다 MRE z kurczakiem Tikka Masala. Podgrzej dla najlepszego efektu @@ -1016,7 +1092,7 @@ MRE Steak légumes EPA Steak Gemüse MRE Steak zöldségek - MRE Verdura di bistecca + MRE Bistecca con verdure MRE 野菜添えステーキ MRE 스테이크 야채 MRE Stek Warzywny @@ -1033,7 +1109,7 @@ Un MRE contenant du bifteck et des légumes. Chaleur pour le meilleur effet Eine EPA mit Steak und Gemüse. Für den besten Geschmack erhitzen. Egy MRE, amely Steak és Zöldségeket tartalmaz. Hő a legjobb hatás érdekében - Un MRE contenente bistecche e verdure. Calore per il miglior effetto + Un MRE contenente bistecca e verdure. Riscaldare per il sapore migliore 野菜とステーキの MRE。温めるとなお美味しい 스테이크와 채소가 들어 있는 MRE입니다. 뜨겁게 먹을 때 가장 좋습니다 MRE zawierający stek i warzywa. Podgrzej dla najlepszego efektu @@ -1067,7 +1143,7 @@ Un MRE contenant des boulettes de viande et des pâtes. Chaleur pour le meilleur effet Eine EPA mit Fleischbällchen und Pasta. Für den besten Geschmack erhitzen. Húsgombócokat és tésztát tartalmazó MRE. Hő a legjobb hatás érdekében - Un MRE contenente polpette e pasta. Calore per il miglior effetto + Un MRE contenente pasta con polpette. Riscaldare per il sapore migliore ミートボールとパスタの MRE。温めるとなお美味しい 미트볼과 파스타가 들어 있는 MRE입니다. 뜨겁게 먹을 때 가장 좋습니다 MRE zawierające klopsiki i makaron. Podgrzej dla najlepszego efektu @@ -1101,7 +1177,7 @@ Un MRE contenant du poulet et des dumplings aux fines herbes. Chaleur pour le meilleur effet Eine EPA mit Hühnchen mit Kräuterknödeln. Für den besten Geschmack erhitzen. Egy MRE, amely csirkét és fűszeres gombócokat tartalmaz. Hő a legjobb hatás érdekében - Un MRE contenente pollo con gnocchi alle erbe. Calore per il miglior effetto + Un MRE contenente pollo con gnocchi alle erbe. Riscaldare per il sapore migliore チキンとハーブ団子のMRE。温めるとなお美味しい 허브 치킨 만두 MRE입니다. 뜨겁게 먹을 때 가장 좋습니다 MRE z kurczakiem i pierogamii ziołowymi. Podgrzej dla najlepszego efektu @@ -1134,8 +1210,8 @@ Une ration humanitaire destinée à servir d'approvisionnement alimentaire en cas de crise Eine humanitäre Ration, die dazu bestimmt ist, in Krisenzeiten als Nahrung für eine Person zu dienen Humanitárius eloszlás, amelynek célja az ember élelmezési ellátottsága a válság idején - Una razione umanitaria destinata a servire come riserva di cibo di una persona durante le crisi - 人道危機を救う為に配布された食料品 + Una razione umanitaria destinata a fungere come riserva di cibo di una persona in caso di crisi umanitarie + 危機に瀕した人々の供給食としての使用を目的とした人道配給食 재난 상황에 식량으로 쓸 수 있는 인도주의 차원의 배급식량입니다 Racja humanitarna, która ma służyć jako żywność dla danej osoby podczas kryzysów Uma Ração Humanitária destinada a servir como alimento alimentar de uma pessoa durante as crises @@ -1145,22 +1221,26 @@ Sunflower Seeds Sonnenblumenkerne + Semi di girasole 해바라기씨 Nasiona Słonecznika ヒマワリの種 葵花籽 Семечки подсолнуха Pipas de girasol + Sementes de girassol Roasted And Salted Geröstet und Gesalzen + Tostati e salati 굽고 간을 했습니다 Pieczone i Solone 炒って塩で味付け済 焙烤盐焗 Поджаренные и солёные Tostadas y saladas + Torradas e salgadas diff --git a/addons/fieldmanual/$PBOPREFIX$ b/addons/fieldmanual/$PBOPREFIX$ new file mode 100644 index 0000000000..b080a6d6b7 --- /dev/null +++ b/addons/fieldmanual/$PBOPREFIX$ @@ -0,0 +1 @@ +z\ace\addons\fieldmanual diff --git a/addons/fieldmanual/CfgEventHandlers.hpp b/addons/fieldmanual/CfgEventHandlers.hpp new file mode 100644 index 0000000000..0afdef638f --- /dev/null +++ b/addons/fieldmanual/CfgEventHandlers.hpp @@ -0,0 +1,5 @@ +class Extended_PreStart_EventHandlers { + class ADDON { + init = QUOTE(call COMPILE_SCRIPT(XEH_preStart)); + }; +}; diff --git a/addons/fieldmanual/CfgHintCategories.hpp b/addons/fieldmanual/CfgHintCategories.hpp new file mode 100644 index 0000000000..3a917c9c9c --- /dev/null +++ b/addons/fieldmanual/CfgHintCategories.hpp @@ -0,0 +1,5 @@ +class CfgHintCategories { + class ACE_FieldManual { + displayName = CSTRING(HintCategory_FieldManual_DisplayName); + }; +}; diff --git a/addons/fieldmanual/CfgHints.hpp b/addons/fieldmanual/CfgHints.hpp new file mode 100644 index 0000000000..6f5b0c8efe --- /dev/null +++ b/addons/fieldmanual/CfgHints.hpp @@ -0,0 +1,337 @@ + +/* + Preferred Image Size = 256x256 + Can Embed Images Into Description = 1024x512 + - Shadow = '0' + - Size = '9' +*/ + +// INDENT - %11 +// SELF INTERACT KEYBIND - %12 +// INTERACT KEYBIND - %13 +#define BASE_ARGUMENTS "' '", \ +QUOTE([ARR_2('ACE3 Common',QQEGVAR(interact_menu,selfInteractKey))] call FUNC(getKeybindName)), \ +QUOTE([ARR_2('ACE3 Common',QQEGVAR(interact_menu,interactKey))] call FUNC(getKeybindName)) + +// MEDCIAL MENU KEYBIND - %14 +#define MEDICAL_MENU_KEYBIND QUOTE([ARR_2('ACE3 Common',QQEGVAR(medical_gui,openMedicalMenuKey))] call FUNC(getKeybindName)) + + +class CfgHints { + class ACE_FieldManual_Base { + arguments[] = {BASE_ARGUMENTS}; + image = "\z\ace\addons\common\data\logo_ace3_ca.paa"; + tip = "ACE Wiki"; + }; + class ACE_Items { + displayName = CSTRING(Items_DisplayName); + category = "ACE_FieldManual"; + + class ACE_ATragMX: ACE_FieldManual_Base { + logicalOrder = 1; + arguments[] = {BASE_ARGUMENTS, QUOTE('ACE_ATragMX' call FUNC(getItemName))}; + displayName = "%14"; + displayNameShort = CSTRING(Items_ATragMX_ShortName); + description = CSTRING(Items_ATragMX_Description); + tip = "ATragMX Wiki"; + }; + class ACE_BodyBag: ACE_FieldManual_Base { + logicalOrder = 2; + arguments[] = {BASE_ARGUMENTS, QUOTE('ACE_BodyBag' call FUNC(getItemName)), MEDICAL_MENU_KEYBIND}; + displayName = "%14"; + displayNameShort = CSTRING(Items_BodyBag_ShortName); + description = CSTRING(Items_BodyBag_Description); + }; + class ACE_CableTie: ACE_FieldManual_Base { + logicalOrder = 3; + arguments[] = {BASE_ARGUMENTS, QUOTE('ACE_CableTie' call FUNC(getItemName))}; + displayName = "%14"; + displayNameShort = CSTRING(Items_CableTie_ShortName); + description = CSTRING(Items_CableTie_Description); + tip = "Captives Wiki"; + }; + class ACE_Cellphone: ACE_FieldManual_Base { + logicalOrder = 4; + arguments[] = {BASE_ARGUMENTS, QUOTE('ACE_Cellphone' call FUNC(getItemName))}; + displayName = "%14"; + displayNameShort = CSTRING(Items_Cellphone_ShortName); + description = CSTRING(Items_Cellphone_Description); + tip = "Explosives Wiki"; + }; + class ACE_Chemlight_Shield: ACE_FieldManual_Base { + logicalOrder = 5; + arguments[] = {BASE_ARGUMENTS, QUOTE('ACE_Chemlight_Shield' call FUNC(getItemName))}; + displayName = "%14"; + displayNameShort = CSTRING(Items_Chemlight_Shield_ShortName); + description = CSTRING(Items_Chemlight_Shield_Description); + tip = "Chemlights Wiki"; + }; + class ACE_Clackers: ACE_FieldManual_Base { + logicalOrder = 6; + arguments[] = {BASE_ARGUMENTS, QUOTE('ACE_Clacker' call FUNC(getItemName))}; + displayName = "%14"; + displayNameShort = CSTRING(Items_Clackers_ShortName); + description = CSTRING(Items_Clackers_Description); + tip = "Explosives Wiki"; + }; + class ACE_DAGR: ACE_FieldManual_Base { + logicalOrder = 7; + arguments[] = {BASE_ARGUMENTS, QUOTE('ACE_DAGR' call FUNC(getItemName))}; + displayName = "%14"; + displayNameShort = CSTRING(Items_DAGR_ShortName); + description = CSTRING(Items_DAGR_Description); + tip = "DAGR Wiki"; + }; + class ACE_DeadManSwitch: ACE_FieldManual_Base { + logicalOrder = 8; + arguments[] = {BASE_ARGUMENTS, QUOTE('ACE_DeadManSwitch' call FUNC(getItemName))}; + displayName = "%14"; + displayNameShort = CSTRING(Items_DeadManSwitch_ShortName); + description = CSTRING(Items_DeadManSwitch_Description); + tip = "Explosives Wiki"; + }; + class ACE_DefusalKit: ACE_FieldManual_Base { + logicalOrder = 9; + arguments[] = {BASE_ARGUMENTS, QUOTE('ACE_DefusalKit' call FUNC(getItemName))}; + displayName = "%14"; + displayNameShort = CSTRING(Items_DefusalKit_ShortName); + description = CSTRING(Items_DefusalKit_Description); + tip = "Explosives Wiki"; + }; + class ACE_EarPlugs: ACE_FieldManual_Base { + logicalOrder = 10; + arguments[] = {BASE_ARGUMENTS, QUOTE('ACE_EarPlugs' call FUNC(getItemName))}; + displayName = "%14"; + displayNameShort = CSTRING(Items_EarPlugs_ShortName); + description = CSTRING(Items_EarPlugs_Description); + tip = "Hearing Wiki"; + }; + class ACE_EntrenchingTool: ACE_FieldManual_Base { + logicalOrder = 11; + arguments[] = {BASE_ARGUMENTS, QUOTE('ACE_EntrenchingTool' call FUNC(getItemName))}; + displayName = "%14"; + displayNameShort = CSTRING(Items_EntrenchingTool_ShortName); + description = CSTRING(Items_EntrenchingTool_Description); + }; + class ACE_Flashlights: ACE_FieldManual_Base { + logicalOrder = 12; + displayName = CSTRING(Items_Flashlights_DisplayName); + displayNameShort = CSTRING(Items_Flashlights_ShortName); + description = CSTRING(Items_Flashlights_Description); + tip = "Flashlights Wiki"; + }; + class ACE_FortifyTool: ACE_FieldManual_Base { + logicalOrder = 13; + arguments[] = {BASE_ARGUMENTS, QUOTE('ACE_Fortify' call FUNC(getItemName))}; + displayName = "%14"; + displayNameShort = CSTRING(Items_FortifyTool_ShortName); + description = CSTRING(Items_FortifyTool_Description); + tip = "Fortify Wiki"; + }; + class ACE_HuntIR_Monitor: ACE_FieldManual_Base { + logicalOrder = 14; + arguments[] = {BASE_ARGUMENTS, QUOTE('ACE_HuntIR_monitor' call FUNC(getItemName))}; + displayName = "%14"; + displayNameShort = CSTRING(Items_HuntIR_Monitor_ShortName); + description = CSTRING(Items_HuntIR_Monitor_Description); + tip = "HuntIR Wiki"; + }; + class ACE_IR_Strobe: ACE_FieldManual_Base { + logicalOrder = 15; + arguments[] = {BASE_ARGUMENTS, QUOTE('ACE_IR_Strobe_Item' call FUNC(getItemName))}; + displayName = "%14"; + displayNameShort = CSTRING(Items_IR_Strobe_ShortName); + description = CSTRING(Items_IR_Strobe_Description); + }; + class ACE_Kestrel4500: ACE_FieldManual_Base { + logicalOrder = 16; + arguments[] = {BASE_ARGUMENTS, QUOTE('ACE_Kestrel4500' call FUNC(getItemName))}; + displayName = "%14"; + displayNameShort = CSTRING(Items_Kestrel4500_ShortName); + description = CSTRING(Items_Kestrel4500_Description); + tip = "Kestrel 4500 Wiki"; + }; + class ACE_Lockpick: ACE_FieldManual_Base { + logicalOrder = 17; + arguments[] = {BASE_ARGUMENTS, QUOTE('ACE_key_lockpick' call FUNC(getItemName))}; + displayName = "%14"; + displayNameShort = CSTRING(Items_Lockpick_ShortName); + description = CSTRING(Items_Lockpick_Description); + tip = "Vehicle Lock Wiki"; + }; + class ACE_MapTools: ACE_FieldManual_Base { + logicalOrder = 18; + arguments[] = {BASE_ARGUMENTS, QUOTE('ACE_MapTools' call FUNC(getItemName))}; + displayName = "%14"; + displayNameShort = CSTRING(Items_MapTools_ShortName); + description = CSTRING(Items_MapTools_Description); + }; + class ACE_MicroDAGR: ACE_FieldManual_Base { + logicalOrder = 19; + arguments[] = {BASE_ARGUMENTS, QUOTE('ACE_microDAGR' call FUNC(getItemName))}; + displayName = "%14"; + displayNameShort = CSTRING(Items_MicroDAGR_ShortName); + description = CSTRING(Items_MicroDAGR_Description); + tip = "MicroDAGR Wiki"; + }; + // Combine all range tables under one roof [mortar, artillery, rifle] + class ACE_RangeTables: ACE_FieldManual_Base { + logicalOrder = 20; + displayName = CSTRING(Items_RangeTables_DisplayName); + displayNameShort = CSTRING(Items_RangeTables_ShortName); + description = CSTRING(Items_RangeTables_Description); + tip = "Rangecard Wiki"; + }; + class ACE_Ropes: ACE_FieldManual_Base { + logicalOrder = 21; + displayName = CSTRING(Items_Ropes_DisplayName); + displayNameShort = CSTRING(Items_Ropes_ShortName); + description = CSTRING(Items_Ropes_Description); + }; + class ACE_Sandbag: ACE_FieldManual_Base { + logicalOrder = 22; + arguments[] = {BASE_ARGUMENTS, QUOTE('ACE_Sandbag_empty' call FUNC(getItemName))}; + displayName = "%14"; + displayNameShort = CSTRING(Items_Sandbag_ShortName); + description = CSTRING(Items_Sandbag_Description); + tip = "Sandbag Wiki"; + }; + class ACE_SpareBarrels: ACE_FieldManual_Base { + logicalOrder = 23; + arguments[] = {BASE_ARGUMENTS, QUOTE('ACE_SpareBarrel_Item' call FUNC(getItemName))}; + displayName = "%14"; + displayNameShort = CSTRING(Items_SpareBarrels_ShortName); + description = CSTRING(Items_SpareBarrels_Description); + tip = "Overheating Wiki"; + }; + class ACE_SprayPaint: ACE_FieldManual_Base { + logicalOrder = 24; + displayName = CSTRING(Items_SprayPaint_DisplayName); + displayNameShort = CSTRING(Items_SprayPaint_ShortName); + description = CSTRING(Items_SprayPaint_Description); + tip = "Tagging Wiki"; + }; + class ACE_Tripod: ACE_FieldManual_Base { + logicalOrder = 25; + arguments[] = {BASE_ARGUMENTS, QUOTE('ACE_Tripod' call FUNC(getItemName))}; + displayName = "%14"; + displayNameShort = CSTRING(Items_Tripod_ShortName); + description = CSTRING(Items_Tripod_Description); + tip = "Tripod Wiki"; + }; + class ACE_UAVBattery: ACE_FieldManual_Base { + logicalOrder = 26; + arguments[] = {BASE_ARGUMENTS, QUOTE('ACE_UAVBattery' call FUNC(getItemName))}; + displayName = "%14"; + displayNameShort = CSTRING(Items_UAVBattery_ShortName); + description = CSTRING(Items_UAVBattery_Description); + tip = "UAV Battery Wiki"; + }; + class ACE_VehicleKey: ACE_FieldManual_Base { + logicalOrder = 27; + displayName = CSTRING(Items_VehicleKey_DisplayName); + displayNameShort = CSTRING(Items_VehicleKey_ShortName); + description = CSTRING(Items_VehicleKey_Description); + tip = "Vehicle Lock Wiki"; + }; + class ACE_Wirecutter: ACE_FieldManual_Base { + logicalOrder = 28; + arguments[] = {BASE_ARGUMENTS, QUOTE('ACE_wirecutter' call FUNC(getItemName))}; + displayName = "%14"; + displayNameShort = CSTRING(Items_Wirecutter_ShortName); + description = CSTRING(Items_Wirecutter_Description); + tip = "Wirecutter Wiki"; + }; + }; + // ACE Field Rations + class ACE_Field_Rations { + displayName = CSTRING(Field_Rations_DisplayName); + category = "ACE_FieldManual"; + + class ACE_Field_Rations_Base: ACE_FieldManual_Base { + tip = "Field Rations Wiki"; + }; + + class Hunger: ACE_Field_Rations_Base { + logicalOrder = 1; + displayName = CSTRING(Field_Rations_Hunger_DisplayName); + description = CSTRING(Field_Rations_Hunger_Description); + }; + class Thirst: ACE_Field_Rations_Base { + logicalOrder = 2; + displayName = CSTRING(Field_Rations_Thirst_DisplayName); + description = CSTRING(Field_Rations_Thirst_Description); + }; + }; + // ACE Medical + class ACE_Medical_Treatment { + displayName = CSTRING(Medical_Treatment_DisplayName); + category = "ACE_FieldManual"; + + class ACE_Medical_Treatment_Base: ACE_FieldManual_Base { + arguments[] = {BASE_ARGUMENTS, MEDICAL_MENU_KEYBIND}; + tip = "Medical Wiki"; + }; + + class ACE_MedicalMenu: ACE_Medical_Treatment_Base { + logicalOrder = 1; + displayName = CSTRING(Medical_Treatment_MedicalMenu_DisplayName); + displayNameShort = CSTRING(Medical_Treatment_MedicalMenu_ShortName); + description = CSTRING(Medical_Treatment_MedicalMenu_Description); + }; + class ACE_Adenosine: ACE_Medical_Treatment_Base { + logicalOrder = 2; + arguments[] = {BASE_ARGUMENTS, MEDICAL_MENU_KEYBIND, QUOTE('ACE_adenosine' call FUNC(getItemName))}; + displayName = "%15"; + displayNameShort = CSTRING(Medical_Treatment_Adenosine_ShortName); + description = CSTRING(Medical_Treatment_Adenosine_Description); + }; + class ACE_Bandages: ACE_Medical_Treatment_Base { + logicalOrder = 3; + displayName = CSTRING(Medical_Treatment_Bandages_DisplayName); + displayNameShort = CSTRING(Medical_Treatment_Bandages_ShortName); + description = CSTRING(Medical_Treatment_Bandages_Description); + }; + class ACE_Fluids: ACE_Medical_Treatment_Base { + logicalOrder = 4; + displayName = CSTRING(Medical_Treatment_IVFluids_DisplayName); + displayNameShort = CSTRING(Medical_Treatment_IVFluids_ShortName); + description = CSTRING(Medical_Treatment_IVFluids_Description); + }; + class ACE_Epinephrine: ACE_Medical_Treatment_Base { + logicalOrder = 5; + arguments[] = {BASE_ARGUMENTS, MEDICAL_MENU_KEYBIND, QUOTE('ACE_epinephrine' call FUNC(getItemName))}; + displayName = "%15"; + displayNameShort = CSTRING(Medical_Treatment_Epinephrine_ShortName); + description = CSTRING(Medical_Treatment_Epinephrine_Description); + }; + class ACE_PAK: ACE_Medical_Treatment_Base { + logicalOrder = 6; + arguments[] = {BASE_ARGUMENTS, MEDICAL_MENU_KEYBIND, QUOTE('ACE_personalAidKit' call FUNC(getItemName))}; + displayName = "%15"; + displayNameShort = CSTRING(Medical_Treatment_PAK_ShortName); + description = CSTRING(Medical_Treatment_PAK_Description); + }; + class ACE_Splint: ACE_Medical_Treatment_Base { + logicalOrder = 7; + arguments[] = {BASE_ARGUMENTS, MEDICAL_MENU_KEYBIND, QUOTE('ACE_splint' call FUNC(getItemName))}; + displayName = "%15"; + displayNameShort = CSTRING(Medical_Treatment_Splint_ShortName); + description = CSTRING(Medical_Treatment_Splint_Description); + }; + class ACE_SurgicalKit: ACE_Medical_Treatment_Base { + logicalOrder = 8; + arguments[] = {BASE_ARGUMENTS, MEDICAL_MENU_KEYBIND, QUOTE('ACE_surgicalKit' call FUNC(getItemName))}; + displayName = "%15"; + displayNameShort = CSTRING(Medical_Treatment_SurgicalKit_ShortName); + description = CSTRING(Medical_Treatment_SurgicalKit_Description); + }; + class ACE_Tourniquet: ACE_Medical_Treatment_Base { + logicalOrder = 9; + arguments[] = {BASE_ARGUMENTS, MEDICAL_MENU_KEYBIND, QUOTE('ACE_tourniquet' call FUNC(getItemName))}; + displayName = "%15"; + displayNameShort = CSTRING(Medical_Treatment_CAT_ShortName); + description = CSTRING(Medical_Treatment_CAT_Description); + }; + }; +}; diff --git a/addons/fieldmanual/XEH_PREP.hpp b/addons/fieldmanual/XEH_PREP.hpp new file mode 100644 index 0000000000..425e79b6e9 --- /dev/null +++ b/addons/fieldmanual/XEH_PREP.hpp @@ -0,0 +1,4 @@ +TRACE_1("",QUOTE(ADDON)); + +PREP(getItemName); +PREP(getKeybindName); diff --git a/addons/fieldmanual/XEH_preStart.sqf b/addons/fieldmanual/XEH_preStart.sqf new file mode 100644 index 0000000000..022888575e --- /dev/null +++ b/addons/fieldmanual/XEH_preStart.sqf @@ -0,0 +1,3 @@ +#include "script_component.hpp" + +#include "XEH_PREP.hpp" diff --git a/addons/fieldmanual/config.cpp b/addons/fieldmanual/config.cpp new file mode 100644 index 0000000000..19cdbcbf17 --- /dev/null +++ b/addons/fieldmanual/config.cpp @@ -0,0 +1,19 @@ +#include "script_component.hpp" + +class CfgPatches { + class ADDON { + name = COMPONENT_NAME; + units[] = {}; + weapons[] = {}; + requiredVersion = REQUIRED_VERSION; + requiredAddons[] = {"ace_common"}; + author = ECSTRING(common,ACETeam); + authors[] = {"Hypoxic"}; + url = ECSTRING(main,URL); + VERSION_CONFIG; + }; +}; + +#include "CfgEventHandlers.hpp" +#include "CfgHintCategories.hpp" +#include "CfgHints.hpp" diff --git a/addons/fieldmanual/functions/fnc_getItemName.sqf b/addons/fieldmanual/functions/fnc_getItemName.sqf new file mode 100644 index 0000000000..ed795ebd2c --- /dev/null +++ b/addons/fieldmanual/functions/fnc_getItemName.sqf @@ -0,0 +1,23 @@ +#include "..\script_component.hpp" +/* + * Author: PabstMirror + * Gets item's localized name or indicates if not availabe + * + * Arguments: + * 0: Classname + * + * Return Value: + * + * + * Example: + * "ACE_Banana" call ace_fieldmanual_fnc_getItemName + * + * Public: No + */ +params ["_classname"]; +private _config = configFile >> "CfgWeapons" >> _classname; +if (isClass _config) then { + getText (_config >> "displayName") +} else { + format ["[N/A] - %1", _classname] +}; diff --git a/addons/fieldmanual/functions/fnc_getKeybindName.sqf b/addons/fieldmanual/functions/fnc_getKeybindName.sqf new file mode 100644 index 0000000000..726d411620 --- /dev/null +++ b/addons/fieldmanual/functions/fnc_getKeybindName.sqf @@ -0,0 +1,34 @@ +#include "..\script_component.hpp" +/* + * Author: Hypoxic, PabstMirror + * Gets keybind name from CBA + * + * Arguments: + * 0: Addon + * 1: Key Name + * + * Return Value: + * + * + * Example: + * ["ACE3 Common", "ace_interact_menu_selfInteractKey"] call ace_fieldmanual_fnc_getKeybindName + * + * Public: No + */ + +params ["_addon", "_keyName"]; + +private _return = _keyName; +with missionNamespace do { // hint is calling from uiNamespace + private _keyInfo = [_addon, _keyName] call CBA_fnc_getKeybind; + if (!isNil "_keyInfo") then { + private _localizeInfo = _keyInfo select 8 param [0, []]; + if (_localizeInfo isEqualTo []) then { + _return = format ["%1 -> %2", _addon, _keyInfo select 2]; + } else { + _return = format ["%1 -> %2 (%3)", _addon, _keyInfo select 2, _localizeInfo call CBA_fnc_localizeKey]; + }; + }; +}; + +_return diff --git a/addons/fieldmanual/script_component.hpp b/addons/fieldmanual/script_component.hpp new file mode 100644 index 0000000000..35a77d25f9 --- /dev/null +++ b/addons/fieldmanual/script_component.hpp @@ -0,0 +1,19 @@ +#define COMPONENT fieldmanual +#define COMPONENT_BEAUTIFIED Field Manual +#include "\z\ace\addons\main\script_mod.hpp" + +// #define DEBUG_MODE_FULL +// #define DISABLE_COMPILE_CACHE +// #define ENABLE_PERFORMANCE_COUNTERS + +#ifdef DEBUG_ENABLED_FIELDMANUAL + #define DEBUG_MODE_FULL +#endif + +#ifdef DEBUG_SETTINGS_FIELDMANUAL + #define DEBUG_SETTINGS DEBUG_SETTINGS_FIELDMANUAL +#endif + +#include "\z\ace\addons\main\script_macros.hpp" + +#include "\a3\ui_f\hpp\defineDIKCodes.inc" diff --git a/addons/fieldmanual/stringtable.xml b/addons/fieldmanual/stringtable.xml new file mode 100644 index 0000000000..ae71211c6a --- /dev/null +++ b/addons/fieldmanual/stringtable.xml @@ -0,0 +1,718 @@ + + + + + Field Rations + 戰地口糧 + 野战军粮 + Poměrové pole + Rations sur le terrain + Feld Rationen + Terepi adagok + Razioni da campo + フィールド レーション + 전투식량 + Racje polowe + Rações de campo + Полевые рационы + Raciones de campo + Gıda Ihtiyaçları + + + Hunger + Głód + 허기 + Fome + Fame + Hunger + 空腹 + + + %3Hunger%4 increases linearly with soldier's movement speed. Restore by eating food.<br/><br/>%3Usage:%4<br/>%2Pick up food.<br/>%2Use [%3%12%4] and select %3Survival%4.<br/>%2Choose an item to consume. + %3Głód%4 zwiększa się liniowo wraz z prędkością ruchu. Odnawiany przez spożywanie jedzenia.<br/><br/>%3Użycie:%4<br/>%2Podnieś jedzenie.<br/>%2Użyj [%3%12%4] i wybierz %3Surwiwal%4.<br/>%2Wybierz pokarm do zjedzenia + %3허기%4는 병사의 이동속도에 따라 선형적으로 증가합니다. 음식을 섭취하여 회복하십시오.<br/><br/>%3사용 방법:%4<br/>%2음식을 집으십시오.<br/>%2[%3%12%4]를 사용하여 %3생존%4을 선택하십시오.<br/>%2섭취할 아이템을 선택하십시오. + %3A fome%4 aumenta linearmente com a velocidade de movimento do soldado. Restaure comendo comida.<br/><br/>%3Uso:%4<br/>%2Pegue comida.<br/>%2Use [%3%12%4] e selecione %3Sobrevivência%4.<br/>%2Escolha um item para consumir. + %3Hunger%4 steigt linear mit der Bewegungsgeschwindigkeit des Soldaten. Regeneriert sich, indem Nahrung zu sich genommen wird.<br/><br/>%3Verwende:%4<br/>%2Nahrung einsammeln.<br/>%2Verwende [%3%12%4] und wählen %3Überleben%4.<br />%2Wähle einen Gegenstand zum Verzehr aus. + %3Fame%4 aumenta linearmente con la velocità di movimento del soldato. Si rigenera consumando cibo.<br/><br/>%3Usa:%4<br/>%2Raccogli cibo.<br/>%2Usa [%3%12%4] e scegli %3sopravvivenza%4.<br />%2Scegli un articolo da mangiare. + %3空腹度%4は兵士の移動速度に比例して増加します。食べ物を食べることで回復します。<br/><br/>%3使用方法:%4<br/>%2食べ物を持つ。<br/>%2[%3%12%4] を使って%3サバイバル%4を選択。<br/>%2食べたいものを選ぶ。 + + + Thirst + Pragnienie + 갈증 + Sede + Sete + Durst + 渇き + + + %3Thirst%4 increases linearly with soldier's movement speed. Restore by drinking liquids.<br/><br/>%3Usage:%4<br/>%2Pick up a drink.<br/>%2Use [%3%12%4] and select %3Survival%4.<br/>%2Choose an item to consume. + %3Pragnienie%4 zwiększa się liniowo wraz z prędkością ruchu. Odnawiane przez spożywanie napojów.<br/><br/>%3Użycie:%4<br/>%2Podnieś napój.<br/>%2Użyj [%3%12%4] i wybierz %3Surwiwal%4.<br/>%2Wybierz napój do wypicia. + %3갈증%4은 병사의 이동속도에 따라 선형적으로 증가합니다. 음료를 섭취하여 회복하십시오.<br/><br/>%3사용 방법:%4<br/>%2음료를 집으십시오.<br/>%2[%3%12%4]를 사용하여 %3생존%4을 선택하십시오.<br/>%2섭취할 아이템을 선택하십시오. + %3A sede%4 aumenta linearmente com a velocidade de movimento do soldado. Restaure bebendo líquidos.<br/><br/>%3Uso:%4<br/>%2Pegue uma bebida.<br/>%2Use [%3%12%4] e selecione %3Sobrevivência%4.<br/>%2Escolha um item para consumir. + %3Durst%4 steigt linear mit der Bewegungsgeschwindigkeit des Soldaten. Regeneriert sich durch das Trinken von Flüssigkeiten.<br/><br/>%3Verwende:%4<br/>%2Holen ein Getränk.<br/>%2Verwende [%3%12%4] und wähle %3Überleben%4.< br/>%2Wähle einen Gegenstand zum Verzehr aus. + %3Sete%4 aumenta linearmente con la velocità di movimento del soldato. Si rigenera bevendo liquidi.<br/><br/>%3Usa:%4<br/>%2Raccogli bevanda.<br/>%2Usa [%3%12%4] e scegli %3sopravvivenza%4.<br />%2Scegli un articolo da bere. + %3喉の渇き%4は兵士の移動速度に比例して増加します。飲み物を飲むことで回復します。<br/><br/>%3使用方法:%4<br/>%2飲み物を持つ。<br/>%2[%3%12%4] を使って%3サバイバル%4を選択。<br/>%2飲みたいものを選ぶ。 + + + Medical Treatment + Opieka Medyczna + 의료 치료법 + Tratamento médico + Medizinische Behandlung + Cure Mediche + 治療 + + + Decrease Heart Rate + Obniża Tętno + 심박수를 낮춥니다 + Diminuir a frequência cardíaca + Verringere Herzfrequenz + Rallenta ritmo cardiaco + 心拍数を下げる + + + %3Adenosine%4 is used to decrease heart rate.<br/><br/>%3Usage:%4<br/>%2Use [%3%13%4] or [%3%14%4] and select an appendage.<br/>%2Inject %3Adenosine%4. + %3Adenozyna%4 jest używana do obniżenia tętna.<br/><br/>%3Użycie:%4<br/>%2Użyj [%3%13%4] lub [%3%14%4] i wybierz kończynę.<br/>%2Wstrzyknij %3Adenozynę%4. + %3아데노신%4은 심박수를 줄이기 위해 사용됩니다.<br/><br/>%3사용 방법:%4<br/>%2[%3%13%4] 또는 [%3%14%4]를 사용하고 부위를 선택하십시오.<br/>%2%3아데노신%4을 주사하십시오. + %3Adenosina%4 é usada para diminuir a frequência cardíaca.<br/><br/>%3Uso:%4<br/>%2Use [%3%13%4] ou [%3%14%4] e selecione um apêndice.<br/>%2Injete %3Adenosina%4. + %3Adenosin%4 wird verwendet, um die Herzfrequenz zu senken.<br/><br/>%3Verwende:%4<br/>%2Verwende [%3%13%4] oder [%3%14%4] und wählen ein Körperteil aus.<br/>%2Injiziere %3Adenosin%4. + %3Adenosina%4 è usata per rallentare il ritmo cardiaco.<br/><br/>%3Utilizzo:%4<br/>%2Usa [%3%13%4] o [%3%14%4] e seleziona un arto.<br/>%2Inject %3Adenosina%4. + %3アデノシン%4は心拍数を下げるのに使われます。<br/><br/>%3使用方法:%4<br/>%2[%3%13%4] または [%3%14%4] を使って四肢を選択します。<br/>%2そして%3アデノシン%4を注射します。 + + + Bandages + Bandaże + 붕대 + Bandagens + Bandagen + Bende + 包帯 + + + Close Wounds + Zamykają Rany + 상처를 막습니다 + Fechar Feridas + Wunden schließen + Chiudi ferite + 傷口をふさぐ + + + %3Bandages%4 stop bleeding and close wounds. Depending on your settings, bandages may reopen if surgery is not performed.<br/><br/>%2%3Field Dressing:%4<br/>%11<t color='#D9D900'>Average</t> In All Categories<br/>%2%3Packing Bandage:%4<br/>%11<t color='#D9D900'>Average</t> Treatment<br/>%11<t color='#E60000'>Higher</t> Reopen Chance<br/>%11<t color='#00CC00'>Longer</t> Reopen Delay<br/>%2%3Elastic Bandage:%4<br/>%11<t color='#00CC00'>Higher</t> Treatment<br/>%11<t color='#E60000'>Higher</t> Reopen Chance<br/>%11<t color='#E60000'>Shorter</t> Reopen Delay<br/>%2%3Quickclot:%4<br/>%11<t color='#E60000'>Lower</t> Treatment<br/>%11<t color='#00CC00'>Lower</t> Reopen Chance<br/>%11<t color='#00CC00'>Longer</t> Reopening Delay<br/><br/>%3Usage:%4<br/>%2Use [%3%13%4] or [%3%14%4] and select a injured body part.<br/>%2Bandage body part by selecting desired %3Bandage%4 type. + %3Bandaże%4 zatrzymają krwawienie i zamykają rany. W zależności od twoich ustawień, bandaże mogą się otwierać, jeżeli rany nie są zaszyte. <br/><br/>%2%3Bandaż Jałowy:%4<br/>%11<t color='#D9D900'>Przeciętne</t> We wszystkich kategoriach<br/>%2%3Bandaż Uciskowy: %4<br/>%11<t color='#D9D900'>Przeciętne</t> Leczenie<br/>%11<t color='#E60000'>Wyższa</t> Szansa Otwarcia<br/>%11<t color='#00CC00'>Dłuższe</t> Opóźnienie Otwarcia<br/>%2%3Bandaż Elastyczny: %4<br/>%11<t color='#00CC00'>Lepsze</t> Leczenie<br/>%11<t color='#E60000'>Wyższa</t> Szansa Otwarcia<br/>%11<t color='#E60000'>Krótsze</t> Opóźnienie Otwarcia<br/>%2%3Quickclot: %4<br/>%11<t color='#E60000'>Gorsze</t> Leczenie<br/>%11<t color='#00CC00'>Niższa</t> Szansa Otwarcia<br/>%11<t color='#00CC00'>Dłuższe</t> Opóźnienie Otwarcia<br/><br/>%3Użycie:%4<br/>%2Użyj [%3%13%4] lub [%3%14%4] i wybierz zranioną część ciała. <br/>%2Zabandażuj ranę wybierając typ %3Bandażu%4. + %3붕대%4는 출혈을 멈추고 상처를 치료합니다.설정에 따라 수술을 하지 않을 경우 붕대가 다시 풀릴 수 있습니다.<br/><br/>%2%3붕대(기본):%4<br/>모든 카테고리에 대해 %11<t color='#D9D900'>평균</t>적임<br/>%2%3붕대(거즈):<br/>%11<t color='#D9D900'>평균</t>적인 치료 효과<br/>%11<t color='#E60000'>높은</t> 풀림 확률<br/>%11<t color='#00CC00'>긴</t> 풀림 딜레이<br/>%2%3붕대(압박):%4<br/>%11<t color='#00CC00'>높은</t> 치료 효과<br/>%11<t color='#E60000'>높은</t> 풀림 확률<br/>%11<t color='#E60000'>짧은</t> 풀림 딜레이<br/>%2%3붕대(퀵 클롯):%4<br/>%11<t color='#E60000'>낮은</t> 치료 효과<br/>%11<t color='#00CC00'>낮은</t> 풀림 확률<br/>%11<t color='#00CC00'>긴</t> 풀림 딜레이<br/><br/>%3사용 방법:%4<br/>%2[%3%13%4] 또는 [%3%14%4]를 사용하고 부상당한 신체부위를 선택하십시오.<br/>%2원하는 종류의 %3붕대%4를 선택하여 신체부위에 붕대를 감으십시오. + %3Bandagens%4 interrompem o sangramento e fecham feridas. A depender das suas configurações, as bandagens podem reabrir se não for feita a cirurgia.<br/><br/>%2%3Curativo de Campo:%4<br/>%11<t color='#D9D900'>Mediano</t> em todas as categorias<br/>%2%3Bandagem de Compressão:%4<br/>%11<t color='#D9D900'>Mediana</t> em tratamento<br/>%11<t color='#E60000'>Maior</t> chance de reabertura<br/>%11<t color='#00CC00'>Mais longo</t> atraso na reabertura<br/>%2%3Bandagem Elástica:%4<br/>%11<t color='#00CC00'>Melhor</t> em tratamento<br/>%11<t color='#E60000'>Maior</t> chance de reabertura<br/>%11<t color='#E60000'>Mais curto</t> atraso na reabertura<br/>%2%3QuikClot:%4<br/>%11<t color='#E60000'>Pior</t> em tratamento<br/>%11<t color='#00CC00'>Menor</t> chance de reabertura<br/>%11<t color='#00CC00'>Mais longo</t> atraso na reabertura<br/><br/>%Uso:%4<br/>%2Utilize [%3%13%4] ou [%3%14%4] e selecione uma parte do corpo ferida.<br/>%2Suture a parte do corpo selecionando o tipo desejado de %3Bandagem%4. + %3Verbände%4 stoppen Blutungen und schließen Wunden. Abhängig von Ihren Einstellungen können sich Verbände wieder öffnen, wenn keine Operation durchgeführt wird.<br/><br/>%2%3Einfache Bandage:%4<br/>%11<t color='#D9D900'>Durchschnittlich</t> In allen Kategorien<br/>%2%3Mullbinde:%4<br/>%11<t color='#D9D900'>Durchschnittliche</t> Behandlung<br/>%11<t color='#E60000' >Höhere</t> Wiedereröffnungswahrscheinlichkeit<br/>%11<t color='#00CC00'>Längere</t> Wiedereröffnungsverzögerung<br/>%2%3Elastischer Verband:%4<br/>%11<t color='#00CC00'>Längere</t> Behandlung<br/>%11<t color='#E60000'>Höhere</t> Chance auf Wiedereröffnung<br/>%11<t color='#E60000'> Kürzere</t> Wiedereröffnungsverzögerung<br/>%2%3Quickclot:%4<br/>%11<t color='#E60000'>Kürzere</t> Behandlung<br/>%11<t color=' #00CC00'>Geringere</t> Wiedereröffnungswahrscheinlichkeit<br/>%11<t color='#00CC00'>Längere</t> Wiedereröffnungsverzögerung<br/><br/>%3Verwende:%4<br/> %2Verwenden Sie [%3%13%4] oder [%3%14%4] und wähle ein verletztes Körperteil aus.<br/>%2Verbinde ein Körperteil, indem der gewünschte %3Bandagen%4-Typ ausgewählt wurde. + %3Bende%4 fermano emorragie e chiudono ferite. A seconda delle tue impostazioni, ferite bendate potrebbero riaprirsi se non suturate.<br/><br/>%2%3Bendaggio Basico:%4<br/>%11<t color='#D9D900'>Media</t> In tutte le categorie<br/>%2%3Bendaggio Compressivo:%4<br/>%11<t color='#D9D900'>Media</t> Trattamenti<br/>%11<t color='#E60000'>Alta</t> Probabilità di riapertura<br/>%11<t color='#00CC00'>Lungo</t> Tempo di riapertura<br/>%2%3Bendaggio Elastico:%4<br/>%11<t color='#00CC00'>Alto</t> Trattamento<br/>%11<t color='#E60000'>Alto</t> Probabilità di riapertura<br/>%11<t color='#E60000'>Breve</t> Tempo di riapertura<br/>%2%3Quickclot:%4<br/>%11<t color='#E60000'>Basso</t> Trattamento<br/>%11<t color='#00CC00'>Basso</t> Probabilità di riapertura<br/>%11<t color='#00CC00'>Lungo</t> Tempo di riapertura<br/><br/>%3Utilizzo:%4<br/>%2Usa [%3%13%4] o [%3%14%4] seleziona una parte del corpo ferita.<br/>%2Benda la parte del corpo ferita selezionando la %3Benda%4 desiderato. + %3包帯%4は傷口をとじて出血を止めます。設定によっては、手術を行わないと包帯が解けて傷が再開放し出血が再開する場合があります。<br/><br/>%2%3緊急圧迫包帯:%4<br/>%11<t color='#D9D900'>平均的な</t> 全体性能を持っています<br/>%2%3弾性包帯:%4<br/>%11<t color='#D9D900'>平均的な</t> 治療効果<br/>%11<t color='#E60000'>高い</t> 再解放の可能性<br/>%11<t color='#00CC00'>長い</t> 再解放の再計算間隔<br/>%2%3伸縮包帯:%4<br/>%11<t color='#00CC00'>高い</t> 治療効果<br/>%11<t color='#E60000'>高い</t> 再解放の可能性<br/>%11<t color='#E60000'>短い</t> 再解放の再計算間隔<br/>%2%クイッククロット:%4<br/>%11<t color='#E60000'>低い</t> 治療効果<br/>%11<t color='#00CC00'>低い</t> 再解放の可能性<br/>%11<t color='#00CC00'>長い</t> 再解放の再計算間隔<br/><br/>%3使用方法:%4<br/>%2[%3%13%4] または [%3%14%4] を使って身体の負傷個所を選択します。<br/>%2希望の%3包帯%4の種類を選択して部位に包帯を巻きます。 + + + IV Fluids + Płyny IV + IV 수액 + Fluidos IV + IV-Flüssigkeiten + Fluidi EV + IV 輸液 + + + Restore Blood Volume + Przywracają Krew + 혈액량을 회복합니다 + Restaurar o volume de sangue + Blutvolumen wiederherstellen + Ristorano Volume di Sangue + 血液量を回復する + + + %3IV fluids%4 restore lost blood volume. Blood, Plasma, and Saline are functionally the same.<br/><br/>%3Usage:%4<br/>%2Use [%3%13%4] or [%3%14%4] and select an appendage.<br/>%2Restore blood volume by selecting desired %3IV Fluid%4 type. + %3Płyny IV%4 przywracają poziom krwi. Krew, Osocze, i Sól Fizjologiczna są takie same pod względem funkcjonalności.<br/><br/>%3Użycie:%4<br/>%2Użyj [%3%13%4] lub [%3%14%4] i wybierz kończynę.<br/>%2Przywróć poziom krwi przez podanie wybrego %3Płynu IV%4. + %3수액용기%4는 손실된 혈액량을 보충합니다. 혈액, 혈장 및 생리식염수는 기능적으로 동일합니다.<br/><br/>%3사용 방법:%4<br/>%2[%3%13%4] 또는 [%3%14%4]를 사용하고 부위를 선택하십시오.<br/>%2원하는 %3수액용기%4 종류를 선택하여 혈액량을 보충하십시오. + %3Fluidos IV%4 restauram o volume de sangue perdido. Sangue, Plasma e Soro fisiológico são funcionalmente equivalentes.<br/><br/>%3Uso:%4<br/>%Utilize [%3%13%4] ou [%3%14%4] e selecione um apêndice.<br/>%2Restaure o volume de sangue selecionando o tipo desejado de %3Fluido IV%4. + %3IV-Flüssigkeiten%4 stellen das verlorene Blutvolumen wieder her. Blut, Plasma und Kochsalzlösung sind funktionell gleich.<br/><br/>%3Verwende:%4<br/>%2Verwende [%3%13%4] oder [%3%14%4] und wählen ein Körperteil aus..<br/>%2Stelle das Blutvolumen wieder her, indem der gewünschte %3IV Flüssigkeitstyp%4 ausgewählt wird. + %3Fluidi EV%4 ristorano volume di sangue perso. Sangue, Plasma, e Salina sono funzionalmente identiche.<br/><br/>%3Utilizzo:%4<br/>%2Usa [%3%13%4] o [%3%14%4] e seleziona un arto.<br/>%2Ristora il volume di sangue selezionando il tipo di %3Fluido EV%4 desiderato. + %3IV 輸液%4は失われた血液を回復します。血液、血漿、生理食塩水は機能的には同じです。<br/><br/>%3使用方法:%4<br/>%2[%3%13%4] または [%3%14%4] を使って四肢を選択します。<br/>%2希望の%3IV 輸液%4の種類を選択して、血液量を復元します。 + + + Increase Heart Rate | Wake Up Faster + Zwiększ Tętno | Obudź się Szybciej + 심박수 상승 | 더 빨리 일어남 + Aumentar a frequência cardíaca | Acordar mais rápido + Herzfrequenz erhöhen | Wache schneller auf + Aumenta ritmo cardiaco | Accelera rinvenimento + 心拍数を上げる | はやく起こす + + + %3Epinephrine%4 increases a patient's pulse as well as potentially decreasing the time between consciousnesss checks (effectively reducing the time needed for the patient to wake up).<br/><br/>%3Usage%4<br/>%2Use [%3%13%4] or [%3%14%4] and select an appendage.<br/>%2Inject %3Epinephrine%4. + %3Adrenalina%4 zwiększa tętno pacjenta, zmniejszając czas pomiędzy sprawdzeniami przytomności (efektywnie redukując czas potrzebny do przebudzenia się pacjenta).<br/><br/>%3Użycie%4<br/>%2Użyj [%3%13%4] lub [%3%14%4] i wybierz kończynę.<br/>%2Wstrzyknij %3Adrenalinę%4. + %3에피네프린%4는 환자의 맥박을 증가시킬 뿐만 아니라 의식 검사 사이의 시간을 감소시킬 수 있습니다(환자가 깨어나는 데 필요한 시간을 효과적으로 단축).<br/>%3사용 방법:%4<br/>%2[%3%13%4] 또는 [%3%14%4]를 선택하고 부위를 선택하십시오.<br/>%2%3에피네프린%4을 주사하십시오. + %Epinefrina%4 aumenta o pulso do paciente, bem como potencialmente diminui o tempo entre os exames de consciência (reduzindo efetivamente o tempo necessário para que o paciente acorde).<br/><br/>%3Uso%4<br/>%2Utilize [%3%13%4] ou [%3%14%4] e selecione um apêndice.<br/>%2Injete %3Epinefrina%4. + %3Epinephrine%4 erhöht den Puls eines Patienten und verkürzt möglicherweise die Zeit zwischen Bewusstseinskontrollen (wodurch die Zeit, die der Patient zum Aufwachen benötigt, effektiv verkürzt wird).<br/><br/>%3Verwendung%4<br/>%2Verwende [%3%13%4] oder [%3%14%4] und wählen ein Körperteil aus.<br/>%2Injiziere %3Epinephrine%4. + %3Epinefrina%4 aumenta il ritmo cardiaco di un paziente e riduce potenzialmente gli intervalli tra verifiche di coscienza (effettivamente riducendo il tempo necessario che questo paziente si svegli).<br/><br/>%3Utilizzo%4<br/>%2Usa [%3%13%4] o [%3%14%4] e seleziona un arto.<br/>%2Inietta %3Epinefrina%4. + %3アドレナリン%4は、患者の脈拍を増加させるだけでなく、意識チェックの間隔を短縮する可能性があります。 (患者が目覚めるまでに必要な時間を効果的に短縮します)<br/><br/>%3使用方法%4<br/>%2[%3%13%4] または [%3%14%4] を使って四肢を選択します。<br/>%2%3アドレナリン%4を注射します。 + + + Restore Like New + Jak Nowo Narodzony + 신체 완치 + Restaurar como novo + Wie neu wiederherstellen + Cura completa + 生まれたてのように回復する + + + The %3Personal Aid Kit%4 is an item that allows a soldier to be fully healed. Independent of %3ACE Settings%4, it requires that the patient is in %3Stable Condition%4 before use.<br/><br/>%3Stable Condition%4 qualifies as:<br/>%2Unit is %3Alive%4.<br/>%2Unit is %3Conscious%4.<br/>%2Unit has no active %3Bleeding%4.<br/>%2Heart Rate >= 40.<br/>%2Systolic BP >= 60.<br/>%2Diastolic BP >= 50.<br/><br/>%3Usage:%4<br/>%2Move to appropriate location depending on %3ACE Settings%4.<br/>%2Use [%3%13%4] or [%3%14%4] and select %3Advanced Treatments%4<br/>%2Select %3Use Personal Aid Kit%4. + %3Apteczka Osobista%4 jest przedmiotem pozwalającym na pełne uleczenie gracza. Niezależnie od %3Ustawień ACE%4, wymagane jest, aby pacjent był w%3Stanie Stabilnym%4 przed jej użyciem.<br/><br/>%3Stan Stabilny%4 występuje gdy:<br/>%2Jednostka jest %3Żywa%4.<br/>%2Jednostka jest %3Przytomna%4.<br/>%2Jednostka nie%3Krwawu%4.<br/>%2Tętno>= 40. <br/>%2Ciśnienie Skurczowe >= 60.<br/>%2Ciśnienie Rozkurczowe >= 50.<br/><br/>%3Użycie:%4<br/>%2Udaj się do właściwej lokacji żależnej od %3Ustawień ACE%4.<br/>%2Użyj [%3%13%4] lub [%3%14%4] i wybierz %3Zaawansowane Zabiegi%4.<br/>%2Wybierz %3Użyj Apteczki Osobistej%4. + %3개인응급키트%4는 병사를 완치시킬 수 있는 아이템입니다. %3ACE 설정%4과 무관하게 사용 전에 환자가 %3안정된 상태%4로 있어야 합니다.<br/><br/>%3안정된 상태%4는 다음 조건이 필요합니다:<br/>%2유닛이 %3살아있어야%4 합니다.<br/>%2유닛은 %3의식이 있어야%4 합니다.<br/>%2유닛은 %3출혈이 일어나지 않은 상태%4여야 합니다.<br/>%2심박수가 40 이상이어야 합니다.<br/>%2수축 혈압이 60 이상이어야 합니다.<br/>%2이완 혈압이 50 이상이어야 합니다.<br/><br/>%3사용 방법:%4<br/>%2%3ACE 설정%4에 따라 적절한 위치로 이동하십시오.<br/>%2[%3%13%4] 또는 [%3%14%4]를 사용하여 %3고급 치료%4를 선택하십시오.<br/>%2%3개인응급키트 사용%4을 선택하십시오. + O %3Kit De Primeiros Socorros Pessoal%4 é um item que permite a cura completa de um combatente. Independente das %3Configurações do ACE%4, é necessário que o paciente esteja em %3Condições Estáveis%4 antes do uso.<br/><br/>%3Condições estáveis%4 qualificam-se como:<br/>%2Unidade está %3Viva%4.<br/>%2Unidade está %3Consciente%4.<br/>%2Unidade não está %3Sangrando%4.<br/>%2Frequência Cardíaca >= 40.<br/>%2PA Sistólica >= 60.<br/>%2PA Diastólica >= 50.<br/><br/>%3Uso:%4<br/>%2Mover-se a uma localização apropriada, a depender das %3Configurações do ACE%4.<br/>%2Utilizar [%3%13%4] ou [%3%14%4] e selecionar %3Tratamentos Avançados%4<br/>%2Selecionar %3Usar o kit de primeiros socorros%4. + Das %3Persönliche Erste Hilfe Kit%4 ist ein Gegenstand, der es einem Soldaten ermöglicht, vollständig geheilt zu werden. Unabhängig von den %3ACE-Einstellungen%4 ist es erforderlich, dass sich der Patient vor der Verwendung in einem %3stabilen Zustand%4 befindet.<br/><br/>%3Stabiler Zustand%4 gilt wenn:<br/>%2Einheit ist %3am Leben%4 .<br/>%2Einheit ist %3Bei Bewusstsein%4.<br/>%2Einheit hat keine aktive %3Blutung%4.<br/>%2Herzfrequenz >= 40.<br/>%2Systolischer Blutdruck >= 60.< br/>%2Diastolischer Blutdruck >= 50.<br/><br/>%3Verwende:%4<br/>%2Bewege den Patienten je nach %3ACE-Einstellungen%4 an den entsprechenden Ort.<br/>%2Verwende [%3% 13%4] oder [%3%14%4] und wähle %3Erweiterte Behandlungen%4<br/>%2Wähle %3Persönliche Erste Hilfe Kit verwenden%4. + Il %3Kit di Pronto Soccorso%4 è un oggetto che permette di curare completamente un soldato, indipendentemente da %3impostazioni ACE%4, richiede che il paziente sia in %3condizione stabile%4 prima dell'utilizzo.<br/><br/>%3Condizione stabile%4 significa:<br/>%2Paziente è %3Vivo%4.<br/>%2Paziente è %3Conscio%4.<br/>%2Paziente non sta %3Sanguinando%4.<br/>%2Ritmo cardiaco >= 40.<br/>%2Sistolico BC >= 60.<br/>%2Diastolico BC >= 50.<br/><br/>%3Utilizzo:%4<br/>%2Sposta in luogo specifico a seconda delle %3impostazioni ACE%4.<br/>%2Usa [%3%13%4] o [%3%14%4] e seleziona %3Trattamenti avanzati%4<br/>%2Seleziona %3Usa Kit di Pronto Soccorso%4. + %3個人用治療キット%4は、兵士を完全に回復できるアイテムです。使用時には%3ACE 設定%4と関係なく、対象の患者が%3安定状態%4である必要があります。<br/><br/>%3安定状態%4とは次の状態です:<br/>%2ユニットが %3生存%4している。<br/>%2ユニットが %3覚醒状態%4である。<br/>%2ユニットが %3出血状態%4ではない。<br/>%2心拍数が40以上。<br/>%2収縮期血圧が60以上。<br/>%2拡張期血圧が50以上。<br/><br/>%3使用方法:%4<br/>%2%3ACE 設定%4で使用が許可された場所へ移動する。<br/>%2[%3%13%4] または [%3%14%4] を使って%3高度な治療%4を選択する。<br/>%2%3個人用治療キットを使う%4を選択して使用します。 + + + Fix Fractures + Opatrywanie Złamań + 골절을 치료합니다 + Consertar Fraturas + Brüche richten + Risolvi frattura + 骨折を治す + + + A %3Splint%4 is used to fix fractures. The %3Splint%4 is consumed when used.<br/><br/>%3Usage:%4<br/>%2Use [%3%13%4] or [%3%14%4] and select an affected appendage.<br/>%2Select %3Apply Splint%4. + %3Szyna%4 jest używana do leczenie złamań. %3Szyna%4 jest zużywana po wykorzystaniu.<br/><br/>%3Użycie:%4<br/>%2Użyj [%3%13%4] lub [%3%14%4] i wybierz kończynę, na którą ma być założona.<br/>%2Wybierz %3Załóż Szynę%4. + %3부목%4은 골절을 치료하는 데 사용되며 %3부목%4은 사용 시 소모됩니다.<br/><br/>%3사용 방법%4<br/>%2[%3%13%4] 또는 [%3%14%4]를 사용하여 해당 부위를 선택하십시오.<br/>%2%3부목 대기%4를 선택하십시오. + A %3Tala%4 é utilizada para consertar fraturas. Ela é consumida quando utilizada.<br/><br/>%Uso:%4<br/>%2Utilize [%3%13%4] ou [%3%14%4] e selecione um membro afetado.<br/>%2Selecione %3Aplicar Tala%4. + Ein %3Splint%4 wird zur Fixierung von Frakturen verwendet. Der %3Splint%4 wird bei Verwendung verbraucht.<br/><br/>%3Verwendung:%4<br/>%2Verwende [%3%13%4] oder [%3%14%4] und wählen ein Körperteil aus.<br/>%2Wähle %3Schiene verwenden%4. + Una %3Gessatura%4 è usata per risolvere fratture. La %3Gessatura%4 è consumata quando usata.<br/><br/>%3Utilizzo:%4<br/>%2Usa [%3%13%4] o [%3%14%4] e seleziona un arto afflitto.<br/>%2Seleziona %3Applica Gessatura%4. + %3添え木%4は骨折の治療に使います。%3添え木%4は使用時に消費します。<br/><br/>%3使用方法:%4<br/>%2[%3%13%4] または [%3%14%4] を使って使用したい四肢を選択します。<br/>%2%3添え木を当てる%4を選択して使用します。 + + + Prevent Wounds From Reopening + Zapobiegaj Ponownemu Otwieraniu się Ran + 상처가 재발하지 않도록 방지합니다 + Prevenir Reabertura de Feridas + Impedisce la riapertura di ferite + 傷口が開くのを防ぐ + + + A %3Surgical Kit%4 is used to prevent wounds from reopening after being bandaged. Depending on settings, it can also clear trauma and may require additional %3Sutures%4 to close wounds. Sutures are consumable, much like bandages, and are not a replacement for the Surgical Kit.<br/><br/>%3Usage:%4<br/>%2Use [%3%13%4] or [%3%14%4] and select %3Advanced Treatment%4.<br/>%2Select %3Use Surgical Kit%4. + %3Zestaw do Szycia%4 jest używany do zapobiegania otwieraniu się ran po ich zabandażowaniu. W zależności od ustawień może także je leczyć.<br/><br/>%3Użycie:%4<br/>%2Użyj [%3%13%4] lub [%3%14%4] i wybierz %3Zaawansowane Zabiegi%4.<br/>%2Wybierz %3Użyj Zestawu do Szycia%4. + %3봉합 키트%4는 붕대를 감은 후 상처가 다시 열리는 것을 방지하기 위해 사용됩니다. 설정에 따라 외상을 치료할 수도 있습니다.<br/><br/>%3사용 방법:%4<br/>%2[%3%13%4] 또는 [%3%14%4]를 사용하여 %3고급 치료%4를 선택하십시오.<br/>%2%3봉합 키트%4를 선택하십시오. + O %3Kit Cirúrgico%4 é utilizado para prevenir a reabertura de feridas após a aplicação de bandagens. A depender das configurações, ele também pode remover traumas e pode requerir %3Suturas%4 adicionais para fechar feridas. Suturas são consumíveis, tal como as bandagens, e não são substituem o Kit Cirúrgico.<br/><br/>%3Uso:%4<br/>%2Utilize [%3%13%4] ou [%3%14%4] e selecione %3Tratamento Avançado%4.<br/>%2Selecione %3Usar Kit Cirúrgico%4. + Un %3Kit Chirurgico%4 è usato per impedire che ferite bendate si riaprano. A seconda delle impostazioni, può anche azzerare danni o potrebbe richiedere %3Suture%4 aggiuntive per chiudere ferite. Suture sono consumabili proprio come bende, non sono un sostituto per un Kit Chirurgico.<br/><br/>%3Utilizzo:%4<br/>%2Usa [%3%13%4] o [%3%14%4] e seleziona %3Trattamenti Avanzati%4.<br/>%2Seleziona %3Usa Kit Chirurgico%4. + %3手術キット%4は包帯を巻いた傷口が再度開いて出血するのを防ぎます。設定によっては、負傷を取り除いたり、傷口を閉じるのに%3糸付縫合針%4を必要としたりします。糸付縫合針は消耗品で包帯のように使用され、手術キットを代替するものではありません。<br/><br/>%3使用方法:%4<br/>%2[%3%13%4] または [%3%14%4] を使って%3高度な治療%4を選択する。<br/>%2%3手術キット%4を選択して使用します。 + + + Stop Bleeding + Zatamuj Krwawienie + 피를 멈추게 합니다 + Parar o Sangramento + Ferma emorragia + 出血を止める + + + A %3Tourniquet%4 stops bleeding temporarily so that a wound(s) can be bandaged. Can only be used on limbs.<br/><br/>%3Usage:%4<br/>%2Use [%3%13%4] or [%3%14%4] and select an affected appendage.<br/>%2Select %3Apply Tourniquet%4. + %3Staza%4 czasowo zatrzymuje krwawienie pozwalając na zabandażowanie ran. Może być użyta tylko na kończynach.<br/><br/>%3Użycie:%4<br/>%2Użyj [%3%13%4] lub [%3%14%4] i wybierz kończynę.<br/>%2Wybierz %3Załóż Stazę%4. + %3지혈대%4는 출혈을 일시적으로 멈춰 상처(들)에 붕대를 감을 수 있습니다.<br/><br/>%3사용 방법:%4<br/>%2[%3%13%4] 또는 [%3%14%4]를 사용하여 해당 부위를 선택하십시오.<br/>%2%3지혈대 적용%4를 선택하십시오. + O %3Torniquete%4 interrompe o sangramento temporariamente, para que feridas possam ser enfaixadas. Seu uso é restrito aos membros.<br/><br/>%3Uso:%4<br/>%2Utilize [%3%13%4] ou [%3%14%4] e selecione um membro afetado.<br/>%2Selecione %3Aplicar Torniquete%4. + Un %3Laccio Emostatico%4 ferma emorragie temporaneamente in modo da poter bendare ferite con calma. Utilizzabile su arti.<br/><br/>%3Utilizzo:%4<br/>%2Usa [%3%13%4] o [%3%14%4] e seleziona un arto afflitto.<br/>%2Seleziona %3Applica Laccio Emostatico%4. + %3止血帯%4は一時的に出血を止め、その間に傷に包帯を巻くことができます。四肢にのみ使用できます。<br/><br/>%3使用方法:%4<br/>%2[%3%13%4] または [%3%14%4] を使って使用したい四肢を選択します。<br/>%2%3止血帯を巻く%4を選択して使用します。 + + + Medical Menu + Sanitätsmenü + Menu medyczne + Menu Médico + Медицинское меню + Menú médico + Zdravotnická nabídka + Menù Medico + Menu médical + 医療メニュー + 의료 메뉴 + 医疗菜单 + 醫療選單 + Medikal Menü + + + Treatment, Simplified + Leczenie, Uproszczone + 치료를 단순화 + Cure, Semplificato + Tratamento, Simplificado + 治療を簡略化する + + + The %3Medical Menu%4 is a dedicated %3interface%4 to facilitate %3medical treatment%4. The %3R%4 and %3L%4 letters indicate the side of the patient's body being treated.<br/><br/>%3Usage:%4<br/>%2Use [%3%14%4] while looking at a patient to open the Medical Menu. Opening the menu without a patient allows for self-treatment.<br/>%2Alternatively, use [%3%12%4] or [%3%13%4] and select %3Medical Menu%4.<br/><br/>%3Keybinds:%4<br/>%2Use [%3W, A, S, D, X, and Z%4] to select body parts.<br/>%2Use your %3number keys%4 to select treatment categories. + %3Menu Medyczne%4 jest dedykowanym %3interfejsem%4 ułatwiającym %3zabiegi medyczne%4. Litery %3P%4 i %3L%4 wskazują, która część ciała pacjenta jest opatrywana.<br/><br/>%3Użycie:%4<br/>%2Użyj [%3%14%4] podczas patrzenia na pacjenta aby otworzyć Menu Medyczne. Otwarcie menu bez patrzenia na pacjenta otwiera menu leczenia własnej postaci.<br/>%2Alternatywnie, użyj [%3%12%4] lub [%3%13%4] i wybierz %3Menu Medyczne%4.<br/><br/>%3Przypisanie Klawiszy:%4<br/>%2Użyj [%3W, A, S, D, X, i Z%4] aby wybrać części ciała.<br/>%2Użyj %3klawiszy numerycznych%4 do wybrania kategorii leczenia. + %3의료 메뉴%4는 %3의료%4를 용이하게 사용하기 위한 전용 %3인터페이스%4입니다. %3우%4 및 %3좌%4 문자는 치료 중인 환자의 신체 측면을 나타냅니다.<br/><br/>%3사용 방법:%4<br/>%2환자를 보고 [%3%13%4]를 사용하여 의료 메뉴를 여십시오. 환자 없이 메뉴를 열면 자가 치료가 됩니다.<br/>%2아니면 [%3%12%4] 또는 [%3%13%4]를 사용하고 %3의료 메뉴%4를 선택하십시오.<br/><br/>%3키 설정%4<br/>%2[%3W, A, S, D, X와 Z%4]를 사용하여 신체 부위를 선택하십시오.<br/>%2%3번호판 키%4를 사용하여 치료 카테고리를 선택하십시오. + O %3Menu Médico%4 é uma %3interface%4 dedicada a facilitar o %3tratamento médico%4. As letras %3R%4 e %3L%4 indicam o lado do corpo do paciente que está recebendo o tratamento.<br/><br/>%3Uso:%4<br/>%2Utilize [%3%14%4] enquanto olha o paciente para abrir o Menu Médico. Se não houver paciente, o menu será de auto-tratamento.<br/>%2Alternativamente, utilize [%3%12%4] ou [%3%13%4] e selecione %3Menu Médico%4.<br/><br/>%3Atalhos de teclado:%4<br/>%2Utilize [%3W, A, S, D, X, e Z%4] para selecionar partes do corpo.<br/>%2Utilize as %3teclas numéricas%4 para selecionar as categorias de tratamento. + Il %3Menù Medico%4 è un'%3interfaccia%4 dedicata a facilitare %3trattamenti medici%4. Le lettere %3Dx%4 e %3Sx%4 contrassegnano i lati del corpo del paziente che si stanno medicando.<br/><br/>%3Utilizzo:%4<br/>%2Usa [%3%14%4] guardando il paziente per aprire il Menù Medico. Aprire il menù senza paziente di fronte permette l'automedicazione.<br/>%2In alternativa, usa [%3%12%4] o [%3%13%4] e seleziona %3Menù Medico%4.<br/><br/>%3Comandi:%4<br/>%2Usa [%3W, A, S, D, X, and Z%4] per selezionare parti del corpo.<br/>%2Usa %3tasti numerici%4 per selezionare categorie di cure. + %3医療メニュー%4は%3治療%4をしやすくするための専用%3インターフェース%4です。%3右%4と%3左%4の文字は治療を受ける患者の向きを表しています。<br/><br/>%3使用方法:%4<br/>%2[%3%14%4] を患者に視点を合わせながら押すことで患者の医療メニューを開けます。視点を合わせないで押すと、自分の医療メニューを開くことが出来ます。<br/>%2もしくは [%3%12%4] または [%3%13%4] を使って%3医療メニュー%4を選択します。<br/><br/>%3キーバインド:%4<br/>%2[%3W, A, S, D, X, と Zキー%4] を使って身体の部位を選択できます。<br/>%2%3数字キー%4を使って治療項目を選択できます。 + + + Portable, Precise, Rugged + Przenośny, Precyzyjny, Wytrzymały + 휴대성 있고, 정밀하며, 견고합니다 + Portátil, Preciso e Robusto + Leggero, Preciso, Robusto + 高機動、高精度、高耐久 + + + The %3Horus ATragMX%4 considers atmospheric conditions, gun data, ammunition, range, speed, and muzzle velocity to calculate precise aiming solutions with %3Come-Up%4 results - and even accounts for %3Coriolis%4 and %3Spin Drift%4 effects. %3ATragMX%4, loaded on a handheld computer made by %3TDS Recon%4, is easy to use and lightning fast. The %3Recon%4 meets the rigorous %3MIL-STD-810F%4 military standard for drops, vibration, humidity, altitude and extreme temperatures.<br/><br/>%3Usage:%4<br/>Please visit the wiki page for more information. + %3Horus ATragMX%4 uwzględnia warunki atmosferyczne, dane broni, amunicję, zasięg, prędkość wylotową do wyliczenia precyzyjnych nastaw - ponadto uwzględnia %3Efekt Coriolisa%4 oraz %3Efekt Spinowy%4. %3ATragMX%4, załadowany na komputer przenośny wyprodukowany przez %3TDS Recon%4, jest łatwy i prosty w użyciu. %3Recon%4 spełnia rygorystyczne wymagania %3MIL-STD-810F%4 pod względem odporności na upadek, wibracje, wilgotność, wyskość oraz ekstremalne temperatury.<br/><br/>%3Użycie:%4<br/>Wejdź na wiki po więcej informacji. + %3호러스 ATragMX%4는 대기 상태, 총기 데이터, 탄약, 사거리, 탄속 그리고 총구 속도를 고려하여 %3나타나는 결과%4로 정확한 해결책을 계산하고 %3코리올리 효과%4와 %3스핀 드리프트 효과%4도 설명합니다. %3TDS Recon%4 사에서 제작한 휴대용 컴퓨터에 탑재된 %3ATragMX%4는 사용하기 쉽고 매우 빠릅니다. %3Recon%4 사는 낙하, 진동, 습도, 고도 및 극한 온도에 대해 엄격한 %3%4MIL-STD-810F%4 군사 표준을 충족합니다.<br/><br/>%3사용 방법:%4<br/>자세한 내용은 위키 페이지를 참조하십시오. + O %3Horus ATragMX%4 considera condições atmosféricas, dados de armas, munição, alcance, e velocidade do projétil - e até os efeitos Coriolis e Spin - para calcular as configurações necessárias da mira. O %3ATragMX%4, carregado em um computador portátil feito pela %3TDS Recon%4, é rápido e fácil de usar. O %3Recon%4 satisfaz os rigorosos padrões militares %3MIL-STD-810F%4 para quedas, vibrações, umidade, altitude e temperaturas extremas.<br/><br/>%3Uso:%4<br/>Por favor, visite a wiki para mais informações. + L'%3Horus ATragMX%4 tiene conto di condizioni atmosferiche, caratteristiche del fucile, munizioni, portata e velocità alla volata per calcolare precise impostazioni di mira con risultati %3Come-Up%4 - considerando anche effetti %3Coriolis%4 e %3Magnus%4. L'%3ATragMX%4, caricato su un computer portabile %3TDS Recon%4, è facile da usare e molto rapido nei calcoli. Il %3Recon%4 soddisfa i rigorosi standard militari %3MIL-STD-810F%4 per cadute, vibrazioni, umidità, altitudine e temperature estreme.<br/><br/>%3Utilizzo:%4<br/>Visitate la pagina wiki per ulteriori informazioni. + %3ホルス ATragMX%4は、大気条件、銃のデータ、弾薬、射程、速度、および初速を考慮した%3最適な結果が得られる%4正確な照準のための計算とその解法を提供します。さらに、%3コリオリ効果%4および%3スピン ドリフト効果%4も考慮します。%3ATragMX%4は%3TDS Recon製%4の携帯コンピュータに読み込まれており、使いやすく、超高速です。%3Recon%4はは、落下、振動、湿度、高度、極端な温度に関する厳格な%3MIL-STD-810F%4軍事規格を満たしています。<br/><br/>%3使用方法:%4<br/>詳細については、Wiki ページを参照してください。 + + + Bring Out Your Dead + Przyprowadź Swoich Zmarłych + 죽은 사람을 끌어냅니다 + Retorne os Abatidos + Recupera i tuoi morti + 死者を連れ出す + + + %3Body Bags%4 are used to transport dead bodies. They can be dragged and loaded into vehicles.<br/><br/>%3Usage:%4<br/>%2Approach a dead body.<br/>%2Use [%3%13%4] or [%3%15%4] and select %3Place Body In Bodybag%4. + %3Worki na Zwłoki%4 są używane do transportu ciał. Worki mogą być przeciągane i ładowanie do pojazdów.<br/><br/>%3Użycie:%4<br/>%2Podejdź do martwego ciała.<br/>%2Użyj [%3%13%4] lub [%3%15%4] i wybierz %3Umieść Ciało w Worku na Zwłoki%4. + %3시체 운반용 부대%4는 시체를 운반하는 데 사용되며, 차량으로 끌고 가서 적재할 수 있습니다.<br/><br/>%3사용 방법:%4<br/>%2시체에 접근하십시오.<br/>%2[%3%13%4] 또는 [%3%15%4]를 사용하여 %3시체 운반용 부대에 담기%4를 선택하십시오. + OS %3Sacos de Cadáver%4 são utilizados para transportar cadáveres. Eles podem ser arrastados e embarcados em veículos.<br/><br/>%3Uso:%4<br/>%2Aproxime-se de um cadáver.<br/>%2Utilize [%3%13%4] ou [%3%15%4] e selecione %3Colocar cadáver dentro do saco%4. + %3Sacche per cadaveri%4 sono usate per trasportare i morti. Possono essere trascinate e caricate su veicoli.<br/><br/>%3Utilizzo:%4<br/>%2Avvicinati ad un morto.<br/>%2Usa [%3%13%4] o [%3%15%4] e seleziona %3Metti il corpo nella sacca per cadaveri%4. + %3遺体袋%4は、遺体の輸送に使用されます。引きずって車両に積み込むことができます。<br/><br/>%3使用方法:%4<br/>%2遺体に近寄る。<br/>%2[%3%13%4] または [%3%15%4] を使って%3遺体袋に入れる%4を選択して使用します。 + + + Take Prisoners + Weź Więźniów + 포로를 데려갑니다 + Faça Prisioneiros + Prendi prigionieri + 捕虜の捕り方 + + + %3Cable Ties%4 enable a soldier to capture and detain another soldier. Once apprehended, the captor gains the ability to inspect the prisoner's belongings, set them free, or accompany them to an alternate area. Transporting escorted prisoners is also possible, including loading them into vehicles if needed. Depending on your settings, units may need to surrender before being taken captive.<br/><br/>%3Usage:%4<br/>%2Approach the unit and use the [%3%13%4].<br/>%2The interaction is located around the hands in the form of a handcuffs icon.<br/>%2Repeat to release. + %3Opaski Zaciskowe%4 umożliwiają żołnierzowi pojmanie i zatrzymanie innego żołnierza, a po zatrzymaniu pozwalają na sprawdzenia ekwipunku więźnia, uwolnienia go lub przeniesienia w inne miejsce, a także załadowania go do pojazdu, jeśli zajdzie taka potrzeba. W zależności od ustawień, jednostka może wymagać poddania się przed wzięciem do niewoli.<br/><br/>%3Użycie:%4<br/>%2Podejdź do jednostki i użyj [%3%13%4].<br/>%2Interakcja jest zlokalizowana na rękach pod postacią ikony kajdanek.<br/>%2Użyj ponownie aby uwolnić. + %3케이블 타이%4를 사용하면 병사가 다른 병사를 포로로 잡고 구금할 수 있습니다. 체포되면 포로는 포로의 소지품을 검사하여 석방하거나 대체 지역으로 동행시킬 수 있습니다. 필요하면 차량에 싣는 것을 포함하여 죄수를 호송할 수도 있습니다. 설정에 따라 유닛은 포로가 되기 전에 항복해야 할 수도 있습니다.<br/><br/>%3사용 방법:%4<br/>%2유닛에 접근하여 [%3%13%4]를 사용하십시오.<br/>%2상호작용은 수갑 아이콘의 형태로 손 부분에 위치합니다.<br/>%2해제 하려면 같은 행동을 반복하십시오. + As %3Algema Plásticas%4 permitem a captura e detenção de soldados. Quando apreendidos, o captor se torna capaz de inspecionar os pertences do prisioneiro, liberá-los, ou acompanhá-los a outro local. Transportes mais longos também são possíveis, podendo colocá-los em veículos, se necessário. A depender das configurações, pode ser necessário que as unidades estejam rendidas antes de serem detidas.<br/><br/>%3Uso:%4<br/>%2Aproxime-se da unidade e use [%3%13%4].<br/>%2A interação encontra-se próxima às mãos simbolizada por uma algema.<br/>%2Faça o mesmo para liberar. + %3Fascette%4 permettono a soldati di catturare e ammanettare altri soldati. Una volta catturati è possibile ispezionare il loro inventario, liberarli o scortarli altrove. È inoltre possibile caricarli su veicoli se necessario. A seconda delle impostazioni, potrebbe essere necessaria la resa di unità prima di poterle ammanettare.<br/><br/>%3Uso:%4<br/>%2Avvicinati all'unità e usa [%3%13%4].<br/>%2L'interazione è localizzata intorno alle mani con l'icona di manette.<br/>%2Ripeti per liberare. + %3ケーブル タイ%4は兵士が他の兵士を拘束できるようにします。一度拘束すれば、拘束者は捕虜の所持品を検査したり、釈放したり、別の場所に移送することができるようになります。必要に応じて車両に積み込むなどして捕虜の輸送や護送も可能です。設定によっては、ユニットは捕虜になる前に降伏する必要がある場合があります。<br/><br/>%3使用方法:%4<br/>%2対象に近づいて [%3%13%4] を使います。<br/>%2インタラクションは、手錠アイコンの形で手のあたりに表示されます。<br/>%2同様の方法で解放できます。 + + + Phone In An Explosion + Zadzwoń po Eksplozję + 기폭 전화입니다 + Celular Explosivo + Cellulare per esplosivi + 電話でドカン + + + The %3Cellphone%4 is functionally a %3Clacker%4. Use it to connect and detonate an explosive device. Multiple devices can be linked to the cellphone and called within the phonebook.<br/><br/>%3Usage:%4<br/>%2Place an explosive.<br/>%2Use [%3%13%4], select %3Explosives%4, and select %3Cellphone%4.<br/>%2Open the cellphone interface with [%3%12%4].<br/>%2Navigate the phone book with the arrows and select your calling number.<br/>%2Call the number to detonate. + %3Telefon%4 jest funkcjonalnie %3Detonatorem%4. Użyj go, aby podłączyć i zdetonować ładunek wybuchowy. Wiele urządzeń może być połączonych z jednym telefonem komórkowym i wywoływanych za pomocą książki telefonicznej.<br/><br/>%3Użycie:%4<br/>%2Połóż ładunek wybuchowy<br/>%2Użyj [%3%13%4], wybierz %3Ładunki Wybuchowe%4, i wybierz %3Telefon%4. <br/>%2Otwórz interfejs telefonu za pomocą [%3%12%4].<br/>%2Nawiguj po książce telefonicznej za pomocą strzałek i wybierz żądany numer.<br/>%2Zadzwoń pod niego aby wywołać wybuch. + %3휴대전화%4는 기능적으로는 %3격발기%4입니다. 폭발물 장치를 연결하여 폭발물을 터뜨릴 때 사용합니다. 여러 장치를 휴대전화와 연결하여 전화번호부 내에서 호출할 수 있습니다.<br/><br/>%3사용 방법:%4<br/>%2폭발물을 놓으십시오.<br/>%2[%3%13%4]를 사용하고, %3폭발물%4을 선택하고, %3휴대전화%4를 선택하십시오.<br/%2[%3%12%4]로 휴대전화 인터페이스를 여십시오.<br/>%2기폭시킬 전화번호를 선택하십시오. + O %3Celular%4 serve como dispositivo de detonação ao explosivo. Utilize-o para conectar e detonar dispositivos explosivos. Múltiplos dispositivos podem estar conectados ao celular e aparecerão na lista telefônica.<br/><br/>%3Uso:%4<br/>%2Plante o explosivo.<br/>%2Utilize [%3%13%4], selecione %3Explosivos%4, e selecione %3Celular%4.<br/>%2Abra a interface do celular com [%3%12%4].<br/>%2Navegue pela lista telefônica utilizando as setas e selecione o número desejado.<br/>%2Ligue para o número para detonar. + Il %3Cellulare%4 è essenzialmente una %3spoletta%4. Usalo per collegare e detonare esplosivi. Molteplici esplosivi possono essere collegati ad un cellulare e detonati chiamando numeri nella rubrica.<br/><br/>%3Utilizzo:%4<br/>%2Piazza un esplosivo.<br/>%2Usa [%3%13%4], seleziona %3Esplosivi%4, seleziona %3Cellulare%4.<br/>%2Apri l'interfaccia del telefono con [%3%12%4].<br/>%2Naviga la rubrica con le freccette e seleziona il numero da chiamare.<br/>%2Chiama il numero del dispositivo da detonare. + %3携帯電話%4は%3点火装置%4として機能します。爆破装置を接続して起爆するために使用します。複数のデバイスを携帯電話に繋ぎ、電話帳から呼び出すことができます。<br/><br/>%3使用方法:%4<br/>%2爆発物を設置。<br/>%2[%3%13%4] を使い、%3爆発物%4を選択して、%3携帯電話%4を選択します。<br/>%2[%3%12%4] を使って携帯電話インターフェースを開きます。<br/>%2矢印ボタンで電話帳に移動し、発信番号を選択します。<br/>%2電話を掛けることで起爆します。 + + + Portable Reading Lights + Przenośne Lampki do Czytania + 휴대용 조명입니다 + Luzes de Leitura Portáteis + Luci da Lettura Portabili + 携帯読書灯 + + + %3Chemlight Shields%4 give you the ability to read your map, even in dark environments. However, when using %3Chemlight Shields%4, you will have a slight glow around you.<br/><br/>%3Usage:%4<br/>%2Use [%3%12%4] and select %3Equipment%4.<br/>%2elect %3Chemlights%4 and %3Prepare Chemlight Shield (Color)%4.<br/>%2Open %3Map%4.<br/>%2Use [%3%12%4] and select %3Flashlights%4 where you will find your chemlight shield. + %3Osłony na Świetliki%4 dają ci możliwość czytania mapy nawet w najciemniejszym otoczeniu. Jednak podczas korzystania z %3Świetlików%4, wokół ciebie będzie widoczna lekka poświata<br/><br/>%3Użycie:%4<br/>%2Użyj [%3%12%4] i wybierz %3Ekwipunek%4. <br/>%2Wybierz %3Świetlik%4 i %3Przygotuj Osłonę Świetlika (Kolor)%4.<br/>%2Otwórz%3Mapę%4.<br/>%2Użyj [%3%12%4] i wybierz %3Latarki%4 gdzie znajdziesz twoją osłonę na świetlik. + %3화학조명 가림막%4은 어두운 환경에서도 지도를 읽을 수 있는 기능을 제공합니다. 단, %3화학조명 가림막%4을 사용하면 주변에 약간 빛이 납니다.<br/><br/>%3사용 방법:%4<br/>%2[%3%12%4]를 사용하고 %3장비%4를 선택하십시오.<br/>%2%3화학조명%4을 선택하고 %화학조명 가림막 준비%4를 선택하십시오.<br/>%2%3지도%4를 열고 [%3%12%4]를 사용하고 화학조명 가림막을 찾을 수 있는 %3손전등%4을 선택하십시오. + Os %3Protetores de Bastão de Luz%4 possibilitam a leitura de mapas em ambientes escuros. Todavia, quando utilizados, eles iluminam parcialmente os seus arredores.<br/><br/>%3Uso:%4<br/>%2Utilize [%3%12%4] e selecione %3Equipamento%4.<br/>%2Selecione %3Bastões de Luz%4 e %Preparar Protetor de Bastão de Luz (Cor)%4.<br/>%2Abrir %3Mapa%4.<br/>%2Utilize [%3%12%4] e selecione %3Lanternas%4 onde você encontrará o seu bastão de luz. + %3Scudi per Luci Chimiche%4 permettono di leggere la mappa anche in ambienti bui. Il loro utilizzo comporta però un leggero effetto di luminosità intorno alla testa del giocatore.<br/><br/>%3Utilizzo:%4<br/>%2Usa [%3%12%4] e seleziona %3Eqipaggiamenti%4.<br/>%2Seleziona %3Luce Chimica%4 e %3Prepara Scudo Luce Chimica (Colore)%4.<br/>%2Apri %3Mappa%4.<br/>%2Usa [%3%12%4] e seleziona %3Torcia%4 dove troverai il tuo scudo per luce chimica. + %3ケミライト シールド%4を使用すると、暗い環境でも地図を読み取ることができます。ただし、%3ケミライト シールド%4を使用すると、周囲がわずかに光ります。<br/><br/>%3使用方法:%4<br/>%2[%3%12%4] を使って%3装備%4を選択します。<br/>%2%3ケミライト%4を選択し%3ケミライト シールドを使う (色)%4を選択します。<br/>%2%3マップ%4を開きます。<br/>%2[%3%12%4] を使って%3フラッシュライト%4を選択し、ケミライト シールドを選択します。 + + + Remote Detonation + Zdalna Detonacja + 원격 격발기입니다 + Detonação Remota + Detonazione da remoto + リモコン爆弾 + + + Use %3Clackers%4 to connect and detonate an explosive device. Multiple devices can be linked to a clacker and detonated on different channels.<br/><br/>%3Usage:%4<br/>%2Place an explosive.<br/>%2Use [%3%13%4], select %3Explosives%4, and select the %3Clacker%4 you wish to link to.<br/>%2Open the ACE interface with [%3%12%4].<br/>%2Select %3Explosives%4 and select a %3Clacker%4.<br/>%2Select the %3Explosive%4 you wish to detonate. + Użyj%3Detonatora%4 do podłączenia i wysadzenia ładunku. Do jednego ładunku może być podłączonych wiele ładunków na różnych kanałach.<br/><br/>%3Użycie:%4<br/>%2Połóż ładunek wybuchowy.<br/>%2Użyj [%3%13%4], wybierz%3Mat. Wybuchowe%4, i wybierz %3Detonator%4, do którego chcesz go podłączyć.<br/>%2Otwórz menu interakcji ACE [%3%12%4].<br/>%2Wybierz %3Mat. Wybuchowe%4 i wybierz %3Detonator%4.<br/>%2Wybierz %3Ładunek%4 który chcesz wysadzić. + %3격발기%4를 사용하여 폭발물을 연결하고 폭발시킬 수 있습니다. 여러 폭발물을 다른 채널에 연결하여 폭발시킬 수도 있습니다.<br/><br/>%3사용 방법:%4<br/>%2폭발물을 설치합니다.<br/>%2[%3%13%4]를 사용하여 %3폭발물%4을 선택하고 연결할 %3격발기%4를 선택하십시오.<br/>%2[%3%12%4] 키로 ACE 인터페이스를 여십시오.<br/>%2%3폭발물%4을 선택하고 %3격발기%4를 선택하십시오.<br/>%2%3폭발물%4을 선택하면 폭발합니다. + Usa %3Spolette%4 per collegare e detonare dispositivi esplosivi. Molteplici dispositivi possono essere collagati a una spoletta e detonati individualmente come vari canali.<br/><br/>%3Utilizzo:%4<br/>%2Piazza esplosivo.<br/>%2Usa [%3%13%4], seleziona %3Esplosivo%4, seleziona la %3Spoletta%4 a cui intendi collegarlo.<br/>%2Apri l'interfaccia ACE con [%3%12%4].<br/>%2Seleziona %3Esplosivi%4 e scegli una %3Spoletta%4.<br/>%2Seleziona un %3Explosivo%4 da detonare. + %3点火装置%4を爆破装置に接続し使用することで起爆することが出来ます。複数の爆破装置を接続しそれぞれ違うチャンネルから起爆することもできます。<br/><br/>%3使用方法:%4<br/>%2爆発物を設置。<br/>%2[%3%13%4] を使い、%3爆発物%4を選択して、接続したい%3点火装置%4を選択します。<br/>%2ACEインターフェースを [%3%12%4] で開きます。<br/>%2%3爆発物%4を選択し、%3点火装置%4を選びます。<br/>%2起爆したい%3爆破装置%4を選択します。 + + + Navigate + Nawigacja + 내비게이션입니다 + Naviga + 測位 + + + The %3DAGR%4 is a simpler version of the %3MicroDAGR GPS%4. It has similar features but lacks the topographic and satellite imaging functions of the %3MicroDAGR GPS%4.<br/><br/>%3Usage:%4<br/>%2Equip a %3DAGR%4.<br/>%2Use [%3%12%4] and select %3Configure%4 or %3Toggle%4.<br/><br/>The following menus are available when configuring your %3DAGR:%4<br/>%11%2Data View: WIP<br/>%11%2GoTo WP: Select a waypoint to track.<br/>%11%2WP List: Add/Edit/Remove waypoints.<br/>%11%2Connect To: Connect %3DAGR%4 to the %3Vector 21 Rangefinder%4.<br/>%11%2Options + %3DAGR%4 jest uproszczoną wersją%3MicroDAGR GPS%4. Posiada podobne funkcje, ale brakuje mu map dostępnych w %3MicroDAGR GPS%4.<br/><br/>%3Użycie:%4<br/>%2Wyekwipuj %3DAGR%4.<br/>%2Użyj [%3%12%4] i wybierz %3Konfiguruj%4 lub %3Przełącz%4.<br/><br/>Poniższe menu są dostępne podczas konfiguracji %3DAGR:%4<br/>%11%2Widok Danych: WIP<br/>%11%2GoTo WP: Wybierz waypoint do śledzenia.<br/>%11%2WP List: Dodaj/Edytuj/Usuń waypointy.<br/>%11%2Połącz do: Połącz %3DAGR%4 do dalmierza %3Vector 21%4.<br/>%11%2Opcje + %3DAGR%4은 %3마이크로DAGR GPS%4의 단순화 버전입니다. 유사한 기능을 가지고 있지만 %3마이크로DAGR GPS%4의 지형 및 위성 이미지 기능이 없습니다.<br/><br/>%3사용 방법:%4<br/>%2%3DAGR%4를 장착하십시오.<br/>%2[%3%12%4를 사용하고 %3DAGR 설정%4 또는 %3DAGR 토글%4을 선택하십시오.<br/><br/>%3DAGR%4을 구성할 때 다음 메뉴를 사용할 수 있습니다:<br/>%11%2Data View: 제작 중<br/>%11%2GoTo WP: 추적할 웨이포인트를 선택합니다.<br/>%11%2WP List: 경유지를 추가/편집/제거합니다.<br/>%11%2Connect To: %3DAGR%4을 %3벡터 21%4 거리계에 연동시킵니다.<br/>%11%2옵션입니다 + Il %3DAGR%4 è una versione più semplice del %3GPS MicroDAGR%4. Ha funzioni simili, gli manca però la capacità di visualizzare informazioni topografiche e satellitari come il %3GPS MicroDAGR%4.<br/><br/>%3Utilizzo:%4<br/>%2Equipaggia il %3DAGR%4.<br/>%2Usa [%3%12%4] e seleziona %3Configura%4 o %3Apri%4.<br/><br/>I seguenti Menù sono disponibili durante la configurazione del tuo %3DAGR:%4<br/>%11%2Pagina Dati: WIP<br/>%11%2VaiA WP: Seleziona un waypoint da tracciare.<br/>%11%2Lista WP: Aggiungi/Modifica/Rimuovi waypoint.<br/>%11%2Collega A: Collega il %3DAGR%4 al %3Telemetro Vector 21%4.<br/>%11%2Opzioni + %3DAGR%4はシンプルなバージョンの%3MicroDAGR GPS%4です。同様の機能を備えていますが、%3MicroDAGR GPS%4のような地形および衛星画像機能はありません。<br/><br/>%3使用方法:%4<br/>%2%3DAGR%4を装備する。<br/>%2[%3%12%4] を使って%3設定%4 もしくは %3表示切替%4を選択します。<br/><br/>%3DAGR%4の設定には次のメニューを使用できます:<br/>%11%2Data View: WIP<br/>%11%2GoTo WP: 追跡するウェイポイントを選択します。<br/>%11%2WP List: ウェイポイントを追加/編集/削除します。<br/>%11%2Connect To: %3DAGR%4を%3ベクター 21 レンジファインダー%4に接続できます。<br/>%11%2Options + + + Explosive Revenge + Wybuchowa Zemsta + '폭발'적인 복수입니다 + Vendetta Esplosiva + 爆発的な復讐 + + + The %3Dead Man's Switch%4 is a device that allows a soldier to detonate an %3Explosive%4 when the soldier dies.<br/><br/>%3Usage:%4<br/>%2Use [%3%12%4] and select %3Explosives%4.<br/>%2Select %3Dead Man's Switch%4 and connect the desired %3Explosive%4.<br/>%2Repeat the process and disconnect to reverse. + %3Czuwak%4 jest urządzeniem pozwalającym wysadzić %3Ładunek Wybuchowy%4 gdy żołnierz zginie.<br/><br/>%3Użycie:%4<br/>%2Użyj [%3%12%4] i wybierz %3Mat. Wybuchowe%4.<br/>%2Wybierz %3Czuwak%4 i połącz wybrany %3Ładunek Wybuchowy%4.<br/>%2W celu odłączenia powtórz czynności i wybierz odłącz. + %3자폭 장치%4는 병사가 사망했을 때 병사가 %3폭발물%4을 폭발시킬 수 있는 장치입니다.<br/><br/>%3사용 방법:%4<br/>%2[%3%12%4]를 사용하고 %3폭발물%4을 선택하십시오.<br/>%2%3자폭 장치%4를 선택하고 원하는 %3폭발물%4에 연결하십시오.<br/>%2반대로 해제하고 싶다면 같은 행동을 반복하십시오. + Il %3Detonatore a rilascio%4 è un dispositivo che permette a soldati di detonare un %3Esplosivo%4 quando perdono i sensi.<br/><br/>%3Utilizzo:%4<br/>%2Usa [%3%12%4] e seleziona %3Esplosivi%4.<br/>%2Seleziona %3Detonatore a rilascio%4 e collega l'%3Esplosivo%4 desiderato.<br/>%2Ripeti il processo e scollega per disarmare il detonatore. + %3自爆装置%4は、兵士の死亡時に%3爆発物%4を起爆させることができる装置です。<br/><br/>%3使用方法:%4<br/>%2[%3%12%4] を使って%3爆発物%4を選択します。<br/>%2%3自爆装置%4を選択し、接続したい%3爆発物%4を選びます。<br/>%2同様の手順を逆に行うことで接続を解除できます。 + + + The %3Defusal Kit%4 allows defusal of explosives.<br/><br/>%3Usage:%4<br/>%2Equip a %3Defusal Kit%4.<br/>%2Safely approach an %3Explosive%4.<br/>%2Use [%3%13%4] and select %3Defuse%4. + %3Zestaw do Rozbrajania%4 pozwala rozbrajać ładunki wybuchowe.<br/><br/>%3Użycie:%4<br/>%2Wyekwipuj %3Zestaw do Rozbrajania%4.<br/>%2Ostrożnie podejdź pod %3Ładunek Wybuchowy%4.<br/>%2Użyj [%3%13%4] i wybierz %3Rozbrój%4. + %3해체 장비%4를 사용하면 폭발물을 제거할 수 있습니다.<br/><br/>%3사용 방법:%4<br/>%2%3해체 장비%4를 장착하십시오.<br/>%2%3폭발물%4에 안전하게 접근하십시오.<br/>%2[%3%13%4]를 사용하고 %3해체%4를 선택하십시오. + The %3Kit E.O.D.%4 permette il disinnesco di esplosivi.<br/><br/>%3Utilizzo:%4<br/>%2Equipaggia un %3Kit E.O.D.%4.<br/>%2Avvicinati in modo sicuro ad un %3Esplosivo%4.<br/>%2Usa [%3%13%4] e seleziona %3Disinnesca%4. + %3解除キット%4は爆発物の無力化を行うことができます。<br/><br/>%3使用方法:%4<br/>%2%3解除キット%4を装備。<br/>%2慎重に%3爆発物%4に接近します。<br/>%2[%3%13%4] を使って%3無力化%4を選択します。 + + + Defuse Explosives + Rozbrajanie Ładunków + 폭발물을 해체합니다 + Disinnesca Esplosivi + 爆発物の解除 + + + Protect Your Hearing + Dbaj o Swój Słuch + 청력을 보호합니다 + Proteggi il tuo Udito + 聴覚の保護 + + + %3Ear Plugs%4 help prevent hearing damage from repeat loud noises near a soldier. Insert %3Ear Plugs%4 to lower volume of a soldier's environment and prevent %3Combat Deafness%4.<br/><br/>%3Usage:%4<br/>%2Use [%3%12%4] and select %3Equipment%4.<br/>%2Insert %3Ear Plugs%4. + %3Stopery do Uszu%4 zapobiegają uszkodzeniom słuchu na skutek wybuchów i strzałów w pobliżu żołnierza. Włóż %3Stopery do Uszu%4 w celu wyciszenia otoczenia i uniknięcia %3Głuchoty Bojowej%4.<br/><br/>%3Użycie:%4<br/>%2Użyj [%3%12%4] i wybierz %3Ekwipunek%4.<br/>%2Włóż %3Stopery do Uszu%4. + %3Tappi auricolari%4 aiutano a prevenire danni all'udito da ripetuti rumori forti in prossimità del soldato. Inserisci %3Tappi auricolari%4 per ridurre il volume dell'ambiente per il soldato e impedire %3Assordamento%4.<br/><br/>%3Utilizzo:%4<br/>%2Usa [%3%12%4] e seleziona %3Equipaggiamento%4.<br/>%2Indossa %3Tappi Auricolari%4. + %3귀마개%4는 병사 주변에서 반복되는 시끄러운 소리로 인한 청력 손상을 방지하는 데 도움이 됩니다. %3귀마개%4를 끼워서 병사가 있는 환경의 소리 크기를 낮추고 %3전투로 인한 청력손상%4을 방지하십시오.<br/><br/>%3사용 방법:%4<br/>%2[%3%12%4]를 사용하여 %3장비%4를 선택하십시오.<br/>%2%3귀마개%4를 삽입하십시오. + %3耳栓%4は、兵士の近くで繰り返される大きな騒音による聴覚障害を防ぐのに役立ちます。%3耳栓%4を耳に挿入することで兵士の環境の音量を下げ、%3戦闘難聴%4を防ぎます。<br/><br/>%3使用方法:%4<br/>%2[%3%12%4] を使って%3装備%4を選択します。<br/>%2%3耳栓を着ける%4ことで使用できます。 + + + Get To Cover + Łap Osłonę + 엄폐하십시오 + Mettiti in Copertura + 遮蔽を造り出す + + + The %3Entrenching Tool%4 allows soldiers to dig trenches to help defend their position. The soldier must be on soil in order to dig a trench.<br/><br/>%3Usage:%4<br/>%2Equip an %3Entrenching Tool%4.<br/>%2Use [%3%12%4] and select %3Equipment%4.<br/>%2Select the type of trench you wish to build. + %3Saperka%4 pozwala żołnierzowi kopać okopy w celu obrony swoich pozycji. Żołnierz musi być na glebie, aby wykopać okop.<br/><br/>%3Użycie:%4<br/>%2Wyekwipuj %3Saperkę%4.<br/>%2Użyj [%3%12%4] i wybierz %3Ekwipunek%4.<br/>%2Wybierz rodzaj okopu, który chcesz wykopać. + La %3Pala da Trincea%4 permette a soldati di scavare trincee per difendere meglio la loro posizione. Il soldato deve trovarsi su suolo scavabile per poter creare trincee.<br/><br/>%3Utilizzo:%4<br/>%2Equipaggia una %3Pala da Trincea%4.<br/>%2Usa [%3%12%4] e seleziona %3Equipaggiamento%4.<br/>%2Seleziona il tipo di trincea che vuoi costruire. + %3야전삽%4을 사용하면 병사들의 진지 방어를 위한 참호를 팔 수 있습니다. 병사가 참호를 파려면 흙 위에 있어야 합니다.<br/><br/>%3사용 방법:%4<br/>%2%3야전삽%4을 장비하십시오.<br/>%2[%3%12%4]를 사용하여 %3장비%4를 선택하십시오.<br/>%2짓고 싶은 종류의 참호를 선택하십시오. + %3塹壕ツール%4を使用すると、兵士は自分の陣地を守るために塹壕を掘ることができます。塹壕を掘るには、兵士は土の上にいる必要があります。<br/><br/>%3使用方法:%4<br/>%2%3塹壕ツール%4を装備します。<br/>%2[%3%12%4] を使って%3装備%4を選択します。<br/>%2構築する塹壕の種類を選択します。 + + + Flashlights + Latarki + Torce + 손전등 + フラッシュライト + + + Illuminate Your Map + Rozświetlij Swoją Mapę + Illumina la tua Mappa + 지도를 밝혀줍니다 + 地図に光あれ + + + %3Flashlights%4 give you the ability to read your map, even in dark environments. However, when using %3Flashlights%4, you will have a slight glow around you.<br/><br/>%3Usage:%4<br/>%2On the map screen, use [%3%12%4] and select %3Flashlights%4.<br/>%2Select the %3Flashlight%4 you want to use and select %3On%4.<br/><br/>%3Available Flashlight Items%4:<br/>%2 Fulton MX-991<br/>%2 KSF-1<br/>%2 Maglite XL50<br/><br/>%3NOTE:%4<br/>Flashlight states are persistent. + %3Latarki%4 pozwalają czytać mapę, nawet w ciemnościach. Jednakże podczas używani %3Latarki%4, będziesz miał wokół siebie delikatną poświatę.<br/><br/>%3Użycie:%4<br/>%2W widoku mapy użyj [%3%12%4] i wybierz %3Latarki%4.<br/>%2Wybierz %3Latarkę%4, którą chcesz użyć i wybierz %3Włącz%4.<br/><br/>%3Dostępne latarki%4:<br/>%2 Fulton MX-991<br/>%2 KSF-1<br/>%2 Maglite XL50<br/><br/>%3NOTE:%4<br/>Stan latarki jest trwały. + %3Torce%4 permettono di leggere la tua mappa anche in ambienti bui. Però quando le utilizzi avrai un leggero effetto luminoso intorno a te.<br/><br/>%3Utilizzo:%4<br/>%2Sulla mappa usa [%3%12%4] e seleziona %3Torcia%4.<br/>%2Seleziona la %3Torcia%4 che vuoi usare e seleziona %3Accendi%4.<br/><br/>%3Oggetti Torcia Disponibili%4:<br/>%2 Fulton MX-991<br/>%2 KSF-1<br/>%2 Maglite XL50<br/><br/>%3NOTE:%4<br/>Lo stato di una torcia è persistente. + %3손전등%4은 어두운 환경에서도 지도를 읽을 수 있는 기능을 제공합니다. 단, %3손전등%4을 사용할 때 주변에 약간 빛이 납니다.<br/><br/>%3사용 방법:%4<br/>%2지도 화면에서 [%3%12%4]를 사용하고 %3손전등%4을 선택하십시오.<br/>%2사용할 %3손전등%4을 선택하고 %3켜기%4를 선택하십시오.<br/><br/>%3사용 가능한 손전등 아이템%4:<br/>%2풀턴 MX-991<br/>%2 KSF-1<br/>%2 매그라이트 XL50<br/><br/>%3참고:%4<br/>손전등 상태는 영구적입니다. + %3フラッシュライト%4を使用すると、暗い環境でも地図を読むことができます。ただし、%3フラッシュライト%4を使用すると、周囲がわずかに光ります。<br/><br/>%3使用方法:%4<br/>%2マップ画面で [%3%12%4] を使用し、%3フラッシュライト%4を選択します。<br/>%2%3フラッシュライト%4を選択し、使用したいライトを%3点ける%4。<br/><br/>%3使用可能なフラッシュライトのアイテム%4:<br/>%2 フルトン MX-991<br/>%2 KSF-1<br/>%2 マグライト XL50<br/><br/>%3備考:%4<br/>フラッシュライトの状態は継続します。 + + + Observe From The Skies + Obserwuj Świat z Góry + Osserva dal Cielo + 하늘에서 관측합니다 + 空から戦場を見てみよう + + + The %3High-Altitude Unit Navigated Tactical Imaging Round (HuntIR)%4 is designed to be fired from a grenade launcher. After being fired in the air, the built-in parachute will be deployed and the IR CMOS camera will activate, providing a video stream until it touches the ground or is shot down.<br/><br/>%3Usage:%4<br/>%2Equip a %3HuntIR Monitor%4 and compatible ammunition.<br/>%2Fire the %3HuntIR Round%4 as high as possible over the area you want to observe.<br/>%2Open the %3HuntIR Monitor%4.<br/>%2Use [%3%12%4], select %3Equipment%4.<br/>%2Select %3Activate HuntIR Monitor%4. + %3High-Altitude Unit Navigated Tactical Imaging Round (HuntIR)%4 przeznaczony jest do wystrzeliwania z granatnika. Po wystrzeleniu, wbudowany spadochron zostanie otwarty i uruchomi się kamera IR CMOS, zapewniająca obraz wideo do momentu zetknięcia się z ziemią lub zestrzelenia.<br/><br/>%3Użycie:%4<br/>%2Wyekwipuj %3Monitor HuntIR%4 i kompatybilną amunicję.<br/>%2Wystrzel %3Pocisk HuntIR%4 najwyżej jak to tylko możliwe nad teren, który chcesz obserwować.<br/>%2Otwórz%3Monitor HuntIR%4.<br/>%2Użyj [%3%12%4], wybierz %3Ekwipunek%4.<br/>%2Wybierz %3Aktywuj Monitor HuntIR%4. + Il %3High-Altitude Unit Navigated Tactical Imaging Round (HuntIR)%4 è progettato per essere sparato da un lanciagranate. Dopo essere stato sparato verso l'alto, verrà aperto un paracadute incorporato e attivata una videocamera IR CMOS, inviando una diretta video finché toccherà terra o verrà abbattuto.<br/><br/>%3Utilizzo:%4<br/>%2Equipaggia un %3Monitor HuntIR%4 e munizioni compatibili.<br/>%2Spara un %3Colpo HuntIR%4 il più alto possibile sopra l'area che vuoi osservare.<br/>%2Apri il %3Monitor HuntIR%4.<br/>%2Usa [%3%12%4], seleziona %3Equipaggiamento%4.<br/>%2Seleziona %3Attiva Monitor HuntIR%4. + %3고고도 유닛 탐색용 전술 영상화 탄약 (HuntIR)%4은 유탄발사기에서 발사될 수 있도록 설계되었습니다.공주에서 발사된 후 내장된 낙하산이 전개되고 적외선 CMOS 카메라가 작동하여 지상에 닿거나 격추될 때까지 비디오 스트림이 제공됩니다.<br/><br/>%3사용 방법:%4<br/>%2%3헌트IR 모니터%4와 호환 탄약을 장착하십시오.<br/>%2%3헌트IR 유탄%4을 발사하려는 구역에서 가능한 한 높게 발사하십시오.<br/>%2%3헌트IR 모니터%4를 여십시오.<br/>%2[%3%12%4]를 사용하여 %3장비%4를 선택하십시오.<br/>%2%3헌트IR 모니터 활성화%4를 선택하십시오. + %3High-Altitude Unit Navigated Tactical Imaging Round (HuntIR)%4はグレネードランチャーから発射されるように設計されています。空中で発射された後、内蔵のパラシュートが展開され、IR CMOS カメラが起動し、地面に着くか撃墜されるまでビデオ ストリームを提供します。<br/><br/>%3使用方法:%4<br/>%2%3HuntIR モニター%4と互換性のある弾薬を装備します。<br/>%2観測したいエリアに向けてできるだけ高く%3HuntIR 弾頭%4を発射します。<br/>%2%3HuntIR モニター%4を開きます。<br/>%2[%3%12%4] を使って%3装備%4を選択します。<br/>%2%3HuntIRを起動する%4からモニターを起動します。 + + + Track Your Team With Stealth + Śledź Swój Zespół w Ciszy + Traccia la tua squadra con discrezione + 은신하여 팀을 찾아냅니다 + 自分の部隊を追う + + + The %3IR Strobe%4 is a throwable that emits an IR light pulse intermittently. The %3IR Strobe%4 can also be attached to a soldier, making it useful for tracking teammates under night vision devices.<br/><br/>%3Usage:%4<br/>%2Use [%3%12%4] and select %3Equipment%4.<br/>%2Select %3Attach%4 and select the %3IR Strobe%4. + %3Stroboskop IR%4 jest rzucanym przedmiotem emitującym pulsujące światło podczerwone. %3Stroboskop IR%4 może być także przypięty do munduru, tworząc z niego użyteczne urządzenie do śledzenia żołnierzy z użyciem noktowizji.<br/><br/>%3Użycie:%4<br/>%2Użyj [%3%12%4] i wybierz %3Ekwipunek%4.<br/>%2Wybierz %3Przyczep%4 i wybierz %3Stroboskop IR%4. + La %3Strobo IR%4 è un lanciabile che emette un impulso intermittente di luce IR. La %3Strobo IR%4 può anche essere attaccata ad un soldato, facilitando l'identificazione di alleati con visori notturni.<br/><br/>%3Utilizzo:%4<br/>%2Usa [%3%12%4] e seleziona %3Equipaggiamento%4.<br/>%2Seleziona %3Attacca%4 e scegli la %3Strobo IR%4. + %3적외선 스트로브%4는 던질 수 있는 적외선 광펄스를 간헐적으로 방출하는 투척형 아이템입니다. %3적외선 스트로브%4는 병사에게도 부착 가능하기 때문에 야간투시장치로 팀원을 추적할 때 유용합니다.<br/><br/>%3사용 방법:%4<br/>%2[%3%12%4]를 사용하여 %3장비%4를 선택하십시오.<br/>%2%3아이템 부착%4을 선택하고 %3적외선 스트로브%4를 선택하십시오. + %3赤外線ストロボ%4は、赤外線光パルスを断続的に放射します。投擲可能です。%3赤外線ストロボ%4は兵士に取り付けることもできるため、暗視装置の下でチームメイトを追跡するのに役立ちます。<br/><br/>%3使用方法:%4<br/>%2[%3%12%4] を使って%3装備%4を選択します。<br/>%2%3アイテムを取り付ける%4を選択して%3赤外線ストロボ%4を選び使用します。 + + + Pocket Weatherstation + Przenośna Pogodynka + Stazione Meteo Tascabile + 휴대용 기상 관측 장비입니다 + 携帯気象予報所 + + + The %3Kestrel 4500 Pocket Weather Tracker%4 is a mini weather station useful for collecting the the following weather data:<br/>%2Heading and wind direction<br/>%2Crosswind and headwind<br/>%2Altitude and barometric pressure<br/>%2Wet bulb temperature<br/>%2Humidity and dewpoint<br/>%2Density altitude<br/>%2Wind chill and temperature<br/>%2Time and date<br/>%2Minimum, maximum, and average values<br/><br/>%3Usage:%4<br/>%2Equip a %3Kestrel%4.<br/>%2Use [%3%12%4] and select %3Equipment%4.<br/>%2Select %3Open%4. + %3Kestrel 4500 Pocket Weather Tracker%4 jest przenośną stacją pogodową pozwalającą zbierać takie dane jak: <br/>%2Kurs i kierunek wiatru<br/>%2Wiatr boczny i czołowy<br/>%2Wysokość i ciśnienie barometryczne<br/>%2Temperatua mokrego termometru<br/>%2Wilgotność i punkt rosy<br/>%2Gęstość powietrza<br/>%2Temperatura i temperatura odczuwalna<br/>%2Czas i data<br/>%2Wartości minimalne, maksymalne oraz średnie<br/><br/>%3Użycie: %4<br/>%2Wyekwipuj %3Kestrela%4. <br/>%2Użyj [%3%12%4] i wybierz %3Ekwipunek%4.<br/>%2Wybierz %3Otwórz%4. + Il %3Kestrel 4500 Indicatore Meteorologico Tascabile%4 è una mini-stazione meteo utile per ricavare le seguenti informazioni meteorologiche:<br/>%2Prua e direzione del vento<br/>%2Vento di traverso e frontale<br/>%2Altitudine and pressione barometrica<br/>%2Temperatura di bulbo umido<br/>%2Umidità e punto di rugiada<br/>%2Density altitude<br/>%2Temperatura e gelo del vento<br/>%2Data e Ora<br/>%2Valori minimi, massimi, e medi<br/><br/>%3Utilizzo:%4<br/>%2Equipaggia %3Kestrel%4.<br/>%2Usa [%3%12%4] e seleziona %3Equipaggiamento%4.<br/>%2Seleziona %3Apri%4. + %3케스트렐 4500 휴대용 기상 추적 장비%4는 다음 날씨 데이터들을 수집하는 데 유용한 소형 기상 관측 장비입니다:<br/>%2바람이 오는 방향과 가는 방향<br/>%2옆바람과 맞바람<br/>%2고도 및 기압<br/>%2습구온도<br/>%2습도 및 이슬점<br/>%2밀도고도<br/>%2체감온도<br/>%2시간 및 날짜<br/>%2최소, 최대, 평균값<br/><br/>%3사용 방법:%4<br/>%2%3케스트렐 4500NV%4를 장착하십시오.<br/>%2[%3%12%4]를 사용하고 %3장비%4를 선택하십시오.<br/>%2%3열기%4를 선택하십시오. + %3ケストレル 4500 携帯気象計%4は、次の気象データの収集に役立つミニ気象ステーションです:<br/>%2方位と風向<br/>%2横風と向かい風<br/>%2高度と気圧<br/>%2湿球温度<br/>%2湿度と露点<br/>%2密度高度<br/>%2ウィンドチルと温度<br/>%2日付と時刻<br/>%2最小値、最大値、平均値<br/><br/>%3使用方法:%4<br/>%2%3ケストレル%4を装備します。<br/>%2[%3%12%4] を使って%3装備%4を選択します。<br/>%2%3ケストレルを開く%4で使用できます。 + + + Triangulate Your Position + Trianguluj Swoją Pozycję + Triangola la tua posizione + 위치를 삼각측량합니다 + 三角測量で位置を特定 + + + The %3Map Tools%4 are a set of tools that allows a soldier to measure distances and angles. Useful for land, and calculating firing solutions for artillery.<br/><br/>%3Usage:%4<br/>%2Open %3Map%4.<br/>%2Use [%3%12%4] and select %3Map Tools%4.<br/>%2 The Tool can be moved by dragging with [%3Left-Click%4] while holding [%3ALT%4]. + %3Narzędzia Nawigacyjne%4 są zestawem narzędzi pozwalającym mierzyć dystans i kąt. Użyteczne do wyliczania parametrów strzałów dla artylerii.<br/><br/>%3Użycie:%4<br/>%2Otwórz%3Mapę%4.<br/>%2Użyj [%3%12%4] i wybierz %3Narzędzia Nawigacyjne%4.<br/>%2 Narzędzia mogą być przeciągane za pomocą [%3LPM%4] trzymając [%3ALT%4]. + Gli %3Strumenti Cartografici%4 permettono al soldato di misurare distanze e angoli sulla mappa. Utile a terra e per calculare direzioni di tiro per artiglieria.<br/><br/>%3Utilizzo:%4<br/>%2Apri %3Mappa%4.<br/>%2Usa [%3%12%4] e seleziona %3Strumenti Cartografici%4.<br/>%2 Lo strumento può essere spostato trascinandolo con [%3Click-Sinistro%4] premendo [%3ALT%4]. + %3독도용 도구%4는 병사가 거리와 각도를 측정할 수 있는 도구 세트입니다. 지상에서 유용하며 포병 사격 솔루션 계산에 유용합니다,<br/><br/>%3사용 방법:%4<br/>%2%3지도%4를 여십시오.<br/>%2[%3%12%4]를 사용하여 %3독도용 도구%4를 선택하십시오.<br/>%2도구는 [%3Alt 키%4]를 누른 상태에서 [%3마우스 왼쪽 클릭%4]으로 드래그하여 이동할 수 있습니다. + %3マップ ツール%4は、兵士が距離と角度を測定できるようにするツールのセットです。陸上や大砲の射撃工程の計算を解くのに役立ちます。<br/><br/>%3使用方法:%4<br/>%2%3マップ%4を開きます。<br/>%2[%3%12%4] を使って%3マップ ツール%4を選択します。<br/>%2 [%3ALT%4] を押しながら [%3左クリック%4] でドラッグするとツールを移動できます。 + + + Advanced DAGR + Zaawansowany DAGR + DAGR Avanzato + 고급형 DAGR입니다 + より高度なDAGR + + + The %3MicroDAGR GPS%4 is an advanced version of the %3DAGR%4. It provides position, navigation, and timing (PNT) data to include:<br/>%2Compass and heading<br/>%2Date and hour synced to the mission<br/>%2Elevation (relative to sea level)<br/>%2Current speed<br/>%2GPS with topographic and satellite view<br/>%2Creating, naming, and deleting waypoints<br/>%2Friendly identification (Requires ACE BLUFOR Tracker Setting)<br/>Connection to the Vector-21 Rangefinder for data import (waypoint creation and grid reference of ranged targets)<br/><br/>%3Usage:%4<br/>%2For usage instructions, please visit the dedicated %3MicroDAGR%4 wiki. + %3MicroDAGR GPS%4 jest zaawansowaną wersją %3DAGR%4. Dostarcza dane oparte o pozycję, nawigację, i czas (PNT): <br/>%2Kompas i kierunek<br/>%2Datę i godzinę zsynchronizowaną z misją<br/>%2Elewację (relatywną do poziomu morza)<br/>%2Obecną prędkość<br/>%2GPS z widokiem topograficznym i satelitarnym<br/>%2Tworzenie, nazywanie oraz usuwanie waypointów<br/>%2Identyfikację sojuszników (Wymaga ACE BLUFOR Tracker)<br/>Połączenie do dalmierza Vector-21 w celu importu danych (waypointy i współrzędne zmierzonego celu)<br/><br/>%3Użycie: %4<br/>%2Po instrukcję użycia odwiedź %3MicroDAGR%4 wiki. + Il %3GPS MicroDAGR%4 è una versione avanzata del %3DAGR%4. Esso mostra dati su posizione, navigazione e tempismo (PNT), includendo:<br/>%2Bussola e azimut<br/>%2Data e ora sincronizzate con la missione<br/>%2Elevazione (dal livello del mare)<br/>%2Velocità attuale<br/>%2GPS con visuale topografica e satellitare<br/>%2Creazione, rinomina e rimozione di waypoint<br/>%2Identificazione di alleati (Richiede Impostazioni ACE BLUFOR Tracker)<br/>Connessione al Telemetro Vector-21 per importazione di dati (creazione waypoint e indicazione di griglia su bersagli puntati)<br/><br/>%3Utilizzo:%4<br/>%2Per informazioni sull'utilizzo sei pregato di visitare la pagina wiki dedicata al %3MicroDAGR%4. + %3마이크로DAGR GPS%4는 %3DAGR%4의 고급 버전입니다. 다음과 같이 위치, 내비게이션 및 타이밍(PNT) 데이터를 제공합니다:<br/>%2나침반 및 방향<br/>%2임무와 동기화된 날짜 및 시간<br/>%2고도 (해수면 기준)<br/>%2현재 속도<br/>%2지형 및 위성 시점 기능이 있는 GPS<br/>%2웨이포인트 생성, 작명 및 삭제<br/>%2아군 식별 (ACE의 GPS 피아식별기 켜기 체크 필요)<br/>%2데이터를 가져오기 위한 벡터-21 거리계에 연결(원거리 대상의 웨이포인트 생성 및 좌표 참조)<br/><br/>%3사용 방법:%4<br/>%2사용 방법을 보려면 전용 %3마이크로DAGR%4의 위키를 방문하십시오. + %3MicroDAGR GPS%4は%3DAGR%4のより高度なバージョンです。測位、航法、計時(PNT)データが提供されます。これには以下の情報を含みます:<br/>%2コンパスと方位<br/>%2ミッションに同期された日付と時間<br/>%2標高 (海面に対する相対値)<br/>%2現在の速度<br/>%2地形図と衛星ビューを備えたGPS<br/>%2ウェイポイントの作成、名前付け、および削除<br/>%2友軍の識別 (ACE ブルーフォーストラッキング設定が必要)<br/>ベクター21レンジファインダーへの接続とデータのインポート (ウェイポイントの作成と遠距離ターゲットのグリッド参照)<br/><br/>%3使用方法:%4<br/>%2使用手順については、専用の %3MicroDAGR%4 wiki を参照してください。 + + + Range Tables + Tabele Strzelnicze + Tavole di Tiro + 사거리표 + 射表 + + + Get A Firing Solution + Strzelaj Celnie + Per una soluzione di tiro + 사격 솔루션을 제공합니다 + 撃ち方の解を得る + + + %3Range Tables%4 allow for a soldier to estimate accurate shot placement on direct or indirect targets (depending on asset). The %3Range Table%4 will automatically fill depending on the soldiers selected weapon/vehicle.<br/><br/>%3Usage:%4<br/>%2Use [%3%12%4] and select %3Equipment%4.<br/>%2Select the desired %3Range Table%4. + %3Tabele Strzelnicze%4 pozwalają żołnierzowi oszacować dokładne rozmieszczenie strzałów na cele bezpośrednie lub pośrednie (w zależności od zasobu). %3Tabele Strzelnicze%4 wypełnią się automatycznie w zależności od wybranej broni/pojazdu.<br/><br/>%3Użycie:%4%2Użyj [%3%12%4] i wybierz %3Ekwipunek%4<br/>.<br/>%2Wybierz żądaną%3Tabelę Strzelniczą%4. + %3Tavole di tiro%4 permettono al soldato di stimare piazzamenti accurati di colpi mediante fuoco diretto o indiretto (a seconda dell'arma). La %3Tavola di tiro%4 si modificherà in automatico a seconda dell'arma/veicolo del soldato.<br/><br/>%3Utilizzo:%4<br/>%2Usa [%3%12%4] and seleziona %3Equipaggiamento%4.<br/>%2Seleziona la portata desiderata sulla %3Tavola di tiro%4. + %3사거리표%4를 사용하면 병사가 직접 또는 간접 표적(자산에 따라 다름)에 대한 정확한 사격 배치를 추정할 수 있습니다. %3사거리표%4는 선택한 병사의 무기/차량에 따라 자동으로 작성됩니다.<br/><br/>%3사용 방법:%4<br/>%2[%3%12%4]를 사용하고 %3장비%4를 선택하십시오.<br/>%2원하는 %3사거리표%4를 선택하십시오. + %3射表%4 を使用すると、兵士は (手段に応じて) 直接的または間接的なターゲットへの正確な射撃位置を推定できます。%3射表%4は、兵士が選択した武器/車両に応じて自動的に入力されます。<br/><br/>%3使用方法:%4<br/>%2[%3%12%4] を使って%3装備%4を選択します。<br/>%2目的の%3射表%4を選択します。 + + + Ropes + Liny + Corde + 로프 + ロープ + + + Tow With Ease + Holowanie bez Wysiłku + Rimorchia con facilità + 쉽게 견인을 할 수 있습니다 + 楽々けん引 + + + %3Ropes%4 have multiple uses including %3Towing%4 vehicles and %3Fast Roping%4 from helicopters.<br/><br/>%3Towing:%4<br/>%2Approach a vehicle.<br/>%2Use [%3%13%4] and select %3Towing%4.<br/>%2Select rope length.<br/>%2Select attachment point on towing vehicle.<br/>%2Select attachment on towed vehicle.<br/><br/>%3Available Rope Lengths:%4<br/>%2 3.2 meters<br/>%2 6.2 meters<br/>%2 12.2 meters<br/>%2 15.2 meters<br/>%2 18.3 meters<br/>%2 27.4 meters<br/>%2 36.6 meters + %3Liny%4 mają wiele zastosowań, takich jak %3Holowanie%4 pojazdów czy %3Zjeżdżanie na Linach%4 z helikopterów.<br/><br/>%3Holowanie:%4<br/>%2Podejdź pod pojazd.<br/>%2Użyj [%3%13%4] i wybierz %3Holowanie%4.<br/>%2Wybierz długość liny. <br/>%2Wybierz punkt zaczepu liny na holującym pojeździe.<br/>%2Wybierz punkt zaczepu liny na holowanym pojeździe.<br/><br/>%3Dostępne Długości Liny:%4<br/>%2 3.2 metera<br/>%2 6.2 metera<br/>%2 12.2 metera<br/>%2 15.2 metera<br/>%2 18.3 metera<br/>%2 27.4 metera<br/>%2 36.6 metera + %3Corde%4 hanno molteplici utilizzi, come %3Trainare%4 veicoli e %3Fast Roping%4 da elicotteri.<br/><br/>%3Traino:%4<br/>%2Avvicinati a un veicolo.<br/>%2Usa [%3%13%4] e seleziona %3Traina%4.<br/>%2Seleziona lunghezza corda.<br/>%2Seleziona punto di attacco su veicolo trainante.<br/>%2Seleziona attacco su veicolo trainato.<br/><br/>%3Lunghezze corde a disposizione:%4<br/>%2 3.2 metri<br/>%2 6.2 metri<br/>%2 12.2 metri<br/>%2 15.2 metri<br/>%2 18.3 metri<br/>%2 27.4 metri<br/>%2 36.6 metri + %3로프%4는 차량 %3견인%4 및 헬기의 %3패스트로프%4 등 여러 용도로 사용됩니다.<br/><br/>%3견인 방법:%4<br/>%2차량에 접근하십시오.<br/>%2[%3%13%4]를 사용하고 %3견인%4을 선택하십시오.<br/>%2로프 길이를 선택하십시오.<br/>%2견인할 차량의 부착 지점을 선택하십시오.<br/>%2견인될 차량의 부착 지점을 선택하십시오.<br/><br/>%3사용 가능한 로프 길이:%4<br/>%2 3.2m<br/>%2 6.2m<br/>%2 12.2m<br/>%2 15.2m<br/>%2 18.3m<br/>%2 27.4m<br/>%2 36.6m + %3ロープ%4には、車両の%3けん引%4やヘリコプターからの%3ファストロープ%4など、複数の用途があります。<br/><br/>%3けん引方法:%4<br/>%2車両に近づきます。<br/>%2[%3%13%4] を使って%3けん引%4を選択します。<br/>%2ロープの長さを選択します。<br/>%2けん引する車両のロープ取付位置を選択します。<br/>%2けん引される車両のロープ取付位置を選択します。<br/><br/>%3利用可能なロープの長さ:%4<br/>%2 3.2 メートル<br/>%2 6.2 メートル<br/>%2 12.2 メートル<br/>%2 15.2 メートル<br/>%2 18.3 メートル<br/>%2 27.4 メートル<br/>%2 36.6 メートル + + + Expand Your Fortifications + Powiększ Swoje Fortyfikacje + Espandi le tue Fortificazioni + 당신의 요새를 확장합니다 + 要塞を拡張する + + + %3Sandbags%4 are sacks made of sturdy material, filled with sand, used for a variety of purposes such as creating barriers or providing stability in construction projects. Useful in expanding larger placed fortifications.<br/><br/>%3Usage:%4<br/>%2Equip a %3Sandbag (Empty)%4.<br/>%2Use [%3%12%4] and select %3Deploy Sandbag%4.<br/>%2Follow on-screen instructions for placement. + %3Worki z Piaskiem%4 to worki wykonane z mocnego materiału, wypełnione piaskiem, używane do różnych celów, takich jak tworzenie barier lub zapewnianie stabilności w projektach budowlanych. Przydatne przy tworzeniu większych fortyfikacji.<br/><br/>%3Użycie:%4<br/>%2Wyekwipuj %3Worek z Piaskiem (Pusty%4.<br/>%2Use [%3%12%4] i wybierz %3Rozłóż Worek z Piaskiem%4.<br/>%2Podążaj za instrukcjami na ekranie. + %3Sacchi di Sabbia%4 sono sacchi di un materiale robusto, riempiti di sabbia, usati per una varietà di utilizzi come creare barriere o aumentare la stabilità di fortificazioni.<br/><br/>%3Utilizzo:%4<br/>%2Equipaggia una %3Sacco di Sabbia (Vuoto)%4.<br/>%2Usa [%3%12%4] e seleziona %3Posiziona Sacco di Sabbia%4.<br/>%2Segui le istruzioni sullo schermo per il piazzamento. + %3모래주머니%4는 튼튼한 재료로 만든 주머니로 모래를 채워 장벽을 만들거나 건설 작업에서 안정성을 제공하는 등 다양한 용도로 사용되며, 더 큰 요새를 확장하는 데 유용합니다.<br/><br/>%3사용 방법:%4<br/>%2%3모래주머니(비어있음)%4을 장착하십시오.<br/>%2[%3%12%4]를 사용하고 %3모래주머니 배치%4를 선택하십시오.<br/>%2화면의 지시에 따라 배치하십시오. + %3土のう%4は、砂が詰められた頑丈な素材で作られた袋で、建設プロジェクトでの障壁の作成や安定性の提供など、さまざまな目的に使用されます。より大きな配置の要塞を拡張するのに役立ちます。<br/><br/>%3使用方法:%4<br/>%2%3土のう (空)%4を装備します。<br/>%2[%3%12%4] を使って%3土のうを作る%4を選択します。<br/>%2画面上の指示に従って配置します。 + + + Lower Firearm Temperature + Niższa Temperatura twojej Broni + Raffredda l'Arma + 총기의 온도를 낮춥니다 + 銃の熱を冷ます + + + %3Spare Barrels%4 allow a soldier to reduce their weapon's heat significantly. After a short delay, the weapon's barrel will be swapped and its heat reduced. A soldier may also check the temperature of any barrels within their inventory. Not all weapons support swapping barrels.<br/><br/>%3Usage:%4<br/>%2Use [%3%12%4] and select %3Equipment%4.<br/>%2Select %3Swap Barrel%4.<br/>%2Resume operation after barrel swap is complete. + %3Zapasowa Lufa%4 pozwala żołnierzowi znacznie zmniejszyć ciepło broni. Po krótkim czasie lufa broni zostanie zamieniona, a jej temperatura zostanie zmniejszona. Żołnierz może również sprawdzić temperaturę każdej lufy w swoim ekwipunku. Nie wszystkie bronie obsługują zamianę luf.<br/><br/>%3Użycie:%4<br/>%2Użyj [%3%12%4] i wybierz %3Ekwipunek%4.<br/>%2Wybierz %3Zmień Lufę%4.<br/>%2. + %3Canne di Ricambio%4 permettono ai soldati di raffreddare la loro arma notevolmente. Dopo una breve attesa, la canna dell'arma verrà sostituita e la temperatura ridotta. Un soldato può anche controllare la temperatura di canne di ricambio presenti nel proprio inventario. Non tutte le armi consentono lo scambio canna.<br/><br/>%3Utilizzo:%4<br/>%2Usa [%3%12%4] e seleziona %3Equipaggiamento%4.<br/>%2Seleziona %3Sostituisci Canna%4.<br/>%2Continua l'ingaggio dopo sostituzione avvenuta. + %3예비 총열%4을 사용하면 병사의 무기의 발열을 크게 줄일 수 있습니다. 잠시 뒤에 무기의 총신이 교체되고 발열이 감소합니다. 군인은 소지품에 있는 총열의 온도도 확인할 수 있습니다. 모든 무기가 총열 교환을 지원하는 것은 아닙니다.<br/><br/>%3사용 방법:%4<br/>%2[%3%12%4]를 사용하고 %3장비%4를 선택하십시오.<br/>%2%3총열 교체%4를 선택하십시오.<br/>%2총열 교체가 완료된 후 작전을 계속하십시오. + %3予備銃身%4を使用すると、兵士は武器の熱を大幅に下げることができます。少し経つと、武器の銃身が交換され熱が下がります。兵士はインベントリ内の銃身の温度を確認することもできます。すべての武器が銃身の交換をサポートしているわけではありません。<br/><br/>%3使用方法:%4<br/>%2[%3%12%4] を使って%3装備%4を選択します。<br/>%2%3銃身を交換%4を選択します。<br/>%2銃身交換が完了すると、再度射撃することが出来ます。 + + + Spray Paint + Farba w Sprayu + Bomboletta Spray + 스프레이 페인트 + ペイントスプレー + + + Tag Your Territory + Zaznacz Swój Teren + Marca il tuo territorio + 당신의 영역을 지정합니다 + 自分のテリトリーをマーキング + + + %3Spray Paint%4 is used to tag surfaces with various symbols.<br/><br/>%3Usage:%4<br/>%2Move close to a surface (wall, vehicle, ground, etc).<br/>%2Use [%3%12%4] and select %3Tag%4.<br/>%2Choose a symbol.<br/><br/>%3Available Colors:%4<br/>%2Black<br/>%2Blue<br/>%2Green<br/>%2Red + %3Farba w Sprayu%4 jest używana do oznaczania powierzchni różnymi symbolami.<br/><br/>%3Użycie:%4<br/>%2Podejdź blisko powierzchni (ściany, pojazdu, ziemi, etc). <br/>%2Użyj [%3%12%4] i wybierz %3Malowanie%4.<br/>%2Wybierz Symbol.<br/><br/>%3Dostępne Kolory:%4<br/>%2Czarny<br/>%2Niebieski<br/>%2Zielony<br/>%2Czerwony + %3Bombolette Spray%4 vengono usate per marcare superfici con vari simboli.<br/><br/>%3Utilizzo:%4<br/>%2Muoviti vicino a una superfice (muro, veicolo, suolo, etc).<br/>%2Usa [%3%12%4] e seleziona %3Marca%4.<br/>%2Seleziona un simbolo.<br/><br/>%3Colori disponibili:%4<br/>%2Nero<br/>%2Blu<br/>%2Verde<br/>%2Rosso + %3스프레이 페인트%4다양한 기호로 표면에 태그를 지정하는 데 사용됩니다.<br/><br/>%3사용 방법:%4<br/>%2표면(벽, 차량, 지면 등)에 가까이 가십시오.<br/>%2[%3%12%4]를 사용하고 %3태그%4를 선택하십시오.<br/>%2모양을 고르십시오.<br/><br/>%3사용 가능 색상:%4<br/>%2검정<br/>%2파랑<br/>%2초록<br/>%2빨강 + %3ペイントスプレー%4は、地面や壁、車両の表面などに様々な図形のタグを付けるために使えます。<br/><br/>%3使用方法:%4<br/>%2塗りたい面に近づきます。(壁、車両、地面など)<br/>%2[%3%12%4] を使って%3タグ (スプレーペイント)%4を選択します。<br/>%2図形を選びます。<br/><br/>%3利用可能な色:%4<br/>%2黒<br/>%2白<br/>%2赤<br/>%2青<br/>%2緑<br/>%2黄 + + + Brace From Anywhere + Zawsze Stabilny + Stabilizzati Ovunque + 어느 곳에나 지지대를 배치할 수 있습니다 + どこでも支持器 + + + The %3SSWT Kit%4 is a deployable tripod that allows a soldier to brace their aim when deployed. Use it when you need an elevated shooting position and there are no other objects around.<br/><br/>%3Usage:%4<br/>%2Use [%3%12%4] and select %3Equipment%4.<br/>%2Select %3SSWT Kit%4 and follow the on screen prompts to place. + %3Trójnóg Snajperski%4 jest to rozkładany statyw, który pozwala żołnierzowi dokładnie przycelować, gdy jest rozłożony. Używaj go, gdy potrzebujesz stabilnej pozycji strzeleckiej, a wokół nie ma innych obiektów.<br/><br/>%3Użycie:%4<br/>%2Użyj [%3%12%4] i wybierz %3Ekwipunek%4.<br/>%2Wybierz %3Trójnóg Snajperski%4 i podążaj za instrukcjami wyświetlanymi na ekranie. + Il %3Kit SSWT%4 è un treppiede piazzabile che permette al soldato di appoggiare la sua arma. Usalo quando ti serve una posizione di tiro rialzata e non ci sono altri oggetti utili nelle vicinanze.<br/><br/>%3Utilizzo:%4<br/>%2Usa [%3%12%4] e seleziona %3Equipaggiamento%4.<br/>%2Seleziona %3Kit SSWT%4 e segui le indicazioni di piazzamento. + %3SSWT 키트%4는 병사가 배치 시 조준력을 상승시킬 수 있는 배치 가능한 삼각대입니다. 높이 조절이 된 사격 위치가 필요하고 주위에 다른 물체가 없을 때 사용하십시오.<br/><br/>%3사용 방법:%4<br/>%2[%3%12%4] 를 사용하고 %3장비%4를 선택하십시오.<br/>%2%3SSWT 키트%4를 선택하고 화면의 지시에 따라 배치하십시오. + %3SSWT キット%4は展開可能な三脚で、展開時に兵士が狙いを定めることができます。高い射撃位置が必要で、周囲に他の物体がない場合に使用してください。<br/><br/>%3使用方法:%4<br/>%2[%3%12%4] を使って%3装備%4を選択します。<br/>%2%3SSWT キット%4を選択し、画面上の指示に従って配置します。 + + + Keep Eyes In The Sky + Trzymaj Głowę w Górze + Tieni gli occhi nel cielo + 하늘에서 계속 내려다봅니다 + 空の目を維持する + + + %3UAV Batteries%4 are used to recharge a UAV's energy storage. Especially useful for small UAVs.<br/><br/>%3Usage:%4<br/>%2Equip a %3UAV Battery%4<br/>%2Approach a %3UAV%4 with its %3Engine Off%4.<br/>%2Use [%3%13%4] and select %3Recharge%4. + %3Baterie UAV%4 są używane do zasilania UAV. Zwłaszcza tych małych.<br/><br/>%3Użycie:%4<br/>%2Wyekwipuj %3Baterię UAV%4<br/>%2Podejdź pod %3UAV%4 z %3Wyłączonym Silnikiem%4.<br/>%2Użyj [%3%13%4] i wybierz %3Naładuj%4. + %3Batteria UAV%4 vengono usate per ricaricare gli UAV. Molto utile per piccoli UAV.<br/><br/>%3Utilizzo:%4<br/>%2Equipaggia una %3Batteria UAV%4<br/>%2Avvicinati al %3UAV%4 con il %3Motore Spento%4.<br/>%2Usa [%3%13%4] e seleziona %3Ricarica%4. + %3무인기 배터리%4는 무인기의 에너지 저장소를 재충전하는 데 사용됩니다. 소형 무인기에 특히 유용합니다.<br/><br/>%3사용 방법:%4<br/>%2%3무인기 배터리%4를 장착하십시오.<br/>%2%3엔진을 끄고%4 %3무인기%4에 접근하십시오.<br/>%2[%3%13%4]를 사용하고 %3재충전%4을 선택하십시오. + %3UAVバッテリー%4は、UAVの電源容量を充電するために使用されます。<br/><br/>%3使用方法:%4<br/>%2%3UAV バッテリー%4を装備します。<br/>%2%3エンジンをオフ%4にした%3UAV%4に近づきます。<br/>%2[%3%13%4] を使って%3充電%4を選択します。 + + + Making An Entrance + Robienie Własnego Wejścia + Fai un'entrata + 진입로를 만듭니다 + 堂々入場する + + + %3Wirecutters%4 are a tool that allows a soldier to bypass wired fencing. Useful for creating backdoor entrances into secure areas.<br/><br/>%3Usage:%4<br/>%2Move close to a fence.<br/>%2Use [%3%12%4] and select %3Cut Fence%4. + %3Nożyce do Cięcia Drutu%4 są narzędziem pozwalającym pokonywać zapory z siatki oraz drutu. Użyteczne przy tworzenia tylnego wejścia do pilnownej strefy.<br/><br/>%3Użycie:%4<br/>%2Podejdź pod ogrodzenie.<br/>%2Użyj[%3%12%4] i wybierz %3Przetnij Płot%4. + La %3Trancia%4 è un utensile che permette ai soldati di sorpassare filo spinato e recinzioni. Utile per creare punti di accesso nel retro di zone protette.<br/><br/>%3Utilizzo:%4<br/>%2Avvicinati a una barriera.<br/>%2Usa [%3%12%4] e seleziona %3Taglia%4. + %3절단기%4는 병사가 철조망을 통과할 수 있게 해주는 도구입니다. 보안 구역에 뒷입구를 만드는 데 유용합니다.<br/><br/>%3사용 방법:%4<br/>%2철조망에 가까이 가십시오.<br/>%2[%3%13%4]를 사용하고 %3철조망 자르기%4를 선택하십시오. + %3ワイヤーカッター%4は、兵士が有線フェンスを回避できるようにするツールです。安全にエリアへの裏口を作成するのに役立ちます。<br/><br/>%3使用方法:%4<br/>%2フェンスの近くに移動します。<br/>%2[%3%12%4] を使って%3フェンスを切断する%4を選択します。 + + + Items + 物品 + Objets + Objetos + Oggetti + Przedmioty + Предметы + Gegenstände + Předměty + Itens + 물품 + 物品 + アイテム + Eşyalar + + + ACE3 + ACE3 + ACE3 + ACE3 + ACE 3 + + + Build Fortifications + Budowanie Fortyfikacji + Costruisci Fortificazioni + 요새를 건설합니다 + 要塞を構築する + + + The %3Fortify Tool%4 allows soldiers to build fortifications provided by their mission creator.<br/><br/>%3Usage:%4<br/>%2Pick up a %3Fortify Tool%4.<br/>%2Use [%3%12%4] and select %3Fortify%4.<br/>%2Select an available fortification and follow the on screen prompts for placement. + %3Narzędzie do fortyfikowania%4 pozwala żołnierzom budować fortyfikacje wybrane przez twórcę misji.<br/><br/>%3Użycie:%4<br/>%2Podnieś %3Narzędzie do fortyfikowania%4.<br/>%2Użyj [%3%12%4] i wybierz %3Fortyfikuj%4.<br/>%2Wybierz dostępną fortyfikację i postępuj zgodnie ze wskazówkami na ekranie. + L'%3Attrezzo di Fortificazione%4 permette ai soldati di costruire fortificazioni permesse dal creatore della missione.<br/><br/>%3Utilizzo:%4<br/>%2Raccogli un %3Attrezzo di Fortificazione%4.<br/>%2Usa [%3%12%4] e seleziona %3Fortifica%4.<br/>%2Seleziona una fortificazione disponibile e segui le indicazioni di piazzamento sullo schermo. + %3요새화 도구%4를 사용하면 병사들이 임무 생성자가 제공한 요새를 구축할 수 있습니다.<br/><br/>%3사용 방법:%4<br/>%2%3요새화 도구%4를 가지십시오.<br/>%2[%3%12%4]를 사용하고 %3요새화%4를 선택하십시오.<br/>%2사용 가능한 요새를 선택하고 화면의 지시에 따라 배치하십시오. + %3要塞ツール%4を使用すると、兵士はミッション作成者が提供した要塞を構築できます。<br/><br/>%3使用方法:%4<br/>%2%3要塞ツール%4を持つ。<br/>%2[%3%12%4] を使って%3要塞%4を選択します。<br/>%2利用可能な構造物を選択し、画面上の指示に従って配置します。 + + + Breaking and Entering + Włamywanie i Otwieranie + Effrazione + 침입용 도구입니다 + 破壊して乗り込む + + + %3Lockpicks%4 are used to gain access to locked vehicles.<br/><br/>%3Usage:%4<br/>%2Equip a %3Lockpick%4.<br/>%2Approach a %3Locked%4 vehicle.<br/>Use [%3%13%4] and select %3Lockpick Vehicle%4.<br/><br/><t underline='1'>%3Note:%4</t> Lockpicks and keys are only available via scripting or ACE Vehicle Key modules. + %3Wytrychy%4 są używane w celu uzyskania dostępu do zablokowanych pojazdów.<br/><br/>%3Użycie:%4<br/>%2Wyekwipuj %3Wytrych%4.<br/>%2Podejdź do %3Zablokowanego%4 pojazdu. <br/>Użyj [%3%13%4] i wybierz %3Otwórz Zamek%4.<br/><br/><t underline='1'>%3Uwaga:%4</t> Klucze i wytrychy są dostępne tylko przy zastosowaniu skryptów lub użyciu modułu ACE Zamknięcie Pojazdu + I %3Grimaldelli%4 sono usati per forzare l'accesso a veicoli bloccati.<br/><br/>%3Utilizzo:%4<br/>%2Equipaggia un %3Grimaldello%4.<br/>%2Avvicinati a un veicolo %3Bloccato%4 vehicle.<br/>Usa [%3%13%4] e seleziona %3Scassina Veicolo%4.<br/><br/><t underline='1'>%3Note:%4</t> Grimaldelli e chiavi sono solo reperibili mediante scripting o moduli ACE di assegnazione Chiavi Veicoli. + %3해정도구%4는 잠긴 차량에 들어가는 데 사용됩니다.<br/><br/>%3사용 방법:%4<br/>%2%3해정도구%4를 장착하십시오.<br/>%2%3잠긴%4 차량에 접근하십시오.<br/>[%3%13%4]를 사용하고 %3차량 잠금해제%4를 선택하십시오.<br/><br/><t underline='1'>%3참고:%4</t> 해정도구와 열쇠는 스크립팅 또는 ACE 차량 열쇠 모듈에서만 사용할 수 있습니다. + %3Lockpick%4は、ロックされた車両にアクセスするために使用されます。<br/><br/>%3使用方法:%4<br/>%2%3Lockpick%4を装備します。<br/>%2%3鍵の掛かった%4車両に近づきます。<br/>[%3%13%4] を使って%3鍵をこじ開ける%4を選択します。<br/><br/><t underline='1'>%3備考:%4</t> ロックピックとキーは、スクリプトまたは ACE Vehicle Key モジュールを介してのみ使用できます。 + + + Vehicle Keys + Kluczyki od Pojazdu + Chiavi dei Veicoli + 차량 열쇠 + 車両キー + + + Lock/Unlock Vehicles + Zablokuj/Odblokuj Pojazdy + Blocco/Sblocco di Veicoli + 차량을 잠그거나 해제합니다 + 車両のロック/ロック解除 + + + %3Vehicle Keys%4 are used to lock/unlock your vehicles. Vehicle keys can exist for the whole side, or keys can be created for a particular vehicle itself.<br/><br/>%3Usage:%4<br/>%2Equip a %3Vehicle Key%4.<br/>%2Approach the vehicle that the key belongs to.<br/>Use [%3%13%4] and select %3Lock/Unlock Vehicle%4.<br/><br/><t underline='1'>%3Note:%4</t> Lockpicks and keys are only available via scripting or ACE Vehicle Key modules. + %3Kluczyki od Pojazdów%4 są używane w celu ich zablokowania/odblokowania. Kluczyki mogą istnieć dla całej strony, lub być tworzone tylko dla wybranych pojazdów<br/><br/>%3Użycie:%4<br/>%2Wyekwipuj %3Kluczyk do Pojazdu%4.<br/>%2Podejdź do samochodu, do którego pasuje kluczyk. <br/>Użyj [%3%13%4] i wybierz %3Zablokuj/Odblokuj Pojazd%4.<br/><br/><t underline='1'>%3Uwaga:%4</t> Klucze i wytrychy są dostępne tylko przy zastosowaniu skryptów lub użyciu modułu ACE Zamknięcie Pojazdu + Le %3Chiavi di Veicoli%4 vengono usate per bloccare/sbloccare i propri veicoli. Chiavi di veicoli possono esistere per un'intera fazione, oppure per un veicolo particolare.<br/><br/>%3Utilizzo:%4<br/>%2Equipaggia una %3Chiave di Veicolo%4.<br/>%2Avvicinati al veicolo a cui appartiene la chiave.<br/>Usa [%3%13%4] e seleziona %3Blocca/Sblocca Veicolo%4.<br/><br/><t underline='1'>%3Note:%4</t> Grimaldelli e chiavi sono solo disponibili mediante scripting o moduli ACE Chiavi Veicoli. + %3차량 열쇠%4는 차량을 잠그거나 잠금해제하는 데 사용됩니다. 차량 열쇠는 모든 세력에게 존재할 수도 있고, 특정 차량 자체에 대해 열쇠를 생성할 수도 있습니다.<br/><br/>%3사용 방법:%4<br/>%2%3차량 열쇠%4를 장착하십시오.<br/>%2해당 열쇠에 속한 차량에 접근하십시오.<br/>[%3%13%4]를 사용하고 %3차량 잠금/잠금해제%4를 선택하십시오.<br/><br/><t underline='1'>%3참고:%4</t> 해정도구와 열쇠는 스크립팅 또는 ACE 차량 열쇠 모듈에서만 사용할 수 있습니다. + %3Vehicle Key%4は、車両のロック/ロック解除に使用されます。車両キーは陣営全体に存在することも、特定の車両だけに対してキーを作成することもできます。<br/><br/>%3使用方法:%4<br/>%2%3Vehicle Key%4を装備します。<br/>%2鍵の対応している車両に近づきます。<br/>[%3%13%4] を使って%3鍵を解錠/施錠%4します。<br/><br/><t underline='1'>%3備考:%4</t> ロックピックとキーは、スクリプトまたは ACE Vehicle Key モジュールを介してのみ使用できます。 + + + diff --git a/addons/finger/XEH_preInit.sqf b/addons/finger/XEH_preInit.sqf index 9361d05015..894773534a 100644 --- a/addons/finger/XEH_preInit.sqf +++ b/addons/finger/XEH_preInit.sqf @@ -6,6 +6,6 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" ADDON = true; diff --git a/addons/finger/initSettings.sqf b/addons/finger/initSettings.inc.sqf similarity index 100% rename from addons/finger/initSettings.sqf rename to addons/finger/initSettings.inc.sqf diff --git a/addons/finger/stringtable.xml b/addons/finger/stringtable.xml index e7b670f242..9f61aa0f7c 100644 --- a/addons/finger/stringtable.xml +++ b/addons/finger/stringtable.xml @@ -44,8 +44,8 @@ Показывает пальцем и рисует виртуальный маркер в направлении взгляда ближайшим игрокам. Можно удерживать. Señala y muestra un marcador virtual donde ustás apuntando para las unidades cercanas. Puede ser mantenido. Ukazuje virtuální značku kruhu ve směru, kterým se díváte pro všechny blízké jednotky. - Punta e mostra un marker virtuale di dove stai guardando alle unità vicine. Può essere tenuto premuto. - 指差し表記は自ユニットの近くにいる人のみに表記されます。また押しっぱなしにできます。 + Punta e mostra un indicatore virtuale di dove stai guardando alle unità vicine. Può essere tenuto premuto. + 近くのユニットに対して、今見ている場所に向けて指を差し、仮想のマーカーを表示して指示することが出来る。 押し続けることも可能。 당신이 보는 것을 가상의 마커로 표시함으로서 다른 인원이 볼 수 있게 합니다. 누른 채로 유지할 수 있습니다. 当按下此按键后,你附近的单位即可看见一个虚拟图示,标明你正在指向的位置。此按键可以被按住来持续显示。 當按下此按鍵後,你附近的單位即可看見一個虛擬圖示,標明你正在指向的位置。此按鍵可以被按住來持續顯示。 @@ -78,8 +78,8 @@ Максимальная дальность между игроками для отображения индикатора указания пальцем [по умолчанию: 4 метра] Distancia máxima entre los jugadores para mostrar el indicador que señala [por defecto: 4 metros] Maximální vzdálenost mezi hráči pro ukázání směru [výchozí: 4 metry] - Distanza massima tra giocatori per mostrare l'indicatore di puntamento [default: 4 metri] - 指差し表記が他のプレイヤーに表示される範囲を決定できます。(標準 4 メートル) + Distanza massima tra giocatori per mostrare l'indicatore di puntamento [Predefinito: 4 metri] + 指差しのマーカー表示が他のプレイヤーに表示される最大範囲を決定できます。 [デフォルト: 4メートル] 플레이어 사이에서 가리키기 표시를 보이게 하는 최대거리를 설정합니다[기본설정: 4 미터] 设定指向标记最大显示距离。[预设:4米] 設定指向指示器最大顯示距離。[預設: 4公尺] @@ -88,42 +88,54 @@ Visual Marker Size Coefficient Visueller Markergrößenkoeffizient + Coefficiente di dimensione puntatore 보이는 마커 크기 계수 Współczynnik wielkości wirtualnego znacznika - 指さし表記大きさ係数 + 指差しマーカーの大きさ係数 屏幕标记大小系数 Коэф. размера маркера Coeficiente del tamaño del marcador visual + Coefficient taille des marqueurs visuels + Coeficiente de tamanho do marcador visual Adjusts the size of the visual marker. Passt die Größe der visuellen Markierung an. + Modifica la dimensione del puntatore virtuale. 눈에 보이는 마커의 크기를 조정합니다. Dostosowuje rozmiar wirtualnego znacznika. - 指さし表記の大きさを調整します。 + 指差しマーカーの大きさを調整します。 调整屏幕上显示的标记大小 Настраивает размер визуального маркера Ajusta el tamaño del marcador visual. + Ajuste la taille des marqueurs visuels + Ajusta o tamanho do marcador visual Proximity Scaling Näherungsskalierung + Scalaggio di prossimità 근접 스케일링 Skalowanie odległościowe 近接性スケーリング 根据距离缩放 Масштабирование от дальности Escalado de cercanía + Mise à l'échelle + Escala por proximidade Scales the size of the visual marker based on the distance between the player observing and the player pointing. Skaliert die Größe der visuellen Markierung basierend auf der Entfernung zwischen dem beobachtenden Spieler und dem zeigenden Spieler. + Scala la dimensione del puntatore a seconda della distanza tra il giocatore osservatore e quello che punta. 관찰하는 플레이어와 가리키는 플레이어 사이의 거리에 따라 보이는 마커의 크기를 조정합니다. Skaluje rozmiar wirtualnego znacznika, na podstawie odległości między graczem obserwującym a graczem wskazującym. - 見ているプレーヤーと指さししたプレーヤーの距離に基づいて、指さし表記の大きさを調整します。 + 見ているプレーヤーと指差ししたプレーヤーの距離に基づいて、指差しマーカーの大きさを調整します。 根据观察的玩家和在指出方向的的玩家之间的距离调整视觉标记的大小。 Масштабирует размер визуального маркера в зависимости от дальности от игрока до точки указания. Escala el tamaño del marcador visual dependiendo de la distancia entre el jugador observador y el jugador que señala. + Modifie la taille du marqueur visuel en fonction de la distance entre le joueur qui observe et le joueur qui pointe. + Redimensiona o tamanho do marcador visual baseado na distância entre o jogador observador e o jogador que aponta. Show pointing indicator to self @@ -136,7 +148,7 @@ Mostrar el indicador de señalado a uno mismo Zobrazit ukázání směru pro sebe Mostra puntatore per te stesso - 自分に指差し表記を表示する + 指差しマーカーを自分で見る 자신이 가리키는곳을 보여줍니다 在自己身边显示指向标记 顯示指向指示器給自己 @@ -152,8 +164,8 @@ Renderizar o indicador para o jogador que está apontando. Esta opção não afeta se os outros jogadores verão ou não o indicador Muestra el indicador para el jugador que apunta. Esta opción no afecta si los otros jugadores verían el indicador Zobrazit infikátor, když ukážete prstem. Tato volba nemá vliv, zda ostatní hráči uvidí indikátor nebo ne. - Mostra puntatore per il giocatore indicato. Questa opzione non influisce la possibilità che gli altri giocatori vedano il puntatore - プレイヤーへ指差し表記を描画します。これは他のプレイヤーの表記に影響しません。 + Mostra indicatore per il giocatore che punta. Questa opzione non influisce sulla visibilità del puntatore per gli altri giocatori + 指差ししたプレーヤーが自身の指差しマーカーを描画して確認できるようにします。 このオプションは、他のプレイヤーが指差しマーカーを表示出来るかどうかには影響しません。 대상이 가리키는곳을 보이게 합니다. 显示指向标记给玩家自己。此选项设定并不影响其他玩家能否看到指示标记 顯示指向指示器給玩家自己。此選項設定並不影響其他玩家能否看到指示器 @@ -170,7 +182,7 @@ Indicador de señalado Ukazování směru Indicatore di puntamento - 指差し表記 + 指差しマーカー 가리키기 표시기 指向标记 指向指示器 @@ -187,7 +199,7 @@ Color del círculo indicador que señala Barva kruhu pro ukázání směru Colore del cerchio dell'indicatore di puntamento - 指差し表記の円の色 + 指差しマーカーの円の色 가리키기의 원형 색상 指向标记颜色 指向指示器顏色 @@ -204,7 +216,7 @@ Acción "apuntar con el dedo a" Akce "ukázat prstem na" Azione "punta il dito a" - "指差し"キー + アクション "指を差す" "손가락으로 가리키기" 행동 使"手指指向在" 使"手指指向在" @@ -220,8 +232,8 @@ Показывает пальцем и рисует виртуальный маркер в направлении взгляда ближайшим игрокам. Можно удерживать. Señala y muestra un marcador virtual donde ustás apuntando para las unidades cercanas. Puede ser mantenido. Ukazuje virtuální značku kruhu ve směru, kterým se díváte pro všechny blízké jednotky. - Punta e mostra un marker virtuale di dove stai guardando alle unità vicine. Può essere tenuto premuto. - 指差し表記は自ユニットの近くにいる人のみに表記されます。また押しっぱなしにできます。 + Punta e mostra un indicatore virtuale di dove stai guardando alle unità vicine. Può essere tenuto premuto. + 近くのユニットに対して、今見ている場所に向けて指を差し、仮想のマーカーを表示して指示することが出来る。 押し続けることも可能。 당신이 보는 것을 가상의 마커로 표시함으로서 다른 인원이 볼 수 있게 합니다. 누른 채로 유지할 수 있습니다. 当按下此按键后,你附近的单位即可看见一个虚拟图示,标明你正在指向的位置。此按键可以被按住来持续显示。 當按下此按鍵後,你附近的單位即可看見一個虛擬圖示,標明你正在指向的位置。此按鍵可以被按住來持續顯示。 @@ -237,7 +249,7 @@ Настройки указания пальцем Ajustes de señalado Nastavení ukázování směru - Impostazioni puntamento + Impostazioni Puntamento 指差し設定 가리키기 설정 指向设定 diff --git a/addons/fire/XEH_preInit.sqf b/addons/fire/XEH_preInit.sqf index e69c115927..2fc794454d 100644 --- a/addons/fire/XEH_preInit.sqf +++ b/addons/fire/XEH_preInit.sqf @@ -6,7 +6,7 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" GVAR(burningPlants) = []; diff --git a/addons/fire/addon.toml b/addons/fire/addon.toml index 7cfef775ee..bf39213892 100644 --- a/addons/fire/addon.toml +++ b/addons/fire/addon.toml @@ -1,2 +1,3 @@ -[preprocess] -enabled = false +[tools] +pboProject_noBinConfig = true +sqfvm_skipConfigChecks = true diff --git a/addons/fire/config.cpp b/addons/fire/config.cpp index ac9f7009ec..da8cd0091c 100644 --- a/addons/fire/config.cpp +++ b/addons/fire/config.cpp @@ -1,5 +1,6 @@ #include "script_component.hpp" +#pragma hemtt flag pe23_ignore_has_include #if __has_include("\z\ace\addons\nomedical\script_component.hpp") #define PATCH_SKIP "No Medical" #endif diff --git a/addons/fire/functions/fnc_fireManagerPFH.sqf b/addons/fire/functions/fnc_fireManagerPFH.sqf index 29de18d28c..fa8e7fb789 100644 --- a/addons/fire/functions/fnc_fireManagerPFH.sqf +++ b/addons/fire/functions/fnc_fireManagerPFH.sqf @@ -12,7 +12,7 @@ * None * * Example: - * [FUNC(fireManagerPFH), 0.25, [_unit]] call CBA_fnc_addPerFrameHandler + * [ace_fire_fnc_fireManagerPFH, 0.25, [_unit]] call CBA_fnc_addPerFrameHandler * * Public: No */ diff --git a/addons/fire/initSettings.sqf b/addons/fire/initSettings.inc.sqf similarity index 100% rename from addons/fire/initSettings.sqf rename to addons/fire/initSettings.inc.sqf diff --git a/addons/fire/stringtable.xml b/addons/fire/stringtable.xml index 5dbd372e9b..dc93a88c2b 100644 --- a/addons/fire/stringtable.xml +++ b/addons/fire/stringtable.xml @@ -7,10 +7,12 @@ ACE Feu ACE Возгорание ACE Feuer + ACE Fuoco ACE Ogień ACE Fuego ACE 火 ACE 불 + ACE Fogo Pat Down Fire @@ -18,10 +20,12 @@ Éteindre le feu Потушить Feuer löschen + Estingui Fuoco Zgaś ogień Extingir el fuego 灭火 불 끄기 + Apagar Fogo Patting down fire... @@ -29,10 +33,12 @@ Feu en cours d'extinction... Тушение... Feuer wird gelöscht... + Estinguendo Fuoco... Gaszenie ognia... Extinguiendo el fuego... 正在灭火... 불 끄는 중... + Apagando Fogo... Allow units to catch fire @@ -40,10 +46,12 @@ Définit si les unités peuvent prendre feu ou non. Включает возгорание Erlaubt, dass Einheiten Feuer fangen können + Permette che unità possono prendere fuoco Zezwól jednostkom na zapalenie się Permitir que las unidades se incendien 允许单位着火 - 유닛이 불에 붙게합니다 + 유닛에 불이 붙게합니다 + Permitir que as unidades peguem fogo Enable fire-flare at night @@ -51,10 +59,12 @@ Halo lumineux la nuit Включает сверкание пламени Aktiviert Feuerschein bei Nacht. + Ability luce-fuoco di notte Włącza efekt flary od ognia w nocy Habilitar bengalas de fuego por la noche 在夜间启用耀斑效果 밤에 불로 인한 조명 활성화 + Ativar brilho do fogo à noite Uses a flare effect to increase fire intensity at night @@ -62,10 +72,12 @@ Ajoute un effet de halo lumineux afin d'accroitre l'intensité du feu durant la nuit. Включает ореол пламени для большей интенсивности ночью Benutzt einen Feuerschein-Effekt um die Intensität des Feuers bei Nacht zu verstärken. + Usa un effetto flare per mettere in mostra fuochi di notte Używa efektu flary, aby zwiększyć jasność w nocy Utiliza un efecto de bengala para aumentar la intensidad del fuego por la noche 启用耀斑效果,增加夜间火焰的强度。 야간에 불로 인한 조명을 극대화 시킵니다 + Usa um efeito de brilho para aumentar a intensidade do fogo à noite Enable screams by units on fire @@ -73,9 +85,12 @@ 启用着火单位发出惨叫声 불 붙은 유닛 비명 Schreie von brennenden Einheiten aktivieren + Grida di unità a fuoco Włącz krzyki podpalonych jednostek 炎上中の悲鳴を有効 Вкл. крики от горения + Activer les cris des unités en feu + Habilita os gritos das unidades em chamas Enables if units on fire will play the screaming sound @@ -83,9 +98,12 @@ 启用着火的单位是否会发出惨叫声。 불이 붙은 유닛이 소리를 지르게 합니다 Aktiviert, ob brennende Einheiten den Schrei-Ton abspielen + Abilita le grida di unità andate a fuoco Włącza, czy płonące jednostki będą odtwarzać dźwięk krzyku 有効化すると炎上しているユニットが悲鳴を上げます Включает воспроизведение криков когда юнит загорается + Active un son de hurlement si les unités sont en feu + Define se as unidades em chamas reproduzirão o som de grito Drop Weapons When on Fire @@ -94,8 +112,11 @@ 着火时扔掉武器 불 붙을 경우 무기 내려놓음 Waffen fallen lassen, wenn in Brand geraten. + Fai cadere armi quando a fuoco 炎上時に武器を落とす Бросать оружие из-за горения + Lâche les armes si en feu + Soltar Armas Quando em Chamas Controls whether units drop their weapons when on fire. @@ -104,8 +125,11 @@ 控制单位在着火时是否丢掉武器。 유닛이 불에 붙이면 무기를 떨굴지를 결정합니다. Steuert, ob Einheiten ihre Waffen fallen lassen, wenn sie brennen. + Determina se le unità fanno cadere le proprie armi quando cominciano a bruciare. ユニットが炎上時に武器を落とすかどうかを定義します。 Должны ли юниты выбрасывать оружие когда загораются. + Contrôle si les unités lâchent leurs armes lorsqu'elles sont en feu. + Controla se as unidades soltam suas armas quando estão em chamas. diff --git a/addons/flashlights/stringtable.xml b/addons/flashlights/stringtable.xml index 8ca985cf34..2afaa1aacf 100644 --- a/addons/flashlights/stringtable.xml +++ b/addons/flashlights/stringtable.xml @@ -127,6 +127,7 @@ Maglite ML300L Maglite ML300L 매그라이트 ML300L + Maglite ML300L Powerful LED flashlight. @@ -134,7 +135,7 @@ Mocna latarka LED. 強大的LED手電筒 强光 LED 手电筒。 - Torcia a LED ad alta potenza + Torcia a LED molto luminosa Silná LED svítilna. Puissante lampe torche à LED. 強力な LED のフラッシュライト。 @@ -142,6 +143,7 @@ Linterna LED potente Мощный светодиодный фонарь. 고휘도 LED 손전등. + Potente lanterna LED. diff --git a/addons/flashsuppressors/stringtable.xml b/addons/flashsuppressors/stringtable.xml index 51db6008f2..2591ee5398 100644 --- a/addons/flashsuppressors/stringtable.xml +++ b/addons/flashsuppressors/stringtable.xml @@ -5,7 +5,7 @@ Flash Suppressor (6.5 mm) Lángrejtő (6,5 mm) Mündungsfeuerdämpfer (6,5 mm) - Soppressore di fiamma (6.5mm) + Rompifiamma (6.5mm) Supressor de Clarão (6,5mm) Tłumik płomienia (6,5 mm) Tlumič plamene (6,5 mm) @@ -22,7 +22,7 @@ Flash Suppressor (7.62 mm) Lángrejtő (7,62 mm) Mündungsfeuerdämpfer (7,62 mm) - Soppressore di fiamma (7.62mm) + Rompifiamma (7.62mm) Supressor de Clarão (7,62mm) Tłumik płomienia (7,62 mm) Tlumič plamene (7,62 mm) @@ -39,7 +39,7 @@ Flash Suppressor (5.56 mm) Lángrejtő (5,56 mm) Mündungsfeuerdämpfer (5,56 mm) - Soppressore di fiamma (5.56mm) + Rompifiamma (5.56mm) Supressor de Clarão (5,56mm) Tłumik płomienia (5,56 mm) Tlumič plamene (5,56 mm) @@ -56,7 +56,7 @@ Flash Suppressor (.45 ACP) Lángrejtő (.45 ACP) Mündungsfeuerdämpfer (.45 ACP) - Soppressore di fiamma (.45 ACP) + Rompifiamma (.45 ACP) Supressor de Clarão (.45 ACP) Tłumik płomienia (.45 ACP) Tlumič plamene (.45 ACP) @@ -73,7 +73,7 @@ Flash Suppressor (9 mm) Lángrejtő (9 mm) Mündungsfeuerdämpfer (9 mm) - Soppressore di fiamma (9 mm) + Rompifiamma (9mm) Supressor de Clarão (9mm) Tłumik płomienia (9 mm) Tlumič plamene (9 mm) @@ -90,7 +90,7 @@ Flash Suppressor (.338) Lángrejtő (.338) Mündungsfeuerdämpfer (.338) - Soppressore di fiamma (.338) + Rompifiamma (.338) Supressor de Clarão (.338) Tłumik płomienia (.338) Tlumič plamene (.338) @@ -107,7 +107,7 @@ Flash Suppressor (9.3 mm) Lángrejtő (9,3 mm) Mündungsfeuerdämpfer (9,3 mm) - Soppressore di fiamma (9.3mm) + Rompifiamma (9.3mm) Supressor de Clarão (9,3mm) Tłumik płomienia (9,3 mm) Tlumič plamene (9,3 mm) diff --git a/addons/fortify/XEH_preInit.sqf b/addons/fortify/XEH_preInit.sqf index a28aee8445..382fc80566 100644 --- a/addons/fortify/XEH_preInit.sqf +++ b/addons/fortify/XEH_preInit.sqf @@ -13,6 +13,6 @@ GVAR(locations) = []; // Custom deploy handlers GVAR(deployHandlers) = []; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" ADDON = true; diff --git a/addons/fortify/initSettings.sqf b/addons/fortify/initSettings.inc.sqf similarity index 100% rename from addons/fortify/initSettings.sqf rename to addons/fortify/initSettings.inc.sqf diff --git a/addons/fortify/stringtable.xml b/addons/fortify/stringtable.xml index 0cd34e518e..c3fda20caf 100644 --- a/addons/fortify/stringtable.xml +++ b/addons/fortify/stringtable.xml @@ -6,16 +6,20 @@ Verstärken 要塞 요새화 + Fortifica 要塞 设防 Fortyfikowanie Фортификация Inşa Etme Fortificar + Fortification + Fortificação Fortify Tool Bauwerkzeug + Attrezzo di Fortificazione 要塞ツール 요새화 도구 要塞工具 @@ -24,11 +28,14 @@ Инструмент строителя Inşa Etme Aleti Herramienta de Fortificar + Outil de fortification + Ferramenta de Fortificação Budget Budget 予算 + Budget 예산 預算 预算 @@ -36,11 +43,14 @@ Бюджет Bütçe Presupuesto + Budget + Provisão Auto add fortify item Füge das Bauwerkzeug automatisch hinzu 自動的に要塞ツールを追加 + Auto-aggiungi attrezzo di fortificazione 요새화 도구 자동으로 추가 自動增加要塞物品 自动增加设防物品 @@ -48,10 +58,13 @@ Автоматически добавлять Инструмент строителя Otomatik olarak inşa etme aletini ekle Añadir objeto de Fortificar automáticamente + Ajout automatique de l'outil de fortification + Adicionar item de fortificação automaticamente Initializes the Fortify system, with some basic parameters.<br/>Presets are pulled from configFile and missionConfigFile, see wiki for format. Inicjalizuje system fortyfikacji, z podstawowymi parametrami.<br/>Domyślne ustawienia są załadowane z configFile oraz missionConfigFile, odwiedź wiki aby znaleźć format + Inizializza il sistema di fortificazione con alcuni parametri di base.<br/>Preset vengono presi da configFile and missionConfigFile, leggi la wiki per il formato richiesto. Инициализирует систему фортификации с некоторыми базовыми параметрами.<br/>Предустановки взяты из configFile и missionConfigFile, формат смотри на wiki. Inşa etme sistemini bazı temel parametrelerle başlatır. <br/> Ön ayarlar configFile ve missionConfigFile'dan alınır, format için wiki'ye bakın. 要塞システムを初期設定に戻します。<br/>プリセットは configfile と missionConfigFile から参照されます。詳細は wiki を参照してください。 @@ -59,6 +72,8 @@ 使用一些基本参数初始化设防系统。<br/>预设从 configFile 和 missionConfigFile 中提取,参见 wiki 的格式。 기본 파라미터와 함께 요새화 시스템을 활성화합니다<br/>configFile 과 missionConfigFile에서 프리셋을 뽑아옵니다, 포맷은 위키를 참조하십시오. Inicializa el sistema deFortificación con los parámetros básicos. .<br/>Los presets son importados de configFile y de missionConfigFile, consultar la wiki para ver el formato. + Initialise le système de fortification, avec quelques paramètres de base.<br/>Les presets sont tirés du configFile et du missionConfigFile, consulter le wiki pour les formats. + Inicializa o sistema de fortificação, com alguns parâmetros básicos.<br/>Os presets são retirados do configFile e do missionConfigFile, consulte a wiki para o formato. Rotate @@ -99,16 +114,20 @@ Verstärken: Beschränke Baubereich 要塞: 構築制限エリア 要塞: 限制建造區 + Fortificazione: Limita Area 设防:限制建造区 Fortyfikowanie: Limituj strefe budowania Фортификация: Ограничить зону постройки Inşa Etme : Bölgede Inşa Etmeyi Limitle 요새화: 건설 영역 제한 Fortificar: Limitar área de construcción + Fortification : limiter la zone de construction + Fortificação: Limitar área de construção ACE Fortify ACE Verstärken + ACE Fortificazione ACE 要塞 ACE 设防 ACE 要塞 @@ -117,10 +136,13 @@ ACE Inşa Etme ACE 요새화 ACE Fortificar + ACE Fortification + ACE Fortificação Show budget updates Zeige Budgetveränderungen + Mostra aggiornamenti di budget 顯示預算更新 显示预算更新 予算の更新を表示 @@ -129,22 +151,28 @@ Bütçe güncellenmelerini göster 비용 업데이트 표시 Mostrar actualizaciones de presupuesto + Afficher les changements de budget + Mostrar as atualizações de previsão Controls when budget update hints are shown Bestimmt wann Budgetveränderungen angezeigt werden 決定預算變更時是否會顯示提示 决定预算变更时是否会显示提示 + Controlla se vengono mostrati avvisi di aggiornamento del budget 予算が更新されヒント表示時の操作を決定します Kontroluje kiedy aktualizacje budżetu są wyświetlane Настраивает сообщения об обновлении бюджета Bütçe güncellenince bilgi verilip verilmeyeceğini kontrol eder. 어떤 행동을 취할 때 비용이 표시되는지를 결정합니다 Controla cuándo los avisos de actualizaciones de presupuesto se muestran + Détermine quand les modifications de budget sont affichées + Controla quando as atualizações de previsão são mostradas Never show Niemals anzeigen + Non mostrare 永不顯示 永不显示 非表示 @@ -153,10 +181,13 @@ Asla Gösterme 안 보여줌 No mostrar nunca + Ne jamais afficher + Nunca mostrar Has fortify tool Hat Bauewerkzeug + Ha l'attrezzo di fortificazione 有要塞工具 有设防工具 要塞ツール所持の時 @@ -165,10 +196,13 @@ Insa Etme Aleti Olanlara Göster 요새화 도구를 들고 있을 때 Tiene herramienta de Fortificar + Dispose d'un outil de fortification + Tem ferramenta de fortificação Always show Immer anzeigen + Mostra sempre 總是顯示 总是显示 常に表示 @@ -177,76 +211,99 @@ Her Zaman Göster 항상 보여줌 Mostrar siempre + Toujours afficher + Sempre mostrar Time-Cost Coefficient 时间—成本系数 시간-가격 계수 Zeit-Kosten-Koeffizient - 時間コスト係数 + Coefficiente tempo/costo + タイム-コスト係数 Współczynnik Czas-Koszt Коэф. время-цена Coeficiente Tiempo-Coste + Coefficient de temps/coût + Coeficiente de Tempo/Custo Coefficient used to determine time to build structure.\nA in Ax + b where x is cost of object 用于确定建造建筑所需时间的系数。\nA是 Ax+b中的一个参数,其中x是物体的成本 건축물을 지을 때 걸리는 시간을 계수를 적용하여 계산합니다. Koeffizient zur Bestimmung der Bauzeit \nA in Ax + b, wobei x die Kosten des Objekts sind. + Il coefficiente 'C' che determina il tempo di costruzione.\nTempo Totale = Costo * C + Tempo Minimo 建造する時間を決定するために使用される係数。\n計算式はAx + bです。この係数はAであり、xは建造物のコストです。 Współczynnik używany do określenia czasu budowy konstrukcji.\nA w Ax + b gdzie x jest kosztem obiektu Коэффициент используемый для указания времени необходимого для возведения постройки.\nA в формуле Ax + b, где x - это цена объекта Coeficiente usado para determinar el tiempo de construcción de una estructura.\nA en Ax + b donde x es el coste del objeto + Coefficient utilisé pour déterminer le temps de construction d'une structure.\nA dans Ax + b où x est le coût de l'objet. + Coeficiente usado para determinar o tempo para construir uma estrutura.\nA em Ax + b, onde x é o custo do objeto Minimum Build Time 最短建造时间 최소 건축 시간 Minimale Bauzeit - 建造に掛かる最小の時間 + Tempo di costruzione minimo + 最短建造時間 Minimalny czas budowy Мин. время возведения Tiempo mínimo de construcción + Temps de construction minimum + Tempo Mínimo de Construção Minimum time to build any structure.\nb in Ax + b where x is cost of object 建造任何建筑的最短时间。\nb是 Ax+b中的一个参数,其中x是物体的成本 건축물을 지을 때 걸리는 최소 시간을 계수를 적용하여 계산합니다. Mindestzeit für den Bau eines beliebigen Bauwerks.\nb in Ax + b, wobei x die Kosten des Objekts sind. - 建造に掛かる最小の時間。\n計算式はAx + bです。この時間はbであり、xは建造物のコストです。 + Tempo minimo necessario per costruire una qualsiasi fortificazione.\nTempo Totale = Costo * CoefT/C + Tempo Minimo + 建造に掛かる最短時間。\n計算式はAx + bです。この時間はbであり、xは建造物のコストです。 Minimalny czas do zbudowania dowolenj konstrukcji.\nb w Ax + b gdzie x jest kosztem obiektu Минимальное время для возведения любой постройки.\nb в формуле Ax + b, где x - это цена объекта Tiempo mínimo para construir una estructura.\nb en Ax + b donde x es el coste del objeto + Temps minimum pour construire une structure.\nb dans Ax + b où x est le coût de l'objet. + Tempo mínimo para construir uma estrutura.\nb em Ax + b, onde x é o custo do objeto Building 建造 건설 중 Bauwerk + Costruendo 建造 Budowanie Возведение Construyendo + Construction + Construindo Create map markers 创建地图标记 지도에 마커 생성 Kartenmarkierungen erstellen + Crea marker sulla mappa マップマーカーを生成する Twórz znaczniki na mapie Создавать маркера на карте Crear marcadores de mapa + Créer des marqueurs sur carte + Criar marcadores de mapa Create map markers that look like terrain buildings when static fortifications are placed 在放置静态防御工事时,创建看起来像地形建筑的地图标记 건축물을 건설하고 나서 지도에 마커를 생성합니다 Erstellen von Kartenmarkierungen, die wie Gebäude im Gelände aussehen, wenn statische Befestigungen platziert werden + Crea marker che appaiono come edifici sulla mappa lì dove vengono costruite fortificazioni 静的な建築物が配置されたときに地形の建物のように見えるマップマーカーを生成します Utwórz znaczniki mapy, które wyglądają jak obiekty terenu, gdy umieszczane są statyczne fortyfikacje Создавать маркера от статических фортификаций как от зданий на карте Crear marcadores de mapa que tienen la apariencia de edificios del terreno cuando las fortificaciones estáticas son colocadas + Créer des marqueurs sur carte qui ressemblent à des bâtiments sur le terrain lorsque des fortifications statiques sont placées + Criar marcadores de mapa que parecem edifícios do terreno quando fortificações estáticas são colocadas Never @@ -269,10 +326,13 @@ 对放置者友军单位 아군 유닛이 지은 건물만 Für, zum Erbauer, verbündete Einheiten. + Per unità alleate al costruttore 設置者の友軍に Dla jednostek sojuszniczych wobec stawiającego Для союзников Para unidades aliadas de quien coloca la fortificación + Pour les unités alliées du placeur + Para unidades aliadas do autor da fortificação For everyone @@ -296,10 +356,13 @@ Малый Küçük 小型 + Piccola Klein 小型 소형 Pequeña + Petit + Pequena Small (Green) @@ -308,9 +371,12 @@ Küçük (Yeşil) 小型 (グリーン) Klein (Grün) + Piccola (Verde) 小型(绿色) 소형 (초목) Pequeña (Verde) + Petit (Vert) + Pequena (Verde) Medium @@ -319,9 +385,12 @@ Orta 中型 Mittel + Media 中型 중형 Mediana + Moyen + Média Medium (Green) @@ -330,9 +399,12 @@ Orta (Yeşil) 中型 (グリーン) Mittel (Grün) + Media (Verde) 中型(绿色) 중형 (초목) Mediana (Verde) + Moyen (Vert) + Média (Verde) Big @@ -340,10 +412,13 @@ Большой Büyük 大型 + Grande Groß 大型 대형 Grande + Grand + Grande Big (Green) @@ -352,9 +427,12 @@ Büyük (Yeşil) 大型 (グリーン) Groß (Grün) + Grande (Verde) 大型(绿色) 대형 (초목) Grande (Verde) + Grand (Vert) + Grande (Verde) Big (Both) @@ -363,9 +441,12 @@ Büyük (İkisi de) 大型 (両方) Groß (Beide) + Grande (Entrambe) 大型(两方) 대형 (둘 다) Grande (Ambos) + Grand (les deux) + Grande (Ambos) diff --git a/addons/frag/XEH_preInit.sqf b/addons/frag/XEH_preInit.sqf index f4f59e681a..dc616917b8 100644 --- a/addons/frag/XEH_preInit.sqf +++ b/addons/frag/XEH_preInit.sqf @@ -20,6 +20,6 @@ GVAR(lastIterationIndex) = 0; GVAR(objects) = []; GVAR(arguments) = []; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" ADDON = true; diff --git a/addons/frag/functions/fnc_dev_addTrack.sqf b/addons/frag/functions/fnc_dev_addTrack.sqf index db32be0d5f..0e75a9fb99 100644 --- a/addons/frag/functions/fnc_dev_addTrack.sqf +++ b/addons/frag/functions/fnc_dev_addTrack.sqf @@ -10,7 +10,7 @@ * None * * Example: - * call ace_frag_fnc_addTack + * call ace_frag_fnc_dev_addTrack * * Public: No */ diff --git a/addons/frag/functions/fnc_dev_debugAmmo.sqf b/addons/frag/functions/fnc_dev_debugAmmo.sqf index 42a4aa6314..ec52b4b39f 100644 --- a/addons/frag/functions/fnc_dev_debugAmmo.sqf +++ b/addons/frag/functions/fnc_dev_debugAmmo.sqf @@ -11,7 +11,7 @@ * None * * Example: - * call ace_frag_fnc_debugAmmo + * call ace_frag_fnc_dev_debugAmmo * * Public: No */ diff --git a/addons/frag/functions/fnc_dev_drawTraces.sqf b/addons/frag/functions/fnc_dev_drawTraces.sqf index b05f8c2c9d..7fcca3c48f 100644 --- a/addons/frag/functions/fnc_dev_drawTraces.sqf +++ b/addons/frag/functions/fnc_dev_drawTraces.sqf @@ -10,7 +10,7 @@ * None * * Example: - * call ace_frag_fnc_drawTraces + * call ace_frag_fnc_dev_drawTraces * * Public: No */ diff --git a/addons/frag/functions/fnc_dev_stopTracing.sqf b/addons/frag/functions/fnc_dev_stopTracing.sqf index f9b29ab8a8..949d3cd55d 100644 --- a/addons/frag/functions/fnc_dev_stopTracing.sqf +++ b/addons/frag/functions/fnc_dev_stopTracing.sqf @@ -10,6 +10,7 @@ * None * * Example: + * None * * Public: No */ diff --git a/addons/frag/initSettings.sqf b/addons/frag/initSettings.inc.sqf similarity index 100% rename from addons/frag/initSettings.sqf rename to addons/frag/initSettings.inc.sqf diff --git a/addons/frag/stringtable.xml b/addons/frag/stringtable.xml index 1ece6a973e..7addcd4c38 100644 --- a/addons/frag/stringtable.xml +++ b/addons/frag/stringtable.xml @@ -90,7 +90,7 @@ Simulation de la réflexion des explosions Simulação de reflexo de explosão Cимуляция отражения взрывов ACE - 爆発による飛翔シミュレーション + 爆発反射シミュレーション 폭발 반사 시뮬레이션 模拟爆炸反射 模擬爆炸反射 @@ -105,7 +105,7 @@ Active la simulation de la réflexion des explosions ACE. Ativa a simulação de reflexo de explosão do ACE Включить симуляцию отражения взрывов ACE - 爆発による飛翔シミュレーションを有効化 + ACE爆発反射シミュレーションを有効化 ACE 폭발 반사 시뮬레이션을 적용합니다. 启用 ACE 模拟爆炸反射 啟用ACE模擬爆炸反射 @@ -122,7 +122,7 @@ Maximum követett repeszek Макс. количество отслеживаемых снарядов Numero massimo di Proiettili Tracciati - 最大弾頭追跡数 + 飛翔体最大追跡数 최대 발사체 추적수 最大破片粒子追踪数量 最大碎片/剝落粒子追蹤數量 @@ -137,8 +137,8 @@ Ce paramètre contrôle le nombre maximum de projectiles et d'éclats résultant de la fragmentation, que le système peut suivre à chaque instant.\nSi plus de projectiles sont générés, ils ne seront pas pris en compte. Baissez ce réglage si vous ne voulez pas de chute de FPS en cas de nombre important de projectiles (>200 éclats en même temps). Ez a beállítás szabályozza a repeszeződés és pattogzás által kilőtt objektumok követett számát. Ha több ez a szám, ezek az objektumok nem lesznek követve. Csökkentsd ezt a beállítást, ha nem akarsz lassulásokat magas-törmelékmennyiségű helyzetekben (200+ repesz a levegőben egyszerre) Эта настройка контролирует максимальное количество снарядов, которок отслеживает система осколков и обломков в каждый момент времени. Снаряды, выстреленные сверх этого числа, отслеживаться не будут. Уменьшите это значение, если вы не хотите падения FPS при большом количестве снарядов в одной перестрелке (> 200 одновременно летящих снарядов) - Questo parametro controlla il numero massimo di proiettili che la frammentazione e il sistema di spalling tracciano in ogni momento. Se più proiettili sono sparati, non verranno tracciati. Abbassa questo parametro se non vuoi cali di FPS in scenari con molti proiettili (>200 proiettili in aria contemporaneamente) - 時間が許すかぎり、破片と剥離システムの最大数を設定できます。設定数以上の弾丸が発射された場合、それは対象になりません。もし多い弾数による FPS の低下を望まない場合は、低い数へ設定にします。( &gt;一度に空中内で200発) + Questo parametro controlla il numero massimo di proiettili che la frammentazione e il sistema di spalling tracciano in ogni momento. Se vengono sparati ulteriori proiettili, non verranno tracciati. Abbassa questo parametro se non vuoi cali di FPS in scenari con molti proiettili (>200 proiettili in aria contemporaneamente) + この設定では、断片化および剥離システムが常に追跡する飛翔体の最大量を制御します。 さらに多くの飛翔体が発射された場合、それらは追跡されません。 弾数が多いシナリオでFPSを低下させたくない場合は、この設定を下げてください。 (一度に200発以上が空中に発射されます) 이 설정은 탄환파편 및 파편 시스템으로 인해 생긴 발사체의 수를 결정합니다. 만약 더 많은 발사체가 나올 경우 정해진 수 이외에는 추적하지 않습니다. 이 설정을 낮춤으로써 파편이 많은 시나리오를 실행할때 더욱 원활히 진행할 수 있습니다 (한 번에 200개 이하) 设定在指定时间内,系统最大可追踪的破片粒子数量。如有更多的碎片在这之后产生,这些粒子将不会被追踪。如果你想要维持好的帧数,此设定勿调的过高。( >一次200颗粒子) 設定在指定時間內,系統最大可追蹤的碎片/剝落粒子數量。如有更多的碎片在這之後產生,這些粒子將不會被追蹤。如果你想要維持好的幀數,此設定勿調的過高。( >一次200顆粒子) @@ -154,7 +154,7 @@ Maximum repesz/képkocka Макс. количество снарядов за кадр Numero massimo di proiettili per Frame - フレームごとの最大弾頭数 + フレームごとの飛翔体最大数 프레임 당 최대 발사체 수 每帧最大破片粒子数量 每一幀數(FPS)最大碎片/剝落粒子數量 @@ -169,8 +169,8 @@ Le nombre de calculs de suivi à effectuer pour chaque image. Cela aide à répartir l'impact des calculs sur plusieurs images, limitant ainsi encore davantage l'impact sur les FPS. A lepattogzási útvonalak számításának darabjai képkockánként. Ez eloszlatja az FPS-megszakadást több képkockára, ezzel csökkentve a súlyosságát. Число обрабатываемых осколков за кадр. Это позволяет распределить нагрузку по отслеживанию осколков между несколькими кадрами, чтобы предотвратить падение FPS. - Il numero di calcoli per tracciamento di spalling ad ogni frame. Questo aiuta a distribuire l'impatto del tracciamento dello spalling su più frame, limitando ancora di più l'impatto. - 与えられたフレームごとに追跡する剥離の数を決定します。FPS に影響をあたえないよう、剥離を複数のフレームで追跡し、分散させています。 + Il numero di calcoli per tracciamento di spalling ad ogni frame. Questo aiuta a distribuire l'impatto del tracciamento dello spalling su più frame, riducendolo ulteriormente. + 与えられたフレームごとに追跡する剥離飛翔体の数を決定します。FPS に影響をあたえないよう、剥離飛翔体を複数のフレームで追跡し、分散させています。 가능한 프레임마다 파편을 추적 및 계산합니다. 여러 프레임에 걸쳐 파편난 발사체를 추적하여 FPS에 도움을 줍니다. 이를 제한함으로써 더욱 큰 효과를 볼 수 있습니다. 设定在每一帧数内,系统最大可追踪的破片粒子数量。此设定可有效帮助系统减低计算压力。 設定在每一幀數內,系統最大可追蹤的碎片/剝落粒子數量。此設定可有效幫助系統減低計算壓力 @@ -202,7 +202,7 @@ (Csak SP) Küldetés/Editor újraindítás szükséges. Engedélyezi a repeszek és pattogzó lövedékek vizuális nyomkövetését, csak egyjátékos módok alatt. (Только для одиночной игры) Требует перезапуска миссии/редактора. Включает визуальные следы от осколков и обломков в режиме одиночной игры. (Solo SP) Richiede un restart editor/missione. Abilita il tracciamento visivo di schegge da frammentazione/spalling in modalità Giocatore Singolo. - (SP のみ) ミッションとエディタの再起動が必要です。有効化すると、シングルプレイでのみ破片と剥離の弾頭が見えるようになります。 + (SP のみ) ミッションとエディタの再起動が必要です。有効化すると、シングルプレイでのみ破片と剥離の飛翔体が見えるようになります。 (仅单人)激活后,只有在单人模式下才可观察到破片粒子的移动轨迹。 (僅在單人模式) 讓你在單人模式下可觀察到碎片/剝落粒子的移動軌跡 (SP 전용) 임무 / 편집자가 다시 시작해야합니다. SP 게임 모드에서만 파편화 및 탄환파편의 시각적 추적을 가능하게 합니다. diff --git a/addons/gestures/XEH_preInit.sqf b/addons/gestures/XEH_preInit.sqf index 9361d05015..894773534a 100644 --- a/addons/gestures/XEH_preInit.sqf +++ b/addons/gestures/XEH_preInit.sqf @@ -6,6 +6,6 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" ADDON = true; diff --git a/addons/gestures/initSettings.sqf b/addons/gestures/initSettings.inc.sqf similarity index 100% rename from addons/gestures/initSettings.sqf rename to addons/gestures/initSettings.inc.sqf diff --git a/addons/gestures/stringtable.xml b/addons/gestures/stringtable.xml index 8d77e28a83..33b73290c3 100644 --- a/addons/gestures/stringtable.xml +++ b/addons/gestures/stringtable.xml @@ -63,7 +63,7 @@ Előre Avançar Avanzare - 警戒 + 前進 전진 前进 前進 @@ -80,7 +80,7 @@ Mozgás Mover-se Muoversi - 進め + 行け 이동 出发 出發 @@ -114,7 +114,7 @@ Fel Acima Alzarsi - 立ち上がれ + 立て 起立 起立 @@ -195,7 +195,7 @@ Собраться Reagrupar Přeskupit - Raggruppare + Raggrupparsi Reunirse 集合 집결 @@ -243,7 +243,7 @@ Показать направление Ponta Ukázat - Puntare + Punta Señalar 指示 가리키기 @@ -288,12 +288,12 @@ Zeige Gesten im Interaktionsmenü Zobrazit posunky v interakčním menu Pokaż gesty w menu interakcji - Mostra Gesti su Menù Interazione + Mostra Gesti nel Menù Interazione Mostrar gestos en el menú de interacción Afficher les gestes dans le menu d'interaction Mostrar gestos no menu de interação Показать жесты в меню взаимодействия - インタラクション メニュー上でジェスチャー表示 + インタラクションメニュー上でジェスチャー表示 수신호를 상호작용 메뉴에서 보여줍니다 显示手势互动菜单 顯示手勢互動選單 @@ -309,7 +309,7 @@ Afficher les gestes dans le menu d'interaction personnel, ou utiliser uniquement les touches, ou désactiver complètement. Mostra gestos no menu de interação, ou utilize um dos atalhos de teclado ou desative completamente Показать жесты в меню взамиодейтсвия с собой или только использовать горячие клавиши, или полностью отключить - キー操作や同時使用を無効化している場合はセルフ インタラクション メニュ上でジェスチャーを表示します + セルフ インタラクションメニューでジェスチャーを表示するか、キーバインドのみを使用するか、完全に無効にします 수신호를 상호작용 메뉴에서 보여주거나 혹은 단축키를 지정하거나 아니면 아예 사용하지 않습니다. 显示手势选项在自己的互动菜单上,或只利用键盘来使用手势,或完全禁用 顯示手勢選項在自己的互動選單上,或只利用鍵盤來使用手勢,或完全禁用 @@ -341,7 +341,7 @@ Touches + menu d'interaction Atalhos + Menu de Interação Клавиши + Меню взаимодействия - キー操作とインタラクション メニュ + キー操作とインタラクションメニュー 단축키 및 상호작용 메뉴 键盘 + 互动菜单 鍵盤 + 互動選單 diff --git a/addons/gforces/ACE_Arsenal_Stats.hpp b/addons/gforces/ACE_Arsenal_Stats.hpp index 372f5af782..bebcf74489 100644 --- a/addons/gforces/ACE_Arsenal_Stats.hpp +++ b/addons/gforces/ACE_Arsenal_Stats.hpp @@ -6,7 +6,7 @@ class EGVAR(arsenal,stats) { stats[] = {"ACE_GForceCoef"}; displayName = CSTRING(statGReduction); showBar = 1; - barStatement = QUOTE([ARR_3((_this select 0) select 0, _this select 1, [ARR_3([ARR_2(1, 0)], [ARR_2(0.01, 1)], false)])] call EFUNC(arsenal,statBarStatement_default)); + barStatement = QUOTE([ARR_3((_this select 0) select 0,_this select 1,[ARR_3([ARR_2(1,0)],[ARR_2(0.01,1)],false)])] call EFUNC(arsenal,statBarStatement_default)); condition = QUOTE(getNumber (_this select 1 >> (_this select 0) select 0) > 0); tabs[] = {{3}, {}}; }; diff --git a/addons/gforces/XEH_preInit.sqf b/addons/gforces/XEH_preInit.sqf index 4987bcc61d..55e142c18b 100644 --- a/addons/gforces/XEH_preInit.sqf +++ b/addons/gforces/XEH_preInit.sqf @@ -6,7 +6,7 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" GVAR(GForces) = []; GVAR(GForces_Index) = 0; diff --git a/addons/gforces/functions/fnc_pfhUpdateGForces.sqf b/addons/gforces/functions/fnc_pfhUpdateGForces.sqf index 13d08f833b..7ff3444b7d 100644 --- a/addons/gforces/functions/fnc_pfhUpdateGForces.sqf +++ b/addons/gforces/functions/fnc_pfhUpdateGForces.sqf @@ -71,7 +71,7 @@ private _suitCoef = if ((uniform ACE_player) != "") then { private _gBlackOut = MAXVIRTUALG / _classCoef + MAXVIRTUALG / _suitCoef - MAXVIRTUALG; // Unconsciousness -if ((_average > _gBlackOut) && {["ACE_Medical"] call EFUNC(common,isModLoaded) && {!(ACE_player getVariable ["ACE_isUnconscious", false])}}) then { +if ((_average > _gBlackOut) && {["ace_medical"] call EFUNC(common,isModLoaded) && {!(ACE_player getVariable ["ACE_isUnconscious", false])}}) then { [ACE_player, true, (10 + floor(random 5)), true] call EFUNC(medical,setUnconscious); }; diff --git a/addons/gforces/initSettings.sqf b/addons/gforces/initSettings.inc.sqf similarity index 100% rename from addons/gforces/initSettings.sqf rename to addons/gforces/initSettings.inc.sqf diff --git a/addons/gforces/stringtable.xml b/addons/gforces/stringtable.xml index 524e456899..b84bcb01f1 100644 --- a/addons/gforces/stringtable.xml +++ b/addons/gforces/stringtable.xml @@ -10,8 +10,10 @@ ACE G-Kuvveti ACE Fuerza G ACE G-Kräfte + ACE Forze-G ACE G力 ACE 중력가속도 + ACE Força G Gforces Effects @@ -24,7 +26,7 @@ G による効果 Efekty przeciążeń 중력가속도 효과 - Effetti forza G + Effetti Forze-G G力影响 G力影響 G-Kuvveti Efekti @@ -49,13 +51,13 @@ G-force reduction G-Kräfte Reduzierung Réduction des Gs - 耐 G 性 + 耐G性 减少G力 減少G力 - Riduzione forza G + Riduzione forze-G Redukcja przeciążenia Уменьшение перегрузок - Redução de Força-G + Redução de Força G Redukce G Force Reducción de fuerzas G G-Kuvvetinde azalma @@ -66,24 +68,28 @@ Współczynnk przeciążenia Coefficient de force gravitationnelle Коэф. перегрузки - G 効果係数 + G効果係数 G-Kuvvet Katsayısı Coeficiente de Fuerza G G-Kräfte-Koeffizient + Coefficiente Forze-G G力系数 중력가속도 계수 + Coeficiente de Força G Controls strength of G-Force affecting players. Wpływa na siłe przeciążeń oddziałujących na graczy Coefficient permettant d'ajuster le niveau de force gravitationnelle affectant les joueurs. Определяет силу перегрузок, влияющих на игроков. - G 効果がプレイヤーに与える影響量を設定できます。 + G効果がプレイヤーに与える影響量を設定できます。 Oyuncuları etkileyen G-Force'un gücünü kontrol eder. Controla la intensidad de fuerza G que afecta a los jugadores. Bestimmt, wie stark G-Kräfte Spieler beeinflussen. + Controlla quanto fortemente i giocatori sono influenzati da Forze-G. 控制影响玩家的G力的强度。 플레이어에게 영향을 끼칠 중력가속도의 계수를 조절합니다. + Controla a intensidade da Força G que afeta os jogadores. diff --git a/addons/goggles/XEH_preInit.sqf b/addons/goggles/XEH_preInit.sqf index 9361d05015..894773534a 100644 --- a/addons/goggles/XEH_preInit.sqf +++ b/addons/goggles/XEH_preInit.sqf @@ -6,6 +6,6 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" ADDON = true; diff --git a/addons/goggles/functions/fnc_applyDirtEffect.sqf b/addons/goggles/functions/fnc_applyDirtEffect.sqf index 94a119f946..38fc57f0ce 100644 --- a/addons/goggles/functions/fnc_applyDirtEffect.sqf +++ b/addons/goggles/functions/fnc_applyDirtEffect.sqf @@ -28,7 +28,7 @@ if ([_unit] call FUNC(isGogglesVisible)) then { private _dirtImage = getText (configFile >> "CfgGlasses" >> goggles _unit >> "ACE_OverlayDirt"); if (_dirtImage != "") then { - GVAR(GogglesEffectsLayer) cutRsc ["RscACE_GogglesEffects", "PLAIN", 0.1, false]; + GVAR(GogglesEffectsLayer) cutRsc ["RscACE_GogglesEffects", "PLAIN", 0.1, false, false]; (GETUVAR(GVAR(DisplayEffects),displayNull) displayCtrl 10660) ctrlSetText _dirtImage; private _effectBrightness = linearConversion [0,1,([] call EFUNC(common,ambientBrightness)),0.25,1]; diff --git a/addons/goggles/functions/fnc_applyDustEffect.sqf b/addons/goggles/functions/fnc_applyDustEffect.sqf index 3766c664e5..93bcbad1d6 100644 --- a/addons/goggles/functions/fnc_applyDustEffect.sqf +++ b/addons/goggles/functions/fnc_applyDustEffect.sqf @@ -20,7 +20,7 @@ if (call FUNC(ExternalCamera)) exitWith {}; private _unit = ACE_player; if ([_unit] call FUNC(isGogglesVisible)) exitWith { - GVAR(GogglesEffectsLayer) cutRsc ["RscACE_GogglesEffects", "PLAIN", 2, false]; + GVAR(GogglesEffectsLayer) cutRsc ["RscACE_GogglesEffects", "PLAIN", 2, false, false]; ((GETUVAR(GVAR(DisplayEffects),displayNull)) displayCtrl 10662) ctrlSetText format [getText (configFile >> "CfgGlasses" >> goggles _unit >> "ACE_DustPath"), GETDUSTT(DAMOUNT) + 1]; diff --git a/addons/goggles/functions/fnc_applyGlassesEffect.sqf b/addons/goggles/functions/fnc_applyGlassesEffect.sqf index 9cc1c830c6..9df47ec4d2 100644 --- a/addons/goggles/functions/fnc_applyGlassesEffect.sqf +++ b/addons/goggles/functions/fnc_applyGlassesEffect.sqf @@ -47,7 +47,7 @@ private _imagePath = getText (_config >> ["ACE_Overlay", "ACE_OverlayCracked"] s private _angle = getNumber (_config >> "ACE_Overlay_Angle"); if (_imagePath != "") then { - GVAR(GogglesLayer) cutRsc ["RscACE_Goggles", "PLAIN", 1, false]; + GVAR(GogglesLayer) cutRsc ["RscACE_Goggles", "PLAIN", 1, false, false]; private _overlay = (GLASSDISPLAY displayCtrl 10650); _overlay ctrlSetText _imagePath; diff --git a/addons/goggles/functions/fnc_handleExplosion.sqf b/addons/goggles/functions/fnc_handleExplosion.sqf index 0d1b88d7ba..8b6027cb36 100644 --- a/addons/goggles/functions/fnc_handleExplosion.sqf +++ b/addons/goggles/functions/fnc_handleExplosion.sqf @@ -41,7 +41,7 @@ if (getText (_config >> "ACE_OverlayCracked") != "") then { if (call FUNC(ExternalCamera)) exitWith {}; if (isNull (GLASSDISPLAY)) then { - GVAR(GogglesLayer) cutRsc ["RscACE_Goggles", "PLAIN", 1, false]; + GVAR(GogglesLayer) cutRsc ["RscACE_Goggles", "PLAIN", 1, false, false]; }; (GLASSDISPLAY displayCtrl 10650) ctrlSetText getText (_config >> "ACE_OverlayCracked"); diff --git a/addons/goggles/initSettings.sqf b/addons/goggles/initSettings.inc.sqf similarity index 100% rename from addons/goggles/initSettings.sqf rename to addons/goggles/initSettings.inc.sqf diff --git a/addons/goggles/stringtable.xml b/addons/goggles/stringtable.xml index 2fb6c6e54b..5fc06612d0 100644 --- a/addons/goggles/stringtable.xml +++ b/addons/goggles/stringtable.xml @@ -45,7 +45,7 @@ Mostrar efeitos de óculos em Terceira Pessoa Attiva l'effetto degli occhiali in terza persona 三人称視点でもゴーグルによる効果を表示 - 3인칭 시에도 고글 효과를 보이게 합니다 + 3인칭 시에도 고글 효과를 보이게 하기 在第三人称视角显示护目镜效果 在第三人稱視角顯示護目鏡效果 Gözlük efektlerini 3. şahıs görünümün de göster @@ -102,7 +102,7 @@ Effects эффекты - 効果 + エフェクト Efekty Effekte 효과 @@ -118,7 +118,7 @@ Tint + Effects Тонировка + эффекты - 色彩 + 効果 + 色彩 + エフェクト Winieta + Efekty Tönung + Effekte 색조+효과 diff --git a/addons/grenades/CfgMagazineWells.hpp b/addons/grenades/CfgMagazineWells.hpp index 7ac4a555dd..6f75fa31f7 100644 --- a/addons/grenades/CfgMagazineWells.hpp +++ b/addons/grenades/CfgMagazineWells.hpp @@ -1,8 +1,8 @@ class CfgMagazineWells { class CBA_40mm_M203 { - ADDON[] = {"ACE_40mm_flare_white", "ACE_40mm_flare_red", "ACE_40mm_flare_green", "ACE_40mm_flare_ir"}; + ADDON[] = {"ACE_40mm_Flare_white", "ACE_40mm_Flare_red", "ACE_40mm_Flare_green", "ACE_40mm_Flare_ir"}; }; class UGL_40x36 { - ADDON[] = {"ACE_40mm_flare_white", "ACE_40mm_flare_red", "ACE_40mm_flare_green", "ACE_40mm_flare_ir"}; + ADDON[] = {"ACE_40mm_Flare_white", "ACE_40mm_Flare_red", "ACE_40mm_Flare_green", "ACE_40mm_Flare_ir"}; }; }; diff --git a/addons/grenades/XEH_preInit.sqf b/addons/grenades/XEH_preInit.sqf index 9361d05015..894773534a 100644 --- a/addons/grenades/XEH_preInit.sqf +++ b/addons/grenades/XEH_preInit.sqf @@ -6,6 +6,6 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" ADDON = true; diff --git a/addons/grenades/functions/fnc_flashbangExplosionEH.sqf b/addons/grenades/functions/fnc_flashbangExplosionEH.sqf index cc87f492d7..bba3cffd4d 100644 --- a/addons/grenades/functions/fnc_flashbangExplosionEH.sqf +++ b/addons/grenades/functions/fnc_flashbangExplosionEH.sqf @@ -110,14 +110,14 @@ if (hasInterface && {!isNull ACE_player} && {alive ACE_player}) then { _strength = _strength * _losCoefficient; // Add ace_hearing ear ringing sound effect - if (["ACE_Hearing"] call EFUNC(common,isModLoaded) && {_strength > 0 && {EGVAR(hearing,damageCoefficent) > 0.25}}) then { + if (["ace_hearing"] call EFUNC(common,isModLoaded) && {_strength > 0 && {EGVAR(hearing,damageCoefficent) > 0.25}}) then { private _earringingStrength = 40 * _strength; [_earringingStrength] call EFUNC(hearing,earRinging); TRACE_1("Earringing Strength",_earringingStrength); }; // add ace_medical pain effect: - if (["ACE_Medical"] call EFUNC(common,isModLoaded) && {_strength > 0.1}) then { + if (["ace_medical"] call EFUNC(common,isModLoaded) && {_strength > 0.1}) then { [ACE_player, _strength / 2] call EFUNC(medical,adjustPainLevel); }; diff --git a/addons/grenades/initSettings.sqf b/addons/grenades/initSettings.inc.sqf similarity index 100% rename from addons/grenades/initSettings.sqf rename to addons/grenades/initSettings.inc.sqf diff --git a/addons/grenades/stringtable.xml b/addons/grenades/stringtable.xml index dd529085e9..d5c1b142a6 100644 --- a/addons/grenades/stringtable.xml +++ b/addons/grenades/stringtable.xml @@ -12,7 +12,7 @@ Gránátkezelési mód váltása Cambia tipo di granata Alternar Modo de Granada - 投てき方法を切り替え + 投擲方法を切り替え 투척 방법 전환 切换投掷模式 切換投擲模式 @@ -198,7 +198,7 @@ M127A1 Фальшфейер (белый) Bengala M127A1 (Blanca) M127A1 Feu à main (Blanc) - M127A1 信号弾 (白) + M127A1 手持ち式信号弾 (白) M127A1 수타식 신호탄 (하얀색) M127A1 手持式信号弹(白色) M127A1 手持式信號彈 (白色) @@ -215,7 +215,7 @@ M127A1 Фальшфейер (красный) Bengala M127A1 (Roja) M127A1 Feu à main (Rouge) - M127A1 信号弾 (赤) + M127A1 手持ち式信号弾 (赤) M127A1 수타식 신호탄 (빨간색) M127A1 手持式信号弹(红色) M127A1 手持式信號彈 (紅色) @@ -232,7 +232,7 @@ M127A1 Фальшфейер (зелёный) Bengala M127A1 (Verde) M127A1 Feu à main (Vert) - M127A1 信号弾 (緑) + M127A1 手持ち式信号弾 (緑) M127A1 수타식 신호탄 (초록색) M127A1 手持式信号弹(绿色) M127A1 手持式信號彈 (綠色) @@ -249,7 +249,7 @@ M127A1 Фальшфейер (жёлтый) Bengala M127A1 (Amarilla) M127A1 Feu à main (Jaune) - M127A1 信号弾 (黄) + M127A1 手持ち式信号弾 (黄) M127A1 수타식 신호탄 (노란색) M127A1 手持式信号弹(黄色) M127A1 手持式信號彈 (黃色) @@ -266,7 +266,7 @@ Фальшфейер (белый) Bengala (Blanca) Feu à main (Blanc) - 白の手持ち式信号弾 + 白色の手持ち式信号弾 하얀색 불꽃신호기 白色手持式信号弹 白色手持式信號彈 @@ -283,7 +283,7 @@ Фальшфейер (красный) Bengala (Roja) Feu à main (Rouge) - 赤の手持ち式信号弾 + 赤色の手持ち式信号弾 빨간색 불꽃신호기 红色手持式信号弹 紅色手持式信號彈 @@ -300,7 +300,7 @@ Фальшфейер (зелёный) Bengala (Verde) Feu à main (Vert) - 緑の手持ち式信号弾 + 緑色の手持ち式信号弾 초록색 불꽃신호기 绿色手持式信号弹 綠色手持式信號彈 @@ -317,7 +317,7 @@ Фальшфейер (жёлтый) Bengala (Amarilla) Feu à main (Jaune) - 黄の手持ち式信号弾 + 黄色の手持ち式信号弾 노란색 불꽃신호기 黄色手持式信号弹 黃色手持式信號彈 @@ -539,78 +539,92 @@ Explosive Satchel (Throwable) Ранец со взрывчаткой (метательный) Charge en sacoche (lançable) - 梱包爆薬 (投てき仕様) + 梱包爆薬 (投擲仕様) Carga de mochila explosiva (Lanzable) Pakiet ładunków wybuchowych (Rzucany) Rucksackladung (Werfbar) + Carica da Demolizioni (Lanciabile) 炸药包(可投掷) 폭파 장약 (투척) + Sacola Explosiva (Arremessável) Type: Charge<br />Rounds: 1<br />Used on: Things that need to die Тип: Взрывчатка<br />Боеприпасы 1<br />Применение: На предметах, которые должны быть уничтожены Type : Charge<br />Munitions : 1<br />Application : à balancer sur des trucs qui doivent mourir + Type: Carica<br />Colpi: 1<br />Usata su: cose che devono morire 種類: 爆薬<br />弾数: 1<br />次で使用: 破壊すべき物に Tipo: Carga<br />Unidades: 1<br />Usada: Cosas que necesitan morir Typ: Ładunek<br/>Naboje: 1<br/>Użycie: Na rzeczach które mają zginąć Typ: Ladung <br/>Patronen:1<br/>Benutzt für: Dinge die Sterben müssen 类型:炸药<br />数量:1<br />用于:需要死亡的事物 종류: 장약<br />갯수: 1<br />사용처: 죽여야 할 곳에 + Tipo: Carga<br />Munições: 1<br />Utilizada em: Coisas que devem morrer An explosive satchel that is throwable. 7 second fixed fuse Ранец со взрывчаткой. Детонация через 7 секунд Charge explosive lançable. Détonation après 7 secondes. - 投げられる梱包爆薬。起爆までの時間は 7 秒間 + Una carica da demolizioni lanciabile. Detona dopo 7 secondi fissi + 投げられる梱包爆薬。起爆まで7秒の固定時限信管付き。 Carga de mochila explosiva que se puede lanzar. Espoleta fija de 7 segundos Rzucany pakiet ładunków wybuchowych. 7 sekundowy zapalnik Werfbare Rucksackladung. 7 Sekunden Zeitzünder 一个可投掷的炸药包。7秒定时引信 던질 수 있는 폭파 장약입니다. 던지고 7초 후에 터집니다 + Uma sacola explosiva que pode ser arremessada. Pavio de 7 segundos Explosive Charge (Throwable) Заряд со взрывчаткой (метательный) Charge explosive (lançable) - 爆薬ブロック (投てき仕様) + Carica Esplosiva (Lanciabile) + 爆薬ブロック (投擲仕様) Carga explosiva (Lanzable) Ładunek wybuchowy (Rzucany) Sprengladung (Werfbar) 炸药块(可投掷) 폭파 블럭 (투척) + Carga Explosiva (Arremessável) An explosive charge that is throwable. 7 second fixed fuse Заряд со взрывчаткой. Детонация через 7 секунд Bloc explosif lançable. Détonation après 7 secondes. - 投げられる爆薬ブロック。起爆までの時間は 7 秒間 + Una carica esplosiva lanciabile. Detona dopo 7 secondi fissi + 投げられる爆薬ブロック。起爆まで7秒の固定時限信管付き。 Carga explosiva que se puede lanzar. Espoleta fija de 7 segundos Rzucany ładunkek wybuchowy. 7 sekundowy zapalnik Werfbare Sprengladung. 7 Sekunden Zeitzünder 一个可投掷的炸药块。7秒定时引信 던질 수 있는 폭파 블럭입니다. 던지고 7초 후에 터집니다 + Uma carga explosiva que pode ser arremessada. Pavio de 7 segundos Convert to short fuse Применить фитиль Appliquer une mèche + Converti a spoletta corta 短信管へ変更 Convertir a espoleta corta Konwertuj na krótki zapalnik Zündschnur verkürzen 切换为短引信 단축 신관으로 바꾸기 + Converter para pavio curto Remove short fuse Убрать фитиль Retirer la mèche + Rimuovi spoletta corta 短信管を削除 Quitar espoleta corta Usuń krótki zapalnik Kurze Zündschnur entfernen 去除短引信 단축 신관 제거하기 + Remover pavio curto ACE Grenades @@ -632,23 +646,27 @@ Allow Explosive Conversion Разрешить фитили Autoriser les mèches (charges lançables) - 爆薬変更を許可 + Abilita conversione a lanciabili + 爆発物の変換を許可 Permitir conversión de explosivos Pozwól na konwersję ładunków wybuchowych Erlaube die Umwandlung von Sprengstoffen 允许转换炸药 폭발물 변환 가능여부 + Permitir Conversão de Explosivos Allow converting explosives to throwables Разрешает преобразовывать взрывчатку в метательные снаряды Cette option permet de rendre les charges explosives lançables, à la manière des grenades.\nPour celà, ouvrir l'inventaire et double-cliquer sur les charges, afin de leur appliquer une mèche.\nLa mèche peut se retirer en suivant la même procédure. - 爆発物を投てき仕様へ交換できるようにします。 + Permette la conversione di certi esplosivi piazzabili a esplosivi lanciabili. + このオプションを使用すると、爆発物が手榴弾のように投擲可能になります。\nこれを行うには、インベントリを開いて爆発物をダブルクリックして、爆発物を短信管に変更します。\n信管は同じ手順で取り外すことができます。 Permitir convertir explosivos a lanzables Zezwala na konwersje ładunków wybuchowych na rzucane wersje Erlaube die Umwandlung von Sprengstoffen in werfbare Ladungen 允许将炸药转换为可投掷物 폭발물을 투척무기로 변환할 수 있도록 허용합니다. + Permitir conversão de explosivos em arremessáveis diff --git a/addons/gunbag/XEH_preInit.sqf b/addons/gunbag/XEH_preInit.sqf index ad244390fa..2bb35513a2 100644 --- a/addons/gunbag/XEH_preInit.sqf +++ b/addons/gunbag/XEH_preInit.sqf @@ -6,7 +6,7 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" // restore gunbag info after respawn ["CAManBase", "respawn", { diff --git a/addons/gunbag/functions/fnc_swapGunbagCallback.sqf b/addons/gunbag/functions/fnc_swapGunbagCallback.sqf index fb5009577e..a7d319506b 100644 --- a/addons/gunbag/functions/fnc_swapGunbagCallback.sqf +++ b/addons/gunbag/functions/fnc_swapGunbagCallback.sqf @@ -11,7 +11,7 @@ * None * * Example: - * [player, target] call ace_gunbag_fnc_swapGunbag + * [player, target] call ace_gunbag_fnc_swapGunbagCallback * * Public: No */ diff --git a/addons/gunbag/initSettings.sqf b/addons/gunbag/initSettings.inc.sqf similarity index 100% rename from addons/gunbag/initSettings.sqf rename to addons/gunbag/initSettings.inc.sqf diff --git a/addons/gunbag/stringtable.xml b/addons/gunbag/stringtable.xml index 324229d6e3..cf7198f41e 100644 --- a/addons/gunbag/stringtable.xml +++ b/addons/gunbag/stringtable.xml @@ -26,7 +26,7 @@ ガンバッグ (タン) Torba na broń (jasnobrązowa) 총가방 (황갈색) - Borsa per Armi (Tan) + Borsa per Armi (Marroncina) 枪袋(黄褐色) 槍袋 (黃褐色) Bolsa de Arma (Bege) @@ -58,10 +58,10 @@ ガンバッグへ武器を入れる Włóż broń do torby 무기를 총가방에 넣기 - Metti l'arma nella borsa per armi + Metti l'arma nella borsa 将武器放置枪袋 將武器放置槍袋 - Colocar arma na Bosla de Arma + Colocar arma na Bolsa de Arma Silahını silah çantasına koy Poner el arma en la funda @@ -74,8 +74,10 @@ Silah çantasında silah değişimi Intercambiar arma en funda de arma Waffe in Waffentasche tauschen + Scambia arma nella borsa 交换枪袋中的武器 총가방 안에 있는 무기랑 교환하기 + Trocar arma na Bolsa de Arma Enable Weapon Swap @@ -86,8 +88,10 @@ Silah Değiştirmeyi Etkinleştir Habilitar cambio de arma Aktiviere Tauschen von Waffen + Abilita Scambio Arma 启用武器互换 무기 교환 활성화 + Habilitar Troca de Arma Allows interaction to directly swap the primary weapon and stored weapon. @@ -98,8 +102,10 @@ Etkileşimin doğrudan birincil silahı ve depolanan silahı değiştirmesine izin verir. Permitir interacción para intercambiar el arma principal y el arma guardada. Erlaube den direkten Wechsel von Primärer und verstauter Waffe über das Interaktionsmenü. + Permetti un'interazione per scambiare l'arma primaria con quella nella borsa. 允许互动直接切换主武器和存储武器。 - 보관 중인 무기와 주무기와 바로 바꾸는 것을 허용합니다. + 보관 중인 무기를 주무기와 바로 바꾸는 것을 허용합니다. + Permite interação para trocar a arma primária e a arma armazenada. Get weapon out of gunbag @@ -110,7 +116,7 @@ ガンバッグから武器を出す Wyciągnij broń z torby 무기를 총가방에서 꺼내기 - Prendi l'arma dalla borsa per armi + Prendi l'arma dalla borsa 将武器拿出枪袋 將武器拿出槍袋 Retirar arma da Bolsa de Arma diff --git a/addons/headless/CfgEden.hpp b/addons/headless/CfgEden.hpp index 30ee16fdc2..3382b3a89e 100644 --- a/addons/headless/CfgEden.hpp +++ b/addons/headless/CfgEden.hpp @@ -9,7 +9,7 @@ class Cfg3DEN { property = QXGVAR(blacklist); control = "Checkbox"; condition = "objectControllable"; - expression = QUOTE(_this setVariable [ARR_3(QQXGVAR(blacklist), _value, true)]); + expression = QUOTE(_this setVariable [ARR_3(QQXGVAR(blacklist),_value,true)]); defaultValue = "(false)"; }; }; @@ -25,7 +25,7 @@ class Cfg3DEN { tooltip = CSTRING(BlacklistEdenDesc); property = QXGVAR(blacklist); control = "Checkbox"; - expression = QUOTE(_this setVariable [ARR_3(QQXGVAR(blacklist), _value, true)]); + expression = QUOTE(_this setVariable [ARR_3(QQXGVAR(blacklist),_value,true)]); defaultValue = "(false)"; }; }; diff --git a/addons/headless/XEH_preInit.sqf b/addons/headless/XEH_preInit.sqf index 3c18740cc8..bd64702f5c 100644 --- a/addons/headless/XEH_preInit.sqf +++ b/addons/headless/XEH_preInit.sqf @@ -6,7 +6,7 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" if (isServer) then { GVAR(headlessClients) = []; diff --git a/addons/headless/initSettings.sqf b/addons/headless/initSettings.inc.sqf similarity index 100% rename from addons/headless/initSettings.sqf rename to addons/headless/initSettings.inc.sqf diff --git a/addons/headless/stringtable.xml b/addons/headless/stringtable.xml index 3956c14a87..584c12f954 100644 --- a/addons/headless/stringtable.xml +++ b/addons/headless/stringtable.xml @@ -13,32 +13,35 @@ Headless Headless клиент Headless + Headless This module allows you to setup automatic transferring of AI to Headless Clients. (Default: No) Dieses Modul erlaubt es dir, die KI automatisch auf einen Headless Client zu transferieren. (Standard: Nein) Ten moduł zezwala na automatyczny transfer AI do Headless Cient. (Domyślnie: Nie) 이 모듈을 사용하면 헤드리스 클라이언트에 AI 자동 전송을 설정할 수 있습니다. (기본값 : No) - モジュールはAIを自動的にヘッドレスクライアントへ移行します。(標準: 無効) + モジュールはAIを自動的にヘッドレスクライアントへ移行します。 (デフォルト: 無効) Ce module permet de mettre en place un transfert aotmatique de l'IA vers le Headless Clients. (Défaut: Non) 此模块能让你自动转换 AI 的控制权给其他 Headless 客户端。(预设:关闭) 此模塊能讓你自動轉換AI的控制權給其他無頭客戶端。(預設:關閉) - Questo modulo ti consente di impostare il trasferimento automatico delle AI su dei Client Headless. (Default: No) + Questo modulo ti consente di impostare il trasferimento automatico delle IA su dei Client Headless. (Predefinito: No) Этот модуль позволяет настроить автоматическую передачу управления ИИ Headless клиентам. (По умолчанию: Откл) Este modulo permite habilitar la transferencia de IA a los Headless Clients. (Defecto: No) + Este módulo permite configurar a transferência automática de IA para Headless Clients. (Padrão: Não) Enables transferring of AI to Headless Clients. Aktiviert den Transfer der KI auf die Headless Clients. Włącza transfer AI do Headless Client. AI를 헤드리스 클라이언트로 전송할 수 있습니다. - AIをヘッドレスクライアントへ移行を有効化 + AI のヘッドレス クライアントへの転送を有効化します。 Permet le transfert des IA au Headless Clients. 开启转换 AI 控制权给 Headless 客户端。 開啟轉換AI控制權給無頭客戶端。 - Abilita il trasferimento delle AI sugli Headless Client. + Abilita il trasferimento delle IA sugli Headless Client. Передает управление ИИ Headless клиентам. Habilita la transferencia de IA a los Headless Clients + Ativa a transferência de IA para Headless Clients. Delay @@ -52,19 +55,21 @@ Latenza Задержка Retardo + Atraso Minimal delay between transfers, in seconds. (Default: 15) Minimale Verzögerung zwischen Transfers in Sekunden. (Standard: 15) Minimalny odstęp pomiędzy transferami w sekundach. (Domyślnie: 15) 전송 간 최소 지연 시간, 초당. (기본값: 15) - 移行する際の最低遅延を秒数で設定します。(標準: 15) + 移行する際の最低遅延を秒数で設定します。 (デフォルト: 15) Délai minimum entres les transferts, en secondes. (Défaut: 15) 设定每次转换间隔多少秒。(预设:15秒) 設定每次轉換間隔多少秒。(預設:15秒) - Latenza minima tra i trasferimenti, in secondi. (Default: 15) + Latenza minima tra i trasferimenti, in secondi. (Predefinito: 15) Минимальная задержка в секундах между передачами. (По умолчанию: 15) Retardo mínimo entre transferencias en segundos. (Default: 15) + Atraso mínimo entre transferências, em segundos. (Padrão: 15) End Mission @@ -78,12 +83,13 @@ Koniec misji Завершать миссию Finalizar misión + Finalizar Missão End mission when there are no players connected (same as 'persistent = 0' in server configuration but with Headless Client support). Beende die Mission, wenn keine Spieler mehr verbunden sind (das gleiche wie 'persitent = 0' in den Serverkonfigurationen aber mit Headless Client Unterstützung). 연결된 플레이어가 없을 때 임무 종료. (서버 구성에서는 'persistent = 0'과 같지만 Headless Client는 지원함) - プレイヤーが接続していない場合はミッション終了します。(サーバ設定の'presistent =0'と同じですが、ヘッドレスクライアントは適用されます) + プレイヤーが接続していない場合はミッション終了します。(サーバ設定の'presistent =0'と同じですが、ヘッドレスクライアントをサポートします) Termine la mission lorsqu'il n'y a plus de joueur connecté (idem que 'persistent = 0' dans la config serveur mais avec la gestion du Headless Client). 当服务器里没有任何玩家还连线时自动结束任务(效果同于伺服器设定的'persistent = 0',但支援 Headless 客户端)。 當伺服器裡沒有任何玩家還連線時自動結束任務(效果同於伺服器設定的'persistent = 0',但支援無頭客戶端)。 @@ -91,6 +97,7 @@ Kończy misje kiedy nie ma połączonych graczy(tak samo jak 'persistent = 0' w konfiguracji serwer ale z wsparciem Headless Client Завершает миссию, если нет присоединенных игроков (аналогично 'persistent = 0' в настройках сервера, но с включенной поддержкой Headless клиентов). Finalizar la misión cuando no hay jugadores conectados (igual que la opción de servidor 'persistent = 0', pero con soporte para Headless Client). + Finaliza a missão quando não há jogadores conectados (o mesmo que 'persistent = 0' na configuração do servidor, mas com suporte para Headless Client). Instant @@ -104,6 +111,7 @@ Natychmiastowy Мгновенно Instantáneo + Instantâneo Delayed (60s) @@ -117,6 +125,7 @@ Opóźniony (60s) С задержкой (60 с) Retardado (60s) + Atrasado (60s) Log @@ -130,23 +139,26 @@ Registra Журнал Registrar + Registo Log transfer statistics and Headless Client (dis)connections to RPT. (Default: No) Zeichnet Transferstatistiken, Verbindungen und Verbindungsabbrüche in einer RPT-Datei auf. (Standard: Nein) Zapisz statystyki transferu i status połączenia Headless Clienta do RPT. (Domyślnie: Tak) 전송 통계 및 헤드리스 클라이언트 연결(해제)를 RPT파일에 로그함. (기본값: No) - 統計とヘッドレスクライアントの接続有無を PRT へ記録します。(標準: 無効) + 統計とヘッドレスクライアントの接続有無を PRT へ記録します。 (デフォルト: 無効) Archive les statistiques de transfert et de (dé)connections du Headless Client dans le RPT. (Défaut: Non) 记录 Headless 客户端间的转换数量与连线/断线等记录到 RPT 报告档中。(预设:关闭) 記錄無頭客戶端間的轉換數量與連線/斷線等記錄到RPT報告檔中。(預設:關閉) - Registra le statistiche del trasferimento e delle (dis)connessioni dell'Headless Clienti su RPT. (Default: No) + Registra le statistiche del trasferimento e delle (dis)connessioni dell'Headless Clienti su RPT. (Predefinito: No) Вести журнал передач и подключений Headless клиентов в файл RPT. (По умолчанию: Откл) Registrar las estadísticas de transferencia y las (des)conexiones de Headless Client hacia el RPT. (Default: No) + Regista as estatísticas de transferência e as (des)conexões do Headless Client para o RPT. (Padrão: Não) Transfer Loadout Transferiere Ausrüstung + Trasferisci Equipaggiamento 装備の移送 裝備傳輸 装备转移 @@ -154,10 +166,13 @@ Transfer Wyposażenia 로드아웃 전송 Transferir equipamiento + Transfert équipement + Transferir Equipamento Transfer loadout of units attempts to work around an issue where units appear naked after transferring to a Headless Client. Transferiere die Ausrüstung einer Einheit, um einen Fehler zu umgehen, bei welchem Einheiten nach dem Transfer auf einen Headless Client nackt erscheinen. + Il trasferimento di equipaggiamenti tenta di mitigare un problema dove unità appaiono nude dopo essere state trasferite al Headless Client. 装備の移送はヘッドレスクライアントへの移行後にユニットが裸で出現する問題の回避を試みます。 Передача снаряжения юнитов позволяет обходить проблему, при которой юниты оказываются без снаряжения после передачи управления Headless клиенту. 裝備傳輸用於試著暫時應付單位透過無頭客戶端傳輸時所導致裸裝之問題。 @@ -165,10 +180,13 @@ Transfer Wyposażenia jednostek usiłuje uniknąć problemu z nagimi jednostkami po transferze do Headless Clienta 헤드리스 클라이언트로 넘어갈 때 유닛이 벌거벗고 있는 상황을 해결하기 위해 로드아웃을 유닛에 전송합니다. Transferir el equipamiento de unidades intenta solventar el problema por el cual las unidades aparecen desnudas despues de ser transferidas a un Headless Client. + Transférer l'équipement des unités pour contourner une erreur où les unités apparaissent nues après un transfer vers le Headless Client. + Transferir equipamento de unidades para contornar um problema onde as unidades aparecem nuas após a transferência para um Headless Client. Current Loadout Derzeitige Ausrüstung + Equipaggiamento Corrente 現在の装備 目前裝備 当前装备 @@ -176,10 +194,13 @@ Obecne wyposażenie 현재 로드아웃 Equipamiento actual + Equipement actuel + Equipamento Atual Config Loadout Konfiguriere Ausrüstung + Equipaggiamento Configurato コンフィグの装備 設置裝備 设置装备 @@ -187,6 +208,8 @@ Konfiguracja Wyposażenia 로드아웃 설정 Configuración de equipamiento + Configuration de l'équipement + Configuração do Equipamento Headless Blacklist @@ -200,6 +223,7 @@ Czarna lista Headless Черный список Headless Lista negra de Headless + Lista Negra Headless Disables transferring of this AI unit/group to Headless Clients. No effect on player units. @@ -208,11 +232,12 @@ Désactive le transfert de ce(tte) unité/groupe au Headless Clients. Sans effet sur les unités des joueurs. 禁止转换黑名单中的 AI 单位/群组到 Headless 客户端上。此功能对玩家单位无用。 禁止轉換黑名單中的AI單位/群組到無頭客戶端上。此功能對玩家單位無用。 - Disabilita il trasferimento di questa unità/gruppo di AI negli Headless Client. Non ha effetto sui giocatori. + Disabilita il trasferimento di questa unità/gruppo di IA negli Headless Client. Non ha effetto sui giocatori. 이 AI 유닛/그룹을 헤드리스 클라이언트로 전송하지 못하도록 합니다. 플레이어 유닛에는 영향을 주지 않습니다. Wyłącza transfer tych jednostek/grup AI do Headless Clients. Bez efektu na jednostkach gracza. Отключает передачу управления этого юнита/группы Headless клиентам. Не влияет на юниты игроков. Deshabilita la transferencia de esta unidad/grupo de IA hacia los Headless Clients.Sin efecto sobre unidades de jugadores. + Desativa a transferência desta unidade/grupo de IA para Headless Clients. Sem efeito nas unidades de jogadores. diff --git a/addons/hearing/ACE_Arsenal_Stats.hpp b/addons/hearing/ACE_Arsenal_Stats.hpp index 9e47b0a493..0ab83eed60 100644 --- a/addons/hearing/ACE_Arsenal_Stats.hpp +++ b/addons/hearing/ACE_Arsenal_Stats.hpp @@ -6,7 +6,7 @@ class EGVAR(arsenal,stats) { stats[] = {QGVAR(protection)}; displayName= CSTRING(statHearingProtection); showBar = 1; - barStatement = QUOTE([ARR_3((_this select 0) select 0, _this select 1, [ARR_3([ARR_2(0, 1)], [ARR_2(0.01, 1)], false)])] call EFUNC(arsenal,statBarStatement_default)); + barStatement = QUOTE([ARR_3((_this select 0) select 0,_this select 1,[ARR_3([ARR_2(0,1)],[ARR_2(0.01,1)],false)])] call EFUNC(arsenal,statBarStatement_default)); tabs[] = {{6}, {}}; }; class ACE_volumeMuffling: statBase { @@ -15,7 +15,7 @@ class EGVAR(arsenal,stats) { stats[] = {QGVAR(lowerVolume)}; displayName= CSTRING(statHearingLowerVolume); showBar = 1; - barStatement = QUOTE([ARR_3((_this select 0) select 0, _this select 1, [ARR_3([ARR_2(0, 1)], [ARR_2(0.01, 1)], false)])] call EFUNC(arsenal,statBarStatement_default)); + barStatement = QUOTE([ARR_3((_this select 0) select 0,_this select 1,[ARR_3([ARR_2(0,1)],[ARR_2(0.01,1)],false)])] call EFUNC(arsenal,statBarStatement_default)); tabs[] = {{6}, {}}; }; }; diff --git a/addons/hearing/CfgEventHandlers.hpp b/addons/hearing/CfgEventHandlers.hpp index f046e6495f..310be3675b 100644 --- a/addons/hearing/CfgEventHandlers.hpp +++ b/addons/hearing/CfgEventHandlers.hpp @@ -20,7 +20,7 @@ class Extended_PostInit_EventHandlers { class Extended_Init_EventHandlers { class CAManBase { class GVAR(AddEarPlugs) { - serverInit = QUOTE( _this call FUNC(addEarPlugs) ); + serverInit = QUOTE(_this call FUNC(addEarPlugs)); }; }; }; diff --git a/addons/hearing/CfgVehicles.hpp b/addons/hearing/CfgVehicles.hpp index 648c37c77a..a762534460 100644 --- a/addons/hearing/CfgVehicles.hpp +++ b/addons/hearing/CfgVehicles.hpp @@ -7,15 +7,15 @@ class CfgVehicles { displayName = CSTRING(EarPlugs_On); condition = QUOTE(GVAR(EnableCombatDeafness) && {!([_player] call FUNC(hasEarPlugsIn)) && {'ACE_EarPlugs' in items _player}}); exceptions[] = {"isNotSwimming", "isNotInside", "isNotSitting"}; - statement = QUOTE([ARR_2(_player, true)] call FUNC(putInEarPlugs)); + statement = QUOTE([ARR_2(_player,true)] call FUNC(putInEarPlugs)); showDisabled = 0; icon = QPATHTOF(UI\ACE_earplugs_x_ca.paa); }; class ACE_RemoveEarplugs { displayName = CSTRING(EarPlugs_Off); - condition = QUOTE( GVAR(EnableCombatDeafness) && {[_player] call FUNC(hasEarPlugsIn)}); + condition = QUOTE(GVAR(EnableCombatDeafness) && {[_player] call FUNC(hasEarPlugsIn)}); exceptions[] = {"isNotSwimming", "isNotInside", "isNotSitting"}; - statement = QUOTE([ARR_2(_player, true)] call FUNC(removeEarPlugs)); + statement = QUOTE([ARR_2(_player,true)] call FUNC(removeEarPlugs)); showDisabled = 0; icon = QPATHTOF(UI\ACE_earplugs_x_ca.paa); }; diff --git a/addons/hearing/CfgWeapons.hpp b/addons/hearing/CfgWeapons.hpp index 9e0053a284..23ebe5c1d2 100644 --- a/addons/hearing/CfgWeapons.hpp +++ b/addons/hearing/CfgWeapons.hpp @@ -10,7 +10,7 @@ class CfgWeapons { picture = QPATHTOF(UI\ACE_earplugs_x_ca.paa); scope = 2; class ItemInfo: CBA_MiscItem_ItemInfo { - mass = 1; + mass = 0.1; }; }; diff --git a/addons/hearing/XEH_preInit.sqf b/addons/hearing/XEH_preInit.sqf index 5d6b275adc..2ab07c31e6 100644 --- a/addons/hearing/XEH_preInit.sqf +++ b/addons/hearing/XEH_preInit.sqf @@ -6,7 +6,7 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" ["CBA_loadoutSet", { params ["_unit", "_loadout", "_extendedInfo"]; diff --git a/addons/hearing/initSettings.sqf b/addons/hearing/initSettings.inc.sqf similarity index 100% rename from addons/hearing/initSettings.sqf rename to addons/hearing/initSettings.inc.sqf diff --git a/addons/hearing/stringtable.xml b/addons/hearing/stringtable.xml index 1aeac049ba..7c40f3f702 100644 --- a/addons/hearing/stringtable.xml +++ b/addons/hearing/stringtable.xml @@ -29,7 +29,7 @@ Erősebb hanghatásoktól védő füldugó, megakadályozza a nagy hanggal járó fegyverzettől való halláskárosodást. Protetor para ouvidos permitem que o usuário esteja próximo a ruídos sem danificar sua audição. Proteggono l'apparato uditivo, permettendo a chi li indossa di resistere ai suoni particolarmente forti senza alcun danno. - 着けることにより、近くの大きな銃声から聴覚を保護します。 + 耳栓を着けることにより、近くの大きな銃声から聴覚を保護します。 보호용 귀마개는 화기로부터의 큰소리로부터 사용자의 청력을 보호합니다. 配戴防护耳塞,遇到大声的武器发射时也不会损害听力。 配戴防護耳塞,遇到大聲的武器發射時也不會損害聽力 @@ -78,7 +78,7 @@ Bouchons mis Füldugó berakva Protetores colocados - Indossa i tappi auricolari + Tappi auricolari indossati 耳栓を着けました 귀마개 착용 耳塞已塞入 @@ -95,7 +95,7 @@ Bouchons enlevés Füldugó kivéve Protetores retirados - Levati i tappi auricolari + Tappi auricolari rimossi 耳栓を外しました 귀마개 뺌 耳塞已取出 @@ -128,7 +128,7 @@ Vypnout pískání v uších Wyłącz dzwonienie w uszach Fülcsengés letiltása - Disabilita i fischi nelle orecchie + Disabilita il fischio nelle orecchie Desabilitar zumbido de ouvidos 耳鳴りを無効化 이명현상 끄기 @@ -141,10 +141,10 @@ Desactiva el efecto de zumbido cuando el jugador recibe daño auditivo. Usuń szum w uszach przy chwilowej utracie słuchu. Enlève l'effet d'acouphène lorsqu'un joueur subit des dommages auditifs. - Quando il giocatore riceve danni all'udito, non fa sentire i fischi nelle orecchie + Quando il giocatore riceve danni all'udito, non far sentire il fischio nelle orecchie Remove o efeito de zunido quando o jogador recebe dano na audição Убирает эффект звона в ушах, когда игрок получает повреждение слуха - プレイヤーの聴覚が損傷したら耳鳴りの効果を削除します + プレイヤーの聴覚が損傷したときの耳鳴り効果を削除します 플레이어가 청력손실을 입을 때 생기는 이명현상을 제거합니다. 关闭耳鸣效果时,就算玩家受到相当程度的听力伤害,也不会造成耳鸣效果 關閉耳鳴效果時,就算玩家受到相當程度的聽力傷害, 也不會造成耳鳴效果 @@ -177,7 +177,7 @@ Harci süketség engedélyezése? Оглушение Sordità da combattimento - 戦闘による難聴を有効化 + 戦闘難聴を有効化 전투 난청 켜기 启用战斗性耳聋? 啟用戰鬥性耳聾? @@ -190,9 +190,9 @@ Snižuje schopnost sluchu pokud dojde k jeho poškození hlasitou a blízkou střelbou Ativar surdez em combate? Уменьшает возможность игрока слышать звуки при повреждении органов слуха - Riduci l'abilità uditiva quando il giocatore riceve danno uditivo + Assorda il giocatore quando riceve danni all'udito Réduit la capacité auditive du joueur lorsqu'il subit des dommages auditifs. - 音による損傷をうけ、聴覚が減る可能性があります + プレイヤーが聴覚ダメージを受けると聴力が低下します 청력에 손상을 입으면 듣는 소리가 감소합니다. 当玩家听力受损时降低听力能力? 當玩家聽力受損時降低聽力能力? @@ -208,7 +208,7 @@ Pemet le réglage de la surdité au combat et des bourdonnements. Si actif, les joueurs sans protection auditive peuvent être assourdis quand une arme est utilisée à proximité, ou lorsqu'une explosion se produit. Controles de sordera de combate y zumbido en los oídos. Al activarlo, los jugadores pueden ser ensordecidos cuando un arma se dispara cerca o una explosión tiene lugar sin protección auditiva Controlla la sordità da combattimento e fischio alle orecchie. Quando attivato, i giocatori possono essere assordati quando un'arma spara vicino o avviene un'esplosione senza protezione uditiva - 戦闘による難聴や、耳鳴りを設定します。有効では聴覚を保護していないと近傍の銃声や爆発音により、難聴になります。 + 戦闘による難聴や、耳鳴りを設定します。有効にすると聴覚を保護していないと近くの銃声や爆発音により、プレイヤーが難聴になる可能性が発生します。 전투 난청과 이명현상을 조작합니다. 작동시 플레이어가 화기나 폭발의 주변에 있을경우 청력보호장치가 없을때 청력손실을 입습니다. 设定战斗性耳聋和耳鸣。当启用后,玩家会在有武器在旁边射击或爆炸产生时造成耳鸣效果 設定戰鬥性耳聾和耳鳴。當啟用後,玩家會在有武器在旁邊射擊或爆炸產生時造成耳鳴效果 @@ -221,9 +221,9 @@ Afeta Zeus CR Efecto Zeus RC Vliv na Zeus RC - Effetto Zeus RC + Affligge unità Zeus RC Affecte le CàD Zeus - Zeus RC への効果 + Zeus遠隔操作ユニットへの効果 Zeus RC 효과 启用效果在宙斯远程遥控 啟用效果在宙斯遠程遙控 @@ -236,9 +236,9 @@ Permite que unidades remotamente controladas pelo Zeus sejam atingidas por danos auditivos. Permitir a las unidades por control remoto de zeus que puedan tener daños auditivos. Aktivovat efekt ztráty sluchu pro vzdáleně ovládané jednotky. - Consenti alle unità controllate in remoto da Zeus di ricevere danni all'udito. + Abilita danni all'udito per unità controllate in remoto da Zeus. Permet aux unités contrôlées à distance par Zeus de subir des dommages auditifs. - Zeus により遠隔操作されたユニットにも、聴覚へ損傷を受けるようにします。 + Zeusにより遠隔操作されたユニットも、聴覚ダメージの効果を受けるようにします。 Zeus가 원격으로 청력손실을 입힐 수 있게 합니다. 设定宙斯远程遥控的单位也会受到耳鸣的效果。 設定宙斯遠程遙控的單位也會受到耳鳴的效果。 @@ -265,10 +265,10 @@ Добавляет предмет `ACE_EarPlugs` всем юнитам, которые имеют громкое оружие. Можно отключить при ручной настройке снаряжения. Adicionar o item `ACE_EarPlugs` a todas as unidades que tenham armas barulhentas. Pode ser desabilitado com carregamentos customizados. Přidat `ACE_EarPlugs` všem jednotkám které mají zbraň. Můžete vypnout, pokud používáte vlastní výbavu. - Aggiungi l'oggetto 'ACE_EarPlugs' a tutte le unità che hanno armi rumorose. Può essere disabilitato se vengono usati loadout personalizzati. + Aggiungi l'oggetto 'ACE_EarPlugs' a tutte le unità che hanno armi/lanciatori rumorosi. Può essere disabilitato se vengono usati loadout personalizzati. Agregar el item `ACE_EarPlugs` a todas las unidades equipadas con armas muy ruidosas. Desactivar si quieren utilizarse equipamientos personalizados. Ajoute l'objet `Ace_EarPlugs` à toutes les unités ayant des armes bruyantes. Peut être désactivé si de l'équipement personnalisé est utilisé. - 全ユニットへ`ACE_EarPlugs`アイテムを持たせます。これは変更された武装で無効化できます。 + 全ユニットへ`ACE_EarPlugs`アイテムを持たせます。これはロードアウトの編集で無効化できます。 무기를 가지고 있는 모든 인원에게 'ACE_EarPlugs'를 지급합니다. 임의의 장비를 사용시 비활성화할 수 있습니다. 增加`ACE_EarPlugs`物品给拥有巨大噪音武器的单位。当你想自定装备时,此功能可被关闭。 增加`ACE_EarPlugs`物品給擁有巨大噪音武器的單位。當你想自定裝備時,此功能可被關閉。 @@ -295,7 +295,7 @@ 音量低下 降低音量 進低音量 - Volume attenuazione + Attenuazione del volume Tłumienie głośności Глушение звука Abafamento de Volume @@ -309,7 +309,7 @@ 耳栓時の音量 耳塞时音量 耳塞時音量 - Volume tappi per le orecchie + Volume con i Tappi Głośność Stoperów Громкость в берушах Volume do Protetor Auricular @@ -351,7 +351,7 @@ Volume when unconscious. Lautstärke während man Bewusstlos ist - 気絶時の音量を決定します。 + 無意識状態時の音量を決定します。 决定处于无意识时的音量 昏迷時使用耳塞的音量 Volume quando incoscente. diff --git a/addons/hellfire/stringtable.xml b/addons/hellfire/stringtable.xml index df16c00c9f..647f349273 100644 --- a/addons/hellfire/stringtable.xml +++ b/addons/hellfire/stringtable.xml @@ -22,33 +22,39 @@ Самонаводящаяся Ракета с фугасной противотанковой боевой частью и полуактивной лазерной системой наведения Misil de guiado láser semi-activo con cabeza de alto explosivo anti-tanque Missile antichar à guidage laser semi-actif (charge HEAT) + Missile a guida laser semi-attiva con una testata HEAT セミ アクティブ レーダー誘導の対戦車弾頭 Rakieta naprowadzana laserowo z głowicą przeciwpancerną Halbaktive Laser-Zielsuchrakete mit HEAT-Gefechtskopf 高爆反坦克弹头半主动激光制导导弹 반능동 레이저 유도미사일로 대전차 고폭 탄두를 탑재하고 있습니다. + Míssil teleguiado a laser semi-ativo com ogiva antitanque altamente explosiva Millimeter-wave radar guided missile with high explosive anti-tank warhead Радиолокационная управляемая ракета миллиметрового диапазона с фугасной противотанковой боевой частью Misil guiado por radar de onda milimétrica con cabeza de alto explosivo anti-tanque Missile antichar à guidage radar à ondes courtes (charge HEAT) + Missile a guida radar con una testata HEAT ミリ波レーダー誘導の対戦車弾頭 Rakieta namierzana radarowo z głowicą przeciwpancerną Millimeterwellenradar-Lenkflugkörper mit HEAT-Gefechtskopf 高爆反坦克弹头毫米波雷达制导导弹 밀리미터파 레이더 유도 미사일로 대전차 고폭 탄두를 탑재하고 있습니다. + Míssil guiado por radar de ondas milimétricas com ogiva antitanque altamente explosiva Semi-active laser homing missile with metal augmented charge anti-personnel warhead Самонаводящаяся ракета с металлической увеличенной зарядной противопехотной боевой частью и полуактивной лазерной системой наведения Misil guiado por láser semi-activo con cabeza de carga de metal aumentada anti-persona + Missile a guida laser semi-attiva con una testata a frammentazione antiuomo Missile antipersonnel thermobarique à guidage laser semi-actif セミ アクティブ レーダー誘導の対人弾 Rakieta naprowadzana laserowo z głowicą odłamkową Halbaktive Laser-Zielsuchrakete mit metallverstärktem Antipersonen-Gefechtskopf 金属增强人员杀伤弹头半主动激光制导导弹 반능동 레이저 유도 미사일로 대인 금속 강화 탄두가 탑재하고 있습니다. + Míssil teleguiado a laser semi-ativo com ogiva antipessoal de carga aumentada de metal diff --git a/addons/hitreactions/XEH_preInit.sqf b/addons/hitreactions/XEH_preInit.sqf index 9361d05015..894773534a 100644 --- a/addons/hitreactions/XEH_preInit.sqf +++ b/addons/hitreactions/XEH_preInit.sqf @@ -6,6 +6,6 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" ADDON = true; diff --git a/addons/hitreactions/initSettings.sqf b/addons/hitreactions/initSettings.inc.sqf similarity index 100% rename from addons/hitreactions/initSettings.sqf rename to addons/hitreactions/initSettings.inc.sqf diff --git a/addons/hitreactions/stringtable.xml b/addons/hitreactions/stringtable.xml index 3b8018a936..b07e9be9a0 100644 --- a/addons/hitreactions/stringtable.xml +++ b/addons/hitreactions/stringtable.xml @@ -3,7 +3,7 @@ Min Damage to trigger falling - Danno Minimo da caduta + Danno Minimo per far cadere 觸發倒下前最低需受到多少傷害 触发倒下前最低需受到多少伤害 崩れ落ちるまでの最低損傷値 diff --git a/addons/hot/stringtable.xml b/addons/hot/stringtable.xml index 85c8690fef..3c872e1994 100644 --- a/addons/hot/stringtable.xml +++ b/addons/hot/stringtable.xml @@ -21,7 +21,7 @@ Semi-automatic command to line of sight (SACLOS) Halbautomatische Steuerung über Sichtverbindung (SACLOS) Semi-automatyczna komenda do pola widzenia - Comando Semi-Automatico via Contatto Visivo(SACLOS) + Comando Semi-Automatico su Contatto Visivo (SACLOS) 半自動指令照準線一致誘導方式 (SACLOS) Полуавтоматическое командное наведение по линии визирования (SACLOS) Comando semi-automático para a linha de visão (SACLOS) @@ -37,7 +37,7 @@ Wire-Guided Missile Drahtgelenkte Rakete Pocisk kierowany przewodowo - Missile filoguidato + Missile Filoguidato 有線誘導ミサイル Ракета с проводным управлением Míssil Guiado por Fio @@ -133,7 +133,7 @@ Wire-Guided Missile (Anti-Personnel) Anti Personen Lenkflugkörper Pocisk kierowany przewodowo (przeciwpiechotny) - Missile filoguidato antiuomo + Missile Filoguidato Antiuomo 有線誘導ミサイル (対人) Ракета с проводным управлением (Противопехотная) Míssil Guiado por Fio (Anti-Pessoal) diff --git a/addons/hunterkiller/CfgVehicles.hpp b/addons/hunterkiller/CfgVehicles.hpp index 4ba64d8a95..b0fc79fc2b 100644 --- a/addons/hunterkiller/CfgVehicles.hpp +++ b/addons/hunterkiller/CfgVehicles.hpp @@ -21,4 +21,8 @@ class CfgVehicles { class MBT_04_base_F: Tank_F { ADDON = 1; }; + class Wheeled_APC_F; + class AFV_Wheeled_01_base_F: Wheeled_APC_F { + ADDON = 1; + }; }; diff --git a/addons/hunterkiller/stringtable.xml b/addons/hunterkiller/stringtable.xml index 83c43a0bd7..5d42659329 100644 --- a/addons/hunterkiller/stringtable.xml +++ b/addons/hunterkiller/stringtable.xml @@ -9,6 +9,9 @@ ハンターキラー Hunter Killer Hunter Killer + Hunter Killer + Hunter Killer + Hunter Killer Override @@ -18,6 +21,9 @@ オーバーライド Nadpisanie Überschreibe + Sovrascrivi + Surcharge + Sobrescrever Force other turret to slew onto your viewpoint @@ -27,6 +33,9 @@ 他のタレットを強制的に自分の視点に旋回させる Obróć drugą wieżyczkę w kierunku, w którym zwrócona jest twoja wieżyczka. Zwingt andere Türme, sich auf deine Blickrichtung zu drehen + Costringe altre torrette a puntare dove è puntata la tua. + Force une autre tourelle à s'aligner sur votre point de vue. + Força outra torreta a alinhar-se com o seu ponto de vista. Observe @@ -36,6 +45,9 @@ オブザーブ Obserwowanie Observiere + Osserva + Observation + Observar Slew your turret onto other turret's viewpoint @@ -45,6 +57,9 @@ 自分のタレットを相手のタレットの視点に旋回させる。 Obróć swoją wieżyczkę tam, gdzie patrzy druga. Richtet deinen Turm auf die Blickrichtung eines anderen Turms + Punta la tua torretta nella direzione di un'altra torretta. + Aligne votre tourelle sur le point de vue d'une autre tourelle. + Alinhe a sua torreta com o ponto de vista de outra torreta. diff --git a/addons/huntir/CfgAmmo.hpp b/addons/huntir/CfgAmmo.hpp index a9cd260d0f..8766795d9f 100644 --- a/addons/huntir/CfgAmmo.hpp +++ b/addons/huntir/CfgAmmo.hpp @@ -5,6 +5,9 @@ class CfgAmmo { lightColor[] = {0, 0, 0, 0}; smokeColor[] = {0, 0, 0, 0}; timeToLive = 6; + class Eventhandlers { + fired = QUOTE(call FUNC(handleFired)); + }; }; class ShellBase; diff --git a/addons/huntir/RscTitles.hpp b/addons/huntir/RscTitles.hpp index e9ad860d68..90cb32bbad 100644 --- a/addons/huntir/RscTitles.hpp +++ b/addons/huntir/RscTitles.hpp @@ -8,7 +8,7 @@ class RscTitles { fadeout = 1; duration = 1e+011; name=QGVAR(cam_rose); - onLoad = QUOTE(uiNamespace setVariable [ARR_2(QQGVAR(cam_rose), _this select 0)]); + onLoad = QUOTE(uiNamespace setVariable [ARR_2(QQGVAR(cam_rose),_this select 0)]); class controls { class CHAR_N { type = 0; diff --git a/addons/huntir/XEH_postInit.sqf b/addons/huntir/XEH_postInit.sqf index 1f6a39056b..c68252af3b 100644 --- a/addons/huntir/XEH_postInit.sqf +++ b/addons/huntir/XEH_postInit.sqf @@ -8,8 +8,4 @@ GVAR(cur_cam) = 0; GVAR(ROTATE) = 0; GVAR(ELEVAT) = 0.01; -// Register fire event handler -// Don't run for non players, as they are too dumb to launch huntirs anyway -["ace_firedPlayer", DFUNC(handleFired)] call CBA_fnc_addEventHandler; - ["ace_huntir", {!GETMVAR(GVAR(stop),true)}] call CBA_fnc_registerFeatureCamera; diff --git a/addons/huntir/functions/fnc_handleFired.sqf b/addons/huntir/functions/fnc_handleFired.sqf index d39be47b15..5c7c3aca63 100644 --- a/addons/huntir/functions/fnc_handleFired.sqf +++ b/addons/huntir/functions/fnc_handleFired.sqf @@ -16,12 +16,11 @@ * Public: No */ -//IGNORE_PRIVATE_WARNING ["_unit", "_weapon", "_muzzle", "_mode", "_ammo", "_magazine", "_projectile", "_vehicle", "_gunner", "_turret"]; -TRACE_10("firedEH:",_unit, _weapon, _muzzle, _mode, _ammo, _magazine, _projectile, _vehicle, _gunner, _turret); +params ["_unit", "", "", "", "", "", "_projectile"]; +TRACE_2("handleFired",_unit,_projectile); -if (_ammo != "F_HuntIR") exitWith {}; - -if (!hasInterface) exitWith {}; +// Don't run for non players, as they are too dumb to launch huntirs anyway +if (_unit != ACE_player) exitWith {}; [{ params ["_projectile"]; diff --git a/addons/huntir/stringtable.xml b/addons/huntir/stringtable.xml index 57440b7bfa..74e68b6432 100644 --- a/addons/huntir/stringtable.xml +++ b/addons/huntir/stringtable.xml @@ -13,7 +13,7 @@ HuntIR Transport Box Caixa de transporte do HuntIR HuntIR 輸送箱 - HuntIR 운반함 + 헌트IR 운반함 高空战术摄像头运输箱 高空戰術成像器運輸箱 HuntIR Taşıma Kutusu @@ -29,8 +29,8 @@ Projectile HuntIR HuntIR lövedék Cartucho HuntIR - HuntIR 弾頭 - HuntIR 유탄 + HuntIR弾 + 헌트IR 유탄 高空战术摄像头弹药 高空戰術成像器彈藥 HuntIR Mermisi @@ -46,8 +46,8 @@ Ecran HuntIR HuntIR Monitor Monitor HuntIR - HuntIR モニタ - HuntIR 모니터 + HuntIR モニター + 헌트IR 모니터 高空战术摄像头显示面板 高空戰術成像器顯示面板 HuntIR Ekranı @@ -64,7 +64,7 @@ HuntIR monitor aktiválása Ativar monitor do HuntIR HuntIR を起動する - HuntIR 모니터 켜기 + 헌트IR 모니터 켜기 开启高空战术摄像头显示面板 開啟高空戰術成像器顯示面板 HuntIR Ekranı Aktif @@ -114,7 +114,7 @@ Temps d'enregistrement : Felvételi idő: Tempo de gravação: - 録画時間: + 記録時間: 녹화시간: 记录时间: 記錄時間: @@ -194,12 +194,12 @@ Left/Right - Rotar camara Levá/Pravá - Rotace kamery Влево/Вправо - Вращать камеру - Left/Right - Ruota telecamera + Sinistra/Destra - Ruota telecamera Lewo/Prawo - obrót kamery w poziomie Gauche/Droite - Rotation de la caméra Jobb/Bal - Kamera forgatás Esquerda/Direita - Rotaciona câmera - Left/Right - カメラ回転 + Left/Right - カメラの回転 좌/우 - 카메라 돌리기 左/右—旋转摄像头 左/右 - 旋轉攝影機 @@ -211,12 +211,12 @@ Up/Down - Subir/bajar camara Nahoru/Dolu - Zvýšít/snížit úhel pohledu kamery Вверх/Вниз - Поднять/опустить камеру - Up/Down - Alza/abbassa telecamera + Su/Giù - Alza/abbassa telecamera Góra/Dół - obrót kamery w pionie Haut/Bas - Monter/descendre la caméra Fel/Le - Kamera döntése/süllyesztése Acima/Abaixo - Eleva/Abaixa a câmera - Up/Down - カメラ角度を変更 + Up/Down - カメラの角度 상/하 카메라 올리기/내리기 上/下—上升/下降摄像头 上/下 - 上升/下降攝影機 @@ -262,12 +262,12 @@ Esc - Salir del menú de ayuda Esc - Ukončit pomoc Esc - Выйти из помощи - Esc - Chiudi aiuto + Esc - Aiuto dal Menù Esc - wyjście z ekranu Pomocy Esc - Sortir de l'aide Exit - Kilépés a súgóból Esc - Sai do Ajuda - Esc - ヘルプ終了 + Esc - ヘルプを閉じる Esc - 도움말 나가기 Esc—离开帮助 Esc - 離開幫助 diff --git a/addons/intelitems/CfgMagazines.hpp b/addons/intelitems/CfgMagazines.hpp index cb5bbf495d..75d1ca29ee 100644 --- a/addons/intelitems/CfgMagazines.hpp +++ b/addons/intelitems/CfgMagazines.hpp @@ -2,7 +2,7 @@ class CfgMagazines { class CA_Magazine; class GVAR(base): CA_Magazine { count = 1; - mass = 1; + mass = 0.1; ACE_isUnique = 1; GVAR(intel) = 1; GVAR(control) = ""; diff --git a/addons/intelitems/gui.hpp b/addons/intelitems/gui.hpp index e5e9d4a1f2..4f4f1a1206 100644 --- a/addons/intelitems/gui.hpp +++ b/addons/intelitems/gui.hpp @@ -148,8 +148,8 @@ class RscDisplayAttributes { }; class GVAR(RscSetData): RscDisplayAttributes { - onLoad = QUOTE([ARR_3('onLoad', _this, QQGVAR(RscSetData))] call EFUNC(zeus,zeusAttributes)); - onUnload = QUOTE([ARR_3('onUnload', _this, QQGVAR(RscSetData))] call EFUNC(zeus,zeusAttributes)); + onLoad = QUOTE([ARR_3('onLoad',_this,QQGVAR(RscSetData))] call EFUNC(zeus,zeusAttributes)); + onUnload = QUOTE([ARR_3('onUnload',_this,QQGVAR(RscSetData))] call EFUNC(zeus,zeusAttributes)); class Controls: Controls { class Background: Background {}; class Title: Title {}; diff --git a/addons/intelitems/stringtable.xml b/addons/intelitems/stringtable.xml index 4bd23367eb..8f13939090 100644 --- a/addons/intelitems/stringtable.xml +++ b/addons/intelitems/stringtable.xml @@ -4,6 +4,7 @@ ACE Intel Items ACE Aufklärungsgegenstände + ACE Oggetti Intel ACE 情報物品 ACE 情报物品 ACE 機密アイテム @@ -12,10 +13,13 @@ ACE Istihbarat Eşyaları ACE 정보 아이템 ACE Objetos de Inteligencia + ACE Objets de Renseignements + ACE Itens de Inteligência Intel Items Aufklärungsgegenstände + Oggetti Intel 情報物品 情报物品 機密アイテム @@ -24,34 +28,43 @@ Istihbarat Eşyaları 정보 아이템 Objetos de Inteligencia + Objets de Renseignements + Itens de Inteligência Notepad Notizblock + Blocco Note 筆記本 笔记本 - メモ + メモ帳 Блокнот Notes Not Defteri 노트패드 Bloc de notas + Bloc-notes + Bloco de Notas Notepad - Can access from the map screen Notizblock - Über die Karte abrufbar + Blocco Note - Accessibile dalla mappa 筆記本 - 可以透過地圖界面來存取 笔记本—可以透过地图界面访问 - メモ - マップ画面から確認可能 + メモ帳 - マップ画面から確認可能 Блокнот - Можно получить доступ с экрана карты Notes - Dostępne z mapy Not Defteri - Haritadan erişim sağlanabilinir 노트패드 - 지도에서 확인 가능합니다 Block de notas - Puede accederse desde la pantalla de mapa + Bloc-note - Consultable depuis la carte + Bloco de Notas - Pode ser acessado a partir da tela de mapa Document Dokument + Documento 文件 文件 資料 @@ -60,22 +73,28 @@ Döküman 문서 Documento + Document + Documento Printed Document - Can access from the map screen Bedrucktes Dokument - Über die Karte abrufbar + Documento stampato - Accessibile dalla mappa 影印文件 - 可以透過地圖界面來存取 影印文件—可以透过地图界面访问 - メモ - マップ画面から確認可能 + 印刷された資料 - マップ画面から確認可能 Распечатанный документ - Можно получить доступ с экрана карты Wydrukowane Dokumenty - Dostępne z mapy Yazılı Döküman - Haritadan erişim sağlanabilinir 문서들 - 지도에서 확인 가능합니다 Documento Impreso - Puede accederse desde la pantalla de mapa + Document imprimé - Consultable depuis la carte + Documento Impresso - Pode ser acessado a partir da tela de mapa Photo Foto + Foto 相片 照片 写真 @@ -84,10 +103,13 @@ Fotoğraf 사진 Fotografía + Photo + Fotografia Photo - Can access from the map screen Foto - Über die Karte abrufbar + Foto - Accessibile dalla mappa 相片 - 可以透過地圖界面來存取 照片—可以透过地图界面访问 写真 - マップ画面から確認可能 @@ -96,6 +118,8 @@ Fotoğraf - Haritadan erişim sağlanabilinir 사진 - 지도에서 확인 가능합니다 Fotografía - Puede accederse desde la pantalla de mapa + Photo - Consultable depuis la carte + Fotografia - Pode ser acessada a partir da tela de mapa Text @@ -116,6 +140,7 @@ Photo Filename Foto-Dateiname + Nome File della Foto 相片名稱 照片文件名 写真名 @@ -124,13 +149,15 @@ Fotoğraf Dosya Adı 사진명 Nombre de fichero de la Fotografía + Nom du fichier photo + Nome do Arquivo da Fotografia Pick Up Vyzvednout Ramasser Aufnehmen - Prelevare + Raccogli Podnieś Pegar Подобрать diff --git a/addons/interact_menu/XEH_preInit.sqf b/addons/interact_menu/XEH_preInit.sqf index 0d321112f9..b60f1bb745 100644 --- a/addons/interact_menu/XEH_preInit.sqf +++ b/addons/interact_menu/XEH_preInit.sqf @@ -6,7 +6,7 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" if (!hasInterface) exitWith { ADDON = true; }; diff --git a/addons/interact_menu/functions/fnc_createVehiclesActions.sqf b/addons/interact_menu/functions/fnc_createVehiclesActions.sqf index b2e9407c8d..54f92967c2 100644 --- a/addons/interact_menu/functions/fnc_createVehiclesActions.sqf +++ b/addons/interact_menu/functions/fnc_createVehiclesActions.sqf @@ -23,8 +23,11 @@ params ["_vehicles", "_statement", "_target"]; _vehicles apply { private _name = getText ((configOf _x) >> "displayName"); private _ownerName = [_x, true] call EFUNC(common,getName); + private _distanceStr = (ACE_player distance _x) toFixed 1; if ("" != _ownerName) then { - _name = format ["%1 (%2)", _name, _ownerName]; + _name = format ["%1 (%2, %3m)", _name, _ownerName, _distanceStr]; + } else { + _name = format ["%1 (%2m)", _name, _distanceStr]; }; private _icon = [_x] call EFUNC(common,getVehicleIcon); private _action = [format ["%1", _x], _name, _icon, _statement, {true}, {}, _x] call EFUNC(interact_menu,createAction); diff --git a/addons/interact_menu/functions/fnc_setupTextColors.sqf b/addons/interact_menu/functions/fnc_setupTextColors.sqf index 011c7d45ef..ff2107587f 100644 --- a/addons/interact_menu/functions/fnc_setupTextColors.sqf +++ b/addons/interact_menu/functions/fnc_setupTextColors.sqf @@ -10,7 +10,7 @@ * None * * Example: - * call ACE_interact_menu_fnc_setupTextColor + * call ace_interact_menu_fnc_setupTextColors * * Public: No */ diff --git a/addons/interact_menu/initSettings.sqf b/addons/interact_menu/initSettings.inc.sqf similarity index 100% rename from addons/interact_menu/initSettings.sqf rename to addons/interact_menu/initSettings.inc.sqf diff --git a/addons/interact_menu/stringtable.xml b/addons/interact_menu/stringtable.xml index ec693604de..ce4da0c506 100644 --- a/addons/interact_menu/stringtable.xml +++ b/addons/interact_menu/stringtable.xml @@ -10,7 +10,7 @@ Zawsze wyświetlaj kursor dla własnej interakcji Toujours afficher le curseur pour les interactions sur soi-même Mindig legyen a saját cselekvés kurzorja látható - Mostra sempre il cursore delle autointerazioni + Mostra sempre il cursore per le autointerazioni Sempre mostrar cursor para interação pessoal セルフ インタラクションへ常にカーソルを表示 자기상호작용 시 항상 커서를 보이기 @@ -46,7 +46,7 @@ Interaktionsmenü in Listen anzeigen Cselekvő menük listaként való megjelenítése Mostrar menu de interação como listas - インタラクション メニューを一覧表示 + インタラクションメニューを一覧表示 상호작용메뉴를 리스트화 해서 보이기 以列表方式显示互动表单 以列表方式顯示互動表單 @@ -78,7 +78,7 @@ Klawisz własnej interakcji Touche d'interaction personnelle Saját cselekvő gomb - Tasto interazione su se stessi + Tasto autointerazioni Tecla de Interação Pessoal セルフ インタラクション キー 자기상호작용 키 @@ -95,9 +95,9 @@ Własne akcje Interaction personnelle Saját cselekvések - Interazioni su se stessi + Autointerazioni Ações Pessoais - 自分への動作 + 自分へのアクション 자기 동작 自我动作 自我動作 @@ -112,9 +112,9 @@ Akcje pojazdu Interaction véhicule Járműves cselekvések - Interazioni con veicoli + Interazioni su veicoli Ações de Veículos - 車両への動作 + 車両へのアクション 차량 동작 载具动作 載具動作 @@ -130,8 +130,8 @@ Zeus cselekvések Ações do Zeus Действия Зевса - Azioni Zeus - Zeus への動作 + Interazioni Zeus + Zeusでのアクション 제우스 동작 宙斯操作 宙斯操作 @@ -250,7 +250,7 @@ Execute a ação quando soltar a tecla de menu Cselekvés végrehajtása a menügomb elengedésekor Esegui l'azione quando rilasci il tasto menu - メニュー キーを離した時に動作を実行 + メニュー キーを離した時にアクションを実行 메뉴 키를 놓을 때 행동하기 当放开菜单键后就执行动作 當放開選單鍵後就執行動作 @@ -335,7 +335,7 @@ Cselekvő menü háttere Фон меню взаимодействия Sfondo Menù Interazioni - インタラクション メニューの背景 + インタラクションメニューの背景 상호작용 메뉴 배경 互动菜单背景 互動選單背景 @@ -352,7 +352,7 @@ A háttér elmosása a cselekvő menü használata alatt. Размыть фон, пока открыто меню взаимодействия. Sfoca lo sfondo mentre il Menù Interazioni è aperto. - インタラクション メニューを開いたとき、背景にボケを与えます。 + インタラクションメニューを開いたとき、背景をぼかします。 상호작용 메뉴가 열릴 시 배경을 흐릿하게 처리합니다. 当互动菜单开启时,模糊背景画面。 當互動選單開啟時,模糊背景畫面 @@ -369,7 +369,7 @@ Kép elmosása Размытый Sfoca schermo - ボケ画面 + 背景をぼかす 화면 흐리게 模糊画面 模糊畫面 @@ -386,7 +386,7 @@ Fekete Черный Nero - ブラック + 背景を黒くする 까맣게 黑色 黑色 @@ -403,7 +403,7 @@ Mostrar ações para edifícios Показывать действия для зданий Mostra azioni per edifici - 建物へ動作を表示 + 建物へアクションを表示 건물에 행동을 취함 显示建筑物可用的动作 顯示建築物可用的動作 @@ -419,8 +419,8 @@ Cselekvéseket engedélyez ajtók kinyitására és létrák mászására. (Figyelem: ez teljesítményvesztéssel járhat a menü megnyitásakor, főleg városokban) Adiciona ações de interações para abrir portas e montar escadas em edifícios. (Nota: Existe um custo de performance quando aberto o menu de interação, especialmente em cidades) Добавляет действия открывания дверей и залезания на лестницы для зданий. (Примечание: возможно падение производительности при открытии меню взаимодействия, особенно в городах) - Aggiunge azioni interattive per l'apertura delle porte e piazzamento scale su edifici. (Nota: C'è un costo in performance quando si apre il Menù Interazioni, soprattutto in città) - 建物にある扉の開閉やはしごの昇降といった動作をインタラクションへ追加します。(街などでインタラクション メニューを開くと動作が低下します) + Aggiunge interazioni per l'apertura delle porte e piazzamento di scale su edifici. (Nota: C'è un costo in performance quando si apre il Menù Interazioni, soprattutto in città) + 建物にドアを開閉したり梯子を昇降するためのインタラクション アクションを追加します。\n(注: 街中でインタラクション メニューを開く際には特に描画パフォーマンスに影響を及ぼします) 건물의 문을 열거나 사다리에 오르는 상호작용 행동을 추가합니다. (주의: 상호작용 메뉴를 열 경우 성능하락이 있을 수 있음, 특히 마을 내부에서) 增加互动菜单的功能在可开启的门与建筑物的梯子上。(注意:此功能有可能会降低系统效能,特别是在城镇区更明显) 增加互動選單的功能在可開啟的門與建築物的梯子上。(注意: 此功能有可能會降低系統效能,特別是在城鎮區更明顯) @@ -436,7 +436,7 @@ Menú de interacción Menù Interazioni Menu d'interaction - インタラクション メニュー + インタラクションメニュー 상호작용 메뉴 互动菜单 互動選單 @@ -449,7 +449,7 @@ Скорость анимации меню взаимодействия Velocidade da animação de interação Rychlost animace interakce - Velocità Animazioni Interazioni + Velocità di Animazione delle Interazioni Velocidad de animación del menú de interacción Vitesse de l'animation d'interaction インタラクションのアニメーション速度 @@ -463,12 +463,12 @@ Beschleunigt die Menüanmimationen und folglich das Öffnen eines Submenüs. Przyśpiesza animacje menu interakcji oraz czas wymagany do pokazania podmenu Ускоряет анимацию меню и уменьшает задержку при наведении мыши для раскрытия подменю - Faz com que as animações do menu de interação sejam mais rápidas, dimiuindo a necessidade de esperar para mostrar as ações + Faz com que as animações do menu de interação sejam mais rápidas, diminuindo a necessidade de esperar para mostrar as ações Zrychlí animaci menu a sníží tak čas potřebný pro plné zobrazení podmenu - Rende le animazioni Menù più veloci e diminuisce il tempo richiesto per mostrare sotto-azioni + Rende le animazioni del Menù più veloci e diminuisce il tempo richiesto per mostrare sotto-azioni Hace la animación del menú más rápida, reduciendo el tiempo necesario para abrir sub-acciones. Rend les animations du menu plus rapide, et réduit le temps nécessaire à l'affichage des sous menus d'action. - ホバーで子アクションを表示した時に出るメニューのアニメーション速度を早くしたり遅くしたりできます + メニューのアニメーションを高速化し、サブアクションを表示するためのホバーに必要な時間を短縮します。 使菜单的动画速度更快,并减少子选项显现出来的时间 使選單的動畫速度更快,並減少子選項顯現出來的時間 상호작용을 표시하기 위해 메뉴 애니메이션을 빠르게 만들고 마우스를 가져오는 데 필요한 시간을 줄입니다. @@ -480,7 +480,7 @@ セレクターの色 菜单颜色 選單的顏色 - Controllo Settore + Colore Selettore Kolor wybierającego Цвет селектора Cor do Seletor @@ -493,24 +493,28 @@ Consolidate single child actions Объединять ед. дочерные действия - サブ動作を統合 + 子アクションを統合 Consolidar acciones hijo únicas Combiner les sous-actions uniques Untergeordnete Aktionen zusammenfassen + Combina sotto-azioni singole Połącz akcje podrzędne 整合子操作 하위 동작 통합 + Consolidar sub-ações únicas Combines parent action with only one child action together. Объединять родительское действие с единственным дочерним действием в одно. - メインの動作とサブ動作一つを統合して表示します。 + 親アクションと子アクションの一つを統合して表示します。 Combina acciones padre con una única accion hijo de forma conjunta Lorsqu'un menu ne contient qu'une seule sous-action, elle est combinée avec son menu parent. + Combina interazioni con una sola sotto-azione in una singola interazione. Übergeordnete Aktionen mit nur einer Unteraktion zusammenfassen. Gdy menu zawiera tylko jedną akcję podrzędną, łączy ją z akcją nadrzędną. 主操作与子操作集成显示。 대분류로 나뉜 행동을 한눈에 보여줍니다 + Quando um menu contém apenas uma subação, ele é combinado com seu menu pai. diff --git a/addons/interaction/CfgVehicles.hpp b/addons/interaction/CfgVehicles.hpp index 57753dfaff..6ae0d4a982 100644 --- a/addons/interaction/CfgVehicles.hpp +++ b/addons/interaction/CfgVehicles.hpp @@ -72,7 +72,7 @@ class CfgVehicles { displayName = CSTRING(TeamManagement); condition = QUOTE([ARR_2(_player,_target)] call DFUNC(canJoinTeam) && {GVAR(EnableTeamManagement)}); statement = ""; - modifierFunction = QUOTE([ARR_3(assignedTeam _target, 'PATHTOF(UI\team\team_management_ca.paa)', _this select 3)] call FUNC(modifyTeamManagementAction)); + modifierFunction = QUOTE([ARR_3(assignedTeam _target,'PATHTOF(UI\team\team_management_ca.paa)',_this select 3)] call FUNC(modifyTeamManagementAction)); exceptions[] = {"isNotSwimming"}; showDisabled = 0; @@ -82,7 +82,7 @@ class CfgVehicles { statement = QUOTE([ARR_3(_target,'RED',true)] call DFUNC(joinTeam)); exceptions[] = {"isNotSwimming"}; showDisabled = 1; - modifierFunction = QUOTE([ARR_3('RED', 'PATHTOF(UI\team\team_white_ca.paa)', _this select 3)] call FUNC(modifyTeamManagementAction)); + modifierFunction = QUOTE([ARR_3('RED','PATHTOF(UI\team\team_white_ca.paa)',_this select 3)] call FUNC(modifyTeamManagementAction)); }; class ACE_AssignTeamGreen { displayName = CSTRING(AssignTeamGreen); @@ -90,7 +90,7 @@ class CfgVehicles { statement = QUOTE([ARR_3(_target,'GREEN',true)] call DFUNC(joinTeam)); exceptions[] = {"isNotSwimming"}; showDisabled = 1; - modifierFunction = QUOTE([ARR_3('GREEN', 'PATHTOF(UI\team\team_white_ca.paa)', _this select 3)] call FUNC(modifyTeamManagementAction)); + modifierFunction = QUOTE([ARR_3('GREEN','PATHTOF(UI\team\team_white_ca.paa)',_this select 3)] call FUNC(modifyTeamManagementAction)); }; class ACE_AssignTeamBlue { displayName = CSTRING(AssignTeamBlue); @@ -98,7 +98,7 @@ class CfgVehicles { statement = QUOTE([ARR_3(_target,'BLUE',true)] call DFUNC(joinTeam)); exceptions[] = {"isNotSwimming"}; showDisabled = 1; - modifierFunction = QUOTE([ARR_3('BLUE', 'PATHTOF(UI\team\team_white_ca.paa)', _this select 3)] call FUNC(modifyTeamManagementAction)); + modifierFunction = QUOTE([ARR_3('BLUE','PATHTOF(UI\team\team_white_ca.paa)',_this select 3)] call FUNC(modifyTeamManagementAction)); }; class ACE_AssignTeamYellow { displayName = CSTRING(AssignTeamYellow); @@ -106,7 +106,7 @@ class CfgVehicles { statement = QUOTE([ARR_3(_target,'YELLOW',true)] call DFUNC(joinTeam)); exceptions[] = {"isNotSwimming"}; showDisabled = 1; - modifierFunction = QUOTE([ARR_3('YELLOW', 'PATHTOF(UI\team\team_white_ca.paa)', _this select 3)] call FUNC(modifyTeamManagementAction)); + modifierFunction = QUOTE([ARR_3('YELLOW','PATHTOF(UI\team\team_white_ca.paa)',_this select 3)] call FUNC(modifyTeamManagementAction)); }; class ACE_UnassignTeam { displayName = CSTRING(LeaveTeam); @@ -114,7 +114,7 @@ class CfgVehicles { statement = QUOTE([ARR_3(_target,'MAIN',true)] call DFUNC(joinTeam)); exceptions[] = {"isNotSwimming"}; showDisabled = 1; - modifierFunction = QUOTE([ARR_3('MAIN', 'PATHTOF(UI\team\team_white_ca.paa)', _this select 3)] call FUNC(modifyTeamManagementAction)); + modifierFunction = QUOTE([ARR_3('MAIN','PATHTOF(UI\team\team_white_ca.paa)',_this select 3)] call FUNC(modifyTeamManagementAction)); }; }; @@ -230,16 +230,16 @@ class CfgVehicles { displayName = CSTRING(TapShoulder); selection = "rightshoulder"; distance = 2.0; - condition = QUOTE([ARR_2(_player, _target)] call DFUNC(canTapShoulder)); - statement = QUOTE([ARR_3(_player, _target, 0)] call DFUNC(tapShoulder)); + condition = QUOTE([ARR_2(_player,_target)] call DFUNC(canTapShoulder)); + statement = QUOTE([ARR_3(_player,_target,0)] call DFUNC(tapShoulder)); exceptions[] = {"isNotSwimming"}; }; class ACE_TapShoulderLeft { displayName = CSTRING(TapShoulder); selection = "leftshoulder"; distance = 2.0; - condition = QUOTE([ARR_2(_player, _target)] call DFUNC(canTapShoulder)); - statement = QUOTE([ARR_3(_player, _target, 1)] call DFUNC(tapShoulder)); + condition = QUOTE([ARR_2(_player,_target)] call DFUNC(canTapShoulder)); + statement = QUOTE([ARR_3(_player,_target,1)] call DFUNC(tapShoulder)); exceptions[] = {"isNotSwimming"}; }; }; @@ -250,7 +250,7 @@ class CfgVehicles { condition = QUOTE(GVAR(EnableTeamManagement)); exceptions[] = {"isNotSwimming", "isNotInside", "isNotSitting", "isNotOnLadder", "isNotRefueling"}; statement = ""; - modifierFunction = QUOTE([ARR_3(assignedTeam _target, 'PATHTOF(UI\team\team_management_ca.paa)', _this select 3)] call FUNC(modifyTeamManagementAction)); + modifierFunction = QUOTE([ARR_3(assignedTeam _target,'PATHTOF(UI\team\team_management_ca.paa)',_this select 3)] call FUNC(modifyTeamManagementAction)); showDisabled = 1; class ACE_JoinTeamRed { @@ -259,7 +259,7 @@ class CfgVehicles { exceptions[] = {"isNotSwimming", "isNotInside", "isNotSitting", "isNotOnLadder", "isNotRefueling"}; statement = QUOTE([ARR_3(_player,'RED',true)] call DFUNC(joinTeam)); showDisabled = 1; - modifierFunction = QUOTE([ARR_3('RED', 'PATHTOF(UI\team\team_white_ca.paa)', _this select 3)] call FUNC(modifyTeamManagementAction)); + modifierFunction = QUOTE([ARR_3('RED','PATHTOF(UI\team\team_white_ca.paa)',_this select 3)] call FUNC(modifyTeamManagementAction)); }; class ACE_JoinTeamGreen { displayName = CSTRING(JoinTeamGreen); @@ -267,7 +267,7 @@ class CfgVehicles { exceptions[] = {"isNotSwimming", "isNotInside", "isNotSitting", "isNotOnLadder", "isNotRefueling"}; statement = QUOTE([ARR_3(_player,'GREEN',true)] call DFUNC(joinTeam)); showDisabled = 1; - modifierFunction = QUOTE([ARR_3('GREEN', 'PATHTOF(UI\team\team_white_ca.paa)', _this select 3)] call FUNC(modifyTeamManagementAction)); + modifierFunction = QUOTE([ARR_3('GREEN','PATHTOF(UI\team\team_white_ca.paa)',_this select 3)] call FUNC(modifyTeamManagementAction)); }; class ACE_JoinTeamBlue { displayName = CSTRING(JoinTeamBlue); @@ -275,7 +275,7 @@ class CfgVehicles { exceptions[] = {"isNotSwimming", "isNotInside", "isNotSitting", "isNotOnLadder", "isNotRefueling"}; statement = QUOTE([ARR_3(_player,'BLUE',true)] call DFUNC(joinTeam)); showDisabled = 1; - modifierFunction = QUOTE([ARR_3('BLUE', 'PATHTOF(UI\team\team_white_ca.paa)', _this select 3)] call FUNC(modifyTeamManagementAction)); + modifierFunction = QUOTE([ARR_3('BLUE','PATHTOF(UI\team\team_white_ca.paa)',_this select 3)] call FUNC(modifyTeamManagementAction)); }; class ACE_JoinTeamYellow { displayName = CSTRING(JoinTeamYellow); @@ -283,7 +283,7 @@ class CfgVehicles { exceptions[] = {"isNotSwimming", "isNotInside", "isNotSitting", "isNotOnLadder", "isNotRefueling"}; statement = QUOTE([ARR_3(_player,'YELLOW',true)] call DFUNC(joinTeam)); showDisabled = 1; - modifierFunction = QUOTE([ARR_3('YELLOW', 'PATHTOF(UI\team\team_white_ca.paa)', _this select 3)] call FUNC(modifyTeamManagementAction)); + modifierFunction = QUOTE([ARR_3('YELLOW','PATHTOF(UI\team\team_white_ca.paa)',_this select 3)] call FUNC(modifyTeamManagementAction)); }; class ACE_LeaveTeam { displayName = CSTRING(LeaveTeam); @@ -291,7 +291,7 @@ class CfgVehicles { exceptions[] = {"isNotSwimming", "isNotInside", "isNotSitting", "isNotOnLadder", "isNotRefueling"}; statement = QUOTE([ARR_3(_player,'MAIN',true)] call DFUNC(joinTeam)); showDisabled = 1; - modifierFunction = QUOTE([ARR_3('MAIN', 'PATHTOF(UI\team\team_white_ca.paa)', _this select 3)] call FUNC(modifyTeamManagementAction)); + modifierFunction = QUOTE([ARR_3('MAIN','PATHTOF(UI\team\team_white_ca.paa)',_this select 3)] call FUNC(modifyTeamManagementAction)); }; class ACE_BecomeLeader { displayName = CSTRING(BecomeLeader); @@ -331,7 +331,7 @@ class CfgVehicles { condition = QGVAR(enableWeaponAttachments); exceptions[] = {"isNotInside", "isNotSwimming", "isNotSitting"}; insertChildren = QUOTE(call DFUNC(getWeaponAttachmentsActions)); - modifierFunction = QUOTE(_this select 3 set [ARR_2(2, getText (configFile >> 'CfgWeapons' >> currentWeapon (_this select 0) >> 'picture'))];); + modifierFunction = QUOTE(_this select 3 set [ARR_2(2,getText (configFile >> 'CfgWeapons' >> currentWeapon (_this select 0) >> 'picture'))];); }; }; }; @@ -348,7 +348,7 @@ class CfgVehicles { condition = "true"; class ACE_Passengers { displayName = CSTRING(Passengers); - condition = QUOTE(alive _target); + condition = QUOTE(true); statement = ""; exceptions[] = {"isNotSwimming"}; insertChildren = QUOTE(_this call DFUNC(addPassengersActions)); @@ -415,7 +415,7 @@ class CfgVehicles { condition = "true"; class ACE_Passengers { displayName = CSTRING(Passengers); - condition = QUOTE(alive _target); + condition = QUOTE(true); statement = ""; exceptions[] = {"isNotSwimming"}; insertChildren = QUOTE(_this call DFUNC(addPassengersActions)); @@ -442,7 +442,7 @@ class CfgVehicles { condition = "true"; class ACE_Passengers { displayName = CSTRING(Passengers); - condition = QUOTE(alive _target); + condition = QUOTE(true); statement = ""; exceptions[] = {"isNotSwimming"}; insertChildren = QUOTE(_this call DFUNC(addPassengersActions)); @@ -467,13 +467,13 @@ class CfgVehicles { class ACE_Actions { class ACE_MainActions { displayName = CSTRING(MainAction); - position = QUOTE([ARR_2(_target, EGVAR(interact_menu,cameraPosASL))] call DFUNC(getVehiclePosComplex)); + position = QUOTE([ARR_2(_target,EGVAR(interact_menu,cameraPosASL))] call DFUNC(getVehiclePosComplex)); selection = ""; distance = 4; condition = "true"; class ACE_Passengers { displayName = CSTRING(Passengers); - condition = QUOTE(alive _target); + condition = QUOTE(true); statement = ""; exceptions[] = {"isNotSwimming"}; insertChildren = QUOTE(_this call DFUNC(addPassengersActions)); @@ -495,13 +495,13 @@ class CfgVehicles { class ACE_Actions { class ACE_MainActions { displayName = CSTRING(MainAction); - position = QUOTE([ARR_2(_target, EGVAR(interact_menu,cameraPosASL))] call DFUNC(getVehiclePosComplex)); + position = QUOTE([ARR_2(_target,EGVAR(interact_menu,cameraPosASL))] call DFUNC(getVehiclePosComplex)); selection = ""; distance = 4; condition = "true"; class ACE_Passengers { displayName = CSTRING(Passengers); - condition = QUOTE(alive _target); + condition = QUOTE(true); statement = ""; exceptions[] = {"isNotSwimming"}; insertChildren = QUOTE(_this call DFUNC(addPassengersActions)); @@ -549,7 +549,7 @@ class CfgVehicles { }; class ACE_Passengers { displayName = CSTRING(Passengers); - condition = QUOTE(alive _target); + condition = QUOTE(true); statement = ""; exceptions[] = {"isNotSwimming"}; insertChildren = QUOTE(_this call DFUNC(addPassengersActions)); @@ -581,7 +581,7 @@ class CfgVehicles { condition = "true"; class ACE_Passengers { displayName = CSTRING(Passengers); - condition = QUOTE(alive _target); + condition = QUOTE(true); statement = ""; exceptions[] = {"isNotSwimming"}; insertChildren = QUOTE(_this call DFUNC(addPassengersActions)); @@ -642,7 +642,7 @@ class CfgVehicles { class ACE_OpenBox { displayName = CSTRING(OpenBox); condition = QUOTE(alive _target && {!lockedInventory _target} && {getNumber (configOf _target >> 'disableInventory') == 0}); - statement = QUOTE(_player action [ARR_2(QUOTE(QUOTE(Gear)), _target)]); + statement = QUOTE(_player action [ARR_2(QUOTE(QUOTE(Gear)),_target)]); showDisabled = 0; }; }; @@ -661,7 +661,7 @@ class CfgVehicles { class ACE_OpenBox { displayName = CSTRING(OpenBox); condition = QUOTE(alive _target && {!lockedInventory _target} && {getNumber (configOf _target >> 'disableInventory') == 0}); - statement = QUOTE(_player action [ARR_2(QUOTE(QUOTE(Gear)), _target)]); + statement = QUOTE(_player action [ARR_2(QUOTE(QUOTE(Gear)),_target)]); showDisabled = 0; }; }; @@ -715,6 +715,14 @@ class CfgVehicles { }; }; }; + // Don't enable for scripted + class WeaponHolderSimulated_Scripted: WeaponHolderSimulated { + class ACE_Actions: ACE_Actions { + class ACE_MainActions: ACE_MainActions { + delete GVAR(Gear); + }; + }; + }; class ReammoBox; // dropped weapons/gear @@ -733,6 +741,19 @@ class CfgVehicles { }; }; }; + // Don't enable for scripted + class GroundWeaponHolder: WeaponHolder { + class ACE_Actions: ACE_Actions { + class ACE_MainActions; + }; + }; + class GroundWeaponHolder_Scripted: GroundWeaponHolder { + class ACE_Actions: ACE_Actions { + class ACE_MainActions: ACE_MainActions { + delete GVAR(Gear); + }; + }; + }; class Lamps_base_F; class Land_PortableLight_single_F: Lamps_base_F { @@ -794,6 +815,7 @@ class CfgVehicles { displayName = CSTRING(TurnOn); icon = "\A3\Ui_f\data\IGUI\Cfg\VehicleToggles\LightsIconOn_ca.paa"; condition = QUOTE(alive _target); + #pragma hemtt suppress pw3_padded_arg statement = QUOTE(\ private _position = getPosATL _target;\ private _vectorDirAndUp = [ARR_2(vectorDir _target,vectorUp _target)];\ diff --git a/addons/interaction/RscTitles.hpp b/addons/interaction/RscTitles.hpp index 48011b264e..ec7856c62c 100644 --- a/addons/interaction/RscTitles.hpp +++ b/addons/interaction/RscTitles.hpp @@ -106,7 +106,7 @@ class RscACE_SelectAnItem { y = 0.605; style = 2; text = CSTRING(Back); - action = QUOTE(call DFUNC(hideMenu);); //'Default' call DFUNC(openMenu); 'Default' call DFUNC(openMenuSelf); + action = QUOTE(call DFUNC(hideMenu)); //'Default' call DFUNC(openMenu); 'Default' call DFUNC(openMenuSelf); colorBackground[] = {0,0,0,0}; colorBackgroundDisabled[] = {0,0,0,0}; colorBackgroundActive[] = {1,1,1,0.2}; @@ -120,7 +120,7 @@ class RscACE_SelectAnItem { w = 0.15; style = 2; text = CSTRING(MakeSelection); - action = QUOTE(call DFUNC(hideMenu);); + action = QUOTE(call DFUNC(hideMenu)); colorBackground[] = {0,0,0,0}; colorBackgroundDisabled[] = {0,0,0,0}; colorBackgroundActive[] = {1,1,1,0.2}; diff --git a/addons/interaction/XEH_PREP.hpp b/addons/interaction/XEH_PREP.hpp index 8f68aa79cf..554f903704 100644 --- a/addons/interaction/XEH_PREP.hpp +++ b/addons/interaction/XEH_PREP.hpp @@ -14,6 +14,7 @@ PREP(hideMouseHint); // interaction with units PREP(canInteractWithCivilian); +PREP(canInteractWithVehicleCrew); PREP(getDown); PREP(sendAway); PREP(canJoinGroup); diff --git a/addons/interaction/XEH_preInit.sqf b/addons/interaction/XEH_preInit.sqf index 4dd0bb13e6..c5873bcfc9 100644 --- a/addons/interaction/XEH_preInit.sqf +++ b/addons/interaction/XEH_preInit.sqf @@ -6,7 +6,7 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" DFUNC(repair_Statement) = { // moved from config because of build problems TRACE_1("repair_Statement",_this); diff --git a/addons/interaction/functions/fnc_addPassengersActions.sqf b/addons/interaction/functions/fnc_addPassengersActions.sqf index 27698eb697..40ba9672ef 100644 --- a/addons/interaction/functions/fnc_addPassengersActions.sqf +++ b/addons/interaction/functions/fnc_addPassengersActions.sqf @@ -6,65 +6,68 @@ * Arguments: * 0: Vehicle * 1: Player - * 3: Parameters + * 2: Parameters * * Return Value: * Children actions * * Example: - * [target, player, [params]] call ace_interaction_fnc_addPassengersActions + * [cursorObject, player, [params]] call ace_interaction_fnc_addPassengersActions * * Public: No */ params ["_vehicle", "_player"]; +// If player is not in vehicle and the crew is hostile, do not show any actions +if !(_player in _vehicle || {[_player, _vehicle] call FUNC(canInteractWithVehicleCrew)}) exitWith { + [] // return +}; + private _actions = []; +private _icon = ""; { - private _unit = _x; + _x params ["_unit", "_role"]; - if (_unit != _player && {getText (configOf _unit >> "simulation") != "UAVPilot"}) then { - private _icon = [ - "", - "A3\ui_f\data\IGUI\RscIngameUI\RscUnitInfo\role_driver_ca.paa", - "A3\ui_f\data\IGUI\RscIngameUI\RscUnitInfo\role_gunner_ca.paa", - "A3\ui_f\data\IGUI\RscIngameUI\RscUnitInfo\role_commander_ca.paa" - ] select (([driver _vehicle, gunner _vehicle, commander _vehicle] find _unit) + 1); + _icon = [ + "A3\ui_f\data\IGUI\RscIngameUI\RscUnitInfo\role_driver_ca.paa", + "A3\ui_f\data\IGUI\RscIngameUI\RscUnitInfo\role_gunner_ca.paa", + "A3\ui_f\data\IGUI\RscIngameUI\RscUnitInfo\role_commander_ca.paa", + "" + ] select (["driver", "gunner", "commander"] find _role); - if (_unit getVariable [QEGVAR(captives,isHandcuffed), false]) then { - _icon = QPATHTOEF(captives,UI\handcuff_ca.paa); - }; - - _actions pushBack [ - [ - format ["%1", _unit], - [_unit, true] call EFUNC(common,getName), - [_icon, "#FFFFFF"], - { - //statement (Run on hover) - reset the cache so we will insert actions immedietly when hovering over new unit - TRACE_2("Cleaning Cache",_target,vehicle _target); - [vehicle _target, QEGVAR(interact_menu,ATCache_ACE_SelfActions)] call EFUNC(common,eraseCache); - }, - {true}, - { - if (EGVAR(interact_menu,selectedTarget) isEqualTo _target) then { - _this call FUNC(addPassengerActions) - } else { - [] //not selected, don't waste time on actions - }; - }, - [_unit], - {[0, 0, 0]}, - 2, - [false,false,false,true,false], //add run on hover (4th bit true) - {if (["ace_medical_gui"] call EFUNC(common,isModLoaded)) then {call EFUNC(medical_gui,modifyActionTriageLevel)}} - ] call EFUNC(interact_menu,createAction), - [], - _unit - ]; + if (_unit getVariable [QEGVAR(captives,isHandcuffed), false]) then { + _icon = QPATHTOEF(captives,UI\handcuff_ca.paa); }; - false -} count crew _vehicle; + + _actions pushBack [ + [ + format ["%1", _unit], + [_unit, true] call EFUNC(common,getName), + [_icon, "#FFFFFF"], + { + // statement (Run on hover) - reset the cache so we will insert actions immediately when hovering over new unit + TRACE_2("Cleaning Cache",_target,objectParent _target); + [objectParent _target, QEGVAR(interact_menu,ATCache_ACE_SelfActions)] call EFUNC(common,eraseCache); + }, + {true}, + { + if (EGVAR(interact_menu,selectedTarget) isEqualTo _target) then { + _this call FUNC(addPassengerActions) + } else { + [] // not selected, don't waste time on actions + }; + }, + [_unit], + {[0, 0, 0]}, + 2, + [false, false, false, true, false], // add run on hover (4th bit true) + {if (["ace_medical_gui"] call EFUNC(common,isModLoaded)) then {call EFUNC(medical_gui,modifyActionTriageLevel)}} + ] call EFUNC(interact_menu,createAction), + [], + _unit + ]; +} forEach ((fullCrew _vehicle) select {_x select 0 != _player && {!unitIsUAV (_x select 0)}}); _actions diff --git a/addons/interaction/functions/fnc_canInteractWithVehicleCrew.sqf b/addons/interaction/functions/fnc_canInteractWithVehicleCrew.sqf new file mode 100644 index 0000000000..a314a8b601 --- /dev/null +++ b/addons/interaction/functions/fnc_canInteractWithVehicleCrew.sqf @@ -0,0 +1,31 @@ +#include "..\script_component.hpp" +/* + * Author: johnb43 + * Checks if a unit can interact with the vehicle crew inside. + * + * Arguments: + * 0: Player + * 1: Vehicle + * + * Return Value: + * Unit can interact with vehicle crew + * + * Example: + * [cursorObject, player] call ace_interaction_fnc_canInteractWithVehicleCrew + * + * Public: No + */ + +params ["_player", "_vehicle"]; + +private _crew = crew _vehicle; + +// If vehicle is empty, quit +if (_crew isEqualTo []) exitWith {true}; + +private _sidePlayer = side group _player; + +(_crew select {_x != _player && {!unitIsUAV _x}}) findIf { // ignore player and UAV units + // Units must all be unconscious, captive or friendly (side group is used in case unit is captive/unconscious) for actions to show up + !captive _x && {lifeState _x in ["HEALTHY", "INJURED"]} && {[_sidePlayer, side group _x] call BIS_fnc_sideIsEnemy} +} == -1 diff --git a/addons/interaction/functions/fnc_doRemoteControl.sqf b/addons/interaction/functions/fnc_doRemoteControl.sqf index 125a1b5e89..a2ec19b180 100644 --- a/addons/interaction/functions/fnc_doRemoteControl.sqf +++ b/addons/interaction/functions/fnc_doRemoteControl.sqf @@ -9,7 +9,7 @@ * None * * Example: - * call ace_interaction_fnc_onRemoteControl + * call ace_interaction_fnc_doRemoteControl * * Public: No */ diff --git a/addons/interaction/initSettings.sqf b/addons/interaction/initSettings.inc.sqf similarity index 100% rename from addons/interaction/initSettings.sqf rename to addons/interaction/initSettings.inc.sqf diff --git a/addons/interaction/stringtable.xml b/addons/interaction/stringtable.xml index 27ddd5cb46..41861dcb31 100644 --- a/addons/interaction/stringtable.xml +++ b/addons/interaction/stringtable.xml @@ -163,8 +163,8 @@ Меню взаимодействия Cselekvő menü Menu de Interação - Menù interazione - インタラクション メニュー + Menù Interazioni + インタラクションメニュー 상호작용 메뉴 互动菜单 互動選單 @@ -180,8 +180,8 @@ Меню взаимодействия (с собой) Cselekvő menü (saját) Menu de Interação (Individual) - Menù interazione (individuale) - インタラクション メニュー (セルフ) + Menù Interazioni (su se stesso) + インタラクションメニュー (セルフ) 상호작용 메뉴(자신) 互动菜单(自我) 互動選單 (自我) @@ -215,7 +215,7 @@ Ajtó bezárása Zablokuj drzwi Zamknout dveře - ドアの鍵をしめる + ドアを施錠 문 잠그기 锁门 鎖門 @@ -232,7 +232,7 @@ Zár kinyitása Odblokuj drzwi Odemknout dveře - ドアの鍵をあける + ドアを解錠 잠긴 문 열기 解锁门 解鎖門 @@ -249,7 +249,7 @@ Zárt ajtó Zablokowano drzwi Zamčené dveře - ドアの鍵をしめました + ドアを施錠しました 잠긴 문 门已上锁 門已上鎖 @@ -266,7 +266,7 @@ Nyitott ajtó Odblokowano drzwi Odemčené dveře - ドアの鍵をあけました + ドアを解錠しました 열린 문 门未上锁 門未上鎖 @@ -327,34 +327,40 @@ Rename Group グループ名変更 Renommer le groupe + Rinomina il gruppo Переименовать группу Gruppe umbenennen Zmień nazwę grupy 小队重命名 그룹 명칭 다시 짓기 Renombrar grupo + Renomear Grupo This group name is already in use. このグループ名は既に使われています。 Ce nom de groupe est déjà attribué. + C'è già un gruppo con questo nome. Данное имя группы уже используется. Dieser Gruppenname ist bereits in Verwendung. Ta nazwa grupy jest już w użyciu. 该小队名称已被使用 그 명칭은 이미 사용 중 입니다. Este nombre de grupo ya está siendo usado. + Este nome de grupo já está em uso. NEW GROUP NAME: 新しいグループ名: NOUVEAU NOM DE GROUPE : + NUOVO NOME GRUPPO: НОВОЕ ИМЯ ГРУППЫ NEUER GRUPPENNAME: NOWA NAZWA GRUPY: 新的小队名: 새 그룹 명칭: NUEVO NOMBRE DE GRUPO: + NOVO NOME DE GRUPO: DANCE! @@ -655,7 +661,7 @@ Назначить в Красную группу Assigner à rouge Assegna al team rosso - レッドにする + レッドに割り当て 빨강에 등록 指派为红组 指派為紅組 @@ -672,7 +678,7 @@ Назначить в Зеленую группу Assigner à vert Assegna al team verde - グリーンにする + グリーンに割り当て 초록에 등록 指派为绿组 指派為綠組 @@ -689,7 +695,7 @@ Назначить в Синюю группу Assigner à bleu Assegna al team blu - ブルーにする + ブルーに割り当て 파랑에 등록 指派为蓝组 指派為藍組 @@ -706,7 +712,7 @@ Назначить в Желтую группу Assigner à jaune Assegna al team giallo - イエローにする + イエローに割り当て 노랑에 등록 指派为黄组 指派為黃組 @@ -873,7 +879,7 @@ Tecla modificadora Клавиша-модификатор Tecla Modificadora - Tasto modifica + Tasto modificatore Módosító billentyű Modifikátor キーを割り当て @@ -888,11 +894,11 @@ Hors de portée Fuera de rango Слишком далеко - Fora do Alcançe + Fora do Alcance Hatótávolságon kívül Poza zasięgiem Mimo dosah - Fuori limite + Fuori portata 範囲内にありません 범위 내에 없습니다 不在范围内 @@ -940,7 +946,7 @@ ひっくり返す 翻动 - Gira + Capovolgi Przewróć Virar Tourner @@ -958,7 +964,7 @@ Interakcja Interactuar Cselekvés - Interagire + Interagisci Interagir インタラクト 상호작용 @@ -1027,7 +1033,7 @@ Activer la gestion d'équipe Csapatkezelés engedélyezése Habilitar gestão de equipes - Abilità Management Squadra + Abilita Gestione Squadra チーム管理の有効化 팀 설정 활성화 启用小队管理 @@ -1044,8 +1050,8 @@ Permet aux joueurs d'utiliser la gestion d'équipe. Valeur par défaut : activé. A játékosoknak engedélyezve legyen a csapatkezelő menü? Alapértelmezett: Igen Devem os jogadores ter permissão de usar o menu de gestão de equipes? Padrão: Sim - Possono i giocatori usare il Menù Managment Squadra? Default: Si - プレイヤーがチーム管理メニューを使えるかどうかを設定します。標準: 有効化 + I giocatori possono usare il Menù di Gestione Squadra? Predefinito: Si + プレイヤーがチーム管理メニューを使えるかどうかを設定します。 デフォルト: 有効化 플레이어들이 팀 설정하는 것을 허락합니까? 기본설정: 예 允许玩家使用小队管理菜单? 预设:是 允許玩家使用小隊管理選單? 預設: 是 @@ -1055,7 +1061,7 @@ Disable negative rating Negative Bewertung deaktivieren 否定評価を無効化 - Disabilita valutazione negativa + Impedisci Valutazione Negativa 關閉負面評價 关闭负面评价 부정행위 가중치 사용 안함 @@ -1070,7 +1076,7 @@ Should players receive negative rating? When enabled players are only receiving positive ratings which prevents friendly AI fire when destroying friendly equipment or killing team members. Sollen Spieler negative Bewertungen erhalten dürfen? Wenn diese Option aktiviert ist, erhalten Spieler nur positive Bewertungen, was Freundbeschuss durch KI verhindert, wenn befreundete Ausrüstung zerstört oder befreundete Einheiten von Spielern des selben Teams getötet werden. 否定評価を受けますか?有効化した場合プレイヤーは肯定評価のみを受け、友軍の装備を壊したり殺害をしてもAIからの攻撃を防ぎます。 - I giocatori dovrebbero ricevere delle valutazioni negative ? Quando è abilitato i giocatori ricevono esclusivamente valutazioni positive che prevengono il fuoco delle AI alleate quando distruggono equipaggiamenti o uccidono membri della squadra. + I giocatori possono ricevere valutazioni negative? Se abilitato i giocatori riceveranno esclusivamente valutazioni positive, impedendo l'ingaggio da parte di IA alleate quando distruggono equipaggiamenti o uccidono alleati/civili. 玩家是否會收到負面評價? 當本功能開啟時玩家只會接收到正面評價,所以當玩家做出擊殺友軍AI、毀壞友軍裝備或殺害小隊夥伴都不會收到負面評價 玩家是否会收到负面评价? 当本功能开启时玩家只会接收到正面评价,所以当玩家做出击杀友军 AI、毁坏友军装备或杀害小队伙伴都不会收到负面评价。 플레이어의 부정행위 가중치를 계산합니까? 활성화된 플레이어는 낮은 부정행위 가중치를 가질 때, 아군의 장비나 병력을 사격해도 아군 AI의 사격을 받지 않습니다. @@ -1091,7 +1097,7 @@ A csapatkezelés engedélyezi a tagok színének meghatározását, a vezetés átvételét, és csapatoknál be-és kilépést. O módulo de gestão de equipe é composto por: a atribuição de cores para os membros da equipe, comando das equipes, juntando-se / deixando equipes. Управление группами позволяет назначать цвета членам групп, брать командование, вступать в группы или покидать их. - Management Squadra permette l'assegnazione di colori per membri della squadra, prendere il comando ed entrare/uscire dalle squadre. + Gestione Squadra permette l'assegnazione di colori per membri della squadra, prendere il comando ed entrare/uscire dalle squadre. チーム管理はチーム メンバーへ色の割り当てや指揮権を取ったり、チームの出入りを許可します。 팀 설정은 팀 멤버에게 색을 부여하거나 팀에 참여 혹은 나가게 할 수 있게 합니다. 队伍管理系统允许将指定颜色分配到队伍成员上,接管队长职位或加入/离开队伍 @@ -1184,10 +1190,10 @@ %1 передал вам магазин %2. %1 passou a você um carregador %2. %1 ti podal zásobník %2. - %1 ti ha passato un caricatore %2 . + %1 ti ha passato un caricatore %2. %1 te pasó un cargador %2. %1 vous a passé un chargeur de %2. - %1 はあなたに %2 弾倉を渡した + %1 は あなたに弾倉 %2 を渡した。 %1에게서 %2탄창을 받았다 %1给你%2弹匣 %1給你%2彈匣 @@ -1199,7 +1205,7 @@ Показывать действие "передать магазин" Mostrar a interação "Passar carregador" Zobrazit "interakci "podat zásobník" - Mostra interazione "passa caricatore" + Mostra l'interazione "passa caricatore" Mostrar "Pasar cargador" en el menú de interacción Montrer l'interaction "Passer un chargeur" "弾倉を渡す"をインタラクションに表示 @@ -1248,8 +1254,10 @@ Fixer %1 Przyczep %1 Befestige %1 + Attacca %1 附加 %1 %1 붙이기 + Fixar %1 Detach %1 @@ -1259,8 +1267,10 @@ Retirer %1 Odczep %1 Löse %1 + Stacca %1 拆卸 %1 %1 떼내기 + Desfixar %1 Enables attach/detach weapon attachment actions for current weapon. @@ -1268,10 +1278,12 @@ インタラクションから使用中の武器に対してのアタッチメント取り外しを可能にします。 Activar acciones de acoplar/desacoplar accesorios para el arma actual. Cette option permet de fixer/retirer des accessoires d'arme à partir du menu d'interaction personnel. + Abilita le interazioni di attacco/stacco degli accessori sull'arma usata. Włącza akcje przyczepienia/odczepienia dodatków dla obecnej broni Aktiviert das Befestigen/Lösen von Waffenausätzen an der aktuellen Waffe. 启用当前武器的附加/拆卸武器配件的动作。 현재 사용하고 있는 무기에서 부착물을 붙이거나 떼냅니다. + Ativa as ações de fixar/desfixar acessórios para a arma atual. Allow group rename @@ -1279,10 +1291,12 @@ Permettre le renommage de groupe Разрешить переименование группы Erlaube das Umbenennen der Gruppe + Permetti la rinomina del gruppo Zezwól na zmianę nazwy grupy 允许小队重命名 그룹 이름 재설정 허가 Permitir renombrar grupo + Permitir renomear grupo Allows a group leader to rename their group if the name is not already taken. @@ -1290,10 +1304,12 @@ Cette option permet aux chefs de groupe de modifier le nom de leur groupe. Разрешить лидеру группы её переименование, если имя не занято. Erlaube Gruppenführer das Umbenennen Ihrer Gruppe, wenn der Name nicht bereits vergeben ist. + Permetti ad un capogruppo di rinominare il proprio gruppo se quel nome non è già assegnato. Pozwala liderowi grupy na zmianę jej nazwy, jeżeli ta nazwa nie jest już w użyciu. 允许队长在队名未被占用的情况下重命名。 - 그룹 리더가 그룹 이름을 재설정 하는 것을 허가합니다. + 그룹 리더가 그룹 이름을 재설정하는 것을 허가합니다. Permite al lider de un grupo renombrar a su grupo si el nombre no está siendo actualmente usado. + Permite que o líder renomeie seu grupo se o nome não estiver sendo usado. Warning: can cause some objects to collide with others. @@ -1301,10 +1317,12 @@ Attention : certains objets peuvent entrer en collision avec d'autres. 警告: 一部のオブジェクトが干渉する可能性があります。 Achtung: einige Objekte könnten mit anderen Kollidieren. + Attenzione: può causare collisioni tra oggetti. Uwaga: niektóre obiekty mogą kolidować z innymi. 警告:会导致一些物体与其他物体发生碰撞。 주의: 물체끼리 충돌하는 현상이 있을 수 있음. Advertencia: puede provocar que algunos objetos choquen con otros. + Aviso: pode causar que alguns objetos colidam com outros. diff --git a/addons/inventory/CfgEventHandlers.hpp b/addons/inventory/CfgEventHandlers.hpp index 5b92811746..f95adcb029 100644 --- a/addons/inventory/CfgEventHandlers.hpp +++ b/addons/inventory/CfgEventHandlers.hpp @@ -1,4 +1,3 @@ - class Extended_PreStart_EventHandlers { class ADDON { init = QUOTE(call COMPILE_SCRIPT(XEH_preStart)); @@ -20,5 +19,12 @@ class Extended_PostInit_EventHandlers { class Extended_DisplayLoad_EventHandlers { class RscDisplayInventory { ADDON = QUOTE(_this call FUNC(inventoryDisplayLoad)); + GVAR(displayNameWeight) = QUOTE(_this call FUNC(displayNameWeight)); // separate to allow other mods to disable them individually + }; +}; + +class Extended_DisplayUnload_EventHandlers { + class RscDisplayInventory { + ADDON = QUOTE(GVAR(unit) = ACE_player); }; }; diff --git a/addons/inventory/RscDisplayInventory.hpp b/addons/inventory/RscDisplayInventory.hpp index c3a1904678..91e68f5fb1 100644 --- a/addons/inventory/RscDisplayInventory.hpp +++ b/addons/inventory/RscDisplayInventory.hpp @@ -27,26 +27,26 @@ class RscCombo; #define W_MAKEITBIGGA(num) (num * (safeZoneH / 40)) #define H_MAKEITBIGGA(num) (num * (safeZoneH / 30)) -#define X_PART(num) QUOTE(linearConversion [ARR_5(0, 2, (missionNamespace getVariable [ARR_2(QUOTE(QGVAR(inventoryDisplaySize)), 0)]), X_BIS(num), X_MAKEITBIGGA(num))]) -#define Y_PART(num) QUOTE(linearConversion [ARR_5(0, 2, (missionNamespace getVariable [ARR_2(QUOTE(QGVAR(inventoryDisplaySize)), 0)]), Y_BIS(num), Y_MAKEITBIGGA(num))]) -#define W_PART(num) QUOTE(linearConversion [ARR_5(0, 2, (missionNamespace getVariable [ARR_2(QUOTE(QGVAR(inventoryDisplaySize)), 0)]), W_BIS(num), W_MAKEITBIGGA(num))]) -#define H_PART(num) QUOTE(linearConversion [ARR_5(0, 2, (missionNamespace getVariable [ARR_2(QUOTE(QGVAR(inventoryDisplaySize)), 0)]), H_BIS(num), H_MAKEITBIGGA(num))]) +#define X_PART(num) QUOTE(linearConversion [ARR_5(0,2,(missionNamespace getVariable [ARR_2(QQGVAR(inventoryDisplaySize),0)]),X_BIS(num),X_MAKEITBIGGA(num))]) +#define Y_PART(num) QUOTE(linearConversion [ARR_5(0,2,(missionNamespace getVariable [ARR_2(QQGVAR(inventoryDisplaySize),0)]),Y_BIS(num),Y_MAKEITBIGGA(num))]) +#define W_PART(num) QUOTE(linearConversion [ARR_5(0,2,(missionNamespace getVariable [ARR_2(QQGVAR(inventoryDisplaySize),0)]),W_BIS(num),W_MAKEITBIGGA(num))]) +#define H_PART(num) QUOTE(linearConversion [ARR_5(0,2,(missionNamespace getVariable [ARR_2(QQGVAR(inventoryDisplaySize),0)]),H_BIS(num),H_MAKEITBIGGA(num))]) class RscDisplayInventory { class controls { class CA_ContainerBackground: RscText { - //crate: GroundLoad adjust size + // Crate: GroundLoad adjust size x = X_PART(1); y = Y_PART(1); w = W_PART(12); - h = H_PART(22.5); //default 23 + h = H_PART(22.5); // default 23 }; class CA_PlayerBackground: RscText { - //center player's container: decrease height because of progressbar height decrease + // Center player's container: Decrease height because of progressbar height decrease x = X_PART(14.6); y = Y_PART(2); w = W_PART(24.4); - h = H_PART(21.5); //default 22 + h = H_PART(21.5); // default 22 }; class TitleBackground: RscText { x = X_PART(14.6); @@ -98,7 +98,7 @@ class RscDisplayInventory { }; class BackgroundSlotPrimaryFlashlight: BackgroundSlotPrimary { x = X_PART(30.6); - y = Y_PART(9.2); //not sure why different (double check release) + y = Y_PART(9.2); // not sure why different (double check release) w = W_PART(1.9); h = H_PART(2); }; @@ -283,11 +283,11 @@ class RscDisplayInventory { h = H_PART(1); }; class GroundLoad: RscProgress { - //crate: GroundLoad adjust size + // Crate: GroundLoad adjust size x = X_PART(1.5); y = Y_PART(22.5); w = W_PART(11); - h = H_PART(0.5); //Default 1 + h = H_PART(0.5); // Default 1 }; class SlotPrimary: GroundTab { x = X_PART(26.6); @@ -345,7 +345,7 @@ class RscDisplayInventory { }; class SlotSecondaryUnderBarrel: SlotPrimary { x = X_PART(29); - y = Y_PART(14.59); //Why is this different? (check release) + y = Y_PART(14.59); // Why is this different? (check release) w = W_PART(2.3); h = H_PART(2); }; @@ -518,11 +518,11 @@ class RscDisplayInventory { h = H_PART(0.5); }; class TotalLoad: GroundLoad { - //center: progressbar height decrease + // Center: progressbar height decrease x = X_PART(15.1); y = Y_PART(22.5); w = W_PART(23.4); - h = H_PART(0.5); //Default 1 + h = H_PART(0.5); // default 1 }; class ContainerMarker: GroundTab { x = X_PART(0); diff --git a/addons/inventory/XEH_PREP.hpp b/addons/inventory/XEH_PREP.hpp index 7c58268e23..824ebf63d7 100644 --- a/addons/inventory/XEH_PREP.hpp +++ b/addons/inventory/XEH_PREP.hpp @@ -1,10 +1,6 @@ - PREP(addCustomFilter); PREP(currentItemListBox); -PREP(forceItemListUpdate); -PREP(inventoryDisplayLoad); -PREP(onLBSelChanged); - +PREP(displayNameWeight); PREP(filterWeapons); PREP(filterMagazines); PREP(filterItems); @@ -14,3 +10,6 @@ PREP(filterVests); PREP(filterBackpacks); PREP(filterGrenades); PREP(filterMedical); +PREP(forceItemListUpdate); +PREP(inventoryDisplayLoad); +PREP(onLBSelChanged); diff --git a/addons/inventory/XEH_postInit.sqf b/addons/inventory/XEH_postInit.sqf index c5dc6c48f6..a670a7bfd5 100644 --- a/addons/inventory/XEH_postInit.sqf +++ b/addons/inventory/XEH_postInit.sqf @@ -2,40 +2,39 @@ if (!hasInterface) exitWith {}; -// cache config -// items in the inventory display can only be distinguished by their lb names and pictures -// this can cause collisions (mainly weapons with attachments), -// but if the item has the same name and picture it at least shouldn't change the filter anyway -// luckily we don't need private items, so dummy and parent classes are out of the picture +// If medical_treatment is loaded, get its items +if (["ace_medical_treatment"] call EFUNC(common,isModLoaded)) then { + private _medicalList = +(uiNamespace getVariable [QGVAR(medicalItemList), createHashMap]); -GVAR(ItemKeyNamespace) = [] call CBA_fnc_createNamespace; -private _allItems = uiNamespace getVariable [QGVAR(ItemKeyCache), []]; //See XEH_preStart.sqf + _medicalList merge [uiNamespace getVariable [QEGVAR(medical_treatment,treatmentItems), createHashMap], true]; -// isEqualType is hacking protection as we cannot trust that the cache hasn't been manipulated -{ - if (_x isEqualType [] && {_x isEqualTypeArray ["", configNull]}) then { - GVAR(ItemKeyNamespace) setVariable _x; - }; -} forEach ([[], _allItems] select (_allItems isEqualType [])); + GVAR(medicalItemList) = compileFinal _medicalList; +} else { + GVAR(medicalItemList) = uiNamespace getVariable [QGVAR(medicalItemList), compileFinal createHashMap]; +}; GVAR(customFilters) = []; GVAR(selectedFilterIndex) = -1; -// add custom filters +// Add custom filters +[LLSTRING(Grenades), QFUNC(filterGrenades)] call FUNC(addCustomFilter); +[LLSTRING(Backpacks), QFUNC(filterBackpacks)] call FUNC(addCustomFilter); +[LLSTRING(Uniforms), QFUNC(filterUniforms)] call FUNC(addCustomFilter); +[LLSTRING(Vests), QFUNC(filterVests)] call FUNC(addCustomFilter); +[LLSTRING(Headgear), QFUNC(filterHeadgear)] call FUNC(addCustomFilter); +[LLSTRING(Medical), QFUNC(filterMedical)] call FUNC(addCustomFilter); -// get list of grenades -GVAR(Grenades_ItemList) = uiNamespace getVariable [QGVAR(Grenades_ItemList), []]; -if (!(GVAR(Grenades_ItemList) isEqualType [])) then {GVAR(Grenades_ItemList) = []}; +// Used for displaying the correct name when opening a subordinate's inventory +GVAR(unit) = ACE_player; -[localize LSTRING(Grenades), QFUNC(filterGrenades)] call FUNC(addCustomFilter); +["CAManBase", "InventoryOpened", { + params ["_unit", "_container"]; -[localize LSTRING(Backpacks), QFUNC(filterBackpacks)] call FUNC(addCustomFilter); -[localize LSTRING(Uniforms), QFUNC(filterUniforms)] call FUNC(addCustomFilter); -[localize LSTRING(Vests), QFUNC(filterVests)] call FUNC(addCustomFilter); -[localize LSTRING(Headgear), QFUNC(filterHeadgear)] call FUNC(addCustomFilter); + // GVAR(unit) is ACE_player by default + if (_unit isEqualTo ACE_player) exitWith {}; -// get list of medical items -GVAR(Medical_ItemList) = uiNamespace getVariable [QGVAR(Medical_ItemList), []]; -if (!(GVAR(Medical_ItemList) isEqualType [])) then {GVAR(Medical_ItemList) = []}; - -[localize LSTRING(Medical), QFUNC(filterMedical)] call FUNC(addCustomFilter); + // If the player is a group leader and opens a subordinate's inventory or has a subordinate open the player's backpack, update name to correct unit + if (leader ACE_player == ACE_player && {(_unit in units ACE_player) || {(objectParent _container) isEqualTo ACE_player}}) then { + GVAR(unit) = _unit; + }; +}] call CBA_fnc_addClassEventHandler; diff --git a/addons/inventory/XEH_preInit.sqf b/addons/inventory/XEH_preInit.sqf index 9361d05015..894773534a 100644 --- a/addons/inventory/XEH_preInit.sqf +++ b/addons/inventory/XEH_preInit.sqf @@ -6,6 +6,6 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" ADDON = true; diff --git a/addons/inventory/XEH_preStart.sqf b/addons/inventory/XEH_preStart.sqf index 18999d638e..faa0e1691e 100644 --- a/addons/inventory/XEH_preStart.sqf +++ b/addons/inventory/XEH_preStart.sqf @@ -2,52 +2,53 @@ #include "XEH_PREP.hpp" -//item cache, see XEH_postInit.sqf +// Cache config +// Items in the inventory display can all use lb data to get their classname (exception: backpacks, handled separately) private _allItems = ("getNumber (_x >> 'scope') > 0" configClasses (configFile >> "CfgWeapons")); _allItems append ("getNumber (_x >> 'scope') > 0" configClasses (configFile >> "CfgGlasses")); -_allItems append ("getNumber (_x >> 'scope') == 2" configClasses (configFile >> "CfgMagazines")); -_allItems append ("getNumber (_x >> 'scope') > 0 && {getNumber (_x >> 'isBackpack') == 1}" configClasses (configFile >> "CfgVehicles")); +_allItems append ("getNumber (_x >> 'scope') > 0" configClasses (configFile >> "CfgMagazines")); -uiNamespace setVariable [QGVAR(ItemKeyCache), _allItems apply { +uiNamespace setVariable [QGVAR(itemKeyCache), compileFinal ((_allItems apply {configName _x}) createHashMapFromArray _allItems)]; + +// Backpacks in the inventory display can only be distinguished by their lb names and pictures, lb data returns "" +_allItems = "getNumber (_x >> 'scope') > 0 && {getNumber (_x >> 'isBackpack') == 1}" configClasses (configFile >> "CfgVehicles"); + +uiNamespace setVariable [QGVAR(backpackKeyCache), compileFinal createHashMapFromArray (_allItems apply { private _displayName = getText (_x >> "displayName"); private _picture = getText (_x >> "picture"); - // list box seems to delete the leading backslash - if (_picture select [0,1] == "\") then { + // List box seems to delete the leading backslash + if (_picture select [0, 1] == "\") then { _picture = _picture select [1]; }; + if (count _picture > 0 && !(_picture regexMatch ".*?\.paa")) then { // handle missing file extension + if (!fileExists (_picture + ".paa")) exitWith {}; + _picture = _picture + ".paa"; + }; - [format ["%1:%2", _displayName, _picture], _x]; -}]; + // Handle missing file extension, as inventory returns path with extension + if (count _picture > 0 && !(_picture regexMatch ".*?\.paa")) then { + if (!fileExists (_picture + ".paa")) exitWith {}; + _picture = _picture + ".paa"; + }; -// generate list of grenades -private _grenades_ItemList = []; + // Listboxes store pictures as lowercase + [format ["%1:%2", _displayName, toLower _picture], _x] +})]; + +// Generate list of grenades +private _cfgThrow = configFile >> "CfgWeapons" >> "Throw"; +private _grenadeList = createHashMap; { - _grenades_ItemList append getArray (configFile >> "CfgWeapons" >> "Throw" >> _x >> "magazines"); -} forEach getArray (configFile >> "CfgWeapons" >> "Throw" >> "muzzles"); + _grenadeList insert [true, (getArray (_cfgThrow >> _x >> "magazines")) apply {_x call EFUNC(common,getConfigName)}, []]; +} forEach getArray (_cfgThrow >> "muzzles"); -// make list case insensitive -_grenades_ItemList = _grenades_ItemList apply {toLower _x}; +uiNamespace setVariable [QGVAR(grenadesItemList), compileFinal _grenadeList]; -// filter duplicates -_grenades_ItemList = _grenades_ItemList arrayIntersect _grenades_ItemList; +// Generate list of medical items +private _medicalList = QUOTE(getNumber (_x >> 'scope') > 0 && {getNumber (_x >> 'ItemInfo' >> 'type') in [ARR_2(TYPE_FIRST_AID_KIT,TYPE_MEDIKIT)]}) configClasses (configFile >> "CfgWeapons"); -uiNamespace setVariable [QGVAR(Grenades_ItemList), _grenades_ItemList]; +_medicalList = _medicalList apply {configName _x}; -// generate list of medical items -private _medical_ItemList = ["FirstAidKit", "Medikit"]; -{ - _medical_ItemList append getArray (_x >> "items"); -} forEach ("true" configClasses (configFile >> QEGVAR(medical_treatment,Actions))); - -// remove all numbers from list -_medical_ItemList = _medical_ItemList select {_x isEqualType ""}; - -// make list case insensitive -_medical_ItemList = _medical_ItemList apply {toLower _x}; - -// filter duplicates -_medical_ItemList = _medical_ItemList arrayIntersect _medical_ItemList; - -uiNamespace setVariable [QGVAR(Medical_ItemList), _medical_ItemList]; +uiNamespace setVariable [QGVAR(medicalItemList), compileFinal (_medicalList createHashMapFromArray [])]; diff --git a/addons/inventory/functions/fnc_addCustomFilter.sqf b/addons/inventory/functions/fnc_addCustomFilter.sqf index 6dd6e1f559..50820fa448 100644 --- a/addons/inventory/functions/fnc_addCustomFilter.sqf +++ b/addons/inventory/functions/fnc_addCustomFilter.sqf @@ -12,11 +12,13 @@ * None * * Example: - * ["displayname", "filter"] call ACE_inventory_fnc_addCustomFilter + * ["displayname", "filter"] call ace_inventory_fnc_addCustomFilter * * Public: No */ -params [["_filterName", "ERROR: No Name", [""]], ["_fncName", "", [""]]]; +params [["_filterName", "", [""]], ["_fncName", "", [""]]]; + +if (_filterName == "") exitWith {}; GVAR(customFilters) pushBack [_filterName, _fncName]; diff --git a/addons/inventory/functions/fnc_currentItemListBox.sqf b/addons/inventory/functions/fnc_currentItemListBox.sqf index b3e5ce40b8..1546e8a509 100644 --- a/addons/inventory/functions/fnc_currentItemListBox.sqf +++ b/addons/inventory/functions/fnc_currentItemListBox.sqf @@ -12,7 +12,7 @@ * Currently selected item list box * * Example: - * [DISPLAY] call ACE_inventory_fnc_currentItemListBox + * [DISPLAY] call ace_inventory_fnc_currentItemListBox * * Public: No */ @@ -27,7 +27,6 @@ scopeName "main"; if (ctrlShown _control) then { _control breakOut "main"; }; - false -} count [IDC_ITEMLIST_GROUND, IDC_ITEMLIST_SOLDIER, IDC_ITEMLIST_UNIFORM, IDC_ITEMLIST_VEST, IDC_ITEMLIST_BACKPACK]; +} forEach [IDC_ITEMLIST_GROUND, IDC_ITEMLIST_SOLDIER, IDC_ITEMLIST_UNIFORM, IDC_ITEMLIST_VEST, IDC_ITEMLIST_BACKPACK]; controlNull diff --git a/addons/movement/functions/fnc_inventoryDisplayLoad.sqf b/addons/inventory/functions/fnc_displayNameWeight.sqf similarity index 68% rename from addons/movement/functions/fnc_inventoryDisplayLoad.sqf rename to addons/inventory/functions/fnc_displayNameWeight.sqf index 95299a3b34..c480593d85 100644 --- a/addons/movement/functions/fnc_inventoryDisplayLoad.sqf +++ b/addons/inventory/functions/fnc_displayNameWeight.sqf @@ -10,26 +10,27 @@ * None * * Example: - * [DISPLAY] call ACE_movement_fnc_inventoryDisplayLoad + * [DISPLAY] call ace_inventory_fnc_displayNameWeight * * Public: No */ params ["_display"]; -// forces player name control to display irrespective of isStreamFriendlyUIEnabled +// Forces player name control to display irrespective of isStreamFriendlyUIEnabled (_display displayCtrl 111) ctrlShow true; private _fnc_update = { params ["_display"]; + private _control = _display displayCtrl 111; private _format = ["%1 - %2 %3 (%4)", "%2 %3 (%4)"] select isStreamFriendlyUIEnabled; _control ctrlSetText format [_format, - [ACE_player, false, true] call EFUNC(common,getName), - localize ELSTRING(common,Weight), - [ACE_player] call EFUNC(common,getWeight), - [ACE_player, true] call EFUNC(common,getWeight) + [GVAR(unit), false, true] call EFUNC(common,getName), + LELSTRING(common,Weight), + GVAR(unit) call EFUNC(common,getWeight), + [GVAR(unit), true] call EFUNC(common,getWeight) ]; }; diff --git a/addons/inventory/functions/fnc_filterBackpacks.sqf b/addons/inventory/functions/fnc_filterBackpacks.sqf index 6cb94f3d1c..db1edd9756 100644 --- a/addons/inventory/functions/fnc_filterBackpacks.sqf +++ b/addons/inventory/functions/fnc_filterBackpacks.sqf @@ -10,7 +10,7 @@ * Item should appear in this list? * * Example: - * [CONFIG] call ACE_inventory_fnc_filterBackpacks + * [CONFIG] call ace_inventory_fnc_filterBackpacks * * Public: No */ diff --git a/addons/inventory/functions/fnc_filterGrenades.sqf b/addons/inventory/functions/fnc_filterGrenades.sqf index 6d2b813ae4..7e871699b8 100644 --- a/addons/inventory/functions/fnc_filterGrenades.sqf +++ b/addons/inventory/functions/fnc_filterGrenades.sqf @@ -10,11 +10,11 @@ * Item should appear in this list? * * Example: - * [CONFIG] call ACE_inventory_fnc_filterGrenades + * [CONFIG] call ace_inventory_fnc_filterGrenades * * Public: No */ params ["_config"]; -toLower configName _config in GVAR(Grenades_ItemList) +(configName _config) in (uiNamespace getVariable QGVAR(grenadesItemList)) diff --git a/addons/inventory/functions/fnc_filterHeadgear.sqf b/addons/inventory/functions/fnc_filterHeadgear.sqf index 134a4fc45f..010c33040f 100644 --- a/addons/inventory/functions/fnc_filterHeadgear.sqf +++ b/addons/inventory/functions/fnc_filterHeadgear.sqf @@ -10,7 +10,7 @@ * Item should appear in this list? * * Example: - * [CONFIG] call ACE_inventory_fnc_filterHeadgear + * [CONFIG] call ace_inventory_fnc_filterHeadgear * * Public: No */ diff --git a/addons/inventory/functions/fnc_filterItems.sqf b/addons/inventory/functions/fnc_filterItems.sqf index 0bdb18310f..a3c2567233 100644 --- a/addons/inventory/functions/fnc_filterItems.sqf +++ b/addons/inventory/functions/fnc_filterItems.sqf @@ -10,11 +10,14 @@ * Item should appear in this list? * * Example: - * [CONFIG] call ACE_inventory_fnc_filterItems + * [CONFIG] call ace_inventory_fnc_filterItems * * Public: No */ params ["_config"]; -!(getNumber (_config >> "ItemInfo" >> "type") in [TYPE_UNIFORM, TYPE_VESTS, TYPE_HEADGEAR]) && {!(_this call FUNC(filterBackpacks))} +!(_this call FUNC(filterMedical)) && +{!(_this call FUNC(filterBackpacks))} && +{!(_this call FUNC(filterHeadgear))} && +{!(getNumber (_config >> "ItemInfo" >> "type") in [TYPE_UNIFORM, TYPE_VEST])} diff --git a/addons/inventory/functions/fnc_filterMagazines.sqf b/addons/inventory/functions/fnc_filterMagazines.sqf index 4b7747c5a8..e6d9237c21 100644 --- a/addons/inventory/functions/fnc_filterMagazines.sqf +++ b/addons/inventory/functions/fnc_filterMagazines.sqf @@ -10,9 +10,9 @@ * Item should appear in this list? * * Example: - * [CONFIG] call ACE_inventory_fnc_filterMagazines + * [CONFIG] call ace_inventory_fnc_filterMagazines * * Public: No */ -!(_this call FUNC(filterBackpacks)) && {!(_this call FUNC(filterGrenades))} +!(_this call FUNC(filterGrenades)) && {!(_this call FUNC(filterBackpacks))} diff --git a/addons/inventory/functions/fnc_filterMedical.sqf b/addons/inventory/functions/fnc_filterMedical.sqf index ec44ba2a76..73cfdbdffb 100644 --- a/addons/inventory/functions/fnc_filterMedical.sqf +++ b/addons/inventory/functions/fnc_filterMedical.sqf @@ -10,11 +10,11 @@ * Item should appear in this list? * * Example: - * [CONFIG] call ACE_inventory_fnc_filterMedical + * [CONFIG] call ace_inventory_fnc_filterMedical * * Public: No */ params ["_config"]; -toLower configName _config in GVAR(Medical_ItemList) +(configName _config) in GVAR(medicalItemList) diff --git a/addons/inventory/functions/fnc_filterUniforms.sqf b/addons/inventory/functions/fnc_filterUniforms.sqf index dc7d4e9287..b627475038 100644 --- a/addons/inventory/functions/fnc_filterUniforms.sqf +++ b/addons/inventory/functions/fnc_filterUniforms.sqf @@ -10,7 +10,7 @@ * Item should appear in this list? * * Example: - * [CONFIG] call ACE_inventory_fnc_filterUniforms + * [CONFIG] call ace_inventory_fnc_filterUniforms * * Public: No */ diff --git a/addons/inventory/functions/fnc_filterVests.sqf b/addons/inventory/functions/fnc_filterVests.sqf index 439d826390..2bb2af9ef4 100644 --- a/addons/inventory/functions/fnc_filterVests.sqf +++ b/addons/inventory/functions/fnc_filterVests.sqf @@ -10,7 +10,7 @@ * Item should appear in this list? * * Example: - * [CONFIG] call ACE_inventory_fnc_filterVests + * [CONFIG] call ace_inventory_fnc_filterVests * * Public: No */ diff --git a/addons/inventory/functions/fnc_filterWeapons.sqf b/addons/inventory/functions/fnc_filterWeapons.sqf index 2addf83665..db4d402099 100644 --- a/addons/inventory/functions/fnc_filterWeapons.sqf +++ b/addons/inventory/functions/fnc_filterWeapons.sqf @@ -10,7 +10,7 @@ * Item should appear in this list? * * Example: - * [CONFIG] call ACE_inventory_fnc_filterWeapons + * [CONFIG] call ace_inventory_fnc_filterWeapons * * Public: No */ diff --git a/addons/inventory/functions/fnc_forceItemListUpdate.sqf b/addons/inventory/functions/fnc_forceItemListUpdate.sqf index 165bff1e57..fb8f09b5c8 100644 --- a/addons/inventory/functions/fnc_forceItemListUpdate.sqf +++ b/addons/inventory/functions/fnc_forceItemListUpdate.sqf @@ -10,31 +10,38 @@ * None * * Example: - * [DISPLAY] call ACE_inventory_fnc_forceitemListUpdate + * [DISPLAY] call ace_inventory_fnc_forceItemListUpdate * * Public: No */ disableSerialization; + params ["_display"]; -private _index = GVAR(selectedFilterIndex); +// Get the appropriate filter +private _filterFunction = missionNamespace getVariable [(_display displayCtrl IDC_FILTERLISTS) lbData GVAR(selectedFilterIndex), ""]; + +if !(_filterFunction isEqualType {}) exitWith {}; + private _itemList = _display call FUNC(currentItemListBox); -private _filterFunction = missionNamespace getVariable ((_display displayCtrl IDC_FILTERLISTS) lbData _index); +private _itemKeyCache = uiNamespace getVariable QGVAR(itemKeyCache); +private _backpackKeyCache = uiNamespace getVariable QGVAR(backpackKeyCache); +private _config = configNull; -if (_filterFunction isEqualType {}) then { - private _i = 0; +for "_i" from (lbSize _itemList) to 0 step -1 do { + // All items have their classnames in lbData, except backpacks + _className = _itemList lbData _i; - while {_i < lbSize _itemList} do { - private _config = GVAR(ItemKeyNamespace) getVariable format ["%1:%2", _itemList lbText _i, _itemList lbPicture _i]; + _config = if (_className != "") then { + _itemKeyCache get _className + } else { + // Backpack are gotten with their display name and inventory icon + _backpackKeyCache get format ["%1:%2", _itemList lbText _i, _itemList lbPicture _i] + }; - if (!isNil "_config" && {!(_config call _filterFunction)}) then { - _itemList lbDelete _i; - - // in case the filter function returns nil. Otherwise could lock up the game. - _i = _i - 1; - }; - - _i = _i + 1; + // If item is valid and doesn't match the current filter, remove it + if (!isNil "_config" && {!(_config call _filterFunction)}) then { + _itemList lbDelete _i; }; }; diff --git a/addons/inventory/functions/fnc_inventoryDisplayLoad.sqf b/addons/inventory/functions/fnc_inventoryDisplayLoad.sqf index 1411ec6cc8..3e70bbd8d9 100644 --- a/addons/inventory/functions/fnc_inventoryDisplayLoad.sqf +++ b/addons/inventory/functions/fnc_inventoryDisplayLoad.sqf @@ -10,71 +10,60 @@ * None * * Example: - * [DISPLAY] call ACE_inventory_fnc_inventoryDisplayLoad + * [DISPLAY] call ace_inventory_fnc_inventoryDisplayLoad * * Public: No */ disableSerialization; + params ["_display"]; private _filter = _display displayCtrl IDC_FILTERLISTS; -// engine defined behaviour is the following: +// Engine defined behaviour is the following: // lb value, data and text don't matter, only the index. -// the first three indecies are hard coded: 0 - weapons , 1 - magazines, 2 - items -// all of them show backpacks, because BI -// all other indecies show everything, so all we have to do is delete stuff we dont like -_filter ctrlAddEventHandler ["LBSelChanged", {_this call FUNC(onLBSelChanged)}]; +// The first three indecies are hard coded: 0 - weapons , 1 - magazines, 2 - items +// All of them show backpacks, because BI +// All other indecies show everything, so all we have to do is delete stuff we don't like +_filter ctrlAddEventHandler ["LBSelChanged", LINKFUNC(onLBSelChanged)]; -// have to add these a frame later, because this event happens before the engine adds the default filters +// Have to add these a frame later, because this event happens before the engine adds the default filters [{ disableSerialization; + params ["_filter"]; - // remove "All", so we can push it to the back later. - // to keep localization we can keep the lbText (displayed name). + // Remove "All", so we can push it to the back later + // To keep localization we keep the lbText (displayed name) private _index = lbSize _filter - 1; private _nameAll = _filter lbText _index; _filter lbDelete _index; - // add additional filter functions to the default filters. These remove backpacks etc. + // Add additional filter functions to the default filters. These remove backpacks etc. _filter lbSetData [0, QFUNC(filterWeapons)]; _filter lbSetData [1, QFUNC(filterMagazines)]; _filter lbSetData [2, QFUNC(filterItems)]; - // add our custom filters + // Add our custom filters { _x params ["_name", "_fncName"]; _index = _filter lbAdd _name; _filter lbSetData [_index, _fncName]; + } forEach GVAR(customFilters); - false - } count GVAR(customFilters); - - // readd "All" filter to last position and select it + // Readd "All" filter to last position and select it _index = _filter lbAdd _nameAll; _filter lbSetCurSel _index; -}, [_filter]] call CBA_fnc_execNextFrame; +}, _filter] call CBA_fnc_execNextFrame; -// monitor changes that can happen and force our update +// Monitor changes that can happen and force our update private _dummyControl = _display ctrlCreate ["RscMapControl", -1]; -_dummyControl ctrlSetPosition [0,0,0,0]; +_dummyControl ctrlSetPosition [0, 0, 0, 0]; _dummyControl ctrlCommit 0; _dummyControl ctrlAddEventHandler ["Draw", { - disableSerialization; - params ["_dummyControl"]; - - private _display = ctrlParent _dummyControl; - - private _itemList = _display call FUNC(currentItemListBox); - - // monitoring is done by setting a lb value. These are unused here and are reset every time the list box updates. - if (_itemList lbValue 0 != DUMMY_VALUE) then { - _display call FUNC(forceItemListUpdate); - _itemList lbSetValue [0, DUMMY_VALUE]; - }; + (ctrlParent (_this select 0)) call FUNC(forceItemListUpdate); }]; diff --git a/addons/inventory/functions/fnc_onLBSelChanged.sqf b/addons/inventory/functions/fnc_onLBSelChanged.sqf index 6fbc7020c0..a2316dc4b6 100644 --- a/addons/inventory/functions/fnc_onLBSelChanged.sqf +++ b/addons/inventory/functions/fnc_onLBSelChanged.sqf @@ -12,19 +12,16 @@ * None * * Example: - * [CONTROL, 5] call ACE_inventory_fnc_onLBSelChanged + * [CONTROL, 5] call ace_inventory_fnc_onLBSelChanged * * Public: No */ disableSerialization; + params ["_filter", "_index"]; GVAR(selectedFilterIndex) = _index; -[{ - disableSerialization; - params ["_display"]; - - [_display] call FUNC(forceItemListUpdate); -}, [ctrlParent _filter]] call CBA_fnc_execNextFrame; +// Force update +[LINKFUNC(forceItemListUpdate), ctrlParent _filter] call CBA_fnc_execNextFrame; diff --git a/addons/inventory/initSettings.sqf b/addons/inventory/initSettings.inc.sqf similarity index 100% rename from addons/inventory/initSettings.sqf rename to addons/inventory/initSettings.inc.sqf diff --git a/addons/inventory/stringtable.xml b/addons/inventory/stringtable.xml index 026e23476c..a020e96048 100644 --- a/addons/inventory/stringtable.xml +++ b/addons/inventory/stringtable.xml @@ -141,7 +141,7 @@ Médical Médico Медицина - 医療 + 医療品 의료 医疗 醫療 diff --git a/addons/irlight/stringtable.xml b/addons/irlight/stringtable.xml index 2167aee5d3..ac874759a4 100644 --- a/addons/irlight/stringtable.xml +++ b/addons/irlight/stringtable.xml @@ -4,86 +4,142 @@ DBAL-A3 (red) DBAL-A3 (rot) + DBAL-A3 (Rosso) DBAL-A3 (czerwony) DBAL-A3 (빨강) + DBAL-A3 (rouge) + DBAL-A3 (vermelho) + DBAL-A3 (赤) DBAL-A3 (green) DBAL-A3 (grün) + DBAL-A3 (Verde) DBAL-A3 (zielony) DBAL-A3 (녹색) + DBAL-A3 (vert) + DBAL-A3 (verde) + DBAL-A3 (緑) <t color='#9cf953'>Use: </t>Turn Laser ON/OFF<br>Double click to switch mode <t color='#9cf953'>Benutzen: </t>Laser EIN/AUS<br>Doppelklick um Modus zu wechseln + <t color='#9cf953'>Usa: </t>Laser ACCESO/SPENTO<br>Doppio Click per cambiare modalità <t color='#9cf953'>Użycie: </t>Laser WŁ/WYŁ<br>Kliknij dwukrotnie, aby zmienić tryb <t color='#9cf953'>사용: </t>레이저 켜기/끄기<br>터블 클릭으로 모드 전환 + <t color='#9cf953'>Utilisation: </t>Allumer/Eteindre le laser<br>Double clic pour changer de mode + <t color='#9cf953'>Uso: </t>Ligar/Desligar Laser<br>Duplo clique para mudar o modo + <t color='#9cf953'>使用方法: </t>レーザーのオン/オフ切り替え<br>ダブルクリックでモード切り替え Dual Beam Aiming Laser Doppelstrahllaservisier + Puntatore Laser Multiuso Laser Celowniczy z Podwójną Wiązką 이중 빔 조준 레이저 + Viseur laser à double faisceau + Laser de Pontaria de Duplo Feixe + 複合ビーム照準レーザー Visible Laser Sichtbarer Laser + Laser Visibile Laser Widzialny 가시 레이저 + Laser visible + Laser Visível + 可視光レーザー IR Laser IR-Laser + Laser IR Laser IR 적외선 레이저 + Laser IR + Laser IR + IRレーザー IR Illuminator IR-Taschenlampe + Illuminatore IR Iluminator IR 적외선 조명 + Illuminateur IR + Iluminador IR + IRイルミネーター IR Laser and Illuminator IR-Laser und -Licht + Laser e Illuminatore IR Laser IR i Iluminator 적외선 레이저와 조명 + Illuminateur et laser IR + Laser e Iluminador IR + IRレーザーとイルミネーター Wide Beam Breiter Lichtstrahl + Fascio Ampio Szeroka Wiązka 넓은 빔 + Faisceau large + Feixe Largo + 広角ビーム Medium Beam Mittlerer Lichtstrahl + Fascio Intermedio Średnia Wiązka 중간 빔 + Faisceau moyen + Feixe Médio + 標準ビーム Narrow Beam Schmaler Lichtstrahl + Fascio Stretto Wąska Wiązka 좁은 빔 + Faisceau étroit + Feixe Estreito + 狭角ビーム <t color='#9cf953'>Use: </t>Turn Light ON/OFF<br>Double click to switch mode <t color='#9cf953'>Benutzen: </t>Licht EIN/AUS<br>Doppelklick um Modus zu wechseln + <t color='#9cf953'>Usa: </t>Luce ACCESA/SPENTA<br>Doppio Click per cambiare modalità <t color='#9cf953'>Użycie: </t>Iluminator WŁ/WYŁ<br>Kliknij dwukrotnie, aby zmienić tryb <t color='#9cf953'>사용: </t>조명 켜기/끄기<br>더블 클릭으로 모드 전환 + <t color='#9cf953'>Utilisation: </t>Allumer/Eteindre la lumière<br>Double clic pour changer de mode + <t color='#9cf953'>Uso: </t>Ligar/Desligar Iluminador<br>Duplo clique para mudar o modo + <t color='#9cf953'>使用方法: </t>ライトのオン/オフ<br>ダブルクリックでモード切り替え Special Purpose IR LED Illuminator Infrarot LED Taschenlampe + Torcia LED IR Iluminator IR LED Specjalnego Przeznaczenia 특수목적 적외선 LED 조명 + Illuminateur LED IR à usage spécial + Iluminador LED IR de Uso Especial + 特殊用途のIR LEDイルミネーター Illuminator / Laser Momentary Switch Licht / Laser Tastschalter + Accensione momentanea Laser/Illuminatore Przełącznik Chwilowy Iluminator / Laser 조명/레이저 빠르게 스위치 + Commutateur temporaire illuminateur/laser + Interruptor Momentâneo Iluminador/Laser + イルミネーター/レーザーモーメンタリースイッチ diff --git a/addons/javelin/RscInGameUI.hpp b/addons/javelin/RscInGameUI.hpp index 4a2a567e22..ce777c2047 100644 --- a/addons/javelin/RscInGameUI.hpp +++ b/addons/javelin/RscInGameUI.hpp @@ -14,7 +14,7 @@ class RscInGameUI { onLoad = QUOTE(with uiNamespace do {ACE_RscOptics_javelin = _this select 0;};); class GVAR(mapHelper): RscMapControl { - onDraw = QUOTE(_this call FUNC(mapHelperDraw);); + onDraw = QUOTE(_this call FUNC(mapHelperDraw)); x = -10; y = -10; w = 0; diff --git a/addons/javelin/XEH_clientInit.sqf b/addons/javelin/XEH_clientInit.sqf index 66d645968f..ecd80fb0ce 100644 --- a/addons/javelin/XEH_clientInit.sqf +++ b/addons/javelin/XEH_clientInit.sqf @@ -3,4 +3,4 @@ if (!hasInterface) exitWith {}; -#include "initKeybinds.sqf" +#include "initKeybinds.inc.sqf" diff --git a/addons/javelin/initKeybinds.sqf b/addons/javelin/initKeybinds.inc.sqf similarity index 100% rename from addons/javelin/initKeybinds.sqf rename to addons/javelin/initKeybinds.inc.sqf diff --git a/addons/javelin/stringtable.xml b/addons/javelin/stringtable.xml index 0054cf4f03..ab1ff30a10 100644 --- a/addons/javelin/stringtable.xml +++ b/addons/javelin/stringtable.xml @@ -11,7 +11,7 @@ Célpontra állás (Lenyomva tartott) Aggangia il bersaglio Fijar objetivo (Mantener) - Travar Alvo(Segurar) + Travar Alvo (Segurar) 目標を捕捉 (長押し) 표적 획득 (누르기) 锁定目标(按住) diff --git a/addons/kestrel4500/XEH_postInit.sqf b/addons/kestrel4500/XEH_postInit.sqf index 033dbafbe8..12688a6adf 100644 --- a/addons/kestrel4500/XEH_postInit.sqf +++ b/addons/kestrel4500/XEH_postInit.sqf @@ -1,6 +1,6 @@ #include "script_component.hpp" -#include "initKeybinds.sqf" +#include "initKeybinds.inc.sqf" GVAR(Menus) = ["Date", "Direction", "Wind SPD m/s", "CROSSWIND m/s", "HEADWIND m/s", "TEMP °C", "CHILL °C", "HUMIDITY %", "HEAT INDEX °C", "DEW POINT °C", "WET BULB °C", "BARO hPA", "ALTITUDE m", "DENS ALT m", "User Screen 1", "User Screen 2"]; diff --git a/addons/kestrel4500/functions/fnc_updateDisplay.sqf b/addons/kestrel4500/functions/fnc_updateDisplay.sqf index 1f55d8c400..41acd52f94 100644 --- a/addons/kestrel4500/functions/fnc_updateDisplay.sqf +++ b/addons/kestrel4500/functions/fnc_updateDisplay.sqf @@ -10,6 +10,7 @@ * None * * Example: + * None * * Public: No */ diff --git a/addons/kestrel4500/functions/fnc_updateImpellerState.sqf b/addons/kestrel4500/functions/fnc_updateImpellerState.sqf index 36ffcd6599..b6e8191299 100644 --- a/addons/kestrel4500/functions/fnc_updateImpellerState.sqf +++ b/addons/kestrel4500/functions/fnc_updateImpellerState.sqf @@ -10,6 +10,7 @@ * None * * Example: + * call ace_kestrel4500_fnc_updateImpellerState * * Public: No */ diff --git a/addons/kestrel4500/initKeybinds.sqf b/addons/kestrel4500/initKeybinds.inc.sqf similarity index 100% rename from addons/kestrel4500/initKeybinds.sqf rename to addons/kestrel4500/initKeybinds.inc.sqf diff --git a/addons/kestrel4500/stringtable.xml b/addons/kestrel4500/stringtable.xml index f6580aa507..50bf366fc0 100644 --- a/addons/kestrel4500/stringtable.xml +++ b/addons/kestrel4500/stringtable.xml @@ -29,7 +29,7 @@ Kestrel 4500 Medidor Balístico Ativo Kestrel 4500 kézi szél-és időjárásmérő Příruční meteostanice Kestrel 4500 - ケストレル 4500 携帯型風速計 + ケストレル 4500 携帯気象計 케스트렐 4500 휴대형 기상 관측기 猎隼4500 掌上型天气追踪仪 獵隼4500掌上型天氣追蹤儀 @@ -91,7 +91,7 @@ Otwórz Kestrel 4500 Открыть Kestrel 4500NV Ouvrir le Kestrel 4500 - Accendi Kestrel 4500 + Apri Kestrel 4500 Abrir Kestrel 4500 Kestrel 4500 öffnen Kestrel 4500 elővétele diff --git a/addons/killtracker/XEH_postInit.sqf b/addons/killtracker/XEH_postInit.sqf index 2f75baa929..9cef418ece 100644 --- a/addons/killtracker/XEH_postInit.sqf +++ b/addons/killtracker/XEH_postInit.sqf @@ -19,7 +19,7 @@ if ((getText (missionconfigfile >> "CfgDebriefingSections" >> QUOTE(XADDON) >> "variable")) != QXGVAR(outputText)) exitWith { TRACE_1("no mission debriefing config",_this); }; -if (!(["ACE_Medical"] call EFUNC(common,isModLoaded))) exitWith { +if (!(["ace_medical"] call EFUNC(common,isModLoaded))) exitWith { WARNING("No ACE-Medical"); XGVAR(outputText) = "No ACE-Medical"; }; diff --git a/addons/killtracker/stringtable.xml b/addons/killtracker/stringtable.xml index 8ea5a99243..4aa7308924 100644 --- a/addons/killtracker/stringtable.xml +++ b/addons/killtracker/stringtable.xml @@ -5,11 +5,14 @@ ACE Killed Events ACE キルトラッカー ACE Abgeschossene Ereignisse + ACE Eventi di Morte ACE Licznik Zabójstw ACE 击杀事件 ACE 사살 이벤트 ACE Счётчик убийств ACE Eventos de Muertes + ACE Evénements Morts + ACE Contagem de Abates Total Kills: @@ -18,9 +21,12 @@ Toplam Öldürme: 総キル: Gesammte Abschüsse: + Uccisioni Totali: 总击杀数: 총 사살수: Muertes totales: + Total de morts : + Abates totais: Kill: %1 %2 @@ -29,9 +35,12 @@ Öldürülen: %1 %2 キル: %1 %2 Abschuss: %1 %2 + Uccisione: %1 %2 击杀:%1 %2 사살: %1 %2 Muertes: %1 %2 + Meurtre : %1 %2 + Abate: %1 %2 Killer: %1 %2 @@ -40,9 +49,12 @@ Öldüren: %1 %2 キラー: %1 %2 Täter: %1 %2 + Uccisore: %1 %2 击杀者:%1 %2 사살자: %1 %2 Asesino: %1 %2 + Tueur : %1 %2 + Assassino: %1 %2 Vehicle: %1 @@ -50,10 +62,13 @@ Pojazd: %1 Araç :%1 車両: %1 - Fahrzeuge %! + Fahrzeuge: %1 + Veicoli: %1 载具:%1 차량: %1 Vehículo: %1 + Véhicule : %1 + Veículo: %1 Friendly Fire diff --git a/addons/laser/XEH_postInit.sqf b/addons/laser/XEH_postInit.sqf index 923c523424..768752bee2 100644 --- a/addons/laser/XEH_postInit.sqf +++ b/addons/laser/XEH_postInit.sqf @@ -2,7 +2,7 @@ #include "\a3\ui_f\hpp\defineDIKCodes.inc" if (hasInterface) then { -#include "initKeybinds.sqf" +#include "initKeybinds.inc.sqf" GVAR(pfID) = -1; @@ -58,15 +58,33 @@ if (hasInterface) then { }; }] call CBA_fnc_addEventHandler; -["AllVehicles", "init", { +["Air", "init", { params ["_unit"]; if (hasPilotCamera _unit) then { + if (!alive _unit) exitWith {}; + // some helicopters just have a static downward camera for cargo loading + if ((getNumber ((configOf _unit) >> "pilotCamera" >> "controllable")) == 0) exitWith {}; + _unit setVariable [QGVAR(hasLaserSpotTracker), true]; _unit setVariable [QGVAR(laserSpotTrackerOn), false]; - private _actionOff = ["LSTOff", localize LSTRING(LSTOff), "", {[_this select 0] call FUNC(toggleLST)}, {(_this select 0) getVariable [QGVAR(laserSpotTrackerOn), false]}] call ace_interact_menu_fnc_createAction; - [_unit, 1, ["ACE_SelfActions"], _actionOff] call ace_interact_menu_fnc_addActionToObject; - private _actionOn = ["LSTOn", localize LSTRING(LSTOn), "", {[_this select 0] call FUNC(toggleLST)}, {!((_this select 0) getVariable [QGVAR(laserSpotTrackerOn), false])}] call ace_interact_menu_fnc_createAction; - [_unit, 1, ["ACE_SelfActions"], _actionOn] call ace_interact_menu_fnc_addActionToObject; + + private _condition = { + //IGNORE_PRIVATE_WARNING ["_target", "_player"]; + (_player == driver _target) + && {(_target getVariable [QGVAR(laserSpotTrackerOn), false])} + && {[_player, _target, []] call EFUNC(common,canInteractWith)} + }; + private _actionOff = ["LSTOff", localize LSTRING(LSTOff), "", {[_this select 0] call FUNC(toggleLST)}, _condition] call EFUNC(interact_menu,createAction); + [_unit, 1, ["ACE_SelfActions"], _actionOff] call EFUNC(interact_menu,addActionToObject); + + private _condition = { + //IGNORE_PRIVATE_WARNING ["_target", "_player"]; + (_player == driver _target) + && {!(_target getVariable [QGVAR(laserSpotTrackerOn), false])} + && {[_player, _target, []] call EFUNC(common,canInteractWith)} + }; + private _actionOn = ["LSTOn", localize LSTRING(LSTOn), "", {[_this select 0] call FUNC(toggleLST)}, _condition] call EFUNC(interact_menu,createAction); + [_unit, 1, ["ACE_SelfActions"], _actionOn] call EFUNC(interact_menu,addActionToObject); }; }, true, [], true] call CBA_fnc_addClassEventHandler; diff --git a/addons/laser/XEH_preInit.sqf b/addons/laser/XEH_preInit.sqf index b5ce16a3b0..00049594c6 100644 --- a/addons/laser/XEH_preInit.sqf +++ b/addons/laser/XEH_preInit.sqf @@ -7,14 +7,14 @@ PREP_RECOMPILE_START; PREP_RECOMPILE_END; // Laser default variables -ACE_DEFAULT_LASER_CODE = 1688; -ACE_DEFAULT_LASER_WAVELENGTH = 1064; +ACE_DEFAULT_LASER_CODE = 1111; +ACE_DEFAULT_LASER_WAVELENGTH = 1550; ACE_DEFAULT_LASER_BEAMSPREAD = 1; GVAR(laserEmitters) = createHashMap; GVAR(trackedLaserTargets) = []; GVAR(pfehID) = -1; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" ADDON = true; diff --git a/addons/laser/functions/fnc_dev_drawVisibleLaserTargets.sqf b/addons/laser/functions/fnc_dev_drawVisibleLaserTargets.sqf index 7f05f38bbe..4c57a61325 100644 --- a/addons/laser/functions/fnc_dev_drawVisibleLaserTargets.sqf +++ b/addons/laser/functions/fnc_dev_drawVisibleLaserTargets.sqf @@ -38,7 +38,7 @@ private _testSeekerDir = vectorDirVisual _seekerVehicle; drawLine3D [ASLtoAGL _testSeekerPosASL, ASLtoAGL _resultPos, [0,0,1,1]]; drawIcon3D ["\a3\ui_f\data\IGUI\Cfg\Cursors\select_target_ca.paa", [0,0,1,1], (ASLtoAGL _resultPos), 1.5, 1.5, 45, format ["%1 from %2", _code, _results select 1], 0.5, 0.025, "TahomaB"]; }; -} forEach [1111, ACE_DEFAULT_LASER_CODE]; // Scan at codes 1111 and 1688 +} forEach [ACE_DEFAULT_LASER_CODE, 1688]; // Scan at codes 1111 and 1688 // Draw all lasers diff --git a/addons/laser/functions/fnc_laserOn.sqf b/addons/laser/functions/fnc_laserOn.sqf index 9af89ce91b..6e9ce7b086 100644 --- a/addons/laser/functions/fnc_laserOn.sqf +++ b/addons/laser/functions/fnc_laserOn.sqf @@ -7,7 +7,7 @@ * 0: Emitter * 1: Owner * 2: Method, can be code, which emitter and owner are passed to, a string function name, an array with a position memory point and weapon name, or an array with a position memory point, a vector begining memory point, and vector ending memory point. - * 3: Wavelength (1064nm is typical) + * 3: Wavelength (1550nm is typical) * 4: Laser code * 5: Beam divergence (in mils off beam center) * 6: Method Args (default: nil) @@ -16,8 +16,8 @@ * UUID for sending to laserOff function * * Example: - * [hmg, hmg, [[0,0,1], "HMG_static"], 1064, 1688, 1] call ace_laser_fnc_laserOn - * [player, player, "ace_laser_fnc_findLaserSource", 1064, 1688, 1, ["pilot"]] call ace_laser_fnc_laserOn + * [hmg, hmg, [[0,0,1], "HMG_static"], 1550, 1111, 1] call ace_laser_fnc_laserOn + * [player, player, "ace_laser_fnc_findLaserSource", 1550, 1111, 1, ["pilot"]] call ace_laser_fnc_laserOn * * Public: No */ diff --git a/addons/laser/functions/fnc_seekerFindLaserSpot.sqf b/addons/laser/functions/fnc_seekerFindLaserSpot.sqf index 5c5fbe3aa5..9d3e2d6fa1 100644 --- a/addons/laser/functions/fnc_seekerFindLaserSpot.sqf +++ b/addons/laser/functions/fnc_seekerFindLaserSpot.sqf @@ -9,7 +9,7 @@ * 1: Direction vector (will be normalized) * 2: Seeker FOV in degrees * 3: Seeker max distance in meters - * 4: Seeker wavelength sensitivity range, [1064,1064] is common + * 4: Seeker wavelength sensitivity range, [1550,1550] is common * 5: Seeker laser code. * 6: Ignore 1 (e.g. Player's vehicle) (default: objNull) * 7: Ignore 2 (e.g. Attached object) (default: objNull) @@ -19,7 +19,7 @@ * [Strongest compatible laser spot ASL pos, owner object] Nil array values if nothing found * * Example: - * [getPosASL player, [0,1,0], 90, [1064, 1064], 1688, player] call ace_laser_fnc_seekerFindLaserSpot + * [getPosASL player, [0,1,0], 90, [1550, 1550], 1111, player] call ace_laser_fnc_seekerFindLaserSpot * * Public: No */ diff --git a/addons/laser/initKeybinds.sqf b/addons/laser/initKeybinds.inc.sqf similarity index 100% rename from addons/laser/initKeybinds.sqf rename to addons/laser/initKeybinds.inc.sqf diff --git a/addons/laser/initSettings.sqf b/addons/laser/initSettings.inc.sqf similarity index 100% rename from addons/laser/initSettings.sqf rename to addons/laser/initSettings.inc.sqf diff --git a/addons/laser/stringtable.xml b/addons/laser/stringtable.xml index 5428315435..7c07582725 100644 --- a/addons/laser/stringtable.xml +++ b/addons/laser/stringtable.xml @@ -44,8 +44,8 @@ Lézerkód Código del láser Laser kód - Codice laser - レーザ コード + Codice Laser + レーザー コード 레이저 코드 激光码 雷射碼 @@ -61,8 +61,8 @@ Lézer - kódciklus növelése - XXX# Láser - Aumentar código - XXX# Laser - Kód +XXX# - Laser - Cambia codice - XXX# - レーザ - コードの数値を増やす - XXX# + Laser - Cicla Codice - XXX# + レーザー - コードの数値を増やす - XXX# 레이저 - 코드 순환 위 - XXX# 激光—循环切换激光码 上 - XXX# 雷射 - 循環切換雷射碼 上 - XXX# @@ -78,8 +78,8 @@ Lézer - kódciklus növelése - XX#X Láser - Aumentar código - 1##X Laser - Kód +XX#X - Laser - Cambia codice - XX#X - レーザ - コードの数値を増やす - XX#X + Laser - Cicla Codice - XX#X + レーザー - コードの数値を増やす - XX#X 레이저 - 코드 순환 위 - 1##X 激光—循环切换激光码 上 - XX#X 雷射 - 循環切換雷射碼 上 - XX#X @@ -95,8 +95,8 @@ Lézer - kódciklus növelése - X#XX Láser - Aumentar código - X#XX Laser - Kód +X#XX - Laser - Cambia codice - X#XX - レーザ - コードの数値を増やす - X#XX + Laser - Cicla Codice - X#XX + レーザー - コードの数値を増やす - X#XX 레이저 - 코드 순환 위 - X#XX 激光—循环切换激光码 上 - X#XX 雷射 - 循環切換雷射碼 上 - X#XX @@ -112,8 +112,8 @@ Lézer - kódciklus csökkentése Láser - Reducir código Laser - Kód - - Laser - Cambia codice - - レーザ - コードの数値を減らす + Laser - Cicla Codice giù + レーザー - コードの数値を減らす 레이저 - 코드 순환 아래 激光—循环切换激光码 下 雷射 - 循環切換雷射碼 下 @@ -124,14 +124,20 @@ レーザースポットトラッカー: オン Laserowe Śledzenie Punktu: Wł. Laserziel Verfolgung: An + Tracciamento Designazioni Laser: Attivato 레이저 스팟 추적기: 켬 + Traqueur laser : activé + Rastreador a Laser: Ligado Laser Spot Tracker: Off レーザースポットトラッカー: オフ Laserowe Śledzenie Punktu: Wył. Laserziel Verfolgung: Aus + Tracciamento Designazioni Laser: Disattivato 레이저 스팟 추적기: 끔 + Traqueur laser : désactivé + Rastreador a Laser: Desligado Draw Laser on Map @@ -142,6 +148,9 @@ Отображать лазер на карте Dibujar láser en mapa Laser auf Karte zeichnen + Mostra Laser su Mappa + Dessiner le laser sur la carte + Desenhar Laser no Mapa Active laser designator's position will be drawn on the map @@ -152,6 +161,9 @@ Точка, куда светит активный лазер, будет указана на карте La posición del designador láser activo será dibujada en el mapa Die Position des aktiven Lasermarkierers wird auf der Karte eingezeichnet + Mostra la posizione del proprio designatore laser sulla mappa + Active la position du désignateur laser sur la carte. + A posição do designador laser ativo será desenhada no mapa diff --git a/addons/laserpointer/stringtable.xml b/addons/laserpointer/stringtable.xml index fb93914b44..8eead72eca 100644 --- a/addons/laserpointer/stringtable.xml +++ b/addons/laserpointer/stringtable.xml @@ -12,7 +12,7 @@ Puntero láser Puntatore laser Laser - レーザ ポインタ + レーザー ポインター 레이저 지시기 激光指示器 雷射指示器 @@ -29,7 +29,7 @@ Puntero láser (rojo) Puntatore laser (rosso) Laser (vermelho) - レーザ ポインタ (赤) + レーザー ポインター (赤) 레이저 지시기 (빨강) 激光指示器(红色) 雷射指示器 (紅色) @@ -46,7 +46,7 @@ Puntero láser (verde) Puntatore laser (verde) Laser (verde) - レーザ ポインタ (緑) + レーザー ポインター (緑) 레이저 지시기 (초록) 激光指示器(绿色) 雷射指示器 (綠色) @@ -74,13 +74,13 @@ <t color='#9cf953'>Použití: </t>Zapnout/vypnout laser <t color='#9cf953'>Utilisation : </t>Allumer/Éteindre le laser <t color='#9cf953'>Benutzen: </t>Laser EIN/AUS - <t color='#9cf953'>Uso: </t>Laser ON/OFF + <t color='#9cf953'>Utilizzo: </t>Laser ACCESO/SPENTO <t color='#9cf953'>Użyj: </t>wł./wył. laser <t color='#9cf953'>Uso: </t>Ativar/Desativar laser <t color='#9cf953'>Использовать: </t>ВКЛ/ВЫКЛ лазер <t color='#9cf953'>Usar: </t>Encender/Apagar láser <t color='#9cf953'>Használat: </t>Lézer BE/KI kapcsolása - <t color='#9cf953'>つかう: </t>レーザの起動/停止 + <t color='#9cf953'>つかう: </t>レーザーの起動/停止 <t color='#9cf953'>사용키: </t>레이저 켜기/끄기 <t color='#9cf953'>使用:</t>激光开启/关闭 <t color='#9cf953'>使用: </t>雷射開啟/關閉 @@ -114,7 +114,7 @@ Infravörös Lézer IR Laser Laser IV - 赤外線レーザ + 赤外線レーザー 적외선 레이저 红外线激光 紅外線雷射 @@ -126,12 +126,12 @@ Przełącz Laser / Laser IR Изменить режим Лазер / ИК-лазер Alterner laser/laser IR - Alterna Laser / IR Laser + Alterna Laser / Laser IR Cambiar láser / Láser IR Lézer / Infravörös Lézer váltása Přepnout Laser / Infračervený Laser Alternar entre Laser / Laser IV - レーザ/赤外線レーザを切り替える + レーザー/赤外線レーザーを切り替える 가시광/적외선 레이저 전환 切换激光/红外线激光 切換雷射/紅外線雷射 diff --git a/addons/logistics_rope/CfgWeapons.hpp b/addons/logistics_rope/CfgWeapons.hpp index c5f1b384a2..d8789c6407 100644 --- a/addons/logistics_rope/CfgWeapons.hpp +++ b/addons/logistics_rope/CfgWeapons.hpp @@ -3,7 +3,7 @@ class CfgWeapons { class ACE_ItemCore; class ACE_ropeBase: ACE_ItemCore { scope = 1; - picture = QPATHTOF(data\m_rope_ca); + picture = QPATHTOF(data\m_rope_ca.paa); // model = "\A3\Structures_F_Heli\Items\Tools\Rope_01_F.p3d"; // model is Locked to Helicopter DLC descriptionShort = CSTRING(descriptionShort); }; diff --git a/addons/logistics_rope/stringtable.xml b/addons/logistics_rope/stringtable.xml index ff4624d027..b292ed9499 100644 --- a/addons/logistics_rope/stringtable.xml +++ b/addons/logistics_rope/stringtable.xml @@ -7,10 +7,12 @@ Une corde en fibres torsadées. Généralement utilisée pour la descente en rappel ou le remorquage. Витой канат. Обычно используется для спуска или буксирования. Ein verdrehtes Geflecht aus Fasern. Wird normalerweise zum Abseilen oder Abschleppen verwendet. + Una Corda composta da fibre intrecciate. Usata per Fastroping o trainare veicoli. Lina skręcona z włókien. Zwykle używana do zjazdów lub holowania. 编织绳。通常用于索降和牵引拖曳。 꼬아진 섬유입니다. 주로 레펠이나 견인에 사용됩니다. Malla trenzada de fibras. Normalmente utilizada para descolgarse desde ella o remolcar. + Uma trança torcida de fibras. Normalmente usada para rapel ou reboque. Rope 3.2 meters diff --git a/addons/logistics_uavbattery/stringtable.xml b/addons/logistics_uavbattery/stringtable.xml index 5ca12e7d4e..9671f451b7 100644 --- a/addons/logistics_uavbattery/stringtable.xml +++ b/addons/logistics_uavbattery/stringtable.xml @@ -10,7 +10,7 @@ A drón fel van töltve Dron je nabitý O VANT está cheio - Il drone è pieno + Il drone è carico БПЛА полностью заряжен ドローンは充電完了 무인기 충전 완료 @@ -27,9 +27,9 @@ Szükséged van egy UAV akkumulátorra Potřebuješ UAV baterii Você precisa de uma bateria para VANTs - Hai bisogno di una Batteria UAV + Ti serve una Batteria UAV Требуется аккумулятор для БПЛА - UAV バッテリが必要です + UAV バッテリーが必要です 무인기 배터리가 필요합니다 你需要一个无人机电池 你需要一個無人載具電池 @@ -63,7 +63,7 @@ Bateria para VANT Batteria UAV Аккумулятор БПЛА - UAV バッテリ + UAV バッテリー 무인기 배터리 无人机电池 無人載具電池 @@ -78,7 +78,7 @@ Hordozható UAV-k feltöltéséhez való akkumulátor Používané k dobíjení UAV Usada para reabastecer o VANT - Usata per ricaricare la Batteria dell'UAV + Usata per ricaricare le batterie di UAV portabili Используется для зарядки переносных БПЛА 運んでいる UAV を充電に使う 무인기를 재충전 할 때 씁니다. @@ -95,7 +95,7 @@ Akku feltöltése... Dobíjení... Recarregando... - In ricarica... + Ricaricando... Заряжается... 充電しています・・・ 正在充电... diff --git a/addons/logistics_wirecutter/stringtable.xml b/addons/logistics_wirecutter/stringtable.xml index 5e71db11b3..224d4239be 100644 --- a/addons/logistics_wirecutter/stringtable.xml +++ b/addons/logistics_wirecutter/stringtable.xml @@ -27,7 +27,7 @@ Służą do cięcia drutu i płotów Pince coupante Drótok, huzalok, és kábelek vágására alkalmas olló. - Tronchese + Tronchese per tagliare filo di metallo. Cortador de Arame ワイヤーカッター 절단기 diff --git a/addons/magazinerepack/XEH_preInit.sqf b/addons/magazinerepack/XEH_preInit.sqf index 9361d05015..894773534a 100644 --- a/addons/magazinerepack/XEH_preInit.sqf +++ b/addons/magazinerepack/XEH_preInit.sqf @@ -6,6 +6,6 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" ADDON = true; diff --git a/addons/magazinerepack/initSettings.sqf b/addons/magazinerepack/initSettings.inc.sqf similarity index 100% rename from addons/magazinerepack/initSettings.sqf rename to addons/magazinerepack/initSettings.inc.sqf diff --git a/addons/magazinerepack/stringtable.xml b/addons/magazinerepack/stringtable.xml index fb239ce0d7..9ec8a0fe5a 100644 --- a/addons/magazinerepack/stringtable.xml +++ b/addons/magazinerepack/stringtable.xml @@ -23,7 +23,7 @@ Durata per proiettile 每發所需時間 每发所需时间 - 弾頭毎の所有時間 + 弾薬毎の所要時間 탄알 당 시간 Czas na nabój Время на патрон @@ -39,7 +39,7 @@ Durata per caricatore 每匣所需時間 每匣所需时间 - 弾倉毎の所有時間 + 弾倉毎の所要時間 탄창 당 시간 Czas na magazynek Время на магазин @@ -55,7 +55,7 @@ Durata per caricatore a nastro 每彈鍊所需時間 每弹炼所需时间 - ベルトリンク毎の所有時間 + ベルトリンク毎の所要時間 탄띠 당 시간 Czas na taśmę Время на звено ленты @@ -72,7 +72,7 @@ Przepakuj magazynki Přepáskovat zásobníky Riempi Caricatori - Reorganizar Carregadores + Preencher Carregadores Újratárazás Перепаковать магазины 弾倉を詰め替え @@ -89,7 +89,7 @@ Przepakowywanie magazynków... Přepáskovávám zásobník... Riempendo i caricatori... - Reorganizando Carregadores... + Preenchendo Carregadores... Újratárazás... Перепаковка магазинов... 弾倉を詰め替えしています・・・ @@ -109,7 +109,7 @@ %1 carregador(es) cheio(s) e %2 disparo(s) a mais %1 teljes tár és %2 extra lőszer %1 полных магазина(ов) и %2 патрона(ов) - %1 個の満杯の弾倉とあふれた %2 発の弾薬 + 満装填した弾倉 %1 個と<br/>残 %2 発装填の弾倉 %1개의 꽉찬 탄창과 %2발의 총알이 남았다 %1个满的弹匣与%2发额外子弹 %1個滿的彈匣與%2發額外子彈 @@ -125,8 +125,8 @@ Przepakowywanie zakończone Újratárazás befejezve Caricatori Riempiti - Reorganização Terminada - 詰め替えが完了しました + Preenchimento Completo + 詰め替えが完了しました。 탄창 채우기 끝남 整理完成 重整完成 @@ -142,8 +142,8 @@ Przepakowywanie przerwane Újratárazás megszakítva Riempimento Interrotto - Reorganização Interrompida - 詰め替えを中断しました + Preenchimento Interrompido + 詰め替えが中断されました。 탄창을 채우는 중 방해받음 弹匣整理被打断 重整被中斷 @@ -160,43 +160,50 @@ %1 teljes és %2 részleges %1 Pieno(i) e %2 Parziale(i) %1 Total e %2 Parcial - %1 個の満杯と %2 個の弾薬入り弾倉 - %1 꽉 찼고 %2 부분적으로 참 + 満装填した弾倉 %1 個と<br/>部分装填の弾倉 %2 個 + 꽉 찬 탄창:%1<br/>부분적으로 찬 탄창: %2 %1个满的与%2个部分的 %1個滿的與%2個部分的 %1 Dolu ve %2 Partial Repack Loaded Magazines - 装填済み弾倉を詰め替え + 装填済みの弾倉も詰め替える Remplir le chargeur engagé Перепаковать загруженные магазины Geladene Magazine umpacken + Riempi caricatori pieni Przepakuj załadowane magazynki 重新整理已上膛的弹匣 장전된 탄창에 총알 채우는 중 Reorganizar cargadores llenos + Preencher Carregadores Engajados Repacking magazines, weapon unloaded - 弾倉を詰め替えし、<br />非装填状態です + 弾倉の詰め替えのため 武器から弾薬を抜きました Remplissage des chargeurs, arme déchargée. Перепаковка магазинов, оружие разряжено Magazin umgepackt, Waffe entladen + Riempendo i caricatori, arma scarica Przepakowywanie magazynków, broń rozładowana 重新整理弹匣,武器未上膛 탄창 다시 채우는 중, 무기에서 탄창 뺌 Reorganizando cargadores, arma descargada + Preenchendo carregadores, arma descarregada Repack Animation Animation für Umpacken + Animazione per il riempimento Animacja przepakowywania 탄약 합치기 애니메이션 詰め替え時のアニメーション 整理动画 Анимация перепаковки Animación de reorganizar + Animation de remplissage des chargeurs + Animação de Preenchimento diff --git a/addons/main/script_macros.hpp b/addons/main/script_macros.hpp index 96d96f5dd5..ed3a826678 100644 --- a/addons/main/script_macros.hpp +++ b/addons/main/script_macros.hpp @@ -138,13 +138,20 @@ #define SD_TO_MIN_MAX(d) ((d) * 3.371) // Standard deviation -> min / max of random [min, mid, max] // Angular unit conversion -#define MRAD_TO_MOA(d) ((d) * 3.43774677) // Conversion factor: 54 / (5 * PI) -#define MOA_TO_MRAD(d) ((d) * 0.29088821) // Conversion factor: (5 * PI) / 54 -#define DEG_TO_MOA(d) ((d) * 60) // Conversion factor: 60 -#define MOA_TO_DEG(d) ((d) / 60) // Conversion factor: 1 / 60 -#define DEG_TO_MRAD(d) ((d) * 17.45329252) // Conversion factor: (50 * PI) / 9 -#define MRAD_TO_DEG(d) ((d) / 17.45329252) // Conversion factor: 9 / (50 * PI) -#define MOA_TO_RAD(d) ((d) * 0.00029088) // Conversion factor: PI / 10800 +// Conversion factor: 54 / (5 * PI) +#define MRAD_TO_MOA(d) ((d) * 3.43774677) +// Conversion factor: (5 * PI) / 54 +#define MOA_TO_MRAD(d) ((d) * 0.29088821) +// Conversion factor: 60 +#define DEG_TO_MOA(d) ((d) * 60) +// Conversion factor: 1 / 60 +#define MOA_TO_DEG(d) ((d) / 60) +// Conversion factor: (50 * PI) / 9 +#define DEG_TO_MRAD(d) ((d) * 17.45329252) +// Conversion factor: 9 / (50 * PI) +#define MRAD_TO_DEG(d) ((d) / 17.45329252) +// Conversion factor: PI / 10800 +#define MOA_TO_RAD(d) ((d) * 0.00029088) #define ZEUS_ACTION_CONDITION ([_target, {QUOTE(QUOTE(ADDON)) in curatorAddons _this}, missionNamespace, QUOTE(QGVAR(zeusCheck)), 1E11, 'ace_interactMenuClosed'] call EFUNC(common,cachedCall)) diff --git a/addons/main/script_mod.hpp b/addons/main/script_mod.hpp index 167466d853..12faeb07c0 100644 --- a/addons/main/script_mod.hpp +++ b/addons/main/script_mod.hpp @@ -11,7 +11,7 @@ // MINIMAL required version for the Mod. Components can specify others.. #define REQUIRED_VERSION 2.14 -#define REQUIRED_CBA_VERSION {3,15,7} +#define REQUIRED_CBA_VERSION {3,16,0} #ifndef COMPONENT_BEAUTIFIED #define COMPONENT_BEAUTIFIED COMPONENT diff --git a/addons/main/script_version.hpp b/addons/main/script_version.hpp index 098eec73cb..e233476016 100644 --- a/addons/main/script_version.hpp +++ b/addons/main/script_version.hpp @@ -1,4 +1,4 @@ #define MAJOR 3 -#define MINOR 15 -#define PATCHLVL 2 -#define BUILD 69 +#define MINOR 16 +#define PATCHLVL 1 +#define BUILD 74 diff --git a/addons/main/stringtable.xml b/addons/main/stringtable.xml index e97670f84f..902c0d97c2 100644 --- a/addons/main/stringtable.xml +++ b/addons/main/stringtable.xml @@ -9,7 +9,7 @@ ACE: логистика ACE Logistika ACE Logística - Logistica ACE + ACE Logistica ACE Logistique ACE ロジスティクス ACE 后勤 diff --git a/addons/map/XEH_preInit.sqf b/addons/map/XEH_preInit.sqf index 92a7e896f3..3d0df4213e 100644 --- a/addons/map/XEH_preInit.sqf +++ b/addons/map/XEH_preInit.sqf @@ -7,6 +7,6 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" ADDON = true; diff --git a/addons/map/initSettings.sqf b/addons/map/initSettings.inc.sqf similarity index 100% rename from addons/map/initSettings.sqf rename to addons/map/initSettings.inc.sqf diff --git a/addons/map/stringtable.xml b/addons/map/stringtable.xml index e9b54537f0..5f11e3601c 100644 --- a/addons/map/stringtable.xml +++ b/addons/map/stringtable.xml @@ -29,7 +29,7 @@ Térkép megvilágítása Освещение карты Illuminazione Mappa - 地図に照明 + 地図の照明 지도에 조명 地图照明 地圖照明 @@ -45,7 +45,7 @@ Simular iluminación de mapa basada en la iluminación ambiente y los elementos de los jugadores? Simulovat nasvícení mapy v závisloti na okolí a předmětů hráče? Simula illuminazione della mappa in base alla luce ambientale e agli oggetti del giocatore? - 地図へ環境光やプレイヤーのアイテムに基づいた光のシミュレーションを行うかどうかを設定できます。 + 環境光やプレイヤーのアイテムに基づいた地図の照明をシミュレートしますか? 주변 환경 및 플레이어 조명에 의한 빛 변화를 지도에 반영할까요? 透过环境光与玩家的手电筒来决定地图亮度。 透過環境光與玩家的物品來決定地圖亮度? @@ -58,7 +58,7 @@ Brilho de lanterna no mapa Resplandor de linterna en el mapa Nasvícení mapy pomocí baterky - Luce della torcia in mappa + Effetto luminoso sul giocatore Lueur lampe carte 地図をライトで照らす 지도 조명 발광 @@ -74,7 +74,7 @@ Adicionar brilho externo para jogadores que usam lanterna no mapa? Añadir resplandor externo a los jugadores que utilizan la linterna en el mapa? Přidat externí záři hráči který používá baterku v mapě? - Aggiungi luce esterna a giocatori che usano la torcia in mappa? + Aggiungi un effetto di luce sul giocatore che sta usando la torcia in mappa, questo è visibile ad altri giocatori. プレイヤーが地図をフラッシュライトで照らせられるように設定します。 지도에 조명을 사용하는 플레이어에 외부 불빛을 추가합니까? 当玩家打开手电筒时,增加地图亮度。 @@ -90,7 +90,7 @@ Tremblement de la carte Térkép-rázkódás Тряска карты - Scuoti la mappa + Scuotimento della mappa 地図を揺らす 지도 흔들림 地图震动 @@ -139,7 +139,7 @@ Limite le niveau de zoom sur la carte. Korlátozva legyen-e a nagyítás mennyisége a térképnél? Ограничить максимальное приближение, доступное на карте? - Limita l'ammontare di zoom disponibile per la mappa? + Limita i livelli di zoom disponibili sulla mappa? 地図上で利用できる拡大倍率を制限できます。 지도 확대에 제한을 둡니까? 限制地图上可允许缩放的倍率? @@ -171,7 +171,7 @@ Affiche les coordonnées de la grille sur le pointeur de souris. Mutatva legyen-e a kurzornál található rész rácskoordinátája? Показывать координаты около курсора мыши? - Mostra la griglia coordinate sul cursore mouse? + Mostra il numero della coordinata-griglia sul cursore del mouse in mappa? カーソルで合わせた先を地図座標で表示するかどうかを設定できます。 지도에서 커서 옆에 좌표가 뜨게 합니까? 显示鼠标光标所在的网格座标? @@ -187,7 +187,7 @@ Ez a modul lehetővé teszi a térképnézet testreszabását. Этот модуль позволяет настроить отображение карты. Este módulo permite personalizar la pantalla del mapa. - Questo modulo ti permette di customizzare lo schermo della mappa. + Questo modulo ti permette di personalizzare lo schermo della mappa. このモジュールは地図画面を変更できます。 이 모듈은 지도 화면을 임의로 설정할 수 있게 해줍니다. 此模块允许自定地图的相关效果。 @@ -204,7 +204,7 @@ Blue Force követés Система слежения Blue Force Tracking Blue Force Tracking - ブルー フォース トラッキング + ブルー フォース トラッキング (BFT) GPS 피아식별기 显示蓝方追踪 顯示藍方蹤跡 @@ -235,8 +235,8 @@ Active le SFA. Valeur par défaut : désactivé. Blue Force követés engedélyezése. Alapértelmezett: Nem Включает систему служения BFT. По умолчанию: Нет - Abilita Blue Force Tracking. Default: No - ブルー フォース トラッキングを有効化します。標準: 無効 + Abilita Blue Force Tracking. Predefinito: No + ブルー フォース トラッキングを有効化します。 デフォルト: 無効 GPS 피아식별기 켭니다. 기본설정: 아니요 启用显示蓝方追踪。预设:否 啟用顯示藍方蹤跡. 預設: 否 @@ -283,7 +283,7 @@ Cacher les groupes IA AI csoportok elrejtése Скрыть группы ботов - Nascondere gruppi IA + Nascondi gruppi IA AIグループを非表示 인공지능 그룹 숨기기 隐藏 AI 小队 @@ -299,7 +299,7 @@ Cache les marqueurs pour les groupes composés exclusivement d'unités IA. Jelölők elrejtése "csak AI" csoportoknál? Скрыть маркеры групп, которые состоят полностью из ботов? - Nascondi markers per gruppi di sole IA? + Nascondi marker per gruppi di sole IA? 'AIのみ'グループのマーカー表示有無を設定できます。 인공지능만 있는 그룹의 마커를 숨깁니까? 隐藏'AI 小队'的追踪? @@ -331,7 +331,7 @@ Affiche les noms de tous les joueurs individuellement. Itt található az adott játékos neveket? Показать отдельные имена игроков? - Mostra i nomi dei giocatori singoli? + Mostra i nomi di singoli giocatori? プレイヤーの名前の表示有無を設定できます。 각 플레이어의 이름을 표시합니까? 显示玩家的个别名称? @@ -347,7 +347,7 @@ Ez a modul lehetővé teszi a szövetséges egységek követését BFT térképjelzőjkkel. Этот модуль позволяет отслеживать перемещение союзных войск по карте при помощи маркеров BFT. Este módulo permite el seguimiento de las unidades aliadas con marcadores de mapa BFT. - Questo modulo permette il tracciamento di unità alleate con i marker BFT in mappa + Questo modulo permette il tracciamento di unità alleate mediante marker BFT in mappa. モジュールは BFT マップ マーカとともに、同勢力ユニットの追跡を許可します。 이 모듈은 아군을 지도상에서 추적할 수 있게 해줍니다. 此模块将使你能在地图上看见友方单位的追踪 @@ -362,7 +362,7 @@ Фонари Svítilny Linternas - Torcia + Torce フラッシュライト 손전등 手电筒 @@ -503,7 +503,7 @@ Muda o canal do marcador no início da missão Изменить начальный канал для установки маркеров при запуске миссии Nastavit kanál po startu mise - Cambia il canale marker iniziale all'avvio di missione + Cambia il canale marker iniziale all'avvio della missione Cambiar el canal de marcadores inicial al comenzar la misión Change le canal de communication par défaut au début de la mission. ミッション開始時にあらかじめ設定されているマーカ チャンネルを変更します diff --git a/addons/map_gestures/CfgEventHandlers.hpp b/addons/map_gestures/CfgEventHandlers.hpp index d24c68ad4b..053d85ed3e 100644 --- a/addons/map_gestures/CfgEventHandlers.hpp +++ b/addons/map_gestures/CfgEventHandlers.hpp @@ -26,9 +26,9 @@ class Extended_DisplayLoad_EventHandlers { class RscDiary { // for loading saves use uiNamespace because missionNamespace is not restored before map is loaded #ifdef DISABLE_COMPILE_CACHE - ADDON = QUOTE(((_this select 0) displayCtrl ID_DIARY_MAP) call (missionNamespace getVariable [ARR_2('DFUNC(initDisplayDiary)', uiNamespace getVariable 'DFUNC(initDisplayDiary)')]);); + ADDON = QUOTE(((_this select 0) displayCtrl ID_DIARY_MAP) call (missionNamespace getVariable [ARR_2('DFUNC(initDisplayDiary)',uiNamespace getVariable 'DFUNC(initDisplayDiary)')])); #else - ADDON = QUOTE(((_this select 0) displayCtrl ID_DIARY_MAP) call (uiNamespace getVariable 'DFUNC(initDisplayDiary)');); + ADDON = QUOTE(((_this select 0) displayCtrl ID_DIARY_MAP) call (uiNamespace getVariable 'DFUNC(initDisplayDiary)')); #endif }; }; diff --git a/addons/map_gestures/XEH_preInit.sqf b/addons/map_gestures/XEH_preInit.sqf index 9bf1ff814e..e603e5398a 100644 --- a/addons/map_gestures/XEH_preInit.sqf +++ b/addons/map_gestures/XEH_preInit.sqf @@ -6,7 +6,7 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" GVAR(GroupColorCfgMappingNew) = call CBA_fnc_createNamespace; diff --git a/addons/map_gestures/initSettings.sqf b/addons/map_gestures/initSettings.inc.sqf similarity index 100% rename from addons/map_gestures/initSettings.sqf rename to addons/map_gestures/initSettings.inc.sqf diff --git a/addons/map_gestures/stringtable.xml b/addons/map_gestures/stringtable.xml index 64168b6b70..a17bb842d6 100644 --- a/addons/map_gestures/stringtable.xml +++ b/addons/map_gestures/stringtable.xml @@ -39,7 +39,7 @@ Aktywuje gesty na mapie. Включает указания на карте. Povolit ukazování v mapě - Abilita i Gesti Mappa + Abilita i Gesti in Mappa Aktiviert die Kartenzeichen. Activar Gestos en Mapa Active le pointage sur carte. @@ -86,7 +86,7 @@ Interwał aktualizacji Интервал обновления Interval aktualizace - Intervallo Aggiornamento + Intervallo Aggiornamenti Update-Intervall Período de actualización Intervalle de mise à jour @@ -133,7 +133,7 @@ Cor do texto da etiqueta de nome que fica embaixo da marcação de gestos no mapa. Kolor nazwy gracza obok markera gestu mapy. Цвет инмени игрока рядом с маркером жестов. - Colore del testo dei nametag oltre a quello dei Gesti Mappa + Colore del testo dei nametag accanto agli indicatori di gesti in mappa. Farbe der Namenstexte neben der Kartenzeichen-Markierung. Color de los nombres dibujados al lado del marcados de gestos. Définit la couleur du texte pour le nom à côté du marqueur de pointage sur carte. @@ -149,7 +149,7 @@ Domyślny kolor lidera Лид. цвет по умолчанию Výchozí barva velitele - Colore Default Caposquadra + Colore Caposquadra Predefinito Gruppenführer-Standardfarbe Color por defecto para el lider Couleur de commandement par défaut @@ -163,7 +163,7 @@ Valor de cor alternativa para líderes de grupo Domyślny kolor dla liderów grup. Значение цвета для лидеров групп. - Colore di riserva dei capisquadra quando non c'è nessuna impostazione gruppo. [Modulo: lascia vuoto per non forzare su clients] + Colore di riserva per gli indicatori dei capisquadra quando non c'è nessuna impostazione per il gruppo. [Modulo: lascia vuoto per non forzare su client] Ersatz-Farbwert für Gruppenführer wenn keine Gruppeneinstellung vorhanden ist. [Modul: leer lassen um Anwendung bei Clients nicht zu erzwingen] Color por defecto para líderes cuando no está configurado [Módulo: dejar en blanco para no forzar] Définit la couleur par défaut pour les chefs de groupe quand il n'y a pas de réglage de groupe. [Module : laisser vide pour ne pas forcer chez les clients.] @@ -179,7 +179,7 @@ Kolor domyślny Цвет по умолчанию Výchozí barva - Colore Default + Colore Predefinito Standardfarbe Color por defecto Couleur par défaut @@ -194,7 +194,7 @@ Valor alternativo de cor Kolor domyślny Значение цвета. - Colore di riserva quando non ci sono impostazioni gruppo. [Modulo: lascia vuto per non forzare sui clients] + Colore di riserva quando non c'è un'impostazione per il gruppo. [Modulo: lascia vuoto per non forzare sui client] Ersatz-Farbwert wenn keine Gruppeneinstellung vorhanden ist. [Modul: leer lassen um Anwendung bei Clients nicht zu erzwingen] Color por defecto cuando no está configurado [Módulo: dejar en blanco para no forzar] Définit la couleur par défaut quand il n'y a pas de réglage pour le groupe. [Module : laisser vide pour ne pas forcer chez les clients.] @@ -273,19 +273,23 @@ 友軍ジェスチャーのみ表示 Mostrar sólo gestos de aliados Nur Gesten befreundeter Einheiten zeigen + Mostra solo gesti di alleati 仅显示友军指示 아군 신호만 보기 + Mostrar somente gestos aliados Shows only Gestures from Units that are from the same side or a Friendly side. Показывать жесты только от игроков союзной стороны. Affiche uniquement les pointages effectués par des unités qui sont du même camp, ou d'un camp allié. + Mostra solo gesti effettuati da unità che sono della stessa fazione o una fazione alleata. 友軍ユニットのみからジェスチャーを表示します。 Muestra únicamente gestos de las unidades que son del mismo bando o de un bando aliado Pokazuj tylko Gesty od jednostek z tej samej lub sojuszniczej strony Nur Gesten von Einheiten der selben oder einer verbündeten Seite zeigen. 仅显示来自同一阵营或友军的单位的指示。 같은 진영 혹은 아군 진영 인원들만 보이게 합니다. + Mostra somente gestos de unidades que são do mesmo lado ou de um lado aliado. Max range Camera @@ -295,8 +299,10 @@ Máximo alcance de cámara Maksymalny zasięg kamery Maximale Kamerareichweite + Distanza massima per videocamere 摄像机最大范围 카메라와 지도 신호의 최대 거리 + Distância máxima da câmera Max range between a Camera and players to show the map gesture indicator @@ -304,32 +310,38 @@ Définit le rayon au-delà duquel une caméra ne verra plus l'indicateur de pointage des autres joueurs. プレイヤーが行うマップ ジェスチャーをカメラから確認できる最大範囲を設定します。 Máxima distancia entre una cámara y los jugadores para mostrar el indicador de gestos en mapa + Distanza massima da cui videocamere (spettatore/zeus) può vedere i gesti di giocatori. Maksymalny zasięg pomiędzy kamerą a graczami do pokazania gestów na mapie Maximale Reichweite, in der eine Kamera das Kartenzeichen der Spieler zeigt 摄像机和玩家之间的最大范围显示地图指示 카메라와 플레이어간 지도 신호를 볼 수 있는 최대 거리를 정합니다 + Distância máxima entre uma câmera e jogadores para mostrar o indicador de gestos no mapa Allow Spectator Разрешить видеть в спектаторе Autoriser les spectateurs - スペクテイターに許可 + Permetti spettatori + 観戦者に許可 Permitir espectador Zezwól na Obserwatora Erlaube Zuschauer 允许旁观者 관전자 허용 + Permitir espectador Allows Spectator to See Map Gestures Позволяет наблюдателю видеть жесты на карте Permet aux spectateurs de voir le pointage des autres joueurs. - スペクテイターからマップ ジェスチャーを表示できるようにします。 + 観戦者からマップ ジェスチャーを表示できるようにします。 + Permetti agli spettatori di vedere gesti in mappa Permitir al espectador ver los gestos de mapa Zezwól Obserwatorowi widzieć Gesty na mapie Erlaube, dass Zuschauer das Kartenzeichen sehen können 允许旁观者查看地图指示 관전자가 지도 신호를 볼 수 있습니다 + Permite espectadores verem o indicador de gestos no mapa Allow Curator @@ -339,8 +351,10 @@ Permitir Curador Zezwól na Zeusa Erlaube Zeus + Permetti Zeus 允许宙斯 큐레이터 허용 + Permitir curador Allows Curator to See Map Gestures @@ -348,10 +362,12 @@ Permet aux curateurs de voir le pointage des autres joueurs. キュレーターからマップ ジェスチャーを表示できるようにします。 Permitir al Curador ver los gestos de mapa + Permetti agli Zeus di vedere gesti in mappa Zezwól Zeusowi widzieć gesty na mapie Erlaube, dass Zeus das Kartenzeichen sehen kann 允许宙斯查看地图指示 큐레이터가 지도 신호를 볼 수 있습니다 + Permite curadores verem o indicador de gestos no mapa Briefing Mode @@ -359,10 +375,12 @@ Visibilité lors du briefing ブリーフィング モード Modo de briefing + Modalità Briefing Tryb Odprawy Briefing-Modus 简报模式 브리핑 모드 + Modo de briefing What player can see what @@ -370,10 +388,12 @@ Définit quels pointages les joueurs peuvent voir lors du briefing. プレイヤーが見ることができる対象を決定します。 Qué puede ver cada jugador + Quali giocatori possono vedere gesti sulla mappa in fase di briefing. Co mogą widzieć gracze Welcher Spieler kann was sehen 什么玩家能看到什么 어떤 플레이어가 볼 수 있는지 정합니다 + O que cada jogador pode ver Disabled @@ -381,10 +401,12 @@ Pointage désactivé 無効化 Deshabilitado + Disabilitata Zablokowany Deaktiviert 禁用 비활성화 + Desativado Group @@ -420,17 +442,19 @@ Proximité 付近のみ Proximidad + Prossimità Umgebung Tylko w pobliżu 附近 근처 + Proximidade All Vše Tous Alle - Tutte + Tutto Wszystko Tudo Все diff --git a/addons/maptools/CfgVehicles.hpp b/addons/maptools/CfgVehicles.hpp index aacde4cb93..8c320de321 100644 --- a/addons/maptools/CfgVehicles.hpp +++ b/addons/maptools/CfgVehicles.hpp @@ -52,7 +52,7 @@ class CfgVehicles { }; class ACE_MapToolsAlignCompass { displayName = CSTRING(MapToolsAlignCompass); - condition = QUOTE(GVAR(mapTool_Shown) != 0 && {getUnitLoadout ACE_player param [ARR_2(9, [])] param [ARR_2(3, '')] != ''}); + condition = QUOTE(GVAR(mapTool_Shown) != 0 && {getUnitLoadout ACE_player param [ARR_2(9,[])] param [ARR_2(3,'')] != ''}); statement = QUOTE(GVAR(mapTool_angle) = getDir ACE_player;); exceptions[] = {"isNotDragging", "notOnMap", "isNotInside", "isNotSitting"}; showDisabled = 1; diff --git a/addons/maptools/CfgWeapons.hpp b/addons/maptools/CfgWeapons.hpp index f8a95acc73..62d969badb 100644 --- a/addons/maptools/CfgWeapons.hpp +++ b/addons/maptools/CfgWeapons.hpp @@ -11,7 +11,7 @@ class CfgWeapons { scope = 2; ACE_isTool = 1; class ItemInfo: CBA_MiscItem_ItemInfo { - mass = 1; + mass = 0.2; }; }; }; diff --git a/addons/maptools/XEH_preInit.sqf b/addons/maptools/XEH_preInit.sqf index 9361d05015..894773534a 100644 --- a/addons/maptools/XEH_preInit.sqf +++ b/addons/maptools/XEH_preInit.sqf @@ -6,6 +6,6 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" ADDON = true; diff --git a/addons/maptools/initSettings.sqf b/addons/maptools/initSettings.inc.sqf similarity index 100% rename from addons/maptools/initSettings.sqf rename to addons/maptools/initSettings.inc.sqf diff --git a/addons/maptools/stringtable.xml b/addons/maptools/stringtable.xml index 0d6cebe370..7ab1662bb2 100644 --- a/addons/maptools/stringtable.xml +++ b/addons/maptools/stringtable.xml @@ -63,7 +63,7 @@ Ukryj narzędzia nawigacyjne Schovat pomůcky k mapě Скрыть инструменты - マップ ツールを隠す + マップツールを 隠す 독도용 도구 숨기기 隐藏地图工具 隱藏地圖工具 @@ -74,13 +74,13 @@ Zeige Kartenwerkzeug (normal) Mostrar herr. de mapa normal Montrer les outils de navigation (normaux) - Visualizza Strumenti Cartografici standard + Visualizza Strumento Cartografico Normale Mostrar Ferramenta de Mapa Padrão Térképészeti eszköz megjelenítése (normál méret) Pokaż normalne narzędzia nawigacyjne Zobrazit pomůcku k mapě (Velkou) Показать инструменты (средн. размер) - マップ ツールを表示する + マップツールを 表示する 보통 독도용 도구로 보기 显示地图工具 顯示地圖工具 @@ -91,13 +91,13 @@ Zeige Kartenwerkzeug (klein) Mostrar herr. de mapa pequeñas Montrer les outils de navigation (petits) - Visualizza Strumenti Cartografici piccoli + Visualizza Strumento Cartografico Piccolo Mostrar Ferramenta de Mapa Pequena Térképészeti eszköz megjelenítése (kicsinyített) Pokaż pomniejszone narzędzia nawigacyjne Zobrazit pomůcku k mapě (Malou) Показать инструменты (малый размер) - 小さいマップ ツールを表示する + 小さい マップツールを 表示する 작은 독도용 도구로 보기 显示小的地图工具 顯示小的地圖工具 @@ -108,13 +108,13 @@ Kartenwerkzeug nach Norden ausrichten Alinear herr. de mapa al norte Aligner les outils sur le nord - Allinea gli Strumenti Cartografici con il Nord + Allinea Strumento Cartografico verso Nord Alinhar Ferramenta de Mapa com o Norte Térképészeti eszköz Északhoz állítása Wyrównaj linijkę do północy Srovnat pomůcku k mapě na sever Выровнять инструменты на север - マップ ツールを北に合わせる + マップツールを 北に合わせる 독도용 도구를 북쪽으로 정렬 地图工具对准北方 地圖工具對準北方 @@ -125,13 +125,13 @@ Kartenwerkzeug am Kompass ausrichten Alinear herr. de mapa a la brújula Aligner les outils sur la boussole - Allinea gli Strumenti Cartografici con la bussola + Allinea Strumento Cartografico con la bussola Alinhar Ferramenta de Mapa com a Bússola Térképészeti eszköz iránytűhöz állítása Wyrównaj linijkę do kompasu Srovnat pomůcku k mapě ke kompasu Выровнять инструменты по компасу - マップ ツールを方位磁石に合わせる + マップツールを 方位磁石に合わせる 독도용 도구를 나침반에 정렬 地图工具对准指南针 地圖工具對準指北針 @@ -182,7 +182,7 @@ Направление: %1° Direzione: %1° Direção: %1 - 方位: %1° + 方向: %1° 방위: %1° 方位:%1° 方位: %1° @@ -196,7 +196,7 @@ Klawisz obrotu narzędzi nawigacyjnych Taste zum Drehen des Kartenwerkzeugs 독도용 도구 돌리기 키 - Ruota Strumenti di Mappatura + Tasto per Ruotare Strumenti Cartografici 选转地图工具的按键 選轉地圖工具的按鍵 Tecla para girar Ferramentas de Mapa @@ -212,7 +212,7 @@ Modyfikator pozwalający na obracanie narzędzi nawigacyjnych Steuerungstaste, um Drehung des Kartenwerkzeugs zu ermöglichen. 독도용 도구를 돌리기 위한 키를 변경할 수 있습니다. - Tasto modifica per consentire strumenti di mappatura rotanti + Tasto modificatore per ruotare strumenti cartografici 修改旋转地图工具的按键 修改旋轉地圖工具的按鍵 Tecla de Modificador para permitir girar as ferramentas de mapa @@ -227,7 +227,7 @@ 독도용 도구로 직선 그리기 Rysuj proste linie przy użyciu narzędzi nawigacyjnych Tracer des lignes droites - Disegna linee dritte con gli strumenti di mappatura + Disegna linee dritte con gli strumenti cartografici 使用地图工具来绘制直线 使用地圖工具來繪製直線 Прямые линии с инструментами карты @@ -238,12 +238,12 @@ Draw on the edge of maptools to draw straight lines. Note: Must hover at midpoint to delete. - マップ ツールの端から直線を書きます。メモ: 線の中央ホバーすると削除します。 + マップツールの端に線を描くことで直線を描けるようにします。 備考: 削除するには線の中間点にカーソルを合わせる必要があります。 Zeichne gerade Linien am Rand des Kartenwerkzeugs. Hinweis: zum Löschen über den Mittelpunkt der Linie fahren 독도용 도구 가장자리에 직선을 그립니다. 주의: 삭제하기 위해선 선의 중앙에 가져다 대십시요 Przeciągnij po krawędzi narzędzi nawigacyjnych by narysować prostą linię. Uwaga: aby usunąć linię - nalezy ustawić kursor nad jej środkiem. Utilise le bord des outils de navigation pour tracer des lignes droites. Note : il faut pointer au milieu du trait pour pouvoir le supprimer. - Disegna sul bordo degli strumenti di mappatura per disegnare linee dritte. Nota: Deve spostarsi al centro per essere cancellato. + Disegna lungo il bordo degli strumenti cartografici per disegnare linee dritte. Nota: Dovrai puntare il centro delle linee per cancellarle. 使用地图工具的边缘来绘制直线。备注:要删除直线时,请把鼠标移动到该线条的中央即可删除该线。 使用地圖工具的邊緣來繪製直線。備註: 要刪除直線時,請把滑鼠移動到該線條的中央即可刪除該線 Рисуйте по краю инструмента карты, чтобы провести прямые линии. Примечание: при удалении линии размещайте курсор над ее серединой diff --git a/addons/marker_flags/XEH_preInit.sqf b/addons/marker_flags/XEH_preInit.sqf index 62febdc7cb..ed043fcb05 100644 --- a/addons/marker_flags/XEH_preInit.sqf +++ b/addons/marker_flags/XEH_preInit.sqf @@ -6,7 +6,7 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" GVAR(flagCache) = createHashMap; diff --git a/addons/marker_flags/initSettings.sqf b/addons/marker_flags/initSettings.inc.sqf similarity index 100% rename from addons/marker_flags/initSettings.sqf rename to addons/marker_flags/initSettings.inc.sqf diff --git a/addons/marker_flags/stringtable.xml b/addons/marker_flags/stringtable.xml index 13cd270147..c303664144 100644 --- a/addons/marker_flags/stringtable.xml +++ b/addons/marker_flags/stringtable.xml @@ -4,22 +4,28 @@ Marker Flags Markierungsfahnen + Bandiere segnaletiche Chorągiewki 旗マーカー 마킹용 깃발 标记旗 Флажки Banderas de señalizado + Drapeaux de marquage + Bandeiras de marcação Place Anywhere Überall platzieren + Piazza ovunque どこでも設置可能 Umieść w dowolnym miejscu 아무 곳에나 배치 随意放置 Размещать где угодно Colocar en cualquier lugar + Placer partout + Colocar em qualquer lugar Place marker flag anywhere regardless of surface. @@ -30,24 +36,33 @@ Размещать флажки где угодно вне зависимости от поверхности. Permitir colocar las banderas de señalizado en cualquier lugar, al margen del tipo de superficie. Platzieren Sie die Markierungsfahne überall, unabhängig von der Oberfläche. + Piazza bandiere segnaletiche ovunque, indipendentemente dalla superficie. + Place un drapeau de marquage n'importe où, quelle que soit la surface. + Permite colocar as bandeiras de marcação em qualquer lugar, independente do tipo de superfice Place Marker Flag Markierungsfahne platzieren + Piazza bandiera segnaletica Postaw chorągiewkę 마킹용 깃발 꽂기 Поставить флажок Colocar Bandera de señalizado マーカーフラッグを置く + Placer le drapeau de marquage + Colocar Bandeira de Marcação Adjust height Höhe anpassen + Modifica altezza Dostosuj wysokość 높이 조정 Регулировать высоту Ajustar altura 高さを調整する + Ajuster la hauteur + Ajustar altura Cancel @@ -85,82 +100,106 @@ Marker Flag (White) Markierungsfahne (Weiß) + Bandiera segnaletica (Bianca) Chorągiewka (Biała) 旗マーカー (白) 마킹용 깃발(하양) 标记旗(白) Флажок (белый) Bandera de señalizado (Blanca) + Drapeau de marquage (Blanc) + Bandeira de Marcação (Branca) Marker Flag (Black) Markierungsfahne (Schwarz) + Bandiera segnaletica (Nera) Chorągiewka (Czarna) 旗マーカー (黒) 마킹용 깃발(검정) 标记旗(黑) Флажок (чёрный) Bandera de señalizado (Negra) + Drapeau de marquage (Noir) + Bandeira de Marcação (Preta) Marker Flag (Red) Markierungsfahne (Rot) + Bandiera segnaletica (Rossa) Chorągiewka (Czerwona) 旗マーカー (赤) 마킹용 깃발(빨강) 标记旗(红) Флажок (красный) Bandera de señalizado (Roja) + Drapeau de marquage (Rouge) + Bandeira de Marcação (Vermelha) Marker Flag (Green) Markierungsfahne (Grün) + Bandiera segnaletica (Verde) Chorągiewka (Zielona) 旗マーカー (緑) 마킹용 깃발(초록) 标记旗(绿) Флажок (зелёный) Bandera de señalizado (Verde) + Drapeau de marquage (Vert) + Bandeira de Marcação (Verde) Marker Flag (Blue) Markierungsfahne (Blau) + Bandiera segnaletica (Blu) Chorągiewka (Niebieska) 旗マーカー (青) 마킹용 깃발(파랑) 标记旗(蓝) Флажок (синий) Bandera de señalizado (Azul) + Drapeau de marquage (Bleu) + Bandeira de Marcação (Azul) Marker Flag (Yellow) Markierungsfahne (Gelb) + Bandiera segnaletica (Gialla) Chorągiewka (Żółta) 旗マーカー (黄) 마킹용 깃발(노랑) 标记旗(黄) Флажок (жёлтый) Bandera de señalizado (Amarilla) + Drapeau de marquage (Jaune) + Bandeira de Marcação (Amarela) Marker Flag (Orange) Markierungsfahne (Orange) + Bandiera segnaletica (Arancione) Chorągiewka (Pomarańczowa) 旗マーカー (橙) 마킹용 깃발(주황) 标记旗(橙) Флажок (оранжевый) Bandera de señalizado (Naranja) + Drapeau de marquage (Orange) + Bandeira de Marcação (Laranja) Marker Flag (Purple) Markierungsfahne (Lila) + Bandiera segnaletica (Viola) Chorągiewka (Fioletowa) 旗マーカー (紫) 마킹용 깃발(보라) 标记旗(紫) Флажок (фиолетовый) Bandera de señalizado (Púrpura) + Drapeau de marquage (Violet) + Bandeira de Marcação (Roxa) diff --git a/addons/markers/InsertMarker.hpp b/addons/markers/InsertMarker.hpp index 9dd8005ce0..e31c7bb5a7 100644 --- a/addons/markers/InsertMarker.hpp +++ b/addons/markers/InsertMarker.hpp @@ -12,8 +12,8 @@ class RscSlider; class RscXSliderH; class RscDisplayInsertMarker { - onLoad = QUOTE(_this call DFUNC(initInsertMarker);); - onUnload = QUOTE(_this call DFUNC(placeMarker);); + onLoad = QUOTE(_this call DFUNC(initInsertMarker)); + onUnload = QUOTE(_this call DFUNC(placeMarker)); movingEnable = 1; class controls { diff --git a/addons/markers/XEH_preInit.sqf b/addons/markers/XEH_preInit.sqf index 885a0a3068..142dedb89a 100644 --- a/addons/markers/XEH_preInit.sqf +++ b/addons/markers/XEH_preInit.sqf @@ -6,7 +6,7 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" // init marker types if (isNil QGVAR(MarkersCache)) then { diff --git a/addons/markers/functions/fnc_onLBSelChangedChannel.sqf b/addons/markers/functions/fnc_onLBSelChangedChannel.sqf index d8c2bc71fb..e7b696270f 100644 --- a/addons/markers/functions/fnc_onLBSelChangedChannel.sqf +++ b/addons/markers/functions/fnc_onLBSelChangedChannel.sqf @@ -1,6 +1,6 @@ #include "..\script_component.hpp" /* - * Author: commy2, LinkIsGrim + * Author: commy2, LinkIsGrim, Avokadomos * When the channel list box is changed. * * Arguments: @@ -19,6 +19,4 @@ params ["_ctrl", "_index"]; TRACE_2("params",_ctrl,_index); -private _enabledChannels = false call FUNC(getEnabledChannels); - -setCurrentChannel (_enabledChannels select _index); +setCurrentChannel (parseNumber (_ctrl lbData _index)); diff --git a/addons/markers/initSettings.sqf b/addons/markers/initSettings.inc.sqf similarity index 100% rename from addons/markers/initSettings.sqf rename to addons/markers/initSettings.inc.sqf diff --git a/addons/markers/stringtable.xml b/addons/markers/stringtable.xml index b364c3f50d..f15394e3b5 100644 --- a/addons/markers/stringtable.xml +++ b/addons/markers/stringtable.xml @@ -6,11 +6,13 @@ Escala: %1 Échelle : %1 Масштаб: %1 - スケール: %1 + 大きさ: %1 Skala: %1 Skalierung: %1 + Scala: %1 规模:%1° 크기: %1 + Escala: %1 Direction: %1° @@ -23,7 +25,7 @@ Irány: %1° Direzione: %1° Direção %1 - 方位: %1° + 方向: %1° 방위: %1° 方位:%1° 方位: %1° @@ -36,9 +38,11 @@ 右クリックでリセット Naciśnij PPM żeby zresetować Rechte Maustaste zum Zurücksetzen + Tasto Destro per ripristinare 点击鼠标右键重置 오른쪽 클릭으로 재설정 Click botón derecho para restaurar + Clique com o botão direito para redefinir Markers @@ -59,7 +63,7 @@ Allow moving markers for Erlaube Marker zu bewegen für - 次ユーザーにマーカー移動を許可 + マーカー移動を許可するユーザー 마커 이동 허가 誰可以移動標誌 谁可以移动标识 @@ -78,7 +82,7 @@ Alt 키를 누른 상태에서 마커를 움직일 수 있는 플레이어를 제한합니다. 設定誰可以透過按住Alt鍵來移動標誌 设定谁可以透过按住 Alt 键来移动标识。 - Limita quali giocatori possono spostare i marcatori mentre premono il tasto Alt. + Limita quali giocatori possono spostare i marcatori premendo il tasto Alt. Ogranicz którzy gracze mogą poruszać znacznikami podczas trzymania przycisku Alt. Устанавливает ограничение на перемещения маркеров игроками при помощи клавиши Alt Restringe quais jogadores podem mover os marcadores do mapa enquanto seguram a tecla ALT. @@ -129,7 +133,7 @@ 관리자 Administratorzy Админов - Admins + Administradores Admins Administrátoři Adminler @@ -161,7 +165,7 @@ 분대장과 관리자 Przywódcy grup i Administratorzy Лидеров групп и Админов - Líderes de grupo e Admins + Líderes de grupo e Administradores Chefs de groupe et Admins Velitelé jednotek a Administrátoři Grup Liderleri Ve Adminler @@ -187,12 +191,14 @@ Allow Timestamps Вкл. отображение времени на метках Permettre l'horodatage - タイムスタンプ許可 + タイムスタンプの許可 Permitir marcas de tiempo Zezwól na znaczniki czasu Erlaube Zeitstempel + Permetti marca temporale 允许时间戳 시간 표기 허용 + Permitir Marcação de Tempo Whether to allow timestamps to be automatically applied to markers @@ -202,8 +208,10 @@ Permitir que las marcas de tiempo sean automáticamente aplicadas a los marcadores Zezwól na automatyczne stosowanie znaczników czasu do markerów Ob Zeitstempel automatisch auf Maker angewendet werden sollen. + Se i giocatori possono scegliere di aggiungere in automatico un marco temporale ai propri marcatori. 是否允许时间戳自动应用于标记 허용 시 마커를 내려놓음과 동시에 시간이 표기됩니다 + Permite que marcações de tempo sejam automaticamente aplicadas aos marcadores Timestamp @@ -213,8 +221,10 @@ Marca de tiempo Znacznik czasu Zeitstempel + Marca temporale 时间戳 시간 표기 + Marcação de Tempo Watch Required @@ -224,19 +234,23 @@ Reloj requerido Wymagany zegarek Uhr benötigt + Necessario orologio 需要手表 시계 필요함 + Relógio necessário Timestamp Format Формат времени Horodatage - Format - タイムスタンプ形式 + タイムスタンプの形式 Formato de marca de tiempo Format znacznika czasu Format des Zeitstempels + Formato della marca temporale 时间戳格式 시간 표기 포맷 + Formato da Marcação de Tempo Changes the timestamp format @@ -246,8 +260,10 @@ Cambia el formato de marca de tiempo Zmienia format znacznika czasu Zeitstempel-Format anpassen + Modifica il formato dell'ora nella marca temporale 更改时间戳格式 시간 표기 포맷을 바꿉니다 + Altera a formatação da marcação de tempo "HH" - Hour @@ -257,8 +273,10 @@ "HH" - Hora "HH" - Godziny "HH" - Stunden + "HH" - Ore "HH"—时 "HH" - 시 + HH - Horas "MM" - Minute @@ -268,8 +286,10 @@ "MM" - Minuto "MM" - Minuty "MM" - Minuten + "MM" - Minuti "MM"—分 "MM" - 분 + MM - Minutos "SS" - Seconds @@ -279,8 +299,10 @@ "SS" - Segundos "SS" - Sekundy "SS" - Sekunden + "SS" - Secondi "SS"—秒 "SS" - 초 + SS - Segundos "MM" - Milliseconds @@ -290,8 +312,10 @@ "MM" - Milisegundos "MM" - Milisekundy "MS" - Milisekunden + "MS" - Millisecondi "MS"—毫秒 "MS" - 밀리초 + MM - Milisegundos Timestamp Hour Format @@ -301,8 +325,10 @@ Formato de hora de marca de tiempo Format Godzinnych znaczników czasu Zeitstempel-Stundenformat + Formato ore delle marche temporali 时间戳小时格式 시간 표기 시간 포맷 + Sistema Horário das Marcações de Tempo 24-Hour Clock @@ -312,8 +338,10 @@ Reloj 24-Horas Zegar 24-godzinny 24-Stunden + 24-Ore 24小时制 24시간제 + 24 Horas 12-Hour Clock @@ -323,8 +351,10 @@ Reloj 12-Horas Zegar 12-godzinny 12-Stunden + 12-Ore 12小时制 12시간제 + 12 Horas Changes timestamp to use either 24-hour or 12-hour clock format @@ -334,8 +364,10 @@ Cambia que la marca de tiempo sea en formato de reloj 24-horas o 12-horas Zmienia znacznik czasu tak, aby używał formatu 24-godzinnego lub 12-godzinnego Ändert den Zeitstempel, um entweder das 24-Stunden- oder das 12-Stunden-Format zu verwenden + Determina se le marche temporali sui marcatori saranno in formato 24-Ore o 12-Ore. 改变时间戳以使用24小时或12小时的时钟格式 시간 표기를 24시간제 혹은 12시간제 에서 골라 표기합니다 + Altera a marcação de tempo para usar o formato de relógio 24-horas ou 12-horas diff --git a/addons/maverick/stringtable.xml b/addons/maverick/stringtable.xml index fd0389125d..60af8c830f 100644 --- a/addons/maverick/stringtable.xml +++ b/addons/maverick/stringtable.xml @@ -5,7 +5,7 @@ AGM-65 Maverick L, Laser Guided Anti-Ground-Missile AGM-65 Maverick L, lasergelenkte Luft-Boden-Rakete - AGM-65 Maverick L, Guida Laser Missile Anti-Terra + AGM-65 Maverick L, Missile Aria-Terra Laserguidato AGM-65 マーベリック L、レーザー誘導対地ミサイル AGM-65"小牛"飛彈L型,雷射導引對地導彈 AGM-65"小牛"L型激光制导对地导弹 @@ -70,12 +70,14 @@ MAVL MAVL MAVL + MAVL MAVL MAVL MAVL MAVL MAVL MAVL + MAVL Kh-25ML, Laser Guided Air-to-Ground-Missile @@ -84,7 +86,7 @@ Kh-25ML,雷射導引對地導彈 Kh-25ML,激光制导空地导弹 Kh-25ML、レーザー誘導対地ミサイル - Kh-25ML, a Guida Laser Missile Aria-Terra + Kh-25ML, Missile Aria-Terra Laserguidato Kh-25ML, Kierowany laserowo pocisk powietrze-ziemia Х-25МЛ, ракета Воздух-Земля с лазерным наведением Kh-25ML, Míssil Ar para Chão Guiado a Laser diff --git a/addons/medical/XEH_preInit.sqf b/addons/medical/XEH_preInit.sqf index 9361d05015..894773534a 100644 --- a/addons/medical/XEH_preInit.sqf +++ b/addons/medical/XEH_preInit.sqf @@ -6,6 +6,6 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" ADDON = true; diff --git a/addons/medical/addon.toml b/addons/medical/addon.toml index 7cfef775ee..bf39213892 100644 --- a/addons/medical/addon.toml +++ b/addons/medical/addon.toml @@ -1,2 +1,3 @@ -[preprocess] -enabled = false +[tools] +pboProject_noBinConfig = true +sqfvm_skipConfigChecks = true diff --git a/addons/medical/config.cpp b/addons/medical/config.cpp index 76e9818124..2f1dfbc0ad 100644 --- a/addons/medical/config.cpp +++ b/addons/medical/config.cpp @@ -1,5 +1,6 @@ #include "script_component.hpp" +#pragma hemtt flag pe23_ignore_has_include #if __has_include("\z\ace\addons\nomedical\script_component.hpp") #define PATCH_SKIP "No Medical" #endif diff --git a/addons/medical/functions/fnc_deserializeState.sqf b/addons/medical/functions/fnc_deserializeState.sqf index b85e0b31e2..b7846bf901 100644 --- a/addons/medical/functions/fnc_deserializeState.sqf +++ b/addons/medical/functions/fnc_deserializeState.sqf @@ -17,6 +17,11 @@ */ params [["_unit", objNull, [objNull]], ["_json", "{}", [""]]]; +// Don't run in scheduled environment +if (canSuspend) exitWith { + [FUNC(deserializeState), _this] call CBA_fnc_directCall +}; + if (isNull _unit) exitWith {}; if (!local _unit) exitWith { ERROR_1("unit [%1] is not local",_unit) }; diff --git a/addons/medical/initSettings.sqf b/addons/medical/initSettings.inc.sqf similarity index 100% rename from addons/medical/initSettings.sqf rename to addons/medical/initSettings.inc.sqf diff --git a/addons/medical/stringtable.xml b/addons/medical/stringtable.xml index 5d2b66ae6c..cfc05e4d75 100644 --- a/addons/medical/stringtable.xml +++ b/addons/medical/stringtable.xml @@ -11,13 +11,29 @@ ACE Médico ACE Médical ACE Orvosi Rendszer - ACE Medical + ACE Medica ACE 의료 ACE 医疗 ACE 醫療系統 ACE Medikal ACE 医療 + + ACE Medical Interface + ACE Медицина Интерфейс + ACE Opcje medyczne Interfejs + Médico ACE Interfaz + ACE-Medicsystem Interface + ACE Zdravotnické Rozhraní + ACE Interface Médica + ACE Médical Interface + ACE Interfaccia Medica + ACE 의료 인터페이스 + ACE 医疗 界面 + ACE 醫療系統 介面 + ACE Medikal Arayüz + ACE 医療 インターフェース + Unconscious Wake Up Chance Wahrscheinlichkeit um aufzuwachen @@ -27,7 +43,7 @@ Chance de recuperar consciência 從無意識中甦醒機率 ACE 从无意识中苏醒概率 - Chance di rialzarsi + Probabilità di rinvenire Pravděpodobnost probuzení se z bezvědomí Szansa na wybudzenie nieprzytomnego Posibilidad de recuperar la conciencia @@ -37,13 +53,13 @@ The probability that a person with stable vitals will wake up from unconsciousness (checked every 15 seconds). Wahrscheinlichkeit, dass eine bewusstlose Person mit stabilen Vitalwerten wieder aufwacht (Überprüfung alle 15 Sekunden) - 容体が安定しているユニットが意識回復する確率を設定します。(15 秒毎に確認) + 容体が安定しているユニットが無意識状態から意識回復する確率を設定します。(15 秒毎に確認) Вероятность, что стабилизированный юнит очнется от потери сознания (Проверяется каждые 15 сек) La probabilité pour qu'une unité inconsciente en état stable reprenne conscience spontanément (état vérifié toutes les 15 secondes). A probabilidade que uma unidade com vitais estabilizados possa recuperar consciências (verificado a cada 15 segundos) 生命跡象穩定的單位從無意識狀態中甦醒的機率(每十五秒確認一次) 生命迹象稳定的单位从无意识状态中苏醒的概率(每十五秒确认一次) - La probabilità che un'unità con i segni vitali stabili si risvegli dall'incoscienza (controllata ogni 15 secondi). + La probabilità che un'unità con segni vitali stabili si risvegli dall'incoscienza (controllata ogni 15 secondi). Pravděpodobnost, že se jednotka se stabilními životními známkami probudí z bezvědomí (zkoušeno každých 15 vteřin). Prawdopodobieństwo, że jednostka ze stabilnymi parametrami życiowymi obudzi się z nieprzytomności (sprawdzane co 15 sekund). La probabilidad de que una unidad estabilizada recupere la conciencia y se levante (se comprueba cada 15 segundos) @@ -57,20 +73,22 @@ 腎上腺素甦醒率加成 肾上腺素苏醒概率加成 Erhöhung der Aufwachüberprüfungsrate durch Epinephrin + Rinvenimento più veloce da Epinefrina アドレナリンによる覚醒確率上昇 Zvýšení pravděpodobnosti probuzení s Epinefrinem Увеличение шанса очнуться от адреналина Epinefrin Uyanma Şansı Artışı Aumento de probabilidad de despertarse por epinefrina 에피네프린 사용 시 추가 회복 확률 + Aumento da Chance de Acordar com Epinefrina When an unconscious patient has Epinephrine in their system, the time between spontaneous wake up checks is divided by this value. - 患者の体内に投与されたアドレナリンがある場合、\n覚醒計算の確率が上昇(値で除算)されます。 + 気絶した患者の体内に投与されたアドレナリンがある場合、 覚醒確率計算の実施間隔が値で除算されます。 增加因病患的循環系統裡面的腎上腺素自我甦醒的機率。 增加因病患的循环系统里面的肾上腺素自我苏醒的机率。 Augmente la fréquence des tests de réveil lorsque le patient a de l'épinéphrine dans son système sanguin.\n(L'épinéphrine n'accélère pas la reprise de conscience si la valeur est définie sur 1.) - Aumenta la frequenza dei controlli al risveglio spontaneo quando il paziente ha l'Epinefrina nel suo corpo + Quando un paziente svenuto ha Epinefrina in circolo, il tempo tra verifiche della probabilità di rinvenire viene diviso per questo valore. Zvyšuje jak často je proveden test na probuzení z bezvědomí pokud má pacient Epinefrin ve svém krevním oběhu. Zwiększa częstotliwość spontanicznych wybudzeń, gdy pacjent ma epinefrynę w swoim organizmie. Aumenta o quão frequentemente checagens de acordar acontecem quando o paciente possui epinefrina no seu sistema @@ -102,10 +120,10 @@ 控制裂開或者已包紮傷口是否會讓人跛腳。 控制裂开或者已包扎伤口是否会让人跛脚。 Permet de définir si les plaies ouvertes ou pansées font boiter une personne. - Controlla se le ferite aperte o bendate fanno zoppicare una persona. + Controlla se le ferite aperte o bendate fanno zoppicare un'unità. Nastavuje zda otevřená nebo zavázaná zranění způsobují kulhání. Kontroluje, czy otwarte lub zabandażowane rany powodują utykanie jednostki. - Controla se ferimentos abertos ou enfaixados causam a pessoa a mancar + Controla se ferimentos abertos ou atados causam a pessoa a mancar. Controla si las heridas abiertas o vendadas hacen que una persona cojee. Stellt ein, ob offene oder bandagierte Wunden eine Person zum Humpeln bringen. Контролирует хромоту в случае открытых или забинтованных ран. @@ -120,7 +138,7 @@ Mancar se possuir feridas abertas 傷口裂開時跛腳 伤口裂开时跛脚 - Zoppo per via delle ferite aperte + Zoppica per via di ferite aperte Kulhat s otevřeným zraněním Kuśtykanie przy otwartych ranach Cojera en heridas abiertas @@ -136,7 +154,7 @@ Mancar se possuir feridas abertas ou atadas 使裂開或者包紮過的傷口讓人跛腳 使裂开或者包扎过的伤口让人跛脚 - Zoppicare su ferite aperte o bendate + Zoppica per via di ferite aperte o bendate Kulhat s otevřeným i zavázaným zraněním Kuśtykanie przy otwartych ranach lub zabandażowanych ranach Cojera en heridas abiertas o vendadas @@ -166,10 +184,10 @@ 控制是否讓固定版能夠治療骨折。\n當停用時,受傷時不會導致骨折發生。 控制是否让固定板能够治疗骨折。 \n当停用时,受伤时不会导致骨折发生。 Permet de définir le niveau d'efficacité des attelles pour le traitement des fractures.\nSi l'option est désactivée, les blessures ne causent pas de fractures. - Controlla l'effetto dell'utilizzo di stecche per curare le fratture. Quando disabilitato, le lesioni non causano fratture. + Controlla l'effetto dell'utilizzo di gessature per curare le fratture.\nSe disabilitato, le ferite non causano fratture. Nastavuje efekt dlahy při léčení zlomenin.\nPokud je tato možnost vypnuta, zranění nebudou způsobovat zlomeniny. Kontroluje efekt użycia szyn do leczenia złamań.\n Po wyłączeniu obrażenia nie powodują złamań. - Controla o efeito de uso de talas para tratar fraturas. \nQunado desabilitado, ferimentos não causam fraturas. + Controla o efeito de uso de talas para tratar fraturas.\nQuando desabilitado, ferimentos não causam fraturas. Controla el efecto del uso de férulas para tratar fracturas. \n Cuando está desactivado, las lesiones no causan fracturas. Kontrolliert den Effekt wenn Schienen verwendet werden, um Knochenbrüche zu behandeln.\nWenn diese Einstellung nicht aktiviert ist, verursachen Verletzungen keine Knochenbrüche. Управляет эффектом использования шин для лечения переломов.\nПри отключении травмы не вызывают переломов. @@ -181,10 +199,10 @@ Шины полностью лечат перелом 添え木で骨折完治 Les attelles guérissent complètement les fractures - Tala cura fraturas completamente + Talas curam fraturas completamente 固定板完全治癒骨折 固定板完全治愈骨折 - Le gessature curano al massimo le fratture + Le gessature curano completamente le fratture Dlahy kompletně léčí zlomeniny Szyny leczą zupełnie złamania Férulas sanan completamente las fracturas @@ -197,10 +215,10 @@ Шины вылечивают, но не дают бегать 添え木で治癒可能、走れないように Les attelles guérissent les fractures, mais empêchent de sprinter - Talas curam (mas não consegue correr) + Talas curam, mas não permitem correr 固定版能治癒骨折,但無法奔跑 固定板能治愈骨折,但无法奔跑 - Le gessature curano, ma non puoi correre + Le gessature curano, ma non puoi scattare Dlahy léčí, ale zněmožňují sprintování Szyny leczą, ale uniemożliwiają sprint Las férulas sanan, pero no pueden correr @@ -212,6 +230,7 @@ Splints Heal, but Cannot Jog Les attelles guérissent les fractures, mais empêchent de courir 添え木で治癒可能、駆け足できないように + Le gessature curano, ma non puoi correre Ateller İyileştirir, Ama Koşu Yapamaz Las férulas sanan, pero no pueden trotar Шины вылечивают, но не дают бежать трусцой @@ -219,12 +238,14 @@ Schiene heilt, aber verhindert Sprinten 부목이 치료는 하지만 빨리 걷지 못함 固定板能治愈骨折,但无法慢跑 + Talas curam, mas não permitem trotar Fracture Chance Chance de fracture 骨折確率 骨折概率 + Probabilità di frattura Šance na zlomeninu Шанс перелома Szansa na złamanie @@ -232,10 +253,12 @@ Probabilidad de fractura Wahrscheinlichkeit einer Fraktur 골절 확률 + Chance de Fratura The probability of a fracture causing wound resulting in a fracture. La probabilité pour qu'une blessure pouvant causer une fracture en crée effectivement une. + La probabilità che una ferita in grado di causare una frattura, causerà veramente una frattura. 骨折の原因となる負傷が骨折に至る確率を設定します。 骨折导致的伤口再次骨折的可能性。 Výška šance kdy zranění způsobující zlomeniny skutečně způsobí zlomeninu. @@ -245,6 +268,7 @@ La probabilidad de que una herida que pueda provocar una fractura, provoque una fractura. Die Wahrscheinlichkeit, dass eine Wunde, die eine Fraktur verursachen würde, tatsächlich zu einer Fraktur führt. 상처를 입을 때 골절에 얼마나 관여할지를 결정합니다. + A probabilidade de uma ferida passível de fratura causar uma fratura. Enabled for @@ -274,7 +298,7 @@ Sélectionne pour quelles unités les soins avancés seront actifs. Kiválasztható, mely egységek számára legyen engedélyezve a fejlett orvosi rendszer Seleziona per quali unità verrà abilitato il sistema medico avanzato - 選択されたユニットが、高度な医療が使えるようになります + 選択されたユニットが、高度な医療システムを使えるようになります 어느 인원에게 고급 의료 시스템을 적용시킬지 선택하십시요. 选择进阶医疗系统影响的物体 選擇進階醫療系統影響的對象 @@ -376,7 +400,7 @@ Estável После стабилизации Stabile - 安静下 + 安定下 안정된 稳定状态下 穩定狀態下 @@ -393,7 +417,7 @@ Медик Médico Orvosi - 治療 + 医療 의료 医疗设定 醫療設定 @@ -407,9 +431,9 @@ A distância de %1 está muito longe para tratamento La distancia hasta %1 se ha agrandado demasiado para el tratamiento %1 je příliš daleko, léčba není možná - Distanza da %1 è diventata troppo alta per permettere trattamento + Distanza da %1 è diventata troppo alta per permettere trattamenti %1 est trop loin pour être soigné. - %1 は治療出来ない距離まで離れた + %1 は離れすぎていて治療出来ない %1 부터의 거리가 너무 멀어 치료할 수 없습니다 设定当距离超过%1将不能使用治疗动作 設定當距離超過%1將不能使用治療動作 @@ -419,7 +443,7 @@ Open lid Deckel aufklappen フタを開ける - Apri lid + Apri coperchio 打開蓋子 打开盖子 뚜껑 열기 @@ -435,7 +459,7 @@ Close lid Deckel zuklappen フタを閉める - Chiudi lid + Chiudi coperchio 關閉蓋子 关闭盖子 뚜껑 닫기 diff --git a/addons/medical_ai/XEH_postInit.sqf b/addons/medical_ai/XEH_postInit.sqf index 778dafb72b..c53cb78934 100644 --- a/addons/medical_ai/XEH_postInit.sqf +++ b/addons/medical_ai/XEH_postInit.sqf @@ -19,6 +19,6 @@ _unit setVariable [QGVAR(lastSuppressed), CBA_missionTime]; }] call CBA_fnc_addClassEventHandler; - #include "stateMachine.sqf" + #include "stateMachine.inc.sqf" }] call CBA_fnc_addEventHandler; diff --git a/addons/medical_ai/XEH_preInit.sqf b/addons/medical_ai/XEH_preInit.sqf index 774ef681f3..5725d1e119 100644 --- a/addons/medical_ai/XEH_preInit.sqf +++ b/addons/medical_ai/XEH_preInit.sqf @@ -6,7 +6,7 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" // default time values for AI being ready to heal, used in fnc_isSafe if (isNil QGVAR(timeSafe_shoot)) then { GVAR(timeSafe_shoot) = 30; }; diff --git a/addons/medical_ai/addon.toml b/addons/medical_ai/addon.toml index 7cfef775ee..bf39213892 100644 --- a/addons/medical_ai/addon.toml +++ b/addons/medical_ai/addon.toml @@ -1,2 +1,3 @@ -[preprocess] -enabled = false +[tools] +pboProject_noBinConfig = true +sqfvm_skipConfigChecks = true diff --git a/addons/medical_ai/config.cpp b/addons/medical_ai/config.cpp index b9fb4386ad..62a387cc05 100644 --- a/addons/medical_ai/config.cpp +++ b/addons/medical_ai/config.cpp @@ -1,5 +1,6 @@ #include "script_component.hpp" +#pragma hemtt flag pe23_ignore_has_include #if __has_include("\z\ace\addons\nomedical\script_component.hpp") #define PATCH_SKIP "No Medical" #endif diff --git a/addons/medical_ai/initSettings.sqf b/addons/medical_ai/initSettings.inc.sqf similarity index 100% rename from addons/medical_ai/initSettings.sqf rename to addons/medical_ai/initSettings.inc.sqf diff --git a/addons/medical_ai/stateMachine.sqf b/addons/medical_ai/stateMachine.inc.sqf similarity index 100% rename from addons/medical_ai/stateMachine.sqf rename to addons/medical_ai/stateMachine.inc.sqf diff --git a/addons/medical_ai/stringtable.xml b/addons/medical_ai/stringtable.xml index 0ae751dec7..61cebf9fb5 100644 --- a/addons/medical_ai/stringtable.xml +++ b/addons/medical_ai/stringtable.xml @@ -4,13 +4,13 @@ Medic AI Sanitäts KI - AI衛生兵 + 衛生兵AI ИИ Медик Médecine IA - IA Médico + IA Médica AI 医疗兵 AI醫療兵 - Medico AI + IA Medica Zdravotnická AI Medyk AI Médico para IA @@ -37,7 +37,7 @@ Nur Server und HC Sólo Server y HC Только сервер и HC - サーバーと HC のみ + サーバーとHCのみ Tylko serwer i HC Seulement sur le serveur ou le HC Solo Server e HC @@ -52,16 +52,31 @@ Require Items Wymagane Przedmioty Erfordere Gegenstände + Richiede risorse mediche 아이템 필요 + Items requis + Exigir Itens + アイテムを要求 AI will only perform medical treatment if they have the necessary items in their inventory. AI będzie wykonywać zabiegi medyczne tylko wtedy, gdy ma w ekwipunku niezbędne przedmioty. Die KI führt nur dann medizinische Behandlungen durch, wenn sie die erforderlichen Gegenstände in ihrem Inventar hat. + L'IA effettua trattamenti medici solo se è equipaggiata delle risorse mediche necessarie. 소지품에 필요한 아이템이 있을 경우에만 인공지능이 치료를 진행합니다. + Les IA n'effectueront un traitement médical que si elles ont le matériel nécessaire dans leur inventaire. + A IA só irá realizar tratamento médico se tiver os itens necessários em seu inventário. + AIのインベントリに必要なアイテムがある場合にのみ治療を実行します。 Auto Convert Items for AI + Automatyczna Konwersja Przedmiotów dla AI + 인공지능 아이템 자동 변환 + Conversion automatique des items pour les IA + Automatische Konvertierung von Gegenständen der KI + Conversione automatica di risorse mediche per IA + Conversão automática de itens para IA + AIのアイテムを自動変換 diff --git a/addons/medical_blood/XEH_preInit.sqf b/addons/medical_blood/XEH_preInit.sqf index 3d10086703..852b4dbe73 100644 --- a/addons/medical_blood/XEH_preInit.sqf +++ b/addons/medical_blood/XEH_preInit.sqf @@ -6,7 +6,7 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" // Damage types which do not cause blood spurts GVAR(noBloodDamageTypes) = createHashMapFromArray (call (uiNamespace getVariable QGVAR(noBloodDamageTypes))); diff --git a/addons/medical_blood/addon.toml b/addons/medical_blood/addon.toml index 7cfef775ee..bf39213892 100644 --- a/addons/medical_blood/addon.toml +++ b/addons/medical_blood/addon.toml @@ -1,2 +1,3 @@ -[preprocess] -enabled = false +[tools] +pboProject_noBinConfig = true +sqfvm_skipConfigChecks = true diff --git a/addons/medical_blood/config.cpp b/addons/medical_blood/config.cpp index c10bd80ee0..d5cf4b0088 100644 --- a/addons/medical_blood/config.cpp +++ b/addons/medical_blood/config.cpp @@ -1,5 +1,6 @@ #include "script_component.hpp" +#pragma hemtt flag pe23_ignore_has_include #if __has_include("\z\ace\addons\nomedical\script_component.hpp") #define PATCH_SKIP "No Medical" #endif diff --git a/addons/medical_blood/initSettings.sqf b/addons/medical_blood/initSettings.inc.sqf similarity index 100% rename from addons/medical_blood/initSettings.sqf rename to addons/medical_blood/initSettings.inc.sqf diff --git a/addons/medical_blood/stringtable.xml b/addons/medical_blood/stringtable.xml index 5320cab219..6c3be0c557 100644 --- a/addons/medical_blood/stringtable.xml +++ b/addons/medical_blood/stringtable.xml @@ -24,7 +24,7 @@ 피흘리기 활성화 Włącz ślady krwi na ziemi Activer les gouttes de sang - Abilita Perdite di Sangue + Abilita Chiazze di Sangue 开启血液滴落效果 開啟血液滴落效果 Разрешить капли крови @@ -45,7 +45,7 @@ Umożliwia tworzenie śladów krwi, gdy jednostki krwawią lub otrzymują obrażenia. Habilita la creación de sangrecuando la unidad está sangrando o recibe daño Kişiler kanarken veya hasar alırken kan damlası oluşumunu sağlar. - Abilita la creazione di chiazze di sangue quando un'unità sta sanguinando o viene ferita. + Abilita la formazione di chiazze di sangue quando un'unità sta sanguinando o viene ferita. Ermöglicht das Erstellen von Blutstropfen, wenn Einheiten am Bluten sind oder Schaden nehmen. 출혈이나 부상 시 핏자국이 생기는것을 활성화합니다. @@ -73,7 +73,7 @@ Define o limite máximo de objetos de gota de sangue que podem ser criados, quantidades excessivas podem causar lag de FPS. 设置最大可存在的血迹数量。过量会导致帧数低下或卡顿 設定最大可存在的血跡數量。太極端的數量會導致幀數低落或卡頓 - Imposta il numero massimo di chiazze di sangue che possono essere depositate, quantità eccessive possono causare del lag di FPS. + Imposta il numero massimo di chiazze di sangue che possono essere generate, quantità eccessive possono causare lag di FPS. Nastavuje maximum objektů krve na zemi, příliš mnoho může způsobit pokles FPS Definiuje maksymalną ilość śladów krwi, które mogą zostać stworzone, nadmierne ilości mogą powodować spadki FPS. Fija el límite de objetos de sangre que aparecerán, cantidades excesivas pueden causar caídas de FPS @@ -105,7 +105,7 @@ Controla o tempo de vida que um objeto de gota de sangue tem. 控制血迹在地上的时长 控制血跡在地上的時長 - Controlla la durata delle chiazze di sangue. + Controlla la durata di permanenza delle chiazze di sangue. Nastavuje jak dlouho objekty krve na zemi vydrží. Kontroluje czas trwania śladów krwi. Controla el tiempo de vida que tendrán los objetos de sangre diff --git a/addons/medical_damage/XEH_preInit.sqf b/addons/medical_damage/XEH_preInit.sqf index 26445ad61a..344b9c81ee 100644 --- a/addons/medical_damage/XEH_preInit.sqf +++ b/addons/medical_damage/XEH_preInit.sqf @@ -6,7 +6,7 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" call FUNC(parseConfigForInjuries); diff --git a/addons/medical_damage/addon.toml b/addons/medical_damage/addon.toml index 7cfef775ee..bf39213892 100644 --- a/addons/medical_damage/addon.toml +++ b/addons/medical_damage/addon.toml @@ -1,2 +1,3 @@ -[preprocess] -enabled = false +[tools] +pboProject_noBinConfig = true +sqfvm_skipConfigChecks = true diff --git a/addons/medical_damage/config.cpp b/addons/medical_damage/config.cpp index 712ec44a01..4df519a648 100644 --- a/addons/medical_damage/config.cpp +++ b/addons/medical_damage/config.cpp @@ -1,5 +1,6 @@ #include "script_component.hpp" +#pragma hemtt flag pe23_ignore_has_include #if __has_include("\z\ace\addons\nomedical\script_component.hpp") #define PATCH_SKIP "No Medical" #endif diff --git a/addons/medical_damage/functions/fnc_woundsHandlerVehiclehit.sqf b/addons/medical_damage/functions/fnc_woundsHandlerVehiclehit.sqf index 9c4f864f97..5f4bd35941 100644 --- a/addons/medical_damage/functions/fnc_woundsHandlerVehiclehit.sqf +++ b/addons/medical_damage/functions/fnc_woundsHandlerVehiclehit.sqf @@ -26,12 +26,21 @@ if (count _allDamages > 1) exitWith {_this}; // damage to structural is low unless it's a very large explosion, in which case it is typically >= 1 private _damageToApply = (abs (_allDamages select 0 select 0)); -private _newDamages = []; +private _damageMap = createHashMap; +private _bodyPart = ""; +private _allBodyParts = ALL_BODY_PARTS; // micro-optimization here and above, don't recreate this array every time // hitpoints are randomized, more damage means more wounds in different body parts +// use a hashmap so we only create one entry in _newDamages per body part for "_i" from 1 to (_damageToApply * 6) do { - _newDamages pushBack [_damageToApply, selectRandom ALL_BODY_PARTS, _damageToApply] + _bodyPart = selectRandom _allBodyParts; + _damageMap set [_bodyPart, (_damageMap getOrDefault [_bodyPart, 0]) + _damageToApply]; }; +private _newDamages = []; +{ + _newDamages pushBack [_damageMap get _x, _x, _damageToApply]; +} forEach (keys _damageMap); // micro-optimization again, two 'get's is still faster than iterating over a hashmap + TRACE_1("Vehicle explosion handled, passing damage", _newDamages); [_unit, _newDamages, _typeOfDamage] //return diff --git a/addons/medical_damage/initSettings.sqf b/addons/medical_damage/initSettings.inc.sqf similarity index 99% rename from addons/medical_damage/initSettings.sqf rename to addons/medical_damage/initSettings.inc.sqf index 0ce21319e2..229b086505 100644 --- a/addons/medical_damage/initSettings.sqf +++ b/addons/medical_damage/initSettings.inc.sqf @@ -3,7 +3,7 @@ "LIST", [LSTRING(fatalDamageSource_DisplayName), LSTRING(fatalDamageSource_Description)], [ELSTRING(medical,Category)], - [[0, 1, 2], [LSTRING(fatalDamageSource_vitalShotsOnly), LSTRING(fatalDamageSource_trauma), LSTRING(fatalDamageSource_both)], 0], + [[0, 1, 2], [LSTRING(fatalDamageSource_vitalShotsOnly), LSTRING(fatalDamageSource_trauma), LSTRING(fatalDamageSource_both)], 2], true ] call CBA_fnc_addSetting; diff --git a/addons/medical_damage/stringtable.xml b/addons/medical_damage/stringtable.xml index 1b8ec6b113..63d10dcd35 100644 --- a/addons/medical_damage/stringtable.xml +++ b/addons/medical_damage/stringtable.xml @@ -40,7 +40,7 @@ Limite de Dano Crítico da IA AI重擊承受量 AI 临界伤害阈值 - Soglia dei danni critici dell AI + Soglia dei danni critici dell'IA Kritická míra poškození pro AI Próg Obrażeń Krytycznych AI Límite de daño crítico de la IA @@ -55,7 +55,7 @@ Define a quantidade de dano que uma IA pode receber antes de ficar inconsciente. 設定AI在無意識之前能承受多少傷害 设置 AI 在昏迷前可以承受的伤害量(如果启用了“创伤总和”,则会死亡)。 - Imposta la quantità di danno che un'unità AI può ricevere prima di perdere conoscenza. + Imposta la quantità di danno che un'unità IA può ricevere prima di perdere conoscenza. Nastavuje kolik poškození AI může obdržet než upadne do bezvědomí. Definiuje ilość obrażeń jaką może przyjąć AI przed straceniem przytomności (oraz śmierci gdy "Suma urazów" jest włączona). Fijar la cantidad de daño que la IA puede recivir antes de caer inconsciente @@ -116,7 +116,7 @@ Large Scrape Großer Kratzer - Alta Scorticatura + Ampia Scorticatura Большая ссадина Grande écorchure Duże draśnięcie @@ -150,7 +150,7 @@ Minor Avulsion Kleine Avulsion - Minima Avulsione + Piccola Avulsione Малая Авульсия Petite avulsion Pomniejsza rana płatowa @@ -184,7 +184,7 @@ Large Avulsion Große Avulsion - Alta Avulsione + Grande Avulsione Большая Авульсия Grande avulsion Duża rana płatowa @@ -209,7 +209,7 @@ Zúzódás Contusão Modřina - 打ち傷 + 打撲傷 挫傷 Yara @@ -218,7 +218,7 @@ Minor Bruise Kleine Prellung - Minima Contusione + Piccola Contusione Слабый ушиб Petit hématome Pomniejsze stłuczenie @@ -226,7 +226,7 @@ Kis zúzódás Contusão leve Malá modřina - 小さな打ち傷 + 小さな打撲傷 조금 멍듬 小挫傷 Küçük Yara @@ -243,7 +243,7 @@ Közepes zúzódás Contusão média Středně velká modřina - 中くらいの打ち傷 + 中くらいの打撲傷 꽤 멍듬 中度挫傷 Orta Yara @@ -252,7 +252,7 @@ Large Bruise Große Prellung - Alta Contusione + Grande Contusione Сильный ушиб Grand hématome Duże stłuczenie @@ -286,7 +286,7 @@ Minor Crushed Tissue Kleine Quetschverletzung - Minimo Tessuto Schiacciato + Poco Tessuto Schiacciato Слабая компрессионная травма Tissu légèrement écrasé Pomniejsze zgniecienie tkanek miękkich @@ -320,7 +320,7 @@ Large Crushed Tissue Große Quetschverletzung - Alto Tessuto Schiacciato + Molto Tessuto Schiacciato Сильная компрессионная травма Tissu fortement écrasé Duże zgniecienie tkanek miękkich @@ -473,7 +473,7 @@ Velocity Wound Ballistisches Trauma - Velocità Ferita + Ferita Balistica Огнестрельная рана Rana postrzałowa Plaie pénétrante @@ -490,7 +490,7 @@ Small Velocity Wound Kleines Ballistisches Trauma - Lenta Velocità Ferita + Piccola Ferita Balistica Малая огнестрельная рана Pomniejsza rana postrzałowa Herida de bala menor @@ -507,7 +507,7 @@ Medium Velocity Wound Mittleres Ballistisches Trauma - Media Velocità Ferita + Media Ferita Balistica Средняя огнестрельная рана Średnia rana postrzałowa Herida de bala media @@ -524,7 +524,7 @@ Large Velocity Wound Großes Ballistisches Trauma - Alta Velocità Ferita + Grande Ferita Balistica Большая огнестрельная рана Duża rana postrzałowa Herida de bala severa @@ -541,7 +541,7 @@ Puncture Wound Stichwunde - Puntura Ferita + Ferita Perforante Колотая рана Rana kłuta Blessure par perforation @@ -558,7 +558,7 @@ Minor Puncture Wound Kleine Stichwunde - Piccola Puntura Ferita + Piccola Ferita Perforante Малая колотая рана Pomniejsza rana kłuta Herida punzante menor @@ -575,7 +575,7 @@ Medium Puncture Wound Mittlere Stichwunde - Media Puntura Ferita + Media Ferita Perforante Средняя колотая рана Średnia rana kłuta Herida punzante media @@ -592,7 +592,7 @@ Large Puncture Wound Große Stichwunde - Grande Puntura Ferita + Grande Ferita Perforante Большая колотая рана Duża rana kłuta Herida punzante severa @@ -609,11 +609,11 @@ Fatal Damage Source Причина смертельного урона - 致命傷の原因 + 致命ダメージの原因 致命傷來源 致命伤来源 Cause de blessure mortelle - Fonte del danno fatale + Fonte di danni letali Zdroj smrtelné škody Źródło obrażeń krytycznych Fonte de Dano Fatal @@ -625,10 +625,10 @@ Determines what damage can be fatal Определяет какой урон будет смертельным - 致命傷となるダメージの種類を決定します。 + 致命となるダメージの種類を決定します。 決定何種傷害為致命 确定哪些伤害可能是致命的 - Determina quali danni possono essere fatali + Determina quali danni possono essere letali Détermine le type de blessures pouvant être fatales. Nastavuje jaké poškození může být smrtelné Określa jakie obrażenia mogą być śmiertelne @@ -641,14 +641,14 @@ Only large hits to vital organs Только серьезные попадания в жизненно важные органы - 重要臓器に大きなダメージを受けた時のみ + 重要臓器に大きな被弾があった時のみ 只有重要器官之重傷 只有重要器官受到重创 Grosses blessures sur organes vitaux Solo grandi colpi agli organi vitali Pouze zásahy do životně důležitých orgánů Tylko duże trafienia w ważne narządy - Apenas danos largos a órgãos vitais + Apenas danos graves a órgãos vitais Solo grandes heridas en organos vitales Sadece hayati organlara büyük vuruşlar Nur schwere Treffer an lebenswichtigen Organen @@ -676,10 +676,10 @@ 兩者都是 二者之一 Les deux - o + Entrambi Kterýkoliv ze dvou Zarówno - Ou + Ambos Ambos Ikisinden biri Beide @@ -690,49 +690,58 @@ 熱傷 Brûlure thermique Термический ожог + Ustione Termica Thermische Verbrennung Oparzenie 热灼伤 화상 Quemadura térmica + Queimadura Térmica Minor Thermal Burn 軽度の熱傷 Légère brûlure thermique + Leggera Ustione Termica Незначительный термический ожог Leichte thermische Verbrennung Pomniejsze oparzenie 轻微热灼伤 작은 화상 Quemadura térmica menor + Queimadura Térmica Leve Medium Thermal Burn 中度の熱傷 Brûlure thermique modérée + Media Ustione Termica Средний термический ожог Mittlere thermische Verbrennung Średnie oparzenie 中度热灼伤 꽤 큰 화상 Quemadura térmica media + Queimadura Térmica Média Major Thermal Burn 重度の熱傷 Sévère brûlure thermique + Severa Ustione Termica Сильный термический ожог Schwere thermische Verbrennung Duże oparzenie 重度热灼伤 심각한 화상 Quemadura térmica severa + Queimadura Térmica Grave Unit Damage Threshold Schwelle für Schaden Seuil de dégâts + Soglia di danni critici ユニットのダメージしきい値 Práh poškození Порог урона @@ -741,12 +750,14 @@ Umbral de daño de unidad 单位伤害阈值 유닛 피해 한계점 + Limite de Dano em Unidade Sets the amount of damage a unit can receive before going unconscious. (0 for mission default) Legt die Höhe des Schadens fest, den eine Einheit erhalten kann, bevor diese ohnmächtig wird. (0 für Misionsnormalwert) + Determina il livello di danni sopportabili da un'unità senza svenire. (0 per il valore predefinito dalla missione) Définit la quantité de dégâts que l'unité peut subir avant de perdre connaissance (ou mourir, si l'option "Somme des traumatismes" est sélectionnée).\n(0 utilise la valeur définie dans la mission.) - ユニットが気絶するまで許容できるダメージ値を設定できます。(ミッション開始時は0) + このユニットが気絶するまでに受けられるダメージ量を設定します。 (ミッション標準は0) Určuje kolik poškození může jednotka utrpět než upadne do bezvědomí. (pro použití standardní hodnoty mise zadejte 0) Устанавливает количество урона, которое может получить юнит перед тем, как потерять сознание. (0 для значения миссии) Ustawia próg obrażeń jakie może otrzymać jednostka przed utratą przytomności. (0 jako ustawienie domyślne misji) @@ -754,21 +765,25 @@ Determina la cantidad de daño que puede recibir una unidad antes de quedar inconsciente (0 para predeterminado de misión) 设定一个单位在昏迷前所能承受的伤害量。(任务默认为0) 이 유닛이 얼마나 많은 피해를 받아야 기절할 지 정합니다. (0은 미션 기본 설정을 사용합니다) + Define a quantidade de dano que uma unidade pode receber antes de ficar inconsciente. (0 para o padrão da missão) Pain Unconscious Chance Шанс потерять сознание от боли Szansa na nieprzytomność przez ból + Probabilità Svenimento da Dolore 痛みによる気絶確率 Probabilidad de inconsciencia por dolor Douleur - Chance d'évanouissement Chance für Bewusslosigkeit durch Schmerz 疼痛昏厥概率 고통으로 인한 기절 확률 + Chance de Inconsciência por Dor The probability of a person falling unconscious when their pain is above the tolerance threshold upon receiving damage. Шанс, что человек потеряет сознание, когда его боль выше допустимого порога при получении травмы. + La probabilità che un'unità perda i sensi quando il suo dolore è sopra la soglia critica ricevendo danni. Szansa że osoba straci przytomność gdy jej ból jest powyżej tolerowalnego progu podczas otrzymywania obrażeń. ユニットがダメージを受けた時の痛みが許容しきい値を超えていた場合に気絶する確率を設定します。 La probabilidad de que una persona caiga inconsciente cuando su dolor está por encima del umbral al haber recibido daño. @@ -776,46 +791,55 @@ Die Wahrscheinlichkeit, dass eine Person bewusstlos wird, wenn ihre Schmerzen bei einer Verwundung über der Toleranzschwelle liegen. 当一个人的疼痛超过承受能力的极限时,他陷入昏迷的概率。 고통 한계점을 넘을 시 기절하는 확률을 정합니다. + A probabilidade de uma pessoa ficar inconsciente quando sua dor está acima do limite de tolerância ao receber dano. Pain Unconscious Threshold Порог боли для потери сознания + Soglia Critica di Dolore Seuil d'inconscience par la douleur. 気絶する痛みのしきい値 Próg Nieprzytomności od Bólu Schmerz-Bewusstlosigkeit-Grenze 고통 기절 한계점 + Limite de Dor Antes da Inconsciência Sets the threshold for severe pain, above which a person can fall unconscious upon receiving damage. Устанавливает количество боли от полученной травмы, при котором юнит может потерять сознание. + Determina la soglia per forte dolore, al di sopra di cui una persona può svenire se riceve danni. Définis le niveau de douleur à partir duquel une personne peut perdre connaissance. Cf PainUnconsciousChance. 激しい痛みのしきい値を設定します。このしきい値を超えた状態でダメージを受けると意識を失う可能性があります。 Ustawia próg silnego bólu, powyżej którego osoba może stracić przytomność po otrzymaniu obrażeń. Legt die Grenze für starke Schmerzen fest, oberhalb derer eine Person bei erlittenem Schaden bewusstlos werden kann. 사람이 데미지를 입었을 때 의식불명 상태가 될 수 있는 심각한 고통의 한계점을 설정합니다. + Define o limite para dor severa, acima do qual uma pessoa pode ficar inconsciente ao receber dano. Fatal Injury Death Chance Вероятность смерти от смертельной травмы Probabilidad de muerte por herida fatal + Probabilità di morte da ferita letale Blessure mortelle - Chance de décès Szana na śmierć przy śmiertelej ranie 致命傷による死亡確率 Tödliche Verletzung - Wahrscheinlichkeit des Todes 致命伤死亡概率 치명상 사망 확률 + Chance de Morte por Ferimento Fatal The chance of dying to a fatal injury. Шанс умереть от смертельной травмы. La probabilidad de morir a causa de una herida fatal. + La probabilità che una ferita letale provochi la morte dell'unità. La probabilité de mourir lors d'une "blessure mortelle".\nUne blessure mortelle est définie par des dommages importants à la tête ou au cœur. Szansa na śmierć po otrzymaniu śmiertelnej rany. 致命傷による死亡確率を設定します。 Die Wahrscheinlichkeit, an einer eigentlich tödlichen Verletzung zu sterben. 死于致命伤的概率。 치명상으로 인해 사망할 확률을 정합니다. + A chance de morrer para um ferimento fatal. diff --git a/addons/medical_engine/CfgMoves.hpp b/addons/medical_engine/CfgMoves.hpp index 7c99321887..34f0572479 100644 --- a/addons/medical_engine/CfgMoves.hpp +++ b/addons/medical_engine/CfgMoves.hpp @@ -1,4 +1,3 @@ - class CfgMovesBasic; class CfgMovesMaleSdr: CfgMovesBasic { class States { @@ -10,6 +9,11 @@ class CfgMovesMaleSdr: CfgMovesBasic { class DeadState; class UNCON_ANIM(1): DeadState { + // Prevents AI from moving torso and head when unconscious + aiming = "aimingNo"; + aimingBody = "aimingUpNo"; + head = "headNo"; + file = QPATHTO_T(data\ace_unconscious_1.rtm); }; diff --git a/addons/medical_engine/XEH_preInit.sqf b/addons/medical_engine/XEH_preInit.sqf index 379b30da4b..dab2e7efe3 100644 --- a/addons/medical_engine/XEH_preInit.sqf +++ b/addons/medical_engine/XEH_preInit.sqf @@ -6,7 +6,7 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" // Define "Constants" variables (both are macros defined in script_macros_medical.hpp, look there for actual variable names) if (isNil QUOTE(SPONTANEOUS_WAKE_UP_INTERVAL)) then {SPONTANEOUS_WAKE_UP_INTERVAL = SPONTANEOUS_WAKE_UP_INTERVAL_DEFAULT}; diff --git a/addons/medical_engine/addon.toml b/addons/medical_engine/addon.toml index 7cfef775ee..bf39213892 100644 --- a/addons/medical_engine/addon.toml +++ b/addons/medical_engine/addon.toml @@ -1,2 +1,3 @@ -[preprocess] -enabled = false +[tools] +pboProject_noBinConfig = true +sqfvm_skipConfigChecks = true diff --git a/addons/medical_engine/config.cpp b/addons/medical_engine/config.cpp index 8d718155d1..2d7926aa41 100644 --- a/addons/medical_engine/config.cpp +++ b/addons/medical_engine/config.cpp @@ -1,5 +1,6 @@ #include "script_component.hpp" +#pragma hemtt flag pe23_ignore_has_include #if __has_include("\z\ace\addons\nomedical\script_component.hpp") #define PATCH_SKIP "No Medical" #endif diff --git a/addons/medical_engine/data/ace_unconscious_1.rtm b/addons/medical_engine/data/ace_unconscious_1.rtm index 8480d5381f..9c34d6ffcd 100644 Binary files a/addons/medical_engine/data/ace_unconscious_1.rtm and b/addons/medical_engine/data/ace_unconscious_1.rtm differ diff --git a/addons/medical_engine/data/ace_unconscious_1_1.rtm b/addons/medical_engine/data/ace_unconscious_1_1.rtm index 0dc232fad7..c988670ade 100644 Binary files a/addons/medical_engine/data/ace_unconscious_1_1.rtm and b/addons/medical_engine/data/ace_unconscious_1_1.rtm differ diff --git a/addons/medical_engine/data/ace_unconscious_2.rtm b/addons/medical_engine/data/ace_unconscious_2.rtm index c6d539ce65..0a37e2424c 100644 Binary files a/addons/medical_engine/data/ace_unconscious_2.rtm and b/addons/medical_engine/data/ace_unconscious_2.rtm differ diff --git a/addons/medical_engine/data/ace_unconscious_2_1.rtm b/addons/medical_engine/data/ace_unconscious_2_1.rtm index 8f44925a2d..3173fa18fb 100644 Binary files a/addons/medical_engine/data/ace_unconscious_2_1.rtm and b/addons/medical_engine/data/ace_unconscious_2_1.rtm differ diff --git a/addons/medical_engine/data/ace_unconscious_3.rtm b/addons/medical_engine/data/ace_unconscious_3.rtm index 8eedf66e5f..5498e928df 100644 Binary files a/addons/medical_engine/data/ace_unconscious_3.rtm and b/addons/medical_engine/data/ace_unconscious_3.rtm differ diff --git a/addons/medical_engine/data/ace_unconscious_3_1.rtm b/addons/medical_engine/data/ace_unconscious_3_1.rtm index 110e048697..19a4de3971 100644 Binary files a/addons/medical_engine/data/ace_unconscious_3_1.rtm and b/addons/medical_engine/data/ace_unconscious_3_1.rtm differ diff --git a/addons/medical_engine/data/ace_unconscious_4.rtm b/addons/medical_engine/data/ace_unconscious_4.rtm index 9f10d57b81..4fcf5653f0 100644 Binary files a/addons/medical_engine/data/ace_unconscious_4.rtm and b/addons/medical_engine/data/ace_unconscious_4.rtm differ diff --git a/addons/medical_engine/data/ace_unconscious_4_1.rtm b/addons/medical_engine/data/ace_unconscious_4_1.rtm index 814049bfbc..df30a96f78 100644 Binary files a/addons/medical_engine/data/ace_unconscious_4_1.rtm and b/addons/medical_engine/data/ace_unconscious_4_1.rtm differ diff --git a/addons/medical_engine/data/ace_unconscious_5.rtm b/addons/medical_engine/data/ace_unconscious_5.rtm index 08d5bd81df..7915a09112 100644 Binary files a/addons/medical_engine/data/ace_unconscious_5.rtm and b/addons/medical_engine/data/ace_unconscious_5.rtm differ diff --git a/addons/medical_engine/data/ace_unconscious_5_1.rtm b/addons/medical_engine/data/ace_unconscious_5_1.rtm index ba46efca6a..f4fe14d92c 100644 Binary files a/addons/medical_engine/data/ace_unconscious_5_1.rtm and b/addons/medical_engine/data/ace_unconscious_5_1.rtm differ diff --git a/addons/medical_engine/data/ace_unconscious_6.rtm b/addons/medical_engine/data/ace_unconscious_6.rtm index 6d967d036d..bfe38f3e28 100644 Binary files a/addons/medical_engine/data/ace_unconscious_6.rtm and b/addons/medical_engine/data/ace_unconscious_6.rtm differ diff --git a/addons/medical_engine/data/ace_unconscious_6_1.rtm b/addons/medical_engine/data/ace_unconscious_6_1.rtm index 98cd1c3a49..27c22ef1fa 100644 Binary files a/addons/medical_engine/data/ace_unconscious_6_1.rtm and b/addons/medical_engine/data/ace_unconscious_6_1.rtm differ diff --git a/addons/medical_engine/data/ace_unconscious_7.rtm b/addons/medical_engine/data/ace_unconscious_7.rtm index b276105072..8ec1f7e78f 100644 Binary files a/addons/medical_engine/data/ace_unconscious_7.rtm and b/addons/medical_engine/data/ace_unconscious_7.rtm differ diff --git a/addons/medical_engine/data/ace_unconscious_7_1.rtm b/addons/medical_engine/data/ace_unconscious_7_1.rtm index acd0020704..bd4c090ac9 100644 Binary files a/addons/medical_engine/data/ace_unconscious_7_1.rtm and b/addons/medical_engine/data/ace_unconscious_7_1.rtm differ diff --git a/addons/medical_engine/data/ace_unconscious_8.rtm b/addons/medical_engine/data/ace_unconscious_8.rtm index 26602d26c8..53cd2fb3cd 100644 Binary files a/addons/medical_engine/data/ace_unconscious_8.rtm and b/addons/medical_engine/data/ace_unconscious_8.rtm differ diff --git a/addons/medical_engine/data/ace_unconscious_8_1.rtm b/addons/medical_engine/data/ace_unconscious_8_1.rtm index a80c72c32b..09f5ec1ec9 100644 Binary files a/addons/medical_engine/data/ace_unconscious_8_1.rtm and b/addons/medical_engine/data/ace_unconscious_8_1.rtm differ diff --git a/addons/medical_engine/data/zDummy.rtm b/addons/medical_engine/data/zDummy.rtm deleted file mode 100644 index dfeb7b7fcc..0000000000 Binary files a/addons/medical_engine/data/zDummy.rtm and /dev/null differ diff --git a/addons/medical_engine/functions/fnc_getHitpointArmor.sqf b/addons/medical_engine/functions/fnc_getHitpointArmor.sqf index 5f51cc2cad..d4fdd00fd3 100644 --- a/addons/medical_engine/functions/fnc_getHitpointArmor.sqf +++ b/addons/medical_engine/functions/fnc_getHitpointArmor.sqf @@ -44,6 +44,10 @@ if (_rags != _prevRags) then { _armorScaled = _armorScaled + _itemArmorScaled; } forEach _gear; + // Armor should be at least 1 to prevent dividing by 0 + _armor = _armor max 1; + _armorScaled = _armorScaled max 1; + _unit setVariable [_var, [_rags, _armor, _armorScaled]]; }; diff --git a/addons/medical_engine/functions/fnc_getItemArmor.sqf b/addons/medical_engine/functions/fnc_getItemArmor.sqf index c201cbee42..01e6719a0f 100644 --- a/addons/medical_engine/functions/fnc_getItemArmor.sqf +++ b/addons/medical_engine/functions/fnc_getItemArmor.sqf @@ -32,8 +32,10 @@ if (isNil "_return") then { }; private _itemInfo = configFile >> "CfgWeapons" >> _item >> "ItemInfo"; + private _itemType = getNumber (_itemInfo >> "type"); + private _passThroughEffect = [1, 0.6] select (_itemType == TYPE_VEST); - if (getNumber (_itemInfo >> "type") == TYPE_UNIFORM) then { + if (_itemType == TYPE_UNIFORM) then { private _unitCfg = configFile >> "CfgVehicles" >> getText (_itemInfo >> "uniformClass"); if (_hitpoint == "#structural") then { // TODO: I'm not sure if this should be multiplied by the base armor value or not @@ -53,9 +55,13 @@ if (isNil "_return") then { }; // Scale armor using passthrough to fix explosive-resistant armor (#9063) - // Skip scaling for items that don't cover the hitpoint to prevent infinite armor - if (_armor isNotEqualTo 0) then { - _armorScaled = (log (_armor / _passThrough)) * 10; + // Skip scaling for uniforms and items that don't cover the hitpoint to prevent infinite armor + if (_armor > 0) then { + if (_itemType == TYPE_UNIFORM) then { + _armorScaled = _armor; + } else { + _armorScaled = (log (_armor / (_passThrough ^ _passThroughEffect))) * 10; + }; }; _return = [_armor, _armorScaled]; GVAR(armorCache) set [_key, _return]; diff --git a/addons/medical_engine/functions/fnc_handleDamage.sqf b/addons/medical_engine/functions/fnc_handleDamage.sqf index 6483f6de64..8db9950a86 100644 --- a/addons/medical_engine/functions/fnc_handleDamage.sqf +++ b/addons/medical_engine/functions/fnc_handleDamage.sqf @@ -89,7 +89,7 @@ if ( {GET_NUMBER(_ammoCfg >> "indirectHit", 0) > 0} } ) exitwith { - TRACE_6("Vehicle hit",_unit,_shooter,_instigator,_damage,_newDamage,_damages); + TRACE_5("Vehicle hit",_unit,_shooter,_instigator,_damage,_newDamage); _unit setVariable [QEGVAR(medical,lastDamageSource), _shooter]; _unit setVariable [QEGVAR(medical,lastInstigator), _instigator]; diff --git a/addons/medical_engine/initSettings.sqf b/addons/medical_engine/initSettings.inc.sqf similarity index 100% rename from addons/medical_engine/initSettings.sqf rename to addons/medical_engine/initSettings.inc.sqf diff --git a/addons/medical_engine/script_macros_medical.hpp b/addons/medical_engine/script_macros_medical.hpp index 1f1f2c5aba..56c1eec401 100644 --- a/addons/medical_engine/script_macros_medical.hpp +++ b/addons/medical_engine/script_macros_medical.hpp @@ -76,6 +76,13 @@ #define DAMAGE_BLUE_THRESHOLD 0.8 #define DAMAGE_TOTAL_COLORS 10 +// Qualitative bleed rate thresholds as a fraction of knock out blood loss +// Note that half of knock out blood loss is considered unstable, and knock out blood loss is considered critical +#define BLEED_RATE_SLOW 0.1 // Slow - One fifth of unstable blood loss +#define BLEED_RATE_MODERATE 0.5 // Moderate - Vitals considered stable +#define BLEED_RATE_SEVERE 1.0 // Severe - Vitals considered unstable +// Massive - Vitals considered critical + // Pain above which a unit can go unconscious upon receiving damage #define PAIN_UNCONSCIOUS EGVAR(medical,painUnconsciousThreshold) diff --git a/addons/medical_engine/stringtable.xml b/addons/medical_engine/stringtable.xml index 09b27103cc..9a4179a38c 100644 --- a/addons/medical_engine/stringtable.xml +++ b/addons/medical_engine/stringtable.xml @@ -9,8 +9,10 @@ Włącz obrażenia od kolizji pojazdu 車両衝突ダメージを有効化 Aktiviere Verletzungen durch Fahrzeugunfälle + Abilita danni da schianti del veicolo 启用车辆碰撞损坏 차량 충돌 피해 활성화 + Habilitar Dano por Colisão de Veículo Controls whether crew receives damage from vehicle collisions. @@ -20,18 +22,30 @@ Kontroluje czy załoga pojazdu otrzyma obrażenia podczas kolizji pojazdu. 車両が衝突をすると乗員がダメージを受けるかどうかを決定します。 Kontrolliert, ob Besatzung eines Fahrzeugs Schaden durch Unfälle erleiden soll + Determina se i passeggeri di un veicolo subiranno danni da schianti o incidenti. 控制乘员是否受到车辆碰撞的伤害。 차량 충돌로 인해 탑승인원들이 피해를 받을 지 결정합니다. + Controla se a tripulação recebe dano de colisões de veículos. Armor PassThrough Effect Efekt penetracji pancerza 방어구 PassThrough 효과 + Effet de pénétration d'armure + Effekt des Panzerungsdurchschlags + Fattore di Trapasso Armatura + Efeito de Penetração de Blindagem + 装甲貫通効果 Controls effect of armor 'passThrough' on final damage. Makes high armor values, like ones used in GL rigs, less effective.\nUse 0% for pre 3.16.0 armor behavior.\nOnly touch this if you know what you're doing! Kontroluje wpływ "penetracji" pancerza na ostateczne obrażenia. Sprawia, że wysokie wartości pancerza, takie jak te używane w kamizelkach GL, są mniej skuteczne.\nUżyj 0% dla zachowania pancerza sprzed wersji 3.16.0.\nZmień wartość tylko jeśli wiesz co robisz! 최종 데미지에 대한 방어구의 'PassThrough' 효과를 조정합니다. GL 리그에 사용되는 것과 같은 높은 방호값을 덜 효과적으로 만듭니다\n3.16.0 이전의 방어구 동작에는 0%를 사용하십시오.\n당신이 뭘 하고 있는지 알고 있는 경우에만 이걸 설정하세요! + Contrôle l'effet de la "pénétration" de l'armure sur les dégâts finaux. Rend les valeurs d'armures élevées, comme celles utilisées dans les gilets GL, moins efficaces.\nUtilisez 0% pour le comportement des armures des versions antérieures à 3.16.0.\nNe modifiez la valeur que si vous savez ce que vous faîtes ! + Steuert den Effekt des „Durchschlagens“ von Panzerung auf den Gesamtschaden. Macht hohe Panzerungswerte, wie sie in GL-Westen verwendet werden, weniger effektiv.\nVerwende 0% für das Panzerungsverhalten vor 3.16.0.\nÄndere den Wert nur, wenn du weißt, was du tust! + Determina l'effetto di danni sul corpo che 'trapassano' l'armatura. Rende alti valori di protezione, come quelli su corpetti GL, meno efficaci.\nUtilizza 0% per il comportamento prima di v3.16.0.\nModifica questo valore solo se sai cosa stai facendo! + Controla o efeito de penetração (passThrough) da blindagem no dano final. Torna valores de blindagem altos, como os usados em coletes GL, menos eficazes.\nUse 0% para o comportamento de blindagem anterior à versão 3.16.0.\nSó mexa nisso se souber o que está fazendo! + ボディアーマーの'passThrough'値が最終的な身体ダメージに与える影響を調整します。擲弾兵リグで使用されるような高い装甲値では効果が低くなります。\n3.16.0以前の挙動にするには0%にしてください。\nこれが何かわからない場合は変更しないことをお勧めします。 diff --git a/addons/medical_feedback/RscInGameUI.hpp b/addons/medical_feedback/RscInGameUI.hpp index cbea0e35b5..ca422840a7 100644 --- a/addons/medical_feedback/RscInGameUI.hpp +++ b/addons/medical_feedback/RscInGameUI.hpp @@ -22,18 +22,18 @@ class RscInGameUI { }; class GVAR(stateIndicator1): RscPictureKeepAspect { - onLoad = QUOTE(uiNamespace setVariable [ARR_2(QQGVAR(stateIndicator1), _this select 0)]); + onLoad = QUOTE(uiNamespace setVariable [ARR_2(QQGVAR(stateIndicator1),_this select 0)]); x = QUOTE(ace_IGUI_GRID_STANCE_X + IGUI_GRID_STANCE_WAbs * 3 / 4); y = QUOTE(ace_IGUI_GRID_STANCE_Y); w = QUOTE(IGUI_GRID_STANCE_WAbs / 4); h = QUOTE(IGUI_GRID_STANCE_HAbs / 4); }; class GVAR(stateIndicator2): GVAR(stateIndicator1) { - onLoad = QUOTE(uiNamespace setVariable [ARR_2(QQGVAR(stateIndicator2), _this select 0)]); + onLoad = QUOTE(uiNamespace setVariable [ARR_2(QQGVAR(stateIndicator2),_this select 0)]); y = QUOTE(ace_IGUI_GRID_STANCE_Y + IGUI_GRID_STANCE_HAbs / 4); }; class GVAR(stateIndicator3): GVAR(stateIndicator1) { - onLoad = QUOTE(uiNamespace setVariable [ARR_2(QQGVAR(stateIndicator3), _this select 0)]); + onLoad = QUOTE(uiNamespace setVariable [ARR_2(QQGVAR(stateIndicator3),_this select 0)]); y = QUOTE(ace_IGUI_GRID_STANCE_Y + IGUI_GRID_STANCE_HAbs * 2 / 4); }; }; diff --git a/addons/medical_feedback/XEH_preInit.sqf b/addons/medical_feedback/XEH_preInit.sqf index 9361d05015..894773534a 100644 --- a/addons/medical_feedback/XEH_preInit.sqf +++ b/addons/medical_feedback/XEH_preInit.sqf @@ -6,6 +6,6 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" ADDON = true; diff --git a/addons/medical_feedback/addon.toml b/addons/medical_feedback/addon.toml index 7cfef775ee..bf39213892 100644 --- a/addons/medical_feedback/addon.toml +++ b/addons/medical_feedback/addon.toml @@ -1,2 +1,3 @@ -[preprocess] -enabled = false +[tools] +pboProject_noBinConfig = true +sqfvm_skipConfigChecks = true diff --git a/addons/medical_feedback/config.cpp b/addons/medical_feedback/config.cpp index caea028b79..d6e78aebbf 100644 --- a/addons/medical_feedback/config.cpp +++ b/addons/medical_feedback/config.cpp @@ -1,5 +1,6 @@ #include "script_component.hpp" +#pragma hemtt flag pe23_ignore_has_include #if __has_include("\z\ace\addons\nomedical\script_component.hpp") #define PATCH_SKIP "No Medical" #endif diff --git a/addons/medical_feedback/initSettings.sqf b/addons/medical_feedback/initSettings.inc.sqf similarity index 89% rename from addons/medical_feedback/initSettings.sqf rename to addons/medical_feedback/initSettings.inc.sqf index 997a5f061b..1268335b21 100644 --- a/addons/medical_feedback/initSettings.sqf +++ b/addons/medical_feedback/initSettings.inc.sqf @@ -2,7 +2,7 @@ QGVAR(painEffectType), "LIST", [LSTRING(PainEffectType_DisplayName), LSTRING(PainEffectType_Description)], - [ELSTRING(medical,Category), LSTRING(SubCategory)], + [ELSTRING(medical,Interface_Category), LSTRING(SubCategory)], [ [FX_PAIN_WHITE_FLASH, FX_PAIN_PULSATING_BLUR, FX_PAIN_CHROMATIC_ABERRATION, FX_PAIN_ONLY_BASE], [LSTRING(painEffectType_whiteFlashing), LSTRING(painEffectType_pulsingBlur), LSTRING(painEffectType_chromAberration), LSTRING(painEffectType_onlyBase)], @@ -23,7 +23,7 @@ QGVAR(bloodVolumeEffectType), "LIST", [LSTRING(BloodVolumeEffectType_DisplayName), LSTRING(BloodVolumeEffectType_Description)], - [ELSTRING(medical,Category), LSTRING(SubCategory)], + [ELSTRING(medical,Interface_Category), LSTRING(SubCategory)], [ [FX_BLOODVOLUME_COLOR_CORRECTION, FX_BLOODVOLUME_ICON, FX_BLOODVOLUME_BOTH], [LSTRING(BloodVolumeEffectType_colorCorrection), LSTRING(BloodVolumeEffectType_icon), LSTRING(BloodVolumeEffectType_both)], @@ -44,7 +44,7 @@ QGVAR(enableHUDIndicators), "CHECKBOX", [LSTRING(EnableHUDIndicators_DisplayName), LSTRING(EnableHUDIndicators_Description)], - [ELSTRING(medical,Category), LSTRING(SubCategory)], + [ELSTRING(medical,Interface_Category), LSTRING(SubCategory)], true, false, { diff --git a/addons/medical_feedback/stringtable.xml b/addons/medical_feedback/stringtable.xml index b6f433d399..d1ef189611 100644 --- a/addons/medical_feedback/stringtable.xml +++ b/addons/medical_feedback/stringtable.xml @@ -42,7 +42,7 @@ Selecione o tipo de efeito de dor. 選擇哪一個視覺效果用於回饋疼痛 选择反馈的疼痛效果类型。 - Seleziona il tipo di effetto del dolore usato. + Seleziona il tipo di effetto causato dal dolore. Nastavuje který efekt bolesti bude používán. Wybiera rodzaj efektu bólu. Selecciona el tipo de efecto de dolor @@ -69,7 +69,7 @@ Pulsing Blur Wiederkehrende Unschärfe - ボケの強弱 + ぼかしの強弱 Пульсирующее размытие Pulsations floues Borrão Pulsante @@ -105,7 +105,7 @@ 只有在強烈疼痛時使用 仅在剧烈疼痛下启用 Juste un fort effet douloureux - Solo elevato effetto di dolore + Solo effetto di elevato dolore Pouze efekt vysoké bolesti Tylko efekt mocnego bólu Apenas efeito de dor alta @@ -119,6 +119,7 @@ Low Blood Volume Effect Type Визуальный эффект низкого объема крови Effet de faible volume sanguin + Effetto di poco sangue 低血液量時効果の種類 Efekt pro nízké množství krve Efekt po utracie znacznej ilości krwi @@ -127,11 +128,13 @@ Effektart für "Niedriges Blutvolumen" 低血容量影响类型 혈액량 부족 시 효과 종류 + Tipo de efeito por volume baixo de sangue Selects the used low blood volume effect type. Выбирает тип визуализации эффекта низкого объема крови. Permet de choisir quel effet provoque un faible volume sanguin. + Seleziona il tipo di effetto causato da un volume di sangue molto ridotto. 低血液量時の画面効果を選択できます。 Nastavuje který efekt pro nízké množství krve bude používán. Wybiera efekt ktory będzie pokazywany po utracie znacznej ilości krwi. @@ -140,11 +143,13 @@ Wählt die verwendete Effektart für niedriges Blutvolumen. 选择低血容量下的效果类型。 혈액량이 부족할 때 어떤 효과로 나타낼지 결정합니다. + Seleciona o tipo de efeito visual quando o volume de sangue está baixo. Color Fading Потеря цветности Atténuation des couleurs + Sbiadimento dei colori 退色 Ztráta barev Zanikanie kolorów @@ -153,11 +158,13 @@ Farbverblassen 褪色 색바램 + Atenuação de cores Icon Иконка Icône + Icona アイコン Ikona Ikona @@ -166,11 +173,13 @@ Symbol 图标 아이콘 + Ícone Icon + Color Fading Иконка + Потеря цветности Icône + Atténuation des couleurs + Icona + Sbiadimento dei colori アイコンと退色 Ikona + Ztráta barev Ikona + Zanikanie kolorów @@ -179,6 +188,7 @@ Symbol + Farbverblassen 图标+褪色 아이콘 및 색바램 + Ícone + Atenuação de cores @@ -192,7 +202,7 @@ Activer les cris Kiáltások engedélyezése Abilita Grida - 叫びを有効化 + 悲鳴を有効化 비명 활성화 启用惨叫 啟用尖叫 @@ -208,8 +218,8 @@ Ativa gritos para unidades feridas Si cette option est activée, les unités blessées crieront, voire hurleront sous l'effet de la douleur. Engedélyezi a sérült egységek kiáltásait - Abilita Grida da parte delle unità ferite - 負傷したユニットが叫ぶようにします。 + Abilita Grida da parte di unità ferite + 負傷したユニットが悲鳴をあげるようにします。 부상당한 인원이 소리지르는 것을 활성화합니다 启用伤者的惨叫声 啟用傷者的尖叫聲 @@ -218,13 +228,15 @@ Enable Fracture/Tourniquet/Splint Indicators Вкл. индикаторы переломов/жгутов/шин - 骨折/止血帯の表記を有効化 + 骨折/止血帯/添え木の表記を有効化 Indicateurs de fractures/garrots/attelles Fraktur-/Tourniquet-/Schienen-Indikatoren aktivieren + Abilita indicatori di Frattura/Gessatura/Laccio Emostatico Włącz wskaźniki złamań/stazy/szyny 启用骨折/止血带/夹板指示器 골절/지혈대/부목 표시 활성화 Habilitar indicadores de Fractura/Torniquete + Habilitar indicadores de Fratura/Torniquete/Tala Enables indicators for fractures and applied tourniquets and splints over the Stance Indicator. @@ -232,10 +244,12 @@ 体勢インジケータに骨折や添え木、止血帯の有無を表示するかどうかを設定できます。 Affiche des icônes au niveau de l'indicateur de posture, indiquant si le personnage souffre de fractures ou si des garrots ou des attelles sont appliqués. Aktiviert Indikatoren für Frakturen mit angelegte Tourniquets und Schienen über dem Haltungsindikator. + Abilita indicatori per la presenza di fratture, gessature o lacci emostatici applicati sopra l'indicatore di postura. Włącza wskaźniki złamań oraz założonej staz/szyn przy ikonie stanu postawy 在姿态指示器上启用骨折、应用止血带和夹板指示器。 자세 표시기 옆에 골절, 지혈대, 부목의 여부를 표시합니다. Habilita los indicadores para fracturas y torniquetes apllicados y férulas sobre el indicador de posición del personaje. + Habilita indicadores para fraturas, torniquetes e talas sobre o indicador de posição do personagem. diff --git a/addons/medical_gui/CfgVehicles.hpp b/addons/medical_gui/CfgVehicles.hpp index 8abfe9f067..502039325a 100644 --- a/addons/medical_gui/CfgVehicles.hpp +++ b/addons/medical_gui/CfgVehicles.hpp @@ -6,7 +6,7 @@ class CfgVehicles { displayName = CSTRING(Medical); condition = QGVAR(enableSelfActions); exceptions[] = {"isNotInside", "isNotSitting", "isNotSwimming"}; - statement = QUOTE([ARR_2(_target,0)] call FUNC(displayPatientInformation)); + statement = QUOTE([ARR_2(_target,-1)] call FUNC(displayPatientInformation)); runOnHover = 1; icon = QPATHTOF(ui\cross.paa); #define ACTION_CONDITION condition = "true"; @@ -40,7 +40,7 @@ class CfgVehicles { displayName = CSTRING(Medical); condition = QUOTE((GVAR(enableActions) == 1 || {GVAR(enableActions) != 2 && {!isNull objectParent _target && {objectParent _target isEqualTo objectParent _player}}})); exceptions[] = {"isNotInside", "isNotSitting"}; - statement = QUOTE([ARR_2(_target,0)] call FUNC(displayPatientInformation)); + statement = QUOTE([ARR_2(_target,-1)] call FUNC(displayPatientInformation)); runOnHover = 1; icon = QPATHTOF(ui\cross.paa); #define ACTION_CONDITION condition = "true"; @@ -51,15 +51,15 @@ class CfgVehicles { displayName = CSTRING(LoadPatient); condition = QUOTE(_target getVariable [ARR_2('ACE_isUnconscious',false)] && {alive _target} && {isNull objectParent _target} && {(_target call EFUNC(common,nearestVehiclesFreeSeat)) isNotEqualTo []}); exceptions[] = {"isNotDragging", "isNotCarrying"}; - statement = QUOTE([ARR_2(_player, _target)] call EFUNC(medical_treatment,loadUnit)); + statement = QUOTE([ARR_2(_player,_target)] call EFUNC(medical_treatment,loadUnit)); icon = QPATHTOF(ui\cross.paa); insertChildren = QUOTE(call DEFUNC(medical_treatment,addLoadPatientActions)); }; class ACE_UnloadPatient { displayName = CSTRING(UnloadPatient); - condition = QUOTE((_target getVariable [ARR_2('ACE_isUnconscious',false)] || {!alive _target}) && {!isNull objectParent _target} && {isNull objectParent _player}); + condition = QUOTE([ARR_2(_player,_target)] call EFUNC(medical_treatment,canUnloadUnit)); exceptions[] = {"isNotDragging", "isNotCarrying", "isNotInside"}; - statement = QUOTE([ARR_2(_player, _target)] call EFUNC(medical_treatment,unloadUnit)); + statement = QUOTE([ARR_2(_player,_target)] call EFUNC(medical_treatment,unloadUnit)); icon = QPATHTOF(ui\cross.paa); }; }; diff --git a/addons/medical_gui/XEH_PREP.hpp b/addons/medical_gui/XEH_PREP.hpp index 857e72315b..3d1ace8b4e 100644 --- a/addons/medical_gui/XEH_PREP.hpp +++ b/addons/medical_gui/XEH_PREP.hpp @@ -2,14 +2,17 @@ PREP(addTreatmentActions); PREP(bloodLossToRGBA); PREP(canOpenMenu); PREP(collectActions); +PREP(countTreatmentItems); PREP(damageToRGBA); PREP(displayPatientInformation); PREP(displayTriageCard); +PREP(formatItemCounts); PREP(handleToggle); PREP(handleTriageSelect); PREP(menuPFH); PREP(modifyAction); PREP(modifyActionTriageLevel); +PREP(onKeyDown); PREP(onMenuClose); PREP(onMenuOpen); PREP(openMenu); diff --git a/addons/medical_gui/XEH_postInit.sqf b/addons/medical_gui/XEH_postInit.sqf index 6127a1a013..f2777f6fd4 100644 --- a/addons/medical_gui/XEH_postInit.sqf +++ b/addons/medical_gui/XEH_postInit.sqf @@ -12,6 +12,9 @@ GVAR(pendingReopen) = false; GVAR(menuPFH) = -1; +GVAR(peekLastOpenedOn) = -1; +GVAR(peekOnHitLastOpenedOn) = -1; + GVAR(selfInteractionActions) = []; [] call FUNC(addTreatmentActions); [] call FUNC(collectActions); @@ -71,8 +74,43 @@ GVAR(selfInteractionActions) = []; false }, [DIK_H, [false, false, false]], false, 0] call CBA_fnc_addKeybind; +["ACE3 Common", QGVAR(peekMedicalInfoKey), localize LSTRING(PeekMedicalInfo), +{ + // Conditions: canInteract + if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false}; + + // Statement + [ACE_player, -1] call FUNC(displayPatientInformation); + false +}, { + if (CBA_missionTime - GVAR(peekLastOpenedOn) > GVAR(peekMedicalInfoReleaseDelay)) then { + [{ + CBA_missionTime - GVAR(peekLastOpenedOn) > GVAR(peekMedicalInfoReleaseDelay) + }, {QGVAR(RscPatientInfo) cutFadeOut 0.3}] call CBA_fnc_waitUntilAndExecute; + }; + GVAR(peekLastOpenedOn) = CBA_missionTime; + false +}, [DIK_H, [false, true, false]], false, 0] call CBA_fnc_addKeybind; + // Close patient information display when interaction menu is closed ["ace_interactMenuClosed", { QGVAR(RscPatientInfo) cutFadeOut 0.3; }] call CBA_fnc_addEventHandler; + +[QEGVAR(medical,woundReceived), { + params ["_unit", "_allDamages", ""]; + if !(GVAR(peekMedicalOnHit) && {_unit == ACE_player}) exitWith {}; + + private _bodypart = toLower (_allDamages select 0 select 1); + private _bodypartIndex = ALL_BODY_PARTS find _bodypart; + + [ACE_player, _bodypartIndex] call FUNC(displayPatientInformation); + + if (CBA_missionTime - GVAR(peekOnHitLastOpenedOn) > GVAR(peekMedicalOnHitDuration)) then { + [{ + CBA_missionTime - GVAR(peekOnHitLastOpenedOn) > GVAR(peekMedicalOnHitDuration) + }, {QGVAR(RscPatientInfo) cutFadeOut 0.3}] call CBA_fnc_waitUntilAndExecute; + }; + GVAR(peekOnHitLastOpenedOn) = CBA_missionTime; +}] call CBA_fnc_addEventHandler; diff --git a/addons/medical_gui/XEH_preInit.sqf b/addons/medical_gui/XEH_preInit.sqf index 9361d05015..894773534a 100644 --- a/addons/medical_gui/XEH_preInit.sqf +++ b/addons/medical_gui/XEH_preInit.sqf @@ -6,6 +6,6 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" ADDON = true; diff --git a/addons/medical_gui/addon.toml b/addons/medical_gui/addon.toml index 7cfef775ee..bf39213892 100644 --- a/addons/medical_gui/addon.toml +++ b/addons/medical_gui/addon.toml @@ -1,2 +1,3 @@ -[preprocess] -enabled = false +[tools] +pboProject_noBinConfig = true +sqfvm_skipConfigChecks = true diff --git a/addons/medical_gui/config.cpp b/addons/medical_gui/config.cpp index eb3ac27561..aa5072d4a5 100644 --- a/addons/medical_gui/config.cpp +++ b/addons/medical_gui/config.cpp @@ -1,5 +1,6 @@ #include "script_component.hpp" +#pragma hemtt flag pe23_ignore_has_include #if __has_include("\z\ace\addons\nomedical\script_component.hpp") #define PATCH_SKIP "No Medical" #endif diff --git a/addons/medical_gui/data/body_image/arm_left_s.paa b/addons/medical_gui/data/body_image/arm_left_s.paa new file mode 100644 index 0000000000..4c55e6143e Binary files /dev/null and b/addons/medical_gui/data/body_image/arm_left_s.paa differ diff --git a/addons/medical_gui/data/body_image/arm_right_s.paa b/addons/medical_gui/data/body_image/arm_right_s.paa new file mode 100644 index 0000000000..daff9d099e Binary files /dev/null and b/addons/medical_gui/data/body_image/arm_right_s.paa differ diff --git a/addons/medical_gui/data/body_image/head_s.paa b/addons/medical_gui/data/body_image/head_s.paa new file mode 100644 index 0000000000..9acf69a155 Binary files /dev/null and b/addons/medical_gui/data/body_image/head_s.paa differ diff --git a/addons/medical_gui/data/body_image/leg_left_s.paa b/addons/medical_gui/data/body_image/leg_left_s.paa new file mode 100644 index 0000000000..1f25d44b81 Binary files /dev/null and b/addons/medical_gui/data/body_image/leg_left_s.paa differ diff --git a/addons/medical_gui/data/body_image/leg_right_s.paa b/addons/medical_gui/data/body_image/leg_right_s.paa new file mode 100644 index 0000000000..4fcace26ed Binary files /dev/null and b/addons/medical_gui/data/body_image/leg_right_s.paa differ diff --git a/addons/medical_gui/data/body_image/torso_s.paa b/addons/medical_gui/data/body_image/torso_s.paa new file mode 100644 index 0000000000..58614f277f Binary files /dev/null and b/addons/medical_gui/data/body_image/torso_s.paa differ diff --git a/addons/medical_gui/data/categories/carry.paa b/addons/medical_gui/data/categories/carry.paa index 7ebb830b03..27a9185d29 100644 Binary files a/addons/medical_gui/data/categories/carry.paa and b/addons/medical_gui/data/categories/carry.paa differ diff --git a/addons/medical_gui/data/categories/toggle_self.paa b/addons/medical_gui/data/categories/toggle_self.paa deleted file mode 100644 index 73108e5a98..0000000000 Binary files a/addons/medical_gui/data/categories/toggle_self.paa and /dev/null differ diff --git a/addons/medical_gui/data/categories/toggle_to_other.paa b/addons/medical_gui/data/categories/toggle_to_other.paa new file mode 100644 index 0000000000..59f2096b8a Binary files /dev/null and b/addons/medical_gui/data/categories/toggle_to_other.paa differ diff --git a/addons/medical_gui/data/categories/toggle_to_self.paa b/addons/medical_gui/data/categories/toggle_to_self.paa new file mode 100644 index 0000000000..653a6bbdb4 Binary files /dev/null and b/addons/medical_gui/data/categories/toggle_to_self.paa differ diff --git a/addons/medical_gui/functions/fnc_canOpenMenu.sqf b/addons/medical_gui/functions/fnc_canOpenMenu.sqf index f89ee64031..fc2ac3879e 100644 --- a/addons/medical_gui/functions/fnc_canOpenMenu.sqf +++ b/addons/medical_gui/functions/fnc_canOpenMenu.sqf @@ -1,6 +1,6 @@ #include "..\script_component.hpp" /* - * Author: Glowbal, mharis001 + * Author: Glowbal, mharis001, johnb43 * Checks if the player can open the Medical Menu for the target. * * Arguments: @@ -18,8 +18,14 @@ params ["_player", "_target"]; -alive _player -&& {!IS_UNCONSCIOUS(_player)} -&& {!isNull _target} -&& {_player distance _target < GVAR(maxDistance) || {vehicle _player == vehicle _target}} -&& {GVAR(enableMedicalMenu) == 1 || {GVAR(enableMedicalMenu) == 2 && {vehicle _player != _player || {vehicle _target != _target}}}} +// If in Zeus +if (!isNull findDisplay 312) exitWith { + !isNull _target && + {missionNamespace getVariable [QGVAR(enableZeusModule), true]} && + {GVAR(enableMedicalMenu) > 0} +}; + +_player call EFUNC(common,isAwake) && +{!isNull _target} && +{_player distance _target < GVAR(maxDistance) || {vehicle _player == vehicle _target}} && +{GVAR(enableMedicalMenu) == 1 || {GVAR(enableMedicalMenu) == 2 && {vehicle _player != _player || {vehicle _target != _target}}}} diff --git a/addons/medical_gui/functions/fnc_collectActions.sqf b/addons/medical_gui/functions/fnc_collectActions.sqf index 7a9902ad71..818decb017 100644 --- a/addons/medical_gui/functions/fnc_collectActions.sqf +++ b/addons/medical_gui/functions/fnc_collectActions.sqf @@ -24,8 +24,9 @@ GVAR(actions) = []; private _category = getText (_x >> "category"); private _condition = compile format [QUOTE([ARR_4(ACE_player, GVAR(target), %1 select GVAR(selectedBodyPart), '%2')] call DEFUNC(medical_treatment,canTreatCached)), ALL_BODY_PARTS, _configName]; private _statement = compile format [QUOTE([ARR_4(ACE_player, GVAR(target), %1 select GVAR(selectedBodyPart), '%2')] call DEFUNC(medical_treatment,treatment)), ALL_BODY_PARTS, _configName]; + private _items = getArray (_x >> "items"); - GVAR(actions) pushBack [_displayName, _category, _condition, _statement]; + GVAR(actions) pushBack [_displayName, _category, _condition, _statement, _items]; } forEach configProperties [configFile >> QEGVAR(medical_treatment,actions), "isClass _x"]; diff --git a/addons/medical_gui/functions/fnc_countTreatmentItems.sqf b/addons/medical_gui/functions/fnc_countTreatmentItems.sqf new file mode 100644 index 0000000000..102d996bb3 --- /dev/null +++ b/addons/medical_gui/functions/fnc_countTreatmentItems.sqf @@ -0,0 +1,53 @@ +#include "..\script_component.hpp" +/* + * Author: AmsteadRayle + * Counts how many of the given items are present between the medic and patient. + * If medic or patient are in a vehicle then vehicle's inventory will also be checked. + * + * Arguments: + * 0: Items + * + * Return Value: + * Counts (can be nil) + * + * Example: + * [items] call ace_medical_gui_fnc_countTreatmentItems + * + * Public: No + */ + +params ["_items"]; + +private _medicCount = 0; +private _patientCount = nil; +private _vehicleCount = nil; + +// Medic +{ + _medicCount = _medicCount + ([ACE_player, _x] call EFUNC(common,getCountOfItem)); +} forEach _items; + +// Patient +if (ACE_player != GVAR(target)) then { + _patientCount = 0; + { + _patientCount = _patientCount + ([GVAR(target), _x] call EFUNC(common,getCountOfItem)); + } forEach _items; +}; + +// Vehicle +private _medicVehicle = objectParent ACE_player; +private _patientVehicle = objectParent GVAR(target); +private _vehicle = if (!isNull _medicVehicle) then {_medicVehicle} else {_patientVehicle}; + +if (!isNull _vehicle) then { + _vehicleCount = 0; + (getItemCargo _vehicle) params ["_itemTypes", "_itemCounts"]; + { + private _item = _x; + private _index = _itemTypes find _item; + _vehicleCount = _vehicleCount + (_itemCounts param [_index, 0]); + } forEach _items; +}; + +[_medicCount, _patientCount, _vehicleCount] diff --git a/addons/medical_gui/functions/fnc_displayPatientInformation.sqf b/addons/medical_gui/functions/fnc_displayPatientInformation.sqf index 07294f1218..65660eec79 100644 --- a/addons/medical_gui/functions/fnc_displayPatientInformation.sqf +++ b/addons/medical_gui/functions/fnc_displayPatientInformation.sqf @@ -18,7 +18,7 @@ #define MAX_DISTANCE 4 -params ["_target", "_selectionN"]; +params ["_target", ["_selectionN", -1]]; private _display = uiNamespace getVariable [QGVAR(RscPatientInfo), displayNull]; @@ -34,7 +34,7 @@ if (isNull _display) then { }; private _target = _display getVariable [QGVAR(target), objNull]; - private _selectionN = _display getVariable [QGVAR(selectionN), 0]; + private _selectionN = _display getVariable [QGVAR(selectionN), -1]; // Close display if target moved too far away (ignore if in same vehicle) if (ACE_player distance _target > MAX_DISTANCE && {vehicle _target != vehicle ACE_player}) exitWith { @@ -45,7 +45,7 @@ if (isNull _display) then { // Update body image private _ctrlBodyImage = _display displayCtrl IDC_BODY_GROUP; - [_ctrlBodyImage, _target] call FUNC(updateBodyImage); + [_ctrlBodyImage, _target, _selectionN] call FUNC(updateBodyImage); // Update injury list private _ctrlInjuries = _display displayCtrl IDC_INJURIES; diff --git a/addons/medical_gui/functions/fnc_formatItemCounts.sqf b/addons/medical_gui/functions/fnc_formatItemCounts.sqf new file mode 100644 index 0000000000..7ef294f4eb --- /dev/null +++ b/addons/medical_gui/functions/fnc_formatItemCounts.sqf @@ -0,0 +1,32 @@ +#include "..\script_component.hpp" +/* + * Author: AmsteadRayle + * Format item counts to be shown in the tooltip. + * + * Arguments: + * 0: Medic count + * 1: Patient count + * 2: Vehicle count + * + * Return Value: + * Item count string + * + * Example: + * [medicCount, patientCount, vehicleCount] call ace_medical_gui_fnc_formatItemCounts + * + * Public: No + */ + +params ["_medicCount", "_patientCount", "_vehicleCount"]; + +private _countStrings = [format ["%1 %2", _medicCount, LLSTRING(TreatmentItemCount_Medic)]]; + +if ((EGVAR(medical_treatment,allowSharedEquipment) != 2) && {!isNil "_patientCount"}) then { + _countStrings pushBack format ["%1 %2", _patientCount, LLSTRING(TreatmentItemCount_Patient)]; +}; + +if (!isNil "_vehicleCount") then { + _countStrings pushBack format ["%1 %2", _vehicleCount, LLSTRING(TreatmentItemCount_Vehicle)]; +}; + +_countStrings joinString "\n" diff --git a/addons/medical_gui/functions/fnc_handleToggle.sqf b/addons/medical_gui/functions/fnc_handleToggle.sqf index 5ec0f8d7d0..f0448fc3a3 100644 --- a/addons/medical_gui/functions/fnc_handleToggle.sqf +++ b/addons/medical_gui/functions/fnc_handleToggle.sqf @@ -15,6 +15,9 @@ * Public: No */ + // If in Zeus, ignore + if (!isNull findDisplay 312) exitWith {}; + // Find new target to switch to private _target = if ( GVAR(target) == ACE_player diff --git a/addons/medical_gui/functions/fnc_menuPFH.sqf b/addons/medical_gui/functions/fnc_menuPFH.sqf index 53d6545a52..b3d51c2dc9 100644 --- a/addons/medical_gui/functions/fnc_menuPFH.sqf +++ b/addons/medical_gui/functions/fnc_menuPFH.sqf @@ -16,7 +16,10 @@ */ // Check if menu should stay open for target -if !([ACE_player, GVAR(target), ["isNotInside", "isNotSwimming"]] call EFUNC(common,canInteractWith) && {[ACE_player, GVAR(target)] call FUNC(canOpenMenu)}) then { +if !( + ([ACE_player, GVAR(target), ["isNotInside", "isNotSwimming"]] call EFUNC(common,canInteractWith) || {!isNull findDisplay 312}) && // Allow player to look at himself when unconsious and in Zeus + {[ACE_player, GVAR(target)] call FUNC(canOpenMenu)} +) then { closeDialog 0; // Show hint if distance condition failed if ((ACE_player distance GVAR(target) > GVAR(maxDistance)) && {vehicle ACE_player != vehicle GVAR(target)}) then { @@ -40,7 +43,7 @@ private _ctrlInjuries = _display displayCtrl IDC_INJURIES; // Update body image private _ctrlBodyImage = _display displayCtrl IDC_BODY_GROUP; -[_ctrlBodyImage, GVAR(target)] call FUNC(updateBodyImage); +[_ctrlBodyImage, GVAR(target), GVAR(selectedBodyPart)] call FUNC(updateBodyImage); // Update activity and quick view logs private _ctrlActivityLog = _display displayCtrl IDC_ACTIVITY; diff --git a/addons/medical_gui/functions/fnc_onKeyDown.sqf b/addons/medical_gui/functions/fnc_onKeyDown.sqf new file mode 100644 index 0000000000..6b9013f8be --- /dev/null +++ b/addons/medical_gui/functions/fnc_onKeyDown.sqf @@ -0,0 +1,100 @@ +#include "..\script_component.hpp" +#include "\a3\ui_f\hpp\defineDIKCodes.inc" +/* + * Author: AmsteadRayle + * Handles keyboard inputs in medical menu. + * + * Arguments: + * 1: Args + * - 0: Menu display + * - 1: Key being pressed + * - 2: Shift state + * - 3: Ctrl state + * - 4: Alt state + * + * Return Value: + * None + * + * Example: + * ["", [displayNull, 5, false, false, false]] call ace_medical_gui_fnc_onKeyDown + * + * Public: No +*/ +// TODO: Is the airway category ever visible? Can the dynamic category stuff be removed? + +#define NUMBER_KEYS [DIK_1, DIK_2, DIK_3, DIK_4, DIK_5, DIK_6, DIK_7, DIK_8, DIK_9, DIK_0] +#define ALL_CATEGORIES ["triage", "examine", "bandage", "medication", "airway", "advanced", "drag", "toggle"] + +params ["", "_args"]; +_args params ["_display", "_keyPressed", "_shiftState", "_ctrlState", "_altState"]; + +private _return = true; // Override existing keybinds for keys used here + +private _visibleCategories = [ + "bandage","medication","airway","advanced","drag" +] select { + private _category = _x; + (GVAR(actions) findIf {_category == _x select 1}) > -1 +}; + +private _allCategories = ["triage", "examine"] + _visibleCategories + ["toggle"]; + +// Use hashmap as a shortcut to "zip" two arrays together +// Use categories as keys in hashmap because there are fewer, +// otherwise the hashmap is padded with nil +private _keyCategoryPairs = _allCategories createHashMapFromArray NUMBER_KEYS; + +private _temp_category = ""; +private _temp_idc = 0; + +switch (true) do { +// Dynamically assign number keys to visible categories + { + _temp_category = _x; // _x does not exist inside case code + _temp_idc = IDC_TRIAGE + (ALL_CATEGORIES find _temp_category) * 10; + case (_keyPressed == _y && {GVAR(selectedCategory) != _temp_category}): { + if (ctrlEnabled _temp_idc) then { + if (_temp_category == "toggle") then { + call FUNC(handleToggle); + } else { + GVAR(selectedCategory) = _temp_category; + }; + } else { + _return = false; + }; + }; + } forEach _keyCategoryPairs; + +// Select body part through similar keyboard layout: +// w +// a s d +// z x + case (_keyPressed == DIK_W && {GVAR(selectedBodyPart) != 0}): { + GVAR(selectedBodyPart) = 0; + }; + case (_keyPressed == DIK_S && {GVAR(selectedBodyPart != 1)}): { + GVAR(selectedBodyPart) = 1; + }; + case (_keyPressed == DIK_D && {GVAR(selectedBodyPart) != 2}): { + GVAR(selectedBodyPart) = 2; + }; + case (_keyPressed == DIK_A && {GVAR(selectedBodyPart) != 3}): { + GVAR(selectedBodyPart) = 3; + }; + case (_keyPressed == DIK_X && {GVAR(selectedBodyPart) != 4}): { + GVAR(selectedBodyPart) = 4; + }; + case (_keyPressed == DIK_Z && {GVAR(selectedBodyPart) != 5}): { + GVAR(selectedBodyPart) = 5; + }; + + default { + _return = false; // Do not override existing keybinds for keys not used here + }; +}; + +if (_return) then { + playSound ["SoundClick", true] +}; + +_return diff --git a/addons/medical_gui/functions/fnc_onMenuOpen.sqf b/addons/medical_gui/functions/fnc_onMenuOpen.sqf index bdf5ea9b06..e77d92bddd 100644 --- a/addons/medical_gui/functions/fnc_onMenuOpen.sqf +++ b/addons/medical_gui/functions/fnc_onMenuOpen.sqf @@ -26,8 +26,8 @@ if (EGVAR(interact_menu,menuBackground) == 2) then {0 cutRsc [QEGVAR(interact_me [{setMousePosition _this}, _this] call CBA_fnc_execNextFrame; }, getMousePosition] call CBA_fnc_execNextFrame; -// Set target name as title -private _ctrlTitle = _display displayCtrl IDC_TITLE; +// Set middle header as target name +private _ctrlTitle = _display displayCtrl IDC_NAME; _ctrlTitle ctrlSetText ([GVAR(target)] call EFUNC(common,getName)); // Initially hide the triage select buttons @@ -59,9 +59,25 @@ private _countEnabled = { if (_category isEqualType "") then { _x set [1, (GVAR(actions) findIf {_category == _x select 1}) > -1]; }; _x select 1 } count _list; -private _offsetX = POS_X(1.5) + 0.5 * (POS_X(12) - POS_X(_countEnabled * 1.5)); +private _offsetX = POS_X(1.5) + 0.5 * (POS_X(12.33) - POS_X(_countEnabled * 1.5) - POS_W(2 * 0.2)); +// 0.2 - divider gap size + +// Set divider position +private _ctrl = _display displayCtrl IDC_TRIAGE_DIVIDER; +_ctrl ctrlSetPositionX _offsetX + POS_W(1.5) + POS_W(0.085); // 0.085 = (0.2 - 0.03) / 2 +_ctrl ctrlCommit 0; + +_ctrl = _display displayCtrl IDC_TOGGLE_DIVIDER; +_ctrl ctrlSetPositionX _offsetX + POS_W(1.5*(_countEnabled - 1)) + POS_W(0.2) + POS_W(0.085); +_ctrl ctrlCommit 0; + { _x params ["_idc", "_enabled"]; + + if (_forEachIndex == 1 || {_forEachIndex == count _list - 1}) then { + _offsetX = _offsetX + POS_W(0.2); + }; + private _ctrl = _display displayCtrl _idc; if (_enabled) then { _ctrl ctrlSetPositionX _offsetX; @@ -71,3 +87,13 @@ private _offsetX = POS_X(1.5) + 0.5 * (POS_X(12) - POS_X(_countEnabled * 1.5)); _ctrl ctrlShow false; }; } forEach _list; + +// Set toggle button icon and tooltip +private _ctrl = _display displayCtrl IDC_TOGGLE; +if (GVAR(target) == ACE_player) then { + _ctrl ctrlSetText QPATHTOF(data\categories\toggle_to_other.paa); + _ctrl ctrlSetTooltip LLSTRING(ToggleToOther); +} else { + _ctrl ctrlSetText QPATHTOF(data\categories\toggle_to_self.paa); + _ctrl ctrlSetTooltip LLSTRING(ToggleToSelf); +}; diff --git a/addons/medical_gui/functions/fnc_updateActions.sqf b/addons/medical_gui/functions/fnc_updateActions.sqf index 43141b9c10..6d52b8ccdf 100644 --- a/addons/medical_gui/functions/fnc_updateActions.sqf +++ b/addons/medical_gui/functions/fnc_updateActions.sqf @@ -38,7 +38,7 @@ if (_showTriage) exitWith { // Show treatment options on action buttons private _shownIndex = 0; { - _x params ["_displayName", "_category", "_condition", "_statement"]; + _x params ["_displayName", "_category", "_condition", "_statement", "_items"]; // Check action category and condition if (_category == _selectedCategory && {call _condition}) then { @@ -50,6 +50,27 @@ private _shownIndex = 0; _ctrl ctrlSetPositionY POS_H(1.1 * _shownIndex); _ctrl ctrlCommit 0; + private _countText = ""; + if (_items isNotEqualTo []) then { + if ("ACE_surgicalKit" in _items && {EGVAR(medical_treatment,consumeSurgicalKit) == 2}) then { + _items = ["ACE_suture"]; + }; + private _counts = [_items] call FUNC(countTreatmentItems); + _countText = _counts call FUNC(formatItemCounts); + }; + _ctrl ctrlSetTooltipColorText [1, 1, 1, 1]; + _ctrl ctrlSetTooltip _countText; + + // Show warning if tourniquet will interfere with action + if ( + GVAR(tourniquetWarning) && + {(_category in ["examine", "medication"]) || (_items findIf {"IV" in _x}) > -1} && + {HAS_TOURNIQUET_APPLIED_ON(GVAR(target),GVAR(selectedBodyPart))} + ) then { + _ctrl ctrlSetTooltipColorText [1, 1, 0, 1]; + _ctrl ctrlSetTooltip LLSTRING(TourniquetWarning); + }; + _ctrl ctrlSetText _displayName; _ctrl ctrlShow true; diff --git a/addons/medical_gui/functions/fnc_updateBodyImage.sqf b/addons/medical_gui/functions/fnc_updateBodyImage.sqf index 11454e2dfd..4d22b68a2d 100644 --- a/addons/medical_gui/functions/fnc_updateBodyImage.sqf +++ b/addons/medical_gui/functions/fnc_updateBodyImage.sqf @@ -6,17 +6,18 @@ * Arguments: * 0: Body image controls group * 1: Target + * 2: Body part * * Return Value: * None * * Example: - * [CONTROL, _target] call ace_medical_gui_fnc_updateBodyImage + * [CONTROL, _target, 0] call ace_medical_gui_fnc_updateBodyImage * * Public: No */ -params ["_ctrlGroup", "_target"]; +params ["_ctrlGroup", "_target", "_selectionN"]; // Get tourniquets, damage, and blood loss for target private _tourniquets = GET_TOURNIQUETS(_target); @@ -34,7 +35,12 @@ private _bodyPartBloodLoss = [0, 0, 0, 0, 0, 0]; } forEach GET_OPEN_WOUNDS(_target); { - _x params ["_bodyPartIDC", ["_tourniquetIDC", -1], ["_fractureIDC", -1]]; + _x params ["_bodyPartIDC", "_selectedIDC", ["_tourniquetIDC", -1], ["_fractureIDC", -1]]; + + private _selected = _forEachIndex == _selectionN; + private _ctrlSelected = _ctrlGroup controlsGroupCtrl _selectedIDC; + _ctrlSelected ctrlSetTextColor GVAR(bodypartOutlineColor); + _ctrlSelected ctrlShow _selected; // Show or hide the tourniquet icon if (_tourniquetIDC != -1) then { @@ -85,17 +91,17 @@ private _bodyPartBloodLoss = [0, 0, 0, 0, 0, 0]; _damageThreshold = _damageThreshold * 1.5 }; }; - _damage = (_damage / _damageThreshold) min 1; + _damage = (_damage / (0.01 max _damageThreshold)) min 1; [_damage] call FUNC(damageToRGBA); }; private _ctrlBodyPart = _ctrlGroup controlsGroupCtrl _bodyPartIDC; _ctrlBodyPart ctrlSetTextColor _bodyPartColor; } forEach [ - [IDC_BODY_HEAD], - [IDC_BODY_TORSO], - [IDC_BODY_ARMLEFT, IDC_BODY_ARMLEFT_T, IDC_BODY_ARMLEFT_B], - [IDC_BODY_ARMRIGHT, IDC_BODY_ARMRIGHT_T, IDC_BODY_ARMRIGHT_B], - [IDC_BODY_LEGLEFT, IDC_BODY_LEGLEFT_T, IDC_BODY_LEGLEFT_B], - [IDC_BODY_LEGRIGHT, IDC_BODY_LEGRIGHT_T, IDC_BODY_LEGRIGHT_B] + [IDC_BODY_HEAD, IDC_BODY_HEAD_S], + [IDC_BODY_TORSO, IDC_BODY_TORSO_S], + [IDC_BODY_ARMLEFT, IDC_BODY_ARMLEFT_S, IDC_BODY_ARMLEFT_T, IDC_BODY_ARMLEFT_B], + [IDC_BODY_ARMRIGHT, IDC_BODY_ARMRIGHT_S, IDC_BODY_ARMRIGHT_T, IDC_BODY_ARMRIGHT_B], + [IDC_BODY_LEGLEFT, IDC_BODY_LEGLEFT_S, IDC_BODY_LEGLEFT_T, IDC_BODY_LEGLEFT_B], + [IDC_BODY_LEGRIGHT, IDC_BODY_LEGRIGHT_S, IDC_BODY_LEGRIGHT_T, IDC_BODY_LEGRIGHT_B] ]; diff --git a/addons/medical_gui/functions/fnc_updateCategories.sqf b/addons/medical_gui/functions/fnc_updateCategories.sqf index cf6498924e..c9917a8758 100644 --- a/addons/medical_gui/functions/fnc_updateCategories.sqf +++ b/addons/medical_gui/functions/fnc_updateCategories.sqf @@ -22,6 +22,7 @@ params ["_display"]; private _ctrl = _display displayCtrl _idc; private _enable = GVAR(actions) findIf {_category == _x select 1 && {call (_x select 2)}} > -1; + if (_category isEqualTo "triage") then {_enable = true}; _ctrl ctrlEnable _enable; private _selectedColor = [ @@ -36,6 +37,7 @@ params ["_display"]; _color set [-1, 0.8]; // Mouseover change _ctrl ctrlSetActiveColor _color; } forEach [ + [IDC_TRIAGE, "triage"], [IDC_EXAMINE, "examine"], [IDC_BANDAGE, "bandage"], [IDC_MEDICATION, "medication"], diff --git a/addons/medical_gui/functions/fnc_updateInjuryList.sqf b/addons/medical_gui/functions/fnc_updateInjuryList.sqf index 85c87cec7e..328e80242a 100644 --- a/addons/medical_gui/functions/fnc_updateInjuryList.sqf +++ b/addons/medical_gui/functions/fnc_updateInjuryList.sqf @@ -6,7 +6,7 @@ * Arguments: * 0: Injury list * 1: Target - * 2: Body part + * 2: Body part, -1 to only show overall health info * * Return Value: * None @@ -20,6 +20,103 @@ params ["_ctrl", "_target", "_selectionN"]; private _entries = []; +private _nonissueColor = [1, 1, 1, 0.33]; + +// Indicate if unit is bleeding at all +if (IS_BLEEDING(_target)) then { + // Give a qualitative description of the rate of bleeding + private _cardiacOutput = [_target] call EFUNC(medical_status,getCardiacOutput); + private _bleedRate = GET_BLOOD_LOSS(_target); + private _bleedRateKO = BLOOD_LOSS_KNOCK_OUT_THRESHOLD * (_cardiacOutput max 0.05); + // Use nonzero minimum cardiac output to prevent all bleeding showing as massive during cardiac arrest + + switch (true) do { + case (_bleedRate < _bleedRateKO * BLEED_RATE_SLOW): { + _entries pushBack [localize LSTRING(Bleed_Rate1), [1, 1, 0, 1]]; + }; + case (_bleedRate < _bleedRateKO * BLEED_RATE_MODERATE): { + _entries pushBack [localize LSTRING(Bleed_Rate2), [1, 0.67, 0, 1]]; + }; + case (_bleedRate < _bleedRateKO * BLEED_RATE_SEVERE): { + _entries pushBack [localize LSTRING(Bleed_Rate3), [1, 0.33, 0, 1]]; + }; + default { + _entries pushBack [localize LSTRING(Bleed_Rate4), [1, 0, 0, 1]]; + }; + }; +} else { + _entries pushBack [localize LSTRING(Status_Nobleeding), _nonissueColor]; +}; + +if (GVAR(showBloodlossEntry)) then { + // Give a qualitative description of the blood volume lost + switch (GET_HEMORRHAGE(_target)) do { + case 0: { + _entries pushBack [localize LSTRING(Lost_Blood0), _nonissueColor]; + }; + case 1: { + _entries pushBack [localize LSTRING(Lost_Blood1), [1, 1, 0, 1]]; + }; + case 2: { + _entries pushBack [localize LSTRING(Lost_Blood2), [1, 0.67, 0, 1]]; + }; + case 3: { + _entries pushBack [localize LSTRING(Lost_Blood3), [1, 0.33, 0, 1]]; + }; + case 4: { + _entries pushBack [localize LSTRING(Lost_Blood4), [1, 0, 0, 1]]; + }; + }; +}; +// Show receiving IV volume remaining +private _totalIvVolume = 0; +{ + _x params ["_volumeRemaining"]; + _totalIvVolume = _totalIvVolume + _volumeRemaining; +} forEach (_target getVariable [QEGVAR(medical,ivBags), []]); + +if (_totalIvVolume >= 1) then { + _entries pushBack [format [localize ELSTRING(medical_treatment,receivingIvVolume), floor _totalIvVolume], [1, 1, 1, 1]]; +} else { + _entries pushBack [localize ELSTRING(medical_treatment,Status_NoIv), _nonissueColor]; +}; + +// Indicate the amount of pain the unit is in +if (_target call EFUNC(common,isAwake)) then { + private _pain = GET_PAIN_PERCEIVED(_target); + if (_pain > 0) then { + private _painText = switch (true) do { + case (_pain > PAIN_UNCONSCIOUS): { + ELSTRING(medical_treatment,Status_SeverePain); + }; + case (_pain > (PAIN_UNCONSCIOUS / 5)): { + ELSTRING(medical_treatment,Status_Pain); + }; + default { + ELSTRING(medical_treatment,Status_MildPain); + }; + }; + _entries pushBack [localize _painText, [1, 1, 1, 1]]; + } else { + _entries pushBack [localize ELSTRING(medical_treatment,Status_NoPain), _nonissueColor]; + }; +}; + +// Skip the rest as they're body part specific +if (_selectionN == -1) exitWith { + // Add all entries to injury list + lbClear _ctrl; + + { + _x params ["_text", "_color"]; + + _ctrl lbSetColor [_ctrl lbAdd _text, _color]; + } forEach _entries; + + _ctrl lbSetCurSel -1; +}; + +_entries pushBack ["", [1, 1, 1, 1]]; // Add selected body part name private _bodyPartName = [ @@ -70,29 +167,6 @@ if (GVAR(showDamageEntry)) then { }; }; -// Indicate if unit is bleeding at all -if (IS_BLEEDING(_target)) then { - _entries pushBack [localize LSTRING(Status_Bleeding), [1, 0, 0, 1]]; -}; - -if (GVAR(showBloodlossEntry)) then { - // Give a qualitative description of the blood volume lost - switch (GET_HEMORRHAGE(_target)) do { - case 1: { - _entries pushBack [localize LSTRING(Lost_Blood1), [1, 1, 0, 1]]; - }; - case 2: { - _entries pushBack [localize LSTRING(Lost_Blood2), [1, 0.67, 0, 1]]; - }; - case 3: { - _entries pushBack [localize LSTRING(Lost_Blood3), [1, 0.33, 0, 1]]; - }; - case 4: { - _entries pushBack [localize LSTRING(Lost_Blood4), [1, 0, 0, 1]]; - }; - }; -}; - // Indicate if a tourniquet is applied if (HAS_TOURNIQUET_APPLIED_ON(_target,_selectionN)) then { _entries pushBack [localize LSTRING(Status_Tourniquet_Applied), [0.77, 0.51, 0.08, 1]]; @@ -110,36 +184,6 @@ switch (GET_FRACTURES(_target) select _selectionN) do { }; }; -// Indicate the amount of pain the unit is in -if (_target call EFUNC(common,isAwake)) then { - private _pain = GET_PAIN_PERCEIVED(_target); - if (_pain > 0) then { - private _painText = switch (true) do { - case (_pain > PAIN_UNCONSCIOUS): { - ELSTRING(medical_treatment,Status_SeverePain); - }; - case (_pain > (PAIN_UNCONSCIOUS / 5)): { - ELSTRING(medical_treatment,Status_Pain); - }; - default { - ELSTRING(medical_treatment,Status_MildPain); - }; - }; - _entries pushBack [localize _painText, [1, 1, 1, 1]]; - }; -}; - -// Show receiving IV volume remaining -private _totalIvVolume = 0; -{ - _x params ["_volumeRemaining"]; - _totalIvVolume = _totalIvVolume + _volumeRemaining; -} forEach (_target getVariable [QEGVAR(medical,ivBags), []]); - -if (_totalIvVolume >= 1) then { - _entries pushBack [format [localize ELSTRING(medical_treatment,receivingIvVolume), floor _totalIvVolume], [1, 1, 1, 1]]; -}; - // Add entries for open, bandaged, and stitched wounds private _woundEntries = []; @@ -174,7 +218,7 @@ private _fnc_processWounds = { // Handle no wound entries if (_woundEntries isEqualTo []) then { - _entries pushBack [localize ELSTRING(medical_treatment,NoInjuriesBodypart), [1, 1, 1, 1]]; + _entries pushBack [localize ELSTRING(medical_treatment,NoInjuriesBodypart), _nonissueColor]; } else { _entries append _woundEntries; }; diff --git a/addons/medical_gui/gui.hpp b/addons/medical_gui/gui.hpp index e0f836f058..f9cb0b40a3 100644 --- a/addons/medical_gui/gui.hpp +++ b/addons/medical_gui/gui.hpp @@ -9,7 +9,7 @@ class RscControlsGroupNoScrollbars; class GVAR(BodyImage): RscControlsGroupNoScrollbars { idc = IDC_BODY_GROUP; - x = QUOTE(POS_X(13.33)); + x = QUOTE(POS_X(13.83)); y = QUOTE(POS_Y(2.73)); w = QUOTE(POS_W(12.33)); h = QUOTE(POS_H(12.33)); @@ -82,13 +82,39 @@ class GVAR(BodyImage): RscControlsGroupNoScrollbars { idc = IDC_BODY_LEGRIGHT_T; text = QPATHTOF(data\body_image\leg_right_t.paa); }; + class HeadS: Background { + idc = IDC_BODY_HEAD_S; + text = QPATHTOF(data\body_image\head_s.paa); + colorText[] = {1.0, 1.0, 1.0, 1.0}; + show = 0; + }; + class TorsoS: HeadS { + idc = IDC_BODY_TORSO_S; + text = QPATHTOF(data\body_image\torso_s.paa); + }; + class ArmLeftS: HeadS { + idc = IDC_BODY_ARMLEFT_S; + text = QPATHTOF(data\body_image\arm_left_s.paa); + }; + class ArmRightS: HeadS { + idc = IDC_BODY_ARMRIGHT_S; + text = QPATHTOF(data\body_image\arm_right_s.paa); + }; + class LegLeftS: HeadS { + idc = IDC_BODY_LEGLEFT_S; + text = QPATHTOF(data\body_image\leg_left_s.paa); + }; + class LegRightS: HeadS { + idc = IDC_BODY_LEGRIGHT_S; + text = QPATHTOF(data\body_image\leg_right_s.paa); + }; }; }; class GVAR(TriageToggle): RscButton { idc = -1; onButtonClick = QUOTE([ctrlParent (_this select 0)] call FUNC(toggleTriageSelect)); - x = QUOTE(POS_X(13.33)); + x = QUOTE(POS_X(13.83)); y = QUOTE(POS_Y(15.5)); w = QUOTE(POS_W(12.33)); h = QUOTE(POS_H(1.1)); @@ -99,7 +125,7 @@ class GVAR(TriageToggle): RscButton { class GVAR(TriageSelect): RscControlsGroupNoScrollbars { idc = IDC_TRIAGE_SELECT; - x = QUOTE(POS_X(13.33)); + x = QUOTE(POS_X(13.83)); y = QUOTE(POS_Y(16.6)); w = QUOTE(POS_W(12.33)); h = QUOTE(POS_H(5.5)); @@ -163,7 +189,7 @@ class ACE_Medical_Menu_ActionButton: RscButtonMenu { style = ST_LEFT; x = 0; y = 0; - w = QUOTE(POS_W(11.833)); + w = QUOTE(POS_W(12.33)); h = QUOTE(POS_H(1)); size = QUOTE(POS_H(0.9)); class Attributes { @@ -180,9 +206,11 @@ class ACE_Medical_Menu { enableSimulation = 1; onLoad = QUOTE(_this call FUNC(onMenuOpen)); onUnload = QUOTE(_this call FUNC(onMenuClose)); + onKeyDown = QUOTE([ARR_3('onKeyDown',_this,QQGVAR(display))] call FUNC(onKeyDown)); class controlsBackground { class Title: RscText { idc = IDC_TITLE; + text = CSTRING(MedicalMenu); x = QUOTE(POS_X(1)); y = QUOTE(POS_Y(0)); w = QUOTE(POS_W(38)); @@ -208,20 +236,21 @@ class ACE_Medical_Menu { idc = -1; style = ST_CENTER; text = CSTRING(EXAMINE_TREATMENT); - x = QUOTE(POS_X(1)); + x = QUOTE(POS_X(1.5)); y = QUOTE(POS_Y(1.5)); w = QUOTE(POS_W(12.33)); h = QUOTE(POS_H(1)); sizeEx = QUOTE(POS_H(1.2)); colorText[] = {1, 1, 1, 0.9}; }; - class StatusHeader: TreatmentHeader { - text = CSTRING(STATUS); - x = QUOTE(POS_X(13.33)); + class NameHeader: TreatmentHeader { + idc = IDC_NAME; + x = QUOTE(POS_X(13.83)); }; class OverviewHeader: TreatmentHeader { text = CSTRING(OVERVIEW); - x = QUOTE(POS_X(25.66)); + w = QUOTE(POS_W(12.34)); // 12.33 + 12.33 + 12.34 = 37.00 + x = QUOTE(POS_X(26.16)); }; class HeaderLine: RscText { idc = -1; @@ -236,8 +265,8 @@ class ACE_Medical_Menu { onButtonClick = QUOTE(GVAR(selectedCategory) = 'triage'); text = QPATHTOF(data\categories\triage_card.paa); tooltip = CSTRING(ViewTriageCard); - x = QUOTE(POS_X(1.5)); - y = QUOTE(POS_Y(2.73)); + x = QUOTE(POS_X(1.75)); + y = QUOTE(POS_Y(2.75)); w = QUOTE(POS_W(1.5)); h = QUOTE(POS_H(1.5)); color[] = {1, 1, 1, 1}; @@ -252,56 +281,66 @@ class ACE_Medical_Menu { onButtonClick = QUOTE(GVAR(selectedCategory) = 'examine'); text = QPATHTOF(data\categories\examine_patient.paa); tooltip = CSTRING(ExaminePatient); - x = QUOTE(POS_X(3)); + x = QUOTE(POS_X(3.25)); }; class Bandage: Triage { idc = IDC_BANDAGE; onButtonClick = QUOTE(GVAR(selectedCategory) = 'bandage'); text = QPATHTOF(data\categories\bandage_fracture.paa); tooltip = CSTRING(BandageFractures); - x = QUOTE(POS_X(4.5)); + x = QUOTE(POS_X(4.75)); }; class Medication: Triage { idc = IDC_MEDICATION; onButtonClick = QUOTE(GVAR(selectedCategory) = 'medication'); text = QPATHTOF(data\categories\medication.paa); tooltip = CSTRING(Medication); - x = QUOTE(POS_X(6)); + x = QUOTE(POS_X(6.25)); }; class Airway: Triage { idc = IDC_AIRWAY; onButtonClick = QUOTE(GVAR(selectedCategory) = 'airway'); text = QPATHTOF(data\categories\airway_management.paa); tooltip = CSTRING(AirwayManagement); - x = QUOTE(POS_X(7.5)); + x = QUOTE(POS_X(7.75)); }; class Advanced: Triage { idc = IDC_ADVANCED; onButtonClick = QUOTE(GVAR(selectedCategory) = 'advanced'); text = QPATHTOF(data\categories\advanced_treatment.paa); tooltip = CSTRING(AdvancedTreatment); - x = QUOTE(POS_X(9)); + x = QUOTE(POS_X(9.25)); }; class Drag: Triage { idc = IDC_DRAG; onButtonClick = QUOTE(GVAR(selectedCategory) = 'drag'); text = QPATHTOF(data\categories\carry.paa); tooltip = CSTRING(DragCarry); - x = QUOTE(POS_X(10.5)); + x = QUOTE(POS_X(10.75)); }; class Toggle: Triage { idc = IDC_TOGGLE; onButtonClick = QUOTE(call FUNC(handleToggle)); - text = QPATHTOF(data\categories\toggle_self.paa); - tooltip = CSTRING(ToggleSelf); + text = QPATHTOF(data\categories\toggle_to_other.paa); x = QUOTE(POS_X(12)); }; + class TriageDivider: HeaderLine { + idc = IDC_TRIAGE_DIVIDER; + x = QUOTE(POS_X(3.265)); + y = QUOTE(POS_Y(3.0)); + w = QUOTE(POS_W(0.03)); + h = QUOTE(POS_H(1.0)); + }; + class ToggleDivider: TriageDivider { + idc = IDC_TOGGLE_DIVIDER; + x = QUOTE(POS_X(3.265)); + }; class TriageCard: RscListBox { idc = IDC_TRIAGE_CARD; x = QUOTE(POS_X(1.5)); y = QUOTE(POS_Y(4.4)); - w = QUOTE(POS_W(11.833)); - h = QUOTE(POS_H(10)); + w = QUOTE(POS_W(12.33)); + h = QUOTE(POS_H(12.2)); sizeEx = QUOTE(POS_H(0.7)); colorSelect[] = {1, 1, 1, 1}; colorSelect2[] = {1, 1, 1, 1}; @@ -314,15 +353,15 @@ class ACE_Medical_Menu { idc = IDC_ACTION_BUTTON_GROUP; x = QUOTE(POS_X(1.5)); y = QUOTE(POS_Y(4.4)); - w = QUOTE(POS_W(11.833)); - h = QUOTE(POS_H(10)); + w = QUOTE(POS_W(12.33)); + h = QUOTE(POS_H(12.2)); }; class BodyImage: GVAR(BodyImage) {}; class SelectHead: RscButton { idc = -1; onButtonClick = QUOTE(GVAR(selectedBodyPart) = 0); tooltip = CSTRING(SelectHead); - x = QUOTE(POS_X(18.8)); + x = QUOTE(POS_X(19.3)); y = QUOTE(POS_Y(3.2)); w = QUOTE(POS_W(1.4)); h = QUOTE(POS_H(1.8)); @@ -333,7 +372,7 @@ class ACE_Medical_Menu { class SelectTorso: SelectHead { onButtonClick = QUOTE(GVAR(selectedBodyPart) = 1); tooltip = CSTRING(SelectTorso); - x = QUOTE(POS_X(18.4)); + x = QUOTE(POS_X(18.9)); y = QUOTE(POS_Y(5)); w = QUOTE(POS_W(2.2)); h = QUOTE(POS_H(3.8)); @@ -341,7 +380,7 @@ class ACE_Medical_Menu { class SelectArmLeft: SelectHead { onButtonClick = QUOTE(GVAR(selectedBodyPart) = 2); tooltip = CSTRING(SelectLeftArm); - x = QUOTE(POS_X(20.6)); + x = QUOTE(POS_X(21.1)); y = QUOTE(POS_Y(5.1)); w = QUOTE(POS_W(1.1)); h = QUOTE(POS_H(4.6)); @@ -349,12 +388,12 @@ class ACE_Medical_Menu { class SelectArmRight: SelectArmLeft { onButtonClick = QUOTE(GVAR(selectedBodyPart) = 3); tooltip = CSTRING(SelectRightArm); - x = QUOTE(POS_X(17.4)); + x = QUOTE(POS_X(17.8)); }; class SelectLegLeft: SelectHead { onButtonClick = QUOTE(GVAR(selectedBodyPart) = 4); tooltip = CSTRING(SelectLeftLeg); - x = QUOTE(POS_X(19.5)); + x = QUOTE(POS_X(20.0)); y = QUOTE(POS_Y(8.8)); w = QUOTE(POS_W(1.1)); h = QUOTE(POS_H(5.8)); @@ -362,12 +401,14 @@ class ACE_Medical_Menu { class SelectLegRight: SelectLegLeft { onButtonClick = QUOTE(GVAR(selectedBodyPart) = 5); tooltip = CSTRING(SelectRightLeg); - x = QUOTE(POS_X(18.4)); + x = QUOTE(POS_X(18.9)); }; class Injuries: TriageCard { idc = IDC_INJURIES; - x = QUOTE(POS_X(25.66)); + x = QUOTE(POS_X(26.17)); + y = QUOTE(POS_Y(3.3)); w = QUOTE(POS_W(12.33)); + h = QUOTE(POS_Y(13.3)); }; class ActivityHeader: TreatmentHeader { text = CSTRING(ACTIVITY_LOG); @@ -378,27 +419,33 @@ class ACE_Medical_Menu { }; class QuickViewHeader: ActivityHeader { text = CSTRING(QUICK_VIEW); - x = QUOTE(POS_X(19.5)); + x = QUOTE(POS_X(20.0)); }; class LowerLine: HeaderLine { y = QUOTE(POS_Y(18.5)); }; + class LowerDivider: HeaderLine { + x = QUOTE(POS_X(19.985)); + y = QUOTE(POS_Y(18.75)); + w = QUOTE(POS_W(0.03)); + h = QUOTE(POS_H(7.6)); + }; class Activity: Injuries { idc = IDC_ACTIVITY; x = QUOTE(POS_X(1.5)); y = QUOTE(POS_Y(18.5)); w = QUOTE(POS_W(18.5)); - h = QUOTE(POS_H(6.5)); + h = QUOTE(POS_H(7.6)); colorBackground[] = {0, 0, 0, 0}; }; class QuickView: Activity { idc = IDC_QUICKVIEW; - x = QUOTE(POS_X(21.5)); + x = QUOTE(POS_X(20.0)); }; class TriageStatus: RscText { idc = IDC_TRIAGE_STATUS; style = ST_CENTER; - x = QUOTE(POS_X(13.33)); + x = QUOTE(POS_X(13.83)); y = QUOTE(POS_Y(15.5)); w = QUOTE(POS_W(12.33)); h = QUOTE(POS_H(1.1)); @@ -406,13 +453,30 @@ class ACE_Medical_Menu { }; class TriageToggle: GVAR(TriageToggle) {}; class TriageSelect: GVAR(TriageSelect) {}; + class BodyLabelLeft: RscText { + idc = -1; + style = ST_RIGHT; + text = CSTRING(BodyLabelLeft); + font = "RobotoCondensedBold"; + x = QUOTE(POS_X(17.0)); + y = QUOTE(POS_Y(10.5)); + w = QUOTE(POS_W(6.0)); + h = QUOTE(POS_H(2.0)); + sizeEx = QUOTE(POS_H(1.4)); + colorText[] = {1, 1, 1, 0.33}; + shadow = 0; + }; + class BodyLabelRight: BodyLabelLeft { + style = ST_LEFT; + text = CSTRING(BodyLabelRight); + }; }; }; class GVAR(RscTriageCard) { idd = -1; movingEnable = 1; - onLoad = QUOTE(uiNamespace setVariable [ARR_2(QQGVAR(RscTriageCard), _this select 0)]); + onLoad = QUOTE(uiNamespace setVariable [ARR_2(QQGVAR(RscTriageCard),_this select 0)]); class controls { class Background: RscText { idc = -1; @@ -509,7 +573,7 @@ class RscTitles { fadeOut = 0.3; duration = 999999; movingEnable = 0; - onLoad = QUOTE(uiNamespace setVariable [ARR_2(QQGVAR(RscPatientInfo), _this select 0)]); + onLoad = QUOTE(uiNamespace setVariable [ARR_2(QQGVAR(RscPatientInfo),_this select 0)]); class controls { class PatientInfoContainer: RscControlsGroupNoScrollbars { idc = -1; @@ -584,6 +648,30 @@ class RscTitles { w = QUOTE(POS_W(8.5)); h = QUOTE(POS_H(8.5)); }; + class HeadS: HeadS { + w = QUOTE(POS_W(8.5)); + h = QUOTE(POS_H(8.5)); + }; + class TorsoS: TorsoS { + w = QUOTE(POS_W(8.5)); + h = QUOTE(POS_H(8.5)); + }; + class ArmLeftS: ArmLeftS { + w = QUOTE(POS_W(8.5)); + h = QUOTE(POS_H(8.5)); + }; + class ArmRightS: ArmRightS { + w = QUOTE(POS_W(8.5)); + h = QUOTE(POS_H(8.5)); + }; + class LegLeftS: LegLeftS { + w = QUOTE(POS_W(8.5)); + h = QUOTE(POS_H(8.5)); + }; + class LegRightS: LegRightS { + w = QUOTE(POS_W(8.5)); + h = QUOTE(POS_H(8.5)); + }; }; }; class InjuriesLabel: RscText { diff --git a/addons/medical_gui/initSettings.sqf b/addons/medical_gui/initSettings.inc.sqf similarity index 62% rename from addons/medical_gui/initSettings.sqf rename to addons/medical_gui/initSettings.inc.sqf index c1d02d7131..a0418ca74e 100644 --- a/addons/medical_gui/initSettings.sqf +++ b/addons/medical_gui/initSettings.inc.sqf @@ -2,7 +2,7 @@ QGVAR(enableActions), "LIST", [LSTRING(EnableActions_DisplayName), LSTRING(EnableActions_Description)], - [ELSTRING(medical,Category), LSTRING(SubCategory)], + [ELSTRING(medical,Interface_Category), LSTRING(SubCategory)], [[0, 1, 2], [LSTRING(Selections3D), LSTRING(Radial), ELSTRING(common,Disabled)], 0], false ] call CBA_fnc_addSetting; @@ -11,7 +11,7 @@ QGVAR(enableSelfActions), "CHECKBOX", [LSTRING(EnableSelfActions_DisplayName), LSTRING(EnableSelfActions_Description)], - [ELSTRING(medical,Category), LSTRING(SubCategory)], + [ELSTRING(medical,Interface_Category), LSTRING(SubCategory)], true, false ] call CBA_fnc_addSetting; @@ -20,7 +20,7 @@ QGVAR(enableMedicalMenu), "LIST", [LSTRING(EnableMedicalMenu_DisplayName), LSTRING(EnableMedicalMenu_Description)], - [ELSTRING(medical,Category), LSTRING(SubCategory)], + [ELSTRING(medical,Interface_Category), LSTRING(SubCategory)], [[0, 1, 2], [ELSTRING(common,Disabled), ELSTRING(common,Enabled), ELSTRING(common,VehiclesOnly)], 1], false ] call CBA_fnc_addSetting; @@ -29,7 +29,7 @@ QGVAR(openAfterTreatment), "CHECKBOX", [LSTRING(OpenAfterTreatment_DisplayName), LSTRING(OpenAfterTreatment_Description)], - [ELSTRING(medical,Category), LSTRING(SubCategory)], + [ELSTRING(medical,Interface_Category), LSTRING(SubCategory)], true, false ] call CBA_fnc_addSetting; @@ -38,7 +38,7 @@ QGVAR(maxDistance), "SLIDER", [LSTRING(MaxDistance_DisplayName), LSTRING(MaxDistance_Description)], - [ELSTRING(medical,Category), LSTRING(SubCategory)], + [ELSTRING(medical,Interface_Category), LSTRING(SubCategory)], [0, 10, 3, 1], true ] call CBA_fnc_addSetting; @@ -47,7 +47,7 @@ QGVAR(interactionMenuShowTriage), "LIST", [LSTRING(InteractionMenuShowTriage_DisplayName), LSTRING(InteractionMenuShowTriage_Description)], - [ELSTRING(medical,Category), LSTRING(SubCategory)], + [ELSTRING(medical,Interface_Category), LSTRING(SubCategory)], [[0, 1, 2], [ELSTRING(common,Disabled), ELSTRING(Medical_Treatment,Anyone), ELSTRING(Medical_Treatment,Medics)], 1], false ] call CBA_fnc_addSetting; @@ -57,7 +57,7 @@ * See: https://gka.github.io/palettes */ private _bloodLossColors = [ - [1.00, 1.00, 1.00, 1], + [0.00, 0.00, 0.00, 1], [1.00, 0.95, 0.64, 1], [1.00, 0.87, 0.46, 1], [1.00, 0.80, 0.33, 1], @@ -74,7 +74,7 @@ private _bloodLossColors = [ * See: https://gka.github.io/palettes */ private _damageColors = [ - [1.00, 1.00, 1.00, 1], + [0.00, 0.00, 0.00, 1], [0.75, 0.95, 1.00, 1], [0.62, 0.86, 1.00, 1], [0.54, 0.77, 1.00, 1], @@ -86,7 +86,7 @@ private _damageColors = [ [0.00, 0.00, 1.00, 1] ]; -private _categoryColors = [ELSTRING(medical,Category), format ["| %1 |", LELSTRING(common,subcategory_colors)]]; +private _categoryColors = [ELSTRING(medical,Interface_Category), format ["| %1 |", LELSTRING(common,subcategory_colors)]]; { [ format ["%1_%2", QGVAR(bloodLossColor), _forEachIndex], @@ -113,7 +113,7 @@ private _categoryColors = [ELSTRING(medical,Category), format ["| %1 |", LELSTRI QGVAR(showDamageEntry), "CHECKBOX", [LSTRING(showDamageEntry_DisplayName), LSTRING(showDamageEntry_Description)], - [ELSTRING(medical,Category), LSTRING(SubCategory)], + [ELSTRING(medical,Interface_Category), LSTRING(SubCategory)], false, true ] call CBA_fnc_addSetting; @@ -122,7 +122,52 @@ private _categoryColors = [ELSTRING(medical,Category), format ["| %1 |", LELSTRI QGVAR(showBloodlossEntry), "CHECKBOX", [LSTRING(ShowBloodlossEntry_DisplayName), LSTRING(ShowBloodlossEntry_Description)], - [ELSTRING(medical,Category), LSTRING(SubCategory)], + [ELSTRING(medical,Interface_Category), LSTRING(SubCategory)], true, true // isGlobal ] call CBA_fnc_addSetting; + +[ + QGVAR(bodyPartOutlineColor), + "COLOR", + [LSTRING(bodyPartOutlineColor_DisplayName), LSTRING(bodyPartOutlineColor_Description)], + [ELSTRING(medical,Interface_Category), LSTRING(SubCategory)], + [1.00, 1.00, 1.00, 1], + false +] call CBA_fnc_addSetting; + +[ + QGVAR(peekMedicalInfoReleaseDelay), + "TIME", + [LSTRING(PeekMedicalInfoReleaseDelay_DisplayName), LSTRING(PeekMedicalInfoReleaseDelay_Description)], + [ELSTRING(medical,Interface_Category), LSTRING(SubCategory)], + [0, 5, 1], + false +] call CBA_fnc_addSetting; + +[ + QGVAR(peekMedicalOnHit), + "CHECKBOX", + [LSTRING(PeekMedicalOnHit_DisplayName), LSTRING(PeekMedicalOnHit_Description)], + [ELSTRING(medical,Interface_Category), LSTRING(SubCategory)], + false, + false // isGlobal +] call CBA_fnc_addSetting; + +[ + QGVAR(peekMedicalOnHitDuration), + "TIME", + [LSTRING(PeekMedicalOnHitDuration_DisplayName), LSTRING(PeekMedicalOnHitDuration_Description)], + [ELSTRING(medical,Interface_Category), LSTRING(SubCategory)], + [0, 5, 1], + false +] call CBA_fnc_addSetting; + +[ + QGVAR(tourniquetWarning), + "CHECKBOX", + [LSTRING(TourniquetWarning_DisplayName), LSTRING(TourniquetWarning_Description)], + [ELSTRING(medical,Interface_Category), LSTRING(SubCategory)], + false, + false +] call CBA_fnc_addSetting; diff --git a/addons/medical_gui/script_component.hpp b/addons/medical_gui/script_component.hpp index 62c38447ee..d69fb65434 100644 --- a/addons/medical_gui/script_component.hpp +++ b/addons/medical_gui/script_component.hpp @@ -37,6 +37,7 @@ #define IDD_MEDICAL_MENU 38580 #define IDC_TITLE 1200 +#define IDC_NAME 1210 #define IDC_TRIAGE 1300 #define IDC_EXAMINE 1310 #define IDC_BANDAGE 1320 @@ -45,6 +46,8 @@ #define IDC_ADVANCED 1350 #define IDC_DRAG 1360 #define IDC_TOGGLE 1370 +#define IDC_TRIAGE_DIVIDER 1380 +#define IDC_TOGGLE_DIVIDER 1390 #define IDC_TRIAGE_CARD 1400 #define IDC_INJURIES 1410 @@ -68,6 +71,13 @@ #define IDC_BODY_ARMRIGHT_B 6060 #define IDC_BODY_LEGLEFT_B 6065 #define IDC_BODY_LEGRIGHT_B 6070 +#define IDC_BODY_GROUP_S 6075 +#define IDC_BODY_HEAD_S 6080 +#define IDC_BODY_TORSO_S 6085 +#define IDC_BODY_ARMLEFT_S 6090 +#define IDC_BODY_ARMRIGHT_S 6095 +#define IDC_BODY_LEGLEFT_S 6100 +#define IDC_BODY_LEGRIGHT_S 6105 #define IDC_TRIAGE_STATUS 7000 #define IDC_TRIAGE_SELECT 7100 diff --git a/addons/medical_gui/stringtable.xml b/addons/medical_gui/stringtable.xml index b659dac338..438b160bb2 100644 --- a/addons/medical_gui/stringtable.xml +++ b/addons/medical_gui/stringtable.xml @@ -9,7 +9,7 @@ GUI 界面 界面 - GUI + Interfaccia Grafica GUI Graficzny Interfejs Użytkownika Interfaz gráfica @@ -20,13 +20,13 @@ Enable Medical Actions Aktiviere Sanitätsaktionen - 治療インタラクションの有効化 + 医療インタラクションの有効化 Разрешить Медицинские действия Activer les actions médicales Ativar Ações Médicas 啟用醫療行為 启用医疗措施 - Attivare azioni mediche + Attiva azioni mediche Povolit zdravotnické akce Włącza opcje medyczne Habilitar acciones médicas @@ -36,13 +36,13 @@ Enables medical actions for the Interaction Menu and selects their style. Aktiviert die Sanitätsaktionen für das Interaktionsmenü und legt das Aussehen fest - インタラクション メニューから選択した表示方式で医療行為をできるようになります。 + インタラクションメニューから選択した表示方式で医療行為をできるようになります。 Включает медицинские действия для меню взаимодействия и выбирает их стиль. Permet d'afficher les actions médicales dans le menu d'interaction, et de définir leur style visuel. Ativa as ações médicas para o menu de interação e seleciona seus estilos. 為互動選單啟用醫療行為以及選擇其風格。 为交互式菜单启用医疗操作,并选择其样式。 - Abilita le azioni mediche per il Menu Interazione e seleziona il loro stile. + Abilita le azioni mediche nel Menù Interazioni e scegli il loro stile. Povolit zdravotnické akce pro menu interakcí a vybrat jejich styl. Umożliwia akcje medyczne w menu interakcji i wybiera ich styl. Habilita acciones médicas para el menú de interacción y selecciona su estilo. @@ -59,7 +59,7 @@ Seleção (3d) Választékok (3D) 3D výběr - Selezione (3D) + Selezioni (3D) 選択 (3D) 선택 (3d) 选择(3D) @@ -86,7 +86,7 @@ Enable Medical Self Actions Medizinische Selbst-Interaktionen anzeigen - 治療セルフインタラクションの有効化 + 医療セルフインタラクションの有効化 Разрешить Медицинские действия на себе Activer les actions médicales sur soi-même Ativar ações médicas em si mesmo @@ -102,13 +102,13 @@ Enables medical actions for the Self Interaction Menu. Medizinische Interaktionen bei Selbst-Interaktionen anzeigen - セルフ インタラクション メニューで医療行為をできるようになります。 + セルフインタラクションメニューで医療行為をできるようになります。 Включает медицинские действия для меню взаимодействия с собой. Active les actions médicales du menu d'interaction personnel. Ativa as ações médicas do menu de interação pessoal. 為自我互動選單啟用醫療行為。 为自我交互菜单启用医疗操作。 - Abilita il menu per le interazioni mediche personali + Abilita il menù per le interazioni mediche personali Povoluje zdravotnické akce v menu vlastních interakcí. Umożliwia działania medyczne w menu własnej interakcji. Activa las acciones médicas para el menú de interacción personal @@ -124,7 +124,7 @@ Ativar Menu Médico 啟用醫療選單 启用医疗菜单 - Abilita il menu medico + Abilita il menù medico Povolit Zdravotnické menu Włącz Menu Medyczne Activar menú médico @@ -134,13 +134,13 @@ Enables the use of the Medical Menu through the keybind or interaction menu. Aktiviere die Nutzung des Sanitätsmenüs durch eine Tastenkombination oder durch das Interaktionsmenü - 割り当てられたキーかインタラクション メニューから医療メニューを使えるようになります。 + 割り当てられたキーかインタラクションメニューから医療メニューを使えるようになります。 Позволяет использовать Медицинское меню через связку клавиш или меню взаимодействия. Permet l'utilisation du menu médical via le menu d'interaction ou l'appui d'une touche. - Ativa o uso do Menu Médico atráves da Tecla ou Menu de Interação. + Ativa o uso do Menu Médico através da Tecla ou Menu de Interação. 啟用以互動選單或者按鍵綁定所呼出的高效醫療選單 通过按键绑定或交互菜单启用医疗菜单。 - Abilita l'uso del Menu Medico attraverso il menu tastiera o il menu di interazione. + Abilita l'uso del Menù Medico attraverso il menù tastiera o il menu di interazione. Povoluje používání Zdravotnického menu klávesovou zkratku nebo skrze menu interakcí. Umożliwia korzystanie z menu medycznego poprzez skrót lub menu interakcji. Activa el uso del menú médico a través de la tecla o del menú de interacción @@ -156,7 +156,7 @@ Reabrir Menu Médico 醫療選單二度開啟 重新打开医疗菜单 - Riaprire il menù medico + Riapri il menù medico Znovu otevřít Zdravotnické menu Otwiera ponownie menu medyczne Reabrir menú médico @@ -172,7 +172,7 @@ Reabrir Menu Médico após um tratamento com sucesso 當治療完成後二度打開醫療選單 治疗成功后,重新打开医疗菜单。 - Riaprire il menu medico dopo il trattamento con successo. + Riapri il menù medico dopo un trattamento eseguito con successo. Otevře Zdravotnické menu po úspěšném dokončení zdravotnické akce. Otwiera ponownie menu medyczne po udanym leczeniu. Reabrir menú médico después de completar un tratamiento @@ -188,7 +188,7 @@ Distância Máxima 最大醫療距離 最大医疗距离 - Massima distanza + Distanza Massima Maximální vzdálenost Maksymalny dystans Distancia máxima @@ -198,13 +198,13 @@ Maximum distance from which the Medical Menu can be opened. Maximale Entfernung, um das Sanitätsmenü zu öffnen. - 治療メニューを開いたままにできる最大距離を決定します。 + 医療メニューを開いたままにできる最大距離を決定します。 Максимальное расстояние, с которого можно открыть Медицинское меню. Définit la distance (en mètres) à partir de laquelle il n'est plus possible d'activer le menu médical pour traiter un patient. A Distância máxima do paciente para que o Menu Médico possa ser aberto. 設定距離多遠以內可以對目標使用醫療選單 设定距离多远以内可以对目标使用医疗菜单 - Distanza massima da cui si può aprire il Menu Medico. + Distanza massima da cui si può aprire il Menù Medico. Maximální vzdálenost ze které je možné otevřít Zdravotnické menu. Maksymalny dystans w którym menu medyczne może zostać otwarte. Distancia máxima desde el paciente para que el menú pueda ser abierto @@ -214,7 +214,8 @@ Show Triage Level in Interaction Menu Couleur de triage dans le menu d'interaction - インタラクションにトリアージ レベル表示 + Mostra livello di Triage nel Menù d'Interazione + インタラクションにトリアージ レベルを表示 Mostrar nivel de triado en menú de interacción Показывать группу триажа в меню взаимодействий Pokaż poziom Triażu w menu interakcji @@ -225,6 +226,7 @@ Shows the patient's triage level by changing the color of the main and medical menu actions. Modifie la couleur du menu d'interactions et du sous-menu médical en fonction de la fiche de triage du patient. + Modifica il colore di interazioni e menù medico a seconda del livello di triage. メニューと医療メニューの色を変更し、患者のトリアージ レベルを表示します。 Mostrar el nivel de triado en el paciente cambiando el color de acciones de menú principales y médicas Отображает установленную группу карты медицинской сортировки (триажа), изменяя цвет действий основного и медицинского меню. @@ -244,7 +246,7 @@ Медик Médico Orvosi - 治療 + 医療 치료 医疗 醫療 @@ -260,7 +262,7 @@ Zdravotnická nabídka Menù Medico Menu médical - 治療メニュー + 医療メニュー 의료 메뉴 医疗菜单 醫療選單 @@ -276,12 +278,39 @@ Otevřít zdravotnickou nabídku Apri Menù Medico Ouvir le menu médical - 治療メニューを開く + 医療メニューを開く 의료 메뉴 열기 打开医疗菜单 開起醫療選單 Medikal Menüyü Aç + + Peek Medical Info + Podgląd Informacji Medycznych + 의료 정보 보기 + Aperçu des informations médicales + Sbircia Info Mediche + Medizinische Info anzeigen + 医療情報一時表示 + + + Medical Peek Duration + Czas Trwania Podglądu Medycznego + 의료 정보 보기 지속 시간 + Durée de l'aperçu des informations médicales + Durata di sbirciamento di info mediche + Dauer zum Anzeigen der medizinischen Info + 医療情報一時表示の表示時間 + + + How long the medical info peek remains open after releasing the key. + Jak długo podgląd informacji medycznych pozostaje otwarty po zwolnieniu przycisku. + 키를 놓은 후 의료 정보가 열린 상태로 유지되는 시간입니다. + Durée d'affichage des informations médicales après avoir relâché la touche. + Wie lange die medizinische Info-Anzeige nach dem Loslassen der Taste geöffnet bleibt. + Durata di visualizzazione delle Info Mediche dopo aver rilasciato il tasto. + 医療情報一時表示キーを放してからどれだけ長く情報表示するか。 + Load Patient Cargar al paciente en @@ -326,7 +355,7 @@ EXAMINAR & TRATAMENTO VYŠETŘENÍ & LÉČBA ESAMINA & TRATTA - 診断 & 治療 + 診断と治療 검사 / 치료 检查 & 治疗 檢查 & 治療 @@ -422,7 +451,7 @@ Pokaż kartę segregacyjną Ver cartão de triagem Zkontrolovat štítek - Guarda Triage Card + Guarda Scheda Triage トリアージカードを見る 부상자 카드 보기 查看分诊卡 @@ -454,7 +483,7 @@ Bandaże / Złamania Bandagens / Fraturas Bandáž / Zlomeniny - Bendaggi/Fratture + Bendaggi / Fratture 包帯 / 骨折 붕대 / 골절 包扎/骨折 @@ -470,7 +499,7 @@ Leki Medicação Léky - Medicazione + Medicazioni 投薬 약물 치료 药物 @@ -525,21 +554,23 @@ 拖 / 背 Sürükle / Taşı - - Toggle (Self) - Umschalter (Selbst) - Лечить себя/другого раненого - Basculer (soi-même) - Przełącz (na siebie) - Alternar - Alternar (Si mesmo) - Přepnout (na sebe) - Attiva (Te Stesso) - 切り替え (自分) - 토글 (자신) - 切换(自己) - 切換 (自己) - Değiştir (Şahsi) + + Switch to self + Zmień na siebie + 자신으로 전환 + Passer à soi-même + Wechseln zu selbst + Passa a te stesso + 自分に切り替え + + + Switch to target + Zmień na pacjenta + 대상으로 전환 + Passer à la cible + Wechseln zu Ziel + Passa al paziente + 相手に切り替え Head @@ -647,7 +678,7 @@ Selecionar Cabeça Vybrat Hlavu Seleziona Testa - 頭部を選ぶ + 頭部を選択 머리 선택 选择头部 選擇頭部 @@ -663,7 +694,7 @@ Selecionar Torso Vybrat Trup Seleziona Torso - 胴体を選ぶ + 胴体を選択 몸통 선택 选择躯干 選擇身體 @@ -679,7 +710,7 @@ Selecionar Braço Esquerdo Vybrat Levou ruku Seleziona Braccio Sinistro - 左腕を選ぶ + 左腕を選択 왼팔 선택 选择左臂 選擇左手 @@ -695,7 +726,7 @@ Selecionar Braço Direito Vybrat Pravou ruku Seleziona Braccio Destro - 右腕を選ぶ + 右腕を選択 오른팔 선택 选择右臂 選擇右手 @@ -711,7 +742,7 @@ Selecionar Perna Esquerda Vybrat Levou nohu Seleziona Gamba Sinistra - 左足を選ぶ + 左足を選択 왼다리 선택 选择左腿 選擇左腳 @@ -727,7 +758,7 @@ Selecionar Perna Direita Vybrat Pravou nohu Seleziona Gamba Destra - 右足を選ぶ + 右足を選択 오른다리 선택 选择右腿 選擇右腳 @@ -743,7 +774,7 @@ Pequeno Malý Piccolo - 小さい + 작은 @@ -759,7 +790,7 @@ Médio Střední Medio - 中くらい + 중간의 @@ -775,7 +806,7 @@ Grande Velký Grande - 大きい + @@ -791,7 +822,7 @@ Existem %2 ferimentos abertos %1 Jsou zde %2 %1 otevřené rány Ci sono %2 %1 Ferite Aperte - 開いている傷口が %2 %1 ほどある + 開いた状態の %1 が %2 個ある 여기 %2 %1 크기의 열린 상처가 있다 有 %2 处未处理的 %1 伤口 有 %2 %1 開放性傷口 @@ -806,8 +837,8 @@ Widzisz 1 otwartą ranę o %1 rozmiarze Existe 1 %1 ferimento aberto Je zde 1 %1 otevřená rána - C'è 1 %1 Ferita Aperta - 1 つの空いている %1 傷口 + C'è una %1 Ferita Aperta + 開いた状態の %1 が 1 個ある 여기 %1 크기의 열린 상처가 있다 有 1 处未处理的 %1 伤口 有 1 %1 開放性傷口 @@ -822,8 +853,8 @@ Widzisz częściowo otwartą ranę o %1 rozmiarze Existe um ferimento parcial aberto %1 Je zde částečně %1 otevřená rána - C'è 1 parziale %1 Ferita Aperta - 部分的に開いている %1 の傷口がある + C'è una parziale %1 Ferita Aperta + 開いた状態の 部分的な %1 がある 여기 부분적으로 %1 크기의 상처가 있다 有未完全处理的 %1 伤口 有部分 %1 開放性傷口 @@ -839,7 +870,7 @@ Existem %2 ferimentos %1 tratados Jsou zde %2 %1 ovázané rány Ci sono %2 %1 Ferite Bendate - ここには %2 %1 の処置された傷がある + 包帯を巻いた %1 が %2 個ある 여기에 붕대를 감은 %2 %1 크기의 상처가 있다 有 %2 处包扎过的 %1 伤口 有 %2 %1 包紮過傷口 @@ -854,8 +885,8 @@ Widzisz 1 zabandażowaną ranę o %1 rozmiarze Existe 1 ferimento %1 tratado Je zde 1 %1 ovázaná rána - C'è 1 %1 Ferita Bendata - 1 つの包帯で巻かれている %1 傷 + C'è una %1 Ferita Bendata + 包帯を巻いた %1 が 1 個ある 여기에 붕대를 감은 %1 크기의 상처가 있다 有 1 处包扎过的 %1 伤口 有 1 %1 包紮過傷口 @@ -870,8 +901,8 @@ Widzisz 1 częściowo zabandażowaną ranę o %1 rozmiarze Existe um ferimento parcial tratado %1 Je zde částěčně %1 ovázaná rána - C'è 1 parziale %1 Ferita Bendata - 患者には %1 の包帯で処置された傷がある + C'è una parziale %1 Ferita Bendata + 包帯を巻いた 部分的な %1 がある 여기 부분적으로 붕대질한 %1 크기의 상처가 있다 有未包扎完全的 %1 伤口 有部分 %1 包紮過傷口 @@ -957,6 +988,51 @@ 出血中 Kanama var + + No bleeding + Brak krwawienia + 출혈 없음 + Pas de saignement + Keine Blutung + Nessuna emorragia + 出血はしていない + + + Slow bleeding + Słabe krwawienie + 느린 출혈 + Saignement lent + Langsame Blutung + Debole emorragia + 出血は穏やか + + + Moderate bleeding + Umiarkowane krwawienie + 중간 출혈 + Saignement modéré + Mäßige Blutung + Emorraggia moderata + 出血はそこそこ速い + + + Severe bleeding + Poważne krwawienie + 심한 출혈 + Saignement grave + Schwere Blutung + Forte emorragia + 出血は激しい + + + Massive bleeding + Bardzo silne krwawienie + 과다 출혈 + Saignement massif + Massive Blutung + Gravissima emorragia + 出血は酷く多い + in Pain hat Schmerzen @@ -966,7 +1042,7 @@ W bólu Com dor v bolestech - in Dolore + Dolorante 痛みがある 고통 疼痛中 @@ -982,7 +1058,7 @@ Stracił dużo krwi Perdeu muito sangue Ztratil hodně krve - Perso molto Sangue + Ha perso molto Sangue 大量失血した 많은 피를 흘림 失血 @@ -1008,7 +1084,7 @@ Splint Applied Наложена шина - 添え木を当てている + 添え木を当てた Attelle appliquée Tala Aplicada 已使用固定板 @@ -1021,11 +1097,20 @@ Schiene angelegt 부목 적용함 + + No blood loss + Brak utraty krwi + 피를 잃지 않음 + Pas de perte de sang + Kein Blutverlust + Nessuna perdita di sangue + 失血なし + Lost some blood Hat etwas Blut verloren - いくらか失血した + いくらか失血 Небольшая кровопотеря A perdu une faible quantité de sang Perdeu um pouco de Sangue @@ -1049,7 +1134,7 @@ Sok vért vesztett Ha perso parecchio sangue Perdeu muito sangue - 大量失血した + 大量失血 피를 꽤 잃음 大量失血 大量失血中 @@ -1058,7 +1143,7 @@ Lost a large amount of blood Hat eine sehr große Menge Blut verloren - かなり酷く大量失血した + かなり酷い量の失血 Огромная кровопотеря A perdu une importante quantité de sang Perdeu uma quantidade grande de sangue @@ -1074,7 +1159,7 @@ Lost a fatal amount of blood Hat eine kritische Menge an Blut verloren - 致命的な程失血した + 致命的な量の失血 Фатальная кровопотеря A perdu une quantité critique de sang Perdeu uma quantidade fatal de sangue @@ -1128,9 +1213,9 @@ Štítek Fiche de triage Orvosi lap - Triage Card + Scheda Triage Cartão de Triagem - トリアージ カード + トリアージカード 부상자 분류 카드 分诊卡 檢傷分類卡 @@ -1156,6 +1241,7 @@ Patient Info Informacje o pacjencie Informations patient + Informazioni sul paziente Информация о пациенте 伤员信息 患者情報 @@ -1167,8 +1253,9 @@ Blood Loss Colors Цвета кровопотери - 失血量カラー + 失血量の色 Couleurs des hémorragies + Colori di emorragie Farben für Blutverlust Kolory utraty krwi 失血颜色 @@ -1178,8 +1265,9 @@ Defines the 10 color gradient used to indicate blood loss in Medical GUIs. Цвета кровопотери, которые используются в Медицинском интерфейсе. Градиент из 10 цветов. - 医療 GUI 内で失血量を 10 段階のカラーで表します。 + 医療 GUI 内で失血量を 10 段階の色で表します。 Couleurs utilisées pour afficher les hémorragies dans l'interface médicale. Dégradé de 10 couleurs. + Definisce i 10 gradienti di colori usati per indicare perdite di sangue nel menù medico Farben für Blutverlust, die in dem Medizinischen Menü verwendet werden. 10-Farben Farbverlauf. Kolory używane do wyświetlania krwawienia w interfejsie medycznym. Gradient 10 kolorów. 失血颜色,用于医学图形用户界面。10种渐变颜色。 @@ -1189,8 +1277,9 @@ Blood Loss Color %1 Цвет кровопотери %1 - 失血量カラー %1 + 失血量の色 %1 Hémorragies - couleur %1 + Emorragia - colore %1 Blutverlustfarbe %1 Krwawienie - kolor %1 失血颜色 %1 @@ -1200,8 +1289,9 @@ Damage Colors Цвета урона - 負傷カラー + 負傷の色 Couleur des dégâts + Colori di danni Farben für Schaden Kolory obrażeń 负伤颜色 @@ -1211,8 +1301,9 @@ Defines the 10 color gradient used to indicate damage in Medical GUIs. Цвета урона, которые используются в Медицинском интерфейсе. Градиент из 10 цветов. - 医療 GUI 内で負傷を 10 段階のカラーで表します。 + 医療 GUI 内で負傷を 10 段階の色で表します。 Couleurs utilisées pour afficher les dégâts dans l'interface médicale. Dégradé de 10 couleurs. + Definisce i 10 gradienti di colori usati per indicare danni nel menù medico Farben für Schaden, die in dem medizinischen Menü verwendet werden. 10-Farben Farbverlauf. Kolory używane do wyświetlania obrażeń w interfejsie medycznym. Gradient 10 kolorów. 负伤颜色,用于医学图形用户界面。10种渐变颜色。 @@ -1222,8 +1313,9 @@ Damage Color %1 Цвет урона %1 - 負傷カラー %1 + 負傷の色 %1 Dégâts - couleur %1 + Danni - colore %1 Schadensfarbe %1 Obrażenia - kolor %1 负伤颜色 %1 @@ -1233,38 +1325,108 @@ Show Blood Loss Blutverlust anzeigen + Mostra perdita di sangue 혈액 손실 표시 Pokaż utratę krwi 失血量の表示 显示失血量 Показывать кровопотерю Mostrar pérdida de sangre + Afficher les pertes de sang Show qualitative blood loss in the injury list. Qualitativen Blutverlust in der Verletzungsliste anzeigen. + Mostra quantità di sangue persa nella lista delle ferite. 부상 목록에 혈액 손실량을 표시합니다. Pokaż jakościową utratę krwi na liście ran. 負傷リストに段階的な失血量を表示します。 在负伤列表中显示失血阶段 Показывать тяжесть кровопотери в списке ранений. Mostrar la pérdida de sangre cualitativa en la lista de heridas. + Afficher la quantité de sang perdue + + + Peek Medical Info on Hit + Podgląd Informacji Medycznych po Zranieniu + 맞을 시 의료 정보 보기 + 点击查看医疗信息 + Aperçu des informations médicales lors d'une blessure + Mostra info mediche se colpito + Zeige medizinische Info beim Treffer an + 被弾時の医療情報一時表示 + + + Temporarily show medical info when injured. + Tymczasowe wyświetlanie informacji medycznych po zranieniu. + 부상을 입었을 때 일시적으로 의료 정보를 표시합니다. + 受伤时暂时显示医疗信息。 + Afficher temporairement les informations médicales lors d'une blessure. + Mostra temporaneamente le info mediche quando si viene feriti. + Bei Verletzungen vorübergehend medizinische Info anzeigen. + 被弾時に医療情報を一時的に表示します。 + + + Medical Peek Duration on Hit + Czas trwania podglądu informacji medycznych po zranieniu + 맞을 시 의료 정보 보기 지속 시간 + 击中时的医疗信息显示持续时间 + Durée de l'aperçu des informations médicales lors d'une blessure + Durata di info mediche quando colpito + Dauer der Anzeige bei einem Treffer. + 被弾時の医療情報一時表示の表示時間 + + + How long the medical info peek remains open after being injured. + Jak długo podgląd informacji medycznych pozostaje otwarty po otrzymaniu obrażeń. + 부상을 입은 후에도 의료 정보가 열린 상태로 지속되는 시간입니다. + 受伤后医疗信息会开放多长时间? + Durée de l'affichage des informations médicales lors d'une blessure. + Quanto tempo verranno visualizzate le info mediche quando si viene feriti. + Wie lange die medizinische Info nach einer Verletzung angezeigt wird. + 被弾時の医療情報の一時表示をどれだけ長く表示するか。 Show Trauma Sustained Mostrar Traumatismo Sofrido - 外傷の表示 + 外傷状態の表示 Pokaż Doznane Urazy Zeigen Sie das erlittene Trauma + Mostra trauma sofferto 외상 지속 표시 + 显示遭受的创伤 + Afficher les traumatismes subis Show trauma sustained in the injury list. Mostrar traumatismo sofrido na lista de feridas. - 負傷リストに外傷を表示する。 + 負傷リストに外傷状態を表示する。 Pokaż odniesione obrażenia na liście obrażeń. Zeigen Sie das erlittene Trauma in der Verletzungsliste an. + Mostra il trauma ricevuto nella lista delle ferite. 부상 목록에 발생한 외상을 표시합니다. + 在伤情表上显示创伤 + Afficher les traumatismes subis dans la liste des blessures. + + + Body Part Outline Color + Kolor Konturu Części Ciała + 신체부위 윤곽선 색상 + 身体部位轮廓颜色 + Couleur des contours des parties du corps + Colore del contorno di parti del corpo + Umrissfarbe des Körperteils + 身体部位の輪郭表示の色 + + + Color of outline around selected body part. + Kolor konturu wokół wybranej części ciała. + 선택한 신체부위 주위의 윤곽선 색상입니다. + 选定身体部位周围的轮廓颜色。 + Couleur des contours autour des parties du corps sélectionnées. + Colore del contorno della parte del corpo selezionata. + Farbe des Umrisses um das ausgewählten Körperteil. + 選択した身体部位の輪郭表示の色。 Minor Trauma @@ -1272,7 +1434,10 @@ 軽度の外傷 Niewielki Uraz Kleineres Trauma + Trauma piccolo 약한 외상 + 轻微创伤 + Traumatisme mineur Major Trauma @@ -1280,7 +1445,10 @@ 中度の外傷 Poważny Uraz Großes Trauma + Trauma grande 중간 외상 + 中度创伤 + Traumatisme majeur Severe Trauma @@ -1288,15 +1456,98 @@ 重度の外傷 Ciężki Uraz Schweres Trauma + Trauma severo 강한 외상 + 重度创伤 + Traumatisme grave Chronic Trauma Traumatismo Crônico - 慢性的な外傷 + 重篤な外傷 Przewlekły Uraz Chronisches Trauma + Trauma cronico 심각한 외상 + 慢性创伤 + Traumatisme chronique + + + L + L + + L + G + Sx + L + + + + R + P + + R + D + Dx + R + + + + in your inventory + w twoim ekwipunku + 개: 당신의 소지품 + 在你的库存中 + dans votre inventaire + Nel proprio inventario + im Inventar + 個あなたが保有 + + + in patient's inventory + w ekwipunku pacjenta + 개: 환자의 소지품 + 在病人库存中 + dans l'inventaire du patient + Nell'inventario del paziente + im Inventar des Patienten + 個患者が保有 + + + in vehicle's inventory + w ekwipunku pojazdu + 在车辆库存中 + dans l'inventaire du véhicule + 개: 차량의 소지품 + im Inventar des Fahrzeuges + Nell'inventario del veicolo + 個車両内に保有 + + + No effect until tourniquet removed + 止血带取下后才有效果 + Aucun effet jusqu'à ce que le garrot soit retiré + 지혈대를 제거할 때까지 효과 없음 + Keine Wirkung, bis das Tourniquet entfernt wurde + Nessun effetto fino alla rimozione del laccio emostatico + 止血帯を外すまで効果を発揮しません + + + Show Tourniquet Warning + 显示止血带警告 + Afficher l'avertissement du garrot + 지혈 경고 표시 + Tourniquet-Warnung anzeigen + Mostra avviso di laccio emostatico + 止血帯の警告を表示 + + + Show a warning tooltip when a tourniquet will interfere with a medical action. + 当止血带干扰医疗操作时,显示警告提示。 + Affiche un avertissement lorsqu'un garrot interfère avec une action médicale. + 지혈대가 의료 조치를 방해할 경우 경고 툴팁을 표시합니다. + Zeigt einen Hinweis an, wenn ein Tourniquet eine medizinische Maßnahme beeinträchtigt. + Mostra un avviso se un laccio emostatico impedisce un trattamento medico. + 止血帯が医療行為を妨げる場合には、警告ツールチップを表示します。 diff --git a/addons/medical_statemachine/Statemachine.hpp b/addons/medical_statemachine/Statemachine.hpp index 39ff12448e..d3888140c0 100644 --- a/addons/medical_statemachine/Statemachine.hpp +++ b/addons/medical_statemachine/Statemachine.hpp @@ -46,7 +46,7 @@ class ACE_Medical_StateMachine { onStateEntered = QFUNC(enteredStateUnconscious); class DeathAI { targetState = "Dead"; - condition = QUOTE(!(_this getVariable [ARR_2(QQGVAR(AIUnconsciousness), GVAR(AIUnconsciousness))]) && {!isPlayer _this}); + condition = QUOTE(!(_this getVariable [ARR_2(QQGVAR(AIUnconsciousness),GVAR(AIUnconsciousness))]) && {!isPlayer _this}); }; class WakeUp { targetState = "Injured"; diff --git a/addons/medical_statemachine/XEH_preInit.sqf b/addons/medical_statemachine/XEH_preInit.sqf index d77d8067a8..65621f775b 100644 --- a/addons/medical_statemachine/XEH_preInit.sqf +++ b/addons/medical_statemachine/XEH_preInit.sqf @@ -6,7 +6,7 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" EGVAR(medical,STATE_MACHINE) = (configFile >> "ACE_Medical_StateMachine") call CBA_statemachine_fnc_createFromConfig; diff --git a/addons/medical_statemachine/addon.toml b/addons/medical_statemachine/addon.toml index 7cfef775ee..bf39213892 100644 --- a/addons/medical_statemachine/addon.toml +++ b/addons/medical_statemachine/addon.toml @@ -1,2 +1,3 @@ -[preprocess] -enabled = false +[tools] +pboProject_noBinConfig = true +sqfvm_skipConfigChecks = true diff --git a/addons/medical_statemachine/config.cpp b/addons/medical_statemachine/config.cpp index 2b396c8b8c..c368eb25a7 100644 --- a/addons/medical_statemachine/config.cpp +++ b/addons/medical_statemachine/config.cpp @@ -1,5 +1,6 @@ #include "script_component.hpp" +#pragma hemtt flag pe23_ignore_has_include #if __has_include("\z\ace\addons\nomedical\script_component.hpp") #define PATCH_SKIP "No Medical" #endif diff --git a/addons/medical_statemachine/initSettings.sqf b/addons/medical_statemachine/initSettings.inc.sqf similarity index 100% rename from addons/medical_statemachine/initSettings.sqf rename to addons/medical_statemachine/initSettings.inc.sqf diff --git a/addons/medical_statemachine/stringtable.xml b/addons/medical_statemachine/stringtable.xml index aa30396617..1b29b1c553 100644 --- a/addons/medical_statemachine/stringtable.xml +++ b/addons/medical_statemachine/stringtable.xml @@ -26,7 +26,7 @@ Décès si blessure mortelle (joueurs) Smrtelná zranění hráčů Śmiertelne Obrażenia Gracza - Lesioni mortali del giocatore + Ferite letali su giocatori Oyuncu Ölümcül Yaralanmaları Tödliche Spielerverletzungen Смертельные травмы игрока @@ -42,7 +42,7 @@ Détermine si les joueurs décèdent en cas de blessure mortelle. Une blessure mortelle est définie par des dommages importants à la tête ou au cœur. Oyuncuların ölümcül yaralanmaları ne zaman alabileceğini kontrol eder. Ölümcül bir yaralanma, kafaya veya vücuda önemli hasar verir. Nastavuje zda hráči mohou utrpět smrtelné zranění. Smrtelné zranění je utrpěto významným poškozením hlavy nebo trupu. - Controlla quando i giocatori possono ricevere infortuni mortali. Una lesione mortale è causata da un danno significativo alla testa o al busto. + Controlla quando i giocatori possono ricevere infortuni mortali. Una ferita letale è causata da un danno significativo alla testa o al torso. Definiuje, kiedy gracze mogą otrzymać śmiertelne obrażenia. Śmiertelne obrażenia są spowodowane znacznym uszkodzeniem głowy lub torsu. Legt fest, wann Spieler tödliche Verletzungen erleiden können. Eine tödliche Verletzung wird bei erheblichem Schaden an Kopf oder Torso verursacht. Определяет, могут ли игроки получить смертельные травмы. Смертельная травма вызывается значительным повреждением головы или туловища. @@ -58,7 +58,7 @@ Décès si blessure mortelle (IA) Smrtelná zranění AI Śmiertelne obrażenia AI. - AI Lesioni mortali + Ferite letali su IA AI Ölümcül Yaralanmaları Tödliche KI-Verletzungen Смертельные травмы ИИ @@ -68,13 +68,13 @@ Controls when AI can receive fatal injuries. A fatal injury is caused by significant damage to the head or troso.\nWhen set to "Always", this effectively produces "AI Instant Death" behaviour as AI will immediately die from any fatal injury.\nNOTE: Any mode other than "Always" requires AI Unconsciousness to be enabled. Controla quando a IA pode receber lesões fatais. Uma lesão fatal é causada por um dano significante na cabeça ou tronco.\nQuando definido para "Sempre", isso efetivamente causa a "Morte Instantânea da IA", pois a IA irá imediatamente morrer para qualquer lesão fatal.\nNOTA: Qualquer opção além de "Sempre" requer que Inconsciência de IA esteja ativada. - AIが致命傷を受けた時の挙動を管理できます。頭部や胸部に受ける大きなダメージは致命傷になります。\n"常に"に設定されていると、いかなる致命傷でも "AIの即死" 効果が生まれます。\n注: "常に"以外のモードではAIの無意識化を有効化させる必要があります。 + AIが致命傷を受けた時の挙動を管理できます。頭部や胸部に受ける大きなダメージは致命傷になります。\n"常に"に設定されていると、いかなる致命傷でも"AIの即死"効果が生まれます。\n注: "常に"以外のモードでは"AIの気絶"を有効化させる必要があります。 控制當AI受致命傷時是否能救起。致命傷是指對頭部或身體造成可觀傷害所造成的。\n當設置為"總是"時,這會使其與"AI 瞬間死亡"同一個效果,在AI受到致命傷時瞬間死亡。\n備註:選了"總是"以外的選項的話必須開啟「AI無意識」的選項。 控制当 AI 受致命伤时是否能救起。致命伤是指对头部或躯干遭受重大伤害。\n当设置为"总是"时,这将有效地产生"AI 即时死亡"行为,因为 AI 将立即死于任何致命伤。\n注意:"总是"以外的任何模式都需要启用 AI 无意识。 Détermine si les unités IA décèdent en cas de blessure mortelle. Une blessure mortelle est définie par des dommages importants à la tête ou au cœur.\nSi réglé sur "Toujours", cela produit effectivement un comportement de "Mort instantanée" car les unités IA mourront immédiatement de toute blessure mortelle.\nNOTE : Tout mode autre que "Toujours" nécessite l'activation de l'option "Inconscience IA". AI'nın ölümcül yaralanmaları ne zaman alabileceğini kontrol eder. Ölümcül bir yaralanma, kafa veya vücudun önemli hasar görmesinden kaynaklanır. \"Her zaman" olarak ayarlandığında, AI herhangi bir ölümcül yaralanmadan hemen öleceği için bu etkili bir şekilde "AI Anında Ölüm" davranışı üretir.\ NOT: "Her zaman" "Yapay Zeka Bilinci'nin etkinleştirilmesini gerektirir. Nastavuje zda AI může utrpět smrtelné zranění. Smrtelné zranění je utrpěto významným poškozením hlavy nebo trupu.\nPokud je tato možnost nastavena na "Vždy", efektivně nastává stav "Povolit okamžitou smrt AI", protože AI okamžitě zemře při jakémkoliv smrtelném zranění.\nPOZNÁMKA: Jakýkoliv jiný stav než "Vždy" potřebuje zapnutou možnost "Bezvědomí AI". - Controlla quando l'IA può ricevere ferite mortali. Una lesione mortale è causata da un danno significativo alla testa o al torso.\nSe impostato su "Sempre", questo produce efficacemente il comportamento "Morte istantanea AI", poiché l'IA morirà immediatamente a causa di qualsiasi lesione mortale.\nNOTA: Qualsiasi modalità diversa da "Sempre" richiede l'attivazione dell'Incoscienza AI. + Controlla quando l'IA può ricevere infortuni mortali. Una ferita letale è causata da un danno significativo alla testa o al torso.\nSe impostato su "Sempre", questo produce efficacemente il comportamento "Morte istantanea AI", poiché l'IA morirà immediatamente a causa di qualsiasi lesione mortale.\nNOTA: Qualsiasi modalità diversa da "Sempre" richiede l'attivazione dell'Incoscienza IA. Definiuje, kiedy AI może otrzymać śmiertelne obrażenia. Śmiertelne obrażenia są spowodowane znacznym uszkodzeniem głowy lub torsu.\n Ustawienie "Zawsze" powoduje "Natychmiastową śmierć AI", ponieważ AI natychmiast umiera z powodu śmiertelnych obrażeń.\n UWAGA: Każdy inny tryb niż "Zawsze" wymaga włączenia nieprzytomności AI. Legt fest, wann KI-Einheiten tödliche Verletzungen erleiden können. Eine tödliche Verletzung wird bei erheblichem Schaden an Kopf oder Körper verursacht.\nWenn "Immer" eingestellt ist, erzeugt diese Einstellung das "KI Sofort-Tod" Verhalten. KI-Einheiten sterben sofort durch jede tödliche Verletzung.\nBEACHTE: Eine andere Einstellung als "Immer" bedingt, dass "KI-Bewusstlosigkeit" verwendet wird. Определяет могут ли игроки получить смертельные травмы. Смертельная травма вызывается значительным повреждением головы или туловища.\nКогда установлено «Всегда», это вызывает поведение «Мгновенной смерти ИИ», так как ИИ немедленно умрет от любой смертельной травмы.\nПРИМЕЧАНИЕ: Любой режим, кроме «Всегда», требует включения функции «Потеря сознания». @@ -101,13 +101,13 @@ Controls whether AI can go unconscious instead of immediately dying.\nThis setting works together with the "AI Fatal Injuries" setting since, going into cardiac arrest requires that the unit is able to go unconscious.\nHowever, these settings are separated because units can go unconscious from critical vitals resulting from non-fatal injuries.\nIn essence, this means that in order to enable cardiac arrest for AI units, this setting must be enabled. Controla se a IA pode ficar inconsciente ao invés de morrer imediatamente.\nEssa configuração funciona com "Lesões Fatais de IA", pois para uma unidade ter uma parada cardíaca é necessário que a IA possa fica inconsciente.\nContudo, essas configurações são separadas pois unidades podem ficar inconscientes por vitais críticos causados por ferimentos não-fatais.\nEssencialmente, isso significa que para ativar uma parada cardíaca em IA, essa configuração precisa estar ativa. - AIが即死する代わりに気絶するかどうかを決定できます。\nこれは "AIの致命傷" 設定と連動します。これはAIの心停止を起こすにはユニットが気絶する必要がある為です。\nしかしながら、これらの設定はユニットが非致死性の負傷により重体となって気絶できるよう分離されています。\n本質的にはこの設定はAIユニットの心停止を可能にするものであり、有効化されておくべきです。 + AIが即死する代わりに気絶するかどうかを決定できます。\nこれは "AIの致命傷" 設定と連動します。これは心停止を起こすにはユニットが気絶する必要がある為です。\nしかしながら、これらの設定はユニットが非致死性の負傷により重体となって気絶できるよう分離されています。\n本質的にはこの設定はAIユニットの心停止を可能にするものであり、有効化されておくべきです。 控制AI是否能進入無意識狀態而非立刻原地死亡。\n這個選項會與「AI致命傷」的選項聯動,使單位心搏停止的話必須先讓其無意識。\n然而,兩個設定分開之原因是使單位能因從非致命傷的攻擊情況下進入生命危險的狀態。\n簡單來說,你想要讓AI單位有心搏停止可能的話,該選項必須啟用。 控制 AI 是否可以进入昏迷状态而不是立即死亡。\n这个设置与"AI 致命伤"设置一起工作,因为进入心脏骤停需要单位能够昏迷。\n然而,这些设置是分开的,因为单位可能会因非致命伤害导致的关键生命体征而昏迷过去。\n从本质上讲,这意味着为了使 AI 单位的心脏骤停,必须启用此设置。 Définit si les unités IA peuvent perdre connaissance au lieu de mourir immédiatement.\nCe paramètre fonctionne conjointement avec l'option "Décès si blessure mortelle (IA)" car, pour qu'une unité IA subisse un arrêt cardiaque, elle doit également pouvoir perdre connaissance.\nCependant, ces paramètres sont séparés car les unités peuvent s'évanouir suite à des signes vitaux critiques résultant de blessures non mortelles.\nEn résumé, cela signifie que ce paramètre doit absolument être activé pour qu'une unité IA puisse entrer en état d'arrêt cardiaque. Nastavuje zda AI může upadnout do bezvědomí namísto okamžité smrti.\nToto nastavení funguje společně s "Smrtelná zranění AI" protože srdeční zástava potřebuje možnost upadnout do bezvědomí.\nTyto možnosti jsou separované, protože jednotky mohou upadnout do bezvědomí kvůli kritickému stavu způsobenému ne smrtelnými zraněními.\nV podstatě to znamená, že pokud chcete zapnout srdeční zástavu pro AI, tato možnost musí být zapnutá. Definiuje, czy AI może stracić przytomność zamiast natychmiast zginąć.\n Ta opcja działa razem z ustawieniem "Śmiertelne urazy AI", ponieważ przejście do zatrzymania akcji serca wymaga, aby jednostka mogła stracić przytomność.\n Jednak te ustawienia są rozdzielone, ponieważ jednostki mogą stracić przytomność z powodu krytycznych czynności życiowych powstałych w wyniku urazów innych niż śmiertelne.\n W istocie oznacza to, że aby umożliwić zatrzymanie akcji serca dla jednostek AI, to ustawienie musi być włączone. - Controlla se l'IA può perdere i sensi invece di morire immediatamente. Questa impostazione funziona insieme all'impostazione "AI Fatal Injuries" poiché, per andare in arresto cardiaco, è necessario che l'unità sia in grado di perdere i sensi. Tuttavia, queste impostazioni sono separate perché le unità possono perdere i sensi da segni vitali critici derivanti da lesioni non mortali. + Controlla se l'IA può perdere i sensi invece di morire immediatamente. Questa impostazione funziona insieme all'impostazione "Ferite letali IA" poiché, per andare in arresto cardiaco, è necessario che l'unità sia in grado di perdere i sensi. Tuttavia, queste impostazioni sono separate perché le unità possono perdere i sensi da segni vitali critici derivanti da ferite non letali. Kontrolliert, ob KI bewusstlos werden kann anstatt sofort zu sterben.\nDiese Einstellung funktioniert zusammen mit der Einstellung "Tödliche KI-Verletzungen". Denn wenn eine Einheit einen Herzstillstand erleiden soll, muss diese auch in der Lage sein, bewusstlos zu werden.\nDennoch sind diese beiden Einstellungen voneinander getrennt, da Einheiten auch durch kritische Vitalwerte bewusstlos werden können, die durch nicht tödliche Verletzungen aufgetreten sind.\nZusammengefasst bedeutet das, dass wenn KI-Einheiten einen Herzstillstand erleiden sollen, diese Einstellung aktiviert sein muss. Управляет тем, может ли ИИ потерять сознание, вместо того, чтобы немедленно умереть.\nЭтот параметр работает вместе с параметром «Смертельные раны ИИ», поскольку при остановке сердца требуется, чтобы юнит мог потерять сознание.\nОднако эти настройки разделены, потому что юниты могут потерять сознание из-за критических ранений жизненно важных органов, полученных в результате несмертельных травм.\nВ сущности, это означает, что для включения остановки сердца для ИИ этот параметр должен быть включен. Yapay zekanın hemen ölmek yerine bilinçsiz duruma geçip geçemeyeceğini kontrol eder. \ Bu ayar, "Yapay Zeka Ölümcül Yaralanmalar" ayarı ile birlikte çalışır, çünkü kalp durması, ünitenin bilinçsiz duruma geçebilmesini gerektirir. \ Özünde, bunun anlamı şudur: AI birimleri için kalp durmasını etkinleştirirseniz, bu ayar etkinleştirilmelidir. @@ -138,7 +138,7 @@ Controla o tempo necessário para morrer para uma parada cardíaca. 控制心搏停止後多久死亡 控制心脏骤停后多久单位死亡 - Controlla quanto tempo ci vuole per morire di arresto cardiaco. + Determina quanto tempo ci vuole per morire di arresto cardiaco. Nastavuje po jak dlouhé době pacient zemře kvůli srdeční zástavě. Definiuje czas potrzebny na śmierć z powodu zatrzymania akcji serca. Bestimmt die Dauer bis zum Tod durch Herzstillstand. @@ -166,8 +166,9 @@ Bleedout During Cardiac Arrest Кровотечение во время остановки сердца Ausbluten im Herzstillstand + Dissanguamento in arresto cardiaco Saignement durant l'arrêt cardiaque - 心停止中の失血 + 心停止中の失血死 Desangrado durante parada cardíaca Wykrwawienie podczas zatrzymanej akcji serca 心脏骤停期间失血情况 @@ -177,8 +178,9 @@ Controls whether a person can die in cardiac arrest by blood loss before the cardiac arrest time runs out. Определяет, можно ли умереть от потери крови во время остановки сердца, даже если время жизни при остановке сердца еще не истекло. Legt fest, ob man während des Herzstillstands durch Blutverlust sterben kann, auch wenn die Überlebenszeit im Herzstillstand noch nicht ausgelaufen ist. + Determina se è possibile morire per eccessiva perdita di sangue anche se non è ancora scaduto il 'tempo d'arresto cardiaco'. Définit si un joueur en arrêt cardiaque peut mourir par exsanguination, avant que la durée de l'arrêt cardiaque définie ci-dessus ne soit écoulée. - 心停止時間を超え死亡する前に、失血による心停止で死亡するかどうかを決定します。 + 心停止中の失血によって心停止時間よりも早く死亡するかどうかを制御します。 COntrola si una persona puede morir en parada cardíaca por causa de pérdida de sangre antes de que se termine el contador de parada cardíaca Kontroluje czy śmierć osoby może nastąpić poprzez wykrwawienie zanim wyczerpię się Czas Zatrzymania Akcji Serca. 控制单位是否会在心脏骤停时间耗完之前因失血过多而死亡。 diff --git a/addons/medical_status/CfgEventHandlers.hpp b/addons/medical_status/CfgEventHandlers.hpp index 48c1c11877..4c75d4795a 100644 --- a/addons/medical_status/CfgEventHandlers.hpp +++ b/addons/medical_status/CfgEventHandlers.hpp @@ -19,7 +19,7 @@ class Extended_PostInit_EventHandlers { class Extended_Init_EventHandlers { class CAManBase { class ADDON { - init = QUOTE([ARR_2((_this select 0), false)] call FUNC(initUnit)); + init = QUOTE([ARR_2((_this select 0),false)] call FUNC(initUnit)); exclude[] = {IGNORE_BASE_UAVPILOTS}; }; }; diff --git a/addons/medical_status/XEH_preInit.sqf b/addons/medical_status/XEH_preInit.sqf index c6343dcb63..e3c82d5788 100644 --- a/addons/medical_status/XEH_preInit.sqf +++ b/addons/medical_status/XEH_preInit.sqf @@ -6,7 +6,7 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" // Add vanilla killed EH to unit to set correct killer ["CAManBase", "init", { diff --git a/addons/medical_status/addon.toml b/addons/medical_status/addon.toml index 7cfef775ee..bf39213892 100644 --- a/addons/medical_status/addon.toml +++ b/addons/medical_status/addon.toml @@ -1,2 +1,3 @@ -[preprocess] -enabled = false +[tools] +pboProject_noBinConfig = true +sqfvm_skipConfigChecks = true diff --git a/addons/medical_status/config.cpp b/addons/medical_status/config.cpp index dc68c63bcc..954c35e64d 100644 --- a/addons/medical_status/config.cpp +++ b/addons/medical_status/config.cpp @@ -1,5 +1,6 @@ #include "script_component.hpp" +#pragma hemtt flag pe23_ignore_has_include #if __has_include("\z\ace\addons\nomedical\script_component.hpp") #define PATCH_SKIP "No Medical" #endif diff --git a/addons/medical_status/functions/fnc_setUnconsciousState.sqf b/addons/medical_status/functions/fnc_setUnconsciousState.sqf index 3071ae0d14..e3d34f3b5a 100644 --- a/addons/medical_status/functions/fnc_setUnconsciousState.sqf +++ b/addons/medical_status/functions/fnc_setUnconsciousState.sqf @@ -50,26 +50,16 @@ if (_active) then { _unit call EFUNC(common,throwWeapon); }; }; + // Unlock controls for copilot if unit is pilot of aircraft if (vehicle _unit isKindOf "Air" && {_unit == driver vehicle _unit}) then { TRACE_1("pilot of air vehicle - unlocking controls",vehicle _unit); // Do "Unlock controls" user action, co-pilot will then have to do the "Take Controls" actions _unit action ["UnlockVehicleControl", vehicle _unit]; }; - - // Disable AI aiming - if (!isPlayer _unit && {_unit checkAIFeature "WEAPONAIM"}) then { - _unit disableAI "WEAPONAIM"; - _unit setVariable [QGVAR(reenableWeaponAim), true, true]; - }; } else { // Unit has woken up, no longer need to track this _unit setVariable [QEGVAR(medical,lastWakeUpCheck), nil]; - - // Reenable AI aiming - if (_unit getVariable [QGVAR(reenableWeaponAim), false]) then { - _unit enableAI "WEAPONAIM"; - }; }; // This event doesn't correspond to unconscious in statemachine diff --git a/addons/medical_status/initSettings.sqf b/addons/medical_status/initSettings.inc.sqf similarity index 100% rename from addons/medical_status/initSettings.sqf rename to addons/medical_status/initSettings.inc.sqf diff --git a/addons/medical_status/stringtable.xml b/addons/medical_status/stringtable.xml index a388fb53fa..f3f3d605d5 100644 --- a/addons/medical_status/stringtable.xml +++ b/addons/medical_status/stringtable.xml @@ -75,7 +75,7 @@ Coeficiente para modificar la intensidad del dolor Multiplikator um die Schmerzintensität zu verändern Koeficient intenzity bolesti - Coeficiente para modificar a instensidade de dor + Coeficiente para modificar a intensidade de dor Coefficient permettant de définir l'intensité de la douleur. Egy szorzó a fájdalom erősségének szabályozására Coefficiente che modifica l'intensità del dolore @@ -88,13 +88,13 @@ IV Transfusion Flow Rate Transfusions Fließrate - IV 輸血の流量 + IV 輸液の流量 Скорость внутривенного переливания Débit de transfusion IV Velocidade de Transferência de Sangue 點滴輸血流量 点滴输血流量 - IV Portata della trasfusione + Velocità di trasfusione EV Rychlost IV transfuze Natężenie Przepływu Transfuzji IV IV Flujo de transfusión @@ -104,30 +104,36 @@ Controls how quickly fluid flows out of IV Bags. The IV Bag volume change is calculated as:\ntime interval (s) * iv change per second (4.1667 mL/s) * flow rate (this coefficient). Wie schnell der Effekt der Transfusion eintritt - IV による輸血速度を変更できます + IV 輸液パックから輸液が流出する速度を制御します。 IV 輸液バッグの容量変化は次のように計算されます:\n時間間隔(秒) x 点滴速度毎秒(4.1667 mL/秒) x 流量(この係数) Определяет, насколько быстро подействуют эффекты внутривенного переливания Définit la vitesse à laquelle le liquide s'écoule des poches de perfusion.\nLa variation du volume de poche IV est calculée selon la formule suivante :\n intervalle de temps (s) * variation IV par seconde (4,1667 ml/s) * débit (ce coefficient). - Controla o quão rápido flúidos são extraídos de bolsas de IV. A mudança no volume da bolsa d IV é calculado assim:\nIntervalo de tempo (s) * mudança de iv por segundo (4.1667 mL/s) * Velocidade de transferência (esse valor) + Controla o quão rápido fluidos são extraídos de bolsas de IV. A mudança no volume da bolsa d IV é calculado assim:\nIntervalo de tempo (s) * mudança de iv por segundo (4.1667 mL/s) * Velocidade de transferência (esse valor) 控制從點滴輸入人體的液體流量多快。點滴的體積更改是以\n時間間隔(單位秒)乘上點滴每秒速度(4.1667毫升/秒)乘上流量(該係數)。 控制从点滴输入人体的液体流量多快。静脉输液袋容积变化的计算方法是:\n时间间隔(秒)x点滴每秒速度(4.1667毫升/秒)x流量(该系数)。 - Controlla la velocità con cui il fluido esce dalle sacche per flebo. La variazione di volume delle sacche IV è calcolata come:\intervallo di tempo (s) * variazione iv al secondo (4,1667 mL/s) * portata (questo coefficiente). + Determina la velocità con cui il fluido esce dalle sacche per flebo. La variazione di volume delle sacche EV è calcolata come:\intervallo di tempo (s) * variazione EV al secondo (4,1667 mL/s) * velocità (questo coefficiente). Nastavuje jak rychle tekutiny vytékají z IV sáčku. Zbývající objem IV sáčku je vypočítáván následovně:\nčasový interval (s) * změna iv za sekundu (4,1667 mL/s) * rychlost toku (tento koeficient). Kontroluje, jak szybko płyn wypływa z worków IV. Zmiana objętości worka IV jest obliczana jako:\n przedział czasowy * zmiana iv na sekundę (4,1667 mL/s) * natężenie przepływu (ten współczynnik). Controla la rapidez con que fluye el líquido de las bolsas intravenosas. El cambio de volumen de la bolsa IV se calcula como: \n intervalo (s) de tiempo * cambio iv por segundo (4.1667 mL/s) * velocidad de flujo (este coeficiente). IV Torbalardan sıvının ne kadar hızlı aktığını kontrol eder. IV Torba hacim değişikliği şu şekilde hesaplanır: zaman aralıkları iv saniye başına değişim (4.1667 mL / s) akış hızı (bu katsayı). - 수액용기에서 얼마나 빨리 들어가는 지를 정합니다. 초당 4.16ml * 계수를 적용받습니다. + 수액용기에서 액체가 얼마나 빠르게 흘러들어가는지를 제어합니다. 수액용기 부피 변화는 다음과 같이 계산됩니다:\n시간 간격 (초) x 초 당 수액 변화량(4.1667mL/s) x 흘러들어가는 양 (해당 계수). Weapon Drop Chance Szansa Upuszczenia Broni Wahrscheinlichkeit, die Waffe fallen zu lassen + Probabilità di far cadere l'arma 무기 떨어뜨릴 확률 + Risque de perte d'arme + 武器を落とす確率 Chance for a player to drop their weapon when going unconscious.\nHas no effect on AI. Szansa na upuszczenie broni przez gracza, przy utracie przytomności. \nNie ma wpływu na AI. Chance für einen Spieler, seine Waffe fallen zu lassen, wenn er bewusstlos wird.\nHat keine Auswirkung auf die KI. + Probabilità che un giocatore faccia cadere l'arma attualmente selezionata quando sviene.\nNon ha effetto sulle IA. 플레이어가 기절할 때 무기를 떨어뜨릴 확률입니다.\nAI는 영향을 받지 않습니다. + Pourcentage de chances pour un joueur de lâcher son arme lorsqu'il perd connaissance.\nAucun effet sur les IA. + プレーヤーが意識を失ったときに武器を落とす可能性。\nAI には影響しません。 diff --git a/addons/medical_treatment/ACE_Medical_Treatment.hpp b/addons/medical_treatment/ACE_Medical_Treatment.hpp index 57625623d0..eeeacf700f 100644 --- a/addons/medical_treatment/ACE_Medical_Treatment.hpp +++ b/addons/medical_treatment/ACE_Medical_Treatment.hpp @@ -424,7 +424,7 @@ class ADDON { }; }; - class QuikClot: fieldDressing { + class QuikClot: FieldDressing { class Abrasion { effectiveness = 2; reopeningChance = 0.3; diff --git a/addons/medical_treatment/ACE_Medical_Treatment_Actions.hpp b/addons/medical_treatment/ACE_Medical_Treatment_Actions.hpp index b7fd0ac3bd..99a477c3f5 100644 --- a/addons/medical_treatment/ACE_Medical_Treatment_Actions.hpp +++ b/addons/medical_treatment/ACE_Medical_Treatment_Actions.hpp @@ -239,7 +239,7 @@ class GVAR(actions) { // - Misc ----------------------------------------------------------------- class BodyBag: BasicBandage { - displayName = CSTRING(PlaceInBodyBag); + displayName = CSTRING(PlaceInBodyBagBlack); displayNameProgress = CSTRING(PlacingInBodyBag); icon = QPATHTOEF(medical_gui,ui\bodybag.paa); category = "advanced"; @@ -253,6 +253,14 @@ class GVAR(actions) { consumeItem = 1; litter[] = {}; }; + class BodyBagBlue: BodyBag { + displayName = CSTRING(PlaceInBodyBagBlue); + items[] = {"ACE_bodyBag_blue"}; + }; + class BodyBagWhite: BodyBag { + displayName = CSTRING(PlaceInBodyBagWhite); + items[] = {"ACE_bodyBag_white"}; + }; class Grave: BodyBag { displayName = CSTRING(DigGrave); displayNameProgress = CSTRING(DiggingGrave); diff --git a/addons/medical_treatment/CfgVehicles.hpp b/addons/medical_treatment/CfgVehicles.hpp index ea9e47cb91..c9144704b5 100644 --- a/addons/medical_treatment/CfgVehicles.hpp +++ b/addons/medical_treatment/CfgVehicles.hpp @@ -7,20 +7,20 @@ class CfgVehicles { class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; }; + displayName = "$STR_a3_cfgvehicles_land_bodybag_01_black_f0"; scope = 1; - scopeCurator = 2; + scopeCurator = 1; side = -1; - model = QPATHTOEF(apl,ace_bodybag.p3d); icon = ""; - displayName = CSTRING(Bodybag_Display); EGVAR(dragging,canDrag) = 1; EGVAR(dragging,dragPosition)[] = {0,1.2,0}; EGVAR(dragging,dragDirection) = 0; EGVAR(cargo,size) = 1; EGVAR(cargo,canLoad) = 1; EGVAR(cargo,noRename) = 1; + model = "\A3\Props_F_Orange\Humanitarian\Camps\Bodybag_01_F.p3d"; hiddenSelections[] = {"camo"}; - hiddenSelectionsTextures[] = {QPATHTOEF(apl,data\bodybag_co.paa)}; + hiddenSelectionsTextures[] = {"\A3\Props_F_Orange\Humanitarian\Camps\Data\Bodybag_01_black_CO.paa"}; class ACE_Actions { class ACE_MainActions { displayName = ECSTRING(interaction,MainAction); @@ -31,13 +31,27 @@ class CfgVehicles { selection = ""; class GVAR(buryBodyBag) { displayName = CSTRING(DigGrave); - condition = QUOTE([ARR_2(_this#1, _this#0)] call FUNC(canDigGrave)); + condition = QUOTE([ARR_2(_this#1,_this#0)] call FUNC(canDigGrave)); statement = QUOTE(_this call FUNC(placeBodyBagInGrave)); icon = QPATHTOEF(medical_gui,ui\grave.paa); }; }; }; }; + class ACE_bodyBagObject_blue: ACE_bodyBagObject { + displayName = "$STR_a3_cfgvehicles_land_bodybag_01_blue_f0"; + hiddenSelectionsTextures[] = {"\A3\Props_F_Orange\Humanitarian\Camps\Data\Bodybag_01_blue_CO.paa"}; + }; + class ACE_bodyBagObject_white: ACE_bodyBagObject { + displayName = "$STR_a3_cfgvehicles_land_bodybag_01_white_f0"; + hiddenSelectionsTextures[] = {"\A3\Props_F_Orange\Humanitarian\Camps\Data\Bodybag_01_white_CO.paa"}; + }; + class ACE_bodyBagObject_old: ACE_bodyBagObject { + displayName = CSTRING(Bodybag_Display); + model = QPATHTOEF(apl,ace_bodybag.p3d); + hiddenSelections[] = {"camo"}; + hiddenSelectionsTextures[] = {QPATHTOEF(apl,data\bodybag_co.paa)}; + }; // Grave vehicle class Land_Grave_dirt_F; @@ -354,6 +368,7 @@ class CfgVehicles { MACRO_ADDITEM(ACE_personalAidKit,3); MACRO_ADDITEM(ACE_surgicalKit,2); MACRO_ADDITEM(ACE_bodyBag,5); + MACRO_ADDITEM(ACE_suture,60); }; }; diff --git a/addons/medical_treatment/CfgWeapons.hpp b/addons/medical_treatment/CfgWeapons.hpp index e285697cc1..7b31e10bee 100644 --- a/addons/medical_treatment/CfgWeapons.hpp +++ b/addons/medical_treatment/CfgWeapons.hpp @@ -31,7 +31,7 @@ class CfgWeapons { descriptionUse = CSTRING(Bandage_Basic_Desc_Use); ACE_isMedicalItem = 1; class ItemInfo: CBA_MiscItem_ItemInfo { - mass = 1; + mass = 0.6; }; }; class ACE_packingBandage: ACE_ItemCore { @@ -44,7 +44,7 @@ class CfgWeapons { descriptionUse = CSTRING(Packing_Bandage_Desc_Use); ACE_isMedicalItem = 1; class ItemInfo: CBA_MiscItem_ItemInfo { - mass = 1; + mass = 0.6; }; }; class ACE_elasticBandage: ACE_ItemCore { @@ -57,7 +57,7 @@ class CfgWeapons { descriptionUse = CSTRING(Bandage_Elastic_Desc_Use); ACE_isMedicalItem = 1; class ItemInfo: CBA_MiscItem_ItemInfo { - mass = 1; + mass = 0.6; }; }; class ACE_tourniquet: ACE_ItemCore { @@ -241,7 +241,7 @@ class CfgWeapons { descriptionUse = CSTRING(QuikClot_Desc_Use); ACE_isMedicalItem = 1; class ItemInfo: CBA_MiscItem_ItemInfo { - mass = 1; + mass = 0.6; }; }; class ACE_personalAidKit: ACE_ItemCore { @@ -279,20 +279,35 @@ class CfgWeapons { descriptionUse = CSTRING(Suture_Desc_Use); ACE_isMedicalItem = 1; class ItemInfo: CBA_MiscItem_ItemInfo { - mass = 1; + mass = 0.1; }; }; class ACE_bodyBag: ACE_ItemCore { scope = 2; author = ECSTRING(common,ACETeam); - displayName= CSTRING(Bodybag_Display); + displayName = "$STR_a3_cfgvehicles_land_bodybag_01_black_f0"; model = QPATHTOF(data\bodybagItem.p3d); picture = QPATHTOF(ui\bodybag_ca.paa); descriptionShort = CSTRING(Bodybag_Desc_Short); descriptionUse = CSTRING(Bodybag_Desc_Use); ACE_isMedicalItem = 1; + GVAR(bodyBagObject) = "ACE_bodyBagObject"; class ItemInfo: CBA_MiscItem_ItemInfo { mass = 7; }; }; + class ACE_bodyBag_blue: ACE_bodyBag { + displayName = "$STR_a3_cfgvehicles_land_bodybag_01_blue_f0"; + picture = QPATHTOF(ui\bodybag_blue_ca.paa); + hiddenSelections[] = {"camo"}; + hiddenSelectionsTextures[] = {QPATHTOF(data\bodybagItem_blue_co.paa)}; + GVAR(bodyBagObject) = "ACE_bodyBagObject_blue"; + }; + class ACE_bodyBag_white: ACE_bodyBag { + displayName = "$STR_a3_cfgvehicles_land_bodybag_01_white_f0"; + picture = QPATHTOF(ui\bodybag_white_ca.paa); + hiddenSelections[] = {"camo"}; + hiddenSelectionsTextures[] = {QPATHTOF(data\bodybagItem_white_co.paa)}; + GVAR(bodyBagObject) = "ACE_bodyBagObject_white"; + }; }; diff --git a/addons/medical_treatment/XEH_PREP.hpp b/addons/medical_treatment/XEH_PREP.hpp index 9222b0bd8b..709c97952f 100644 --- a/addons/medical_treatment/XEH_PREP.hpp +++ b/addons/medical_treatment/XEH_PREP.hpp @@ -13,6 +13,7 @@ PREP(canStitch); PREP(canTreat); PREP(canTreatCached); PREP(canTreat_holsterCheck); +PREP(canUnloadUnit); PREP(checkBloodPressure); PREP(checkBloodPressureLocal); PREP(checkPulse); diff --git a/addons/medical_treatment/XEH_preInit.sqf b/addons/medical_treatment/XEH_preInit.sqf index 79ec737aa6..bc01e267c1 100644 --- a/addons/medical_treatment/XEH_preInit.sqf +++ b/addons/medical_treatment/XEH_preInit.sqf @@ -6,7 +6,7 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" #define ARSENAL_CATEGORY_ICON (["\A3\ui_f\data\igui\cfg\actions\heal_ca.paa", QPATHTOEF(medical_gui,data\categories\bandage_fracture.paa)] select (["ace_medical_gui"] call EFUNC(common,isModLoaded))) @@ -48,7 +48,7 @@ GVAR(facilityClasses) = []; // Custom Arsenal tab if (["ace_arsenal"] call EFUNC(common,isModLoaded)) then { - [MEDICAL_TREATMENT_ITEMS, LELSTRING(medical,Category), ARSENAL_CATEGORY_ICON, -1, true] call EFUNC(arsenal,addRightPanelButton); + [MEDICAL_TREATMENT_ITEMS, LLSTRING(medicalTab), ARSENAL_CATEGORY_ICON, -1, true] call EFUNC(arsenal,addRightPanelButton); }; ADDON = true; diff --git a/addons/medical_treatment/XEH_preStart.sqf b/addons/medical_treatment/XEH_preStart.sqf index 27f8f2d9c2..420bffaf71 100644 --- a/addons/medical_treatment/XEH_preStart.sqf +++ b/addons/medical_treatment/XEH_preStart.sqf @@ -2,4 +2,4 @@ #include "XEH_PREP.hpp" -call FUNC(scanMedicalItems) +call FUNC(scanMedicalItems); diff --git a/addons/medical_treatment/addon.toml b/addons/medical_treatment/addon.toml index 7cfef775ee..bf39213892 100644 --- a/addons/medical_treatment/addon.toml +++ b/addons/medical_treatment/addon.toml @@ -1,2 +1,3 @@ -[preprocess] -enabled = false +[tools] +pboProject_noBinConfig = true +sqfvm_skipConfigChecks = true diff --git a/addons/medical_treatment/config.cpp b/addons/medical_treatment/config.cpp index 9c77b37f13..d0ecbddaef 100644 --- a/addons/medical_treatment/config.cpp +++ b/addons/medical_treatment/config.cpp @@ -1,5 +1,6 @@ #include "script_component.hpp" +#pragma hemtt flag pe23_ignore_has_include #if __has_include("\z\ace\addons\nomedical\script_component.hpp") #define PATCH_SKIP "No Medical" #endif @@ -11,7 +12,7 @@ class CfgPatches { class ADDON { name = COMPONENT_NAME; units[] = {"ACE_fieldDressingItem","ACE_packingBandageItem","ACE_elasticBandageItem","ACE_tourniquetItem","ACE_splintItem","ACE_morphineItem","ACE_adenosineItem","ACE_epinephrineItem","ACE_plasmaIVItem","ACE_bloodIVItem","ACE_salineIVItem","ACE_quikClotItem","ACE_personalAidKitItem","ACE_surgicalKitItem","ACE_sutureItem","ACE_bodyBagItem","ACE_medicalSupplyCrate","ACE_medicalSupplyCrate_advanced"}; - weapons[] = {"ACE_fieldDressing","ACE_packingBandage","ACE_elasticBandage","ACE_tourniquet","ACE_splint","ACE_morphine","ACE_adenosine","ACE_epinephrine","ACE_plasmaIV","ACE_plasmaIV_500","ACE_plasmaIV_250","ACE_bloodIV","ACE_bloodIV_500","ACE_bloodIV_250","ACE_salineIV","ACE_salineIV_500","ACE_salineIV_250","ACE_quikclot","ACE_personalAidKit","ACE_surgicalKit","ACE_suture","ACE_bodyBag"}; + weapons[] = {"ACE_fieldDressing","ACE_packingBandage","ACE_elasticBandage","ACE_tourniquet","ACE_splint","ACE_morphine","ACE_adenosine","ACE_epinephrine","ACE_plasmaIV","ACE_plasmaIV_500","ACE_plasmaIV_250","ACE_bloodIV","ACE_bloodIV_500","ACE_bloodIV_250","ACE_salineIV","ACE_salineIV_500","ACE_salineIV_250","ACE_quikclot","ACE_personalAidKit","ACE_surgicalKit","ACE_suture","ACE_bodyBag","ACE_bodyBag_blue","ACE_bodyBag_white"}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_medical_status", "ace_medical_damage", "ace_apl"}; author = ECSTRING(common,ACETeam); diff --git a/addons/medical_treatment/data/bodybagItem.p3d b/addons/medical_treatment/data/bodybagItem.p3d index 5195fd59d9..e6c16e8dbe 100644 Binary files a/addons/medical_treatment/data/bodybagItem.p3d and b/addons/medical_treatment/data/bodybagItem.p3d differ diff --git a/addons/medical_treatment/data/bodybagItem_blue_co.paa b/addons/medical_treatment/data/bodybagItem_blue_co.paa new file mode 100644 index 0000000000..190abe5b89 Binary files /dev/null and b/addons/medical_treatment/data/bodybagItem_blue_co.paa differ diff --git a/addons/medical_treatment/data/bodybagItem_white_co.paa b/addons/medical_treatment/data/bodybagItem_white_co.paa new file mode 100644 index 0000000000..eaea0e8f6b Binary files /dev/null and b/addons/medical_treatment/data/bodybagItem_white_co.paa differ diff --git a/addons/medical_treatment/data/model.cfg b/addons/medical_treatment/data/model.cfg index 8546ed7cfd..433488a8ba 100644 --- a/addons/medical_treatment/data/model.cfg +++ b/addons/medical_treatment/data/model.cfg @@ -45,7 +45,11 @@ class CfgModels { class adenosine: Default {}; class atropine: Default {}; class bandage: Default {}; - class bodybagItem: Default {}; + class bodybagItem: Default { + sectionsInherit = ""; + sections[] = {"camo"}; + skeletonName = ""; + }; class epinephrine: Default {}; class splint: Default {}; diff --git a/addons/medical_treatment/functions/fnc_canTreat.sqf b/addons/medical_treatment/functions/fnc_canTreat.sqf index 1f18e2b6c1..995965dfe5 100644 --- a/addons/medical_treatment/functions/fnc_canTreat.sqf +++ b/addons/medical_treatment/functions/fnc_canTreat.sqf @@ -10,7 +10,7 @@ * 3: Treatment * * Return Value: - * Can Treat + * Can treat * * Example: * [player, cursorObject, "Head", "SurgicalKit"] call ace_medical_treatment_fnc_canTreat @@ -22,17 +22,14 @@ params ["_medic", "_patient", "_bodyPart", "_classname"]; private _config = configFile >> QGVAR(actions) >> _classname; -isClass _config -&& {_patient isKindOf "CAManBase"} -&& {_medic != _patient || {GET_NUMBER_ENTRY(_config >> "allowSelfTreatment") == 1}} -&& {[_medic, GET_NUMBER_ENTRY(_config >> "medicRequired")] call FUNC(isMedic)} -&& {[_medic, _patient, _config] call FUNC(canTreat_holsterCheck)} -&& { +// Conditions that apply, regardless of curator status +( + isClass _config +) && { + _patient isKindOf "CAManBase" +} && { private _selections = getArray (_config >> "allowedSelections") apply {toLower _x}; "all" in _selections || {_bodyPart in _selections} -} && { - private _items = getArray (_config >> "items"); - _items isEqualTo [] || {[_medic, _patient, _items] call FUNC(hasItem)} } && { GET_FUNCTION(_condition,_config >> "condition"); @@ -46,19 +43,34 @@ isClass _config _condition } && { - switch (GET_NUMBER_ENTRY(_config >> "treatmentLocations")) do { - case TREATMENT_LOCATIONS_ALL: {true}; - case TREATMENT_LOCATIONS_VEHICLES: { - IN_MED_VEHICLE(_medic) || {IN_MED_VEHICLE(_patient)} - }; - case TREATMENT_LOCATIONS_FACILITIES: { - IN_MED_FACILITY(_medic) || {IN_MED_FACILITY(_patient)} - }; - case TREATMENT_LOCATIONS_VEHICLES_AND_FACILITIES: { - IN_MED_VEHICLE(_medic) || {IN_MED_VEHICLE(_patient)} || {IN_MED_FACILITY(_medic)} || {IN_MED_FACILITY(_patient)} - }; - default {false}; - }; -} && { - ((getNumber (_config >> "allowedUnderwater")) == 1) || {!([_medic] call ace_common_fnc_isSwimming)} + // If in Zeus, the rest of the condition checks can be omitted + (_medic isEqualTo player && {!isNull findDisplay 312}) || { + // Conditions that apply when not in Zeus + ( + _medic != _patient || {GET_NUMBER_ENTRY(_config >> "allowSelfTreatment") == 1} + ) && { + [_medic, GET_NUMBER_ENTRY(_config >> "medicRequired")] call FUNC(isMedic) + } && { + [_medic, _patient, _config] call FUNC(canTreat_holsterCheck) + } && { + private _items = getArray (_config >> "items"); + _items isEqualTo [] || {[_medic, _patient, _items] call FUNC(hasItem)} + } && { + switch (GET_NUMBER_ENTRY(_config >> "treatmentLocations")) do { + case TREATMENT_LOCATIONS_ALL: {true}; + case TREATMENT_LOCATIONS_VEHICLES: { + IN_MED_VEHICLE(_medic) || {IN_MED_VEHICLE(_patient)} + }; + case TREATMENT_LOCATIONS_FACILITIES: { + IN_MED_FACILITY(_medic) || {IN_MED_FACILITY(_patient)} + }; + case TREATMENT_LOCATIONS_VEHICLES_AND_FACILITIES: { + IN_MED_VEHICLE(_medic) || {IN_MED_VEHICLE(_patient)} || {IN_MED_FACILITY(_medic)} || {IN_MED_FACILITY(_patient)} + }; + default {false}; + }; + } && { + !(_medic call EFUNC(common,isSwimming)) || {getNumber (_config >> "allowedUnderwater") == 1} + } + } } diff --git a/addons/medical_treatment/functions/fnc_canUnloadUnit.sqf b/addons/medical_treatment/functions/fnc_canUnloadUnit.sqf new file mode 100644 index 0000000000..f1a15f04f9 --- /dev/null +++ b/addons/medical_treatment/functions/fnc_canUnloadUnit.sqf @@ -0,0 +1,22 @@ +#include "..\script_component.hpp" +/* + * Author: LinkIsGrim + * Checks if unit can be unloaded. + * + * Arguments: + * 0: Unloader + * 1: Target + * + * Return Value: + * Can Unload + * + * Example: + * [player, bob] call ace_medical_treatment_fnc_canUnloadUnit + * + * Public: No + */ + +params ["_unloader", "_target"]; + +!isNull objectParent _target && +{!(lifeState _target in ["HEALTHY", "INJURED"])} diff --git a/addons/medical_treatment/functions/fnc_placeInBodyBag.sqf b/addons/medical_treatment/functions/fnc_placeInBodyBag.sqf index df73a16952..c65f83ca6b 100644 --- a/addons/medical_treatment/functions/fnc_placeInBodyBag.sqf +++ b/addons/medical_treatment/functions/fnc_placeInBodyBag.sqf @@ -6,6 +6,10 @@ * Arguments: * 0: Medic * 1: Patient + * 2: Body Part (unused) + * 3: Treatment (unused) + * 4: Item user (unused) + * 5: Body bag classname * * Return Value: * None @@ -16,13 +20,14 @@ * Public: No */ -params ["_medic", "_patient"]; +params ["_medic", "_patient", "", "", "", "_item"]; TRACE_1("placeInBodyBag",_patient); if ((alive _patient) && {!GVAR(allowBodyBagUnconscious)}) exitWith { - [_medic, "ACE_bodyBag"] call EFUNC(common,addToInventory); // re-add slighly used bodybag? + [_medic, _item] call EFUNC(common,addToInventory); // re-add slighly used bodybag? [LSTRING(bodybagWhileStillAlive)] call EFUNC(common,displayTextStructured); }; // Body bag needs to be a little higher to prevent it from flipping -[_this, "ACE_bodyBagObject", [0, 0, 0.2]] call FUNC(placeInBodyBagOrGrave); +private _bodyBagClass = getText (configFile >> "CfgWeapons" >> _item >> QGVAR(bodyBagObject)); +[_this, _bodyBagClass, [0, 0, 0.2], 0, false] call FUNC(placeInBodyBagOrGrave); diff --git a/addons/medical_treatment/functions/fnc_placeInBodyBagOrGrave.sqf b/addons/medical_treatment/functions/fnc_placeInBodyBagOrGrave.sqf index f1900108c6..b72d0ddda4 100644 --- a/addons/medical_treatment/functions/fnc_placeInBodyBagOrGrave.sqf +++ b/addons/medical_treatment/functions/fnc_placeInBodyBagOrGrave.sqf @@ -16,7 +16,7 @@ * None * * Example: - * [[player, cursorObject], "ACE_bodyBagObject"] call ace_medical_treatment_fnc_placeInBodyBagOrGrave + * [[player, cursorObject], "ACE_bodyBagObject_blue"] call ace_medical_treatment_fnc_placeInBodyBagOrGrave * * Public: No */ @@ -63,6 +63,7 @@ if (_restingPlaceClass != "") then { _restingPlace = createVehicle [_restingPlaceClass, [0, 0, 0], [], 0, "NONE"]; _restingPlace setPosASL _position; _restingPlace setDir _direction; + _restingPlace setVectorUp surfaceNormal _position; }; diff --git a/addons/medical_treatment/functions/fnc_treatment.sqf b/addons/medical_treatment/functions/fnc_treatment.sqf index 0c89820eb4..b7ebbfd8b0 100644 --- a/addons/medical_treatment/functions/fnc_treatment.sqf +++ b/addons/medical_treatment/functions/fnc_treatment.sqf @@ -54,88 +54,98 @@ private _userAndItem = if (GET_NUMBER_ENTRY(_config >> "consumeItem") == 1) then _userAndItem params ["_itemUser", "_usedItem"]; -// Get treatment animation for the medic -private _medicAnim = if (_medic isEqualTo _patient) then { - getText (_config >> ["animationMedicSelf", "animationMedicSelfProne"] select (stance _medic == "PRONE")); -} else { - getText (_config >> ["animationMedic", "animationMedicProne"] select (stance _medic == "PRONE")); -}; +private _isInZeus = !isNull findDisplay 312; -_medic setVariable [QGVAR(selectedWeaponOnTreatment), weaponState _medic]; +if (_medic isNotEqualTo player || {!_isInZeus}) then { + // Get treatment animation for the medic + private _medicAnim = if (_medic isEqualTo _patient) then { + getText (_config >> ["animationMedicSelf", "animationMedicSelfProne"] select (stance _medic == "PRONE")); + } else { + getText (_config >> ["animationMedic", "animationMedicProne"] select (stance _medic == "PRONE")); + }; -// Adjust animation based on the current weapon of the medic -private _wpn = ["non", "rfl", "lnr", "pst"] param [["", primaryWeapon _medic, secondaryWeapon _medic, handgunWeapon _medic] find currentWeapon _medic, "non"]; -_medicAnim = [_medicAnim, "[wpn]", _wpn] call CBA_fnc_replace; + _medic setVariable [QGVAR(selectedWeaponOnTreatment), weaponState _medic]; -// This animation is missing, use alternative -if (_medicAnim == "AinvPknlMstpSlayWlnrDnon_medic") then { - _medicAnim = "AinvPknlMstpSlayWlnrDnon_medicOther"; -}; + // Adjust animation based on the current weapon of the medic + private _wpn = ["non", "rfl", "lnr", "pst"] param [["", primaryWeapon _medic, secondaryWeapon _medic, handgunWeapon _medic] find currentWeapon _medic, "non"]; + _medicAnim = [_medicAnim, "[wpn]", _wpn] call CBA_fnc_replace; -// Determine the animation length -private _animDuration = GVAR(animDurations) getVariable _medicAnim; -if (isNil "_animDuration") then { - WARNING_2("animation [%1] for [%2] has no duration defined",_medicAnim,_classname); - _animDuration = 10; -}; + // This animation is missing, use alternative + if (_medicAnim == "AinvPknlMstpSlayWlnrDnon_medic") then { + _medicAnim = "AinvPknlMstpSlayWlnrDnon_medicOther"; + }; -// These animations have transitions that take a bit longer... -if (weaponLowered _medic) then { - _animDuration = _animDuration + 0.5; + // Determine the animation length + private _animDuration = GVAR(animDurations) getVariable _medicAnim; + if (isNil "_animDuration") then { + WARNING_2("animation [%1] for [%2] has no duration defined",_medicAnim,_classname); + _animDuration = 10; + }; - // Fix problems with lowered weapon transitions by raising the weapon first - if (currentWeapon _medic != "" && {_medicAnim != ""}) then { - _medic action ["WeaponInHand", _medic]; + // These animations have transitions that take a bit longer... + if (weaponLowered _medic) then { + _animDuration = _animDuration + 0.5; + + // Fix problems with lowered weapon transitions by raising the weapon first + if (currentWeapon _medic != "" && {_medicAnim != ""}) then { + _medic action ["WeaponInHand", _medic]; + }; + }; + + if (binocular _medic != "" && {binocular _medic == currentWeapon _medic}) then { + _animDuration = _animDuration + 1; + }; + + // Play treatment animation for medic and determine the ending animation + if (vehicle _medic == _medic && {_medicAnim != ""}) then { + // Speed up animation based on treatment time (but cap max to prevent odd animiations/cam shake) + private _animRatio = _animDuration / _treatmentTime; + TRACE_3("setAnimSpeedCoef",_animRatio,_animDuration,_treatmentTime); + + // Don't slow down animation too much to prevent it looking funny. + if (_animRatio < ANIMATION_SPEED_MIN_COEFFICIENT) then { + _animRatio = ANIMATION_SPEED_MIN_COEFFICIENT; + }; + + // Skip animation enitrely if progress bar too quick. + if (_animRatio > ANIMATION_SPEED_MAX_COEFFICIENT) exitWith {}; + + [QEGVAR(common,setAnimSpeedCoef), [_medic, _animRatio]] call CBA_fnc_globalEvent; + + // Play animation + private _endInAnim = "AmovP[pos]MstpS[stn]W[wpn]Dnon"; + + private _pos = ["knl", "pne"] select (stance _medic == "PRONE"); + private _stn = "non"; + + if (_wpn != "non") then { + _stn = ["ras", "low"] select (weaponLowered _medic); + }; + + _endInAnim = [_endInAnim, "[pos]", _pos] call CBA_fnc_replace; + _endInAnim = [_endInAnim, "[stn]", _stn] call CBA_fnc_replace; + _endInAnim = [_endInAnim, "[wpn]", _wpn] call CBA_fnc_replace; + + [_medic, _medicAnim] call EFUNC(common,doAnimation); + [_medic, _endInAnim] call EFUNC(common,doAnimation); + _medic setVariable [QGVAR(endInAnim), _endInAnim]; + + if (!isNil QEGVAR(advanced_fatigue,setAnimExclusions)) then { + EGVAR(advanced_fatigue,setAnimExclusions) pushBack QUOTE(ADDON); + }; + }; + + // Play a random treatment sound globally if defined + private _soundsConfig = _config >> "sounds"; + + if (isArray _soundsConfig) then { + (selectRandom (getArray _soundsConfig)) params ["_file", ["_volume", 1], ["_pitch", 1], ["_distance", 10]]; + playSound3D [_file, objNull, false, getPosASL _medic, _volume, _pitch, _distance]; }; }; -if (binocular _medic != "" && {binocular _medic == currentWeapon _medic}) then { - _animDuration = _animDuration + 1; -}; - -// Play treatment animation for medic and determine the ending animation -if (vehicle _medic == _medic && {_medicAnim != ""}) then { - // Speed up animation based on treatment time (but cap max to prevent odd animiations/cam shake) - private _animRatio = _animDuration / _treatmentTime; - TRACE_3("setAnimSpeedCoef",_animRatio,_animDuration,_treatmentTime); - - // Don't slow down animation too much to prevent it looking funny. - if (_animRatio < ANIMATION_SPEED_MIN_COEFFICIENT) then { - _animRatio = ANIMATION_SPEED_MIN_COEFFICIENT; - }; - - // Skip animation enitrely if progress bar too quick. - if (_animRatio > ANIMATION_SPEED_MAX_COEFFICIENT) exitWith {}; - - [QEGVAR(common,setAnimSpeedCoef), [_medic, _animRatio]] call CBA_fnc_globalEvent; - - // Play animation - private _endInAnim = "AmovP[pos]MstpS[stn]W[wpn]Dnon"; - - private _pos = ["knl", "pne"] select (stance _medic == "PRONE"); - private _stn = "non"; - - if (_wpn != "non") then { - _stn = ["ras", "low"] select (weaponLowered _medic); - }; - - _endInAnim = [_endInAnim, "[pos]", _pos] call CBA_fnc_replace; - _endInAnim = [_endInAnim, "[stn]", _stn] call CBA_fnc_replace; - _endInAnim = [_endInAnim, "[wpn]", _wpn] call CBA_fnc_replace; - - [_medic, _medicAnim] call EFUNC(common,doAnimation); - [_medic, _endInAnim] call EFUNC(common,doAnimation); - _medic setVariable [QGVAR(endInAnim), _endInAnim]; - - if (!isNil QEGVAR(advanced_fatigue,setAnimExclusions)) then { - EGVAR(advanced_fatigue,setAnimExclusions) pushBack QUOTE(ADDON); - }; -}; - -// Play a random treatment sound globally if defined -if (isArray (_config >> "sounds")) then { - selectRandom getArray (_config >> "sounds") params ["_file", ["_volume", 1], ["_pitch", 1], ["_distance", 10]]; - playSound3D [_file, objNull, false, getPosASL _medic, _volume, _pitch, _distance]; +if (_isInZeus) then { + _treatmentTime = _treatmentTime * GVAR(treatmentTimeCoeffZeus); }; GET_FUNCTION(_callbackStart,_config >> "callbackStart"); @@ -156,7 +166,7 @@ if (_callbackProgress isEqualTo {}) then { FUNC(treatmentFailure), getText (_config >> "displayNameProgress"), _callbackProgress, - ["isNotInside", "isNotSwimming"] + ["isNotInside", "isNotSwimming", "isNotInZeus"] ] call EFUNC(common,progressBar); true diff --git a/addons/medical_treatment/functions/fnc_useItem.sqf b/addons/medical_treatment/functions/fnc_useItem.sqf index 08fc860569..1f1d7c8355 100644 --- a/addons/medical_treatment/functions/fnc_useItem.sqf +++ b/addons/medical_treatment/functions/fnc_useItem.sqf @@ -20,6 +20,10 @@ params ["_medic", "_patient", "_items"]; +if (_medic isEqualTo player && {!isNull findDisplay 312}) exitWith { + [_medic, _items select 0] +}; + scopeName "Main"; private _useOrder = [[_patient, _medic], [_medic, _patient], [_medic]] select GVAR(allowSharedEquipment); diff --git a/addons/medical_treatment/initSettings.sqf b/addons/medical_treatment/initSettings.inc.sqf similarity index 97% rename from addons/medical_treatment/initSettings.sqf rename to addons/medical_treatment/initSettings.inc.sqf index 0193a44546..fbb1b170c8 100644 --- a/addons/medical_treatment/initSettings.sqf +++ b/addons/medical_treatment/initSettings.inc.sqf @@ -305,6 +305,14 @@ true ] call CBA_fnc_addSetting; +[ + QGVAR(treatmentTimeCoeffZeus), + "SLIDER", + [LSTRING(TreatmentTimeCoeffZeus_DisplayName), LSTRING(TreatmentTimeCoeffZeus_Description)], + [ELSTRING(medical,Category), LSTRING(SubCategory_Treatment)], + [0, 10, 1, 2] +] call CBA_fnc_addSetting; + [ QGVAR(allowBodyBagUnconscious), "CHECKBOX", diff --git a/addons/medical_treatment/stringtable.xml b/addons/medical_treatment/stringtable.xml index 0f3694a49f..da7374984d 100644 --- a/addons/medical_treatment/stringtable.xml +++ b/addons/medical_treatment/stringtable.xml @@ -36,7 +36,7 @@ Advanced Diagnose Erweiterte Diagnose - アドバンスド診断 + 高度な診断 Расширенная Диагностика Diagnostic avancé Diagnóstico Avançado @@ -51,13 +51,13 @@ Enables the Check Pulse, Check Blood Pressure, and Check Response treatment actions instead of the generic Diagnose action.\nWhen disabled, the CPR action will only be shown when performing CPR is appropriate.\nThe actions this setting enables are needed to determine whether a person is unconscious or in cardiac arrest. - 有効化すると通常の診断動作に代わり、脈拍や血圧測定、反応を確認できます。 + 全般的な診断の代わりに、脈拍の確認、血圧の確認、反応の確認の治療アクションを有効にします。\n無効にすると、心肺蘇生(CPR)アクションは、心肺蘇生(CPR)の実行が適切で必要な場合のみ表示されます。\nこの設定で有効になるアクションは、人が意識を失っているか心停止しているかを判断するために必要です。 Active le diagnostic avancé, permettant la vérification du pouls, de la pression sanguine, ainsi que la réponse du patient aux traitements.\nSi l'option est désactivée, l'action de RCP ne sera visible que si elle est effectivement appropriée.\nLe diagnostic avancé est indispensable pour différencier une personne inconsciente d'une personne en arrêt cardiaque. Включает действия «Проверить пульс», «Проверить давление» и «Проверить реакцию» вместо общего действия «Диагностика». Ativa as opções de Verificar Pulso, Verificar Pressão Sanguínea e Verificar Resposta, ao invés do diagnóstico geral. 啟用檢查脈搏、血壓以及病患反應的動作而非一般的診斷動作。\n當停用時,CPR只會在需要時出現。\n當這個選項啟用時必須診斷病患是否無意識或者心搏停止。 启用后,可以检查脉搏、血压和反应治疗,而不是通用诊断。\n禁用时,心肺复苏操作将仅在适当时显示。\n此设置操作启用后必须需要先确定一个人是失去知觉还是心脏骤停。 - Abilita le azioni di controllo del polso, controllo della pressione sanguigna e controllo della risposta al trattamento invece dell'azione generica Diagnose.\ Se disabilitata, l'azione di RCP sarà mostrata solo quando l'esecuzione della RCP è appropriata.\Le azioni abilitate da questa impostazione sono necessarie per determinare se una persona è in stato di incoscienza o in arresto cardiaco. + Abilita le azioni di controllo del polso, controllo della pressione sanguigna e controllo della risposta al trattamento invece dell'azione generica 'Diagnosi'.\ Se disabilitata, l'azione di RCP sarà mostrata solo quando l'esecuzione della RCP è appropriata.\Le azioni abilitate da questa impostazione sono necessarie per determinare se una persona è in stato di incoscienza o in arresto cardiaco. Povoluje kontrolu srdečního tepu, krevního tlaku a reakce pacienta namísto univerzální diagnózy.\nKdyž je tato možnost vypnuta, CPR akce bude dostupná pouze pokud je vhodné ji provést.\nAkce které tato možnost zapíná jsou nutné k určení zda je pacient v bezvědomí nebo má srdeční zástavu. Włącza opcje sprawdzania Pulsu, Ciśnienia Tętniczego Krwi i Reakcje Na Ból, zamiast bardziej ogólnej akcji Diagnozuj.\n Po wyłączeniu tej opcji akcja RKO będzie wyświetlana tylko wtedy, gdy jej wykonanie będzie odpowiednie.\n Opcja, która włącza to ustawienie jest potrzebna do ustalenia, czy osoba jest nieprzytomna lub ma zatrzymanie krążenia. Ermöglicht die 'Überprüfe Puls', 'Überprüfe Blutdruck' und 'Überprüfe Reaktionen' Behandlungsaktionen anstatt der einfachen 'Diagnose' Behandlungsaktion.\nWenn diese Einstellung nicht aktiviert ist, wird die "HLW"-Aktion nur angezeigt, wenn die Anwendung von HLW angemessen ist.\nDie Aktionen, die das Aktivieren dieser Einstellung ermöglicht, werden benötigt um zu bestimmen, ob eine Person bewusstlos ist oder einen Herzstillstand erleidet. @@ -69,17 +69,18 @@ Enabled & Can Diagnose Death/Cardiac Arrest Activé & Diagnostic du décès/de l'arrêt cardiaque Włączone i pozwala zdiagnozować Śmierć/Zatrzymanie Akcji Serca - 死亡/心停止状態でも診断許可 + 有効 & 死亡/心停止状態を診断可能 Включено & Может диагностировать смерть/остановку сердца Aktiviert & kann Tod/Herzstillstand diagnostizieren 已启用 & 可以诊断死亡/心搏骤停 활성화 및 사망/심정지 진찰가능 Habilitado y poder diagnosticar Muerte/Parada cardíaca + Abilitato e può diagnosticare Morte/Arresto Cardiaco Advanced Medication Erweiterte Medikation - アドバンスド医薬品 + 高度な医薬品 Расширенные Лекарства Médication avancée Medicação Avançada @@ -95,7 +96,7 @@ Enables extended, more in-depth medication handling. Also, enables the use of Adenosine. Устанавливает расширенное использование лекарств - 有効化するともっと多くの多様な機能を持つ医薬品を使えます。また、アデノシンとアトロピンが利用可能になります。 + 有効化するともっと多くの多様な機能を持つ医薬品を使えます。また、アデノシンが利用可能になります。 Permet une manipulation étendue et plus approfondie des médicaments.\nEn outre, permet l'utilisation d'adénosine. Ativa a manipulação avançada de medicações. Também permite o uso de Adenosina e Atropina. 是否擴展藥物管控使其更深度化。並且,啟用腺苷以及阿托品的使用次數 @@ -110,7 +111,7 @@ Advanced Bandages Erweiterte Bandagen - アドバンスド包帯 + 高度な包帯 Расширенная Перевязка Pansements avancés Ataduras Avançadas @@ -126,7 +127,7 @@ Enables treatment actions for different bandage types instead of the generic Bandage action.\nAdditionally, the reopening of bandaged wounds can also be enabled. Ermöglicht Behandlungsaktionen für verschiedene Bandagentypen anstelle der gewöhnlichen Bandageaktionen. - 有効化すると通常の包帯動作に代わり、様々な種類がある包帯で治療ができます。 + 有効化すると通常の包帯動作に代わり、様々な種類がある包帯で治療ができます。\nまた、創傷の再開放も有効化できます。 Active différents types de bandages, à choisir judicieusement en fonction des plaies. Включает действия для разных типов повязок, вместо общего действия «Перевязка». Ativa o uso de tipos diferentes de ataduras ao invés de apenas a atadura básica. @@ -149,6 +150,7 @@ Etkinleştirildi ve Yeniden Açılabilir Habilitada y pueden reabrirse Aktiviert und können sich wieder öffnen + Attivi e possono riaprirsi 已启用 & 可以伤口开裂 활성화 및 붕대 풀림 구현 @@ -156,10 +158,11 @@ Wound Reopening Coefficient Coefficient de réouverture des plaies Wundwiederöffnungskoeffizient + Coefficiente di riapertura ferite Koeficient opětovného otevření rány Коэф. повторного открытия раны Współczynnik ponownego otwierania ran - 再開放係数 + 創傷再開放係数 Yara Yeniden Açılma Katsayısı Coeficiente de reapertura de heridas 伤口开裂系数 @@ -169,21 +172,23 @@ Coefficient for controlling the wound reopening chance. The final reopening chance is determined by multiplying this value with the specific reopening chance for the wound type and bandage used. Coefficient de contrôle des chances de réouverture de la plaie. La chance de réouverture finale est déterminée en multipliant cette valeur par la chance de réouverture spécifique pour le type de plaie et le bandage utilisés. Koeffizient zur Kontrolle der Wundöffnungswahrscheinlichkeit. Die endgültige Wiedereröffnungschance wird bestimmt, indem dieser Wert mit der spezifischen Wiedereröffnungschance für den verwendeten Wundtyp und Verband multipliziert wird. + Coefficiente che controlla la probabilità di riapertura delle ferite. La probabilità finale viene determinata moltiplicando questo valore con la probabilità di riapertura specifica del tipo di ferita e benda usata. Koeficient pro řízení šance na opětovné otevření rány. Konečná šance na opětovné otevření se stanoví vynásobením této hodnoty specifickou šancí na opětovné otevření pro použitý typ rány a obvaz. Коэффициент контроля вероятности повторного открытия раны. Окончательный шанс повторного открытия определяется путем умножения этого значения на определенный шанс повторного открытия для используемого типа раны и повязки. Współczynnik kontroluje szanse na ponowne otworzenie rany. Końcowa szansa na otworzenie jest ustalana przez pomnożenie tej wartości z wartością szansy na otworzenie rany dla typu rany oraz typu bandaża. - 傷が再開放する確率の係数を設定できます。再開放は、この数値と傷の種類、そして使用した包帯に応じて左右されます。 + 創傷が再開放する確率の係数を設定できます。再開放は、この数値と傷の種類、そして使用した包帯に応じて左右されます。 Yaranın yeniden açılma şansını kontrol etme katsayısı. Son yeniden açılma şansı, bu değerin kullanılan yara tipi ve bandaj için spesifik yeniden açılma şansı ile çarpılmasıyla belirlenir. Coeficiente que controla la probabilidad de reapertura de heridas. La probabilidad final de reapertura de heridas queda determinada multiplicando este valor por la probabilidad específica del tipo de herida y venda usada. 用于控制伤口开裂概率的系数。最终的重开放概率=该值x伤口类型x所使用的绷带的具体开裂概率。 - 붕대가 풀리는 기회 계수를 정합니다. 최종 붕대 풀림 계수는 상처의 종류와 쓰인 붕대의 합의 결과에 계수를 곱한 결과입니다. + 붕대가 풀리는 확률 계수를 정합니다. 최종 붕대 풀림 계수는 상처의 종류와 쓰인 붕대의 합의 결과에 계수를 곱한 결과입니다. Clear Trauma - 外傷の削除 + 外傷を取り除く Soigner les blessures Очистить рану Traumata entfernen + Rimuovi Trauma Leczenie ran 清理创伤 상처 제거 @@ -195,6 +200,7 @@ Définit à quel moment les blessures sont entièrement soignées. Определяет, когда исцеляется урон от ран. Steuert, wann Trefferpunktschaden von Wunden geheilt wird. + Controlla quando vengono guariti i danni ricevuti da ferite. Kontroluje kiedy punkty obrażeń od odniesionych ran są w pełni wyleczone. 控制伤口治疗后确定受伤部位的受伤情况。 상처가 언제 제거되는 지를 결정합니다. @@ -206,6 +212,7 @@ Après bandage После перевязки Nach dem Bandagieren + Dopo il bendaggio Po zabandażowaniu 包扎后 붕대 묶은 후 @@ -213,10 +220,11 @@ After Stitch - 縫合後 + 縫合した後 Après suture После наложения швов Nach dem Nähen + Dopo la cucitura Po zszyciu 缝合后 상처 봉합 후 @@ -230,7 +238,7 @@ Aumenta a qualidade do tratamento quando dentro de veículos ou instalações médicas. Destreinados se tornam médicos, médicos se tornam doutores. 在醫療設施或者載具旁時增加醫療能力。未受訓練的將會成為醫療兵,醫療兵將會成為軍醫。 在医疗设施或载具旁时提升医疗训练。未受训练者将会成为医疗兵,医疗兵将会晋升为军医。 - Aumentare la formazione medica quando si è in veicoli o strutture mediche. Se non addestrato diventa medico, il medico diventa dottore. + Aumenta la formazione medica quando si è in veicoli o strutture mediche. Se non addestrato diventa medico, se medico diventa dottore. Zvyšuje zdravotnickou úroveň v zdravotnických objektech a vozidlech. Nevycvičení se stávají mediky a medici se stávají doktory. Zwiększ wyszkolenie medyczne w pojazdach lub obiektach medycznych. Niewytrenowana jednostka zostaje medykiem, medyk zostaje lekarzem. Verbessere 'Fähigkeiten-Level' in medizinischen Fahrzeugen oder Einrichtungen. Untrainiert wird zu Sanitäter, Sanitäter wird zu Arzt. @@ -246,7 +254,7 @@ Permitir Compartilhar Itens Médicos 允許共享設備 允许共享装备 - Consentire la condivisione di attrezzature + Consenti la condivisione di risorse Povolit sdílení vybavení Zezwalaj na współdzielenie sprzętu Erlaube geteilte Ausrüstung @@ -256,13 +264,13 @@ Controls whether medical equipment can be shared between the patient and the medic. - 患者と衛生兵との間で医療品の共有をするかどうかを決定します。 + 患者と救護者との間で医療品の共有をするかどうかを決定します。 Définit si l'équipement médical du médecin et du patient sont mis en commun, et quel matériel est à utiliser en priorité, le cas échéant. Контролирует, можно ли разделить медикаменты между пациентом и врачом. Controla se um item médico pode ser compartilhado entre médico e paciente. 控制是否病患與醫療兵之間能否共享醫療物資 控制伤员和医疗兵之间是否可以共享医疗装备。 - Controlla se le attrezzature mediche possono essere condivise tra il paziente e il medico. + Controlla se le risorse mediche possono essere condivise tra il paziente e il medico. Nastavuje zda jak je zdravotnické vybavení sdíleno mezi medikem a pacientem. Kontroluje, czy sprzęt medyczny ma być dzielony między pacjentem a medykiem. Legt fest, ob medizinische Ausrüstung zwischen Patient und Sanitäter geteilt werden kann. @@ -272,13 +280,13 @@ Patient's Equipment First - 患者の装備を先に使用 + 患者の装備を優先 Matériel du patient d'abord Сначала медикаменты пациента Usar do Paciente Primeiro 優先使用患者的醫療物資 优先消耗伤员装备 - L'attrezzatura del paziente prima di tutto + Prima le risorse del paziente Prvně pacientovo vybavení Najpierw sprzęt pacjenta Ausrüstung des Patienten zuerst @@ -288,13 +296,13 @@ Medic's Equipment First - 衛生兵の装備を先に使用 + 救護者の装備を優先 Matériel du médecin d'abord Сначала медикаменты врача Usar do Médico Primeiro 優先使用醫療兵的醫療物資 优先消耗医疗兵装备 - Prima le attrezzature mediche + Prima le risorse del medico Prvně medikovo vybavení Najpierw sprzęt medyka Ausrüstung des Sanitäters zuerst @@ -305,22 +313,24 @@ Autoinjector Treatment Time Durée d'interaction - Auto-injecteurs - 注射器の使用時間 + 自動注射器の所要時間 Tiempo de tratamiento de autoinyección Время ввода автоинъектора Czas aplikacji autostrzykawki Behandlungszeit des Autoinjektors + Tempo di utilizzo dell'autoiniettore 自动注射器治疗时间 주사기 사용 시간 Time, in seconds, required to administer medication using an autoinjector. Définit le temps nécessaire à l'administration d'une substance auto-injectable (en secondes). - 注射器の使用に掛かる時間 (秒) を決定します。 + 自動注射器の使用に掛かる時間 (秒) を決定します。 Tiempo, en segundos, requerido para administrar medicación utilizando un autoinyectador. Время, необходимое для введения медикаментов автоинъектором (в секундах). Czas w sekundach potrzebny do aplikacji medykamentów za pomocą autostrzykawki. Zeit in Sekunden, die benötigt wird, um Medikamente mittels Autoinjektor zu verabreichen. + Tempo in secondi richiesto per ricevere medicina da un autoiniettore. 使用自动注射器给药所需的时间(秒) 초 단위로 주사기를 사용하는데 걸리는 시간을 정합니다. @@ -328,7 +338,8 @@ Tourniquet Treatment Time Durée d'interaction - Garrots Tourniquet-Behandlungszeit - 止血帯の使用時間 + Tempo d'uso del Laccio Emostatico + 止血帯の所要時間 Tiempo de tratamiento de torniquete Время наложения/снятия жгута Czas aplikacji stazy @@ -339,7 +350,8 @@ Time, in seconds, required to apply/remove a tourniquet. Définit le temps nécessaire à l'application ou au retrait d'un garrot (en secondes). Zeit in Sekunden, die benötigt wird, um ein Tourniquet anzuwenden. - 止血帯の使用/排除に掛かる時間 (秒) を決定します。 + Tempo in secondi richiesto per mettere/rimuovere un laccio emostatico. + 止血帯の使用/取り外しに掛かる時間 (秒) を決定します。 Tiempo, en segundos, requerido para aplicar/quitar un torniquete. Время, необходимое для наложения/снятия жгута (в секундах). Czas w sekundach potrzebny do założenia/zdjęcia stazy. @@ -350,7 +362,8 @@ IV Bag Treatment Time Durée d'interaction - IVs IV Beutelbehandlungszeit - 点滴の使用時間 + Tempo di inserimento EV + 点滴の所要時間 Tiempo de tratamiento de bolsa de IV Время применения пакета внутривенного переливания Czas aplikacji IV @@ -361,6 +374,7 @@ Time, in seconds, required to administer an IV bag. Définit le temps nécessaire à la pose d'une perfusion IV (en secondes). Zeit in Sekunden, die benötigt wird, um einen Infusionsbeutel aufzutragen. + Tempo in secondi richiesto per applicare una Flebo Endovenosa. 点滴の投与に掛かる時間 (秒) を決定します。 Tiempo, en segundos, requerido para administrar una bolsa de IV. Время, необходимое для применения пакета внутривенного переливания (в секундах). @@ -372,7 +386,8 @@ Splint Treatment Time Durée d'interaction - Attelles Schienenbehandlungszeit - 添え木の使用時間 + Tempo di Gessatura + 添え木の所要時間 TIempo de tratamiento de férula Время наложения шины Czas aplikacji szyny @@ -383,6 +398,7 @@ Time, in seconds, required to apply a splint. Définit le temps nécessaire à l'application d'une attelle (en secondes). Zeit in Sekunden, die zum Anbringen einer Schiene benötigt wird. + Tempo in secondi richiesto per applicare una gessatura. 添え木の使用に掛かる時間 (秒) を決定します。 TIempo, en segundos, requerido para aplicar una férula. Время, необходимое для наложения шины (в секундах). @@ -394,7 +410,8 @@ Body Bag Use Time Durée d'interaction - Housses mortuaires Anwendungszeit für Leichensack - 死体袋の使用時間 + Tempo della sacca per corpi + 遺体袋の所要時間 TIempo de uso de bolsa para cuerpos Время использования мешка для трупов Czas użycia worka na ciało @@ -405,7 +422,8 @@ Time, in seconds, required to put a patient in a body bag. Définit le temps nécessaire à la mise en housse d'un corps (en secondes). Zeit in Sekunden, die benötigt wird, um einen Leichensack aufzutragen. - 死体袋の使用に掛かる時間 (秒) を決定します。 + Tempo in secondi richiesto per mettere un deceduto in una sacca per corpi. + 遺体袋の使用に掛かる時間 (秒) を決定します。 Tiempo, en segundos, requerido para poner a un paciente en una bolsa para cuerpos. Время, необходимое для того чтобы упаковать труп в мешок (в секундах). Czas w sekundach potrzebny na spakowanie ciała do worka na ciało. @@ -415,10 +433,20 @@ Grave Digging Time 무덤 파는 시간 + Czas Kopania Grobu + Durée pour creuser une tombe + Zeit zum Graben von Gräbern + Tempo di scavo tomba + 墓掘りの所要時間 Time, in seconds, required to dig a grave for a body. 시신의 무덤을 파는 데 필요한 시간(초 단위). + Czas, w sekundach wymagany do wykopania grobu. + Durée, en secondes, requise pour creuser une tombe pour un corps. + Zeit (in Sekunden), die benötigt wird, um ein Grab für einen Leichnam auszuheben. + Tempo in secondi richiesto per seppellire un morto. + 遺体の墓を掘るのに掛かる時間 (秒) を決定します。 Allow Epinephrine @@ -426,7 +454,7 @@ Permitir Epinefrina Ograniczenia użycia adrenaliny Épinéphrine autorisée pour - Permette epinefrina + Permetti Epinefrina Povolit epinefrin Permitir Epinefrina Разрешить Адреналин @@ -438,7 +466,7 @@ Training level required to use epinephrine. - アドレナリンの使用に訓練レベルを必要とさせます。 + アドレナリンの使用に必要な医療スキルのレベルを設定します。 Définit la qualification médicale requise pour utiliser l'épinéphrine. Уровень подготовки, необходимый для использования Адреналина. É necessária uma qualificação médica para usar epinefrina. @@ -458,11 +486,11 @@ Ubicaciones epinefrina Miejsca użycia epinefryny Lieux épinéphrine - Ubicazione epinefrina + Luoghi Epinefrina Oblast pro použití epinefrinu Localizações de Epinefrina Места использования Адреналина - アドレナリンの使用可能場所 + アドレナリンの使用可能な場所 에피네프린 사용 장소 肾上腺素使用地点 腎上腺素使用地點 @@ -476,7 +504,7 @@ Controla onde Epinefrina pode ser utilizada. 控制何處能使用腎上腺素 控制何地能使用肾上腺素。 - Controlli dove si può usare l'Epinefrina. + Controlla dove si può usare l'Epinefrina. Nastavuje kde může být epinefrin použit Kontroluje, gdzie można stosować epinefrynę. Legt fest, wo Epinephrin genutzt werden kann. @@ -494,8 +522,8 @@ Permitir Kit de Primeiros Socorros (KPS) Trousse sanitaire autorisée pour Elsősegélycsomag engedélyezése - Consenti Kit di Pronto Soccorso - 応急処置キットの許可 + Consenti PAK + PAKの許可 개인응급키트 사용 허가 允许使用个人急救包 允許使用個人急救包 @@ -503,13 +531,13 @@ Training level required to use a PAK. - 応急処置キットの使用に訓練レベルを必要とさせます。 + PAKの使用に必要な医療スキルのレベルを設定します。 Définit la qualification médicale requise pour utiliser la trousse sanitaire. Уровень подготовки, необходимый для использования Аптечки. É necessária uma qualificação médica para usar KPS 要受過何種程度的醫療訓練才可以使用個人急救包 使用个人急救包所需的医疗水平。 - Livello di formazione richiesto per l'utilizzo di un PAK. + Livello di formazione richiesto per l'utilizzo di un Kit di Pronto Soccorso (PAK). Úroveň výcviku pro použití osobní lékárničky (PAK). Poziom wyszkolenia wymagany do korzystania z apteczek osobistych. 'Fähigkeiten-Level', das benötigt wird, um ein Erste-Hilfe-Set zu nutzen. @@ -527,8 +555,8 @@ Localizações do KPS Lieux trousse sanitaire Elsősegélycsomag helyek - Locazioni Kit Pronto Soccorso - 応急処置キットの使用可能場所 + Luoghi PAK + PAKの使用可能な場所 개인응급키트 사용 장소 个人急救包使用地点 個人急救包使用地點 @@ -536,13 +564,13 @@ Controls where a PAK can be used. - 応急処置キットが使える場所を決定します。 + PAKが使える場所を決定します。 Définit les lieux où l'usage de la trousse sanitaire est autorisé. Контролирует, где можно использовать Аптечку. Controla onde o KPS pode ser utilizado. 控制何處能使用個人急救包 控制何地能使用个人急救包。 - Controlla dove può essere usato un PAK. + Controlla dove può essere usato un Kit di Pronto Soccorso (PAK). Nastavuje kde může být osobní lékárnička (PAK) použita. Kontroluje, gdzie można korzystać z apteczek osobistych. Kontrolliert, wo ein Erste-Hilfe-Set benutzt werden kann. @@ -552,13 +580,13 @@ Consume PAK - 応急処置キットの消費 + PAKの消費 Trousse sanitaire consommable Израсходовать Аптечку KPS Descartável 個人急救包為消耗品 个人急救包会被消耗 - Consumare PAK + Consuma PAK Spotřebuj osobní lékárničku (PAK) Zużycie apteczek osobistych Verbrauche Erste-Hilfe-Set @@ -568,13 +596,13 @@ Controls whether a PAK should be consumed after use. - 応急処置キットの使用後に消費するかどうかを決定します。 + PAKの使用後に消費するかどうかを決定します。 Définit si la trousse sanitaire doit être à usage unique. Контролирует, следует ли израсходовать Аптечку после использования. Controla se o KPS deve ser descartado/consumido após o uso. 設定個人急救包是否為消耗品 设置个人急救包是否会被消耗 - Controlla se un PAK deve essere consumato dopo l'uso. + Controlla se un PAK viene consumato dopo l'uso. Nastavuje zda má být osobní lékárnička (PAK) spotřebována po použití. Kontroluje, czy apteczka osobista powinna być zużyta po użyciu. Kontrolliert, ob ein Erste-Hilfe-Set nach der Benutzung verbraucht werden soll. @@ -584,13 +612,13 @@ Self PAK Usage - Utilizzo del kit di pronto soccorso su se stessi + Utilizzo del PAK su se stessi Erste-Hilfe-Set Selbstanwendung 自我使用急救包 自我使用急救包 Utilisation de la trousse sanitaire sur soi-même Używanie apteczki osobistej na sobie - 応急処置キットの自己使用 + PAKの自己使用 Samo-použití osobní lékárničky (PAK) Использование аптечки на себе Kendi PAK Kullanımı @@ -599,13 +627,13 @@ Enables the use of PAKs to heal oneself. - Abilita l'utilizzo del kit di pronto soccorso su se stessi. + Abilita l'utilizzo del Kit di Pronto Soccorso (PAK) su se stessi. Erlaubt die Benutzung des Erste-Hilfe-Sets, um sich selbst zu heilen. 啟用個人急救包能對自己使用。 启用自身能使用个人急救包。 Définit si le joueur peut utiliser la trousse sanitaire pour se soigner lui-même. Pozwala na użycie apteczki osobistej na sobie - 応急処置キットを使って、自分を治療できるようにします。 + PAKを使って、自分を治療できるようにします。 Umožňuje použít osobní lékárničku (PAK) na sama sebe. Позволяют использовать аптечку на себе в одиночку. Kendini iyileştirmek için PAK'ların kullanılmasını sağlar. @@ -614,7 +642,7 @@ Time Coefficient PAK - 応急処置キットの時間係数 + PAKの所要時間係数 Coefficient de temps pour la trousse sanitaire Контролирует, следует ли израсходовать Аптечку после использования. Coeficiente de Tempo do KPS @@ -630,13 +658,13 @@ Modifies how long a PAK takes to apply.\nThe treatment time is based on the total body part damage multiplied by this coefficient, with a minimum of 10 seconds. - 応急処置キットの使用にかかる時間を変更できます。\n総治療時間は最低でも 10 秒間で、この係数と体全体に負ったダメージによって決まります。 + PAKの使用に掛かる時間を変更できます。\n総治療時間は最低でも 10 秒間で、この係数と体全体に負ったダメージによって決まります。 Modifie le temps nécessaire à l'application de la trousse sanitaire.\nLa durée est calculée en multipliant ce coefficient par les dommages totaux du patient, avec un minimum de 10 secondes. Изменяет быстроту применения Аптечки.\nВремя лечения зависит от общего повреждения частей тела, умноженного на данный коэффициент (минимум 10 сек.). Modifica quanto tempo o KPS leva para ser aplicado.\nO tempo de tratamento é baseado no total de dano do corpo, multiplicado por esse coeficiente, com um mínimo de 10 segundos. 修改個人急救包要使用多久才能完成。\n醫療時間是依照全身的肢體狀況並乘上該係數而決定的,至少十秒。 修改个人急救包应用时间。 \n治疗时间=全身的总伤害x该系数,至少十秒。 - Il tempo di trattamento si basa sul danno totale della parte del corpo moltiplicato per questo coefficiente, con un minimo di 10 secondi. + Il tempo di trattamento del PAK si basa sul danno totale della parte del corpo, moltiplicato per questo coefficiente, con un minimo di 10 secondi. Upravuje jak dlouho trvá léčba pomocí osobní lékárničky (PAK).\nDoba léčby závisí na celkovém poškození částí těla vynásobeném tímto koeficientem, přičemž minimum je 10 vteřin. Zmienia czas potrzebny na zastosowanie apteczki osobistej.\n Czas leczenia jest oparty na całkowitym uszkodzeniu części ciała pomnożonym przez ten współczynnik, wynosi minimum 10 sekund. Modifiziert, wie lange ein Erste-Hilfe-Set für die Anwendung benötigt.\nDie Behandlungszeit basiert auf der Anzahl des Gesamtkörperschadens multipliziert mit diesem Koeffizienten, mit einen Minimum von 10 Sekunden. @@ -646,13 +674,13 @@ Allow Surgical Kit - 縫合キットを許可 + 手術キットを許可 Trousse chirurgicale autorisée pour Разрешить Хирургический набор Permitir Kit Cirúrgico 允許使用手術包 允许使用手术包 - Permettere il kit chirurgico + Permetti il Kit Chirurgico Povolit sešívací sadu Ograniczenia Użycia Zestawu Chirurgicznego Erlaube Operations-Set @@ -662,13 +690,13 @@ Training level required to use a surgical kit. - 縫合キットの使用に訓練レベルを必要とさせます。 + 手術キットの使用に必要な医療スキルのレベルを設定します。 Définit la qualification médicale requise pour utiliser la trousse chirurgicale. Уровень медицинской подготовки, необходимый для использования Хирургического набора. É necessária uma qualificação médica para usar Kit Cirúrgico 要受過多少程度的醫療訓練才能使用手術包。 使用手术包所需的医疗水平。 - Livello di formazione richiesto per l'utilizzo di un kit chirurgico. + Livello di formazione richiesto per l'utilizzo di un Kit Chirurgico. Úroveň výcviku pro použití sešívací sady. Poziom wyszkolenia wymagany do korzystania z Zestawu Chirurgicznego. 'Fähigkeiten-Level', das benötigt wird um ein Operations-Set zu nutzen. @@ -678,13 +706,13 @@ Locations Surgical Kit - 縫合キットの使用可能場所 + 手術キットの使用可能な場所 Lieux trousse chirurgicale Места использования Хирургического набора Locais para Kit Cirúrgico 手術包使用地點 手术包使用地点 - Luoghi Kit chirurgico + Luoghi Kit Chirurgico Nastavuje kde může být sešívací sada použita Miejsca użycia Zestawu Chirurgicznego Orte für Operations-Set @@ -694,29 +722,29 @@ Controls where a surgical kit can be used. - 縫合キットが使える場所を決定します。 + 手術キットが使える場所を決定します。 Définit les lieux où l'usage de la trousse chirurgicale est autorisé. Контролирует, где можно использовать Хирургический набор Controle onde o Kit Cirúrgico pode ser utilizado. 控制何處能使用手術包 控制何地能使用手术包 - Controlla dove può essere usato un kit chirurgico. + Controlla dove può essere usato un Kit Chirurgico. Nastavuje zda má být sešívací sada spotřebována po použití. Kontroluje, gdzie można użyć Zestawu Chirurgicznego. Legt fest, wo ein Operations-Set genutzt werden kann. Cerrahi Kitin nerelerde kullanılabileceğini kontrol eder Controla donde puede usarse un kit quirúrgico. - 봉합키트을 사용할 수 있는 장소를 정합니다. + 봉합키트를 사용할 수 있는 장소를 정합니다. Consume Surgical Kit - 縫合キットの消費 + 手術キットの消費 Trousse chirurgicale consommable Израсходовать Хирургический набор Kit Cirúrgico Consumível 手術包為消耗品 手术包是否被消耗 - Consumare Kit Chirurgico + Consuma Kit Chirurgico Spotřebuj sešívací sadu Zużycie Zestawów Chirurgicznych Verbrauche Operations-Set @@ -726,10 +754,12 @@ What should be consumed after use. Legt fest, ob etwas nach der Anwendung verwendet werden soll. + Controlla se un Kit Chirurgico viene consumato dopo l'uso. Qué debe ser consumido despues de su uso. - 縫合キットの使用後に消費するかどうかを決定します。 + 使用後に何を消費するか設定します。 Co powinno zostać zużyte po zastosowaniu. 봉합키트를 1회성 소모품으로 설정할 지 여부를 결정합니다. + Ce qui doit être consommé après l'utilisation. Self Stitching @@ -738,7 +768,7 @@ 自己縫合 自我縫合 自我缝合 - Auto cucitura + Auto Cucitura Samo-zašívání Zszywanie własnych ran Selbstnähen @@ -750,12 +780,12 @@ Enables the use of surgical kits to stitch oneself. Autorise l'utilisation de la trousse chirugicale sur soi-même. Permite o uso de Kit Cirúrgico em si mesmo. - 縫合キットを使い自らを縫合できるようにします。 + 手術キットを使い自らを縫合できるようにします。 啟用是否能自己使用手術包來縫合自己的傷口。 启用是否能够使用手术包进行自我缝合。 Umožňuje použití sešívací sady na sebe sama. Umożliwia użycie Zestawu Chirurgicznego na sobie. - Permette l'uso di kit chirurgici per ricucirsi. + Permette di ricucire se stesso con un Kit Chirurgico. Ermöglicht die Benutzung des Operations-Sets, um sich selbst zu nähen. Включает использование хирургического набора на себе. Permite el uso de kits quirúrgicos sobre uno mismo @@ -764,11 +794,12 @@ Wound Stitch Time Durée d'interaction - Sutures - 縫合時間 + 縫合の所要時間 Tiempo de sutura de herida Время зашивания ран Czas szycia rany Benötigte Zeit, um Wunden zu nähen + Tempo di suturazione ferita. 伤口缝合时间 상처 봉합 시간 @@ -780,6 +811,7 @@ Время, необходимое для зашивания одной раны (в секундах). Czas w sekundach potrzebny na zaszycie pojedyńczej rany. Zeit in Sekunden, um eine einzelne Wunde zu nähen. + Tempo in secondi richiesto per suturare una singola ferita. 缝合一个伤口所需的时间(秒) 초 단위로, 한 상처를 봉합하는데 걸리는 시간을 설정합니다. @@ -787,7 +819,7 @@ Self IV Transfusion Eigennutzung von Bluttransfusionen Внутривенное переливание на себе - 自己 IV 輸血 + 自己 IV 輸液 Pose d'IV sur soi-même Autotransfusão de IV 自我注射點滴 @@ -802,78 +834,100 @@ Enables the use of IV transfusions on oneself. Erlaube Bluttransfusionen an sich selbst zu benutzen Позволяет использовать внутривенные переливания на себе - 自らに対して IV 輸血を可能にします。 + 自らに対して IV 輸液を可能にします。 Active la possibilité de s'auto-poser des IVs. Permite utilizar bolsas de IV para transfusão em si mesmo 啟用是否能對自己注射點滴 启用是否能够自我静脉输液 Umožňuje aplikovat IV transfuze na sama sebe. Pozwala przetoczyć płyny IV samemu sobie - Abilita la trasfusione in endovena su se stessi. + Abilita l'applicazione di Fleboclisi Endovenose su se stessi. Habilita el uso de las transfusiones IV sobre uno mismo 수액용기를 사용자 본인에게 쓸 수 있는지를 정합니다. Allow Unconscious Body Bag Housse mortuaire - Autoriser patients inconscients - 無意識者を死体袋に + 気絶者を遺体袋に Permitir bolsa para cuerpos inconsciente Разрешить упаковывать пациентов без сознания в мешки для трупов Nieprzytomni w worku na ciało Erlaube Benutzung des Leichensackes mit bewusstlosen Personen + Permetti di insaccare un paziente svenuto 允许昏迷者装入尸袋 기절 인원 시체 운반용 부대에 옮기기 Enables placing an unconscious patient in a body bag. Active la possibilité de placer des patients inconscients dans les housses mortuaires.\nAttention : le cas échéant cela provoquera la mort du patient. - 気絶しているプレイヤーを死体袋へ入れられるかどうかを決定します。 + 無意識状態のプレイヤーを遺体袋へ入れられるかどうかを決定します。 Permitir colocar a un paciente inconsciente en una bolsa para cuerpos. Разрешает упаковывать пациентов без сознания в мешки для трупов. Zezwalaj na pakowanie nieprzytomnych osób do worka na ciało. Aktiviert, Bewusstlose in Leichensack zu legen. + Permette l'uso della sacca per morti anche su pazienti che sono solo svenuti (causa la morte del paziente) 能够将昏迷的伤员装入尸袋中。 - 기절상태의 인원을 시체운반용부대에 옮겨 담을 수 있는지를 정합니다. + 기절 상태의 인원을 시체 운반용 부대에 옮겨 담을 수 있는 지를 정합니다. Allow Grave Digging Zezwalaj na kopanie grobów 무덤 파기 허용 Erlaube Graben von Gräbern + Permetti scavo di tombe Permitir cavar tumbas + Autoriser le creusement de tombes + 墓掘りを許可 Enables digging graves to dispose of corpses. Umożliwia kopanie grobów w celu pozbycia się zwłok. 시체를 처리하기 위해 무덤을 파는 것을 허용합니다. Erlaubt das Graben von Gräbern um Leichen zu entsorgen. + Permette lo scavo di tombe per seppellire cadaveri. Habilita cavar tumbas para deshacerse de los cadáveres. + Active la possibilité de creuser des tombes pour enterrer les cadavres. + 墓を掘って死体を処理できるようになります。 Only if dead Tylko kiedy martwy 죽었을 때에만 Nur wenn tot + Solo se morti Solo si está muerto + Uniquement s'il est mort + 死体のみ Create Grave Markers Erstelle Grabmal + Crea lapide Crear Tumba + Utwórz Nagrobek + 무덤 마커 생성 + Créer des pierres tombales + 墓標を作成 Enables the creation of grave markers when digging graves. Erstellt Grabmale beim Graben von Gräbern. + Permette la creazione di una lapide su una tomba scavata. Habilita la creación de Tumbas al cavar tumbas. + Umożliwia tworzenie nagrobków podczas kopania grobów. + 무덤을 파낼 때 무덤 마커를 표시할 수 있습니다. + Active la création de pierres tombales lors de l'enterrement de cadavres. + 墓を掘った際、墓標を作成できるようにします。 Allow IV Transfusion Erlaube Bluttransfusionen + Permetti Fleboclisi EV Zezwalaj na przetaczanie płynów IV Pose de perfusions autorisée pour 允許操作點滴 允许静脉输液 - IV 輸血の制限 + IV 輸液の制限 Povolit IV transfuzi Разрешить внутривенное переливание Permitir transfusión de IV @@ -882,11 +936,12 @@ Training level required to transfuse IVs. 'Fähigkeiten-Level', das benötigt wird, um Blut zu transfundieren. + Formazione richiesta per applicare Fleboclisi Endovenose. Poziom wyszkolenia potrzebny aby móc przetaczać płyny IV. Définit la qualification médicale requise pour poser des perfusions intraveineuses. 要有何種醫療水準才可注射點滴。 静脉输液所需的医疗水平。 - IV 輸血を行うのに訓練済レベルを要求とします。 + IV 輸液を行うのに必要な医療スキルのレベルを設定します。 Úroveň výcviku nutná pro IV transfuzi. Уровень навыка, требуемый для осуществления внутривенного переливания. Nivel de capacitación requerido para transfusiones de IV. @@ -894,23 +949,25 @@ Locations IV Transfusion - IV 輸血の場所制限 + IV 輸液の場所制限 Ubicación para transfusiones IV Lieux perfusions IV Места введения пакетов внутривенного переливания Miejsca do transfuzji IV Orte an denen IV-Transfusionen angelegt werden können + Luoghi Fleboclisi EV 静脉输液地点 수액용기 사용 장소 Controls where IV transfusions can be performed. - IV 輸血を行える場所を決定できます。 + IV 輸液を行える場所を決定できます。 Controla dónde pueden ser realizadas las transfusiones IV. Définit les lieux où la pose de perfusions est autorisée. Определяет к каким частям тела разрешено применять пакеты внутренного переливания. Kontroluje w jakich miejscach można robić transfuzje IV. Kontrolliert, wo IV-Transfusionen durchgeführt werden können. + Luoghi in cui è possibile applicare Fleboclisi Endovenose. 控制何地可以静脉输液 수액용기를 사용할 수 있는 장소를 정합니다. @@ -918,7 +975,7 @@ Convert Vanilla Items Standard Arma-Equipment in ACE-Items umwandeln Преобразовывать ванильные медикаменты - 標準アイテムの変換 + バニラアイテムの変換 Convertir les objets vanilla Converter itens vanilla 轉換原版物品 @@ -932,13 +989,13 @@ Controls whether vanilla medical items are converted to ACE Medical items, removed only, or ignored. Legt fest, ob Standard Medic-Equipment in ACE-Equipment umgewandelt oder entfernt wird - ゲーム標準の医療アイテムを ACE 医療アイテムへ変換、削除、そのままにするかを決定します。 + ゲーム標準の医療アイテムをACE医療アイテムへ変換するか、削除するか、そのままにするかを決定します。 Détermine si les objets médicaux vanilla sont convertis en objets médicaux ACE, s'ils sont simplement retirés, ou s'ils sont ignorés. Определяет, что делать с ванильными медикаментами: преобразовать в медикаменты ACE, удалить или проигнорировать. Controla se itens médicos vanilla serão convertidos para itens do ACE, removidos ou ignorados. 控制是否轉換原版的醫療物資成ACE的醫療物資,或者單純移除或無視。 控制是否转换原版的医疗物品成 ACE 的医疗物品,或者单纯移除/无视。 - Controlla se gli articoli medicali vanilla vengono convertiti in articoli medicali ACE, rimossi o ignorati. + Controlla se gli oggetti medicali vanilla vengono convertiti in oggetti medicali ACE, rimossi o ignorati. Nastavuje zda zdravotnické předměty ze základní hry budou přeměněny na ACE předměty, odstraněny nebo ignorovány. Kontroluje, czy podstawowe przedmioty medyczne z Arma są konwertowane na przedmioty medyczne ACE, tylko usuwane lub ignorowane. Controla si los artículos médicos básicos se convierten en artículos médicos de ACE, solo se eliminan o se ignoran. @@ -952,7 +1009,7 @@ Apenas Remover 單純移除 仅移除 - Rimuovere solo + Rimuovi solo Pouze odstranit Tylko Usuwaj Nur Entfernen @@ -984,7 +1041,7 @@ Permite a criação de lixo médico durante o tratamento. 啟用醫療後剩下的醫療用廢棄物。 启用在治疗后能够产生医疗垃圾。 - Permette la creazione di rifiuti al momento del trattamento. + Abilita la creazione di rifiuti al momento del trattamento. Umožňuje vytvořit odpadky při léčbě. Umożliwia tworzenie śmieci po przeprowadzaniu zabiegu. Ermöglicht das Produzieren von Abfall während einer Behandlung. @@ -1030,7 +1087,7 @@ Duração de Lixo 醫療用廢棄物時長 医疗垃圾寿命 - Tempo rifiuti + Tempo di presenza rifiuti Životnost odpadků Czas trwania Śmieci Abfall Anzeigedauer @@ -1139,8 +1196,9 @@ RCP - Chance minimale de réussite Мин. шансы успеха СЛР Szansa na powodzenie CPR - Minimum - 心肺蘇生の最低成功確率 + 心肺蘇生(CPR)の最低成功確率 HLW Minimale Erfolgschance + RCP - Prob. Successo Minima 心肺复苏的最低成功率 최소 심폐소생술 성공 가능성 RCP posibilidad mínima de resultado satisfactorio @@ -1150,8 +1208,9 @@ RCP - Chance maximale de réussite Макс. шансы успеха СЛР Szansa na powodzenie CPR - Maksimum - 心肺蘇生の最高成功確率 + 心肺蘇生(CPR)の最高成功確率 HLW Maximale Erfolgschance + RCP - Prob. Successo Massima 心肺复苏的最高成功率 최대 심폐소생술 성공 가능성 RCP posibilidad máxima de resultado satisfactorio @@ -1159,9 +1218,10 @@ Minimum probability that performing CPR will restore heart rhythm.\nThis minimum value is used when the patient has at least "Lost a fatal amount of blood".\nAn interpolated probability is used when the patient's blood volume is between the minimum and maximum thresholds. Probabilité minimale de rétablir un rythme cardiaque suite à une RCP.\nCette valeur minimale est définie pour un patient à l'état "A perdu une quantité critique de sang".\nUne interpolation est faite entre la chance minimale et maximale, en fonction du volume sanguin du patient. + Probabilità minima di successo per una RCP nel ristabilire il battito cardiaco.\nQuesto valore minimo è usato quando il paziente ha perso almeno una 'quantità fatale di sangue', una probabilità intermedia è usata per volumi di sangue intermedi. Минимальная вероятность того, что выполнение искусственного дыхания восстановит сердечный ритм.\nЭто минимальное значение используется, когда пациент, по крайней мере, получил статус "Фатальная кровопотеря".\n Интерполированная вероятность используется, когда объем крови пациента находится между минимальным и максимальным порогами. Minimalna wartość szansy na to że CPR przywróci bicie serca.\nTa minimalna wartość jest używana gdy pacjent ma status "Stracił krytyczną ilość krwi".\nInterpolowana wartość szansy jest używana gdy pacjent ma poziom krwi będący pomiędzy minimum a maksimum. - 心肺蘇生を行うことで脈拍が回復する最低成功確率を設定します。\nこの値は患者が"致命的な程失血している"時に使用されます。\n患者の血液量が最低値と最大値の間だった場合は、補完確率が適用されます。 + 心肺蘇生(CPR)を行うことで脈拍が回復する最低成功確率を設定します。\nこの値は患者が"致命的な程失血している"時に使用されます。\n患者の血液量が最低値と最大値の間だった場合は、補完確率が適用されます。 Minimale Wahrscheinlichkeit, dass die Durchführung einer HLW den Herzrhythmus wiederherstellt.\nDieser Mindestwert wird verwendet, wenn der Patient mindestens "eine tödliche Menge Blut verloren" hat.\nEine interpolierte Wahrscheinlichkeit wird verwendet, wenn das Blutvolumen des Patienten zwischen dem minimalen und dem maximalen Schwellenwert liegt. 实施心肺复苏恢复心律的最小可能性。\n当伤员至少有"致命失血量"时,就取该最小值。\n当伤员的血量介于最小和最大阈值之间时,将使用插值概率。 심폐소생술 시 제일 낮은 성공 가능성을 결정합니다.\n이 가능성은 환자가 최소 "심각한 양의 혈액을 잃음"일 때 사용됩니다. @@ -1170,9 +1230,10 @@ Maximum probability that performing CPR will restore heart rhythm.\nThis maximum value is used when the patient has at most "Lost some blood".\nAn interpolated probability is used when the patient's blood volume is between the minimum and maximum thresholds. Probabilité maximale de rétablir un rythme cardiaque suite à une RCP.\nCette valeur maximale est définie pour un patient à l'état "A perdu une faible quantité de sang".\nUne interpolation est faite entre la chance minimale et maximale, en fonction du volume sanguin du patient. + Probabilità massima di successo per una RCP nel ristabilire il battito cardiaco.\nQuesto valore massimo è usato quando il paziente ha perso meno di 'un po' di sangue', una probabilità intermedia è usata per volumi di sangue intermedi. Максимальная вероятность того, что выполнение искусственного дыхания восстановит сердечный ритм.\nЭто максимальное значение используется, когда пациент, по крайней мере, получил статус "Фатальная кровопотеря".\n Интерполированная вероятность используется, когда объем крови пациента находится между минимальным и максимальным порогами. Maksymalna wartość szansy na to że CPR przywróci bicie serca.\nTa maksymalna wartość jest używana gdy pacjent ma status "Stracił trochę krwi".\nInterpolowana wartość szansy jest używana gdy pacjent ma poziom krwi będący pomiędzy minimum a maksimum. - 心肺蘇生を行うことで脈拍が回復する最高成功確率を設定します。\nこの値は患者が"いくらか失血している"時以上の場合に使用されます。\n患者の血液量が最低値と最大値の間だった場合は、補完確率が適用されます。 + 心肺蘇生(CPR)を行うことで脈拍が回復する最高成功確率を設定します。\nこの値は患者が"いくらか失血している"時以上の場合に使用されます。\n患者の血液量が最低値と最大値の間だった場合は、補完確率が適用されます。 Maximale Wahrscheinlichkeit, dass die Durchführung einer HLW den Herzrhythmus wiederherstellt.\nDieser Maximalwert wird verwendet, wenn der Patient höchstens "Blut verloren" hat.\nEine interpolierte Wahrscheinlichkeit wird verwendet, wenn das Blutvolumen des Patienten zwischen dem minimalen und dem maximalen Schwellenwert liegt. 实施心肺复苏恢复心律的最大可能性。\n当伤员最多“失血一些”时,就取该最大值。\n当伤员的血量介于最小和最大阈值之间时,将使用插值概率。 심폐소생술 시 제일 높은 성공 가능성을 결정합니다.\n이 가능성은 환자가 최소 "혈액을 조금 잃음"일 때 사용됩니다. @@ -1181,7 +1242,8 @@ CPR Treatment Time RCP - Durée d'interaction - 心肺蘇生の動作時間 + RCP - Durata di interazione + 心肺蘇生(CPR)の所要時間 Tiempo de tratamiento de RCP Время проведения СЛР Czas potrzebny na wykonanie CPR @@ -1192,7 +1254,8 @@ Time, in seconds, required to perform CPR on a patient. Définit le temps nécessaire à la mise en œuvre d'une RCP (en secondes). - 心肺蘇生にかかる時間 (秒) を決定します。 + Tempo in secondi richiesto per effettuare RCP su un paziente. + 心肺蘇生(CPR)に掛かる時間 (秒) を決定します。 Tiempo, en segundos, requerido para realizar RCP en un paciente. Время, необходимое для проведения сердечно-лёгочной реанимации (СЛР) (в секундах). Czas w sekundach jaki jest potrzebny do wykonania CPR na pacjencie. @@ -1216,17 +1279,17 @@ Controls whether weapons must be holstered / lowered in order to perform medical actions.\nExcept Exam options allow examination actions (checking pulse, blood pressure, response) at all times regardless of this setting. - 何らかの治療をするには武器を下げるか収めるかどうかを決定します。\nなお次の診断行動は設定で例外できます: 脈拍確認、血圧測定、反応確認 + 何らかの治療をするには武器を下げるか収める必要があるかを設定します。\nなお次の診断行動は設定で例外できます: 脈拍の確認、血圧の確認、反応の確認 控制是否要先放下或把武器放入武器套才能做出醫療行為。\n除了診斷 - 允許未放下或未放入的情況下進行一連串的診斷(檢查脈搏,血壓,反應)。 控制是否要先放下或把武器放起才能做出医疗行为。\n除了诊断—允许未放下或未收起的情况下进行一连串的诊断(检查脉搏,血压,反应)。 Définit si les armes doivent être rengainées ou abaissées avant de pouvoir effectuer des actes médicaux.\nLes options "sauf examens" autorisent les examens (vérification du pouls, de la tension artérielle, de l'état de conscience) en toutes circonstances. Nastavuje zda musí být zbraň schovaná/snížená pro provádění zdravotnických úkonů.\nKromě Diagnózy - Umožňuje diagnostické akce (kontrola srdečního tepu, tlaku krve a reakci pacienta) vždy bez ohledu na nastavení schování zbraně. Kontroluje, czy broń musi być schowana/opuszczona w celu wykonania leczenia pacjenta.\n Za wyjątkiem diagnozowania - umożliwia wykonywanie czynności kontrolnych (sprawdzanie tętna, ciśnienia krwi, reakcji) przez cały czas, niezależnie od ustawienia Wymagana broń w kaburze. - Controlla se le armi devono essere tenute nella fondina / abbassate per poter eseguire le azioni mediche.\Except Exam - Permette azioni di esame (controllo del polso, della pressione sanguigna, della risposta) in ogni momento indipendentemente dall'impostazione della fondina richiesta. + Controlla se le armi devono essere tenute nella fondina / abbassate per poter eseguire le azioni mediche.\Eccetto l'esame - Permette azioni di esame (controllo del polso, della pressione sanguigna, della risposta) in ogni momento indipendentemente dall'impostazione della fondina richiesta. Kontrolliert, ob Waffen geholstert/gesenkt werden müssen, um medizinische Aktionen durchzuführen.\nAusgenommen die eingestellten Untersuchungsoptionen erlauben Diagnose-Aktionen (Überprüfung von Puls, Blutdruck, Reaktion) jederzeit. Нужно ли убирать оружие для проведения медицинских действий.\nОпция «Проверка разрешена» разрешает проверять пульс, кровяное давление или реакцию независимо от этого параметра. Controla si las armas deben estar enfundadas / bajadas para realizar acciones médicas. \n Excepto Las opciones de examen permiten acciones de examen (control del pulso, presión arterial, respuesta) en todo momento, independientemente de esta configuración. - 치료하기에 앞서 손에서 무기를 집어넣을 지/내릴 지를 결정합니다.\n검사제외 옵션의 경우 맥박 확인, 혈압 확인, 반응 확인은 앞선 옵션에 구애받지 않고 사용할 수 있습니다. + 치료하기에 앞서 손에서 무기를 집어넣을 지/내릴지를 결정합니다.\n검사제외 옵션의 경우 맥박 확인, 혈압 확인, 반응 확인은 앞선 옵션에 구애받지 않고 사용할 수 있습니다. Lowered or Holstered @@ -1234,7 +1297,7 @@ 放低或者收起 放低或者收起 Abaisser ou rengainer - Abbassato o con fondina + Abbassato o nella fondina Snížena nebo Schována Opuszczona lub w kaburze Gesenkt oder Geholstert @@ -1248,7 +1311,7 @@ 放低或者收起(除了診斷) 放低或者收起(除了诊断) Abaisser ou rengainer (sauf examens) - Abbassato o con la fondina (eccetto l'esame) + Abbassato o nella fondina (eccetto l'esame) Snížena nebo Schována (kromě Diagnózy) Opuszczona lub w kaburze (oprócz diagnozowania) Gesenkt oder Geholstert (Ausnahme Untersuchung) @@ -1262,7 +1325,7 @@ 只能收起 只能收起 Rengainer seulement - Solo con la fondina + Solo nella fondina Pouze Schována Tylko w Kaburze Nur geholstert @@ -1276,7 +1339,7 @@ 只能收起(除了診斷) 只能收起(除了诊断) Rengainer seulement (sauf examens) - Solo fondina (eccetto esame) + Solo nella fondina (eccetto esame) Pouze Schována (kromě Diagnózy) Tylko w Kaburze (oprócz diagnozowania) Nur geholstert (Ausnahme Untersuchung) @@ -1294,7 +1357,7 @@ [ACE] Caixa com suprimentos médicos [ACE] Caisse médicale (basique) [ACE] Orvosi láda (Alap) - [ACE] Cassa Rifornimenti Medici (Basico) + [ACE] Cassa Rifornimenti Medici (Basici) [ACE] 医療物資箱 (ベーシック) [ACE] 의료 물자 (기본) [ACE] 医疗补给箱(基础) @@ -1311,7 +1374,7 @@ [ACE] Caixa com suprimentos médicos (Avançados) [ACE] Caisse médicale (avancée) [ACE] Orvosi láda (Fejlett) - [ACE] Cassa Rifornimenti Medici (Avanzato) + [ACE] Cassa Rifornimenti Medici (Avanzati) [ACE] 医療物資箱 (アドバンスド) [ACE] 의료 물자 (고급) [ACE] 医疗补给箱(高级) @@ -1321,13 +1384,13 @@ Whether or not the object will be a medical vehicle. Czy pojazd ma być pojazdem medycznym? - L'oggetto in questione sarà un veicolo medico o meno. + Se l'oggetto in questione sarà un veicolo medico. Legt fest, ob das Objekt ein Sanitätsfahrzeug ist. Es un vehículo médico? Définit s'il s'agit d'un véhicule sanitaire. Se o objeto será ou não um veículo médico Будет ли объект считаться медицинским транспортом. - どれでも、またはオブジェクトを医療車両として割り当てます。 + 対象が医療車両であるかどうか。 이 물체는 의료 차량이 됩니다. 是否使该载具为医疗载具? 是否使該載具為醫療載具? @@ -1343,7 +1406,7 @@ Lékařský výcvik Treino médico Медицинская подготовка - 衛生訓練 + ユニットの医療スキルのレベルを定義します。 의료 훈련 医疗训练 醫療訓練 @@ -1359,8 +1422,8 @@ É médico Qualification médicale Orvos-e - E' Medico - 衛生兵に + È Medico + 衛生兵にする 의무병 是医疗兵 是醫療兵 @@ -1376,8 +1439,8 @@ Ez a modul engedélyezi az orvosi jelző hozzárendelését kiválasztott egységekhez. Этот модуль позволяет назначить класс медика выбранным юнитам. Este módulo permite asignar la clase médico a las unidades seleccionadas. - Questo modulo ti permette di assegnare la classe Medico alle unità selezionate. - 選択されたユニットを衛生兵として指定します。 + Questo modulo ti permette di assegnare la classe di Medico alle unità selezionate. + このモジュールは選択されたユニットを衛生兵として指定します。 이 모듈로 선택한 유닛을 의무병으로 만들 수 있습니다. 本模块可让被同步的单位成为医疗兵 本模塊可讓被同步的單位成為醫療兵 @@ -1411,7 +1474,7 @@ Infirmier Hagyományos orvos Medico Regolare - 通常の衛生兵 + 一般衛生兵 의무병 普通医疗兵 普通醫療兵 @@ -1427,7 +1490,7 @@ É um veículo médico Est un véhicule sanitaire Orvosi jármű-e - E' Veicolo Medico + È Veicolo Medico 医療車両に 의료 차량 是医疗载具 @@ -1444,7 +1507,7 @@ É uma instalação médica Est une installation sanitaire Orvosi létesítmény-e - E' Struttura Medica + È Struttura Medica 医療施設に 의료시설 是医疗设施 @@ -1478,7 +1541,7 @@ Médecin (uniquement en médecine avancée) Doktor (csak fejlett orvosok) Dottore (Solo Medici Avanzati) - 医師 (アドバンスド医療のみ) + 医師 (上級衛生兵のみ) 군의관 (오직 고급 의료에서만) 军医(只限进阶医疗系统) 軍醫 (只限進階醫療系統) @@ -1509,9 +1572,9 @@ Bandaż (jałowy) Obvaz (Standardní) Kötszer (Általános) - Bendaggio (base) + Bendaggio (Base) Bandagem(Básico) - 包帯 (緊急圧迫) + 包帯 (緊急圧迫止血) 붕대 (기본) 绷带(基础型) 基礎繃帶 @@ -1528,7 +1591,7 @@ Usato per coprire una ferita Usado para cobrir um ferimento Slouží k překrytí poranění - 傷口を覆います + 傷を覆うために使用される 상처를 덮을 때 씁니다 用于覆盖伤口 用於覆蓋傷口 @@ -1542,10 +1605,10 @@ Pansement utilisé pour couvrir une blessure lorsque le saignement a été stoppé. Opatrunek materiałowy, używany do przykrywania ran, zakładany na ranę po zatamowaniu krwawienia. Egy különleges anyagú kötszer sebek betakarására, amelyet a vérzés elállítása után helyeznek fel. - Una benda apposita, utilizzata per coprire una ferita, la quale viene applicata su di essa una volta fermata l'emorragia. + Un bendaggio fatto apposta per coprire una ferita una volta fermata l'emorragia. Uma curativo, material específico para cobrir um ferimento que é aplicado assim que o sangramento é estancando. Obvaz je vhodným způsobem upravený sterilní materiál, určený k překrytí rány, případně k fixaci poranění. - 傷口を血液凝固剤で塞ぐようにできていて、使うと出血の原因を取りさります。 + 包帯(被覆材)、これは傷口を覆うためもので、傷口の上に貼ると出血を食い止める。 드레싱, 출혈을 막고서 상처를 덮기위해 쓰는 물건입니다. 用于覆盖伤口以防止出血,透过敷料的止血剂来让出血慢慢停止 用於覆蓋傷口以防止出血, 透過敷料的止血劑來讓出血慢慢停止 @@ -1559,7 +1622,7 @@ Bande compressive Bandaż (uciskowy) Nyomókötszer - Bendaggio compressivo + Bendaggio (Compressivo) Bandagem de Compressão Obvaz (Tlakový) 包帯 (弾性) @@ -1576,10 +1639,10 @@ Utilisée pour panser les moyennes et grosses plaies, et freiner le saignement. Używany w celu opatrywania średnich i dużych ran oraz tamowania krwawienia. Dobrze radzi sobie z tamowaniem ran płatowych oraz postrzałowych. Közepestől nagyig terjedő sebek betakarására és vérzés elállítására használt kötszer - Usato su ferite medie o larghe per fermare emorragie. + Usato su ferite medie o grandi per fermare emorragie. Usado para o preenchimento de cavidades geradas por ferimentos médios e grandes e estancar o sangramento. Používá se k zastavení středních až silnějších krvácení - 粘着フィルム状で、普通から大きめなケガに使い止血します。 + 中程度から大きな傷の手当てと止血に使用される 중형 또는 대형 상처를 채우고 출혈을 막기 위해 쓰입니다, 用于包扎中到大型伤口,并防止出血 用於包紮中到大型傷口, 並防止出血 @@ -1592,11 +1655,11 @@ Pansement utilisé pour enrayer le saignement et faciliter la cicatrisation de la plaie.\nComprimer une blessure est une option intéressante en cas de grands polytraumatismes. Opatrunek stosowany w celu zatrzymania krwawienia i osłony większych ran. Egy kötszerfajta, melyet a sebek nyomására használnak a vérzés elállítása és sebgyógyulás érdekében. A nyomókötés egy lehetőség nagyobb polytraumatikus sérülések esetén. - Un bendaggio usato per coprire la ferita, fermare il sanguinamento e facilitarne la guarigione. Questa tecnica è opzionale su ferite multiple. + Un bendaggio usato per coprire la ferita, fermare il sanguinamento e facilitarne la guarigione. Comprimere la ferita è una delle opzioni per gestire ferite politraumatiche. Ein Verband, um die Wunde abzudecken und die Wundheilung zu fördern. Wunden abdecken ist eine Option bei größeren Polytraumen Uma bandagem usada para preencher o ferimento para estancar o sangramento e facilitar a cicatrização. Preenchimento de feridas é uma opção em ferimentos de politrauma grandes. Tlakový obvaz se skládá se ze sterilní krycí vrstvy, na kterou je přiložena silná vrstva savého materiálu stlačující cévu v ráně a která je přitlačována k ráně a připevněna obinadlem. Slouží k zastavení silnějších krvácení. - 包帯を使うと出血元を塞ぎ、怪我の治癒を促進させます。また大きめ多発性外傷に対しても使えます。 + 出血を止め、創傷の治癒を促進するために創傷を包む包帯。大きな多発外傷では、創部を包帯で覆うこともある。 출혈을 막고 상처를 치유하기 위한 붕대. 다발성외상의 경우 상처를 싸매는 것도 한 가지 방법입니다. 用于包扎中到大型伤口,并防止出血, 为在大型多处性伤口的选项之一! 用於包紮中到大型傷口, 並防止出血, 為在大型多處性傷口的選項之一! @@ -1611,7 +1674,7 @@ Bandaż (elastyczny) Obvaz (Elastický) Rögzító kötszer - Benda (elastica) + Benda (Elastica) Bandagem (Elástica) 包帯 (伸縮) 붕대 (압박) @@ -1630,7 +1693,7 @@ Kit di bendaggio, elastico Kit de Bandagem, Elástica Sada obvazů, Elastická - 包帯キット (伸縮) + 包帯キット, 伸縮性 압박 붕대 키트 绷带(弹性型) 一個彈性繃帶包 @@ -1644,10 +1707,10 @@ Elastyczna opaska podtrzymująca opatrunek oraz usztywniająca okolice stawów. Brinda una compresión uniforme y ofrece soporte extra a una zona lesionada Egyenletes nyomást és támogatást biztosít a sebesült felületnek. - Permette di comprimere e aiutare la zone ferita. + Consente compressione uniforme e supporto aggiuntivo della zona ferita. Esta bandagem pode ser utilizada para comprimir o ferimento e diminuir o sangramento e garantir que o ferimento não abra em movimento. Hodí se k fixačním účelům a to i v oblastech kloubů. - 負傷部分へ最大の対応と止血を続けられます。 + 負傷部位を均等に圧迫し、保護する。 부상 부위를 골고루 압박해주면서 동시에 고정시켜 줍니다. 可对伤口持续压迫并固定以防止伤口情况变严重 可對傷口持續壓迫並固定以防止傷口情況變嚴重 @@ -1662,7 +1725,7 @@ Staza taktyczna (CAT) Škrtidlo (CAT) Érszorító (CAT) - Laccio emostatico (CAT) + Laccio Emostatico (CAT) Torniquete (CAT) 止血帯 (CAT) 지혈대 [CAT] @@ -1678,10 +1741,10 @@ Zmniejsza ubytek krwi z kończyn w przypadku krwawienia. Nie może być noszony zbyt długo ze względu na narastający ból z kończyny. Verringert den Blutverlust Lelassítja a vérvesztést vérzés esetén - Rallenta la perdita di sangue in caso di sanguinamento + Rallenta la perdita di sangue da un arto Reduz a velocidade da perda de sangue Zpomaluje ztráty krve při krvácení - 出血時の失血を抑えます。 + 出血時の失血を抑える 출혈 시 혈액손실을 늦춰줍니다 减缓失血速度 減緩失血的速度 @@ -1695,10 +1758,10 @@ Opaska uciskowa CAT służy do tamowanie krwotoków w sytuacji zranienia kończyn z masywnym krwawieniem tętniczym lub żylnym. Ein Hilfsmittel, das Druck auf Venen und Arterien ausübt und so den Blutfluss verringert. Egy szűkítőeszköz, mely a vénás és artériás nyomás keringés helyi összenyomására szolgál, ezzel lelassítva vagy megállítva az adott területen a vérkeringést. Ez csökkenti a vérvesztés mértékét. - Un laccio emostatico usato per comprimere le vene e arterie per bloccare o rallentare la circolazione del sangue e quindi rallentare dissanguamenti. + Un laccio emostatico usato per comprimere le vene e arterie per bloccare o rallentare la circolazione del sangue in un arto e quindi rallentare dissanguamenti. A aparelho que comprime as artérias e veias para diminuir a perda de sangue. Zařízení používané ke stlačení venózního a arteriálního oběhu. V důsledku dochází ke zpomalení toku krve a tedy i snížení ztrát krve. - 静脈と動脈の循環を圧迫し、血流を抑制または減速させ、出血時の失血を抑えます。 + 静脈と動脈の循環を圧迫するために使用される収縮装置で、実質的に血流を抑制または減速させ、血液の損失を減少させる。 정맥과 동맥을 압축시키켜 혈액순환을 억제 혹은 늦추게하여 혈액손실을 줄이는 도구입니다. 用于压迫静脉与动脉的血液流动,以达到减缓失血速度的目的 用於壓迫靜脈與動脈的血液流動, 達到減緩失血速度的目的 @@ -1723,7 +1786,7 @@ Stabilizes a fractured limb Стабилизирует перелом конечности - 骨折部位を安定させます。 + 骨折した四肢を保持させる Stabilise un membre fracturé. Estabiliza um membro fraturado. 固定骨折的部位 @@ -1745,10 +1808,10 @@ Autostrzykawka z morfiną Auto-morfin Morfium autoinjektor - Autoiniettore di morfina + Autoiniettore di Morfina Auto-injetor de morfina - モルヒネ注射器 - 모르핀 자동주사기 + モルヒネ自動注射器 + 자동주사기 (모르핀) 吗啡自动注射器 嗎啡自動注射器 Morfin otomatik enjektör @@ -1764,7 +1827,7 @@ Usato per combattere il dolore. Usado para combater dores moderadas e severas Slouží k tlumení středně těžkých a těžkých bolestí - 中等度から重度の痛みに対処するために使用される。 + 中等度から重度の痛みに対処するために使用される 심한 통증을 완화하는데 쓰입니다 用于削减中度至重度疼痛 減低中度至重度的疼痛感 @@ -1791,12 +1854,12 @@ Asenosina auto-inyectable Autostrzykawka z adenozyną Auto-injecteur d'adénosine - Autoiniettore di adenosina + Autoiniettore di Adenosina Auto-adenosine Auto-injetor de Adenosina Аденозин в пневмошприце - アデノシン注射器 - 아데노신 자동주사기 + アデノシン自動注射器 + 자동주사기 (아데노신) 腺苷自动注射器 腺苷自動注射器 Adenosin otomatik enjektörü @@ -1807,11 +1870,11 @@ Utilizada para contrarrestar los effectos de la Epinefrina Adenozyna. Stosowana do zwalczania efektów działania adrenaliny. Utilisé pour contrer les effets de l'épinéphrine. - Usato per contrastare l'effetto dell'epinefrina + Usato per contrastare l'effetto dell'Epinefrina Slouží jako protiváha Adrenalinu Usado para combater os efeitos da Epinefrina Используется для купирования эффектов адреналина - アドレナリンの反対の効果として使います。 + アドレナリンの作用に対抗するために使用される 에피네프린 대응책으로 쓰입니다 用于中和肾上腺素的影响 用來對付腎上腺素的影響 @@ -1822,11 +1885,11 @@ Medicamento usado para contrarrestar los efectos de la Epinefrina. Organiczny związek chemiczny z grupy nukleozydów. Skuteczna w leczeniu częstoskurczu komorowego. Działa rozszerzająco na naczynia krwionośne. Un composé utilisé pour contrer les effets de l'épinéphrine. - Medicamento usato per contrastare l'effetto dell'epinefrina + Medicamento usato per contrastare l'effetto dell'Epinefrina Droga používaná k tlumení efektu Adrenalinu Uma droga usada para combater os efeitos da Epinefrina Препарат используется для купирования эффектов адреналина - 使うとアドレナリンと反対の効果が出ます。 + アドレナリンの作用に対抗するために使用される薬品。 에피네프린에 대응용으로 쓰이는 약품 一种用于中和肾上腺素效果的药物 一種藥物用於減低腎上腺素的效果 @@ -1840,10 +1903,10 @@ Atropin-Autoinjektor Auto-atropine Atropin autoinjektor - Autoiniettore di atropina + Autoiniettore di Atropina Auto-injetor de Atropina - アトロピン注射器 - 아트로핀 자동주사기 + アトロピン自動注射器 + 자동주사기 (아트로핀) 阿托品自动注射器 阿托品自動注射器 Atropin otomatik enjektör @@ -1859,7 +1922,7 @@ Usato in situazioni con gas nervino. Usado em casos de ataque QBRN Používá se v přítomnosti nervových plynů - 核・生物・化学兵器による汚染環境下にて使います。 + 核・生物・化学兵器(NBC)による汚染環境下で使用される 화생방 상황에 쓰입니다 使用于核生化污染的情况 使用於核生化汙染的情況 @@ -1875,7 +1938,7 @@ E' un farmaco usato in ambito militare in scenari con presenza di gas nervino. Uma droga usada por militares em casos de ataque QBRN. Atropin slouží jako protijed na otravu organofosfátovými insekticidy (diazinon) a nervovými plyny. - 核・生物・化学兵器による汚染環境下にて使います。 + 核・生物・化学兵器(NBC)による汚染環境下で軍が使用する薬品。 화생방 상황에 쓰이는 군용 약품 军用神经解毒针,用来应付核生化污染的情况。 軍用神經解毒針, 用來應付核生化汙染的情況. @@ -1889,10 +1952,10 @@ Epiniphrin-Autoinjektor Auto-adrenalin Epinefrin autoinjektor - Autoiniettore di adrenalina + Autoiniettore di Epinefrina Auto-injetor de epinefrina - アドレナリン注射器 - 에피네프린 자동주사기 + アドレナリン自動注射器 + 자동주사기 (에피네프린) 肾上腺素自动注射器 腎上腺素自動注射器 Epinefrin otomatik enjektör @@ -1908,7 +1971,7 @@ Aumenta il battito cardiaco e combatte gli effetti di reazioni allergiche. Aumenta a frequência cardíaca e combate efeitos causados por reações alérgicas Zvyšuje srdeční frekvenci a chrání před alergickými reakcemi - 脈拍数を増加させたり、アレルギー反応を収める効果もあります。 + 心拍数を増加させ、アレルギー反応に対抗する作用を持つ 심박수를 높이며 알러지 반응의 대응책입니다 用于提升心率的一种药物 增加心跳速率的一種藥物 @@ -1924,7 +1987,7 @@ Uma droga trabalha dilatando os bronquios, aumentando a frequência cardíaca e combate efeitos de reações alérgicas(anáfilaticas). Usado em casos de parada cardiaca com poucas changes de recuperação. Egy hormon, mely a szimpatikus idegrendszer által kitágítja a hörgőket, valamint megnöveli a szívverést, ezzel ellensúlyozva ilyen jellegű allergiás reakciókat (anafilaxiás sokk). Hirtelen szívmegállás esetén is használt, idő alatt csökkenő hatásfokkal. Zúžení periferních cév díky působení na alfa receptory a následné kontrakci hladkých svalů, tím dochází k tzv. centralizaci oběhu, krev se soustřeďuje v životně důležitých centrálních orgánech (srdce, mozek, plíce), působí také pozitivně na srdeční činnost a dochází ke zvýšení krevního tlaku a tepu. Dále se používá při náhlé srdeční zástavě. - 気管支を拡張するよう交感神経を拡張させ、脈拍数を増加させます。それにアレルギー反応を収める効果もあります (アナフィラキシー ショック)。得られる効果は少ないですが、心停止している場合などにも使われます。 + 交感神経反応に作用して気管支を拡張し、心拍数を増加させる。また、アレルギー反応(アナフィラキシー)に対抗する作用も持つ薬品。治療効果が高くはないが、心停止の患者に用いることもできる。 기관지를 확장시키고 교감 신경 반응을 이끌어내는 약물로써, 심박을 높이고 알러지 효과(과민증)에 대응합니다. 심정지의 경우 호전이 되지 않을 때 사용합니다. 俗称强心针,为一种支气管扩张药物, 会增加心跳速率并减缓过敏反应(过敏性休克), 在心跳骤停时有恢复心跳的效果! 俗稱強心針, 為一種支氣管擴張藥物, 會增加心跳速率並減緩過敏反應(過敏性休克), 在心跳驟停時有恢復心跳的效果! @@ -1940,7 +2003,7 @@ Plasma EV (1000ml) Plasma IV (1000ml) Krevní plazma (1000ml) - 血しょう IV (1000ml) + 血漿 IV (1000ml) 혈장 IV (1000ml) 血浆(1000毫升) 血漿 (1000毫升) @@ -1988,7 +2051,7 @@ Plasma EV (500ml) Plasma IV (500ml) Krevní plazma (500ml) - 血しょう IV (500ml) + 血漿 IV (500ml) 혈장 IV (500ml) 血浆(500毫升) 點滴 (血漿 500毫升) @@ -2005,7 +2068,7 @@ Plasma EV (250ml) Plasma IV (250ml) Krevní plazma (250ml) - 血しょう IV (250ml) + 血漿 IV (250ml) 혈장 IV (250ml) 血浆(250毫升) 點滴 (血漿 250毫升) @@ -2103,7 +2166,7 @@ Sól fizjologiczna IV (1000ml) Kochsalzlösung (1000ml) 0,9%-os sósvíz-infúzió (1000ml) - Soluzione salina EV (1˙000ml) + Soluzione salina EV (1000ml) Soro IV (1000ml) Fyziologický roztok (1000ml) 生理食塩水 IV (1000ml) @@ -2135,7 +2198,7 @@ Un agent médical permettant de reconstituer le volume sanguin.\nÀ administrer par perfusion intraveineuse. Używany w medycynie w formie płynu infuzyjnego jako środek nawadniający i uzupełniający niedobór elektrolitów, podawany dożylnie (IV). Egy orvosi térfogat-helyreállító készítmény, melyet intravénás módon lehet a szervezetbe juttatni. - Una soluzione medica per ripristinare il volume del sangue introdotta tramite trasfusione EV. + Una soluzione medica per ripristinare il volume del sangue, introdotta tramite trasfusione EV. Ein medizinisches Volumenersatzmittel, dass durch einen intravenösen Zugang in den Blutkreislauf verabreicht wird. Uma reposição temporaria para restaurar a pressão arterial perdida por perda de sangue. Fyziologický roztok se využívá nejčastěji jako infuze při dehydrataci organismu. @@ -2186,7 +2249,7 @@ Opatrunek QuikClot ACS Bandage (QuikClot) Általános zárókötszer (QuikClot) - Bendaggio emostatico (QuikClot) + Bendaggio Emostatico (QuikClot) Bandagem básica (Coagulante) Hemostatický obvaz (QuikClot) 包帯 (クイッククロット) @@ -2202,10 +2265,10 @@ Proszkowy opatrunek adsorbcyjny przeznaczony do tamowania zagrażających życiu krwawień średniej i dużej intensywności. Bandage mit Gerinnungsmittel QuikClot kötszer - Bendaggio emostatico (QuikClot) + Bendaggio Emostatico (QuikClot) Bandagem com agente coagulante Hemostatický obvaz (QuikClot) - クイッククロット + クイッククロット包帯 퀵 클롯 붕대 绷带(止血型) 止血粉繃帶 @@ -2222,7 +2285,7 @@ Bendaggio emostatico con coagulante che permette di arrestare perdite di sangue Bandagem Hemostática com coagulante que controla hemorragia médias e grandes com risco de vida. Hemostatický obvaz určený k zástavě krvácení - 血液凝固剤を含む包帯により、止血できます。 + 出血を止める凝固剤入りの止血包帯。 지혈 시 사용하는 붕대로 혈액 응고제를 포함하고 있습니다. 包含止血粉成分的止血绷带,可用于止血 包含止血粉成分的止血繃帶, 可用於止血 @@ -2235,10 +2298,10 @@ Apteczka osobista Persönliches Erste-Hilfe-Set Elsősegélycsomag - Pronto soccorso personale + Kit di Pronto Soccorso (PAK) Kit De Primeiros Socorros Pessoal Osobní lékárnička (PAK) - 応急処置キット + 個人用治療キット (PAK) 개인응급키트 个人急救包 個人急救包 @@ -2255,7 +2318,7 @@ Include vario materiale medico per trattamenti avanzati. Inclui vários tratamentos materiais para custura e tratamento avançado Osobní lékárnička obsahuje zdravotnický materiál umožňující šití a pokročilejší ošetřování raněných - 縫合や高度な処置に必要とされる、様々な治療器具が含まれています。 + 縫合や高度な処置に必要とされる様々な治療器具が含まれている 봉합 및 고급 조치에 필요한 다양한 치료 도구가 있습니다. 包含各种医疗套件,以及进阶伤口系统需要的缝合用品 包含各種醫療套件, 以及進階傷口系統需要的縫合用品 @@ -2272,7 +2335,7 @@ Kit de primeiros socorros para sutura ou tratamentos avançados Osobní lékárnička obsahuje zdravotnický materiál umožňující šití a pokročilejší ošetřování raněných v poli Pronto soccorso personale da campo per mettersi i punti o per trattamenti avanzati. - 戦場で縫合や高度な処置に必要とされる、様々な治療器具が含まれています。 + 個人用治療キット (PAK) は戦場での縫合や高度な処置に必要です 야전에서 봉합 및 고급 조치를 위한 개인응급키트 个人急救包可用于战地缝合手术或进阶伤口系统使用 個人急救包可用於戰地縫合手術或進階醫療用 @@ -2288,8 +2351,8 @@ Elsősegélycsomag használata Usar o kit de primeiros socorros Použít osobní lékárničku (PAK) - Usa il pronto soccorso personale - 応急処置キットを使う + Usa il Kit di Pronto Soccorso (PAK) + 個人用治療キットを使う 개인응급키트 사용 使用个人急救包 使用個人急救包 @@ -2306,7 +2369,7 @@ Kit chirurgico Kit Cirurgico Chirurgická sada - 縫合キット + 手術キット 봉합 키트 手术包 手術包 @@ -2323,7 +2386,7 @@ Kit chirurgico per trattamenti avanzati sul campo. Kit Cirurgico para uso de tratamento médico avançado em campo Chirurgická sada určená k pokročilejším zdravotnickým zákrokům v poli - 縫合キットは戦場で高度な処置をする為に使われます。 + 手術キットは戦場で高度な処置をする為に用いる 야전 상황에서 고급 의료 처치를 위해 사용되는 봉합 키트 用于在战场上为伤口进行缝合(需要开启进阶伤口系统) 用於在戰場上為傷口進行縫合 @@ -2340,7 +2403,7 @@ Kit chirurgico per trattamenti avanzati sul campo. Kit Cirurgico para uso de tratamento médico avançado em campo. Chirurgická sada určená k pokročilejším zdravotnickým zákrokům v poli - 縫合キットは戦場で高度な処置をする為に使われます。 + 手術キットは戦場で高度な処置をする為に用いる 야전 상황에서 고급 의료 처치를 위해 사용되는 봉합 키트 用于在战场上为伤口进行缝合(需要开启进阶伤口系统) 用於在戰場上為傷口進行縫合 @@ -2356,8 +2419,8 @@ Usar equipo quirúrgico Sebészeti készlet használata Použít chirurgickou sadu - Usar kit cirúrgico - 縫合キットを使う + Usar Kit Cirúrgico + 手術キットを使う 봉합키트 사용하기 使用手术包 使用手術包 @@ -2366,26 +2429,32 @@ Suture Naht + Sutura Sutura - 縫合糸 + 糸付縫合針 Szew 봉합술 + Suture Surgical Suture for stitching injuries. Chirurgisches Nahtmaterial zum Nähen von Wunden. + Sutura chirurgica per cucire ferite. Sutura quirúrjica para heridas de puntos. - 傷害縫合用の外科縫合糸。 + 傷害縫合用の外科糸付縫合針。 Szew chirurgiczny do zszywania ran. 상처를 꿰메는 수술용 봉합술. + Suture chirurgicale pour suturer les blessures. Surgical Suture for stitching injuries. Chirurgisches Nahtmaterial zum Nähen von Wunden. + Sutura chirurgica per cucire ferite. Sutura quirúrjica para heridas de puntos. - 傷害縫合用の外科縫合糸。 + 傷害縫合用の外科糸付縫合針。 Szew chirurgiczny do zszywania ran. 상처를 꿰메는 수술용 봉합술. + Suture chirurgicale pour suturer les blessures. Bodybag @@ -2398,7 +2467,7 @@ Sacca per corpi Saco para cadáver Pytel na mrtvoly - 死体袋 + 遺体袋 시체 운반용 부대 尸袋 屍袋 @@ -2412,10 +2481,10 @@ Worek do pakowania zwłok Ein Leichensack für Tote Egy hullazsák a holttestek számára - Una sacca nera per trasportare cadaveri. + Una sacca per trasportare cadaveri. Um saco para corpos mortos Pytel na mrtvoly - 死体袋は死体を入れる為に使います。 + 死体のための遺体袋 시체를 운반할 때 쓰는 가방입니다 用于装尸体 用來裝屍體用 @@ -2429,10 +2498,10 @@ Worek do pakowania zwłok Ein Leichensack für Tote Egy hullazsák a holttestek számára - Una sacca nera per trasportare cadaveri. + Una sacca per trasportare cadaveri. Um saco para corpos mortos. Pytel na mrtvoly - 死体袋は死体を入れる為に使います。 + 死体のための遺体袋 시체를 운반할 때 쓰는 가방입니다 用于装尸体 用來裝屍體用 @@ -2461,11 +2530,11 @@ Inyectar Adenosina Wstrzyknij adenozynę Adénosine - Inietta andenosina + Inietta Adenosina Aplikovat adenosine Injetar Adenosina Ввести аденозин - アデノシンを投与 + アデノシンを注射 아데노신 주사하기 注射腺苷 注射腺苷 @@ -2480,9 +2549,9 @@ Atropine Ввести атропин Atropin beadása - Inietta atropina + Inietta Atropina Injetar Atropina - アトロピンを投与 + アトロピンを注射 아트로핀 주사하기 注射阿托品 注射阿托品 @@ -2498,8 +2567,8 @@ Ввести адреналин Epinefrin beadása Injetar Epinefrina - Inietta adrenalina - アドレナリンを投与 + Inietta Epinefrina + アドレナリンを注射 에피네프린 주사하기 注射肾上腺素 注射腎上腺素 @@ -2515,8 +2584,8 @@ Morphine Morfium beadása Injetar Morfina - Inietta morfina - モルヒネを投与 + Inietta Morfina + モルヒネを注射 모르핀 주사하기 注射吗啡 注射嗎啡 @@ -2533,7 +2602,7 @@ Infúzió (vér) Transfundir Sangue Trasfusione di sangue - 輸血する + 血液を投与 혈액 수혈 输入血液 輸血液 @@ -2550,7 +2619,7 @@ Infúzió (vérplazma) Trasfusione di plasma Transfundir Plasma - 血しょうを投与 + 血漿を投与 혈장 수혈 输入血浆 輸血漿 @@ -2601,7 +2670,7 @@ Kötözés Atadura Перевязать - 包帯 + 包帯を巻く 붕대 包扎 繃帶 @@ -2618,7 +2687,7 @@ Fej kötözése Atar Cabeça Benda la testa - 包帯を頭へ + 包帯を頭部へ巻く 머리에 붕대 감기 包扎头部 繃帶包紮 頭部 @@ -2635,7 +2704,7 @@ Testtörzs kötözése Atar Tronco Benda il torso - 包帯を胴体へ + 包帯を胴体へ巻く 몸통에 붕대 감기 包扎躯干 繃帶包紮 身體 @@ -2652,7 +2721,7 @@ Bal kar kötözése Atar Braço Esquerdo Benda il braccio sinistro - 包帯を左腕に + 包帯を左腕へ巻く 왼팔에 붕대 감기 包扎左臂 繃帶包紮 左手 @@ -2669,7 +2738,7 @@ Jobb kar kötözése Atar Braço Direito Benda il braccio destro - 包帯を右腕に + 包帯を右腕へ巻く 오른팔에 붕대 감기 包扎右臂 繃帶包紮 右手 @@ -2686,7 +2755,7 @@ Bal láb kötözése Atar Perna Esquerda Benda la gamba sinistra - 包帯を左足へ + 包帯を左足へ巻く 왼쪽 다리에 붕대 감기 包扎左腿 繃帶包紮 左腳 @@ -2703,7 +2772,7 @@ Jobb láb kötözése Atar Perna Direita Benda la gamba destra - 包帯を右足へ + 包帯を右足へ巻く 오른쪽 다리에 붕대 감기 包扎右腿 繃帶包紮 右腳 @@ -2719,7 +2788,7 @@ Injection (morphine)... Morfium beadása... Injetando Morfina... - Inietto la morfina... + Iniettando Morfina... モルヒネを投与しています・・・ 모르핀 주사 중... 正在注射吗啡... @@ -2736,7 +2805,7 @@ Injection (épinéphrine)... Epinefrin beadása... Injetando Epinefrina... - Inietto l'adrenalina... + Iniettando Epinefrina... アドレナリンを投与しています・・・ 에피네프린 주사 중... 正在注射肾上腺素... @@ -2749,7 +2818,7 @@ Inyectando Adenosina... Wstrzykiwanie adenozyny... Injection (adénosine)... - Inietto l'andenosina + Iniettando Adenosina... Aplikuji adenosine... Injetando Adenosina... Введение аденозина... @@ -2768,7 +2837,7 @@ Injection (atropine)... Введение атропина... Atropin beadása... - Inietto l'atropina... + Iniettando Atropina... Injetando Atropina アトロピンを投与しています・・・ 아트로핀 주사 중... @@ -2787,7 +2856,7 @@ Infúzió vérrel... Transfundindo Sangue... Effettuo la trasfusione di sangue... - 輸血しています・・・ + 血液を投与しています・・・ 혈액 수혈 중... 正在输入血液... 輸血液中 ... @@ -2802,7 +2871,7 @@ Transfusion (solution saline)... Переливание физраствора... Infúzió sós vizzel... - Effettuo la rasfusione di soluzione salina + Effettuo la trasfusione di soluzione salina Transfundindo Soro... 生理食塩水を投与しています・・・ 생리식염수 수혈 중... @@ -2819,9 +2888,9 @@ Transfusion (plasma)... Переливание плазмы... Infúzió vérplazmával... - Effettu la trasfusione di plasma... + Effettuo la trasfusione di plasma... Transfundindo Plasma... - 血しょうを投与しています・・・ + 血漿を投与しています・・・ 혈장 수혈 중... 正在输入血浆... 輸血漿中 ... @@ -2834,7 +2903,7 @@ Bandażowanie... Obvazuji... Pansement... - Sto bendando... + Bendando... Bekötözés... Atando... Перевязывание... @@ -2853,8 +2922,8 @@ Pose du garrot... Наложение жгута... Érszorító felhelyezése... - Sto applicando il laccio emostatico... - Applicando Torniquete + Applicando il laccio emostatico... + Aplicando Torniquete... 止血帯を巻いています・・・ 지혈대 적용 중... 正在使用止血带... @@ -2870,9 +2939,9 @@ Bandaż jałowy Pansement individuel Zárókötszer - Bendaggio rapido + Bendaggio Rapido Curativo de Campo - 包帯を巻く (緊急圧迫) + 緊急圧迫止血包帯 붕대 (기본) 绷带(基础型) 基礎繃帶 @@ -2884,11 +2953,11 @@ Компресионный пакет Bandaż uciskowy Nyomókötszer - Bendaggio compressivo + Bendaggio Compressivo Bandage compressif Bandagem de Compressão Obvaz Tlakový - 包帯を巻く (弾性) + 弾性包帯 붕대 (거즈) 绷带(包扎型) 包紮繃帶 @@ -2903,9 +2972,9 @@ Bandaż elastyczny Bandage extensible Rögzitő kötszer - Bendaggio elastico + Bendaggio Elastico Bandagem Elástica - 包帯を巻く (伸縮) + 伸縮包帯 붕대 (압박) 绷带(弹性型) 彈性繃帶 @@ -2920,9 +2989,9 @@ QuikClot Bandage hémostatique QuikClot - QuikClot (polvere emostatica) + Bendaggio Emostatico (QuikClot) QuikClot - 包帯を巻く (クイッククロット) + クイッククロット 붕대 (퀵 클롯) 绷带(止血型) 止血粉 @@ -2938,7 +3007,7 @@ Pulzus ellenőrzése Controlla il polso Checar Pulso - 脈拍を計る + 脈拍を確認 맥박 확인 检查脉搏 檢查脈搏 @@ -2953,9 +3022,9 @@ Sprawdź ciśnienie krwi Prendre la tension Vérnyomás megmérése - Controlla pressionsa sanguigna - Chegar Pressão Sanguínea - 血圧を計る + Controlla pressione sanguigna + Checar Pressão Arterial + 血圧を確認 혈압 확인 检查血压 檢查血壓 @@ -2972,7 +3041,7 @@ Ez az orvosi lap nem tartalmaz bejegyzést. Žádné záznamy na tomto štítku Nenhuma entrada neste cartão de triagem - トリアージ カードには何も無い。 + トリアージ カードには何も書かれていない。 부상자 분류 카드에 쓰여있는 것이 없습니다. 此分诊卡上没有信息。 此檢傷分類卡上沒有任何資料 @@ -2987,9 +3056,9 @@ Staza Garrot Érszorító - Laccio emostatico + Laccio Emostatico Torniquete - 止血帯を巻く + 止血帯 지혈대 止血带 軍用止血帶 @@ -3055,7 +3124,7 @@ Diagnosztizálás Diagnóza Diagnosticar - 診断をする + 診断する 진단 诊断 診斷 @@ -3088,8 +3157,8 @@ RCP Újraélesztés CPR - SBV - 心肺蘇生をする + RCP + 心肺蘇生(CPR) 심폐소생술 心肺复苏(CPR) 心肺復甦術 @@ -3105,8 +3174,8 @@ Realizando RCP... Újraélesztés folyamatban... Provádím CPR... - Realizando o SBV... - 心肺蘇生をしています・・・ + Realizando o RCP... + 心肺蘇生(CPR)しています・・・ 심폐소생 중... 正在进行心肺复苏... 進行心肺復甦術中... @@ -3121,7 +3190,7 @@ Sang en IV (1000 ml) Podat krev. transfúzi (1000ml) Vér adása intravénásan (1000ml) - Effettua trasfusione sangue EV (1˙000ml) + Effettua trasfusione Sangue EV (1000ml) Administrar Sangue IV (1000ml) 血液 IV (1000ml) を投与 IV 혈액 수혈 (1000ml) @@ -3138,7 +3207,7 @@ Sang en IV (500 ml) Podat krev. transfúzi (500ml) Vér adása intravénásan (500ml) - Effettua trasfusione sangue EV (500ml) + Effettua trasfusione Sangue EV (500ml) Administrar Sangue IV (500ml) 血液 IV (500ml) を投与 IV 혈액 수혈 (500ml) @@ -3155,7 +3224,7 @@ Sang en IV (250 ml) Podat krev. transfúzi (250ml) Vér adása intravénásan (250ml) - Effettua trasfusione sangue EV (250ml) + Effettua trasfusione Sangue EV (250ml) Administrar Sangue IV (250ml) 血液 IV (250ml) を投与 IV 혈액 수혈 (250ml) @@ -3172,9 +3241,9 @@ Plasma en IV (1000 ml) Podat plazmu (1000ml) Vérplazma adása intravénásan (1000ml) - Effettua trasfusione plasma EV (1˙000ml) + Effettua trasfusione Plasma EV (1˙000ml) Administrar Plasma IV (1000ml) - 血しょう IV (1000ml) を投与 + 血漿 IV (1000ml) を投与 IV 혈장 수혈 (1000ml) 静脉注射血浆(1000毫升) 輸血漿 (1000毫升) @@ -3189,9 +3258,9 @@ Plasma en IV (500 ml) Podat plazmu (500ml) Vérplazma adása intravénásan (500ml) - Effettua trasfusione plasma EV (500ml) + Effettua trasfusione Plasma EV (500ml) Administrar Plasma IV (500ml) - 血しょう IV (500ml) を投与 + 血漿 IV (500ml) を投与 IV 혈장 수혈 (500ml) 静脉注射血浆(500毫升) 輸血漿 (500毫升) @@ -3206,9 +3275,9 @@ Plasma en IV (250 ml) Podat plazmu (250ml) Vérplazma adása intravénásan (250ml) - Effettua trasfusione plasma EV (250ml) + Effettua trasfusione Plasma EV (250ml) Administrar Plasma IV (250ml) - 血しょう IV (250ml) を投与 + 血漿 IV (250ml) を投与 IV 혈장 수혈 (250ml) 静脉注射血浆(250毫升) 輸血漿 (250毫升) @@ -3223,7 +3292,7 @@ Solution saline en IV (1000 ml) Podaz fyz. roztok (1000ml) Sós víz adása intravénásan (1000ml) - Effettua trasfusione salina EV (1˙000ml) + Effettua trasfusione Salina EV (1000ml) Administrar Soro IV (1000ml) 生理食塩水 IV (1000ml) を投与 IV 생리식염수 수혈 (1000ml) @@ -3240,7 +3309,7 @@ Solution saline en IV (500 ml) Podaz fyz. roztok (500ml) Sós víz adása intravénásan (500ml) - Effettua trasfusione salina EV (500ml) + Effettua trasfusione Salina EV (500ml) Administrar Soro IV (500ml) 生理食塩水 IV (500ml) を投与 IV 생리식염수 수혈 (500ml) @@ -3257,7 +3326,7 @@ Solution saline en IV (250 ml) Podaz fyz. roztok (250ml) Sós víz adása intravénásan (250ml) - Effettua trasfusione salina EV (250ml) + Effettua trasfusione Salina EV (250ml) Administrar Soro IV (250ml) 生理食塩水 IV (250ml) を投与 IV 생리식염수 수혈 (250ml) @@ -3360,7 +3429,7 @@ Normális légzés Respiro normale Respiração normal - 通常の呼吸 + 呼吸は正常 정상 호흡 呼吸正常 呼吸正常 @@ -3375,9 +3444,9 @@ Brak oddechu Nedýchá Nincs légzés - Mancanza di respiro + Assenza di respiro Não respira - 息をしていない + 呼吸をしていない 호흡 불가 没有呼吸 沒有呼吸 @@ -3409,7 +3478,7 @@ Prawie brak oddechu Skoro nedýchá Alig van légzés - Respira a fatica + Quasi nessuna respirazione Quase não respira ほとんど呼吸をしていない 호흡이 없음 @@ -3417,6 +3486,15 @@ 呼吸極弱 Neredeyse nefes almıyor + + No pain + Nie odczuwa bólu + 고통 없음 + Pas de douleur + Nessun dolore + Kein Schmerz + 痛みはない + In mild pain Hat leichte Schmerzen @@ -3425,7 +3503,7 @@ Légère douleur Com dor leve 中度疼痛中 - Con un dolore leggero + Con dolore leggero V mírných bolestech W łagodnym bólu Con dolor leve @@ -3451,12 +3529,12 @@ In severe pain Hat starke Schmerzen - ひどい痛みがある + 酷い痛みがある Сильная боль Douleur intense Com dor intensa 嚴重疼痛中 - Con un forte dolore + Con forte dolore Ve velkých bolestech W silnym bólu Con dolor severo @@ -3472,7 +3550,7 @@ Staza [CAT] Škrtidlo [CAT] Érszorító [CAT] - Laccio emostatico [CAT] + Laccio Emostatico [CAT] Torniquete [CAT] 止血帯 [CAT] 지혈대 [CAT] @@ -3491,11 +3569,20 @@ Infúzióra kötve [%1ml] Ricevendo EV [%1ml] Recebendo IV [%1ml] - IV [%1ml] を投与されている + IV [%1ml] を投与中 IV로 [%1ml] 수혈중 正在接受静脉注射 [%1毫升] 接收靜脈注射液中 [%1毫升] + + No IV + Brak podpiętego IV + 수혈 없음 + Pas de transfusion + Nessuna Flebo EV + Kein IV + IV なし + Blood Pressure Tension artérielle @@ -3507,7 +3594,7 @@ Pressione sanguigna Pressão Arterial Krevní tlak - 血圧を測る + 血圧 혈압 血压 血壓 @@ -3524,7 +3611,7 @@ Controllando la pressione sanguigna.. Aferindo Pressão Arterial... Měřím krevní tlak... - 血圧を測定しています・・・ + 血圧を確認しています・・・ 혈압 측정 중... 正在测量血压... 檢查血壓中... @@ -3533,7 +3620,7 @@ %1 checked Blood Pressure: %2 %1 kontrollierte Blutdruck: %2 - %1 controllata pressione sanguigna: %2 + %1 ha controllato pressione sanguigna: %2 %1 проверил артериальное давление: %2 %1 a mesuré la tension : %2. %1 sprawdził ciśnienie krwi: %2 @@ -3541,7 +3628,7 @@ %1 ellenőrizte a vérnyomást: %2 %1 zkontroloval krevní tlak: %2 %1 verificou pressão arterial: %2 - %1 が測定した血圧: %2 + %1 が血圧を確認: %2 %1 (이)가 혈압을 측정했습니다: %2 %1 测得血压为 %2 已由%1確認血壓: %2 @@ -3557,7 +3644,7 @@ Hai diagnosticato %1 Você verificou o paciente %1 Zkontroloval jsi %1 - 血圧は %1 + %1 を確認した 혈압은 %1 입니다 你已检查 %1 你已經檢查 %1 @@ -3574,7 +3661,7 @@ Der Blutdruck liegt bei %2/%3 A Pressão Arterial é de %2/%3 Naměřil si krevní tlak u %2/%3 - 血圧は %2/%3 + 計測した血圧数は %2/%3 でした 혈압이 %2/%3 입니다 血压为 %2/%3 血壓為%2/%3 @@ -3591,7 +3678,7 @@ La pressione sanguigna è bassa Pressão Arterial baixa Naměřil si nízký krevní tlak - 血圧は低い + 血圧が 低い ことを確認した 혈압이 매우 낮습니다 血压低 發現到低血壓 @@ -3608,7 +3695,7 @@ La pressione sanguigna è normale Pressão Arterial normal Naměřil si normální krevní tlak - 血圧は正常 + 血圧が 正常 なことを確認した 혈압이 정상입니다 血压正常 發現到正常血壓 @@ -3625,7 +3712,7 @@ La pressione sanguigna è alta Pressão Arterial Alta Naměřil si vysoký krevní tlak - 血圧は高い + 血圧が 高い ことを確認した 혈압이 매우 높습니다 血压高 發現到高血壓 @@ -3642,7 +3729,7 @@ La pressione sanguigna è assente Sem Pressão Arterial Nenaměřil si žádný krevní tlak - 血圧は測れなかった + 血圧が ない ことを確認した 혈압이 잡히지 않습니다 血压为零 量不到血壓 @@ -3656,10 +3743,10 @@ Nie udało Ci się sprawdzić ciśnienia krwi Du konntest keinen Blutdruck feststellen Nem sikerült a vérnyomás megmérése - Manca strumento per misurare pressione sanguigna + Non puoi misurare la pressione sanguigna Você falhou em aferir a Pressão Arterial Nedokázal si změřit krevní tlak - 血圧を測るのに失敗した + 血圧の計測に失敗した 혈압을 측정하는데 실패했습니다 无法测得血压 檢查血壓的動作失敗 @@ -3744,7 +3831,7 @@ Polso Pulso Puls - 脈拍数 + 脈拍 맥박 脉搏 脈搏 @@ -3761,7 +3848,7 @@ Controllando il polso... Checando Pulso... Kontroluji puls... - 脈拍数を測定しています・・・ + 脈拍を確認しています・・・ 맥박 확인 중... 正在测量脉搏... 檢查心跳中... @@ -3778,7 +3865,7 @@ Hai diagnosticato %1 Você aferiu o paciente %1 Zkontroloval si %1 - 脈拍数は %1 + %1 を確認した 맥박은 %1 입니다 你已检查 %1 你已經檢查 %1 @@ -3786,7 +3873,7 @@ %1 checked Heart Rate: %2 %1 kontrollierte Herzfrequenz: %2 - %1 Controllata Frequenza Cardiaca: %2 + %1 ha controllato il polso: %2 %1 проверил пульс: %2 %1 a vérifié le pouls : %2. %1 sprawdził tętno: %2 @@ -3794,7 +3881,7 @@ %1 ellenőrizte a szívverés-számot: %2 %1 zkontroloval srdeční tep: %2 %1 verificou a frequência cardíaca: %2 - %1 が測定した心拍数: %2 + %1 が心拍を確認: %2 %1 (이)가 맥박을 측정했습니다: %2 %1 测得心率为 %2 已由%1確認心跳: %2 @@ -3876,9 +3963,9 @@ Herzfrequenz ist %2 A szívverés-szám %2 Il battito cardiaco è %2 - A Freqüência Cardíaca é de %2 + A Frequência Cardíaca é de %2 Nahmatal jsi srdeční tep u %2 - 心拍数は %2 + 計測した心拍数は %2 でした 맥박이 %2 입니다 心率为 %2 心跳為%2 @@ -3892,9 +3979,9 @@ Schwacher Puls A szívverés-szám alacsony Hai riscontrato un debole battito cardiaco - Freqüência Cardíaca baixa + Frequência Cardíaca baixa Nahmatal jsi slabý srdeční puls - 心拍は弱い + 心拍が 弱い ことを確認した 약한 맥박입니다 心率微弱 心跳微弱 @@ -3909,9 +3996,9 @@ Starker Puls A szívverés-szám magas Hai riscontrato un forte battito cardiaco - Freqüência Cardíaca normal + Frequência Cardíaca normal Nahmatal jsi silný srdeční puls - 心拍は強い + 心拍が 強い ことを確認した 강한 맥박입니다 心率过快 心跳過快 @@ -3926,9 +4013,9 @@ Normaler Puls A szívverés-szám normális Hai riscontrato un normale battito cardiaco - Freqüência Cardíaca alta + Frequência Cardíaca alta Nahmatal jsi normální srdeční puls - 心拍は正常 + 心拍が 正常 なことを確認した 보통 맥박입니다 心率正常 心跳正常 @@ -3943,9 +4030,9 @@ Kein Puls gefunden Nem észlelhető szívverés Hai riscontrato una assenza di battito cardiaco - Sem Freqüência Cardíaca + Sem Frequência Cardíaca Žádný puls - 心拍を測れなかった + 心拍が ない ことを確認した 맥박을 찾을 수가 없습니다 无法测得心率 量不到心跳 @@ -3962,7 +4049,7 @@ Risposta Reação Odezva - 反応を見る + 反応を確認 반응 反应 反應 @@ -3978,7 +4065,7 @@ Controlli la risposta del paziente Aferindo se o paciente tem reação Zkontroloval jsi reakci pacienta - 患者からの反応をみる + 患者の反応を確かめています 대상의 반응 확인 중 检查伤员的反应 檢查傷者的反應 @@ -3994,7 +4081,7 @@ %1 è cosciente %1 está respondendo %1 odpovídá - %1 は反応あり + %1 は反応している %1 은 반응이 있습니다 %1 有反应 %1 有反應 @@ -4011,7 +4098,7 @@ %1 non risponde %1 não está respondendo %1 neodpovídá - %1 の反応なし + %1 は反応していない %1 은 반응이 없습니다 %1 没有反应 %1 沒有反應 @@ -4021,8 +4108,9 @@ %1 is not responsive, taking shallow gasps and convulsing %1 est inconscient, respire par intermittence et convulse. %1 jest nieresponsywny, ma płytki oddech oraz jest w konwulsjach - %1 は反応せず、浅い呼吸とけいれんをしている + %1 は反応していない、 浅く呻きながら痙攣している %1 reagiert nicht, schnappt nach Luft und verkrampft + %1 non risponde, ha convulsioni e prende respiri deboli %1没有反应,微软的喘着气和抽搐 %1 은 반응이 없고, 얕은 헐떡임과 경련증세를 보입니다 %1 не реагирует на раздражители, поверхностно дышит, в конвульсиях @@ -4032,8 +4120,9 @@ %1 is not responsive, motionless and cold %1 est inconscient, inanimé et froid. %1 jest nieresponsywny, nieruchomy oraz zimny - %1 は反応せず、動かず冷たくなっている + %1 は反応していない、 動かず冷たくなっている %1 reagiert nicht, ist regungslos und kalt + %1 non risponde, è immobile e freddo %1没有反应,一动不动,身体冰凉 %1 은 반응이 없고, 움직임이 없으며 차갑습니다 %1 не реагирует на раздражители, не шевелится и холодный @@ -4050,7 +4139,7 @@ Hai controllato %1 Você aferiu o paciente %1 Zkontroloval jsi %1 - %1 を見た + %1 を確認した %1 을 확인함 你已检查 %1 你已經檢查 %1 @@ -4067,7 +4156,7 @@ A páciens, %1,<br/>%2.<br/>%3.<br/>%4 Pacient %1<br/>je %2.<br/>%3.<br/>%4 Paciente %1<br/>é %2.<br/>%3.<br/>%4 - 患者 %1<br/>は %2.<br/>%3.<br/>%4 + 患者 %1 は<br/>%2している。<br/>%3。<br/>%4。 환자 %1<br/>는 %2.<br/>%3.<br/>%4 伤员 %1 <br/> %2 <br/> %3 <br/> %4 傷者 %1<br/>is %2.<br/>%3.<br/>%4 @@ -4117,7 +4206,7 @@ Valamennyi vért vesztett Ztratil trochu krve Ele perdeu um pouco de sangue - 患者は出血している + 彼は出血している 적은 양의 피를 잃었다 他轻微失血 他流失一些血液 @@ -4134,7 +4223,7 @@ Ztratil hodně krve Ele perdeu muito sangue Ha perso molto sangue - 患者は大量失血している + 彼は大量失血している 많은 양의 피를 잃었다 他大量失血 他流失大量血液 @@ -4151,7 +4240,7 @@ Nem vesztett vért Neztratil žádnou krev Ele não perdeu sangue - 患者は失血していない + 彼は失血していない 피를 잃지 않았다 他没有失血 他並沒有失血 @@ -4159,7 +4248,7 @@ He is in pain - Sente dolori + Sente dolore Испытывает боль Er hat Schmerzen Il souffre @@ -4168,7 +4257,7 @@ Fájdalmai vannak Je v bolestech Ele está com dor - 患者は痛いようだ + 彼は痛みを感じている 통증이 있다 他感到疼痛 他感到疼痛中 @@ -4176,7 +4265,7 @@ He is not in pain - Non sente dolori + Non sente dolore Не испытывает боли Er hat keine Schmerzen Il ne souffre pas @@ -4185,7 +4274,7 @@ Nincsenek fájdalmai Nemá žádné bolesti Ele não está com dor - 患者は痛くないようだ + 彼は痛みを感じていない 통증이 없다 他没有感到疼痛 他沒感到疼痛中 @@ -4202,7 +4291,7 @@ verbunden Enfaixado Obvázaný - 包帯 + 包帯を巻いた 붕대 감음 包扎 繃帶 @@ -4219,7 +4308,7 @@ Du verbindest %1 (%2) Você aplica bandagem no paciente %1 (%2) Obvazuješ %1 (%2) - %1 (%2) 包帯を使った + あなたは %1 (%2) に包帯を使用した %1 (%2) 붕대를 감았다 你正在使用 %2 包扎 %1 你正在對 %1 (%2) 包紮繃帶中 @@ -4285,7 +4374,7 @@ Controlli le vie respiratorie di %1 Você entuba o %1 Ošetřuješ dýchací cesty %1 - %1 の気道を診断する + あなたは %1 の気道を処置した %1의 기도를 확보했다 你正在治疗 %1 的呼吸道 你治療 %1 的呼吸道 @@ -4319,7 +4408,7 @@ %1 ti sta trattando le vie respiratorie %1 está te entubando %1 ošetřuje tvoje dýchací cesty - %1 はあなたの気道を見ている + %1 があなたの気道を治療中 %1 (이)가 나의 기도를 확보 중이다 %1 正在治疗你的呼吸道 %1 正在治療你的呼吸道 @@ -4369,7 +4458,7 @@ Déposer Elengedés Soltar - Rrilascia + Rilascia 離す 내려놓기 放下 @@ -4437,7 +4526,7 @@ %1<br/>caricato su<br/>%2 %1<br/>berakodva ide:<br/>%2 %1<br/>загружен в<br/>%2 - %1<br/>は<br/>%2へ積み込まれました + %1 は<br/>%2 へ<br/>積み込まれました %1<br/>(은)는<br/>%2 에 실림 %1<br/>裝載至<br/>%2 %1<br/>装载至<br/>%2 @@ -4453,27 +4542,46 @@ Hai scaricato<br/>%1 da<br/>%2 1%<br/>kirakodva ebből:<br/>%2 %1<br/>разгружен из<br/>%2 - <br/>%1が<br/>%2から降ろされました + %1 が<br/>%2 から<br/>降ろされました %1<br/>(은)는<br/>%2 에서 내려짐 從<br/>%2卸載<br/>%1 从<br/>%2卸载<br/>%1 - - Place body in bodybag - Colocar cuerpo en bolsa para cadáveres - Поместить тело в мешок для трупов - Körper in Leichesack verstauen - Zapakuj ciało do worka na zwłoki - Mettre le corps dans la housse mortuaire - Test hullazsákba helyezése - Metti il corpo nella sacca per cadaveri - Colocar corpo dentro do saco para cadáver - Umístit tělo do pytle na mrtvoly - 死体袋に入れる - 시체 운반용 부대에 담기 - 将尸体装入尸袋 - 將屍體放入屍袋 - Vücudu ceset torbasına yerleştir + + Place body in black bodybag + Colocar cuerpo en bolsa para cadáveres negra + Körper in schwarzen Leichensack verstauen + Mettre le corps dans la housse mortuaire noir + Metti il corpo nella sacca per cadaveri nera + Colocar corpo dentro do saco para cadáver preto + Umístit tělo do černého pytle na mrtvoly + Vücudu siyah ceset torbasına yerleştir + 遺体袋 (黒) に入れる + 시체를 검은 시체가방에 놓기 + + + Place body in blue bodybag + Colocar cuerpo en bolsa para cadáveres azule + Körper in Blau Leichensack verstauen + Mettre le corps dans la housse mortuaire bleu + Metti il corpo nella sacca per cadaveri blu + Colocar corpo dentro do saco para cadáver azul + Umístit tělo do modrého pytle na mrtvoly + Vücudu mavi ceset torbasına yerleştir + 遺体袋 (青) に入れる + 시체를 파란 시체가방에 놓기 + + + Place body in white bodybag + Colocar cuerpo en bolsa para cadáveres blanca + Körper in weißen Leichensack verstauen + Mettre le corps dans la housse mortuaire blanc + Metti il corpo nella sacca per cadaveri bianca + Colocar corpo dentro do saco para cadáver branco + Umístit tělo do bílého pytle na mrtvoly + Vücudu beyaz ceset torbasına yerleştir + 遺体袋 (白) に入れる + 시체를 흰 시체가방에 놓기 Placing body in bodybag... @@ -4486,7 +4594,7 @@ Stai mettendo il corpo nella sacca... Colocando corpo dentro do saco para cadáver... Umisťuji tělo do pytle na mrtvoly... - 死体袋へ入れています・・・ + 遺体袋へ入れています・・・ 시체 운반용 부대에 담는 중... 正在将尸体装入尸袋... 將屍體放入屍袋中... @@ -4495,10 +4603,20 @@ Dig grave for body 시체를 위해 무덤 파기 + Wykop grób na ciało + Enterrer le corps + Grabe ein Grab für den Leichnam + Scava tomba per cadavere + 墓を掘る Digging grave for body... 시체를 위한 무덤 파는 중... + Kopanie grobu... + Enterrement du corps... + Grab für Leichnam ausheben ... + Scavando tomba per cadavere... + 墓を掘っています %1 has bandaged patient @@ -4511,7 +4629,7 @@ %1 ha bendato il paziente %1 aplicou bandagem no paciente %1 již obvázal pacienta - %1 は包帯を巻いた + %1 が包帯を巻いた %1 (이)가 붕대를 감아줬다 %1 已包扎伤员 %1 已包紮傷者 @@ -4526,7 +4644,7 @@ %1 провел сердечно-легочную реанимацию %1 realicó RCP %1 a fait une RCP. - %1 は心肺蘇生をした + %1 が心肺蘇生(CPR)を実施 %1 (이)가 심폐소생술을 실시했다 %1 已进行心肺复苏 %1 已執行心肺復甦術 @@ -4542,7 +4660,7 @@ %1 ha usato %2 %1 usou %2 %1 použil %2 - %1 は %2 を使った + %1 が%2を使用した %1 (이)가 %2 을 썼다 %1 已使用 %2 %1 已使用 %2 @@ -4559,7 +4677,7 @@ %1 ha somministrato una EV %1 aplicou um intravenoso %1 již aplikoval IV - %1 はIVを投与した + %1 がIVを投与した %1 (이)가 IV를 실시했다 %1 已进行静脉注射 %1 已經給予靜脈注射液 @@ -4576,7 +4694,7 @@ %1 ha applicato un laccio emostatico %1 aplicou um torniquete %1 použil škrtidlo - %1 は止血帯を巻いた + %1 が止血帯を巻いた %1 (이)가 지혈대를 적용했다 %1 已使用止血带 %1 已經綁上止血帶 @@ -4590,7 +4708,7 @@ %1 已套用固定板 %1 ha applicato una gessatura %1 použil dlahu - %1 は添え木を当てた + %1 が添え木を当てた %1 założył szynę %1 aplicada una férula %1 hat eine Schiene angelegt @@ -4605,10 +4723,10 @@ %1 utilizou KPS %1 používá PAK %1 использовал аптечку - %1 ha usato Kit Pronto Soccorso Personale + %1 ha usato Kit di Pronto Soccorso (PAK) %1 usó Kit de Primeros Auxilios %1 a utilisé une trousse sanitaire. - %1 は応急処置キットを使った + %1 が個人用治療キットを使用した %1 (이)가 개인응급키트를 사용했다 %1 已使用个人急救包 %1 已使用了個人急救包 @@ -4653,13 +4771,13 @@ Sehr leicht verwundet: B. lekko ranny Царапины - Ferito lievemente + Lievemente Ferito Muy levemente herido Très légèrement blessé Nagyon enyhén sérült Velmi lehce raněn Muito levemente ferido - かなり浅い傷 + ごく軽傷 미미한 부상 小伤 小傷 @@ -4670,7 +4788,7 @@ Lecz w pełni zabandażowane hitpointy Curar miembros totalmente vendados Исцелять полностью перебинтованные части тела - Curar hitpoints totalmente enfaixados + Curar membros totalmente enfaixados Heal fully bandaged hitpoints Cura hitpoints completamente bendati Guérir les plaies entièrement bandées @@ -4722,9 +4840,9 @@ Нет жгута на этой части тела! Não existe nenhum torniquete nesta parte do corpo! Žádné škrtidlo na této části těla! - Non c'è nessun laccio emostatico su questa parte del corpo! + Nessun laccio emostatico su questa parte del corpo! Il n'y a pas de garrot sur ce membre ! - この部位には止血帯がない! + この部位に止血帯はありません! 이 부위에는 지혈대가 없습니다! 该部位没有使用止血带! 這部位沒有止血帶! @@ -4734,6 +4852,7 @@ The body twitched and may not be dead! Тело дернулось и, возможно, пациент жив! L'unité a bougé et n'est peut-être pas morte ! + Il cadavere si è mosso e potrebbe essere ancora vivo! 身体が痙攣している、まだ死んでないようだ! ¡El cuerpo se retorció y puede que no esté muerto! Ciało drgnęło i może nie być martwe! @@ -4745,30 +4864,74 @@ Check name on headstone Sprawdź imię na grobie 묘비 이름 확인 + Vérifier le nom sur la pierre tombale + Überprüfe Name auf dem Grabstein + Controlla nome sulla lapide + 墓石の名前を確認 Bandage Rollover Bandażowanie Wielu Ran Verbandüberschlag 붕대 모두 감기 + Pansement de plaies multiples + Srotolamento Bendaggi + 包帯の繰り越し If enabled, bandages can close different types of wounds on the same body part.\nBandaging multiple injuries will scale bandaging time accordingly. Jeśli opcja jest włączona, bandaże mogą zamykać różne rodzaje ran na tej samej części ciała. \nOpatrywanie wielu ran będzie adekwatnie skalować czas bandażowania. Wenn diese Option aktiviert ist, können Verbände verschiedene Arten von Wunden am selben Körperteil schließen.\nBeim Verbinden mehrerer Verletzungen wird die Verbandszeit entsprechend skaliert. - 활성회된 경우 붕대로 동일한 신체 부위에 있는 다른 유형에 상처를 막을 수 있습니다.\n여러 부상을 붕대로 감으면 붕대 감는 시간이 그만큼 늘어납니다. + 활성화된 경우 붕대로 동일한 신체 부위에 있는 다른 유형의 상처를 막을 수 있습니다.\n여러 부상을 붕대로 감으면 붕대 감는 시간이 그만큼 늘어납니다. + Si activé, les bandages peuvent fermer plusieurs types de blessures sur la même partie du corps.\nPanser de multiples blessures modifiera la durée d'application en conséquence. + Se attivo, un singolo bendaggio potrà chiudere più ferite sulla stessa parte del corpo.\nBendare più ferite di conseguenza richiederà più tempo. + 有効にすると、体の同じ部分にある別の種類の傷を一つの包帯で閉じることができます。\n複数の傷に包帯を巻くと、それに応じて包帯時間が変動します。 Bandage Effectiveness Coefficient Współczynnik Efektywności Bandażowania Verbandswirksamkeitskoeffizient 붕대 효과 계수 + Coefficient d'efficacité des bandages + Coefficiente di efficacia bendaggi + 包帯有効性係数 Determines how effective bandages are at closing wounds. Określa skuteczność bandaży w zamykaniu ran. Bestimmt, wie wirksam Bandagen beim Verschließen von Wunden sind. 붕대가 상처를 치료하는 데 얼마나 효과적으로 지속되는지 결정합니다. + Défini l'efficacité des bandages à refermer des plaies. + Determina quanto i bendaggi sono efficaci nel chiudere le ferite. + 包帯が傷をふさぐのにどれだけ効果的かを決定します。 + + + Medical Items + Przedmioty Medyczne + Matériel médical + Oggetti Medici + 의료 물품 + Orvosi felszerelés + Медицинские предметы + Zdravotnický materiál + Tıbbi Ürünler + Medizinisches Material + 医療品 + Objetos médicos + + + Zeus Treatment Time Coefficient + Coeff. di tempo per trattamenti Zeus + Zeit-Koeffizient für Zeus Behandlungen + Zeus治療時間係数 + 제우스 치료 시간 계수 + + + Multiply all treatment times with this coefficient when in Zeus. + Moltiplica il tempo di ogni trattamento per questo coefficiente quando si è Zeus. + Dauer von Behandlungen als Zeus wird mit diesem Koeffizienten multipliziert. + Zeus操作中は、すべての治療時間にこの係数を掛けます。 + 제우스일 때 모든 치료 시간에 이 계수를 곱합니다. diff --git a/addons/medical_treatment/ui/bodybag_blue_ca.paa b/addons/medical_treatment/ui/bodybag_blue_ca.paa new file mode 100644 index 0000000000..2948b4639b Binary files /dev/null and b/addons/medical_treatment/ui/bodybag_blue_ca.paa differ diff --git a/addons/medical_treatment/ui/bodybag_white_ca.paa b/addons/medical_treatment/ui/bodybag_white_ca.paa new file mode 100644 index 0000000000..a4d789d45c Binary files /dev/null and b/addons/medical_treatment/ui/bodybag_white_ca.paa differ diff --git a/addons/medical_vitals/addon.toml b/addons/medical_vitals/addon.toml index 7cfef775ee..bf39213892 100644 --- a/addons/medical_vitals/addon.toml +++ b/addons/medical_vitals/addon.toml @@ -1,2 +1,3 @@ -[preprocess] -enabled = false +[tools] +pboProject_noBinConfig = true +sqfvm_skipConfigChecks = true diff --git a/addons/medical_vitals/config.cpp b/addons/medical_vitals/config.cpp index f00fbe7174..d105aa3144 100644 --- a/addons/medical_vitals/config.cpp +++ b/addons/medical_vitals/config.cpp @@ -1,5 +1,6 @@ #include "script_component.hpp" +#pragma hemtt flag pe23_ignore_has_include #if __has_include("\z\ace\addons\nomedical\script_component.hpp") #define PATCH_SKIP "No Medical" #endif diff --git a/addons/microdagr/XEH_preInit.sqf b/addons/microdagr/XEH_preInit.sqf index b46948b0bb..610dc0ed81 100644 --- a/addons/microdagr/XEH_preInit.sqf +++ b/addons/microdagr/XEH_preInit.sqf @@ -9,6 +9,6 @@ PREP_RECOMPILE_END; //Functions that are called for each draw of the map: GVAR(miniMapDrawHandlers) = []; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" ADDON = true; diff --git a/addons/microdagr/initSettings.sqf b/addons/microdagr/initSettings.inc.sqf similarity index 100% rename from addons/microdagr/initSettings.sqf rename to addons/microdagr/initSettings.inc.sqf diff --git a/addons/microdagr/stringtable.xml b/addons/microdagr/stringtable.xml index f090377c2f..c8e0b16d34 100644 --- a/addons/microdagr/stringtable.xml +++ b/addons/microdagr/stringtable.xml @@ -29,7 +29,7 @@ MicroDAGR fejlett GPS vevőegység Ricevitore GPS avanzato MicroDAGR Receptor GPS avançado MicroDAGR - MicroDAGR は改良された GPS 受信機です + MicroDAGRは改良された高度なGPS受信機です 마이크로DAGR 고급 위성항법 수신기 微型军用高级防御 GPS 接收器 微型軍用高級防禦GPS接收器 @@ -45,7 +45,7 @@ Szögmértékegység: Unità angolare: Unidade Angular: - 角度の種類: + 角度の単位: 각도의 단위: 角密位: 角密位: @@ -61,7 +61,7 @@ Fok Gradi Graus - 角度 + 각도 @@ -93,7 +93,7 @@ Útvonalpontok mutatása a térképen: Mostra waypoint sulla mappa: Mostrar Waypoints no mapa: - 地図へウェイポイントを表示: + 地図にウェイポイントを表示: 웨이포인트를 지도에 보이기: 显示路径点在地图上: 顯示路徑點在地圖上: @@ -109,7 +109,7 @@ Вкл. Encendido Be - 有効 + オン 켜기 开启 開啟 @@ -126,7 +126,7 @@ Выкл. Apagado Ki - 無効 + オフ 끄기 关闭 關閉 @@ -141,7 +141,7 @@ Koordinaten eingeben: Napiš souřadnice: Add meg a rácskoordinátákat: - Introduci griglia coordinate: + Inserisci coordinata-griglia: Digite as Coords. do Grid 座標を入力: 输入网格座标: @@ -159,7 +159,7 @@ [%1] neve Nome di [%1] Nome do [%1] - [%1] の名前 + [%1] の名称 [%1] 의 이름 名称 [%1] 名稱 [%1] @@ -222,8 +222,8 @@ Azimut: Irányszög Azimut - Direção na bússula - 方位磁石での方位 + Direção na bússola + 方位磁石 방위 指南针方位 指北針方位 @@ -253,7 +253,7 @@ Punkty trasy Points de passage Útvonalpontok - waypoints + Waypoints Waypoints ウェイポイント 웨이포인트 @@ -269,9 +269,9 @@ Podłącz do Connecter Csatlakozás - Collega a + Collega a Conectar à - 次に接続 + 接続 연결 连接到 連接到 @@ -285,7 +285,7 @@ Nastavení Ustawienia Beállítások - Impostaizoni + Impostazioni Opções 設定 설정 @@ -301,9 +301,9 @@ UstawPT ChoixWP UP Beállítása - Definisci WayPoints + Definisci WayPoint Definir WP - WP設定 + WPセット 웨이포인트 설정 设置路径点 設置路徑點 @@ -351,7 +351,7 @@ MicroDAGR kijelzési mód váltása Alterna modalità display MicroDAGR Alternar Modo de Display do MicroDAGR - MicroDAGR の表示モード + MicroDAGR の表示モード切り替え 마이크로DAGR 화면 모드 토글 切换微型军用 GPS 接收器显示模式 切換微型軍用GPS接收器顯示模式 @@ -381,7 +381,7 @@ Otwórz MicroDAGR Configurer MicroDAGR MicroDAGR konfigurálása - ConfiguraMicroDAGR + Configura MicroDAGR Configurar MicroDAGR MicroDAGR を設定 마이크로DAGR 설정하기 @@ -446,7 +446,7 @@ Définit le type d'information à afficher sur la carte du MicroDAGR. Mennyi térképadatot tartalmaz a MicroDAGR Сколько данных должно отображаться на карте MicroDAGR - Quanti dati sono trasferiti nella mappa del MicroDAGR + Quanti dati cartografici sono mostrati sulla mappa del MicroDAGR MicroDAGR で表示する地図情報を決定します 얼마나 많은 데이터를 마이크로DAGR가 보여주는지를 결정합니다 有多少地图数据会显示在微型军用 GPS 接收器 @@ -462,7 +462,7 @@ Image satellite + Bâtiments Teljes műholdas + épületek Спутник + Здания - Satellite Completo + Edifici + Satellitare Completo + Edifici 完全な衛星画像と建物 위성 사진 + 건물 完整卫星画面 + 建筑物位置 @@ -494,7 +494,7 @@ Néant (carte désactivée) Semmi (nem használható a térképnézet) Не показывать (запрещает использовать режим карты) - Nessuno (Non puoi usare la vista mappa) + Nessuno (Non puoi usare la visuale mappa) なし (地図表示を使えません) 없음 (지도를 볼 수 없음) 无(无法检视地图) @@ -518,7 +518,7 @@ Controls how precise the waypointdistance can be displayed Legt die Genauigkeit der Entfernung von Wegpunkten fest - Controlla quanto precisamente può essere visualizzato il waypoint a distanza + Controlla quanto è precisa la distanza indicata dal waypoint 表示されるウェイポイントの精度を設定します Kontroluje jak precyzyjnie może być wyświetlany dystans PT Управляет точностью отображения расстояний маршрутных точек @@ -588,7 +588,7 @@ Définit la quantité de données présentes dans le MicroDAGR.\nMoins de données force la carte à afficher moins d'informations sur la minimap. Meghatárroza a MicroDAGR objektumok térképének tartalmát. A kevesebb adat korlátozza a térképnézeti módot az eszközön. Контролирует, сколько данных должно отображаться на карте устройств MicroDAGR. Ограничивает объем отображаемых данных на миникарте. - Controlla quanti dati sono presenti negli oggetti MicroDAGR. Meno dati costringono la vista mappa a mostrare meno informazioni nella minimappa. + Controlla quanti dati cartografici vengono caricati sui MicroDAGR. Meno dati permetteranno la visualizzazione di meno informazioni sulla minimappa. アイテム上で表示されるデータ量を決定します。設定を減らすと地図上での情報が少なくなります。 마이크로DAGR에 얼마나 많은 데이터가 들어있는지 정합니다. 적을 수록 지도상에도 비춰지는게 적어집니다. 设定有多少数据会显示在微型军用 GPS 接收器上。这些资料的多寡会反映在迷你地图的显示上。 @@ -601,6 +601,7 @@ MicroDAGR - Mode précédent MicroDAGR - 前のモードに MicroDAGR - vorheriger Modus + MicroDAGR - Modalità Precedente MicroDAGR - Poprzedni Tryb 微型 GPS 接收器—上一个模式 마이크로DAGR - 이전 모드 @@ -612,6 +613,7 @@ MicroDAGR - Mode suivant MicroDAGR - 次のモードに MicroDAGR - nächster Modus + MicroDAGR - Modalità Successiva MicroDAGR - Kolejny Tryb 微型 GPS 接收器—下一个模式 마이크로DAGR - 다음 모드 diff --git a/addons/minedetector/CfgVehicles.hpp b/addons/minedetector/CfgVehicles.hpp index ab6c06b4cb..874fc597f5 100644 --- a/addons/minedetector/CfgVehicles.hpp +++ b/addons/minedetector/CfgVehicles.hpp @@ -34,14 +34,14 @@ class CfgVehicles { class GVAR(connectHeadphones) { displayName = CSTRING(ConnectHeadphones); condition = QUOTE(call FUNC(canConnectHeadphones)); - statement = QUOTE([ARR_2(ACE_player, true)] call FUNC(connectHeadphones)); + statement = QUOTE([ARR_2(ACE_player,true)] call FUNC(connectHeadphones)); icon = ""; //TODO exceptions[] = {}; }; class GVAR(disconnectHeadphones) { displayName = CSTRING(DisconnectHeadphones); condition = QUOTE(call FUNC(canDisconnectHeadphones)); - statement = QUOTE([ARR_2(ACE_player, false)] call FUNC(connectHeadphones)); + statement = QUOTE([ARR_2(ACE_player,false)] call FUNC(connectHeadphones)); icon = ""; //TODO exceptions[] = {}; }; diff --git a/addons/minedetector/stringtable.xml b/addons/minedetector/stringtable.xml index 3f6eca652b..95fab779dd 100644 --- a/addons/minedetector/stringtable.xml +++ b/addons/minedetector/stringtable.xml @@ -6,7 +6,7 @@ Détecteur de métaux Детектор металла Detektor kovů - 地雷探知機 + 金属探知機 Wykrywacz metali Metalldetektor 지뢰탐지기 @@ -22,7 +22,7 @@ Détecteur de métaux Детектор металла Detektor kovů - 地雷探知機 + 金属探知機 Wykrywacz metali Metalldetektor 지뢰탐지기 @@ -69,7 +69,7 @@ Connect Headphones Подключить наушники Připojit sluchátka - ヘッドホンへつなぐ + ヘッドホンに接続 Podłącz słuchawki Kopfhörer verbinden 헤드폰에 연결 @@ -85,7 +85,7 @@ Disconnect Headphones Отключить наушники Odpojit sluchátka - ヘッドホンからはずす + ヘッドホンを切断 Odłącz słuchawki Kopfhörer trennen 헤드폰 연결 끊기 @@ -117,7 +117,7 @@ Headphones Disconnected Наушники отключены Sluchátka odpojena - ヘッドホンから外しました + ヘッドホンを切断しました Słuchawki odpięte Kopfhörer getrennt 헤드폰 연결 끊김 diff --git a/addons/missileguidance/stringtable.xml b/addons/missileguidance/stringtable.xml index 8588467bc3..17696044bb 100644 --- a/addons/missileguidance/stringtable.xml +++ b/addons/missileguidance/stringtable.xml @@ -12,7 +12,7 @@ Orientação avançada de Míssil Fejlett rakétairányító Продвинутое наведение ракет - 高度なミサイルの誘導 + アドバンスドミサイル誘導 고급 미사일 유도 进阶导弹制导 進階飛彈制導 @@ -21,7 +21,7 @@ Advanced missile guidance, or AMG, provides multiple enhancements to missile locking and firing. It is also a framework required for missile weapon types. Zaawansowane namierzanie rakiet, lub ZNR, dostarcza wiele poprawek do systemu namierzania rakiet oraz dodaje nowe tryby strzału. Jest to wymagana opcja dla broni rakietowych. - Guida dei missili avanzata, o AMG, offre diversi miglioramenti alla teleguida di missili. E' anche un sistema necessario per i tipi di armi missile. + Guida dei missili avanzata, o GMA, offre diversi miglioramenti alla teleguida di missili. È anche un sistema necessario per la categoria d'arma dei missili. Продвинутое наведение ракет, или ПНР, обеспечивает множество усовершествований для наведения и стрельбы ракет. Также, это система, необходимая для всех ракетных типов оружия. El guiado avanzado de misiles, o AMG en sus siglas en inglés, ofrece múltiples mejoras en el fijado y disparo de misiles. Es también un sistema requerido para armas de tipo misil. Das Erweiterte Raketenlenksystem, auch ERls genannt, bietet viele Verbesserungen zum Aufschalten und Feuern mittels gelenkter Raketen. @@ -29,7 +29,7 @@ A fejlett rakétairányító (vagy AMG) többféle módosítást tartalmaz a rakéták célkövetéséhez és tüzeléséhez. Ez egy szükséges keresztrendszer a rakéta-alapú fegyverekhez. Orientação avançada de mísseis ou OAM, fornece vários aprimoramentos para travamento de mísseis e disparos. Também é um sistema requerido para disparar armas que utilizem mísseis. Pokočilé navádění raket (AMG) poskytuje několik vylepšení pro lepší zaměření a následnou střelbu. Je to prvek vyžadovaný u typu zbraní jako jsou rakety. - 高度なミサイルの誘導、または AMG はミサイルの捕捉と発射に複数の強化をあたえます。これはミサイルの種類によって、枠組みを必要とします。 + アドバンスドミサイル誘導 (AMG) は、ミサイルの捕捉と発射に複数の機能強化を提供します。 これは、ミサイル兵器の種類に必要なフレームワークでもあります。 고급 미사일 유도 혹은 AMG는 표적 획득 및 발사를 위한 여러 기능을 제공합니다. 미사일 종류에 따라 체계가 필요합니다. 进阶导弹制导增强了多种导弹锁定和射击的能力。此系统适用于所有导弹类型的武器。 進階飛彈制導增強了多種導彈鎖定和射擊的能力。此系統適用於所有飛彈類型的武器 @@ -76,11 +76,11 @@ Laserowo naprowadzana rakieta Hydra-70 DAGR Hydra-70 DAGR lasergelenkte Rakete Hydra-70 DAGR laserem naváděná střela - Hydra-70 DAGR Missile a Guida Laser + Hydra-70 DAGR Missile Laserguidato Míssil guiado a laser Hydra-70 DAGR Hydra-70 DAGR lézer-irányított rakéta Управляемая ракета лазерного наведения Hydra-70 DAGR - ハイドラ-70 DAGR レーザ誘導ミサイル + ハイドラ-70 DAGR レーザー誘導ミサイル 히드라-70 DAGR 레이저 유도 미사일 Hydra-70 激光制导直接攻击火箭(DAGR) 九頭蛇-70 直接攻擊雷射導引飛彈 @@ -93,7 +93,7 @@ Hellfire II AGM-114K Hellfire II AGM-114K Hellfire II AGM-114K - Missile Hellfire II AGM-114K + Missile AGM-114K Hellfire II Míssil Hellfire II AGM-114K Hellfire II AGM-114K rakéta Hellfire II AGM-114K @@ -127,11 +127,11 @@ Laserowo naprowadzana rakieta Hellfire II AGM-114K Hellfire II AGM-114K Lasergelenkte Rakete Hellfire II AGM-114K laserem naváděná střela - Missile a Guida Laser Hellfire II AGM-114K + Missile Laserguidato AGM-114K Hellfire II Míssil guiado a laser Hellfire II AGM-114K Hellfire II AGM-114K lézer-irányított rakéta Управляемая ракета лазерного наведения Hellfire II AGM-114K - ヘルファイア II AGM-114K レーザ誘導ミサイル + ヘルファイア II AGM-114K レーザー誘導ミサイル 헬파이어 II AGM-114K 레이저 유도 미사일 AGM-114K 地狱火二型激光制导导弹 地獄火II型 AGM-114K 雷射導引飛彈 @@ -196,10 +196,10 @@ Przełącz tryb ognia Guidage missiles - Changer le mode de tir Tüzelési mód váltása - Alterna le modalità di fuoco + Cambia modalità di fuoco Cambiar modo de disparo Alterar Modo de Disparo - 発射モード切り替え + 発射モードサイクル 발사 방식 순환 循环切换开火模式 循環切換開火模式 diff --git a/addons/missionmodules/stringtable.xml b/addons/missionmodules/stringtable.xml index 0a33a92182..dfdcef97f3 100644 --- a/addons/missionmodules/stringtable.xml +++ b/addons/missionmodules/stringtable.xml @@ -11,7 +11,7 @@ ACE modules de mission ACE küldetési modulok ACE Модули миссий - Moduli Missione ACE + ACE Moduli Missione ACE ミッション モジュール ACE 미션 모듈 ACE 任务模块 @@ -78,7 +78,7 @@ Distance minimale Minimális távolság Мин. дистанция - Distanza Minimale + Distanza Minima 最低距離 최소 거리 最小距离 @@ -95,7 +95,7 @@ Valeur utilisée pour calculer une position aléatoire et définir la distance minimale entre les joueurs et les sons joués. Egy véletlenszerű pozíció számításához használt érték, amihez megadja a minimum távolságot a játékosok és a lejátszott hangfájl(ok) között Используется для расчета случайной позиции и указывает минимальное расстояние между игроками и источниками звука - Usati per calcolare una posizione casuale ed impostare la distanza minima tra i giocatori ed il file suono eseguito + Usati per calcolare una posizione casuale ed impostare la distanza minima tra i giocatori ed il file audio riprodotto 無作為な位置への計算や、プレイヤーと再生されるファイルの間へ最低距離を設定します 무작위 위치 계산에 사용되며 플레이어와 재생된 사운드 파일 간의 최소 거리를 설정합니다. 声音将随机产生在玩家附近,此选项定义该声音最近会距离玩家多少米 @@ -128,7 +128,7 @@ Valeur utilisée pour calculer une position aléatoire et définir la distance maximale entre les joueurs et les sons joués. Egy véletlenszerű pozíció számításához használt érték, amihez megadja a maximum távolságot a játékosok és a lejátszott hangfájl(ok) között Используется для расчета случайной позиции и указывает максимальное расстояние между игроками и источниками звука - Usato per calcolare una posizione casuale ed impostare la distanza massima tra giocatori e il file suono eseguito + Usato per calcolare una posizione casuale ed impostare la distanza massima tra giocatori e il file audio riprodotto 無作為な位置への計算や、プレイヤーと再生されるファイルの間へ最大距離を設定します 무작위 위치 계산에 사용되며 플레이어와 재생된 사운드 파일 간의 최대 거리를 설정합니다. 声音将随机产生在玩家附近,此选项定义该声音最远会距离玩家多少米 @@ -161,7 +161,7 @@ Délai minimal entre deux sons consécutifs. Minimum késleltetés a lejátszott hangok között Минимальная задержка между воспроизведением звуков - Pausa Minima tra suoni eseguiti + Pausa Minima tra suoni riprodotti 再生されるまでの最低遅延 재생된 소리간 최소 지연 시간 设定每个声音档案中间最少间隔多久再进行播放 @@ -195,7 +195,7 @@ Délai maximal entre deux sons consécutifs. Maximum késleltetés a lejátszott hangok között Максимальная задержка между воспроизведением звуков - Pausa Massima tra suoni eseguiti + Pausa Massima tra suoni riprodotti 再生されるまでの最大遅延 재생된 소리간 최대 지연 시간 设定每个声音档案中间最多间隔多久再进行播放 @@ -229,7 +229,7 @@ Suivre les joueurs. Si défini sur false, les sons ne seront joués qu'autour de la position du module. Játékosok követése. Ha le van tiltva, az ismétlés csak a legközelebbi logikai ponton játszik le hangokat. Следовать за игроками. Если установить в Ложь, звуки будут циклически проигрываться только около позиции Логики. - Segui Giocatori. Se impostato su falso, il ciclo eseguirà i suoni solo vicino ad una posizione logica. + Segui Giocatori. Se impostato su falso, il ciclo riprodurrà i suoni solo in prossimità del modulo. プレイヤーを追随します。False に設定するとロジックの近くで延々と再生します。 플레이어를 따라갑니다. False로 설정될 경우 오직 한 자리에서만 반복해서 소리를 재생합니다. 设定声音是否会在玩家的附近产生。假如关闭此功能,声音只会在模块的位置产生。 @@ -263,7 +263,7 @@ Définit le volume des sons. A lejátszott hangok hangereje Громкость воспроизводимых звуков - Il volume dei suoni eseguiti + Il volume dei suoni riprodotti 再生される音の大きさ 재생되는 소리의 볼륨 调整声音的音量 diff --git a/addons/mk6mortar/CfgWeapons.hpp b/addons/mk6mortar/CfgWeapons.hpp index c57c9aa2ea..b32cce1e41 100644 --- a/addons/mk6mortar/CfgWeapons.hpp +++ b/addons/mk6mortar/CfgWeapons.hpp @@ -10,7 +10,7 @@ class CfgWeapons { picture = QPATHTOF(UI\icon_rangeTable.paa); ACE_isTool = 1; class ItemInfo: CBA_MiscItem_ItemInfo { - mass = 0.5; + mass = 0.1; }; }; diff --git a/addons/mk6mortar/RscInGameUI.hpp b/addons/mk6mortar/RscInGameUI.hpp index 4145bc091f..60e5c5f324 100644 --- a/addons/mk6mortar/RscInGameUI.hpp +++ b/addons/mk6mortar/RscInGameUI.hpp @@ -3,7 +3,7 @@ class RscInGameUI { class CA_IGUI_elements_group: RscControlsGroup {}; }; class ACE_Mk6_RscWeaponRangeArtillery: RscWeaponRangeArtillery { - onLoad = QUOTE(uiNamespace setVariable [ARR_2('ACE_Mk6_RscWeaponRangeArtillery', _this select 0)]; [ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Mk6Mortar')])] call CBA_fnc_localEvent;); + onLoad = QUOTE(uiNamespace setVariable [ARR_2('ACE_Mk6_RscWeaponRangeArtillery',_this select 0)]; [ARR_2('ace_infoDisplayChanged',[ARR_2(_this select 0,'Mk6Mortar')])] call CBA_fnc_localEvent;); controls[] = {"ACE_MILS_GROUP", "CA_IGUI_elements_group","CA_RangeElements_group"}; class ACE_MILS_GROUP: CA_IGUI_elements_group { diff --git a/addons/mk6mortar/XEH_preInit.sqf b/addons/mk6mortar/XEH_preInit.sqf index 9361d05015..894773534a 100644 --- a/addons/mk6mortar/XEH_preInit.sqf +++ b/addons/mk6mortar/XEH_preInit.sqf @@ -6,6 +6,6 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" ADDON = true; diff --git a/addons/mk6mortar/initSettings.sqf b/addons/mk6mortar/initSettings.inc.sqf similarity index 100% rename from addons/mk6mortar/initSettings.sqf rename to addons/mk6mortar/initSettings.inc.sqf diff --git a/addons/mk6mortar/stringtable.xml b/addons/mk6mortar/stringtable.xml index b5b50a4f08..a0d8612aa5 100644 --- a/addons/mk6mortar/stringtable.xml +++ b/addons/mk6mortar/stringtable.xml @@ -12,7 +12,7 @@ Tabela de distâncias de para 82mm 82mm Rangetable Tavola di tiro 82mm - 82mm 射表 + 82mm用 射表 82mm 사거리표 82 mm 迫击炮射表 82毫米迫擊炮射表 @@ -28,8 +28,8 @@ Hatótáv-tábla a Mk6 82mm-es mozsárhoz Tabela de distâncias para morteiro Mk6 82mm Rangetable pro Mk6 82mm minomet - Tavola di tiro per il mortaio calibro 82mm Mk6 - Mk6 82mm 迫撃砲の射表 + Tavola di tiro per il mortaio Mk6 di calibro 82mm + Mk6 82mm迫撃砲専用の射撃表 Mk6 82mm 박격포 사격을 위한 사거리표 MK6 82 mm 迫击炮射表 MK6 82毫米迫擊炮射表 @@ -46,7 +46,7 @@ Abrir tabela de distâncias para 82mm Otevřít 82mm Rangetable Apri la tavola di tiro 82mm - 82mm 射表を開く + 82mm用射表を開く 82mm 사거리표 열기 开启82 mm 迫击炮射表 開啟82毫米迫擊炮射表 @@ -130,7 +130,7 @@ Játékos általi lövésekhez, legyen-e számított légellenállás és szélhatás Для выстрелов игрока. Моделирует сопротивление воздуха и эффект ветра Per Proiettili dei Giocatori, simula la Resistenza dell'Aria e gli Effetti del Vento - プレイヤが射撃すると、空気抵抗モデルと風による影響をあたえます。 + プレイヤーが射撃すると、空気抵抗モデルと風による影響をあたえます。 플레이어가 사격 시 공기저항과 바람에 영향을 받습니다 设定由玩家射击的迫击炮,将会受到空气阻力与风力的影响 設定由玩家射擊的迫擊砲,將會受到空氣阻力與風力的影響 @@ -146,7 +146,7 @@ Mk6 számítógép engedélyezése Разрешить компьютер Mk6 Consenti Computer Mk6 - Mk6 コンピュータを許可 + Mk6の砲撃コンピュータを許可 Mk6 탄도계산컴퓨터 허가 允许使用 MK6 弹道计算机 允許使用MK6射控電腦 @@ -162,8 +162,8 @@ Affiche l'ordinateur de tir et le télémètre. Cette option doit être DÉSACTIVÉE si la résistance de l'air est activée. A távmérő és számítógép megjelenítése (ezeket el KELL távolítani ha a légellenállás engedélyezve van) Показывает компьютер и дальномер (это НУЖНО отключить, если вы включаете сопротивление воздуха) - Mostra il Computer e Distaziometro (questi DEVONO essere rimossi se vuoi abilitare la resistenza dell'aria) - コンピュータと距離を表示します (空気抵抗を有効化している場合は必ず削除してください) + Consenti l'utilizzo del Computer Balistico e del Telemetro (questi DEVONO essere disabilitati se vuoi abilitare la resistenza dell'aria) + 砲撃コンピュータと距離計を表示します (空気抵抗を仕様する場合は必ず無効化する必要があります) 탄도계산컴퓨터와 거리측정기를 보여줍니다(공기저항을 활성화했을 경우 이 항목은 비활성화 되어야 합니다) 显示弹道计算机和测距仪(如果有启用空气阻力功能时,须停用此项功能) 顯示射控電腦和測距儀 (如果有啟用空氣阻力功能時,須停用此項功能) @@ -174,12 +174,12 @@ Habilitar brujula del Mk6 Erlaube Mk6-Kompass Mk6 - Povolit kompas - Permitir bússula do Mk6 + Permitir bússola do Mk6 Activer la boussole du Mk6 Mk6 iránytű engedélyezése Разрешить компас Mk6 Consenti Bussola Mk6 - Mk6 への方位磁石を有効化 + Mk6の方位磁石を許可 Mk6 나침반 허용 允许使用 MK6 指南针 允許使用MK6指北針 @@ -191,12 +191,12 @@ Muestra la brujula digital en el Mk6 Zeige Mk6-Digitaler-Kompass Mk6 - Zobrazit digitální kompas - Mostra a bússula digital do Mk6 + Mostra a bússola digital do Mk6 Affiche la boussole numérique du Mk6. Az Mk6 digitális iránytű megjelenítése Показывает цифровой компас Mk6 - Mostra la Bussola Digitale Mk6 - Mk6 のデジタル方位磁石を表示 + Mostra la Bussola Digitale del Mk6 + Mk6迫撃砲のデジタル方位磁石を表示します Mk6 에서 전자 나침반을 보여줍니다 显示 MK6 的电子指南针 顯示MK6的數位指北針 @@ -210,9 +210,9 @@ Este módulo permite que você ajuste o morteiro Mk6. Модуль настройки миномета Mk6. Ce module permet de régler les options du mortier Mk6. - Questo modulo ti consente di impostare i parametri del mortaio Mk6. + Questo modulo ti consente di impostare le impostazioni del mortaio Mk6. Este módulo permite configurar los parámetros del mortero Mk6. - Mk6 迫撃砲への設定をできます。 + このモジュールでは、Mk6 迫撃砲の設定をセットアップできます。 이 모듈은 Mk6 설치 설정을 가능케 합니다. 这个模块允许你设定 MK6 迫击炮的相关功能 這個模塊允許你設定MK6迫擊砲的相關功能 @@ -238,7 +238,7 @@ Elimina los cargadores del mortero, requiriendo al artillero o cargador la carga manual de cada rondas. No afecta morteros controlados por IA. Usuwa magazynki moździerza, wymagając ładowania pojedynczych pocisków przez strzelca lub ładowniczego. Nie dotyczy moździerzy AI. Enlève les chargeurs de mortier, ce qui oblige le tireur ou le servant à charger les obus manuellement. N'affecte pas les mortiers IA. - Toglie i proiettili dal mortaio. I colpi singoli devono essere caricati dall'operatore. Non cambia quado l'IA spara. + Rimuove i caricatori di colpi dal mortaio. Un operatore dovrà caricare proiettili singoli prima di poter fare fuoco. Non viene applicato su operatori IA. Elimina os carregadores do morteiro, requerendo que o atirador ou carregador utilize de forma individual a munição. Não afeta os morteiros controlados pela IA. Удаляет артиллерийские магазины, требует загрузку отдельных снарядов стрелком или заряжающим. Не влияет на артиллерию ИИ. 迫撃砲から弾薬を除去します。射手か装填手により予め装填されている必要があります。AI迫撃砲へ影響を与えません。 @@ -285,7 +285,7 @@ Descargando ronda Rozładowywanie moździerza Déchargement de l'obus - Scarica proiettile + Togliendo Proiettile Descarregar munição Извлечение снаряда 弾薬を除去しています @@ -301,7 +301,7 @@ Preparando ronda Przygotowywanie pocisku Praparation de l'obus - Prepara il proiettile + Caricando Proiettile Připavuji náboj Preparar munição Подготовка снаряда @@ -317,11 +317,11 @@ Cargar HE Załaduj pocisk wybuchowy Charger HE - Carica proiettile esplosivo ad alto potenziale (HE) + Carica Proiettile Esplosivo (HE) Nabít HE Carregar HE Зарядить фугасный - りゅう弾を装填 + 榴弾を装填 고폭탄 장전 装载高爆弹 裝載高爆彈 @@ -333,7 +333,7 @@ Cargar Humo Załaduj pocisk dymny Charger Fumigène - Carica fumogeno + Carica Proiettile Fumogeno Nabít Dýmovnici Carregar Fumaça Зарядить дымовой @@ -349,7 +349,7 @@ Cargar Iluminación Załaduj pocisk oświetlający Charger Éclairant - Carica illuminante + Carica Proiettile Illuminante Nabít Světlici Carregar Iluminação Зарядить осветительный @@ -365,11 +365,11 @@ Cagar HE Guiada Załaduj kierowany pocisk wybuchowy Charger HE guidé - Carica HE guidata + Carica Proiettile Esplosivo (HE) Guidato Nabít HE (Naváděné) Carregar HE Guiada Зарядить фугасный управляемый - 誘導りゅう弾を装填 + 誘導榴弾を装填 유도 고폭탄 장전 装载制导高爆弹 裝載導引高爆彈 @@ -381,11 +381,11 @@ Cargar HE Guiada por Laser Załaduj laserowo napr. pocisk wybuchowy Charger HE guidé au laser - Carica HE a guida laser + Carica Proiettile Esplosivo (HE) Laserguidato Nabít HE (Naváděné laserem) Carregar HE Guiada por Laser Зарядить фугасный управляемый по ЛЦУ - レーザ誘導りゅう弾を装填 + レーザー誘導榴弾を装填 레이저 유도 고폭탄 장전 装填激光制导高爆弹 裝載雷射導引高爆彈 @@ -401,7 +401,7 @@ [CSW] 82mm HE náboj [CSW] Munição 82mm HE [CSW] Фугасный снаряд 82мм - [CSW] 82mm りゅう弾 + [CSW] 82mm 榴弾 [CSW] 82mm 고폭탄 [班组] 82 mm 高爆弹 [CSW] 82毫米高爆彈 @@ -413,7 +413,7 @@ [CSW] Ronda 82mm Humo [CSW] Pocisk dymny kal. 82mm [CSW] Obus de 82 mm fumigène - [CSW] Proiettile Fumogeno da 82mm + [CSW] Proiettile da 82mm Fumogeno [CSW] 82mm Kouřový náboj [CSW] Munição 82mm Fumaça [CSW] Дымовой снаряд 82мм @@ -429,7 +429,7 @@ [CSW] Ronda 82mm Iluminación [CSW] Pocisk oświetlający kal. 82mm [CSW] Obus de 82 mm éclairant - [CSW] Proiettile illuminante da 82mm + [CSW] Proiettile da 82mm Illuminante [CSW] 82mm Osvětlovací náboj [CSW] Munição 82mm Iluminação [CSW] Осветительный снаряд 82мм @@ -445,11 +445,11 @@ [CSW] Ronda 82mm Guiada [CSW] Kierowany pocisk wybuchowy kal. 82mm [CSW] Obus de 82 mm HE guidé - [CSW] Proiettile HE guidato + [CSW] Proiettile da 82mm HE Guidato [CSW] 82mm HE náboj (naváděný) [CSW] Munição 82mm HE Guiada [CSW] Фугасный снаряд управляемый 82мм - [CSW] 82mm 誘導りゅう弾 + [CSW] 82mm 誘導榴弾 [CSW] 82mm 유도 고폭탄 [班组] 82 mm 制导高爆弹 [CSW] 82毫米導引高爆彈 @@ -461,11 +461,11 @@ [CSW] Ronda 82mm Guiada por Laser [CSW] Laserowo napr. pocisk wybuchowy kal. 82mm [CSW] Obus de 82 mm HE guidé au laser - [CSW] Proiettile HE a guida laser + [CSW] Proiettile da 82mm HE Laserguidato [CSW] 82mm HE náboj (naváděný laserem) [CSW] Munição 82mm HE Guiada por Laser [CSW] Фугасный снаряд управляемый по ЛЦУ 82мм - [CSW] 82mm レーザ誘導りゅう弾 + [CSW] 82mm レーザー誘導榴弾 [CSW] 82mm 레이저 유도 고폭탄 [班组] 82 mm 激光制导高爆弹 [CSW] 82毫米雷射導引高爆彈 @@ -481,7 +481,7 @@ Používá se u minometu Mk6 Usada no Morteiro MK6 Использовался в миномете Mk6 - Mk6 mortar で使います + Mk6 迫撃砲 で使用 Mk6 박격포에 사용됨 用于 Mk6 迫击炮 用於Mk6迫擊砲 @@ -492,11 +492,11 @@ [ACE] Caja de municiones 82mm HE [ACE] Skrzynka amunicji wybuchowej 82mm [ACE] Obus de 82 mm HE - [ACE] Scatola proiettili espolisvi ad alto potenziale (HE) da 82mm + [ACE] Scatola Proiettili Esplosivi (HE) da 82mm [ACE] Bedna s municí (82mm HE) [ACE] Caixa de Munição 82mm HE [ACE] Ящик фугасных снарядов 82мм - [ACE] 82mm りゅう弾入り弾薬箱 + [ACE] 82mm 榴弾入り弾薬箱 [ACE] 82mm 고폭탄 상자 [ACE] 82 mm 高爆弹药箱 [ACE] 82毫米高爆彈藥箱 @@ -508,7 +508,7 @@ [ACE] Caja de municiones 82mm Humo [ACE] Skrzynka amunicji dymnej 82mm [ACE] Obus de 82 mm fumigène - [ACE] Scatola fumogeni da 82mm + [ACE] Scatola Proiettili Fumogeni da 82mm [ACE] Bedna s municí (82mm Dýmovnice) [ACE] Caixa de Munição 82mm Fumaça [ACE] Ящик дымовых снарядов 82мм @@ -524,7 +524,7 @@ [ACE] Caja de municiones 82mm Iluminacion [ACE] Skrzynka amunicji oświetlającej 82mm [ACE] Obus de 82 mm éclairants - [ACE] Scatola illuminanti da 82mm + [ACE] Scatola Proiettili Illuminanti da 82mm [ACE] Bedna s municí (82mm Světlice) [ACE] Caixa de Munição 82mm Iluminação [ACE] Ящик осветительных снарядов 82мм @@ -540,7 +540,7 @@ [ACE] Caja de municiones 82mm por defecto [ACE] Skrzynka amunicji standardowej 82mm [ACE] Obus de 82 mm par défaut - [ACE] Scatola proiettili 82mm standard + [ACE] Scatola Proiettili 82mm Misti [ACE] Bedna se standardní 82mm municí [ACE] Caixa de Munição 82mm Padrão [ACE] Ящик снарядов 82мм (стандартный) diff --git a/addons/movement/CfgEventHandlers.hpp b/addons/movement/CfgEventHandlers.hpp index 2608d0260b..f6503c2479 100644 --- a/addons/movement/CfgEventHandlers.hpp +++ b/addons/movement/CfgEventHandlers.hpp @@ -15,9 +15,3 @@ class Extended_PostInit_EventHandlers { init = QUOTE(call COMPILE_SCRIPT(XEH_postInit)); }; }; - -class Extended_DisplayLoad_EventHandlers { - class RscDisplayInventory { - ADDON = QUOTE(_this call FUNC(inventoryDisplayLoad)); - }; -}; diff --git a/addons/movement/XEH_PREP.hpp b/addons/movement/XEH_PREP.hpp index ceafa7f5dc..36fe97880d 100644 --- a/addons/movement/XEH_PREP.hpp +++ b/addons/movement/XEH_PREP.hpp @@ -3,4 +3,3 @@ PREP(canClimb); PREP(climb); PREP(handleClimb); PREP(handleVirtualMass); -PREP(inventoryDisplayLoad); diff --git a/addons/movement/stringtable.xml b/addons/movement/stringtable.xml index 544e7914a7..560d407f68 100644 --- a/addons/movement/stringtable.xml +++ b/addons/movement/stringtable.xml @@ -12,7 +12,7 @@ Mostrar peso em libras Súly megjelenítése fontban. Показывать вес в фунтах - ポンドで重量を表示する + ポンドで重量を表示 무게를 파운드(lb)로 보여줍니다 使用磅来显示重量 使用磅來顯示重量 @@ -29,7 +29,7 @@ Mászás Arrampicati Subir - 登る + よじ登る 오르기 攀爬 攀爬 diff --git a/addons/mx2a/stringtable.xml b/addons/mx2a/stringtable.xml index 390a264f3a..fd7a76d6fa 100644 --- a/addons/mx2a/stringtable.xml +++ b/addons/mx2a/stringtable.xml @@ -29,8 +29,8 @@ Hőleképező készülék Тепловизионный прибор Dispositivo di visione termica - サーマル画像表示双眼鏡 - 열영상 장치 + 熱画像表示装置 + 열화상 장치 热成像装置 熱成像裝置 Termal Görüntüleme Aracı diff --git a/addons/nametags/XEH_preInit.sqf b/addons/nametags/XEH_preInit.sqf index 9361d05015..894773534a 100644 --- a/addons/nametags/XEH_preInit.sqf +++ b/addons/nametags/XEH_preInit.sqf @@ -6,6 +6,6 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" ADDON = true; diff --git a/addons/nametags/initSettings.sqf b/addons/nametags/initSettings.inc.sqf similarity index 100% rename from addons/nametags/initSettings.sqf rename to addons/nametags/initSettings.inc.sqf diff --git a/addons/nametags/stringtable.xml b/addons/nametags/stringtable.xml index 791050abef..9f410c6a75 100644 --- a/addons/nametags/stringtable.xml +++ b/addons/nametags/stringtable.xml @@ -12,7 +12,7 @@ Névcímkék Имена игроков Etichette Nomi - 名札 + ネーム タグ 이름표 玩家名称 玩家名稱 @@ -28,8 +28,8 @@ Ce module permet de configurer les options et la distance d'affichage du nom des unités. Ez a modul lehetővé teszi a névcímkék beállításainak testreszabását. Этот модуль позволяет настроить опции и дистанцию отображения имен игроков. - Questo modulo ti consente di personalizzare le impostazioni ed il raggio delle Etichette Nomi - これは名札の表示範囲と設定を変更できます。 + Questo modulo ti consente di personalizzare le impostazioni ed la distanza visibile delle Etichette Nomi + このモジュールを使用すると、ネーム タグの設定と範囲を調整できます。 이 모듈은 당신이 이름표의 범위를 임의로 수정할 수 있게 해줍니다. 这个模块允许您设定名字和显示范围等设定 這個模塊允許您設定名稱和顯示範圍等設定 @@ -63,7 +63,7 @@ Mostrar nomes de jogadores Mostra i nomi dei giocatori Показывать имена игроков (включить имена) - プレイヤ名を表示 + プレイヤー名を表示 플레이어 이름 표시 显示玩家名称 顯示玩家名稱 @@ -80,7 +80,7 @@ Mutassa a játékosok nevét és kezelje az aktivációjukat. Alapértelmezett: Engedélyezve Показывать имена игроков и установить их активацию. По умолчанию: Включено Mostra nomi giocatori ed imposta la loro attivazione. Default: Abilitato - プレイヤ名の表示と設定を有効化します。標準: 有効 + プレイヤー名の表示とそれを有効にする方法を設定します。 デフォルト: 有効 플레이어 이름의 표시와 설정을 활성화합니다. 기본설정: 활성화 显示玩家的名字并设置其启动方式。预设:启用 顯示玩家的名稱並設置其啟動方式。預設: 啟用 @@ -97,7 +97,7 @@ Csak kurzorra Только под курсором Solo su Cursore - カーソルでのみ + カーソルを合わせた時 커서만 해당 只有准心指到时 只有準心指到時 @@ -114,7 +114,7 @@ Csak gombnyomásra Только по нажатию клавиши Solo quando Premi Tasto - キー押下のみ + キーを押した時のみ 키를 누를 경우만 只有按按键时 只有按按鍵時 @@ -131,7 +131,7 @@ Csak kurzorra és gombnyomásra Под курсором или по нажатию клавиши Solo su Cursore e quando Premi Tasto - カーソルとキー押下のみ + カーソルを合わせてキーを押した時のみ 커서와 키를 누를 경우만 只有在准心指到和按按键时 只有在準心指到和按按鍵時 @@ -140,11 +140,11 @@ Fade on screen border Am Bildschirmrand ausblenden - 画面端では非表示 + 画面端でフェードアウト Ukryj na brzegach ekranu 화면 가장자리에서 사라짐 Estomper sur les bords de l'écran - Sfocatura nei bordi dello schermo + Sfoca ai bordi dello schermo 在屏幕边框旁淡出 在螢幕邊框旁淡出 Затухание на границе экрана @@ -164,7 +164,7 @@ Mostrar patente de jogadores (requer nome de jogadores) Játékosok rendfokozatának mutatása (a nevek mutatása szükséges) Показывать звания игроков (при вкл. именах) - プレイヤの階級を表示 (プレイヤ名が必要) + プレイヤーの階級を表示 (プレイヤー名を表示が必要) 플레이어 계급 표시 (플레이어 이름 필요) 显示玩家军阶(玩家必须有设定名字) 顯示玩家軍階 (玩家必須有設定名稱) @@ -198,7 +198,7 @@ A legénységi adatok mutatása, alapértelmezett esetben a játékos által kiválasztható. Alapértelmezett: Nincs felülbírálás Показывать информацию об экипаже техники, или по умолчанию, позволяет игрокам выбрать свою настройку. По умолчанию: Не обязывать Mostra informazioni sull'equipaggio del veicolo, oppure consenti di default di lasciare che siano i giocatori a scegliere. Default: Non Forzare - 車両の乗員を表示します。標準ではプレイヤ各々が選べられます。標準: 強制しない + 車両の乗組員情報を表示するか、デフォルトでのようにプレイヤーが自分で情報を選択できるようにします。 デフォルト: 強制しない 승무원 정보를 표시하거나 플레이어가 직접 고르게 놔둡니다. 기본설정: 강제하지 않음 显示载具成员信息。在预设的情况下,系统允许玩家自己决定开关此信息。预设:不显示 顯示載具成員訊息。在預設的情況下,系統允許玩家自己決定開關此訊息。預設: 不顯示 @@ -215,7 +215,7 @@ Névcímkék mutatása MI-egységeknél Mostra i nomi delle le unità AI Mostrar nomes para unidades de IA - AIユニットの名札を表示 + AIユニットのネーム タグを表示 인공지능 인원 이름 표시 显示 AI 单位名字 顯示AI單位名稱 @@ -232,7 +232,7 @@ Mutassa-e a szövetséges AI egységek nevét és rangját? Alapértelmezett: Nincs felülbírálás Показывать имена и звания дружественных ботов? По умолчанию: Не обязывать Mostra etichette nomi ed etichette gradi per unità IA alleate? Default: Non forzare - 友軍のAIにも名前と階級を表示しますか? 標準: 強制しない + 友軍のAIにも名前と階級を表示しますか? デフォルト: 強制しない 아군 인공지능의 계급을 표시합니까? 기본설정: 강제하지 않음 显示友军 AI 的名字和军阶? 预设:不显示 顯示友軍AI的名稱和軍階? 預設: 不顯示 @@ -265,7 +265,7 @@ Показывать имя командира техники (только если клиент включил отображение имен). По умолчанию: Нет Affiche les noms pour les commandants de véhicule (uniquement si le client a activé l'affichage des noms). Mostra il nome sul cursore per il comandante del veicolo (solo se il client ha le Etichette Nomi attive) Default: No - 車長の名札をカーソルを当てて表示します (クライアント側で名札を有効化する必要があります) 標準: 無効 + カーソルを当てた時、車長のネーム タグを表示します (クライアント側でネーム タグを有効化する必要があります) デフォルト: 無効 차장의 이름표를 표시합니다 (오직 클라이언트가 이름표를 활성화할 시에만 보입니다) 기본설정: 아니요 使载具指挥官能透过准心指到别的单位来显示其名字(仅当客户端的名字功能已启用)。预设:关闭 使載具指揮官能透過準心指到別的單位來顯示其名稱 (僅當客戶端的名稱功能已啟用)。預設: 關閉 @@ -282,7 +282,7 @@ "Hanghullámok" mutatása (a nevek mutatása szükséges) Mostra movimento audio (insieme ai nomi) Mostrar onda sonora (requer nome de jogadores) - 音波形を表示 (プレイヤ名が必要) + 音波形を表示 (プレイヤー名の表示が必要) 음파 표시 (플레이어 이름 필요) 当玩家讲话时,显示声波图案(玩家必须有设定名字) 當玩家講話時,顯示聲波圖案 (玩家必須有設定名稱) @@ -299,7 +299,7 @@ Hanghullám-effekt a beszélő játékosok feje felett a PTT-gomb lenyomásakor. Ez a beállítás TFAR és ACRE2 alatt működik. Эффект звуковой волны над головами говорящих игроков при удерживании кнопки push-to-talk. Эта опция работает также с рациями TFAR и ACRE2. Effetto delle onde sonore sopra la testa dei giocatori parlanti quando premono il tasto PTT. Questa opzione funziona con TFAR ed ACRE2 - プレイヤーが PTT キーを押している間は、音波形を表示します。このオプションは TFAR と ACRE2 で動作します。 + プレイヤーが PTT キーを押している間は、音波形を表示します。 このオプションは TFAR と ACRE2 で動作します。 플레이어가 눌러서 말할 시 머리위에 음파효과를 적용합니다. 이 옵션은 TFAR과 ACRE2가 있을 때만 적용됩니다. 当玩家使用按键发话时,其头上的角色名字旁会显示声波的图案。此功能可搭配 TFAR、ACRE2 等模组使用。 當玩家使用按鍵發話時,其頭上的角色名稱旁會顯示聲波的圖案。此功能可搭配TFAR、ACRE2等模組使用。 @@ -316,7 +316,7 @@ Névcímkék beállításának használata Так же, как имена Usa impostazioni Etichette Nomi - 名札の設定 + ネーム タグの設定 이름표 설정 사용 玩家名称设定 玩家名稱設定 @@ -333,7 +333,7 @@ Mindig minden mutatása Всегда показывать Mostra Sempre Tutto - 常に表示する + 常に全て表示する 항상 모두 표시 永远显示全部 永遠顯示全部 @@ -350,7 +350,7 @@ Játékosok nevének látótávja Дистанция отображения имен Distanza Visiva Etichette Nomi - プレイヤ名が見える範囲 + プレイヤー名の表示距離 플레이어 이름 표시 거리 玩家名称显示距离 玩家名稱顯示距離 @@ -366,8 +366,8 @@ Distance au delà de laquelle les noms des joueurs ne sont plus affichés. Valeur par défaut : 5 mètres. Méterben megadott érték a játékosok nevének mutatására. Alapértelmezett: 5 Дистанция в метрах, на которой отображаются имена игроков. По умолчанию: 5 - Distanza in metri a cui sono visibili i nomi giocatori. Default: 5 - プレイヤの周り何メートルまで名札を表示できます。標準: 5 + Distanza in metri entro la quale sono visibili i nomi dei giocatori. Predefinito: 5 + プレイヤー名が表示される距離 (メートル)。 デフォルト: 5 플레이어 이름이 표시되는 미터. 기본설정: 5 设定名字在多少距离以内显示。预设:5米 設定名稱在多少距離以內顯示。預設:5公尺 @@ -376,7 +376,7 @@ Player tags transparency Spielernamen Transparenz - プレイヤー名札の透明度 + プレイヤーのネーム タグの透明度 玩家名称标签透明度 玩家名稱透明度 Trasparenza Etichette Nome @@ -400,7 +400,7 @@ Névcímkék mérete Размер имен игроков Dimensione Etichette Nome - 名札の大きさ + ネーム タグの大きさ 이름표 크기 玩家名称标记大小 玩家名稱標記大小 @@ -416,9 +416,9 @@ Taille du texte et des icônes. Szöveg és ikon méretének skálázása Масштабирование размера текста и иконок - Proporzione Dimensioni Testo ed Icone + Proporzione e Dimensioni di Testo ed Icone 文字とアイコンの大きさ - 글자와 아이콘 크기 비례 + 글자와 아이콘 크기 비례합니다 文字和图示大小设定 文字和圖示大小設定 Metin ve Simge Boyutu Ölçeklendirme @@ -434,7 +434,7 @@ Alap névcímke-szín (csoporton kívüli személyek) Colore dei nomi non appartenenti al gruppo Cor padrão do nome (unidades fora do grupo) - 標準の名札の色 (グループメンバー以外) + ネーム タグの標準色 (グループメンバー以外) 기본 이름표 색상 (비그룹 멤버) 预设名字颜色(非同小队队友) 預設名稱顏色 (非同小隊隊友) @@ -451,7 +451,7 @@ Erőltetett rejtett Обязательно: Скрывать Forza Nascosto - 強制で非表示 + 非表示を強制 강제로 숨기기 强制隐藏 強迫隱藏 @@ -467,8 +467,8 @@ /!\ Module obsolète /!\ - Forcer l'affichage Erőltetett látható Обязательно: Показывать - Forza Mostra - 強制で表示 + Forza Visibili + 表示を強制 강제로 표시 强制显示 強迫顯示 @@ -484,8 +484,8 @@ /!\ Module obsolète /!\ - Forcer l'affichage sous le curseur uniquement Erőltetett látható, csak kurzorra Обязательно: Только под курсором - Forza Mostra solo su Cursore - カーソルでのみに強制する + Forza Visibili solo su Cursore + カーソルを合わせた時のみ に強制する 커서만 강제로 해당 强制仅显示在准心指到时 強制僅顯示在準心指到時 @@ -501,8 +501,8 @@ /!\ Module obsolète /!\ - Forcer l'affichage par appui de touche uniquement Erőltetett látható, csak gombnyomásra Обязательно: Только по нажатию клавиши - Forza Mostra solo quando Premi Tasto - キー押下のみに強制する + Forza Visibili solo quando Premi Tasto + キーを押した時のみ に強制 키를 누를 경우만 강제로 해당 强制仅显示在按按键时 強制僅顯示在按按鍵時 @@ -519,7 +519,7 @@ Erőltetett látható, csak kurzorra és gombnyomásra Обязательно: Под курсором или по нажатию клавиши Forza Mostra solo su Cursore e quando Premi Tasto - カーソルとキー押下のみに強制する + カーソルを合わせてキーを押した時のみ に強制 커서와 키를 누를 경우만 강제로 해당 强制显示在准心指到和按按键时 強制顯示在準心指到和按按鍵時 @@ -528,7 +528,8 @@ Nametag Ambient Brightness Coefficient Коэф. освещения для меток игроков - 環境名札明るさ係数 + Coeff. di Luminosità Ambiente + ネーム タグ 環境明るさ係数 Coefficient de luminosité ambiante Spielernamen Umgebungshelligkeitskoeffizient Współczynnik jasności otoczenia @@ -539,7 +540,8 @@ Adjusts how strongly ambient brightness affects nametag view distance. Определяет как сильно окружающее освещение влияет на дальность отображения меток игроков. - 環境光の強さによって名札の描画距離を調整します。 + Definisce quanto fortemente la luminosità dell'ambiente influenza la visibilità delle etichette nomi. + 周囲の明るさがネーム タグの表示距離にどの程度強く影響するかを調整します。 Définit à quel point le manque de lumière ambiante abaisse la distance de visibilité du nom des joueurs. Stellt ein, wie stark sich die Umgebungshelligkeit auf die Sichtweite der Spielernamen auswirkt. Definiuje jak bardzo jasność otoczenia wpływa na zasięg wyświetlania imion postaci. diff --git a/addons/nightvision/XEH_preInit.sqf b/addons/nightvision/XEH_preInit.sqf index 9361d05015..894773534a 100644 --- a/addons/nightvision/XEH_preInit.sqf +++ b/addons/nightvision/XEH_preInit.sqf @@ -6,6 +6,6 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" ADDON = true; diff --git a/addons/nightvision/functions/fnc_pfeh.sqf b/addons/nightvision/functions/fnc_pfeh.sqf index 3300a7ae28..ad484d097e 100644 --- a/addons/nightvision/functions/fnc_pfeh.sqf +++ b/addons/nightvision/functions/fnc_pfeh.sqf @@ -25,8 +25,8 @@ if (currentVisionMode _unit != 1) exitWith { GVAR(PFID) = -1; (missionNamespace getVariable [QGVAR(firedEHs), []]) params [["_firedPlayerID", -1], ["_firedPlayerVehicleID", -1]]; TRACE_2("removing fired EHs",_firedPlayerID,_firedPlayerVehicleID); - ["ace_firedPlayer", _firedPlayerID] call CBA_fnc_removeEventHandler, - ["ace_firedPlayerVehicle", _firedPlayerVehicleID] call CBA_fnc_removeEventHandler, + ["ace_firedPlayer", _firedPlayerID] call CBA_fnc_removeEventHandler; + ["ace_firedPlayerVehicle", _firedPlayerVehicleID] call CBA_fnc_removeEventHandler; }; if (EGVAR(common,OldIsCamera)) exitWith { if (GVAR(running)) then { diff --git a/addons/nightvision/functions/fnc_refreshGoggleType.sqf b/addons/nightvision/functions/fnc_refreshGoggleType.sqf index 60ac627889..7414e58d02 100644 --- a/addons/nightvision/functions/fnc_refreshGoggleType.sqf +++ b/addons/nightvision/functions/fnc_refreshGoggleType.sqf @@ -27,7 +27,8 @@ private _nvgGen = 3; private _blurRadius = -1; // Adds Array of Params / Original ACE3's (ST's) by default. (NVG_GREEN_PRESET) -private _preset = getArray (configFile >> "CfgWeapons" >> "NVGoggles" >> "colorPreset"); +private _preset = getArray (configFile >> "CfgWeapons" >> "NVGoggles" >> QGVAR(colorPreset)); + if ((alive ACE_player) && {isNull (ACE_controlledUAV select 0)}) then { if (((vehicle ACE_player) == ACE_player) || { // Test if we are using player's nvg or if sourced from vehicle: @@ -47,7 +48,7 @@ if ((alive ACE_player) && {isNull (ACE_controlledUAV select 0)}) then { TRACE_1("souce: binocular",binocular ACE_player); // Source is from player's binocular (Rangefinder/Vector21bNite) private _config = configFile >> "CfgWeapons" >> (binocular ACE_player); if (isNumber (_config >> QGVAR(generation))) then {_nvgGen = getNumber (_config >> QGVAR(generation));}; - if (isArray (_config >> "colorPreset")) then {_preset = getArray (_config >> "colorPreset");}; + if (isArray (_config >> QGVAR(colorPreset))) then {_preset = getArray (_config >> QGVAR(colorPreset));}; }; TRACE_1("source: hmd",GVAR(playerHMD)); // Source is player's HMD (or possibly a NVG scope, but no good way to detect that) @@ -62,7 +63,7 @@ if ((alive ACE_player) && {isNull (ACE_controlledUAV select 0)}) then { if (isNumber (_config >> QGVAR(bluRadius))) then {_blurRadius = getNumber (_config >> QGVAR(bluRadius));}; }; if (isNumber (_config >> QGVAR(generation))) then {_nvgGen = getNumber (_config >> QGVAR(generation));}; - if (isArray (_config >> "colorPreset")) then {_preset = getArray (_config >> "colorPreset");}; + if (isArray (_config >> QGVAR(colorPreset))) then {_preset = getArray (_config >> QGVAR(colorPreset));}; } else { TRACE_1("source: vehicle - defaults",typeOf vehicle ACE_player); }; diff --git a/addons/nightvision/functions/fnc_setupDisplayEffects.sqf b/addons/nightvision/functions/fnc_setupDisplayEffects.sqf index 5e30fa21ce..bb7067689c 100644 --- a/addons/nightvision/functions/fnc_setupDisplayEffects.sqf +++ b/addons/nightvision/functions/fnc_setupDisplayEffects.sqf @@ -51,7 +51,7 @@ if (GVAR(fogScaling) > 0) then { // Note: Using BIS_fnc_rscLayer because of bug with string syntax - https://feedback.bistudio.com/T120768 (QGVAR(display) call BIS_fnc_rscLayer) cutText ["", "PLAIN"]; // Cleanup Old Display if (_activated) then { // Create New Display - (QGVAR(display) call BIS_fnc_rscLayer) cutRsc [QGVAR(title), "PLAIN", 0, false]; + (QGVAR(display) call BIS_fnc_rscLayer) cutRsc [QGVAR(title), "PLAIN", 0, false, false]; // draw under HUD }; // Cleanup Old PP Effects diff --git a/addons/nightvision/initSettings.sqf b/addons/nightvision/initSettings.inc.sqf similarity index 98% rename from addons/nightvision/initSettings.sqf rename to addons/nightvision/initSettings.inc.sqf index afcc7250c9..9d11956a12 100644 --- a/addons/nightvision/initSettings.sqf +++ b/addons/nightvision/initSettings.inc.sqf @@ -19,8 +19,8 @@ GVAR(nextEffectsUpdate) = -1; (missionNamespace getVariable [QGVAR(firedEHs), []]) params [["_firedPlayerID", -1], ["_firedPlayerVehicleID", -1]]; TRACE_2("removing fired EHs",_firedPlayerID,_firedPlayerVehicleID); - ["ace_firedPlayer", _firedPlayerID] call CBA_fnc_removeEventHandler, - ["ace_firedPlayerVehicle", _firedPlayerVehicleID] call CBA_fnc_removeEventHandler, + ["ace_firedPlayer", _firedPlayerID] call CBA_fnc_removeEventHandler; + ["ace_firedPlayerVehicle", _firedPlayerVehicleID] call CBA_fnc_removeEventHandler; } else { // Start PFH if scaling was previously set to 0 if ((currentVisionMode ACE_player == 1) && {!GVAR(running)}) then { diff --git a/addons/nightvision/script_component.hpp b/addons/nightvision/script_component.hpp index 2bf48a8d05..68548ed39f 100644 --- a/addons/nightvision/script_component.hpp +++ b/addons/nightvision/script_component.hpp @@ -19,8 +19,8 @@ // Effect Settings / Magic values to tweak: -#define NVG_GREEN_PRESET colorPreset[] = {0, {0.0, 0.0, 0.0, 0.0}, {1.3, 1.2, 0.0, 0.9}, {6, 1, 1, 0.0}} -#define NVG_WHITE_PRESET colorPreset[] = {0.0, {0.0, 0.0, 0.0, 0.0}, {1.1, 0.8, 1.9, 0.9}, {1, 1, 6, 0.0}} +#define NVG_GREEN_PRESET GVAR(colorPreset)[] = {0, {0.0, 0.0, 0.0, 0.0}, {1.3, 1.2, 0.0, 0.9}, {6, 1, 1, 0.0}} +#define NVG_WHITE_PRESET GVAR(colorPreset)[] = {0.0, {0.0, 0.0, 0.0, 0.0}, {1.1, 0.8, 1.9, 0.9}, {1, 1, 6, 0.0}} // Decreases fog when in air vehicles #define ST_NVG_AIR_FOG_MULTIPLIER 0.5 diff --git a/addons/nightvision/stringtable.xml b/addons/nightvision/stringtable.xml index b1d9ebf54a..f3644f9045 100644 --- a/addons/nightvision/stringtable.xml +++ b/addons/nightvision/stringtable.xml @@ -4,7 +4,7 @@ ACE Nightvision ACE 暗視装置 - ACE Visione notturna + ACE Visione Notturna ACE-Nachtsicht ACE夜視鏡 ACE 夜视仪 @@ -21,6 +21,7 @@ NV Goggles (Gen1, Brown) JVN (Gen1, marron) ПНВ (Gen1, Коричневый) + Visore Notturno (Gen1, Marrone) 暗視装置 (第1世代、ブラウン) Gogle noktowizyjne (Gen 1, Brązowe) NS-Brille (1. Gen., braun) @@ -32,6 +33,7 @@ NV Goggles (Gen1, Black) JVN (Gen1, noires) ПНВ (Gen1, Чёрный) + Visore Notturno (Gen1, Nero) 暗視装置 (第1世代、ブラック) Gogle noktowizyjne (Gen 1, Czarne) NS-Brille (1. Gen., schwarz) @@ -43,6 +45,7 @@ NV Goggles (Gen1, Green) JVN (Gen1, vertes) ПНВ (Gen1, Зелёный) + Visore Notturno (Gen1, Verde) 暗視装置 (第1世代、グリーン) Gogle noktowizyjne (Gen 1, Zielone) NS-Brille (1. Gen., grün) @@ -54,6 +57,7 @@ NV Goggles (Gen2, Brown) JVN (Gen2, marron) ПНВ (Gen2, Коричневый) + Visore Notturno (Gen2, Marrone) 暗視装置 (第2世代、ブラウン) Gogle noktowizyjne (Gen 2, Brązowe) NS-Brille (2. Gen., braun) @@ -65,6 +69,7 @@ NV Goggles (Gen2, Black) JVN (Gen2, noires) ПНВ (Gen2, Чёрный) + Visore Notturno (Gen2, Nero) 暗視装置 (第2世代、ブラック) Gogle noktowizyjne (Gen 2, Czarne) NS-Brille (2. Gen., schwarz) @@ -76,6 +81,7 @@ NV Goggles (Gen2, Green) NV Goggles (Gen2, vertes) ПНВ (Gen2, Зелёный) + Visore Notturno (Gen2, Verde) 暗視装置 (第2世代、グリーン) Gogle noktowizyjne (Gen 2, Zielone) NS-Brille (2. Gen., grün) @@ -88,7 +94,7 @@ Noktovizor (Gen3) JVN (Gen3) NS-Brille (3. Gen.) - Occhiali notturni (Gen3) + Visore Notturno (Gen3) Gogle noktowizyjne (Gen3) Óculos de visão noturna (Gen3) ПНВ (Gen3) @@ -105,7 +111,7 @@ Noktovizor (Gen3, hnědý) JVN (Gen3, marron) NS-Brille (3. Gen., braun) - Occhiali notturni (Gen3, Marroni) + Visore Notturno (Gen3, Marrone) Gogle noktowizyjne (Gen3, Brązowe) Óculos de visão noturna (Gen3, marrons) ПНВ (Gen3, Коричневый) @@ -120,23 +126,27 @@ NV Goggles (Gen3, Brown, WP) 暗視装置 (第3世代、ブラウン) + Visore Notturno (Gen3, Marrone, FB) Gogle noktowizyjne (Gen3, Brązowe, WP) NS-Brille (3. Generation, Braun, WP) 야투경 (3세대, 갈색, 백색광) + JVN (Gen3, marron, WP) Night Vision Goggles, White Phosphor - 暗視装置、白色蛍光体 + 暗視装置、白色蛍光 + Visore Notturno, Fosforo Bianco Gogle noktowizyjne, Biały Fosfor Nachtsichtbrille, weißer Phosphor 백색광 야투경 + Jumelles Vision Nocturne, Phosphore blanc NV Goggles (Gen3, Green) Noktovizor (Gen3, zelený) JVN (Gen3, vertes) NS-Brille (3. Gen., grün) - Occhiali notturni (Gen3, Verdi) + Visore Notturno (Gen3, Verde) Gogle noktowizyjne (Gen3, Zielone) Óculos de visão noturna (Gen3, verdes) ПНВ (Gen3, Зелёный) @@ -150,17 +160,19 @@ NV Goggles (Gen3, Green, WP) + Visore Notturno (Gen3, Verde, FB) 暗視装置 (第3世代、グリーン、白色蛍光) Gogle noktowizyjne (Gen3, Zielone, WP) NS-Brille (3. Generation, Grün, WP) 야투경 (3세대, 녹색, 백색광) + JVN (Gen3, vertes, WP) NV Goggles (Gen3, Black) Noktovizor (Gen3, černý) JVN (Gen3, noires) NS-Brille (3. Gen., schwarz) - Occhiali notturni (Gen3, Neri) + Visore Notturno (Gen3, Nero) Gogle noktowizyjne (Gen3, Czarne) Óculos de visão noturna (Gen3, pretos) ПНВ (Gen3, Чёрный) @@ -175,14 +187,17 @@ NV Goggles (Gen3, Black, WP) 暗視装置 (第3世代、ブラック、白色蛍光) + Visore Notturno (Gen3, Nero, FB) Gogle noktowizyjne (Gen3, Czarne, WP) NS-Brille (3. Generation, Schwarz, WP) 야투경 (3세대, 검정, 백색광) + JVN (Gen3, noires, WP) NV Goggles (Gen4, Brown) JVN (Gen4, marron) ПНВ (Gen4, Коричневый) + Visore Notturno (Gen4, Marrone) 暗視装置 (第4世代、ブラウン) Gogle noktowizyjne (Gen 4, Brązowe) NS-Brille (4. Gen., braun) @@ -193,32 +208,38 @@ NV Goggles (Gen4, Brown, WP) 暗視装置 (第4世代、ブラウン、白色蛍光) + Visore Notturno (Gen4, Marrone, FB) Gogle noktowizyjne (Gen 4, Brązowe, WP) NS-Brille (4. Generation, Braun, WP) 야투경 (4세대, 갈색, 백색광) + JVN (Gen4, marron, WP) NV Goggles (Gen4, Black) JVN (Gen4, noires) ПНВ (Gen4, Чёрный) + Visore Notturno (Gen4, Nero) 暗視装置 (第3世代、ブラック) Gogle noktowizyjne (Gen 4, Czarne) NS-Brille (4. Gen., schwarz) 夜视仪(四代,黑色) - 야투경 (4세대, 검정색) + 야투경 (4세대, 검정) Gafas de visión nocturna (Gen4, Negro) NV Goggles (Gen4, Black, WP) 暗視装置 (第3世代、ブラック、白色蛍光) + Visore Notturno (Gen4, Nero, FB) Gogle noktowizyjne (Gen 4, Czarne, WP) NS-Brille (4. Generation, Schwarz, WP) 야투경 (4세대, 검정, 백색광) + JVN (Gen4, noires, WP) NV Goggles (Gen4, Green) JVN (Gen4, vertes) ПНВ (Gen4, Зелёный) + Visore Notturno (Gen4, Verde) 暗視装置 (第3世代、グリーン) Gogle noktowizyjne (Gen 4, Zielone) NS-Brille (4. Gen., grün) @@ -229,14 +250,17 @@ NV Goggles (Gen4, Green, WP) 暗視装置 (第3世代、グリーン、白色蛍光) + Visore Notturno (Gen4, Verde, FB) Gogle noktowizyjne (Gen 4, Zielone, WP) NS-Brille (4. Generation, Grün, WP) 야투경 (4세대, 녹색, 백색광) + JVN (Gen4, vertes, WP) NV Goggles (Wide, Brown) JVN (Large, marron) ПНВ (Широкий, Коричневый) + Visore Notturno (Grandangolo, Marrone) 暗視装置 (ワイド、ブラウン) Gogle noktowizyjne (Szerokie, Brązowe) NS-Brille (Weit, braun) @@ -247,32 +271,38 @@ NV Goggles (Wide, Brown, WP) 暗視装置 (ワイド、ブラウン、白色蛍光) + Visore Notturno (Grandangolo, Marrone, FB) Gogle noktowizyjne (Szerokie, Brązowe, WP) NS-Brille (Weit, Braun, WP) 야투경 (넓음, 갈색, 백색광) + JVN (Large, marron, WP) NV Goggles (Wide, Black) JVN (Large, noires) ПНВ (Широкий, Чёрный) + Visore Notturno (Grandangolo, Nero) 暗視装置 (ワイド、ブラック) Gogle noktowizyjne (Szerokie, Czarne) NS-Brille (Weit, schwarz) 夜视仪(宽,黑色) - 야투경 (넓음, 검정색) + 야투경 (넓음, 검정) Gafas de visión nocturna (Panorámicas, Negro) NV Goggles (Wide, Black, WP) 暗視装置 (ワイド、ブラック、白色蛍光) + Visore Notturno (Grandangolo, Nero, FB) Gogle noktowizyjne (Szerokie, Czarne, WP) NS-Brille (Weit, Schwarz, WP) 야투경 (넓음, 검정, 백색광) + JVN (Large, noires, WP) NV Goggles (Wide, Green) JVN (Large, vertes) ПНВ (Широкий, Зелёный) + Visore Notturno (Grandangolo, Verde) 暗視装置 (ワイド、グリーン) Gogle noktowizyjne (Szerokie, Zielone) NS-Brille (Weit, grün) @@ -283,9 +313,11 @@ NV Goggles (Wide, Green, WP) 暗視装置 (ワイド、グリーン、白色蛍光) + Visore Notturno (Grandangolo, Verde, FB) Gogle noktowizyjne (Szerokie, Zielone, WP) NS-Brille (Weit, Grün, WP) 야투경 (넓음, 녹색, 백색광) + JVN (Large, vertes, WP) Brightness: %1 @@ -403,7 +435,7 @@ NVG Fog Scale - 暗視装置の霧の規模 + 暗視装置フォグ強度 Livello Nebbia NVG Nebel in Nachtsicht 夜視鏡霧氣程度 @@ -418,7 +450,7 @@ Fog is used to limit visibility. - 霧は視界制限のために使われます。 + フォグは視程制限のために使われます。 La nebbia viene utilizzata per limitare la visibilità. Nebel wird genutzt, um die Sichtbarkeit einzuschränken. 透過霧氣來縮減夜視鏡的可視距離 @@ -433,8 +465,8 @@ NVG Effect Scale - 暗視装置の効果規模 - Effetto livello NVG + 暗視装置エフェクト強度 + Livello dell'Effetto ACE NVG Nachtsichteffekte 夜視鏡效果程度 夜视仪效果程度 @@ -449,7 +481,7 @@ Blur and brightness effects [Setting to 0 will disable ALL nightvision effects] ぼかしと粒子、明度効果 [0 に設定で全効果を無効化します] - Effetti di sfocatura e luminosità [Importare a 0 disabiliterà TUTTI gli effetti della visione notturna] + Effetti di sfocatura e luminosità [Importare a 0 disabiliterà TUTTI gli effetti ACE della visione notturna] Unschärfe und Helligkeitseffekte [Dies auf 0 zu setzen deaktiviert SÄMTLICHE Nachtsichteffekte] 調整模糊與亮度的效果。[設值為0會關閉所有夜視鏡的特殊效果] 调整模糊与亮度的效果。[设值为0会关闭所有夜视仪的特殊效果] @@ -468,7 +500,7 @@ 瞄準具模糊程度 瞄准具模糊程度 Flou de visée - Blur durante la mira + Sfoca la mira attraverso ottiche Rozmazanie podczas celowania z narządów celowniczych Размытие при опущеном прицеле Borrão ao mirar @@ -481,9 +513,9 @@ Intensität des Bildrauschens 夜視鏡雜訊程度 夜视仪噪声强度 - 暗視装置のノイズ度 + 暗視装置ノイズ強度 Intensité du bruit (JVN) - Fattore di Disturbo del NVG + Quantità di Disturbo del NVG Skala Szumu NVG Степень шума ПНВ Intensidade de Ruído/Efeito Granulado @@ -498,7 +530,7 @@ 调整配戴夜视仪时画面噪声的强度。 暗視装置を使用時に起きる画像ノイズの強度です Intensité du bruit de l'image lorsque vous portez des JVN. - Intensità del disturbo dell'immagine quando i NVG sono equipaggiati + Intensità del disturbo nell'immagine degli NVG Intensywność efektu szumu podczas noszenia gogli noktowizyjnych Интенсивность шума при использовании ПНВ Intensidade de Ruído de Imagem ao utilizar Visão Noturna @@ -513,7 +545,7 @@ 快门效果 快門效果 Effets d'obturateur - Effetti lampeggianti + Effetti "Shutter" Efekt Shutter Эффекты затвора Efeito de Obturador @@ -524,11 +556,11 @@ Rolling shutter effect from muzzle flashes Rolling-Shutter-Effekt bei Müdungsfeuer - 発射炎が作るローリング シャッター効果です + 発射炎が作るローリング シャッター効果 枪械开火时产生瞬间快门效果 槍開火時瞬間產生快門效果 Effet d'obturateur à rideau dû aux flashs du canon. - Effetto lampeggiante dato dal lampo dello sparo + Effetto "Shutter" dato dall'abbagliamento del visore in risposta al lampo dello sparo Efekt rolling shutter z błysków wylotowych Эффект затвора при вспышках выстрелов Efeito de rolamento de Obturador de flashes de focinho @@ -539,16 +571,20 @@ Night Vision Generation 暗視装置の世代 + Generazione del NVG Generacja gogli noktowizyjnych Nachtsicht-Generation 야투경 세대 + Génération de jumelles de vision nocturne Gen %1 第%1世代 Gen %1 + Gen %1 Gen %1 %1세대 + Gen %1 diff --git a/addons/nlaw/stringtable.xml b/addons/nlaw/stringtable.xml index 93bd236237..4d3c0638f2 100644 --- a/addons/nlaw/stringtable.xml +++ b/addons/nlaw/stringtable.xml @@ -4,8 +4,8 @@ NLAW Track Target (Hold) NLAW Zielverfolgung - NLAW Traccia Bersaglio (Mantieni) - NALW 目標の追跡 (押しっぱ) + NLAW Traccia Bersaglio (Tieni Premuto) + NLAW 目標追跡 (ホールド) NLAW 追踪目标(按住) 次世代輕型反坦克導彈發射器追蹤目標 (按住) Śledzenie Celu NLAW (Przytrzymaj) diff --git a/addons/noradio/XEH_preInit.sqf b/addons/noradio/XEH_preInit.sqf index 35b9e9ec47..75f7afa62e 100644 --- a/addons/noradio/XEH_preInit.sqf +++ b/addons/noradio/XEH_preInit.sqf @@ -27,4 +27,4 @@ if (hasInterface) then { }, true] call CBA_fnc_addPlayerEventHandler; }; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" diff --git a/addons/noradio/initSettings.sqf b/addons/noradio/initSettings.inc.sqf similarity index 100% rename from addons/noradio/initSettings.sqf rename to addons/noradio/initSettings.inc.sqf diff --git a/addons/noradio/stringtable.xml b/addons/noradio/stringtable.xml index 6d9007bcb7..d1cf51f0e6 100644 --- a/addons/noradio/stringtable.xml +++ b/addons/noradio/stringtable.xml @@ -5,11 +5,13 @@ No Radio 去无线电 Kein Funkgerät + Nessuna Radio 음소거 Brak Radia - 無線無し + 無線無効化 Нет рации No Radio + Pas de radio Mute Player @@ -33,7 +35,7 @@ Muta l'avatar del giocatore controllato. 靜音玩家所控制的角色 静音玩家所控制的角色。 - プレイヤーに操作されているこのキャラをミュートします。 + プレイヤーに操作されているキャラをミュートします。 Wycisza awatar kontrolowany przez gracza Заглушить контролируемого игрока Silencia o avatar do Jogador controlado diff --git a/addons/novehicleclanlogo/XEH_preInit.sqf b/addons/novehicleclanlogo/XEH_preInit.sqf index 9361d05015..894773534a 100644 --- a/addons/novehicleclanlogo/XEH_preInit.sqf +++ b/addons/novehicleclanlogo/XEH_preInit.sqf @@ -6,6 +6,6 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" ADDON = true; diff --git a/addons/novehicleclanlogo/initSettings.sqf b/addons/novehicleclanlogo/initSettings.inc.sqf similarity index 90% rename from addons/novehicleclanlogo/initSettings.sqf rename to addons/novehicleclanlogo/initSettings.inc.sqf index 471877ca5c..ddec0e1314 100644 --- a/addons/novehicleclanlogo/initSettings.sqf +++ b/addons/novehicleclanlogo/initSettings.inc.sqf @@ -1,4 +1,4 @@ -private _category = [ELSTRING(common,ACEKeybindCategoryVehicles), LSTRING(DisplayName)],; +private _category = [ELSTRING(common,ACEKeybindCategoryVehicles), LSTRING(DisplayName)]; [ QGVAR(enabled), "CHECKBOX", diff --git a/addons/novehicleclanlogo/stringtable.xml b/addons/novehicleclanlogo/stringtable.xml index f911fec7ca..d3f01899a9 100644 --- a/addons/novehicleclanlogo/stringtable.xml +++ b/addons/novehicleclanlogo/stringtable.xml @@ -9,6 +9,8 @@ Suprimir logo del clan de los vehículos 乗り物から部隊ロゴを削除 Clan-Logo von Fahrzeugen entfernen + Rimuovi Icone Clan dai veicoli + Retirer les logos de clan des véhicules Prevents clan logo from being displayed on vehicles controlled by players. @@ -18,6 +20,8 @@ Previene que se muestre el logo del clan en los vehículos controlados por jugadores. プレイヤーが操作する乗り物に部隊ロゴが表示されないようにする。 Verhindert, dass das Clan-Logo auf von Spielern kontrollierten Fahrzeugen angezeigt wird. + Impedisce la visualizzazione di icone clan sui veicoli controllati da giocatori. + Empêche les logos de clan d'être affichés sur les véhicules contrôlés par des joueurs. diff --git a/addons/optionsmenu/XEH_preInit.sqf b/addons/optionsmenu/XEH_preInit.sqf index d25516a277..aaa0b64a03 100644 --- a/addons/optionsmenu/XEH_preInit.sqf +++ b/addons/optionsmenu/XEH_preInit.sqf @@ -11,6 +11,6 @@ if (hasInterface) then { [[format ["ACE %1", localize LSTRING(headBugFix)], localize LSTRING(headBugFixTooltip)], QGVAR(MainMenuHelperHeadBugFix)] call CBA_fnc_addPauseMenuOption; }; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" ADDON = true; diff --git a/addons/optionsmenu/gui/pauseMenu.hpp b/addons/optionsmenu/gui/pauseMenu.hpp index f48cecfd0f..6defe4534c 100644 --- a/addons/optionsmenu/gui/pauseMenu.hpp +++ b/addons/optionsmenu/gui/pauseMenu.hpp @@ -1,3 +1,5 @@ +#pragma hemtt suppress pw3_padded_arg file + class RscDisplayEmpty; class GVAR(MainMenuHelperDumpDebug): RscDisplayEmpty { onLoad = QUOTE(\ diff --git a/addons/optionsmenu/initSettings.sqf b/addons/optionsmenu/initSettings.inc.sqf similarity index 100% rename from addons/optionsmenu/initSettings.sqf rename to addons/optionsmenu/initSettings.inc.sqf diff --git a/addons/optionsmenu/stringtable.xml b/addons/optionsmenu/stringtable.xml index cdda474cdc..4cd7f7d2f7 100644 --- a/addons/optionsmenu/stringtable.xml +++ b/addons/optionsmenu/stringtable.xml @@ -11,7 +11,7 @@ Debug vers le presse-papier Debug a vágólapra Отладка в буфер обмена - Debug su Blocco Note + Debug negli Appunti クリップボードにデバッグ 클립보드를 디버그하기 复制调试信息至剪贴板 @@ -28,7 +28,7 @@ Envoie les informations de debug vers le RPT et le presse-papier. Debug információt küld az RPT-be és a vágólapra. Отправляет отладочную информацию в RPT и буфер обмена. - Invia informazioni di debug all'RPT e al Blocco Note + Invia informazioni di debug all'RPT e gli appunti di Windows. デバッグ情報を RPT とクリップボードに送ります。 디버그 정보를 보고하기 및 클립보드에 복사하기 위해 보냅니다. 复制调试信息至剪贴板与 RPT 报告档中。 @@ -79,7 +79,7 @@ Nouveautés ACE ACE hírek Новости ACE - Novità ACE + ACE Novità ACE ニュース ACE 새 소식 ACE 新闻 @@ -96,147 +96,12 @@ Hírek mutatása a főmenüben Показывать новости в главном меню Zobrazit zprávy v hlavním menu - Mostra News nel Menù Princinpale + Mostra novità nel Menù Principale メイン画面にニュースを表示します 메인메뉴에 새 소식을 표시합니다 显示新闻消息于主菜单 顯示新聞消息於主選單 Ana Menü de Haberleri Göster - - ACE Logistics - ACE Logistik - ACE Logistyka - ACE Logística - ACE Логистика - ACE Logistika - ACE Logística - ACE Logistica - ACE Logistique - ACE ロジスティクス - ACE 보급 - ACE 后勤设定 - ACE 後勤設定 - ACE Lojistik - - - Hide - Ukryj - Ocultar - Verstecken - Skrýt - Ocultar - Cacher - Elrejtés - Скрыть - Nascondi - 非表示 - 숨기기 - 隐藏 - 隱藏 - Gizle - - - Top right, downwards - Po prawej u góry, w dół - Arriba a la derecha, hacia abajo - Oben rechts, nach unten - Vpravo nahoře, dolů - Superior direito, para baixo - En haut à droite, vers le bas - Jobb felül, lefele - Справа — сверху вниз - In Alto a Destra, verso il Basso - 右上、下側 - 오른쪽 위에서 아래로 - 右上角,向下 - 右上角,向下 - Sağ üst, aşağı - - - Top right, to the left - Po prawej u góry, do lewej - Arriba a la derecha, hacia la izquierda - Von rechts nach links - Vpravo nahoře, do leva - Superior direito, à esquerda - En haut à droite, vers la gauche - Jobb felül, balra - Сверху — справа налево - In Alto a Destra, verso Sinistra - 右上、左詰 - 오른쪽 위에서 왼쪽으로 - 右上角,向左 - 右上角,向左 - Sağ üstte, solda - - - Top left, downwards - Po lewej u góry, w dół - Arriba a la izquierda, hacia abajo - Von links, nach unten - Vlevo nahoře, dolů - Superior esquerdo, para baixo - En haut à gauche, vers le bas - Bal felül, lefele - Слева - сверху вниз - In Alto a Sinistra, verso il Basso - 左上、下側 - 왼쪽 위에서 아래로 - 左上角,向下 - 左上角,向下 - Sol üst, aşağı - - - Top left, to the right - Po lewej u góry, do prawej - Arriba a la izquierda, hacia la derecha - Oben links nach rechts - Vlevo nahoře, do prava - Superior esquerdo, para a direita - En haut à gauche, vers la droite - Bal felül, jobbra - Сверху — слева направо - In Alto a Sinistra, verso Destra - 右上、右詰 - 왼쪽 위에서 오른쪽으로 - 左上角,向右 - 左上角,向右 - Sol üst, sağa - - - Top - Góra - Arriba - Oben - Nahoře - Acima - En haut - Fent - Сверху - Alto - 上側 - 상단 - 上方 - 上方 - Üst - - - Bottom - Dół - Abajo - Unten - Dole - Abaixo - En bas - Alul - Снизу - Basso - 下側 - 하단 - 下方 - 下方 - Alt - diff --git a/addons/overheating/CfgMagazines.hpp b/addons/overheating/CfgMagazines.hpp index 6819a26b53..2553428c91 100644 --- a/addons/overheating/CfgMagazines.hpp +++ b/addons/overheating/CfgMagazines.hpp @@ -7,7 +7,7 @@ class CfgMagazines { descriptionshort = CSTRING(SpareBarrelDescription); picture = QUOTE(PATHTOF(UI\spare_barrel_ca.paa)); count = 1; - mass = 60; + mass = 25; ACE_isUnique = 1; }; }; diff --git a/addons/overheating/CfgVehicles.hpp b/addons/overheating/CfgVehicles.hpp index e17f030a2b..cd22400893 100644 --- a/addons/overheating/CfgVehicles.hpp +++ b/addons/overheating/CfgVehicles.hpp @@ -6,33 +6,33 @@ class CfgVehicles { class ACE_Equipment { class GVAR(UnJam) { displayName = CSTRING(UnjamWeapon); - condition = QUOTE( GVAR(enabled) && {[_player] call FUNC(canUnjam)} ); + condition = QUOTE(GVAR(enabled) && {[_player] call FUNC(canUnjam)}); exceptions[] = {"isNotInside", "isNotSwimming", "isNotSitting"}; - statement = QUOTE( [ARR_2(_player, currentMuzzle _player)] call FUNC(clearJam); ); + statement = QUOTE([ARR_2(_player,currentMuzzle _player)] call FUNC(clearJam)); showDisabled = 0; icon = QPATHTOEF(common,UI\repack_ca.paa); }; class GVAR(SwapBarrel) { displayName = CSTRING(SwapBarrel); - condition = QUOTE( [ARR_2(_player, currentWeapon _player)] call FUNC(canSwapBarrel) ); + condition = QUOTE([ARR_2(_player,currentWeapon _player)] call FUNC(canSwapBarrel)); exceptions[] = {"isNotInside", "isNotSwimming", "isNotSitting"}; - statement = QUOTE( [ARR_3(_player, _player, currentWeapon _player)] call FUNC(swapBarrel); ); + statement = QUOTE([ARR_3(_player,_player,currentWeapon _player)] call FUNC(swapBarrel)); showDisabled = 0; icon = QPATHTOF(UI\spare_barrel_ca.paa); }; class GVAR(CheckTemperature) { displayName = CSTRING(CheckTemperatureShort); - condition = QUOTE( GVAR(enabled) && {switch (currentWeapon _player) do {case (''): {false}; case (primaryWeapon _player); case (handgunWeapon _player): {true}; default {false}}} ); + condition = QUOTE(GVAR(enabled) && {switch (currentWeapon _player) do {case (''): {false}; case (primaryWeapon _player); case (handgunWeapon _player): {true}; default {false}}}); exceptions[] = {"isNotInside", "isNotSwimming", "isNotSitting"}; - statement = QUOTE( [ARR_3(_player, _player, currentWeapon _player)] call FUNC(checkTemperature); ); + statement = QUOTE([ARR_3(_player,_player,currentWeapon _player)] call FUNC(checkTemperature)); showDisabled = 0; icon = QPATHTOF(UI\temp_ca.paa); }; class GVAR(CheckTemperatureSpareBarrels) { displayName = CSTRING(CheckTemperatureSpareBarrelsShort); - condition = QUOTE((_player) call FUNC(canCheckSpareBarrelsTemperatures) ); + condition = QUOTE((_player) call FUNC(canCheckSpareBarrelsTemperatures)); exceptions[] = {"isNotInside", "isNotSwimming", "isNotSitting"}; - statement = QUOTE( [_player] call FUNC(checkSpareBarrelsTemperatures); ); + statement = QUOTE([_player] call FUNC(checkSpareBarrelsTemperatures)); showDisabled = 0; icon = QUOTE(PATHTOF(UI\temp_ca.paa)); }; @@ -52,16 +52,16 @@ class CfgVehicles { class ACE_Weapon { class GVAR(SwapBarrel) { displayName = CSTRING(SwapBarrel); - condition = QUOTE( [ARR_2(_player, currentWeapon _target)] call FUNC(canSwapBarrel) ); - statement = QUOTE([ARR_3(_player, _target, currentWeapon _target)] call FUNC(swapBarrelAssistant);); + condition = QUOTE([ARR_2(_player,currentWeapon _target)] call FUNC(canSwapBarrel)); + statement = QUOTE([ARR_3(_player,_target,currentWeapon _target)] call FUNC(swapBarrelAssistant)); exceptions[] = {"isNotInside", "isNotSwimming", "isNotSitting"}; icon = QUOTE(PATHTOF(UI\spare_barrel_ca.paa)); }; class GVAR(CheckTemperature) { displayName = CSTRING(CheckTemperatureShort); - condition = QUOTE( GVAR(enabled) && {switch (currentWeapon _target) do {case ('ACE_FakePrimaryWeapon'); case (''): {false}; case (primaryWeapon _target); case (handgunWeapon _target): {true}; default {false}}} ); + condition = QUOTE(GVAR(enabled) && {switch (currentWeapon _target) do {case ('ACE_FakePrimaryWeapon'); case (''): {false}; case (primaryWeapon _target); case (handgunWeapon _target): {true}; default {false}}}); exceptions[] = {"isNotInside", "isNotSwimming", "isNotSitting"}; - statement = QUOTE( [ARR_3(_player, _target, currentWeapon _target)] call FUNC(checkTemperature); ); + statement = QUOTE([ARR_3(_player,_target,currentWeapon _target)] call FUNC(checkTemperature)); icon = QUOTE(PATHTOF(UI\temp_ca.paa)); }; class GVAR(CoolWeaponWithItem) { diff --git a/addons/overheating/CfgWeapons.hpp b/addons/overheating/CfgWeapons.hpp index cc0b768934..9232fa3249 100644 --- a/addons/overheating/CfgWeapons.hpp +++ b/addons/overheating/CfgWeapons.hpp @@ -109,7 +109,7 @@ class CfgWeapons { descriptionshort = CSTRING(SpareBarrelDescription); picture = QUOTE(PATHTOF(UI\spare_barrel_ca.paa)); class ItemInfo: CBA_MiscItem_ItemInfo { - mass = 60; + mass = 25; }; }; }; diff --git a/addons/overheating/XEH_preInit.sqf b/addons/overheating/XEH_preInit.sqf index 9361d05015..894773534a 100644 --- a/addons/overheating/XEH_preInit.sqf +++ b/addons/overheating/XEH_preInit.sqf @@ -6,6 +6,6 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" ADDON = true; diff --git a/addons/overheating/initSettings.sqf b/addons/overheating/initSettings.inc.sqf similarity index 100% rename from addons/overheating/initSettings.sqf rename to addons/overheating/initSettings.inc.sqf diff --git a/addons/overheating/stringtable.xml b/addons/overheating/stringtable.xml index 3d0077f78b..2c6249be2f 100644 --- a/addons/overheating/stringtable.xml +++ b/addons/overheating/stringtable.xml @@ -51,6 +51,7 @@ Heating Coefficient 過熱係数 Coefficient de surchauffe + Coefficiente di riscaldamento Коэф. нагрева Erhitzungs-Koeffizient Współczynnik nagrzewania @@ -62,6 +63,7 @@ Coefficient for the amount of heat a weapon generates per shot.\nHigher value increases heat. 射撃毎に武器が生み出す熱量の係数を設定します。\n高い値であるほど熱量が増加します。 Coefficient impactant la quantité de chaleur générée par l'arme à chaque tir. + Coefficiente che determina la quantità di calore generato da un'arma con ogni colpo sparato.\nValori alti accelerano il riscaldamento. Коэффициент количества тепла, выделяемого оружием за выстрел. \nБольшие значения увеличивают нагрев. Koeffizient für die Menge an Hitze, die eine Waffe pro Schuss erzeugt.\nHöhere Werte beschleunigen die Erhitzung. Współczynnik wpływający na ilość ciepła generowanego przez broń przy każdym strzale. @@ -74,40 +76,48 @@ 冷却系数 냉각 계수 Abkühlungskoeffizienten + Coefficiente di raffreddamento Współczynnik chłodzenia 冷却係数 Коэф. остывания Coeficiente de enfriado + Coefficient de refroidissement Coefficient for how quickly a weapon cools down.\nHigher value increases cooling speed. 武器冷却速度系数。\n数值越高,冷却速度越快。 무기가 차가워지는 정도를 정합니다.\n높은 계수는 무기가 빨리 차가워지는데 관여합니다. Koeffizient, der angibt, wie schnell eine Waffe abkühlt.\nEin höherer Wert erhöht die Abkühlgeschwindigkeit. + Coefficiente che determina la velocità di raffreddamento di un'arma.\nValori alti aumentano la velocità di raffreddamento. Współczynnik szybkości chłodzenia broni.\nWiększa wartość zwiększa szybkość chłodzenia. 武器の冷却速度の係数。\n値を大きくすると冷却速度が速くなります。 Коэффициент скорости остывания орудия.\nЧем больше значение, тем быстрее остывает. Coeficiente para cómo de rápido se enfría un arma.\nValores más altos incrementan la velocidad de enfriamiento. + Coefficient de rapidité de refroidissement de l'arme.\nUne valeur élevée augmente la vitesse de refroidissement. Suppressor Coefficient 消音器系数 소음기 계수 Schalldämpfer-Koeffizient + Coefficiente di Silenziatore Współczynnik tłumika サプレッサー係数 Коэф. глушителя Coeficiente del silenciador + Coefficient de suppresion Coefficient for how much additional heat is added from having a suppressor attached.\nHigher value increases heat, 0 means no additional heat from the suppressor. 附加了消音器后,产生的额外热量系数。\n数值越高,热量越高,0意味着消音器不产生额外热量。 소음기 장착 시 만들어 지는 열에 대한 계수를 적용합니다.\n높을 수록 온도가 높아집니다, 0으로 설정 시 추가적인 열을 얻지 않습니다. Koeffizient, der angibt, wie viel zusätzliche Wärme durch das Anbringen eines Schalldämpfers hinzugefügt wird. Ein höherer Wert erhöht die Menge an Wärme, 0 bedeutet, dass keine zusätzliche Wärme durch den Schalldämpfer hinzukommt. + Coefficiente che determina quanto calore viene aggiunto dalla presenza di un silenziatore.\nValori alti aumentano il calore, 0 significa che un silenziatore non fa differenza. Współczynnik określający, ile dodatkowego ciepła jest dodawane z założonego tłumika.\nWyższa wartość zwiększa ciepło, 0 oznacza brak dodatkowego ciepła z tłumika. サプレッサーを取り付けることで追加される熱量の係数。\n値が大きいほど熱が増加し、0はサプレッサーからの追加の熱がないことを意味します。 Коэффициент указывающий как много дополнительного тепла будет выделяться прикреплённым глушителем.\nБольшее значение увеличивает выделение тепла, 0 - отсутствие дополнительного тепла. Coeficiente para cuanto calor adicional es añadido por tener un silenciador montado.\nValores más altos incrementan el calor. 0 significa que el silenciador no añade calor adicional. + Coefficient d'ajout de chaleur lorsqu'un suppresseur est installé.\nUne valeur élevée augmente la chaleur, 0 signifique qu'aucune chaleur ne sera ajouté par le suppresseur. Display Text on Jam @@ -120,7 +130,7 @@ Szöveges értesítés kijelzése a fegyver elakadásakor Mostrar texto quando trava acontecer Visualizza testo in caso di inceppamento - 弾詰りを文章で表示 + 弾詰まりを文章で表示 탄걸림의 경우 화면에 표시 在卡弹时显示提示信息 在卡彈時顯示提示訊息 @@ -135,8 +145,8 @@ Affiche une notification lorsque votre arme est enrayée. Egy szöveges értesítés jelenik meg, amikor a fegyver megakad Mostra uma notificação quando sua arma sofre um travamento. - Visualizza una notifica in caso la tua arma si inceppasse - 持っている武器が弾詰りをすると、通知を表示します + Visualizza una notifica quando tua arma si inceppa + 持っている武器が弾詰まりをすると、通知を表示します 총알이 무기에 걸릴 경우 화면에 알림을 띄웁니다 当武器卡弹时显示提示信息 當武器卡彈時顯示提示訊息 @@ -149,7 +159,7 @@ Efectos de partículas Effets de particules Částicové efekty přehřívání - Efeito de parícula de superaquecimento + Efeito de partícula de superaquecimento Эффект частиц при перегреве 過熱の視覚効果 과열 입자 효과 @@ -164,7 +174,7 @@ Mostra effetti particellari quando l'arma si surriscalda Muestra efectos de partículas cuando el arma del jugador se sobreacalienta Affiche des effets de particules lorsqu'une arme surchauffe. - Mostra efeitos de párticula quando a arma superaquece + Mostra efeitos de partícula quando a arma superaquece Показывать эффект частиц, когда оружие перегревается Zobrazit částicové efekty když se zbraň přehřije 武器を過熱すると視覚表現を表示します @@ -209,10 +219,10 @@ Overheating Dispersion Streuung bei Überhitzung Wpływ na rozrzut - Dispersione Surriscaldamento + Dispersione da Surriscaldamento Dispersión Dispersion - Disperção de superaquecimento + Dispersão de superaquecimento Разброс при перегреве Důsledky přehřátí zbraně 過熱による精度の低下 @@ -225,13 +235,13 @@ Overheated weapons will be less accurate and have decreased muzzle velocity. Applys for all players. Überhitzte Waffen sind weniger genau und verfügen über eine geringere Mündungsgeschwindigkeit. Wird bei allen Spielern angewendet. Przegrzane bronie będą mniej celne oraz będą miały zmniejszoną prędkość pocisku. Wpływa na wszystkich graczy. - Armi surriscaldate saranno meno precise ed avranno una ridotta velocità alla volata. Applica per tutti i giocatori. + Armi surriscaldate saranno meno precise ed avranno una ridotta velocità alla volata. Applicato a tutti i giocatori. Las armas sobrecalentadas pierden precisión y tienen una velocidad de disparo reducida. Se aplica a todos los jugadores. Les armes surchauffées seront moins précises et auront une vitesse initiale moins élevée. S'applique à tous les joueurs. Armas superaquecidas irão ser menos precisas e ter velocidade de disparo reduzidas. Aplica a todos os jogadores. Перегретое оружие будет менее точным, а дульная скорость будет снижена. Применяется ко всем игрокам. Přehřátá zbraň bude méně přesná a bude mít menší úsťovou rychlost. Platí pro všechny hráče. - 過熱は精度を減少させたり、初速を低下させます。これは全プレイヤに適用します。 + 過熱は精度を減少させたり、初速を低下させます。これは全プレイヤーに適用します。 무기 과열 시 무기의 명중률이 저하되고 총구속도가 감소합니다. 이는 모든 플레이어에게 적용됩니다. 过热的武器将会有打不准和减少射击初速的情况。适用于所有玩家 過熱的武器將會有打不準和減少射擊初速的情況。適用於所有玩家 @@ -239,8 +249,9 @@ Distance for Effects and Dispersion - エフェクトと分散用距離 + エフェクトと分散の距離 Distance des effets et de la dispersion + Distanza per effetti e dispersione Дистанция для эффектов и разброса Abstand für Effekte und Dispersion Odległość efektów i rozproszenia @@ -250,8 +261,9 @@ The distance, in meters, from the player within which overheating particle effects and dispersion are visible. - プレイヤーが過熱パーティクル エフェクトと分散を見えるようになる距離 (m) を設定します。 + プレイヤーが過熱パーティクルのエフェクトと分散を見えるようになる距離 (m) を設定します。 Définit la distance en mètres, jusqu'à laquelle les effets de particules et la dispersion sont visibles. + La distanza in metri da cui sono visibili gli effetti particellari e la dispersione. Дистанция в метрах, с которой видны эффекты частиц и разброса при перегреве. Der Abstand in Metern vom Spieler, in dem Überhitzungspartikeleffekte und Dispersion sichtbar sind. Określa odległość w metrach, do której widoczne są efekty cząsteczkowe i rozproszenie. @@ -263,6 +275,7 @@ Heat Increases Fire Rate 熱による連射速度上昇 La chaleur augmente la cadence de tir + Calore aumenta la cadenza di tiro Нагрев увеличивает темп стрельбы Hitze erhöht die Feuerrate Ciepło zwiększa szybkostrzelność @@ -276,6 +289,7 @@ Lorsqu'une arme chauffe, sa cadence de tir peut augmenter jusqu'à 10%. При нареве орудия, его темп стрельбы увеличивается до 10%. Wenn sich Waffen erhitzen, erhöht sich ihre Feuerrate um bis zu 10%. + Quando le armi si surriscaldano, la loro cadenza di tiro può aumentare anche del 10%. Gdy broń się nagrzewa, jej szybkostrzelność może wzrosnąć nawet o 10%. 随着武器的过热,其射速最多增加10%。 과열될수록 발사속도가 최대 10%까지 올라갑니다. @@ -285,6 +299,7 @@ Jam Chance Coefficient 弾詰まり係数 Coefficient du risque d'enrayement + Coefficiente di inceppamento Шанс заклинивания оружия Koeffizient für Ladehemmung Szansa na zacięcie @@ -294,8 +309,9 @@ Coefficient for the chance that a weapon will jam from overheating.\nHigher value make jams more likely.\nSet to 0 to disable jamming. - 武器が過熱によって弾詰まりする確立係数を設定します。\n高い値では弾詰まりが起こりやすくなり、0 で弾詰まりが無効化されます。 + 武器が過熱によって弾詰まりする確率係数を設定します。\n高い値では弾詰まりが起こりやすくなり、0 で弾詰まりが無効化されます。 Coefficient modifiant les chances qu'une arme s'enraye à cause de la surchauffe.\nPlus la valeur est élevée, plus grand est le risque que l'arme s'enraye.\nDéfinir à 0 pour désactiver l'enrayement des armes. + Coefficiente della probabilità di inceppamento da surriscaldamento.\nValori alti aumentano la probabilità, 0 la disabilità. Шанс заклинивания оружия от перегрева.\nБольшие значения повышают шанс заклинивания.\nУстановите 0 для отключения заклинивания. Koeffizient für die Wahrscheinlichkeit, dass eine Waffe eine Ladehemmung hat.\Höhere Werte erhöhen die Wahrscheinlichkeit.\Auf 0 setzen, um Ladehemmungen zu deaktivieren. Współczynnik zmieniający szansę na zacięcie się broni z powodu przegrzania.\nIm wyższa wartość, tym większe ryzyko zacięcia się broni.\nUstaw na 0, aby wyłączyć zacinanie się broni. @@ -313,7 +329,7 @@ Uvolnit zbraň při přebití Desemperrar arma no recarregamento Исправлять клин при перезарядке - 再装填による弾詰りの解消 + 再装填による弾詰まり解消 재장전 시 기능고장 해결 重装弹匣以解决卡弹 重裝彈匣以解決卡彈 @@ -329,7 +345,7 @@ Přebití uvolní zaseknutou zbraň. Recarregar desemperra arma. Перезарядка устраняет заклинивание оружия. - 再装填により、弾詰りを除去します。 + 再装填により、弾詰まりを除去します。 기능고장이 재장전 시 해결됩니다. 利用重装弹匣来解决卡弹 利用重裝彈匣來解決卡彈 @@ -337,9 +353,10 @@ Unjam on Barrel Swap - 銃身交換で弾詰まり解消 + 銃身交換による弾詰まり解消 Désenrayer l'arme au changement de canon Замена ствола устраняет клин оружия + Disinceppa l'arma col cambio canna Usuń zacięcie przy wymianie lufy 更换枪管清除卡弹 총열 교환 시 기능고장 해결 @@ -352,6 +369,7 @@ Les armes se désenrayent lors d'un remplacement de canon. Определяет, устраняет ли замена ствола заклинивание оружия. Bestimmt, ob das Wechseln des Laufes eine Ladehemmung behebt. + Determina se la sostituzione della canna disinceppa l'arma. Określa, czy wymiana lufy usuwa zacięcie się broni. 通过更换枪管,以便清除卡弹。 총열을 교체하면서 기능고장을 해결합니다. @@ -367,7 +385,7 @@ Šance, že uvolnění zbraně selže Chance de falha de desemperramento Шанс неудачи при устранении клина - 弾詰りの除去を失敗する可能性 + 弾詰まりの除去を失敗する可能性 기능고장 해결 시도 실패확률 解决卡弹失败机率 解決卡彈失敗機率 @@ -379,11 +397,11 @@ Probabilidad de que el proceso de desencasquille falle, teniendo que repetirlo. Szansa na to, że przy przeładowaniu broni zacięcie nie zostanie usunięte, przez co czynność będzie musiała zostać powtórzona ponownie. Probabilité qu'une action de désenrayement échoue, nécessitant de recommencer. - Probabilità che si possa sbagliare a caso a disinceppare l'arma. Richiede di ripetere. + Probabilità casuale che si possa sbagliare a disinceppare l'arma. Richiedendo di ripetere il disinceppamento. Probabilidade que uma ação de desemperramento falhe, tendo que ser repetida Вертоятность того, что устранение заклинивания не сработает, и его придется повторить. Pravděpodobnost, že uvolnění zbraně selže, je proto nutné tuto akci opakovat. - 弾詰りの除去を失敗する可能性が生まれ、もう一度動作を行う必要があります。 + 弾詰まり解除アクションに失敗し、繰り返しが必要になる確率。 기능고장 해결 시도시 실패할 확률이 있습니다. 이는 다시 기능고장 해결을 시도해야함을 의미합니다. 清除卡弹时有可能会失败,需要反覆进行清枪。 清除卡彈時有可能會失敗,需要反覆進行清槍。 @@ -391,8 +409,9 @@ Overheating Cookoff Coefficient - 過熱誘爆係数 + 過熱暴発係数 Coefficient de l'auto-inflammation + Coefficiente di auto-combustione Коэф. возгорания при перегреве Selbstzündungskoeffizient bei Überhitzung Współczynnik samozapłonu @@ -402,8 +421,9 @@ Coefficient for the heat required for cookoffs to occur.\nHigher values require more heat to cookoff.\nSet to 0 to disable cookoff. - 過熱によって誘爆が起きる確立係数を設定します。\n高い値では誘爆までに必要な過熱量が増加し、0 で誘爆が無効化されます。 + 過熱によって暴発(コックオフ)が発生する確率の係数を設定します。\n高い値では暴発までに必要な過熱量が増加し、0 で暴発が無効化されます。 Coefficient modifiant la quantité de chaleur requise pour que les munitions s'auto-inflamment dans la chambre de l'arme.\nPlus la valeur est élevée, plus l'arme doit être chaude pour que les munitions s'auto-inflamment.\nDéfinir sur 0 pour désactiver l'auto-inflammation. + Coefficiente che determina il calore richiesto per auto-incendiare munizioni/carburante.\nImpostare su 0 per disabilitare l'auto-combustione. Коэффициент нагрева, при котором возникает возгорание. Koeffizient für die zum Selbstzünden erforderliche Hitze.\nHöhere Werte erfordern mehr Hitze zum Selbstzünden.\nAuf 0 setzen, um das Selbstzünden zu deaktivieren. Współczynnik modyfikujący ilość ciepła wymaganego do samozapłonu amunicji w komorze broni.\nIm wyższa wartość, tym gorętsza musi być broń, aby amunicja uległa samozapłonowi\nUstaw 0, aby wyłączyć samozapłon. @@ -436,9 +456,9 @@ Utilisé pour changer de canon. Используется для смены ствола. Használd a cső kicseréléséhez. - Use para trocar o cano/estriamento. - Usata per cambiare la canna. - 予身の交換に使用します。 + Use para trocar o cano. + Usata per sostituire una canna bollente. + 銃身の交換に使用します。 총열을 바꿀 때 사용합니다. 用来更换枪管 用來更換槍管 @@ -461,10 +481,11 @@ Weapon cooked off! - 武器が誘爆した! + 武器が暴発した! Auto-inflammation des munitions ! Оружие сдетонировало! Munition durchgezündet! + Munizione auto-incendiata! Samozapłon amunicji! 武器发生热诱发! 쿡오프가 일어납니다! @@ -475,6 +496,7 @@ 排莢に失敗しました。 Défaut d'éjection. Не удалось достать. + Mancata espulsione. Hülse wurde nicht ausgeworfen. Nie udało się wyrzucić łuski. 抛壳失败。 @@ -485,6 +507,7 @@ Failure to extract. 排出に失敗しました。 Défaut d'extraction. + Mancata estrazione. Не удалось извлечь. Hülse wurde nicht ausgezogen. Nie udało się wyjąć łuski. @@ -496,6 +519,7 @@ Failure to feed. 給弾に失敗しました。 Défaut d'alimentation. + Mancata alimentazione. Не удалось подать. Patrone wurde nicht zugeführt. Nie udało się załadować naboju. @@ -509,6 +533,7 @@ Défaut de tir. Не удалось выстрелить. Patrone wurde nicht gezündet! + Mancato innesco. Nie udało się strzelić. 未能开火。 발사가 되지 않음. @@ -524,8 +549,8 @@ Исправить клин оружия Akadás elhárítása Destravar arma - Ripulisci l'arma - 弾詰りを除去する + Disinceppa l'arma + 弾詰まりを解消する 기능고장 해결 清除卡弹 清除卡彈 @@ -541,7 +566,7 @@ Akadás elhárítva Arma destravada Arma pronta al fuoco - 弾詰りが除去されました + 弾詰まりが解消した 기능고장 해결됨 卡弹已清除 卡彈已清除 @@ -556,7 +581,7 @@ Zbraň se nepodařilo uvolnit Falha no desemperramento Не удалось исправить клин - 弾詰りの除去に失敗しました + 弾詰まりの解消に失敗した 기능고장 해결 실패 卡弹未能清除 卡彈未能清除 @@ -620,7 +645,7 @@ Conferir temperatura da arma Controlla la temperatura della canna Проверить температуру оружия - 武器の温度を測る + 武器の温度を確認 무기 온도 확인 检查枪管温度 檢查槍管溫度 @@ -636,7 +661,7 @@ Проверить температуру оружия Conferir temperatura Controlla la temperatura della canna - 武器の温度を測る + 武器の温度を確認 무기 온도 확인 检查枪管温度 檢查槍管溫度 @@ -664,7 +689,7 @@ Vérifier la température des canons de rechange Проверить температуру запасных стволов Zkontrolovat teplotu náhradní hlavně - 予備銃身の温度を測る + 予備銃身の温度を確認 Sprawdź temperaturę zapasowych luf Temperatur der Wechselläufe prüfen 총열 온도 확인 @@ -689,10 +714,11 @@ Cool weapon with... - 次で武器を冷ます・・・ + 武器を・・・で冷却 Refroidir l'arme avec... Охладить оружие с... Waffe mit... kühlen + Raffredda arma con... Schłódź broń za pomocą... 冷却武器... 무기 온도 낮추기 @@ -704,6 +730,7 @@ Refroidissement du %1 avec %2... Охлаждение %1 с %2. Kühle %1 mit %2. + Raffredda %1 con %2 Chłodzenie %1 za pomocą %2. 冷却 %1 至 %2。 %1을 %2로 식히는 중. @@ -711,10 +738,11 @@ Cool weapon in water source. - 水源で武器を冷ます + 水源で武器を冷却 Refroidir l'arme dans la source d'eau. Охладить оружие в воде. Kühle Waffe aus Wasserquelle. + Raffredda arma in acqua. Schłódź broń wodą. 用水源冷却武器。 물로 무기 식히기 @@ -726,6 +754,7 @@ Refroidissement de l'arme dans la source d'eau... Охлаждение оружия в воде. Waffe wird aus Wasserquelle gekühlt. + Raffreddando arma con l'acqua. Chłodzenie broni wodą. 在水源中冷却武器。 물로 무기 식히는 중. @@ -737,6 +766,7 @@ Le récipient ne contient pas suffisamment d'eau. Воды недостаточно для охлаждения. Behälter beinhaltet nicht genug Wasser. + Contenitore non ha abbastanza acqua. Zbiornik nie ma wystarczającej ilości wody 容器里的水不够。 물이 충분치 않습니다. @@ -744,10 +774,11 @@ Weapon is cool enough the water has stopped boiling. - 武器が冷まりきり、水が沸騰していません。 + 武器が冷え切り、水は沸騰を止めた。 L'arme est suffisamment froide pour que l'eau ait cessé de bouillir. Оружие достаточно холодное для прекращения кипения воды. Waffe ist kalt genug, dass Wasser hat aufgehört zu kochen. + L'arma è abbastanza fredda, l'acqua ha smesso di bollire. Broń jest wystarczająco schłodzona. Woda przestała się gotować. 武器已经冷却,水已经停止沸腾了。 물이 끓지 않는 걸 보아 무기가 식은듯 하다. @@ -825,7 +856,7 @@ Bardzo gorące zapasowe lufy Sehr heiße Wechselläufe 매우 뜨거운 예비 총열 - Canna/e di Ricambio Estremamente Calda + Canna/e di Ricambio Bollente 备用枪管温度过热 備用槍管溫度過熱 diff --git a/addons/overpressure/ACE_Arsenal_Stats.hpp b/addons/overpressure/ACE_Arsenal_Stats.hpp index 906c50e8fb..d0de391691 100644 --- a/addons/overpressure/ACE_Arsenal_Stats.hpp +++ b/addons/overpressure/ACE_Arsenal_Stats.hpp @@ -6,7 +6,7 @@ class EGVAR(arsenal,stats) { stats[] = {QGVAR(angle)}; displayName = CSTRING(statBackblastAngle); showText = 1; - textStatement = QUOTE(params [ARR_2('_stat', '_config')]; format [ARR_2('%1°', getNumber (_config >> _stat select 0))]); + textStatement = QUOTE(params [ARR_2('_stat','_config')]; format [ARR_2('%1°',getNumber (_config >> _stat select 0))]); tabs[] = {{2}, {}}; }; class ACE_backblastRange: statBase { @@ -15,7 +15,7 @@ class EGVAR(arsenal,stats) { stats[] = {QGVAR(range)}; displayName = CSTRING(statBackblastRange); showText = 1; - textStatement = QUOTE(params [ARR_2('_stat', '_config')]; private _blastRangeStat = getNumber (_config >> _stat select 0); format [ARR_3('%1m (%2ft)', _blastRangeStat, (_blastRangeStat / 0.3048) toFixed 1)]); + textStatement = QUOTE(params [ARR_2('_stat','_config')]; private _blastRangeStat = getNumber (_config >> _stat select 0); format [ARR_3('%1m (%2ft)',_blastRangeStat,(_blastRangeStat / 0.3048) toFixed 1)]); tabs[] = {{2}, {}}; }; }; diff --git a/addons/overpressure/XEH_preInit.sqf b/addons/overpressure/XEH_preInit.sqf index 9361d05015..894773534a 100644 --- a/addons/overpressure/XEH_preInit.sqf +++ b/addons/overpressure/XEH_preInit.sqf @@ -6,6 +6,6 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" ADDON = true; diff --git a/addons/overpressure/functions/fnc_firedEHBB.sqf b/addons/overpressure/functions/fnc_firedEHBB.sqf index 53620da7b2..a36eb8bd56 100644 --- a/addons/overpressure/functions/fnc_firedEHBB.sqf +++ b/addons/overpressure/functions/fnc_firedEHBB.sqf @@ -53,7 +53,7 @@ if (_distance < _backblastRange) then { [_damage * 100] call BIS_fnc_bloodEffect; - if (["ACE_Medical"] call EFUNC(common,isModLoaded)) then { + if (["ace_medical"] call EFUNC(common,isModLoaded)) then { [_unit, _damage, "body", "backblast", _unit] call EFUNC(medical,addDamageToUnit); } else { _unit setDamage (damage _unit + _damage); diff --git a/addons/overpressure/functions/fnc_overpressureDamage.sqf b/addons/overpressure/functions/fnc_overpressureDamage.sqf index 2fd0c0f7e5..812a2ab7ea 100644 --- a/addons/overpressure/functions/fnc_overpressureDamage.sqf +++ b/addons/overpressure/functions/fnc_overpressureDamage.sqf @@ -57,7 +57,7 @@ TRACE_3("cache",_overpressureAngle,_overpressureRange,_overpressureDamage); [_damage * 100] call BIS_fnc_bloodEffect; }; - if (["ACE_Medical"] call EFUNC(common,isModLoaded)) then { + if (["ace_medical"] call EFUNC(common,isModLoaded)) then { [_x, _damage, "body", "backblast", _firer] call EFUNC(medical,addDamageToUnit); } else { _x setDamage (damage _x + _damage); diff --git a/addons/overpressure/initSettings.sqf b/addons/overpressure/initSettings.inc.sqf similarity index 100% rename from addons/overpressure/initSettings.sqf rename to addons/overpressure/initSettings.inc.sqf diff --git a/addons/overpressure/stringtable.xml b/addons/overpressure/stringtable.xml index ab58e14027..caade38c3d 100644 --- a/addons/overpressure/stringtable.xml +++ b/addons/overpressure/stringtable.xml @@ -5,11 +5,13 @@ Overpressure 超压 Überdruck + Sovrapressione 과중압력 Nadciśnienie 過圧 Перегрузка Sobrepresiòn + Surpression Overpressure Distance Coefficient @@ -30,7 +32,7 @@ Scales the overpressure effect [Default: 1] Stellt den Koeffizient für die Überdruckentfernung ein [Standard: 1] - 過圧効果の範囲 [標準: 1] + 過圧効果の範囲 [デフォルト: 1] 과중압력의 효과 크기 [기본설정: 1] Skaluje efekt nadciśnienia [Domyślne: 1] Ajuste l'effet de surpression. Valeur par défaut : 1. diff --git a/addons/parachute/XEH_preInit.sqf b/addons/parachute/XEH_preInit.sqf index cb77025b4d..d3aa4bd2d5 100644 --- a/addons/parachute/XEH_preInit.sqf +++ b/addons/parachute/XEH_preInit.sqf @@ -8,6 +8,6 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" ADDON = true; diff --git a/addons/parachute/initSettings.sqf b/addons/parachute/initSettings.inc.sqf similarity index 100% rename from addons/parachute/initSettings.sqf rename to addons/parachute/initSettings.inc.sqf diff --git a/addons/parachute/stringtable.xml b/addons/parachute/stringtable.xml index 90a64ce39d..db48a6109c 100644 --- a/addons/parachute/stringtable.xml +++ b/addons/parachute/stringtable.xml @@ -62,7 +62,7 @@ Irányíthatatlan ejtőernyő Неуправляемый парашют Paracadute non manovrabile - Para-querdas não controlável + Paraquedas não controlável 非操作型パラシュート 비조종 낙하산 非可操控降落伞 @@ -92,7 +92,7 @@ Parachute de secours Spadochron awaryjny Tartalék ejtőernyő - Para-quedas de reserva + Paraquedas de reserva Запасной парашют Záložní padák Paracaídas de reserva @@ -142,6 +142,7 @@ 開傘失敗率 Szansa na nieotwarcie się spadochronu Wahrscheinlichkeit, dass ein Fallschirm sich nicht öffnet + Probabilità che l'apertura del paracadute fallisca 开伞失败率 낙하산 펼치기 실패 확률 Probabilidad de fallo de paracaidas diff --git a/addons/pylons/XEH_preInit.sqf b/addons/pylons/XEH_preInit.sqf index 9361d05015..894773534a 100644 --- a/addons/pylons/XEH_preInit.sqf +++ b/addons/pylons/XEH_preInit.sqf @@ -6,6 +6,6 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" ADDON = true; diff --git a/addons/pylons/initSettings.sqf b/addons/pylons/initSettings.inc.sqf similarity index 100% rename from addons/pylons/initSettings.sqf rename to addons/pylons/initSettings.inc.sqf diff --git a/addons/pylons/stringtable.xml b/addons/pylons/stringtable.xml index b17bdec970..d431910d34 100644 --- a/addons/pylons/stringtable.xml +++ b/addons/pylons/stringtable.xml @@ -37,7 +37,7 @@ Configura Piloni 定義派龍架 设定导弹挂架 - 파일런 설정 + 무장창 설정 Konfiguriere Außenlaststationen Configurer les pylônes Konfiguruj Pylony @@ -52,7 +52,7 @@ ACE Piloni ACE 派龍架 ACE 导弹挂架 - ACE 파일런 + ACE 무장창 ACE Außenlaststationen ACE Pylônes ACE Pylony @@ -83,7 +83,7 @@ I piloni di colore rosso devono essere riarmati manualmente. 以紅色標記出的派龍架必須以手動方式進行彈藥整補 以红色标记出的导弹挂架必须以手动方式进行弹药整补。 - 붉은색의 파일런은 수동으로 재무장해야 합니다. + 붉은색의 무장창은 수동으로 재무장해야 합니다. Außenlaststationen, die rot markiert sind, müssen manuell aufmunitioniert werden. Les pylônes colorés en rouge devront être réarmés manuellement. Pylony, które są w kolorze czerwonym muszą być manualnie dozbrojone. @@ -94,7 +94,7 @@ %1 is already configuring this aircraft! - %1 はすでにこの機体へ設定されています! + %1 は すでにこの機体へ設定されています! % sta già configurando questo aereo! %1已經正在定義此飛機的武裝配置! %1已经正在定义此飞机的武器配置! @@ -109,7 +109,7 @@ Replacing pylon %1 out of %2... - %2 中 %1 のパイロンを交換しています・・・ + %2 個中 %1 番目のパイロンを交換しています・・・ Sostituendo pilone %1 al posto di %2... 共有%2個派龍架,正在整補%1號派龍架中... 共有%2个发射架,正在整装%1号挂架... @@ -124,11 +124,11 @@ Stopped at pylon %1! - パイロン %1 で中断しました! + %1 番目のパイロンで中断しました! Fermato al pilone %1! 已停止在%1號派龍架! 已在整装%1号挂架时停止! - %1 파일런이 멈춤 + %1 무장창이 멈춤 Gestoppt bei Außenlaststation %1 Arrêté au pylône %1 ! Zatrzymano na pylonie %1! @@ -157,7 +157,7 @@ 启用宙斯导弹挂架菜单 啟用派龍架選單給宙斯 Abilita Menù Piloni da Zeus - Zeus でパイロン メニューを有効化 + Zeusでパイロン メニューを有効化 Aktiviert Außenlaststationsmenü im Zeus Activer le menu des pylônes (Zeus) Aktywuj Menu Pylonów dla Zeus'a @@ -165,14 +165,14 @@ Ativar Menu de Pylon para Zeus Povolit menu s pylony pro Zeuse Habilitar menú de pilones para Zeus - 제우스 파일런 메뉴 활성화 + 제우스 무장창 메뉴 활성화 Enables use of the zeus module. 允许启用宙斯模组 允啟使用宙斯模塊 - Abilita l'uso dal modulo di Zeus - Zeus モジュールでパイロン メニューを利用できます。 + Abilita l'uso del modulo Zeus + Zeusモジュールでパイロン メニューを利用できるようにします。 Aktiviert die Nutzung im Zeus Permet l'utilisation des modules Zeus. Aktywuj wykorzystanie modułu zeus'a. @@ -180,13 +180,13 @@ Permite usar o módulo de Zeus Povoluje použití daného Zeus modulu. Habilita el uso del módulo de Zeus. - 제우스 파일런 메뉴를 사용할 수 있게 합니다. + 제우스 무장창 메뉴를 사용할 수 있게 합니다. Enable Pylons Menu from Ammo Trucks 启用弹药车导弹挂架菜单 啟用從彈藥卡車使用派龍架選單 - Abilita Menù Piloni da mezzi rifornimento munizioni + Abilita Menù Piloni da mezzi di rifornimento munizioni 弾薬トラックからパイロン メニューを有効化 Aktiviert Außenlaststationsmenü von Munitionstransportern Activer le menu des pylônes (camions de munitions) @@ -195,13 +195,13 @@ Ativar Menu de Pylons de Caminhões de Munição Povolit menu s pylony z muničních náklaďáků. Habilitar menú de pilones desde camiones de munición - 탄약 차량 파일런 메뉴 활성화 + 탄약 차량 무장창 메뉴 활성화 Enables use of pylons menu from ammo trucks. 允许在弹药车上启用导弹挂架菜单 允許從彈藥卡車使用派龍架選單 - Abilita l'uso del Menù Piloni da mezzi rifornimento munizioni + Abilita l'uso del Menù Piloni da mezzi di rifornimento munizioni 弾薬給弾トラックからパイロン メニューを利用できます。 Aktiviert die Nutzung von Außenlaststationsmenü von Munitionstransportern. Permet l'utilisation du menu des pylônes à partir des camions de ravitaillement de munitions. @@ -210,14 +210,14 @@ Permite abrir o menu de pylons através de veículos de munição. Povoluje použití menu na nastavení pylonů z náklaďáků s municí. Habilita el uso del menú de pilones desde camiones de munición. - 탄약 차량에서 파일런 메뉴를 불러올 수 있게 합니다. + 탄약 차량에서 무장창 메뉴를 불러올 수 있게 합니다. This aircraft doesn't have pylons 这架飞机没有导弹挂架 這架飛機沒有派龍架 Questo aereo non ha piloni - 航空機にパイロンがありません + この航空機にはパイロンがありません Dieses Flugzeug hat keine Außenlaststationen Cet aéronef n'a pas de pylônes. Ten pojazd nie posiada pylonów @@ -225,14 +225,14 @@ Essa aeronave não possui pylons Toto letadlo nemá pylony Esta aeronave no tiene pilones - 이 비행기는 파일런이 없습니다. + 이 비행기는 무장창이 없습니다. Configure pylons module is disabled for zeus 宙斯模组的导弹挂架已禁用 宙斯模塊的派龍架設定已被禁用 - Il modulo per configurare i piloni da Zeus è disabilitato - Zeus のパイロン モジュールを無効化 + Il modulo Zeus per configurare i piloni è disabilitato + Zeusのパイロン編集を無効化 Die Konfiguration für das Außenlaststationen ist im Zeus deaktiviert Le module de configuration des pylônes est désactivé pour Zeus. Konfiguracja modułu pylonów jest wyłączona dla zeus'a @@ -240,7 +240,7 @@ O Módulo de configurar pylons está desativado para o Zeus Nastavení pylonů je vypnuto pro Zeuse La configuración del módulo de pilones está deshabilitada para Zeus - 제우스 파일런 모듈 설정이 비활성화 되어있습니다. + 제우스 무장창 모듈 설정이 비활성화 되어있습니다. Rearm New Pylons @@ -248,7 +248,7 @@ Riarma Nuovi Piloni 重新整装新的导弹挂架 重新武装新的派龙架 - 새 파일런 재무장 + 새 무장창 재무장 Neue Außenlaststationen. aufmunitionieren Réarmer les nouveaux pylônes Dozbrój Nowe Pylony @@ -263,7 +263,7 @@ Riarma automaticamente i nuovi piloni dal veicoli di riarmo più vicino. 自動從附近的整補載具中為派龍架進行彈藥整補 自动从附近的整装载具中为导弹挂架进行弹药整装。 - 근처의 재무장 차량에서 빈 파일런을 자동으로 재무장 합니다. + 근처의 재무장 차량에서 빈 무장창을 자동으로 재무장 합니다. Neue Außenlaststationen. automatisch vom nächsten Munitionsfahrzeug aufmunitionieren Réarme automatiquement les nouveaux pylônes à partir du véhicule de ravitaillement le plus proche. Automatycznie dozbrajaj nowe pylony z najbliższego pojazdu dozbrajania. @@ -274,11 +274,11 @@ Time Per Pylon - パイロンへの時間 + パイロンあたりの所要時間 Tempo Per Pilone 派龍架整補所需時間(個別) 导弹挂架整装所需时间(个别) - 파일런 당 시간 + 무장창 당 시간 Zeit pro Außenlaststation Durée par pylône Czas na Pylon @@ -289,11 +289,11 @@ The time it takes to replace each pylon (in seconds). - 各パイロンの置き換えにかかる時間を設定します。(秒) + 各パイロンの置き換えに掛かる時間を設定します。(秒) Il tempo che impiega ogni pilone ad essere sostituito (in secondi). 每個派龍架需花多久時間進行整補(單位為秒) 每个挂架需花多久时间进行整装(单位为秒)。 - 파일런을 재설정 하는데 걸리는 시간 (초) + 무장창을 재설정 하는데 걸리는 시간 (초) Die benötigte Zeit, um einzelne Außenlaststationen zu ersetzen (in Sekunden). Le temps nécessaire pour remplacer chaque pylône (en secondes). Czas, jaki trwa wymiana każdego z pylonów (w sekundach). @@ -335,7 +335,7 @@ Require Engineer 工兵の必須化 - Necessita Ingegnere + Necessita Geniere 需要工兵 必须是工兵 정비병 요구 @@ -350,7 +350,7 @@ Require an engineer. 工兵を必須とします。 - Necessita un ingegnere. + Necessita un Geniere. 需要工兵才能進行彈藥整補 必须是工兵才能进行弹药整装。 정비병이 필요합니다. @@ -365,7 +365,7 @@ Require Toolkit ツールキットの必須化 - Necessita Kit Riparazione + Necessita Kit Utensili 需要工具包 需要工具包 도구모음 요구 @@ -380,7 +380,7 @@ Require a toolkit in inventory. インベントリ内にツールキットの存在を必須とします。 - Necessita un kit di riparazione nell'inventario + Necessita un kit utensili nell'inventario 需要工具包才能進行彈藥整補 需要工具包才能进行弹药整装。 도구모음이 필요합니다. diff --git a/addons/quickmount/CfgVehicles.hpp b/addons/quickmount/CfgVehicles.hpp index a52f17cf5a..afab89565e 100644 --- a/addons/quickmount/CfgVehicles.hpp +++ b/addons/quickmount/CfgVehicles.hpp @@ -43,7 +43,7 @@ class CfgVehicles { condition = QUOTE(call DFUNC(canShowFreeSeats)); \ statement = QUOTE(call DFUNC(getInNearest)); \ exceptions[] = {"isNotSwimming"}; \ - insertChildren = QUOTE((_this select 2) param [ARR_2(0, [])]); \ + insertChildren = QUOTE((_this select 2) param [ARR_2(0,[])]); \ }; \ }; \ }; \ diff --git a/addons/quickmount/XEH_preInit.sqf b/addons/quickmount/XEH_preInit.sqf index 9361d05015..894773534a 100644 --- a/addons/quickmount/XEH_preInit.sqf +++ b/addons/quickmount/XEH_preInit.sqf @@ -6,6 +6,6 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" ADDON = true; diff --git a/addons/quickmount/config.cpp b/addons/quickmount/config.cpp index 063897aebc..d74d99c050 100644 --- a/addons/quickmount/config.cpp +++ b/addons/quickmount/config.cpp @@ -5,7 +5,7 @@ class CfgPatches { units[] = {}; weapons[] = {}; requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"ace_common"}; + requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"Kingsley"}; url = ECSTRING(main,URL); diff --git a/addons/quickmount/functions/fnc_canShowFreeSeats.sqf b/addons/quickmount/functions/fnc_canShowFreeSeats.sqf index 865bab4d51..6812d9bf83 100644 --- a/addons/quickmount/functions/fnc_canShowFreeSeats.sqf +++ b/addons/quickmount/functions/fnc_canShowFreeSeats.sqf @@ -32,8 +32,7 @@ GVAR(enabled) && {isNull getConnectedUAVUnit _unit} && {simulationEnabled _vehicle} && { - -1 == crew _vehicle findIf {alive _x} - || {0.6 <= side group _unit getFriend side group _vehicle} + [_unit, _vehicle] call EFUNC(interaction,canInteractWithVehicleCrew) } && { 0.3 < vectorUp _vehicle select 2 // moveIn* and GetIn* don't work for flipped vehicles diff --git a/addons/quickmount/initSettings.sqf b/addons/quickmount/initSettings.inc.sqf similarity index 100% rename from addons/quickmount/initSettings.sqf rename to addons/quickmount/initSettings.inc.sqf diff --git a/addons/quickmount/stringtable.xml b/addons/quickmount/stringtable.xml index 1d8fd480c3..3ebff2f7d2 100644 --- a/addons/quickmount/stringtable.xml +++ b/addons/quickmount/stringtable.xml @@ -98,7 +98,7 @@ Maximum distance to check for vehicles. Maximale Entfernung zu Fahrzeugen - Distanza massima per controllare i veicoli. + Distanza massima da controllare per presenza di veicoli. 車両を検知できる最大距離を設定します。 最大可检查载具的距离。 最大可檢查載具的距離 @@ -153,7 +153,7 @@ Maksymalna prędkość pojazdu (km/h) pozwalająca graczowi wsiąść. 플레이어가 탑승 가능한 목표 차량의 최대 속도 Макс. скорость техники для посадки игрока (км/ч) - Velocidade máxima que o veículo pode estar para permitr entrada rápida. + Velocidade máxima que o veículo pode estar para permitir entrada rápida. Définit la vitesse maximale que peut avoir un véhicule en mouvement pour qu'un joueur réussisse à y entrer. Maximální rychlost vozidla (km/h) při které hráči mohou nastoupit do vozidla Oyuncu binmesi için izin verilen maksimum araç hızı (km / s) diff --git a/addons/rangecard/CfgWeapons.hpp b/addons/rangecard/CfgWeapons.hpp index 851e324346..cb55b0dcac 100644 --- a/addons/rangecard/CfgWeapons.hpp +++ b/addons/rangecard/CfgWeapons.hpp @@ -14,7 +14,7 @@ class CfgWeapons { ACE_isTool = 1; class ItemInfo: CBA_MiscItem_ItemInfo { - mass = 1; + mass = 0.1; }; }; }; diff --git a/addons/rangecard/XEH_postInit.sqf b/addons/rangecard/XEH_postInit.sqf index 9e60821fc1..6adc4cf2a1 100644 --- a/addons/rangecard/XEH_postInit.sqf +++ b/addons/rangecard/XEH_postInit.sqf @@ -1,6 +1,6 @@ #include "script_component.hpp" -#include "initKeybinds.sqf" +#include "initKeybinds.inc.sqf" GVAR(RangeCardOpened) = false; diff --git a/addons/rangecard/initKeybinds.sqf b/addons/rangecard/initKeybinds.inc.sqf similarity index 100% rename from addons/rangecard/initKeybinds.sqf rename to addons/rangecard/initKeybinds.inc.sqf diff --git a/addons/rangecard/stringtable.xml b/addons/rangecard/stringtable.xml index 4e1db8954c..859bb2e048 100644 --- a/addons/rangecard/stringtable.xml +++ b/addons/rangecard/stringtable.xml @@ -12,7 +12,7 @@ Távolsági kártya Таблица поправок Tavola Balistica - 射表 + レンジカード (射表) 사거리표 射表 彈道射表 @@ -29,7 +29,7 @@ 50 MÉTERES lépések - MRAD/MRAD (célzó/lövegek) Шаг 50 МЕТРОВ - MRAD/MRAD (сетка/маховички) Incrementi per 50 METRI - MRAD/MRAD (reticolo/torrette) - 50 メートル増やす -- MRAD/MRAD (照準線/砲塔) + 50 メートル単位 -- MRAD/MRAD (レチクル/タレット) 50 미터 늘리기 -- MRAD/MRAD (조준선/포탑) 50米增量 -- 毫弧度/毫弧度(瞄镜分划线/调整纽) 50公尺增量 -- 毫弧度/毫弧度 (瞄鏡分劃線/調整紐) @@ -46,7 +46,7 @@ Távolsági kártya kinyitása Открыть таблицу поправок Apri Tavola Balistica - 射表を開く + レンジカードを開く 사거리표 열기 开启射表 開啟彈道射表 @@ -63,7 +63,7 @@ Távolsági kártya-másolat kinyitása Открыть копию таблицы поправок Apri Copia Tavola Balistica - 複製された射表を開く + レンジカードの複製を開く 복제 사거리표 열기 开启射表副本 開啟彈道射表副本 @@ -75,12 +75,12 @@ Abrir tarjeta de distancias Otevřít vzdálenostní tabulku Öffne Entfernungsspinne - Abrir tabela de distäncias + Abrir tabela de distâncias Ouvrir la table de tir Távolsági kártya kinyitása Открыть таблицу поправок Apri Tavola Balistica - 射表を開く + レンジカードを開く 사거리표 열기 开启射表 開啟彈道射表 @@ -97,7 +97,7 @@ Távolsági kártya-másolat kinyitása Открыть копию таблицы поправок Apri Copia Tavola Balistica - 複製された射表を開く + レンジカードの複製を開く 복제 사거리표 열기 开启射表副本 開啟彈道射表副本 @@ -109,12 +109,12 @@ Copiar tarjeta de distancias Kopírovat vzdálenostní tabulku Kopiere Entfernungsspinne - Copiar tabela de distäncias + Copiar tabela de distâncias Recopier la table de tir Távolsági kártya másolása Скопировать таблицу поправок Copia Tavola Balistica - 射表を複製する + レンジカードを複製 사거리표 복제 复制射表 複製彈道射表 diff --git a/addons/realisticnames/CfgWeapons.hpp b/addons/realisticnames/CfgWeapons.hpp index 2c57bdd7a8..953f981051 100644 --- a/addons/realisticnames/CfgWeapons.hpp +++ b/addons/realisticnames/CfgWeapons.hpp @@ -715,10 +715,10 @@ class CfgWeapons { displayName = "UTG Defender 126"; }; - class optic_hamr: ItemCore { + class optic_Hamr: ItemCore { displayName = CSTRING(optic_hamr); }; - class optic_Hamr_khk_F: optic_hamr { + class optic_Hamr_khk_F: optic_Hamr { displayName = CSTRING(optic_hamr_khk); }; class ACE_optic_Hamr_2D: optic_Hamr { diff --git a/addons/realisticnames/addon.toml b/addons/realisticnames/addon.toml index 7cfef775ee..bf39213892 100644 --- a/addons/realisticnames/addon.toml +++ b/addons/realisticnames/addon.toml @@ -1,2 +1,3 @@ -[preprocess] -enabled = false +[tools] +pboProject_noBinConfig = true +sqfvm_skipConfigChecks = true diff --git a/addons/realisticnames/config.cpp b/addons/realisticnames/config.cpp index e98d18f0b6..8cf6232906 100644 --- a/addons/realisticnames/config.cpp +++ b/addons/realisticnames/config.cpp @@ -1,5 +1,6 @@ #include "script_component.hpp" +#pragma hemtt flag pe23_ignore_has_include #if __has_include("\z\ace\addons\norealisticnames\script_component.hpp") #define PATCH_SKIP "No Realistic Names" #endif diff --git a/addons/realisticnames/stringtable.xml b/addons/realisticnames/stringtable.xml index efce83a658..045def6cd7 100644 --- a/addons/realisticnames/stringtable.xml +++ b/addons/realisticnames/stringtable.xml @@ -45,7 +45,7 @@ XM312 (Высокий) XM312 (Alta) XM312 (Magasított) - XM312 (Alta) + XM312 (Alto) XM312 (高) XM312 (높음) XM312重機槍 (高射腳架) @@ -96,7 +96,7 @@ XM307 (Высокий) XM307 (Alta) XM307 (Magasított) - XM307 (Alta) + XM307 (Alto) XM307 (高) XM307 (높음) XM307榴彈機槍 (高射腳架) @@ -453,7 +453,7 @@ HEMTT (боеприпасы) HEMTT Munições HEMTT (lőszerszállító) - HEMTT di rifornimento munizioni + HEMTT Munizioni HEMTT 弾薬 HEMTT 탄약 重型增程機動戰術卡車 (彈藥) @@ -470,7 +470,7 @@ HEMTT (топливозаправщик) HEMTT Combustível HEMTT (üzemanyag-szállító) - HEMTT di rifornimento carburante + HEMTT Carburante HEMTT 燃料 HEMTT 연료 重型增程機動戰術卡車 (燃油) @@ -487,7 +487,7 @@ HEMTT (ремонтный) HEMTT Reparador HEMTT (szerelő-jármű) - HEMTT Riparatore + HEMTT Riparazioni HEMTT 修理 HEMTT 수리 重型增程機動戰術卡車 (維修) @@ -573,7 +573,7 @@ FV510 Warrior FV510 Warrior FV510 Warrior - FV510 ウォーリアー + FV510 ウォーリア FV510 워리어 보병전투차 FV510 "戰士"步兵戰車 FV510 "战士" @@ -640,7 +640,7 @@ КамАЗ (боеприпасы) KamAZ Munições KamAZ (lőszerszállító) - KamAZ di rifornimento munizioni + KamAZ Munizioni KamAZ 弾薬 카마즈 탄약 "卡瑪斯"卡車 (彈藥) @@ -657,7 +657,7 @@ КамАЗ (топливозаправщик) KamAZ Combustível KamAZ (üzemanyag-szállító) - KamAZ di rifornimento carburante + KamAZ Carburante KamAZ 燃料 카마즈 연료 "卡瑪斯"卡車 (燃油) @@ -674,7 +674,7 @@ КамАЗ (ремонтный) KamAZ Reparador KamAZ (szerelő-jármű) - KamAZ riparatore + KamAZ Riparazioni KamAZ 修理 카마즈 수리 "卡瑪斯"卡車 (維修) @@ -894,7 +894,7 @@ Тайфун (устройство) Typhoon Dispositivo Typhoon (eszköz) - Typhoon per dispositivo + Typhoon con Dispositivo タイフーン デバイス 타이푼 장치 "颱風"卡車 (精密設備) @@ -911,7 +911,7 @@ Тайфун (боеприпасы) Typhoon Munições Typhoon (lőszerszállító) - Typhoon di rifornimento munizioni + Typhoon Munizioni タイフーン 弾薬 타이푼 탄약 "颱風"卡車 (彈藥) @@ -928,7 +928,7 @@ Тайфун (топливозаправщик) Typhoon Combustível Typhoon (üzemanyag-szállító) - Typhoon di rifornimento carburante + Typhoon Carburante タイフーン 燃料 타이푼 연료 "颱風"卡車 (燃油) @@ -945,7 +945,7 @@ Тайфун (ремонтный) Typhoon Reparador Typhoon (szerelő-jármű) - Typhoon riparatore + Typhoon Riparazioni タイフーン 修理 타이푼 수리 "颱風"卡車 (維修) @@ -962,7 +962,7 @@ Тайфун (медицинский) Typhoon Médico Typhoon (egészségügyi) - Typhoon medico + Typhoon Medico タイフーン 衛生 타이푼 의료 "颱風"卡車 (醫療) @@ -1216,7 +1216,7 @@ Ka-60 Kasatka (preto e branco) Ka-60 Касатка (чёрно-белый) Ka-60 Kasatka (blanco y negro) - Ka-60 カサートカ (黒 & 白) + Ka-60 カサートカ (ブラック & ホワイト) Ka-60 카사트카 (검정 및 하양) Ka-60 "逆戟鯨"直升機 (黑&白) Ka-60 "虎鲸"(黑白) @@ -1300,7 +1300,7 @@ M18A1 Клеймор M18A1 Claymore M18A1 Claymore akna - M18A1 Claymore Mina antiuomo + M18A1 Claymore Mina Antiuomo M18A1 クレイモア M18A1 클레이모어 M18A1 "闊刀"地雷 @@ -1317,7 +1317,7 @@ M183 комплектный подрывной заряд M183 Sacola de Demolição M183 romboló töltet - M183 Demolition Charge Assembly + M183 Carica da Demolizioni M183 梱包爆薬 M183 폭파 장약 조립 M183炸藥包 @@ -1327,7 +1327,8 @@ M183 Demolition Charge (Throwable) M183 Charge de démolition (lançable) - M183 梱包爆薬 (投てき仕様) + M183 Carica da Demolizioni (Lanciabile) + M183 梱包爆薬 (投擲仕様) M183 Demolition Charge (Throwable) Carga de demolición M183 (Lanzable) M183 комплектный подрывной заряд (бросаемый) @@ -1346,7 +1347,7 @@ M112 подрывной заряд M112 Carga de Demolição M112 romboló tömb - M112 da Demolizione + M112 Blocco da Demolizione M112 爆薬ブロック M112 폭파 블럭 M112塑性炸藥 @@ -1356,7 +1357,8 @@ M112 Demolition Charge (Throwable) M112 Bloc de démolition (lançable) - M112 爆薬ブロック (投てき仕様) + M112 Blocco da Demolizione (Lanciabile) + M112 爆薬ブロック (投擲仕様) M112 Demolition Charge (Throwable) Bloque de demolición M112 (Lanzable) M112 подрывной заряд (бросаемый) @@ -1443,7 +1445,7 @@ M18 Granada de fumaça (Verde) M18 füstgránát (Zöld) M18 Granata fumogena (Verde) - M18 煙幕手榴弾 (緑) + M18 発煙手榴弾 (緑) M18 연막탄 (초록) M18煙霧彈 (綠色) M18 烟雾弹(绿色) @@ -1494,7 +1496,7 @@ M18 Granada de fumaça (Vermelha) M18 füstgránát (Piros) M18 Granata fumogena (Rosso) - M18 煙幕手榴弾 (赤) + M18 発煙手榴弾 (赤) M18 연막탄 (빨강) M18煙霧彈 (紅色) M18 烟雾弹(红色) @@ -1527,7 +1529,7 @@ M15 противотанковая мина M15 Mina anticarro M15 harckocsiakna - M15 Mine anticarro + M15 Mina Anticarro M15 対戦車地雷 M15 대전차지뢰 M15反坦克地雷 @@ -1544,7 +1546,7 @@ VS-50 противопехотная мина VS-50 Mina antipessoal VS-50 gyalogsági taposóakna - VS-50 Mine antiuomo + VS-50 Mina Antiuomo VS-50 対人地雷 VS-50 대인지뢰 VS-50反人員地雷 @@ -1561,7 +1563,7 @@ M26 противопехотная мина M26 Mina saltadora antipessoal M26 gyalogsági ugróakna - M26 Mine saltanti antiuomo + M26 Mina Antiuomo Saltante M26 対人跳躍地雷 M26 대인도약지뢰 M26反人員彈跳雷 @@ -1578,8 +1580,8 @@ PMR-3 противопехотная мина PMR-3 Mina antipessoal (armadilha) PMR-3 botlódrótos gyalogsági akna - PMR-3 Mine antiuomo - PMR-3 仕掛け型対人地雷 + PMR-3 Mina Antiuomo + PMR-3 仕掛け線対人地雷 PMR-3 대인인계철선지뢰 PMR-3反人員絆線雷 PMR-3 反人员绊雷 @@ -1629,7 +1631,7 @@ Custom Covert II Custom Covert II Custom Covert II - ACP-C2 + Custom Covert II カスタム コバートⅡ 커스텀 커버트 II 特裝隱蔽Ⅱ型手槍 @@ -1782,7 +1784,7 @@ Mini-Spike (AT) Mini-Spike (ПТРК) Mini-Spike (AT) - Mini-Spike (AT) + Mini-Spike (AC) ミニスパイク (対戦車) 스파이크 미사일 (대전차) "迷你長釘"導彈發射器 (反坦克) @@ -1877,7 +1879,7 @@ MX(卡其) MX (Kaki) MX (Caqui) - MX (Kaki) + MX (Cachi) MX (Khaki) MX (хаки) MX (Khaki) @@ -1927,7 +1929,7 @@ MXC(卡其) MXC (Kaki) MXC (Caqui) - MXC (Kaki) + MXC (Cachi) MXC (Khaki) MXC (хаки) MXC (Khaki) @@ -1977,7 +1979,7 @@ MX 3GL(卡其) MX 3GL (Kaki) MX 3GL (Caqui) - MX 3GL (Kaki) + MX 3GL (Cachi) MX 3GL (Khaki) MX 3GL (хаки) MX 3GL (Khaki) @@ -2027,7 +2029,7 @@ MX LSW(卡其) MX LSW (Kaki) MX LSW (Caqui) - MX LSW (Kaki) + MX LSW (Cachi) MX LSW (Khaki) MX LSW (хаки) MX LSW (Khaki) @@ -2077,7 +2079,7 @@ MXM(卡其) MXM (Kaki) MXM (Caqui) - MXM (Kaki) + MXM (Cachi) MXM (Khaki) MXM (хаки) MXM (Khaki) @@ -2097,7 +2099,7 @@ KH2002 Sama KH2002 Сама KT2002 Sama - KT2002 Katiba + KH2002 Sama KH2002 サマ KH2002 사마 KH2002 "海白爾"突擊步槍 @@ -2114,7 +2116,7 @@ KH2002C Sama KH2002C Сама KT2002C Sama - KT2002C Katiba + KH2002C Sama KH2002C サマ KH2002C 사마 KH2002C"海白爾"卡賓步槍 @@ -2131,7 +2133,7 @@ KH2002 Sama KGL KH2002 Сама KGL KT2002 Sama KGL - KT2002 Katiba KGL + KH2002 Sama KGL KH2002 サマ KGL KH2002 사마 KGL KH2002 "海白爾"突擊步槍 (榴彈) @@ -2148,8 +2150,8 @@ F2000 (Camuflaje) F2000 (камуфляжный) F2000 (Camo) - F2000 (Camo) - F2000 (カモフラージュ) + F2000 (Mimetica) + F2000 (迷彩) F2000 (위장) F2000突擊步槍 (迷彩) F2000(迷彩) @@ -2182,8 +2184,8 @@ F2000 Tactical (Camuflaje) F2000 Tactical (камуфляжный) F2000 Tactical (Camo) - F2000 Tactical (Camo) - F2000 タクティカル (カモフラージュ) + F2000 Tactical (Mimetica) + F2000 タクティカル (迷彩) F2000 택티컬 (위장) F2000戰術型突擊步槍 (迷彩) F2000 战术型(迷彩) @@ -2216,8 +2218,8 @@ F2000 EGLM (Camuflaje) F2000 EGLM (камуфляжный) F2000 EGLM (Camo) - F2000 EGLM (Camo) - F2000 EGLM (カモフラージュ) + F2000 EGLM (Mimetica) + F2000 EGLM (迷彩) F2000 EGLM (위장) F2000突擊步槍 (榴彈—迷彩) F2000 ELGM(迷彩) @@ -2437,8 +2439,8 @@ GM6 Lynx (Camuflaje) GM6 Lynx (камуфляжный) GM6 Lynx (Camo) - GM6 Lynx (Camo) - GM6 リンクス (カモフラージュ) + GM6 Lynx (Mimetica) + GM6 リンクス (迷彩) GM6 링스 (위장) GM6 "天貓"反器材狙擊步槍 (迷彩) GM6 "猞猁"(迷彩) @@ -2471,8 +2473,8 @@ M200 Intervention (Camuflaje) M200 Intervention (камуфляжный) M200 Intervention (Camo) - M200 Intervention (Camo) - M200 インターベンション (カモフラージュ) + M200 Intervention (Mimetica) + M200 インターベンション (迷彩) M200 인터벤션 (위장) M200干預型狙擊步槍 (迷彩) M200 "干预"(迷彩) @@ -2537,10 +2539,10 @@ Noreen "Bad News" ULR (камуфляжный) Noreen "Bad News" ULR (Tarnmuster) Noreen "Bad News" ULR (kamuflaż) - Noreen "Bad News" ULR (Camo) + Noreen "Bad News" ULR (Mimetica) Noreen "Bad News"ULR (Terepmintás) Noreen "Bad News" ULR (Camuflagem) - ノレーン "バッド ニュース" ULR (カモフラージュ) + ノレーン "バッド ニュース" ULR (迷彩) 노린 "배드뉴스" ULR (위장) 諾琳"壞消息"極距狙擊步槍 (迷彩) 诺琳 "坏消息" 极距狙击步枪(迷彩) @@ -2557,7 +2559,7 @@ Noreen "Bad News" ULR (Sabbia) Noreen "Bad News"ULR (Homok) Noreen "Bad News" ULR (Deserto) - ノレーン "バッド ニュース" ULR (砂地) + ノレーン "バッド ニュース" ULR (サンド) 노린 "배드뉴스" ULR (모래) 諾琳"壞消息"極距狙擊步槍 (沙色) 诺琳 "坏消息" 极距狙击步枪(沙色) @@ -2605,7 +2607,7 @@ SIG 556 (хаки) SIG 556 (Khaki) SIG 556 (Khaki) - SIG 556 (Khaki) + SIG 556 (Cachi) SIG 556 (Khaki) SIG 556 (Caqui) SIG 556 (カーキ) @@ -2639,10 +2641,10 @@ SIG 556 (камуфляжный) SIG 556 (kamuflaż) SIG 556 (Tarnmuster) - SIG 556 (Camo) + SIG 556 (Mimetica) SIG 556 (Terepmintás) SIG 556 (Camuflagem) - SIG 556 (カモフラージュ) + SIG 556 (迷彩) 시그 556 (위장) SIG 556精準步槍 (迷彩) SIG 556(迷彩) @@ -2656,10 +2658,10 @@ SIG 556 (Woodland) SIG 556 (leśny) SIG 556 (Grünes Tarnmuster) - SIG 556 (Woodland) + SIG 556 (Boschivo) SIG 556 (Erdőmintás) SIG 556 (Floresta) - SIG 556 (森林) + SIG 556 (森林迷彩) 시그 556 (수풀) SIG 556精準步槍 (森林迷彩) SIG 556(森林迷彩) @@ -2707,7 +2709,7 @@ ASP-1 Kir (пустынный) ASP-1 Kir (Hellbraun) ASP-1 Kir (Tan) - ASP-1 Kir (Tan) + ASP-1 Kir (Marroncino) ASP-1 Kir (Cserszín) ASP-1 Kir (Deserto) ASP-1 キール (タン) @@ -2775,7 +2777,7 @@ Cyrus (пустынный) Cyrus (Hellbraun) Cyrus (podpalany) - Cyrus (Tan) + Cyrus (Marroncino) Cyrus (Cserszín) Cyrus (Deserto) サイラス (タン) @@ -2809,10 +2811,10 @@ M14 (камуфляжный) M14 (kamuflaż) M14 (Tarnmuster) - M14 (Camo) + M14 (Mimetica) M14 (Terepmintás) M14 (Camuflagem) - M14 (カモフラージュ) + M14 (迷彩) M14 (위장) M14精準步槍 (迷彩) M14(迷彩) @@ -2826,7 +2828,7 @@ M14 (олива) M14 (oliwkowy) M14 (Olivgrün) - M14 (Olive) + M14 (Oliva) M14 (Olíva) M14 (Oliva) M14 (オリーブド ラブ) @@ -2877,7 +2879,7 @@ HK121 (пустынный) HK121 (Hellbraun) HK121 (podpalany) - HK121 (Tan) + HK121 (Marroncino) HK121 (Cserszín) HK121 (Deserto) HK 121 (タン) @@ -2914,7 +2916,7 @@ LWMMG (MTP) LWMMG (MTP) LWMMG (MTP) - LWMMG (マルチカモ) + LWMMG (MTP) LWMMG (MTP) 輕量化中型機槍 (多地形迷彩) LWMMG(多地形迷彩) @@ -3303,7 +3305,7 @@ M200 Intervention (тропик) M200 Intervention (Trópico) M200 Intervention (Tropico) - M200 インターベンション (熱帯) + M200 インターベンション (熱帯迷彩) M200 인터벤션 (열대) M200干預型狙擊步槍 (熱帶迷彩) M200 "干预"(热带迷彩) @@ -3351,7 +3353,7 @@ HK416A5 11 " (хаки) HK416A5 11 " (Khaki) HK416A5 11 " (Khaki) - HK416A5 11 " (Khaki) + HK416A5 11 " (Cachi) HK416A5 11 " (Khaki) HK416A5 11 " (Caqui) HK416A5 11 " (カーキ) @@ -3402,7 +3404,7 @@ HK416A5 11 " GL (хаки) HK416A5 11 " GL (Khaki) HK416A5 11 " GL (Khaki) - HK416A5 11 " GL (Khaki) + HK416A5 11 " GL (Cachi) HK416A5 11 " GL (Khaki) HK416A5 11 " GL (Caqui) HK416A5 11 " GL (カーキ) @@ -3453,7 +3455,7 @@ HK416A5 14.5 " (хаки) HK416A5 14.5 " (Khaki) HK416A5 14.5 " (Khaki) - HK416A5 14.5 " (Khaki) + HK416A5 14.5 " (Cachi) HK416A5 14.5 " (Khaki) HK416A5 14.5 " (Caqui) HK416A5 14.5 " (カーキ) @@ -3504,7 +3506,7 @@ HK417A2 20 " (хаки) HK417A2 20 " (Khaki) HK417A2 20 " (Khaki) - HK417A2 20 " (Khaki) + HK417A2 20 " (Cachi) HK417A2 20 " (Khaki) HK417A2 20 " (Caqui) HK417A2 20 " (カーキ) @@ -3555,7 +3557,7 @@ P99 (хаки) P99 (Khaki) P99 (Khaki) - P99 (Khaki) + P99 (Cachi) P99 (Khaki) P99 (Caqui) P99 (カーキ) @@ -3860,7 +3862,7 @@ Leupold Mark 4 HAMR (卡其色) Leupold Mark 4 HAMR(卡其色) Leupold Mark 4 HAMR (カーキ) - Leupold Mark 4 HAMR (Khaki) + Leupold Mark 4 HAMR (Cachi) Leupold Mark 4 HAMR (Khaki) Leupold Mark 4 HAMR (хаки) Leupold Mark 4 HAMR (Khaki) @@ -3908,7 +3910,7 @@ ELCAN SpecterOS (黃褐色) ELCAN SpecterOS(沙色) ELCAN SpecterOS (タン) - ELCAN SpecterOS (Tan) + ELCAN SpecterOS (Marroncino) ELCAN SpecterOS (Tan) ELCAN SpecterOS (пустынный) ELCAN SpecterOS (Bege) @@ -3939,7 +3941,7 @@ ELCAN SpecterOS (綠色數位蜂巢迷彩) ELCAN SpecterOS(绿色蜂巢迷彩) ELCAN SpecterOS (緑ヘックス) - ELCAN SpecterOS (Verde Hex) + ELCAN SpecterOS (Hex Verde) ELCAN SpecterOS (Zielony Hex) ELCAN SpecterOS (зелёный гекс) ELCAN SpecterOS (Verde Hex) @@ -3986,6 +3988,7 @@ ELCAN SpecterOS (Lush) ELCAN SpecterOS (Leśny) ELCAN SpecterOS (Forêt) + ELCAN SpecterOS (Verdeggiante) ELCAN SpecterOS (緑地) ELCAN SpecterOS (Grün) ELCAN SpecterOS(繁茂) @@ -3997,6 +4000,7 @@ ELCAN SpecterOS (Arid) ELCAN SpecterOS (Jałowy) ELCAN SpecterOS (Désert) + ELCAN SpecterOS (Arido) ELCAN SpecterOS (乾燥地帯) ELCAN SpecterOS (Trocken) ELCAN SpecterOS(干旱) @@ -4008,6 +4012,7 @@ ELCAN SpecterOS 7.62 (Black) ELCAN SpecterOS 7.62 (Czarny) ELCAN SpecterOS 7.62 (Noire) + ELCAN SpecterOS 7.62 (Nero) ELCAN SpecterOS 7.62 (ブラック) ELCAN SpecterOS 7.62 (Schwarz) ELCAN SpecterOS 7.62(黑色) @@ -4019,6 +4024,7 @@ ELCAN SpecterOS 7.62 (Lush) ELCAN SpecterOS 7.62 (Leśny) ELCAN SpecterOS 7.62 (Forêt) + ELCAN SpecterOS 7.62 (Verdeggiante) ELCAN SpecterOS 7.62 (緑地) ELCAN SpecterOS 7.62 (Grün) ELCAN SpecterOS 7.62(繁茂) @@ -4030,6 +4036,7 @@ ELCAN SpecterOS 7.62 (Arid) ELCAN SpecterOS 7.62 (Jałowy) ELCAN SpecterOS 7.62 (Désert) + ELCAN SpecterOS 7.62 (Arido) ELCAN SpecterOS 7.62 (乾燥地帯) ELCAN SpecterOS 7.62 (Trocken) ELCAN SpecterOS 7.62(干旱) @@ -4059,7 +4066,7 @@ SIG BRAVO4 / ROMEO3 (卡其色) SIG BRAVO4 / ROMEO3(卡其色) SIG BRAVO4 / ROMEO3 (カーキ) - SIG BRAVO4 / ROMEO3 (Khaki) + SIG BRAVO4 / ROMEO3 (Cachi) SIG BRAVO4 / ROMEO3 (Khaki) SIG BRAVO4 / ROMEO3 (хаки) SIG BRAVO4 / ROMEO3 (Khaki) @@ -4106,7 +4113,7 @@ Nightforce NXS (綠色數位蜂巢迷彩) Nightforce NXS(绿色蜂巢迷彩) Nightforce NXS (緑ヘックス) - Nightforce NXS (Verde Hex) + Nightforce NXS (Hex Verde) Nightforce NXS (Zielony Hex) Nightforce NXS (зелёный гекс) Nightforce NXS (Verde Hex) @@ -4171,7 +4178,7 @@ US Optics MR-10(黑色) US Optics MR-10 (ブラック) US Optics MR-10 (Czarny) - Ottica US MR-10 (nera) + Ottica US MR-10 (Nera) US Optics MR-10 (чёрный) US Optics MR-10 (Preto) US Optics MR-10 (Noire) @@ -4187,7 +4194,7 @@ US Optics MR-10(卡其色) US Optics MR-10 (カーキ) US Optics MR-10 (Khaki) - Ottica US MR-10 (cachi) + Ottica US MR-10 (Cachi) US Optics MR-10 (хаки) US Optics MR-10 (Khaki) US Optics MR-10 (Kaki) @@ -4203,7 +4210,7 @@ US Optics MR-10(沙色) US Optics MR-10 (サンド) US Optics MR-10 (Piasek) - Ottica US MR-10 (sabbia) + Ottica US MR-10 (Sabbia) US Optics MR-10 (песочный) US Optics MR-10 (Areia) US Optics MR-10 (Beige) @@ -4219,7 +4226,7 @@ KAHLES Helia(黑色) KAHLES ヘリア (ブラック) KAHLES Helia (Czarny) - KAHLES Helia (nero) + KAHLES Helia (Nero) KAHLES Helia (чёрный) KAHLES Helia (Preto) KAHLES Helia (Noire) @@ -4235,7 +4242,7 @@ KAHLES Helia(蜂巢迷彩) KAHLES ヘリア (ヘックス) KAHLES Helia (Hex) - KAHLES Helia (esagonale) + KAHLES Helia (Hex) KAHLES Helia (гекс) KAHLES Helia (Hex) KAHLES Helia (Hex) @@ -4251,7 +4258,7 @@ KAHLES Helia(旧) KAHLES ヘリア (使い古し) KAHLES Helia (Stary) - KAHLES Helia (vecchio) + KAHLES Helia (Vecchio) KAHLES Helia (старый) KAHLES Helia (Velho) KAHLES Helia (Usée) @@ -4267,7 +4274,7 @@ KAHLES Helia(沙色) KAHLES Helia (タン) KAHLES Helia (Tan) - KAHLES Helia (marroncino) + KAHLES Helia (Marroncino) KAHLES Helia (пустынный) KAHLES Helia (Bege) KAHLES Helia (Tan) @@ -4298,7 +4305,7 @@ Burris XTR II (綠色數位蜂巢迷彩) Burris XTR II(绿色蜂巢迷彩) Burris XTR II (緑ヘックス) - Burris XTR II (Green Hex) + Burris XTR II (Hex Verde) Burris XTR II (Zielony Hex) Burris XTR II (зелёный гекс) Burris XTR II (Verde Hex) @@ -4313,6 +4320,7 @@ Burris XTR II (Old) Burris XTR II (Stary) Burris XTR II (Usée) + Burris XTR II (Vecchio) Burris XTR II (使い古し) Burris XTR II (Alt) Burris XTR II(陈旧) @@ -4324,10 +4332,11 @@ Burris XTR II (ASP-1 Kir) Burris XTR II (ASP-1 Kir) Burris XTR II (ASP-1 Kir) - Burris XTR II (ASP-1 Kir) + Burris XTR II (APS-1 Kir) + Burris XTR II (ASP-1 キール用) Burris XTR II (ASP-1 Kir) Burris XTR II(ASP-1 Kir) - 버리스 XTR II (ASP-1 키르) + 버리스 XTR II (ASP-1 키르용) Burris XTR II (ASP-1 Kir) Burris XTR II (ASP-1 Kir) @@ -4337,7 +4346,7 @@ EOTech XPS3 (黃褐色) EOTech XPS3(沙色) EOTech XPS3 (タン) - EOTech XPS3 (Tan) + EOTech XPS3 (Marroncino) EOTech XPS3 (Tan) EOTech XPS3 (пустынный) EOTech XPS3 (Bege) @@ -4353,7 +4362,7 @@ EOTech XPS3 (黑色) EOTech XPS3(黑色) EOTech XPS3 (ブラック) - EOTech XPS3 (Black) + EOTech XPS3 (Nero) EOTech XPS3 (Czarny) EOTech XPS3 (чёрный) EOTech XPS3 (Preto) @@ -4369,7 +4378,7 @@ EOTech XPS3 (卡其色) EOTech XPS3(卡其色) EOTech XPS3 (カーキ) - EOTech XPS3 (Khaki) + EOTech XPS3 (Cachi) EOTech XPS3 (Khaki) EOTech XPS3 (хаки) EOTech XPS3 (Khaki) @@ -4383,6 +4392,7 @@ EOTech XPS3 (Lush) EOTech XPS3 (Leśny) EOTech XPS3 (Forêt) + EOTech XPS3 (Verdeggiante) EOTech XPS3 (緑地) EOTech XPS3 (Grün) EOTech XPS3(繁茂) @@ -4394,6 +4404,7 @@ EOTech XPS3 (Arid) EOTech XPS3 (Jałowy) EOTech XPS3 (Désert) + EOTech XPS3 (Arido) EOTech XPS3 (乾燥地帯) EOTech XPS3 (Trocken) EOTech XPS3(干旱) @@ -4407,7 +4418,7 @@ EOTech XPS3 SMG (黃褐色) EOTech XPS3(冲锋枪用,沙色) EOTech XPS3 SMG (タン) - EOTech XPS3 SMG (Tan) + EOTech XPS3 SMG (Marroncino) EOTech XPS3 SMG (Tan) EOTech XPS3 SMG (пустынный) EOTech XPS3 SMG (Bege) @@ -4439,7 +4450,7 @@ EOTech XPS3 SMG (卡其色) EOTech XPS3(冲锋枪用,卡其色) EOTech XPS3 SMG (カーキ) - EOTech XPS3 SMG (Khaki) + EOTech XPS3 SMG (Cachi) EOTech XPS3 SMG (Khaki) EOTech XPS3 SMG (хаки) EOTech XPS3 SMG (Khaki) @@ -4602,7 +4613,7 @@ P90 TR (хаки) P90 TR (Khaki) P90 TR (Khaki) - P90 TR (Khaki) + P90 TR (Cachi) P90 TR (Khaki) P90 TR (Caqui) P90 TR (カーキ) @@ -4619,10 +4630,10 @@ P90 TR (камуфляжный) P90 TR (kamuflaż) P90 TR (Camo) - P90 TR (Camo) + P90 TR (Mimetica) P90 TR (Terepmintás) P90 TR (Camuflagem) - P90 TR (カモフラージュ) + P90 TR (迷彩) P90 TR (迷彩) P90 TR(迷彩) P90 TR (위장) @@ -4670,7 +4681,7 @@ P90 (хаки) P90 (Khaki) P90 (Khaki) - P90 (Khaki) + P90 (Cachi) P90 (Khaki) P90 (Caqui) P90 (カーキ) @@ -4687,10 +4698,10 @@ P90 (камуфляжный) P90 (kamuflaż) P90 (Camo) - P90 (Camo) + P90 (Mimetica) P90 (Terepmintás) P90 (Camuflagem) - P90 (カモフラージュ) + P90 (迷彩) P90 (迷彩) P90(迷彩) P90 (위장) @@ -4738,7 +4749,7 @@ PS90 TR (хаки) PS90 TR (Khaki) PS90 TR (Khaki) - PS90 TR (Khaki) + PS90 TR (Cachi) PS90 TR (Khaki) PS90 TR (Caqui) PS90 TR (カーキ) @@ -4755,10 +4766,10 @@ PS90 TR (камуфляжный) PS90 TR (kamuflaż) PS90 TR (Camo) - PS90 TR (Camo) + PS90 TR (Mimetica) PS90 TR (Terepmintás) PS90 TR (Camuflagem) - PS90 TR (カモフラージュ) + PS90 TR (迷彩) PS90 TR (迷彩) PS90 TR(迷彩) PS90 TR (위장) @@ -4806,7 +4817,7 @@ PS90 (хаки) PS90 (Khaki) PS90 (Khaki) - PS90 (Khaki) + PS90 (Cachi) PS90 (Khaki) PS90 (Caqui) PS90 (カーキ) @@ -4823,10 +4834,10 @@ PS90 (камуфляжный) PS90 (kamuflaż) PS90 (Camo) - PS90 (Camo) + PS90 (Mimetica) PS90 (Terepmintás) PS90 (Camuflagem) - PS90 (カモフラージュ) + PS90 (迷彩) PS90 (迷彩) PS90(迷彩) PS90 (위장) @@ -4860,7 +4871,7 @@ Carregador de 50 projéteis de 5.7mm Caricatore 5.7mm 50Rnd Магазин из 50-ти 5,7 мм - 5.7mm 50 発入り弾倉 + 5.7mm 50Rnd マガジン 5.7mm 50發 彈匣 5.7 mm 50发 弹匣 5.7mm 50발 들이 탄창 @@ -4939,7 +4950,7 @@ AK-15 (草木茂盛) AK-15 (Forêt) AK-15 (exuberante) - AK-15 (verdeggiante) + AK-15 (Verdeggiante) AK-15 (region z bujną roślinnością) AK-15 (обильная растительность) AK-15 (Grün) @@ -4956,7 +4967,7 @@ AK-15 (乾燥氣候) AK-15 (Désert) AK-15 (árido) - AK-15 (arido) + AK-15 (Arido) AK-15 (region suchy) AK-15 (сухая местность) AK-15 (Trocken) @@ -4990,7 +5001,7 @@ AK-15 GL (草木茂盛) AK-15 GL (Forêt) AK-15 GL (exuberante) - AK-15 GL (verdeggiante) + AK-15 GL (Verdeggiante) AK-15 GL (region z bujną roślinnością) AK-15 GL (обильная растительность) AK-15 GL (Grün) @@ -5007,7 +5018,7 @@ AK-15 GL (乾燥氣候) AK-15 GL (Désert) AK-15 GL (árido) - AK-15 GL (arido) + AK-15 GL (Arido) AK-15 GL (region suchy) AK-15 GL (сухая местность) AK-15 GL (Trocken) @@ -5041,7 +5052,7 @@ AK-15K (草木茂盛) AK-15K (Forêt) AK-15K (exuberante) - AK-15K (verdeggiante) + AK-15K (Verdeggiante) AK-15K (region z bujną roślinnością) AK-15K (обильная растительность) AK-15K (Grün) @@ -5058,7 +5069,7 @@ AK-15K (乾燥氣候) AK-15K (Désert) AK-15K (árido) - AK-15K (arido) + AK-15K (Arido) AK-15K (region suchy) AK-15K (сухая местность) AK-15K (Trocken) @@ -5092,7 +5103,7 @@ RPK (草木茂盛) RPK (Forêt) RPK (exuberante) - RPK (verdeggiante) + RPK (Verdeggiante) RPK (region z bujną roślinnością) RPK (обильная растительность) RPK (Grün) @@ -5109,7 +5120,7 @@ RPK (乾燥氣候) RPK (Désert) RPK (árido) - RPK (arido) + RPK (Arido) RPK (region suchy) RPK (сухая местность) RPK (Trocken) @@ -5126,7 +5137,7 @@ M14 (经典) M14 (classique) M14 (clásico) - M14 (classico) + M14 (Classico) M14 (klasyczny) M14 (классический) M14 (klassisch) @@ -5151,7 +5162,7 @@ Stoner 99 LMG (Preto) 스토너 99 LMG (검정) 斯通纳 99(黑色) - ストーナー 99 LMG(ブラック) + ストーナー 99 LMG (ブラック) Stoner 99 LMG (Siyah) Stoner 99 Könnyűgéppuska (Fekete) @@ -5194,7 +5205,7 @@ MSBS Grot(迷彩) MSBS Grot (Camo) MSBS Grot (Camuflaje) - MSBS Grot (Camo) + MSBS Grot (Mimetica) MSBS Grot (Kamuflaż) MSBS Grot (камуфляжный) MSBS Grot (Tarnmuster) @@ -5202,7 +5213,7 @@ MSBS Grot (Camo) MSBS 그롯 (위장) MSBS Grot(迷彩) - MSBS グロート (カモフラージュ) + MSBS グロート (迷彩) MSBS Grot (Kamuflaj) MSBS Grot (Terepmintás) @@ -5262,7 +5273,7 @@ MSBS Grot GL(迷彩) MSBS Grot GL (Camo) MSBS Grot GL (Camuflaje) - MSBS Grot GL (Camo) + MSBS Grot GL (Mimetica) MSBS Grot GL (Kamuflaż) MSBS Grot GL (камуфляжный) MSBS Grot GL (Tarnmuster) @@ -5270,7 +5281,7 @@ MSBS Grot GL (Camo) MSBS 그롯 GL (위장) MSBS Grot GPBO-40(迷彩) - MSBS グロート GL (カモフラージュ) + MSBS グロート GL (迷彩) MSBS Grot GL (Kamuflaj) MSBS Grot GL (Terepmintás) @@ -5330,7 +5341,7 @@ MSBS Grot MR(迷彩) MSBS Grot MR (Camo) MSBS Grot MR (Camuflaje) - MSBS Grot MR (Camo) + MSBS Grot MR (Mimetica) MSBS Grot MR (Kamuflaż) MSBS Grot MR (камуфляжный) MSBS Grot MR (Tarnmuster) @@ -5338,7 +5349,7 @@ MSBS Grot MR (Camo) MSBS 그롯 MR (위장) MSBS Grot MR(迷彩) - MSBS グロート MR (カモフラージュ) + MSBS グロート MR (迷彩) MSBS Grot MR (Kamuflaj) MSBS Grot MR (Terepmintás) @@ -5398,7 +5409,7 @@ MSBS Grot SG(迷彩) MSBS Grot SG (Camo) MSBS Grot SG (Camuflaje) - MSBS Grot SG (Camo) + MSBS Grot SG (Mimetica) MSBS Grot SG (Kamuflaż) MSBS Grot SG (камуфляжный) MSBS Grot SG (Tarnmuster) @@ -5406,7 +5417,7 @@ MSBS Grot SG (Camo) MSBS 그롯 SG (위장) MSBS Grot SG(迷彩) - MSBS グロート SG (カモフラージュ) + MSBS グロート SG (迷彩) MSBS Grot SG (Kamuflaj) MSBS Grot SG (Terepmintás) diff --git a/addons/rearm/XEH_preInit.sqf b/addons/rearm/XEH_preInit.sqf index 10156a7d1c..4aa8cb80ad 100644 --- a/addons/rearm/XEH_preInit.sqf +++ b/addons/rearm/XEH_preInit.sqf @@ -6,7 +6,7 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" DFUNC(rearm_statement) = { // moved from config because of build problems TRACE_1("rearm_statement",_this); diff --git a/addons/rearm/initSettings.sqf b/addons/rearm/initSettings.inc.sqf similarity index 93% rename from addons/rearm/initSettings.sqf rename to addons/rearm/initSettings.inc.sqf index d83ac3c760..37535d8d90 100644 --- a/addons/rearm/initSettings.sqf +++ b/addons/rearm/initSettings.inc.sqf @@ -1,4 +1,4 @@ -private _category = [LELSTRING(OptionsMenu,CategoryLogistics), LLSTRING(DisplayName)]; +private _category = [ELSTRING(main,Category_Logistics), LLSTRING(DisplayName)]; [ QGVAR(enabled), "CHECKBOX", diff --git a/addons/rearm/stringtable.xml b/addons/rearm/stringtable.xml index 88be22aae3..7ddee1dc83 100644 --- a/addons/rearm/stringtable.xml +++ b/addons/rearm/stringtable.xml @@ -53,10 +53,10 @@ Степень перевооружения Quantidade de rearme Rychlost přezbrojení - Ammontare Riarmo + Velocità Riarmo Velocidad de rearme Quantité à réarmer - 再武装が可能な量 + 再武装の所要時間 재보급 양 整装所需时间 整裝所需時間 @@ -71,7 +71,7 @@ Quanto velocemente dovrebbe essere riarmato un veicolo? Cuán rápido es el proceso de rearme? Définit la vitesse à laquelle s'effectue le réarmement. - 車両を再武装する早さを設定します。 + 車両がどれくらいの早さで再武装されるか? 차량을 얼마나 빨리 재보급 시킵니까? 载具多快会整装完毕? 載具多快會整裝完畢? @@ -113,10 +113,10 @@ В зависимости от калибра Quantidade baseada no calibre Rychlost závisí na ráži - Ammontare basato sul calibro + Quantità basata sul calibro Cantidad basada en el calibre En fonction du calibre - 口径に基づいた量 + 口径に基づいて 구경에 따라 수량 설정 基于口径决定所耗时间 基於口徑決定所耗時間 @@ -229,7 +229,7 @@ There is ammunition worth %1 points left. Es ist noch Munition für %1 Punkte übrig. - E' presente una penalità delle munizioni %1 punti rimanenti. + Sono presenti ancora munizioni del valore di %1 punti. 弾薬は %1 残っています。 还剩下%1多的弹药。 還剩下%1多的彈藥. @@ -244,8 +244,8 @@ The following ammunition is left:%1 Folgende Munition ist übrig:%1 - Mancano le seguenti:%1 - この弾薬の残りは: %1 + Rimangono le seguenti munizioni:%1 + この弾薬は残り: %1 以下剩余的弹药:%1 以下剩餘的彈藥:%1 Pozostała amunicja: %1 @@ -327,7 +327,7 @@ Sto prendendo %1 per %2... Tomando %1 para %2... Prise de %1 pour %2... - %1 を %2 用として取得中・・・ + %1 を %2 用に取得中・・・ %2를 위해 %1 가져오는 중... 正在拿取%1给%2... 拿取%1給%2中... @@ -419,7 +419,7 @@ Riarmati %1 colpi di %2 su %3 Rearmadas %1 rondas de %2 en %3 %1 balles réarmées de %2 dans %3. - %1発の%2を%3に装填しました + %1 発の %2 を %3 に装填しました %3에 2%의 %1 탄약 재보급 整装了%1发%2到%3上 整裝了%1發%2到%3上 @@ -445,7 +445,7 @@ Světlice Fusées Leuchtkörper - Razzi luminosi + Illuminanti Flary Sinalizadores ЛТЦ @@ -653,7 +653,7 @@ Munitionsvorrat 再武装用カーゴ Ładunek Dozbrajający - Rifornimento Munizioni + Munizioni Caricate Боеприпасы для перевооружения Carga de Rearme 整裝用貨物 @@ -668,7 +668,7 @@ Der Munitionsvorrat, zum Aufmunitionieren von Fahrzeugen (-1 deaktiviert) カーゴからの再武装 (-1 で無効化) Ładunek do dozbrajania (-1 wyłączy) - Il rifornimento delle munizioni (-1 per disabilitarlo) + Il carico di munizioni per poter riarmare (-1 per disabilitarlo) Объем боеприпасов для перевооружения (-1 для отмены) A Carga para Rearmamento (-1 para desativar) 貨物可以提高多少次整裝(-1為停用) @@ -701,7 +701,7 @@ 車両から再武装できる範囲を決定します。 與載具之最大可整裝距離 车辆可重新整装的最大距离 - La distanza massima a cui un veicolo può essere riarmato + La distanza massima da cui un veicolo può essere riarmato Maximální vzdálenost na jakou může být vozidlo přezbrojeno Maksymalna odległość na jakiej pojazd może zostać przezbrojony Максимальная дистанция для перевооружения diff --git a/addons/refuel/XEH_preInit.sqf b/addons/refuel/XEH_preInit.sqf index 9361d05015..894773534a 100644 --- a/addons/refuel/XEH_preInit.sqf +++ b/addons/refuel/XEH_preInit.sqf @@ -6,6 +6,6 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" ADDON = true; diff --git a/addons/refuel/functions/fnc_connectNozzleAction.sqf b/addons/refuel/functions/fnc_connectNozzleAction.sqf index a5827325ac..ad658492fa 100644 --- a/addons/refuel/functions/fnc_connectNozzleAction.sqf +++ b/addons/refuel/functions/fnc_connectNozzleAction.sqf @@ -72,7 +72,7 @@ private _attachPosModel = _sink worldToModel (ASLtoAGL _bestPosASL); _args params [["_unit", objNull, [objNull]], ["_nozzle", objNull, [objNull]], ["_sink", objNull, [objNull]], ["_endPosTestOffset", [0,0,0], [[]], 3]]; _unit setVariable [QGVAR(nozzle), nil, true]; _unit setVariable [QGVAR(isRefueling), false]; - + private _source = _nozzle getVariable QGVAR(source); detach _nozzle; @@ -128,14 +128,14 @@ private _attachPosModel = _sink worldToModel (ASLtoAGL _bestPosASL); if ([_unit, _nozzle, false] call FUNC(canTurnOn)) then { [_unit, _nozzle, false] call FUNC(turnOn); } else { - [localize LSTRING(CouldNotTurnOn)] call EFUNC(common,displayText); + [localize LSTRING(CouldNotTurnOn)] call EFUNC(common,displayTextStructured); }; }; case (!_canReceive && _isContainer): { if ([_unit, _nozzle, true] call FUNC(canTurnOn)) then { [_unit, _nozzle, true] call FUNC(turnOn); } else { - [localize LSTRING(CouldNotTurnOn)] call EFUNC(common,displayText); + [localize LSTRING(CouldNotTurnOn)] call EFUNC(common,displayTextStructured); }; }; default { @@ -144,7 +144,7 @@ private _attachPosModel = _sink worldToModel (ASLtoAGL _bestPosASL); }; }, "", - localize LSTRING(ConnectAction), + localize ([LSTRING(ConnectAction), LSTRING(ConnectFuelCanisterAction)] select (_nozzle getVariable [QGVAR(jerryCan), false])), {true}, [INTERACT_EXCEPTIONS] ] call EFUNC(common,progressBar); diff --git a/addons/refuel/functions/fnc_getCapacity.sqf b/addons/refuel/functions/fnc_getCapacity.sqf index c2956b588e..94681480ae 100644 --- a/addons/refuel/functions/fnc_getCapacity.sqf +++ b/addons/refuel/functions/fnc_getCapacity.sqf @@ -29,6 +29,8 @@ if (isNil "_capacity") then { // Set capacity even if this isn't a fuel source to save on config lookup time in the event this function is used in a loop _source setVariable [QGVAR(capacity), _capacity, true]; + // handle weird edge case when trying to run on "camera"/CfgNonAIVehicles which won't support setVariable and will inf-loop + if (isNil {_source getVariable QGVAR(capacity)}) exitWith { WARNING_1("trying to getCapacity from non-CfgVehicle %1", _this); }; [_source, _capacity] call FUNC(setFuel); }; diff --git a/addons/refuel/functions/fnc_makeJerryCan.sqf b/addons/refuel/functions/fnc_makeJerryCan.sqf index d1a662d12f..4b807756c9 100644 --- a/addons/refuel/functions/fnc_makeJerryCan.sqf +++ b/addons/refuel/functions/fnc_makeJerryCan.sqf @@ -40,19 +40,21 @@ private _action = [QGVAR(Refuel), {}, [], [0, 0, 0], - REFUEL_ACTION_DISTANCE] call EFUNC(interact_menu,createAction); + REFUEL_ACTION_DISTANCE +] call EFUNC(interact_menu,createAction); [_target, 0, ["ACE_MainActions"], _action] call EFUNC(interact_menu,addActionToObject); // Add pickup _action = [QGVAR(PickUpNozzle), - localize LSTRING(TakeNozzle), + localize LSTRING(TakeFuelCanister), QPATHTOF(ui\icon_refuel_interact.paa), {[_player, _target] call FUNC(takeNozzle)}, {[_player, _target] call FUNC(canTakeNozzle)}, {}, [], [0, 0, 0], - REFUEL_ACTION_DISTANCE] call EFUNC(interact_menu,createAction); + REFUEL_ACTION_DISTANCE +] call EFUNC(interact_menu,createAction); [_target, 0, ["ACE_MainActions", QGVAR(Refuel)], _action] call EFUNC(interact_menu,addActionToObject); // Add turnOn @@ -64,7 +66,8 @@ _action = [QGVAR(TurnOn), {}, [], [0, 0, 0], - REFUEL_ACTION_DISTANCE] call EFUNC(interact_menu,createAction); + REFUEL_ACTION_DISTANCE +] call EFUNC(interact_menu,createAction); [_target, 0, ["ACE_MainActions", QGVAR(Refuel)], _action] call EFUNC(interact_menu,addActionToObject); // Add turnOn container @@ -76,7 +79,8 @@ _action = [QGVAR(TurnOn_Container), {}, [], [0, 0, 0], - REFUEL_ACTION_DISTANCE] call EFUNC(interact_menu,createAction); + REFUEL_ACTION_DISTANCE +] call EFUNC(interact_menu,createAction); [_target, 0, ["ACE_MainActions", QGVAR(Refuel)], _action] call EFUNC(interact_menu,addActionToObject); // Add check fuel @@ -88,7 +92,8 @@ _action = [QGVAR(CheckFuel), {}, [], [0,0,0], - REFUEL_ACTION_DISTANCE] call EFUNC(interact_menu,createAction), + REFUEL_ACTION_DISTANCE +] call EFUNC(interact_menu,createAction); [_target, 0, ["ACE_MainActions", QGVAR(Refuel)], _action] call EFUNC(interact_menu,addActionToObject); // Add turnOff @@ -100,17 +105,19 @@ _action = [QGVAR(TurnOff), {}, [], [0, 0, 0], - REFUEL_ACTION_DISTANCE] call EFUNC(interact_menu,createAction); + REFUEL_ACTION_DISTANCE +] call EFUNC(interact_menu,createAction); [_target, 0, ["ACE_MainActions", QGVAR(Refuel)], _action] call EFUNC(interact_menu,addActionToObject); // Add disconnect _action = [QGVAR(Disconnect), - localize LSTRING(Disconnect), + localize LSTRING(DisconnectFuelCanister), QPATHTOF(ui\icon_refuel_interact.paa), {[_player, _target] call FUNC(disconnect)}, {[_player, _target] call FUNC(canDisconnect)}, {}, [], [0, 0, 0], - REFUEL_ACTION_DISTANCE] call EFUNC(interact_menu,createAction); + REFUEL_ACTION_DISTANCE +] call EFUNC(interact_menu,createAction); [_target, 0, ["ACE_MainActions", QGVAR(Refuel)], _action] call EFUNC(interact_menu,addActionToObject); diff --git a/addons/refuel/functions/fnc_startNozzleInHandsPFH.sqf b/addons/refuel/functions/fnc_startNozzleInHandsPFH.sqf index 29db88dda6..d2f1e2aaa5 100644 --- a/addons/refuel/functions/fnc_startNozzleInHandsPFH.sqf +++ b/addons/refuel/functions/fnc_startNozzleInHandsPFH.sqf @@ -96,7 +96,7 @@ TRACE_2("start",_unit,_nozzle); getCursorObjectParams params ["_cursorObject", "", "_distance"]; if (!isNull _cursorObject && {_distance < REFUEL_NOZZLE_ACTION_DISTANCE}) then { if ([_cursorObject] call FUNC(canConnectNozzle)) then { - _hintLMB = localize LSTRING(Connect); + _hintLMB = localize ([LSTRING(Connect), LSTRING(ConnectFuelCanister)] select (_nozzle getVariable [QGVAR(jerryCan), false])); }; if ([_unit, _cursorObject] call FUNC(canReturnNozzle)) then { _hintRMB = localize LSTRING(Return); diff --git a/addons/refuel/functions/fnc_takeNozzle.sqf b/addons/refuel/functions/fnc_takeNozzle.sqf index f60ec9243d..8eb0a16f1f 100644 --- a/addons/refuel/functions/fnc_takeNozzle.sqf +++ b/addons/refuel/functions/fnc_takeNozzle.sqf @@ -77,11 +77,11 @@ params [ [_source, "blockEngine", "ACE_Refuel", true] call EFUNC(common,statusEffect_set); _source setVariable [QGVAR(isConnected), true, true]; _source setVariable [QGVAR(ownedNozzle), _nozzle, true]; - + // Prevent moving the fuel source while the hose is out _source setVariable [QGVAR(canCarryLast), _source getVariable [QEGVAR(dragging,canCarry), false], true]; _source setVariable [QGVAR(canDragLast), _source getVariable [QEGVAR(dragging,canDrag), false], true]; - + _source setVariable [QEGVAR(dragging,canCarry), false, true]; _source setVariable [QEGVAR(dragging,canDrag), false, true]; }; @@ -100,7 +100,7 @@ params [ [_unit, _nozzle] call FUNC(startNozzleInHandsPFH); }, {}, - localize LSTRING(TakeNozzleAction), + localize ([LSTRING(TakeNozzleAction), LSTRING(TakeFuelCanisterAction)] select (_object getVariable [QGVAR(jerryCan), false])), {true}, [INTERACT_EXCEPTIONS_REFUELING] ] call EFUNC(common,progressBar); diff --git a/addons/refuel/initSettings.sqf b/addons/refuel/initSettings.inc.sqf similarity index 79% rename from addons/refuel/initSettings.sqf rename to addons/refuel/initSettings.inc.sqf index 087e253dc4..f3744697a4 100644 --- a/addons/refuel/initSettings.sqf +++ b/addons/refuel/initSettings.inc.sqf @@ -1,7 +1,9 @@ +private _category = [ELSTRING(main,Category_Logistics), "str_state_refuel"]; + [ QGVAR(rate), "SLIDER", [LSTRING(RefuelSettings_speed_DisplayName), LSTRING(RefuelSettings_speed_Description)], - [localize ELSTRING(OptionsMenu,CategoryLogistics), localize "str_state_refuel"], + _category, [0,25,1,1], // [min, max, default value, trailing decimals (-1 for whole numbers only)] true, // isGlobal {[QGVAR(rate), _this] call EFUNC(common,cbaSettings_settingChanged)} @@ -10,7 +12,7 @@ [ QGVAR(cargoRate), "SLIDER", [LSTRING(RefuelSettings_speedCargo_DisplayName), LSTRING(RefuelSettings_speedCargo_Description)], - [localize ELSTRING(OptionsMenu,CategoryLogistics), localize "str_state_refuel"], + _category, [0,250,10,1], // [min, max, default value, trailing decimals (-1 for whole numbers only)] true, // isGlobal {[QGVAR(cargoRate), _this] call EFUNC(common,cbaSettings_settingChanged)} @@ -19,7 +21,7 @@ [ QGVAR(hoseLength), "SLIDER", [LSTRING(RefuelSettings_hoseLength_DisplayName)], - [localize ELSTRING(OptionsMenu,CategoryLogistics), localize "str_state_refuel"], + _category, [0,50,12,1], // [min, max, default value, trailing decimals (-1 for whole numbers only)] true, // isGlobal {[QGVAR(hoseLength), _this] call EFUNC(common,cbaSettings_settingChanged)} @@ -28,7 +30,7 @@ [ QGVAR(progressDuration), "TIME", [LSTRING(RefuelSettings_progressDuration_DisplayName), LSTRING(RefuelSettings_progressDuration_Description)], - [localize ELSTRING(OptionsMenu,CategoryLogistics), localize "str_state_refuel"], + _category, [0, 10, 2], // [min, max, default value] true, // isGlobal {[QGVAR(progressDuration), _this] call EFUNC(common,cbaSettings_settingChanged)} diff --git a/addons/refuel/stringtable.xml b/addons/refuel/stringtable.xml index 0bc7a09ca1..ed9b139593 100644 --- a/addons/refuel/stringtable.xml +++ b/addons/refuel/stringtable.xml @@ -24,7 +24,7 @@ Скорость заправки Velocidade da vazão Rychlost tankování - Portata Flusso + Portata di Flusso Caudal de llenado Débit de la pompe 流量 @@ -40,7 +40,7 @@ Как быстро техника должна быть заправлена? Quão rápido deve ser o veículo reabastecido? Jak rychle bude vozidlo natankováno? - Quanto velocemente dovrebbe essere rifornito un veicolo? + Quanto velocemente si può rifornire un veicolo? Cuán rápido se reabastecen los vehículos? Définit la vitesse de ravitaillement en carburant des véhicules. どのくらいの速さで車両へ給油しますか? @@ -54,16 +54,20 @@ 화물 주유량 Caudal de llenado de la carga 貨物流量 + Portata di Flusso al Carico Prędkość Tankowania Ładunku Frachtflussrate + Vitesse de ravitaillement How fast should a fuel source's tank be filled? 연료 공급처의 저장 탱크를 얼마나 빨리 채웁니까? Cómo de rápido puede llenarse una fuente de combustible. どのくらいの速さで給油源へ給油しますか? + Quanto velocemente si può rifornire il carico di carburante di un veicolo? Jak szybko zbiornik paliwa powinien być napełniany? Wie schnell sollte der Tank einer Kraftstoffquelle gefüllt werden? + A quelle vitesse le réservoir de carburant doit-il être rempli ? Refuel @@ -88,7 +92,7 @@ Взять топливный шланг Pegar o bocal de combustível Vzít výdejní pistoli - Prendi manica benzina + Prendi Pistola Erogatrice Tomar surtidor Prendre le pistolet 給油ノズルを取る @@ -104,7 +108,7 @@ Берем топливный шланг... Pegando o bocal de combustível... Beru výdejní pistoli... - Prendendo manicotto benzina... + Prendendo Pistola Erogatrice... Tomando surtidor... Prise du pistolet... 給油ノズルを取っています・・・ @@ -120,7 +124,7 @@ Присоединить топливный шланг Conectar o bocal de combustível Připojit výdejní pistoli - Collega manica benzina + Collega Pistola Erogatrice Conectar surtidor Introduire le pistolet 給油ノズルを接続する @@ -136,7 +140,7 @@ Присоединяем топливный шланг... Conectando o bocal de combustível... Připojuji výdejní pistoli... - Collegando manicotto benzina... + Collegando Pistola Erogatrice... Conectando surtidor... Introduction du pistolet... 給油ノズルを接続しています・・・ @@ -152,7 +156,7 @@ Отсоединить топливный шланг Desconectar o bocal de combustível Odpojit výdejní pistoli - Scollega manicotto benzina + Scollega Pistola Erogatrice Desconectar surtidor Retirer le pistolet 給油ノズルを外す @@ -184,7 +188,7 @@ Проверить остаток топлива Verificar combustível restante Zkontrolovat zůstatek paliva - Controlla benzina rimanente + Controlla carburante rimanente Verificar combustible remanente Vérifier le carburant restant 残燃料を見る @@ -200,7 +204,7 @@ Проверяем остаток топлива... Verificando combustível restante... Kontroluji zůstatek paliva... - Controllando la benzina rimanente... + Controllando carburante rimanente... Verificando combustible remanente,,, Vérification du carburant restant... 残燃料を見ています・・・ @@ -219,7 +223,7 @@ Sono rimasti %1 litri. Quedan %1 litros. Il reste %1 litres. - 後 %1 リットル残っています。 + あと %1 リットル残っています。 %1 리터 남음 剩下%1升的燃料。 剩下%1公升的燃料。 @@ -232,7 +236,7 @@ Топлива нет. Não há combustível Bez paliva. - Non è rimasta più benzina. + Non c'è alcun carburante rimanente. No queda combustible. Il n'y a plus de carburant. もう燃料は残っていません。 @@ -280,7 +284,7 @@ Остановить заправку Parar reabastecimento Zastavit tankování - Ferma rifornimento + Interrompi rifornimento Detener reabastecimiento Arrêter le ravitaillement 給油を止める @@ -309,9 +313,11 @@ Start fueling (container) Betankung beginnen (Container) 연료 재급유 시작 (컨테이너) + Inizia rifornimento (Contenitore) Iniciando repostado (contenedor) 給油を始める (コンテナ) Rozpocznij tankowanie (zbiornik) + Commencer le ravitaillement (container) Couldn't turn on fuel nozzle @@ -339,7 +345,7 @@ %1 litri riforniti %1 lt reabastecido %1 litres pompés. - %1 リッターを給油しました + %1 リットル給油した %1 리터 재급유됨 已加入%1升的燃料 已加入%1公升的燃料 @@ -352,7 +358,7 @@ Источник топлива пустой. A fonte de combustível está vazia. Zdroj paliva je prázdný. - La fonte di benzina è vuota. + La fonte di carburante è vuota. La fuente de combustible está vacía. La source de carburant est vide. 給油元は空です。 @@ -368,7 +374,7 @@ Достигнута максимальная длина шланга. Distância máxima da mangueira de combustível alcançada. Dosažena maximální délka hadice - Distanza massima della pompa raggiunta. + Raggiunta lunghezza massima della tubazione. Máxima longitud de manguera alcanzada. Tuyau tendu au maximum. 給油ホースはもうこれ以上届きません。 @@ -400,7 +406,7 @@ Заправка остановлена Reabastecimento parado Tankování zastaveno - Rifornimento fermato + Rifornimento interrotto Reabastecimiento detenido Ravitaillement arrêté. 給油を止めました @@ -432,7 +438,7 @@ Вернуть топливный шланг Retornar bocal de combustível Vrátit výdejní pistoli - Riponi manicotto benzina + Riponi Pistola Erogatrice Devolver surtidor Ranger le pistolet 給油ノズルを戻す @@ -448,7 +454,7 @@ Возвращаем топливный шланг... Retornando bocal de combustível... Vracím výdejní pistoli... - Riponendo la manica della benzina... + Riponendo la Pistola Erogatrice... Devolviendo el surtidor... Rangement du pistolet... 給油ノズルを戻しています・・・ @@ -464,7 +470,7 @@ Проверить счетчик топлива Verificar contador de combustível Zkonrolovat palivoměr - Controlla indicatore livello benzina + Controlla livello carburante Verificar el contador de combustible Vérifier le compteur 燃料計を見る @@ -483,17 +489,52 @@ %1 litri sono stati riforniti. Se reabastecieron %1 lt %1 litres ont été pompés. - %1 リッターが給油されました。 + %1 リットル給油されました。 %1 리터가 재급유되었습니다. 已加入%1升 已加入%1公升 %1 litre dolduruldu + + Pick up fuel canister + Treibstoffkanister aufheben + Raccogli contenitore di carburante + 燃料キャニスターを持つ + 연료통 집어들기 + + + Picking fuel canister up... + Hebe Treibstoffkanister auf... + Raccogliendo contenitore di carburante... + 燃料キャニスターを持ち上げています・・・ + 연료통 집어드는 중... + + + Connect fuel canister + Treibstoffkanister anschließen + Collega contenitore di carburante + 燃料キャニスターを接続する + 연료통 꽂기 + + + Connecting fuel canister... + Schließe Treibstoffkanister an... + Collegando contenitore di carburante... + 燃料キャニスターを接続しています・・・ + 연료통 꽂는 중... + + + Disconnect fuel canister + Treibstoffkanister lösen + Scollega contenitore di carburante + 燃料キャニスターを外します + 연료통 빼기 + Refuel hose length Betankung Schlauchlänge Reabastecer longitud de manguera - Rifiuta lungezza tubo + Lunghezza tubazione di rifornimento 給油ホースの長さ 加油软管长度 加油軟管長度 @@ -511,9 +552,11 @@ 펌프/호스 상호작용 시간 Время взаимодействия со шлангом Tiempo de interacción con la Bomba/Manguera - ポンプとホースのインタラクション時間 + Tempo di interazione Pompa/Pistola + ポンプとホースのインタラクション所要時間 Czas Interakcji z Pompą/Wężem Interaktionszeit zwischen Pumpe und Schlauch + Temps d'interaction pompe/tuyau How long refuel interactions take in seconds. @@ -521,16 +564,18 @@ 연료 재보급 상호작용에 걸리는 시간(초)입니다. Время в секундах, которое занимает взаимодействие со шлангом. Cuanto tiempo en segundos tardan las interacciones de repostado. - 燃料補給にかかる時間 (秒) + Durata delle interazioni in secondi. + 燃料補給に掛かる時間 (秒) Jak długo powinna trwać interakcja tankowania w sekundach. Wie lange Auftank-Interaktionen in Sekunden dauern. + Durée des interactions de ravitaillement en secondes. Fuel Cargo Volume Tankvolumen Объем топлива для заправки 貯油量 - Capacità Carburante Cargo + Capacità di Carico Carburante 儲油量 储油量 연료통 크기 @@ -547,7 +592,7 @@ Das Tankvolumen, welches zum Nachtanken verfügbar ist (-1 deaktiviert, -10 unendlich) Объем топлива, доступный для заправки других машин (-1 отключить, -10 если неограничен) 給油用の貯油量を設定できます (-1で無効、-10で無限) - La capacità del carburante disponibile per il rifornimento (-1 disabilita, -10 se infinito) + La capacità di carburante disponibile al rifornimento altrui (-1 disabilita, -10 se infinito) 設定有多少油料可供載具進行加油(-1時關閉,-10為無限油量) 设定有多少油料可供载具进行加油(-1时关闭,-10为无限油量) 재급유에 사용할 수 있는 연료량 (-1=비활성, -10=무한) @@ -562,7 +607,7 @@ Befestigungskoordinaten der Zapfpistole Координаты крепления шланга 給油ノズルの取り付け座標 - Coordinate del tubo di rifornimento + Coordinate di attacco tubazione 加油軟管安裝位置 加油软管安装位置 재급유기 부착 좌표 @@ -577,7 +622,7 @@ Modelkoordinaten zum Anheften der Zapfpistole Координаты модели, куда крепится заправочный шланг 給油ノズルの取り付けにモデル座標を使用します - Coordinate del modello utilizzate per il fissaggio del tubo + Coordinate del modello utilizzate per l'attacco della tubazione di rifornimento 設定加油軟管會安裝到模型的哪個位置上 设定加油软管会安装到模型的哪个位置上 재급유기 부착에 쓰이는 모델 좌표 diff --git a/addons/reload/ACE_Arsenal_Stats.hpp b/addons/reload/ACE_Arsenal_Stats.hpp new file mode 100644 index 0000000000..8311a62632 --- /dev/null +++ b/addons/reload/ACE_Arsenal_Stats.hpp @@ -0,0 +1,13 @@ +class EGVAR(arsenal,stats) { + class statBase; + class ACE_isBelt: statBase { + scope = 2; + priority = -1; + stats[] = {"ACE_isBelt"}; + displayName = CSTRING(LinkBelt); + showText = 1; + textStatement = QUOTE(localize QUOTE(ELSTRING(Common,Enabled))); + condition = QUOTE(params[ARR_2('_stat','_config')]; (getNumber (_config >> _stat select 0)) == 1); + tabs[] = {{}, {4}}; + }; +}; diff --git a/addons/reload/CfgVehicles.hpp b/addons/reload/CfgVehicles.hpp index ff0df195d3..22086ad867 100644 --- a/addons/reload/CfgVehicles.hpp +++ b/addons/reload/CfgVehicles.hpp @@ -17,8 +17,8 @@ class CfgVehicles { class GVAR(linkBelt) { displayName = CSTRING(linkBelt); distance = 2; - condition = QUOTE(([ARR_2(_player, _target)] call FUNC(getAmmoToLinkBelt)) > 0); - statement = QUOTE([ARR_2(_player, _target)] call FUNC(startLinkingBelt)); + condition = QUOTE(([ARR_2(_player,_target)] call FUNC(getAmmoToLinkBelt)) > 0); + statement = QUOTE([ARR_2(_player,_target)] call FUNC(startLinkingBelt)); exceptions[] = {"isNotInside"}; }; class GVAR(checkAmmo) { diff --git a/addons/reload/XEH_postInit.sqf b/addons/reload/XEH_postInit.sqf index 65ce1d0b4b..02dedd14c3 100644 --- a/addons/reload/XEH_postInit.sqf +++ b/addons/reload/XEH_postInit.sqf @@ -52,4 +52,4 @@ if (!hasInterface) exitWith {}; -#include "initKeybinds.sqf" +#include "initKeybinds.inc.sqf" diff --git a/addons/reload/XEH_preInit.sqf b/addons/reload/XEH_preInit.sqf index 9361d05015..894773534a 100644 --- a/addons/reload/XEH_preInit.sqf +++ b/addons/reload/XEH_preInit.sqf @@ -6,6 +6,6 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" ADDON = true; diff --git a/addons/reload/config.cpp b/addons/reload/config.cpp index 21e28d35f5..1cd11c5b17 100644 --- a/addons/reload/config.cpp +++ b/addons/reload/config.cpp @@ -14,6 +14,7 @@ class CfgPatches { }; }; +#include "ACE_Arsenal_Stats.hpp" #include "CfgVehicles.hpp" #include "CfgMagazines.hpp" #include "CfgEventHandlers.hpp" diff --git a/addons/reload/functions/fnc_canCheckAmmoSelf.sqf b/addons/reload/functions/fnc_canCheckAmmoSelf.sqf index b554833fb0..0427fb33e1 100644 --- a/addons/reload/functions/fnc_canCheckAmmoSelf.sqf +++ b/addons/reload/functions/fnc_canCheckAmmoSelf.sqf @@ -17,4 +17,4 @@ params ["_player"]; -_player call CBA_fnc_canUseWeapon && {!((vehicle _player) isKindOf "StaticWeapon")} +_player call CBA_fnc_canUseWeapon && {currentWeapon _player != ""} && {!((vehicle _player) isKindOf "StaticWeapon")} diff --git a/addons/reload/initKeybinds.sqf b/addons/reload/initKeybinds.inc.sqf similarity index 100% rename from addons/reload/initKeybinds.sqf rename to addons/reload/initKeybinds.inc.sqf diff --git a/addons/reload/initSettings.sqf b/addons/reload/initSettings.inc.sqf similarity index 100% rename from addons/reload/initSettings.sqf rename to addons/reload/initSettings.inc.sqf diff --git a/addons/reload/stringtable.xml b/addons/reload/stringtable.xml index 9aa239a2f9..f52c5107e7 100644 --- a/addons/reload/stringtable.xml +++ b/addons/reload/stringtable.xml @@ -36,7 +36,7 @@ Always show check ammo self interaction Zawsze pokazuj interakcję od sprawdzania amunicji - Mostra sempre l'interazione di autocontrollo delle munizioni + Mostra sempre l'autointerazione di controllo delle munizioni Vždy zobrazit kontrolu munice v menu vlastní interakce セルフ インタラクションへ弾薬確認を常に表示 總是在自我互動中顯示檢查彈藥動作 @@ -51,7 +51,7 @@ Shows check ammo self interaction even when not in static weapons. Pokazuje interakcję od sprawdzania amunicji poza bronią statyczną. - Mostra il controllo dell'interazione tra le munizioni anche quando non sono in armi statiche. + Mostra l'autointerazione di controllo delle munizioni anche quando non si è in un'arma statica. Zobrazuje kontrolu munice v menu vlastní interakce i pokud hráč nepoužívá statickou zbraň. 設置型火器を使っていなくても、セルフ インタラクションへ弾薬確認を常に表示します。 即使不是固定式支援武器也依然在自我互動中顯示檢查彈藥動作 @@ -106,7 +106,7 @@ Podłącz taśmę Gurt anhängen Töltényheveder összekötése - Attacca la tracolla + Combina nastro Ligar cintos de munição ベルトを繋げる 탄띠 연결 @@ -122,7 +122,7 @@ Podłączanie taśmy... Gurt anhängen... Töltényheveder összekötése folyamatban... - Attaccando la tracolla... + Combinando nastro... Ligando cintos... ベルトを繋げています・・・ 탄띠 연결 중... @@ -133,6 +133,7 @@ Belt was linked Bande a été attachée Gurt wurde angehängt + Nastro combinato ベルトがリンクされた Taśma została połączona 탄띠가 연결되었습니다 @@ -141,6 +142,7 @@ Belt could not be linked Bande n'a pas pu être attachée Gurt konnte nicht angehängt werden + Non è stato possibile combinare il nastro ベルトはリンクされなかった Taśma nie mogła być połączona 탄띠를 연결할 수 없습니다 diff --git a/addons/reloadlaunchers/ACE_Arsenal_Stats.hpp b/addons/reloadlaunchers/ACE_Arsenal_Stats.hpp new file mode 100644 index 0000000000..9b42950c4d --- /dev/null +++ b/addons/reloadlaunchers/ACE_Arsenal_Stats.hpp @@ -0,0 +1,13 @@ +class EGVAR(arsenal,stats) { + class statBase; + class ADDON: statBase { + scope = 2; + priority = -1; + stats[] = {QGVAR(enabled)}; + displayName = CSTRING(featureDescription); + showText = 1; + textStatement = QUOTE(localize QUOTE(ELSTRING(Common,Enabled))); + condition = QUOTE(params[ARR_2('_stat','_config')]; (getNumber (_config >> _stat select 0)) == 1); + tabs[] = {{2}, {}}; + }; +}; diff --git a/addons/reloadlaunchers/XEH_preInit.sqf b/addons/reloadlaunchers/XEH_preInit.sqf index 9361d05015..894773534a 100644 --- a/addons/reloadlaunchers/XEH_preInit.sqf +++ b/addons/reloadlaunchers/XEH_preInit.sqf @@ -6,6 +6,6 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" ADDON = true; diff --git a/addons/reloadlaunchers/config.cpp b/addons/reloadlaunchers/config.cpp index bf9a5fa928..30407c4d7b 100644 --- a/addons/reloadlaunchers/config.cpp +++ b/addons/reloadlaunchers/config.cpp @@ -14,6 +14,7 @@ class CfgPatches { }; }; +#include "ACE_Arsenal_Stats.hpp" #include "CfgEventHandlers.hpp" #include "CfgVehicles.hpp" #include "CfgWeapons.hpp" diff --git a/addons/reloadlaunchers/initSettings.sqf b/addons/reloadlaunchers/initSettings.inc.sqf similarity index 100% rename from addons/reloadlaunchers/initSettings.sqf rename to addons/reloadlaunchers/initSettings.inc.sqf diff --git a/addons/reloadlaunchers/stringtable.xml b/addons/reloadlaunchers/stringtable.xml index f69bcabf29..5d3567e5ef 100644 --- a/addons/reloadlaunchers/stringtable.xml +++ b/addons/reloadlaunchers/stringtable.xml @@ -3,17 +3,21 @@ Display notifications for buddy loading - バディ装填時の通知表示 + バディローディング時の通知表示 Wyświetlanie powiadomień o ładowaniu przez asystenta Buddy Nachlade Nachricht anzeigen + Mostra avviso di ricarica da parte del coppio 동료의 장전에 대한 알림 표시 + Affichage de notifications lors d'une rechargement par un ami Displays notifications when an assistant loads a gunner's launcher. 助手が射手のランチャーを装填した際に通知を表示します。 Wyświetla powiadomienie, gdy asystent ładuje wyrzutnię. Zeigt Benachrichtigungen an, wenn ein Assistent den Werfer eines Richtschützen lädt. + Mostra un avviso quando un assistente sta ricaricando il proprio lanciatore. 부사수가 사수의 발사기를 장전할 때 알림을 표시합니다. + Affiche une notofication lorsqu'un assistant recharge l'arme du tireur. Load launcher @@ -24,7 +28,7 @@ Załaduj wyrzutnię Charger lanceur Kilövö betöltése - Carica lanciamissili + Carica lanciatore Recarregar lançador ランチャーを装填 무기 재장전 @@ -36,6 +40,7 @@ %1 is loading your launcher %1 lädt deine Panzerabwehr %1 charge ton lanceur + %1 sta caricando il tuo lanciatore %1 がランチャーを装填しています %1 ładuje twoją wyrzutnię %1이(가) 당신의 발사기를 장전했습니다. @@ -44,6 +49,7 @@ %1 stopped loading your launcher %1 hat aufgehört, deine Panzerabwehr zu laden %1 a arrêté de charger ton lanceur + %1 ha smesso di caricare il tuo lanciatore %1 がランチャーの装填を中断しました %1 przestał ładować twoją wyrzutnię %1이(가) 당신의 발사기 장전을 멈췄습니다. @@ -57,7 +63,7 @@ Nabíjím odpalovač... Ładowanie wyrzutni... Kilövő betöltés alatt... - Caricando il lanciamissili... + Caricando il lanciatore... Recarregando lançador... ランチャーを装填中・・・ 무기 재장전 중... @@ -74,7 +80,7 @@ Odpalovač nabit Wyrzutnia załadowana Kilövő betöltve - Lanciamissili caricato + Lanciatore caricato Lançador Carregado ランチャーの装填完了 무기 재장전됨 @@ -91,7 +97,7 @@ Nabít %1 Załadowano %1 %1 betöltése - Caricato %1 + Carica %1 Recarregar %1 %1 を装填します %1 장전 @@ -102,10 +108,20 @@ Launcher could not be loaded Panzerabwehr konnte nicht geladen werden - Lanceur n'a pas pu être chargé + Impossibile caricare il lanciatore + Le lanceur n'a pas pu être chargé ランチャーを装填できませんでした Wyrzutnia nie mogła być załadowana 발사기를 장전할 수 없습니다. + + Buddy Loading + Ładowanie przez Asystenta + 부사수 장전 중 + Caricamento da coppio + Chargement par un ami + Nachladen durch Kamerad + バディローディング + diff --git a/addons/repair/CfgVehicles.hpp b/addons/repair/CfgVehicles.hpp index 6a58e07a6f..ce74737b76 100644 --- a/addons/repair/CfgVehicles.hpp +++ b/addons/repair/CfgVehicles.hpp @@ -405,8 +405,8 @@ class CfgVehicles { class GVAR(Patch) { displayName = CSTRING(PatchWheel); distance = 4; - condition = QUOTE([ARR_2(_player, _target)] call FUNC(canPatchRemovedWheel)); - statement = QUOTE([ARR_2(_player, _target)] call FUNC(patchRemovedWheel)); + condition = QUOTE([ARR_2(_player,_target)] call FUNC(canPatchRemovedWheel)); + statement = QUOTE([ARR_2(_player,_target)] call FUNC(patchRemovedWheel)); exceptions[] = {"isNotDragging", "isNotCarrying", "isNotOnLadder", "isNotSwimming", "isNotSitting"}; icon = QPATHTOF(ui\patch_ca.paa); }; diff --git a/addons/repair/XEH_postInit.sqf b/addons/repair/XEH_postInit.sqf index f717e56651..58bb1be6e5 100644 --- a/addons/repair/XEH_postInit.sqf +++ b/addons/repair/XEH_postInit.sqf @@ -64,7 +64,8 @@ private _spareTracks = _vehicle getVariable QGVAR(editorLoadedTracks); if (isNil "_spareTracks") then { - _spareTracks = parseNumber (_vehicle isKindOf "Tank"); // must match eden attribute default + private _defaultCount = parseNumber (_vehicle isKindOf "Tank"); // must match eden attribute default + _spareTracks = [configOf _vehicle >> QGVAR(spareTracks), "NUMBER", _defaultCount] call CBA_fnc_getConfigEntry; }; if (_spareTracks > 0) then { [_vehicle, _spareTracks, "ACE_Track"] call FUNC(addSpareParts); @@ -72,7 +73,8 @@ private _spareWheels = _vehicle getVariable QGVAR(editorLoadedWheels); if (isNil "_spareWheels") then { - _spareWheels = parseNumber (_vehicle isKindOf "Car"); // must match eden attribute default + private _defaultCount = parseNumber (_vehicle isKindOf "Car"); // must match eden attribute default + _spareWheels = [configOf _vehicle >> QGVAR(spareWheels), "NUMBER", _defaultCount] call CBA_fnc_getConfigEntry; }; if (_spareWheels > 0) then { [_vehicle, _spareWheels, "ACE_Wheel"] call FUNC(addSpareParts); diff --git a/addons/repair/XEH_preInit.sqf b/addons/repair/XEH_preInit.sqf index 9361d05015..894773534a 100644 --- a/addons/repair/XEH_preInit.sqf +++ b/addons/repair/XEH_preInit.sqf @@ -6,6 +6,6 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" ADDON = true; diff --git a/addons/repair/functions/fnc_addRepairActions.sqf b/addons/repair/functions/fnc_addRepairActions.sqf index d99c264123..d071f577a6 100644 --- a/addons/repair/functions/fnc_addRepairActions.sqf +++ b/addons/repair/functions/fnc_addRepairActions.sqf @@ -28,6 +28,7 @@ TRACE_2("addRepairActions", _vehicle,_type); // do nothing if the class is already initialized private _initializedClasses = GETMVAR(GVAR(initializedClasses),[]); if (_type in _initializedClasses) exitWith {}; +if (_type == "") exitWith {}; // get selections to ignore private _selectionsToIgnore = _vehicle call FUNC(getSelectionsToIgnore); diff --git a/addons/repair/functions/fnc_getClaimObjects.sqf b/addons/repair/functions/fnc_getClaimObjects.sqf index be294d89db..ca02ef14c1 100644 --- a/addons/repair/functions/fnc_getClaimObjects.sqf +++ b/addons/repair/functions/fnc_getClaimObjects.sqf @@ -7,6 +7,7 @@ * 0: Unit that does the repairing * 1: Max range to seach from unit (meters) * 2: Array of arrays of classnames + * 3: Sort objects by damage (default: false) * * Return Value: * Array of objects, or [] if not all available @@ -17,8 +18,8 @@ * Public: Yes */ -params ["_unit", "_maxRange", "_objectsToClaim"]; -TRACE_3("params",_unit,_maxRange,_objectsToClaim); +params ["_unit", "_maxRange", "_objectsToClaim", ["_sortByDamage", false]]; +TRACE_4("params",_unit,_maxRange,_objectsToClaim,_sortByDamage); private _return = []; @@ -27,6 +28,11 @@ private _return = []; private _ableToAquire = []; //will be array of objects { private _nearObjects = _unit nearEntities [_x, _maxRange]; + if (_sortByDamage && {count _nearObjects > 1}) then { + _nearObjects = _nearObjects apply {[damage _x, _x]}; + _nearObjects sort true; + _nearObjects = _nearObjects apply {_x select 1}; + }; { if (!(_x in _ableToAquire) && {(_x getVariable [QEGVAR(common,owner), objNull]) in [objNull, _unit]}) exitWith { // skip claimed objects _ableToAquire pushBack _x diff --git a/addons/repair/functions/fnc_getHitPointString.sqf b/addons/repair/functions/fnc_getHitPointString.sqf index 7845dc7208..5611a6f4e3 100644 --- a/addons/repair/functions/fnc_getHitPointString.sqf +++ b/addons/repair/functions/fnc_getHitPointString.sqf @@ -36,6 +36,9 @@ if (_track) then { //IGNORE_STRING_WARNING(str_ace_repair_hit); private _text = LSTRING(Hit); +// Remove # prefix +if ((_hitpoint select [0, 1]) == "#") then { _hitPoint = _hitPoint select [1] }; + // Remove "Hit" from hitpoint name if one exists private _toFind = if ((toLower _hitPoint) find "hit" == 0) then { [_hitPoint, 3] call CBA_fnc_substr diff --git a/addons/repair/functions/fnc_repair.sqf b/addons/repair/functions/fnc_repair.sqf index 23e5172426..a86f8f22db 100644 --- a/addons/repair/functions/fnc_repair.sqf +++ b/addons/repair/functions/fnc_repair.sqf @@ -95,7 +95,7 @@ if (!("All" in _repairLocations)) then { private _requiredObjects = getArray (_config >> "claimObjects"); private _claimObjectsAvailable = []; if (_requiredObjects isNotEqualTo []) then { - _claimObjectsAvailable = [_caller, 5, _requiredObjects] call FUNC(getClaimObjects); + _claimObjectsAvailable = [_caller, 5, _requiredObjects, true] call FUNC(getClaimObjects); if (_claimObjectsAvailable isEqualTo []) then { TRACE_2("Missing Required Objects",_requiredObjects,_claimObjectsAvailable); _return = false diff --git a/addons/repair/initSettings.sqf b/addons/repair/initSettings.inc.sqf similarity index 98% rename from addons/repair/initSettings.sqf rename to addons/repair/initSettings.inc.sqf index 3ba13e9ee6..26d502e757 100644 --- a/addons/repair/initSettings.sqf +++ b/addons/repair/initSettings.inc.sqf @@ -1,4 +1,5 @@ private _category = format ["ACE %1", LLSTRING(Repair)]; +private _catFullRepair = [_category, LLSTRING(fullRepair)]; [ QGVAR(enabled), "CHECKBOX", @@ -102,7 +103,7 @@ private _category = format ["ACE %1", LLSTRING(Repair)]; [ QGVAR(fullRepairLocation), "LIST", [LSTRING(fullRepairLocation), LSTRING(fullRepairLocation_description)], - _category, + _catFullRepair, [[0,1,2,3,4],[LSTRING(useAnywhere), LSTRING(repairVehicleOnly), LSTRING(repairFacilityOnly), LSTRING(vehicleAndFacility), ELSTRING(common,Disabled)],2], // [values, titles, defaultIndex] true, // isGlobal {[QGVAR(fullRepairLocation), _this] call EFUNC(common,cbaSettings_settingChanged)} @@ -111,7 +112,7 @@ private _category = format ["ACE %1", LLSTRING(Repair)]; [ QGVAR(engineerSetting_fullRepair), "LIST", [LSTRING(engineerSetting_fullRepair_name), LSTRING(engineerSetting_fullRepair_description)], - _category, + _catFullRepair, [[0,1,2],[LSTRING(engineerSetting_anyone), LSTRING(engineerSetting_EngineerOnly), LSTRING(engineerSetting_AdvancedOnly)],2], // [values, titles, defaultIndex] true, // isGlobal {[QGVAR(engineerSetting_fullRepair), _this] call EFUNC(common,cbaSettings_settingChanged)} @@ -120,7 +121,7 @@ private _category = format ["ACE %1", LLSTRING(Repair)]; [ QGVAR(timeCoefficientFullRepair), "SLIDER", [LSTRING(timeCoefficientFullRepair_name), LSTRING(timeCoefficientFullRepair_description)], - _category, + _catFullRepair, [0,3,1.5,2], true ] call CBA_fnc_addSetting; @@ -157,7 +158,7 @@ private _category = format ["ACE %1", LLSTRING(Repair)]; QGVAR(fullRepairRequiredItems), "LIST", [LSTRING(FullRepairRequiredItems_DisplayName), LSTRING(FullRepairRequiredItems_Description)], - _category, + _catFullRepair, [[[], [ANY_TOOLKIT_FAKECLASS]], ["STR_A3_None", "STR_A3_CfgWeapons_Toolkit0"], 1], true ] call CBA_fnc_addSetting; diff --git a/addons/repair/stringtable.xml b/addons/repair/stringtable.xml index 015719bce0..6bf0092a55 100644 --- a/addons/repair/stringtable.xml +++ b/addons/repair/stringtable.xml @@ -41,7 +41,9 @@ Rueda タイヤ Koło + Ruota 바퀴 + Roue Change Wheel @@ -271,22 +273,27 @@ Full Repair Time Coefficient - 完全修理時間係数 + 完全修理所要時間係数 Współczynnik Czasu Pełnej Naprawy Vollständiger Reparaturzeitkoeffizient + Coefficiente di riparazione completa 전체 수리 시간 계수 + Coefficient du temps de réparation complète Modifies how long it takes to perform a Full Repair.\nThe repair time is based on the amount of repairs needed for each part, including those normally inaccessible. - 完全修復にかかる時間を変更します。\n修理時間は、通常アクセスできない部品も含め、各部品に必要な修理量に基づいて決定されます。 + 完全修復に掛かる時間を変更します。\n修理所要時間は、通常アクセスできない部品も含め、各部品に必要な修理量に基づいて決定されます。 + Determina la durata di una riparazione completa.\nIl tempo richiesto si basa sul numero di riparazioni necessarie, include quelle su componenti normalmente inaccessibili. Modyfikuje czas potrzebny do wykonania Pełnej Naprawy. Czas naprawy jest oparty na ilości napraw potrzebnych dla każdej części, w tym tych normalnie niedostępnych. Ändert, wie lange es dauert, eine vollständige Reparatur durchzuführen.\nDie Reparaturzeit basiert auf der Menge der erforderlichen Reparaturen für jedes Teil, einschließlich derjenigen, die normalerweise nicht zugänglich sind. 전체적인 수리를 수행하는 데 걸리는 시간을 수정합니다.\n수리 시간은 일반적으로 접근할 수 없는 부품을 포함하여 각 부품에 필요한 수리 시간을 기준으로 합니다. + Modifie la durée que prend une réparation complète.\nLe temps de réparation est basé sur la quantité de réparations requises pour chaque partie, incluant celles qui sont normalement inaccessibles. Boost engineer training when in repair vehicles or facilities. Untrained becomes engineer, engineer becomes advanced engineer. Améliore les compétences en ingénierie des unités en fonction du lieu où elles se trouvent ; notamment dans les véhicules de réparation ou les ateliers.\nUn soldat non formé devient ingénieur, un ingénieur devient ingénieur avancé. 修理車両か施設内では工兵能力を上昇させます。兵士は工兵になり、工兵は上級工兵になります。 + Aumenta la formazione di Geniere se in veicoli o strutture di riparazioni. Se non addestrato diventa Geniere, se ingegnere diventa Geniere avanzato. Повысьте подготовку инженеров при ремонте транспортных средств или объектов. Нетренированный становится инженером, инженер становится продвинутым инженером. Steigert die Ausbildung von Pionieren, wenn Sie sich in Reparaturfahrzeugen oder -einrichtungen befinden. Aus Ungelerntem wird Pionier, aus Pionier wird ein fortgeschrittener Pionier. Zwiększ wyszkolenie inżynierów w pojazdach i budynkach naprawczych. Niewyszkoleni zostają inżynierami, inżynierowie zostają zaawansowanymi inżynierami. @@ -381,7 +388,7 @@ ¿Añadir repuestos para vehículos (requiere componente de carga)? Добавлять запасные части в технику (требуется модуль Грузоперевозок)? Přidat náhradní díly do vozidla (vyžaduje úložný prostor)? - Aggiungi parti di ricambio ai veicoli (richiede componente Cargo)? + Aggiungi parti di ricambio ai veicoli (richiede spazio nel carico)? Ajoute des pièces de rechange aux véhicules (nécessite le système de cargaison). 車両へ予備部品を追加しますか? (カーゴ コンポーネントが必要) 차량에 예비 부품을 더합니까?(짐칸 요소 필요) @@ -502,19 +509,19 @@ 完整維修部分 - Partially repaired %1 + Partially repaired part Bauteil zum Teil repariert - Częściowo naprawiono: %1 - %1 parcialmente reparado - Частично отремонтировано: %1 - Parcialmente reparada %1 - %1 - částečně opraveno - %1 parzialmente riparato - %1 partiellement réparé(e). - %1 を部分的に修理しました - %1 부분적으로 수리됨 - %1已完成部分维修 - %1已完成部分維修 + Częściowo naprawiono część + Parte parcialmente reparado + Частично отремонтировано часть + Parcialmente reparada parte + Díl částečně opraveno + Parte parzialmente riparata + Pièce partiellement réparé(e). + 部品 を部分的に修理しました + 부품 부분적으로 수리됨 + 零件已完成部分维修 + 零件已完成部分維修 Fully repaired %1 @@ -574,12 +581,28 @@ Scafo Test Корпус - 機体 + 構造体 선체 车壳 車殼 Gövde + + Light + + Léger + Claro + Luci + Light + Светлый + Hell + Světlá + Claro + 밝은 + 轻型 + 照明 + Işık + Engine Motor @@ -607,7 +630,7 @@ Stabilizzatore Orizzontale Sinistro Stabilisateur horizontal gauche Linkes Höhenleitwerk - 左側の水平安定機 + 左側水平安定装置 왼쪽 수평안정판 左侧悬挂稳定 左側懸掛穩定 @@ -623,7 +646,7 @@ Stabilizzatore Orizzontale Destro Stabilisateur horizontal droit Rechtes Höhenleitwerk - 右側の水平安定機 + 右側水平安定装置 오른쪽 수평안정판 右侧悬挂稳定 右側懸掛穩定 @@ -639,7 +662,7 @@ Stabilizzatore Verticale Stabilisateur vertical Seitenleitwerk - 車両スタビライザ + 垂直安定装置 수직 안정판 垂直稳定 垂直穩定 @@ -686,7 +709,7 @@ Engrenagem Rueda Podvozek - Motore + Carrello Trains d'atterrissage ギア 기어 @@ -752,7 +775,7 @@ Statický port Porta Statica Système pitot-statique - スタティック ポート + 静圧管 정압공 静态端口 靜態端口 @@ -815,10 +838,10 @@ Dowódca Wieżyczka Velitel Věž Comandante Torre - Comandante Torretta + Torretta Comandante Parancsnok Lövegtorony Башня командира - 車長の砲塔 + 車長砲塔 지휘관 포탑 指挥官 炮塔 指揮官 砲塔 @@ -832,10 +855,10 @@ Dowódca Działo Velitel Kanón Comandante Canhão - Comandante Cannone + Cannone Comandante Parancsnok Ágyú Пушка командира - 車長の砲 + 車長砲 지휘관 포 指挥官 枪 指揮官 槍 @@ -868,7 +891,7 @@ Cingolo sinistro Bal lánctalp Левую гусеницу - 左の履帯 + 左履帯 왼쪽 궤도 左履带 左履帶 @@ -884,7 +907,7 @@ Cingolo destro Jobb lánctalp Правую гусеницу - 右の履帯 + 右履帯 오른쪽 궤도 右履带 右履帶 @@ -900,7 +923,7 @@ Ruota frontale sinistra Bal első kerék Левое переднее колесо - 左の前輪 + 左前輪 왼쪽 앞바퀴 左前轮 左前輪 @@ -916,7 +939,7 @@ Ruota frontale destra Jobb első kerék Правое переднее колесо - 右の前輪 + 右前輪 오른쪽 앞바퀴 右前轮 右前輪 @@ -932,7 +955,7 @@ Seconda ruota frontale sinistra Második bal első kerék Второе переднее левое колесо - 左の 2 つめの前輪 + 左第二前輪 왼쪽 두번째 바퀴 第二左前轮 第二左前輪 @@ -948,7 +971,7 @@ Seconda ruota frontale destra Második jobb hátsó kerék Второе правое переднее колесо - 右の 2 つめの前輪 + 右第二前輪 오른쪽 두번째 바퀴 第二右前轮 第二右前輪 @@ -964,7 +987,7 @@ Ruota centrale sinistra Bal középső kerék Левое среднее колесо - 左の中央の前輪 + 左中央輪 왼쪽 가운데 바퀴 左中轮 左中輪 @@ -980,7 +1003,7 @@ Ruota centrale destra Jobb középső kerék Правое среднее колесо - 右の中央の前輪 + 右中央輪 오른족 가운데 바퀴 右中轮 右中輪 @@ -996,7 +1019,7 @@ Ruota posteriore sinistra Bal hátsó kerék Левое заднее колесо - 左の後輪 + 左後輪 왼쪽 뒤쪽 바퀴 左后轮 左後輪 @@ -1012,7 +1035,7 @@ Ruota posteriore destra Jobb hátsó kerék Правое заднее колесо - 右の後輪 + 右後輪 오른쪽 뒤쪽 바퀴 右后轮 右後輪 @@ -1044,7 +1067,7 @@ Rotore principale Főrotor Несущий винт - 主翼 + メインローター 주 로터 主旋翼 主旋翼 @@ -1061,7 +1084,7 @@ Rotore di coda Farokrotor Рулевой винт - テイル ローター + テールローター 꼬리 로터 尾桨 尾槳 @@ -1138,7 +1161,7 @@ ERA ERA ERA - ERA + Corrazza Reattiva Reaktivpanzerung ERA Blindage réactif @@ -1157,7 +1180,7 @@ Ремонт Ajustes de reparación Nastavení oprav - Impostazioni Riparazioni + Impostazioni di Riparazione Paramètres des réparations 修理設定 수리 설정 @@ -1174,7 +1197,7 @@ Poskytuje rozsáhlý systém oprav pro všechny typy vozidel. Fornisce un sistema di riparazione per tutti i tipi di veicoli. Fournit un système de réparation pour tous les types de véhicules. - 全種類の車両に修理システムを適用しますか? + あらゆる車種に対応した修理システムを提供します。 모든 차량에 대해 수리 시스템을 제공합니다. 提供修复系统给所有载具 提供修復系統給所有載具 @@ -1230,10 +1253,12 @@ Allow Wheel Replacement Erlaube Radwechsel + Permetti sostituzione ruote Wymiana kół Разрешить замену колес タイヤ交換の許可 바퀴 교체 허용 + Autoriser le remplacement des roues Who can remove and replace wheels? @@ -1253,16 +1278,20 @@ Allow Wheel Patching Erlaube Radflicken + Permetti di toppare le ruote タイヤ補修を許可 Zezwól na Łatanie Kół 바퀴 수리 허용 + Autoriser le rafistolage des roues Who can patch wheels? Wer kann Radflicken durchführen? + Chi può rattoppare ruote 誰がタイヤの補修を出来るようにしますか? Kto może łatać koła? 누가 바퀴를 수리할 수 있습니까? + Qui peut rafistoler les roues ? Allow Repair @@ -1317,10 +1346,10 @@ Какой максимальный урон можно починить с помощью ремкомплекта? ¿Cuál es el daño máximo que puede ser reparado con una caja de herramientas? Jaké maximální poškození může být opraveno pomocí opravárenské sady? - Qual'è il danno massimo che può essere riparato con il Toolkit? + Qual'è il danno massimo che può essere riparato con il Kit Utensili?\n0% significa che tutti i danni possono essere riparati. Définit la quantité maximale de dégâts pouvant être réparés avec une trousse à outils. - ツールキットで修理できる、最大の損傷許容範囲を設定しますか? - 어느정도의 피해까지 툴킷으로 수리가 가능합니까? + ツールキットを使用して修復できるパーツの最大ダメージ。\n0% はすべてのダメージを修復できることを意味します。 + 어느정도의 피해까지 도구모음으로 수리가 가능합니까? 工具包可以修复的最大损坏值? 工具包可以修復的最大損壞值? @@ -1347,9 +1376,9 @@ Какой максимальный урон может починить инженер? ¿Cuál es el daño máximo que puede ser reparado por un ingeniero? Jaké maximální poškození může být opraveno pomoci inženýra? - Qual'è il danno massimo che può essere riparato da un Geniere? + Qual'è il danno massimo che può essere riparato da un Geniere?\n0% significa che tutti i danni possono essere riparati. Définit la quantité maximale de dégâts qu'un ingénieur peut réparer. - 工兵が修理できる、最大の損傷許容範囲を設定しますか? + 修理に必要な最小レベルを超える工兵が修復できるパーツの最大ダメージ。\n0% は、すべてのダメージを修復できることを意味します。 정비공은 어느정도의 피해까지 수리할 수 있습니까? 工兵可以修复的最大损坏值? 工兵可以修復的最大損壞值? @@ -1362,10 +1391,10 @@ Удалять ремкомплект после использования Eliminar conjunto de herramientas al usarlo Odstranit sadu nástrojů po použití - Rimuovi Toolkit dopo l'uso + Consuma Kit Utensili dopo l'uso Retirer la trousse à outils après usage - ツールキットを使うと削除 - 툴킷 사용후 제거 + ツールキットを使用後に削除 + 도구모음 사용 후 제거 使用后删除工具包 使用後刪除工具包 @@ -1377,10 +1406,10 @@ Следует ли удалять ремкомплект после использования? ¿Deben retirarse las herramientas al usarlas? Má být odstraněna sada nástroju po použití? - Il Toolkit dev'essere rimosso dopo l'uso? + Il Kit Utensili viene consumato e rimosso dopo l'uso? Définit si la trousse à outils doit être retirée après usage. - ツールキットを使うと削除しますか? - 툴킷을 사용하면 제거를 합니까? + ツールキットを使用時に消費しますか? + 도구모음을 사용하면 제거를 합니까? 要在使用后删除工具包吗? 要在使用後刪除工具包嗎? @@ -1437,7 +1466,7 @@ Только у ремонтного транспорта или ремонтных сооружений Reparar en instalación o vehículo Opravárenské zařízení nebo vozidlo - Strutture Riparazioni o Veicoli + Strutture o Veicoli di Riparazioni Ateliers ou véhicules de réparation 修理施設または車両のみ 수리 시설혹은 차량 @@ -1482,9 +1511,9 @@ Список имен юнитов, которые будут классифицированы как инженеры, разделенный запятыми. Lista de los nombres de las unidades que serán clasificados como ingeniero, separados por comas. Seznam jmen jednotek, které budou klasifikovány jako inženýr, oddělit čárkami. - Lista di unità che verranno classificate come genieri, separate da virgole. + Lista di nomi di unità che verranno classificate come genieri, separate da virgole. Liste d'unités qui seront classées comme ingénieurs, séparées par des virgules. - 一覧に記載されたユニット名を、工兵として指定します。コンマで複数を指定できます。 + 工兵に指定されるユニットのリスト。カンマで区切ります。 목록 내 보직이름은 정비공으로 분류됩니다. 쉼표로 구분합니다. 工兵名单,把单位名称输入在这边即可定义其为工兵。每个单位使用逗号以做区隔。 工兵名單,把單位名稱輸入在這邊即可定義其為工兵。每個單位使用逗號以做區隔。 @@ -1497,9 +1526,9 @@ Это инженер Es un ingeniero Inženýr - E' Geniere + È Geniere Qualification technique - 工兵とする + 工兵にする 은 정비공이다 是工兵 是工兵 @@ -1508,13 +1537,13 @@ Select the engineering skill level of the unit Wählt die Eignungsstufe zur Ausübung des Pioniers für diese Einheit Wybierz biegłość w dziedzinie naprawy danej jednostki - Selecione o nível de habilidade da unidade em engenhraria + Selecione o nível de habilidade da unidade em engenharia Укажите уровень инженерного мастерства для юнита Selecciona el nivel de conocimientos de ingeniería de la unidad Vyberte úroveň dovednosti inženýra pro jednotku - Seleziona il livello di abilità geniere dell'unità + Seleziona il livello di formazione da geniere dell'unità Choix du niveau de compétence technique de l'unité. - ユニットへの工兵スキルを選択 + ユニットの工兵スキルのレベルを定義します。 선택한 인원의 정비 실력을 고르십시요 选择工兵的技术水平 選擇工兵的技術水平 @@ -1555,7 +1584,7 @@ Adv. Engineer Instandsetzer - Adv. Geniere + Geniere Av. 上級工兵 高级工兵 專精 @@ -1578,7 +1607,7 @@ Přiřaďte jednu nebo více osob jako inženýra Assegna una o più unità come genieri Assigne une ou plusieurs unités en tant qu'ingénieur. - 修理車両として指定 + 単体、または複数のユニットを工兵として割り当てます 하나 혹은 여러 인원을 정비공으로 등록합니다 指定一个或多个单位为工兵 指定一個或多個單位為工兵 @@ -1617,13 +1646,13 @@ List of vehicles that will be classified as repair vehicle, separated by commas. Eine Aufzählung von Fahrzeugen, die als Reperaturfahrzeug gelten, getrennt durch Kommata Lista nazw pojazdów, które są sklasyfikowane jako pojazdy naprawcze, oddzielone przecinkami. - Lista de veículos que serão classificadas como veículo de reparo. Separado por vígulas. + Lista de veículos que serão classificadas como veículo de reparo. Separado por vírgulas. Список транспортных средств, которые будут классифицированы как ремонтные, разделенный запятыми. Lista de los vehículos que se clasifican como vehículo de reparación, separados por comas. Seznam vozidel, která budou klasifikována jako opravárenská, oddělit čárkami. Lista di Veicoli che verranno considerati veicoli riparazioni, separati da virgole. Liste de véhicules qui seront classés comme véhicules de réparation, séparés par des virgules. - 一覧に記載されたユニット名を、修理車両として指定します。コンマで複数を指定できます。 + 修理車両に指定される車両のリスト。カンマで区切ります。 목록내 차량은 정비 차량으로 분류됩니다. 쉼표로 구분합니다. 载具名单,把载具名称输入在这边即可定义其为维修载具。每个载具使用逗号以做区隔。 載具名單,把載具名稱輸入在這邊即可定義其為維修載具。每個載具使用逗號以做區隔。 @@ -1636,9 +1665,9 @@ Это ремонтный транспорт Es un vehículo de reparación Opravárenské vozidlo - E' Veicolo Riparazioni + È Veicolo Riparazioni Est un véhicule de réparation - 修理車両とする + 修理車両にする 은 정비 차량이다 是维修载具 是維修載具 @@ -1653,7 +1682,7 @@ Je vozidlo klasifikováno jako opravárenské? Il veicolo è classificato dome veicolo riparazioni? Définit s'il s'agit d'un véhicule de réparation. - 車両を修理車両と指定しますか? + 車両を修理車両に指定しますか? 이 차량을 정비 차량으로 분류합니까? 此载具是维修载具吗? 此載具是維修載具嗎? @@ -1668,7 +1697,7 @@ Přiřaďte jedno nebo více vozidel jako opravárenské vozidlo Assegna uno o più veicoli come veicoli riparazioni Affecte un ou plusieurs véhicules en tant que véhicule de réparation - 単体、または複数の車両を修理車両とします + 単体、または複数の車両を修理車両として割り当てます 하나 혹은 여러 차량을 정비 차량으로 등록합니다 指定一个或多个载具作为维修载具 指定一個或多個載具作為維修載具 @@ -1711,9 +1740,9 @@ Список объектов, которые будут классифицированы как ремонтные, разделенный запятыми. Lista de los objetos que se clasifican como instalaciones para la reparación, separados por comas. Seznam objektů, které budou klasifikovány jako opravárenské zařízení, oddělit čárkami. - Lista di oggetti che verranno classificati come strutture riparazioni, separate da virgole. + Lista di oggetti che verranno classificati come strutture riparazioni, separati da virgole. Liste d'objets qui seront classés comme ateliers de réparation, séparés par des virgules. - 一覧に記載されたユニット名を、修理施設として指定します。コンマで複数を指定できます。 + 修理施設に指定されるオブジェクトのリスト。カンマで区切ります。 목록내 시설은 정비 시설으로 분류됩니다. 쉼표로 구분합니다. 设施名单,把设施名称输入在这边即可定义其为维修设施。每个设施使用逗号以做区隔。 設施名單,把設施名稱輸入在這邊即可定義其為維修設施。每個設施使用逗號以做區隔。 @@ -1726,7 +1755,7 @@ Это ремонтное сооружение Es una instalación de reparación Opravárenské zařízení - E' Struttura Riparazioni + È Struttura Riparazioni Est un atelier de réparation 修理施設とする 은 정비 시설이다 @@ -1758,7 +1787,7 @@ Přiřaďte jeden nebo více objektů jako opravárenské zařízení Assegna uno o più oggetti come strutture riparazioni Assigne un ou plusieurs objets en tant qu'atelier de réparation. - ひとつ、または複数オブジェクトに予備部品を追加 + 単体、または複数のオブジェクトを修理施設として割り当てます 하나 혹은 여러 시설을 정비 시설로 등록합니다 指定一个或多个物体作为维修设施 指定一個或多個對象作為維修設施 @@ -1788,7 +1817,7 @@ Přidat náhradní díly do jednoho nebo více objektů Aggiungi parti di ricambio ad uno o più oggetti Ajoute des pièces de rechange à un ou plusieurs objets. - 一覧に追加されたオブジェクトへ予備部品を与えます。コンマで複数を指定できます。 + 単体、または複数のオブジェクトに予備部品の追加を割り当てます 하나 혹은 여러 물체가 예비 부품을 더합니다 添加备件到一个或多个物体上 添加備件到一個或多個對象上 @@ -1813,13 +1842,13 @@ List of objects that will get spare parts added, separated by commas. Eine Aufzählung von Objekten, welche Ersatzteile beherbergen, und durch Kommata getrennt sind. Lista obiektów, które otrzymają części zamienne, oddzielone przecinkiem. - Lista de objetos que ganharão partes sobressalentes, dividos por vírgulas. + Lista de objetos que ganharão partes sobressalentes, divididos por vírgulas. Lista de los objetos que tendrán repuestos añadidos, separados por comas. Список транспортных средств, в которые будут добавляться запчасти, разделенный запятыми. Seznam objektů, které dostanou náhradní díly, oddělit čárkami. - Lista di oggetti a cui verranno aggiunte parti di ricambio, separate da virgole. + Lista di oggetti a cui verranno aggiunte parti di ricambio, separati da virgole. Liste d'objets dans lesquels des pièces de rechange seront ajoutées, séparés par des virgules. - 一覧に追加されたオブジェクトへ予備部品を与えます。コンマで複数を指定できます。 + 予備部品が追加されるオブジェクトのリスト。カンマで区切ります。 목록내 물체는 예비 부품을 받습니다, 쉼표로 구분합니다. 添加备件到名单的载具上。每个载具使用逗号以做区隔。 添加備件到名單的載具上。每個載具使用逗號以做區隔。 @@ -1864,7 +1893,7 @@ Množství Quantità Quantité - + 数量 수량 数量 數量 @@ -1879,7 +1908,7 @@ Počet vybraných náhradních dílů. Numero di parti di ricambio selezionate. Nombre de pièces de rechange séléctionnées. - 選択された予備部品の数を選択します。 + 選択された予備部品の数量を選択します。 선택한 부품의 수 选择的备件数量 選擇的備件數量 @@ -1892,7 +1921,7 @@ Для ремонта колес требуется Requerimentos para reparo de rodas Vyžaduje opravu kol - Requisiti riparazione ruote + Requisiti sostituzione ruote Exigences pour réparation des roues タイヤ修理の要求 바퀴 교체 요구사항 @@ -1907,9 +1936,9 @@ Предметы, которые требуются для снятия/замены колес Itens requeridos para remover/trocar rodas Položka vyžaduje odstraněná/vyměněná kola - Oggetti richiesti per riparare/rimuovere ruote + Oggetti richiesti per rimuovere/sostituire ruote Outils nécessaires pour le démontage ou le remplacement des roues. - タイヤの除去と交換にアイテムを必要としますか? + タイヤの除去と交換にアイテムを必要とします。 바퀴를 제거/교체하는데 필요한 물건을 정합니다. 需要特定物品来移除/更换车轮 需要特定物品來移除/更換車輪 @@ -1917,28 +1946,32 @@ Wheel Patch Requirements Bedingungen für die Radflicken + Requisiti per rattoppare ruote タイヤ補修の要求 Wymagania do Łatania Koła 바퀴 수리 아이템 필요 + Exigences pour rafistoler une roue Items required to patch a wheel. Gegenstänge, die zum Reifenflicken benötigt werden. - タイヤ補修にアイテムを必要としますか? + Oggetti richiesti per rattoppare ruote. + タイヤ補修にアイテムを必要とします。 Przedmioty wymagane do załatania koła 바퀴를 수리하기 위해 아이템이 필요합니다. + Equipements requis pour rafistoler une roue. Misc Repair Requirements Sonstige Reparaturbedingungen - 部分修理条件 + 部分修理の条件 額外修理條件 部分全面维修条件 Exigences pour réparations diverses Requisiti di riparazione vari Požadavky pro částečnou opravu Rózne wymagania do naprawy - Requerimentos para reparo miscelâneo + Requerimentos para reparos variados Requisitos de objetos misceláneos de reparación Требования к разному ремонту 기타 수리 요구사항 @@ -1946,7 +1979,7 @@ Items required to repair a specific vehicle component or remove/replace tracks. Gegenstände die benötigt werden, um eine spezifische Fahrzeugkomponente oder eine Kette zu entfernen/auszutauschen. - 車両の特定コンポーネントか履帯の除去/交換にアイテムを必要とします。 + 車両の特定コンポーネントの修理や履帯の除去/交換にアイテムを必要とします。 是否需要物品來修復一些特別載具部位或者移除/替換履帶 维修特定车辆部件或拆除/更换轨道所需的物品。 Outils nécessaires pour la réparation d'un équipement spécifique du véhicule, et pour le démontage ou le remplacement des chenilles. @@ -1954,14 +1987,14 @@ Przedmioty wymagane do naprawy określonego elementu pojazdu lub usunięcia/wymiany gąsienicy. Items necessários para reparar uma peça específica ou remover/substituir lagarta. Objetos necesarios para reparar un componente específico del vehículo o quitar/reemplazar las orugas. - Elementi necessari per riparare un componente specifico del veicolo o per rimuovere/sostituire i cingoli + Oggetti necessari per riparare un componente specifico del veicolo o per rimuovere/sostituire i cingoli Предметы, необходимые для ремонта отдельных компонентов или снятия/замены гусеницы. 차량의 궤도나 부품을 제거/교체할 때 필요한 아이템을 정합니다. Full Repair Requirements Bedingungen für vollständige Reparatur - 完全修理条件 + 完全修理の条件 完整修復條件 全面维修条件 Exigences pour réparations complètes @@ -1984,7 +2017,7 @@ Przedmioty wymagane do przeprowadzenia pełnej naprawy pojazdu. Itens requeridos para realizar um reparo veicular completo. Objetos requeridos para una reparación completa - Elementi necessari per eseguire una riparazione completa del veicolo. + Oggetti necessari per eseguire una riparazione completa del veicolo. Предметы, необходимые для полного ремонта техники. 차량 완전 수리 시 필요한 아이템을 정합니다. @@ -1996,7 +2029,7 @@ O motor deve estar desligado para manutenção Le moteur doit être arrêté pour la réparation. Двигатель должен быть выключен для ремонта - 修理のためにエンジンを停止させる必要があります。 + 修理するにはエンジンを停止する必要があります Silnik musi być wyłączony w celu naprawy 수리를 위해서는 엔진을 꺼야만 합니다 Il motore deve essere spento per poter riparare @@ -2021,8 +2054,8 @@ Number of spare tracks in cargo. Anzahl der Ersatzketten im Laderaum. - カーゴ内にある予備履帯の数を指定します。 - Numero dei cingoli di scorta nel cargo. + カーゴ内の予備履帯の数を指定 + Numero dei cingoli di scorta nel carico. 設定載具在貨艙內攜帶的備用履帶數量 设定载具在货舱内携带的备用履带数量。 Liczba zapasowych gąsienic w ładunku. @@ -2051,7 +2084,7 @@ Number of spare wheels in cargo. Anzahl der Ersatzreifen im Laderaum. - カーゴ内にある予備タイヤの数を指定します。 + カーゴ内の予備タイヤの数を指定 Numero delle ruote di scorta nel cargo. 設定載具在貨艙內攜帶的備用輪胎數量 设定载具在货舱内携带的备用轮胎数量。 @@ -2066,10 +2099,10 @@ Auto shut off engine on repair Motor automatisch ausschalten - 修理時にエンジン自動停止 + 修理時にエンジンを自動停止 维修时自动关闭发动机 維修時自動關閉引擎 - Motore spento automaticamente durante la riparazione + Spegnimento automatico motore durante riparazioni Automatycznie wyłącz silnik podczas napraw Автоотключение двигателя при ремонте Desligar motor automaticamente enquanto reparar @@ -2081,7 +2114,7 @@ Automatically shut off the engine when doing repairs. Schaltet den Motor automatisch aus, sobald das Fahrzeug repariert wird. - 修理時にエンジンを自動で停止します。 + 修理時は自動的にエンジンを停止します。 修理时自动关闭发动机。 維修時自動關閉引擎 Spegne automaticamente il motore quando si fanno riparazioni. @@ -2095,101 +2128,129 @@ Part Repair Time - 部分修理時間 + 部分修理所要時間 Czas Naprawy Części + Durata di riparazione componente Teilreparaturzeit 부품 수리 시간 + Temps de réparation des pièces Time in seconds to complete a repair. - 修理完了までの時間 + 修理完了までの所要時間 Czas w sekundach do przeprowadzenia naprawy + Tempo in secondi richiesto per completare una riparazione. Zeit in Sekunden, um eine Reparatur abzuschließen. 수리를 완료하는 시간(초 단위) + Durée en secondes pour terminer une réparation. Wheel Change Time - タイヤ交換時間 + タイヤ交換所要時間 Czas Zmiany Koła + Durata di sostituzione ruote Radwechselzeit 바퀴 교체 시간 + Temps de changement d'une roue Time in seconds to remove or change a wheel. - タイヤの取り外しまたは交換にかかる時間。 + タイヤの取り外しまたは交換に掛かる時間。 Czas w sekundach do zdjęcia lub zmienienia koła. + Tempo in secondi richiesto per rimuovere o sostituire una ruota. Zeit in Sekunden, um ein Rad zu entfernen oder zu wechseln. 바퀴를 제거하거나 교체하는 데 걸리는 시간(초 단위) + Durée en seconde pour enlever ou changer une roue. Patch Wheel Rad flicken + Rattoppa ruota タイヤを補修する Załataj Koło 바퀴 수리 + Rafistoler la roue Patching Wheel... Rad flicken... + Rattoppando ruota... タイヤを補修しています・・・ Łatanie Koła... 바퀴 수리 중... + Rafistolage de la roue... Wheel Patch Time - タイヤ補修時間 + タイヤ補修所要時間 Czas Łatania Koła + Durata di rattoppamento ruote Zeit um Räder zu flicken 바퀴 수리 시간 + Temps de rafistolage d'une roue Time it takes to patch a wheel by 5%. - タイヤを5%補修するのにかかる時間。 + タイヤを5%補修するのに掛かる時間。 Czas potrzebny na załatanie koła o 5%. + Tempo richiesto per ridurre i danni di una ruota del 5%. Zeit, die benötigt wird, um ein Rad um 5 % zu flicken. 바퀴를 5% 수리하는 데 걸리는 시간(초 단위) + Durée pour rafistoler une roue de 5%. Patch Wheel Threshold タイヤ補修しきい値 Próg Łatania Koła + Limite rattoppamento ruota Rad flicken Schwellenwert 바퀴 수리 한계점 + Seuil de rafistolage d'une roue Maximum level to which a wheel can be patched. タイヤを補修できる最大の度合い。 Maksymalny poziom, do którego koło może zostać załatane. + Livello di integrità massimo di una ruota rattoppata. Maximales Level, bis zu dem ein Rad geflickt werden kann. 바퀴를 수리할 수 있는 최대 레벨입니다. + Niveau maximum de rafistolage d'une roue. Wheel Patch Location タイヤ補修場所 Miejsce Łatania Koła + Luoghi rattoppamento ruote Räder Flick Ort 바퀴 수리 장소 + Lieu de rafistolage des roues Where the wheel can be patched. タイヤを補修できる場所。 Gdzie można załatać koło. + In quali luoghi è possibile rattoppare una ruota? Wo das Rad geflickt werden kann. 바퀴를 수리할 수 있는 곳입니다. + Lieu où les roues peuvent être rafistolées. On the ground Auf dem Boden 地上 + Per terra Na ziemi 지면 위 + Sur le terrain On a vehicle An einem Fahrzeug + Su un veicolo 車両上 Na pojeździe 차량 + Sur un véhicule diff --git a/addons/respawn/CfgVehicles.hpp b/addons/respawn/CfgVehicles.hpp index 63b87ee057..bda6c44151 100644 --- a/addons/respawn/CfgVehicles.hpp +++ b/addons/respawn/CfgVehicles.hpp @@ -68,8 +68,8 @@ class CfgVehicles { class ACE_SelfActions { class ACE_MoveRallypoint { displayName = CSTRING(Rallypoint_MoveRallypoint); - condition = QUOTE([ARR_2(_player, side group _player)] call FUNC(canMoveRallypoint)); - statement = QUOTE([ARR_2(_player, side group _player)] call FUNC(moveRallypoint)); + condition = QUOTE([ARR_2(_player,side group _player)] call FUNC(canMoveRallypoint)); + statement = QUOTE([ARR_2(_player,side group _player)] call FUNC(moveRallypoint)); exceptions[] = {"isNotSwimming"}; showDisabled = 0; }; diff --git a/addons/respawn/XEH_preInit.sqf b/addons/respawn/XEH_preInit.sqf index 9361d05015..894773534a 100644 --- a/addons/respawn/XEH_preInit.sqf +++ b/addons/respawn/XEH_preInit.sqf @@ -6,6 +6,6 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" ADDON = true; diff --git a/addons/respawn/initSettings.sqf b/addons/respawn/initSettings.inc.sqf similarity index 100% rename from addons/respawn/initSettings.sqf rename to addons/respawn/initSettings.inc.sqf diff --git a/addons/respawn/stringtable.xml b/addons/respawn/stringtable.xml index 16ceb790be..8ff5ded8ff 100644 --- a/addons/respawn/stringtable.xml +++ b/addons/respawn/stringtable.xml @@ -28,7 +28,7 @@ Kihelyezés 5 másodperc múlva... Dispiegamento in 5 secondi... Será posicionado em 5 segundos... - 設置まであと 5 秒・・・ + 5秒後に設置します・・・ 5초 후 재투입... 5秒后完成部署... 5秒後完成佈署... @@ -59,7 +59,7 @@ Téléportation à la base Teletransportar para a Base Bázisra teleportálás - Teleporta alla base + Teleporta in base ベースへ移動 기지로 순간이동 传送至基地 @@ -122,7 +122,7 @@ Точка сбора Синих (База) Punkt zbiórki Zachodu (Baza) Point de ralliement OUEST (Base) - Rallypoint West (Base) + Rallypoint Ovest (Base) Gyülekezőpont, Nyugat (Bázis) Bod shromáždění Západ (Základna) Ponto de encontro Oeste (Base) @@ -138,10 +138,10 @@ Точка сбора Красных (База) Punkt zbiórki Wschodu (Baza) Point de ralliement EST (Base) - Rallypoint East (Base) + Rallypoint Est (Base) Gyülekezőpont, Kelet (Bázis) Bod shromáždění Východ (Základna) - Ponto de encontro Lest (Base) + Ponto de encontro Leste (Base) ラリーポイント OPFOR軍 (ベース) 红方集合点(基地) 紅方集合點 (基地) @@ -154,7 +154,7 @@ Точка сбора Независимых (База) Punkt zbiórki Ruchu oporu (Baza) Point de ralliement Indépendant (Base) - Rallypoint Independent (Base) + Rallypoint Indipendenti (Base) Gyülekezőpont, Független (Bázis) Bod shromáždění Nezávislý (Základna) Ponto de encontro Independente (Base) @@ -170,7 +170,7 @@ Точка сбора Синих Punkt zbiórki Zachodu Point de ralliement OUEST - Rallypoint West + Rallypoint Ovest Gyülekezőpont, Nyugat Bod shromáždění Západ Ponto de encontro Oeste @@ -186,7 +186,7 @@ Точка сбора Красных Punkt zbiórki Wschodu Point de ralliement EST - Rallypoint East + Rallypoint Est Gyülekezőpont, Kelet Bod shromáždění Východ Ponto de encontro Leste @@ -202,7 +202,7 @@ Точка сбора Независимых Punkt zbiórki Ruchu oporu Point de ralliement Indépendant - Rallypoint Independent + Rallypoint Indipendenti Gyülekezőpont, Független Bod shromáždění Nezávislý Ponto de encontro Independente @@ -222,7 +222,7 @@ Respawn-rendszer Возрождение Sistema Respawn - リスポン システム + リスポーン システム 재투입 시스템 重生系统 重生系統 @@ -288,7 +288,7 @@ Játékosi testek eltávolítása távozás után? Удалять трупы игроков после дисконнекта? Rimuovi i corpi dei giocatori quando si disconnettono? - 切断後はプレイヤーの死体を削除するかどうかを設定できます。 + 切断したプレイヤーの死体を削除するかどうかを設定できます。 접속이 끊긴 플레이어의 시체를 제거합니까? 要删除已离线的玩家尸体吗? 要刪除已離線的玩家屍體嗎? @@ -319,7 +319,7 @@ Ce module vous permet de configurer les fonctionnalités ACE spécifiques à la réapparition des joueurs. Questo modulo ti permette di configurare le funzionalità ACE specifiche dei respawn. Este módulo permite configurar parámetros relacionados con la reaparición - 有効化するとリスポンへ ACE 機能を設定できます。 + 有効化するとリスポーンへ ACE 機能を設定できます。 이 모듈은 ACE 재투입의 자세한 설정을 변경할 수 있게 해줍니다. 该模块使您可以设定 ACE 的重生功能 該模塊使您可以設定ACE的重生功能 @@ -335,7 +335,7 @@ Baráti tűz üzenetek Сообщения об огне по своим Messaggi Fuoco Amico - 友軍誤射の表示 + 友軍誤射の布告 아군 오인사격 메시지 友军误击信息 友軍誤擊訊息 @@ -365,7 +365,7 @@ Système de points de ralliement Gyülekezőpont-rendszer Система точек сбора - Sistema Punto di Raccolta + Sistema Rallypoint ラリーポイント システム 집결지 시스템 集合点系统 @@ -378,10 +378,10 @@ Tento modul umožňuje určit místo shromaždiště, kam se mohou jednokty rychle teleportovat ze "základny". Toto vyžaduje vhodné objekty v mapě - základna a vlajka. Oba dva můžete najít v kategorii Prázdné -> ACE Oživení. Este módulo permite que você aplique em uma missão "pontos de encontro", que pode rapidamente se teletransportar para a "base". Ele requer colocar objetos apropriados no mapa - base e bandeiras. Ambos estão disponíveis na categoria em branco -> ACE Revival. Этот модуль позволяет вам указать место сбора, куда вы можете быстро телепортироваться с "базы". Требуется наличие соответствующих объектов на карте - базы и флага. Они могут быть найдены в категории Пусто -> ACE Возрождения. - Questo modulo ti consente di usare Punti di Raccolta in missione, a cui ti puoi teleportare rapidamente dalla bandiera in base. Richiede il piazzamento di oggetti speciali in mappa - base e bandiera. Entrambi disponibili nella categoria Vuoto -> Respawn ACE + Questo modulo ti consente di usare Rallypoint in missione, a cui ti puoi teleportare rapidamente dalla bandiera in base. Richiede il piazzamento di oggetti speciali in mappa - base e bandiera. Entrambi disponibili nella categoria Vuoto -> ACE Riapparizione Este módulo permite usar puntos de reunión en la misión, a los que pueden teletransportarse las unidades desde la bandera de base. Requiere colocar objetos especiales en el mapa: las banderas de base y de reunión, ambas disponibles en la categoría Vacio-> Reaparición ACE Ce module vous permet d'utiliser des points de ralliement dans les missions, vers lesquels vous pouvez vous téléporter rapidement depuis le drapeau de la base.\nNécessite de placer des objets spéciaux sur la carte - base et drapeau, tous deux disponibles dans la catégorie "Vide -> ACE Réapparition". - ミッションでベースから素早く移動できるラリーポイントを使えるようにします。ゲーム内に専用オブジェクトとなるベースとフラッグを設置している必要があります。両オブジェクトは Empty 下の ACE リスポンから設置できます。 + ミッションでベースから素早く移動できるラリーポイントを使えるようにします。ゲーム内に専用オブジェクトとなるベースとフラッグを設置している必要があります。両オブジェクトは Empty 下の ACE リスポーンから設置できます。 이 모듈은 미션 중에 기지 깃발에서 집결지로 빠르게 텔레포트 시켜주는 역할을 합니다. 지도 상에 기지 및 깃발이 필요합니다. 두 가지 모두 Empty->ACE Respawn 카테고리에서 찾을 수 있습니다. 摆放此模块后,你将能在任务中部署集合点,使你可以快速往返基地与前线。要使用本功能,请记得放上空物体->ACE 重生里面的基地与旗帜。 擺放此模塊後,你將能在任務中佈署集合點,使你可以快速往返基地與前線。要使用本功能,請記得放上空物件->ACE 重生裡面的基地與旗幟 @@ -396,7 +396,7 @@ Déplacer le point de ralliement Gyülekezőpont mozgatása Двигать точку сбора - Sposta Punto di Raccolta + Sposta Rallypoint ラリーポイントを移動 집결지 이동 移动集合点 @@ -412,8 +412,8 @@ ACE Réapparition ACE Respawn ACE Возрождение - Rigenerazione ACE - ACE リスポン + ACE Riapparizione + ACE リスポーン ACE 재투입 ACE 重生 ACE 重生 diff --git a/addons/sandbag/stringtable.xml b/addons/sandbag/stringtable.xml index b8f48606b0..d6bdab2556 100644 --- a/addons/sandbag/stringtable.xml +++ b/addons/sandbag/stringtable.xml @@ -45,7 +45,7 @@ Zde nelze postavit Impossibile costruire qui Nem teheted ide - Não pode contruir aqui + Não pode construir aqui ここでは作れません 여기에 지을 수 없습니다 无法放置在此 @@ -94,10 +94,10 @@ Dejar de portar Arrêter de porter Položit - Fine Trasporto + Termina Trasporto Cipelés abbahagyása Parar de carregar - 下ろす + 降ろす 그만 옮기기 停止搬运 停止搬運 @@ -179,7 +179,7 @@ Caja de sacos de arena Caisse de sacs de sable Bedna na pytle s pískem - Contenitore Sacchi di Sabbia + Scatola Sacchi di Sabbia Homokzsákos láda Caixa de saco de areia 土のう入れ @@ -196,7 +196,7 @@ Aqui no hay arena Il n'y a pas de sable ici. Tady není písek - Qui non cè Sabbia + Qui non c'è Sabbia Itt nincs homok Aqui não tem areia ここに土はありません diff --git a/addons/scopes/ACE_Arsenal_Stats.hpp b/addons/scopes/ACE_Arsenal_Stats.hpp index 06143be886..3e5240bbf5 100644 --- a/addons/scopes/ACE_Arsenal_Stats.hpp +++ b/addons/scopes/ACE_Arsenal_Stats.hpp @@ -6,8 +6,8 @@ class EGVAR(arsenal,stats) { stats[] = {"ACE_ScopeAdjust_Horizontal", "ACE_ScopeAdjust_HorizontalIncrement"}; displayName = CSTRING(statHorizontalLimits); showText = 1; - textStatement = QUOTE(params[ARR_2('_stat','_config')]; private _limits = getArray (_config >> _stat select 0); format [ARR_4('%1 / %2 MIL (∆ %3 MIL)', _limits select 0, _limits select 1, getNumber (_config >> _stat select 1))]); - condition = QUOTE(params[ARR_2('_stat', '_config')]; (getArray (_config >> _stat select 0)) isNotEqualTo []); + textStatement = QUOTE(params[ARR_2('_stat','_config')]; private _limits = getArray (_config >> _stat select 0); format [ARR_4('%1 / %2 MIL (∆ %3 MIL)',_limits select 0,_limits select 1,getNumber (_config >> _stat select 1))]); + condition = QUOTE(params[ARR_2('_stat','_config')]; (getArray (_config >> _stat select 0)) isNotEqualTo []); tabs[] = {{}, {0}}; }; class ACE_scopeVerticalLimits: ACE_scopeHorizontalLimits { diff --git a/addons/scopes/XEH_preInit.sqf b/addons/scopes/XEH_preInit.sqf index 9361d05015..894773534a 100644 --- a/addons/scopes/XEH_preInit.sqf +++ b/addons/scopes/XEH_preInit.sqf @@ -6,6 +6,6 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" ADDON = true; diff --git a/addons/scopes/initSettings.sqf b/addons/scopes/initSettings.inc.sqf similarity index 100% rename from addons/scopes/initSettings.sqf rename to addons/scopes/initSettings.inc.sqf diff --git a/addons/scopes/stringtable.xml b/addons/scopes/stringtable.xml index 28130bc037..b69d59e3c8 100644 --- a/addons/scopes/stringtable.xml +++ b/addons/scopes/stringtable.xml @@ -24,7 +24,7 @@ ACE 조준경 영점조작 활성화 Włącz ustawienia celowników optycznych ACE Activer le réglage ACE des lunettes - Abilita Regolazione mirino ACE + Abilita Regolazione Mirino ACE 开启 ACE 瞄准镜归零调节 開啟ACE瞄準鏡歸零調節 Вкл. настройку прицелов ACE @@ -39,7 +39,7 @@ 고성능 조준경 조절 나사 활성화 Włącz pokrętła regulacyjne Active les tourelles de réglage des lunettes de visée à fort grossissement. - Abilita la regolazione delle torrette nei mirini a lunga gittata + Abilita la regolazione delle manopole sui mirini a lunga gittata 开启高倍率瞄准镜归零调节 開啟高倍率瞄準鏡歸零調節 Включает регулировочные барабанчики ввода поправок на прицелах с высокой кратностью @@ -54,7 +54,7 @@ 조절 나사 강제 Wymuś użycie pokręteł regulacyjnych Forcer les tourelles de réglage - Forza la regolazione delle torrette + Forza la regolazione delle manopole 强制使用归零调节 強制使用歸零調節 Регулировка ненастроенных прицелов @@ -69,7 +69,7 @@ 고성능 조준경의 조절 나사 사용을 강제합니다 Wymuś użycie pokręteł regulacyjnych dla celowników o dużym powiększeniu Force l'utilisation des tourelles de réglage sur les lunettes de visée à fort grossissement. - Forza l'uso della regolazione nei mirini a lunga gittata + Forza l'uso delle manopole sui mirini a lunga gittata 强制为高倍率瞄准镜开启归零调节 強制為高倍率瞄準鏡開啟歸零調節 Принудительно использовать барабанчики ввода поправок для ненастроенных прицелов с высокой кратностью @@ -114,7 +114,7 @@ 영점거리 덮어쓰기 Nadpisuje ustawienie dla zerowego dystansu Écraser la distance de zérotage - Sovrascrivi la distanza zero + Sovrascrivi distanza di azzeramento 覆写归零距离 覆寫歸零距離 Перезаписать дальность пристрелки @@ -129,7 +129,7 @@ 기존 고성능 조준경의 영점거리에 'defaultZeroRange'를 덮어씌웁니다 Używa 'defaultZeroRange' zamiast ustawionej odległości zerowania dla celowników o duzym przybliżeniu Utilise le paramètre "Distance de zérotage par défaut" pour remplacer la distance de zérotage des lunettes de visée à fort grossissement. - Usa le impostazioni di "defaultZeroRange" (Portata Zero Predefinita) per sovrascrivere la portata zero dei mirini a lunga gittata + Usa l'impostazione "defaultZeroRange" (Distanza di Azzeramento Predefinita) per sovrascrivere la distanza di azzeramento dei mirini a lunga gittata 使用'defaultZeroRange'来为高倍率瞄准镜覆写预设归零距离 使用'defaultZeroRange'來為高倍率瞄準鏡覆寫預設歸零距離 Использует настройку 'defaultZeroRange' для перенастройки дальности пристрелки прицелов с высокой кратностью @@ -144,7 +144,7 @@ 기본설정 영점거리 Domyślne zerowanie Distance de zérotage par défaut - Distanza zero predefinita + Distanza di Azzeramento Predefinita 预设归零距离 預設歸零距離 Дальность пристрелки по умолчанию @@ -170,7 +170,7 @@ Reference temperature Bezugstemperatur - 温度の参照 + 参照温度 기준 온도 Referencyjna temperatura Température de référence @@ -200,7 +200,7 @@ Reference barometric pressure Bezugsluftdruck - 気圧の参照 + 参照気圧 기준 기압 Referencyjne ciśnienie barometryczne Pression barométrique de référence @@ -230,7 +230,7 @@ Reference humidity Bezugsluftfeuchtigkeit - 湿度の参照 + 参照湿度 기준 습도 Referencyjna wilgotność Humidité de référence @@ -238,7 +238,7 @@ 参考湿度 參考濕度 Референсная влажность - Humidade de Referência + Umidade de Referência Referenční vlhkost vzduchu Humedad de referencia @@ -253,18 +253,18 @@ 武器参考多少湿度来进行归零。 武器參考多少濕度來進行歸零。 Влажность, при которой выполнена пристрелка прицела - Humidade na qual a mira foi zerada. + Umidade na qual a mira foi zerada. Vlhkost vzduchu za které byl puškohled naměřen Humedad a la cual el visor ha sido homogeneizado Deduce pressure from altitude Abgeleiteter Luftdruck von der Höhe - 高度により圧が減少 + 高度で減圧する 고도에 맞춰 기압 설정 Ciśnienie określone na podstawie wysokości Déterminer la pression selon l'altitude - Ricava la pressione dall'altitudine + Stima la pressione dall'altitudine 高度影响大气压力 高度影響大氣壓力 Просчитать давление из высоты @@ -275,11 +275,11 @@ Deduce the barometric pressure from the terrain altitude Abgeleiteter Luftdruck der Geländeumgebung - 標高により気圧が減少されます + 地形高度の標高から気圧を減圧します 주변 고도에 맞춰 기압을 설정합니다 Określ ciśnienie barometryczne na podstawie wysokości terenu Détermine la pression barométrique en fonction de l'altitude du terrain. - Ricava la pressione barometrica dall'altitudine del terreno + Stima la pressione barometrica dall'altitudine del terreno 在不同高度上会有不同的大气压力 在不同高度上會有不同的大氣壓力 Давление определяется по высоте @@ -290,10 +290,10 @@ Use legacy UI Vorheriges UI verwenden - Usa UI precedente + Usa UI Vecchio 使用舊版介面 使用旧版界面 - 昔の UI を使用 + レガシー UI を使用 기존 UI 사용 Wykorzystaj legacy UI Использовать устаревший интерфейс @@ -305,7 +305,7 @@ Displays elevation and windage with signed numbers Anzeige der Absehenverstellungen mit vorzeichenbehafteten Zahlen - Visualizza l'elevazione e la derivazione con i numeri firmati + Visualizza Alzo e Deriva con numeri firmati 使用帶著標籤的數字顯示歸零遠近與風偏程度 使用带着标签的数字显示归零远近与风偏程度 印付きの数字で仰角と横風を表示 @@ -335,7 +335,7 @@ Replicates the vanilla zeroing system for riflescopes. Repliziert das Vanilla-Zeroing-System für Zielfernrohre. - 標準で使われるライフルスコープ用のゼロイン システムを複製します。 + バニラ(ゲーム標準)のライフルスコープ用ゼロイン調整システムを複製します。 Replica il sistema di azzeramento vanilla per le ottiche. 라이플 스코프용 바닐라 영점조정 시스템을 복제합니다. 使用原版的歸零系統來取代ACE複雜的歸零模擬。 @@ -353,12 +353,12 @@ Zerowanie powoli w górę Малая поправка ВВЕРХ Ajuste menor arriba - Regola leggermente alzata in alto + Regola Alzo leggermente verso l'alto Hausse + Enyhe állítás fel Pequeno ajuste para cima Korekce nahoru (mírně) - 僅かに上へ調節 + 小さく上へ調節 위로 조절 向上微调 向上微調 @@ -369,12 +369,12 @@ Zerowanie powoli w dół Малая поправка ВНИЗ Ajuste menor abajo - Regola leggermente alzata in basso + Regola Alzo leggermente verso il basso Hausse - Enyhe állítás le Pequeno ajuste para baixo Korekce dolů (mírně) - 僅かに下へ調節 + 小さく下へ調節 아래로 조절 向下微调 向下微調 @@ -385,12 +385,12 @@ Zerowanie powoli w prawo Малая поправка ВПРАВО Ajuste menor derecha - Regola leggermente il tiro a destra + Regola Deriva leggermente a destra Dérive + Enyhe állítás jobbra Pequeno ajuste para direita Korekce doprava (mírně) - 僅かに右へ調節 + 小さく右へ調節 오른쪽으로 조절 向右微调 向右微調 @@ -401,12 +401,12 @@ Zerowanie powoli w lewo Малая поправка ВЛЕВО Ajuste menor izquierda - Regola leggermete il tiro a sinistra + Regola Deriva leggermente a sinistra Dérive - Enyhe állítás balra Pequeno ajuste para esquerda Korekce doleva (mírně) - 僅かに左へ調節 + 小さく左へ調節 왼쪽으로 조절 向左微调 向左微調 @@ -433,7 +433,7 @@ Zerowanie w dół Большая поправка ВНИЗ Ajuste mayor abajo - Regola l'alzata in basso + Regola Alzo verso il basso Hausse - - - Nagy állítás le Ajuste grande para baixo @@ -449,7 +449,7 @@ Zerowanie w prawo Большая поправка ВПРАВО Ajuste mayor derecha - Regola il tiro a destra + Regola Deriva a destra Dérive +++ Nagy állítás jobbra Ajuste grande para direita @@ -465,7 +465,7 @@ Zerowanie w lewo Большая поправка ВЛЕВО Ajuste mayor izquierda - Regola il tiro a sinistra + Regola Deriva a sinistra Dérive - - - Nagy állítás balra Ajuste grande para esquerda @@ -481,7 +481,7 @@ Ustaw wyzerowanie Установить дальность пристрелки Establecer ajuste a cero - Imposta i valori dell'azzeramento + Imposta l'azzeramento Réglage du zéro Állítások nullázása Zerar ajuste @@ -495,13 +495,13 @@ Reset zero adjustment Nullung zurücksetzen ゼロイン調節を初期化 - Resetta i valori dell'azzeramento + Resetta l'azzeramento 영점 조정 재설정 重設歸零 重设归零 Zresetuj wyzerowanie Сбросить дальность пристрелки - Resetar Ajuste Zero + Restaurar Ajuste Zero Réinitialiser le réglage du zéro Reset vynulování Restaurar ajuste de homogeneizado @@ -513,7 +513,7 @@ 이 모듈은 고성능 조준경에 조준 나사를 이용한 편차 및 고도 조절 기능을 더해줍니다. Ten moduł włącza pokrętła kalibracyjne poprawki na wiatr oraz poprawki wysokości dla celowników o dużym powiększeniu. Ce module ajoute les tourelles de correction de hausse et de dérive sur les lunettes de visée à fort grossissement. - Questo modulo aggiunge lo spostamento dell'aria e la regolazione dell'elevazione delle torrette in mirini a lunga gittata + Questo modulo aggiunge lo spostamento dell'aria e la regolazione dell'elevazione delle manopole in mirini a lunga gittata 此模块可为高倍率瞄准镜新增归零风偏,距离用的调整纽。 此模塊可為高倍率瞄準鏡新增歸零風偏,距離用的調整紐。 Этот модуль добавляет барабанчики ввода горизонтальных и вертикальных поправок для прицелов с высокой кратностью @@ -541,7 +541,7 @@ %1L %1L %1G - %1L + %1Sx %1L %1L %1L @@ -557,7 +557,7 @@ %1R %1R %1D - %1R + %1Dx %1R %1R %1R @@ -575,7 +575,7 @@ 水平限制 水平限制 水平制限 - Limite orrizontale + Limiti orizzontali Limit poziomy Лимит по горизонтали Limite Horizontal @@ -590,7 +590,7 @@ 垂直限制 垂直限制 垂直制限 - Limite verticale + Limiti verticali Limit pionowy Лимит по вертикали Limite Vertical diff --git a/addons/sitting/XEH_preInit.sqf b/addons/sitting/XEH_preInit.sqf index 4fc8d6e9d0..e626c67e76 100644 --- a/addons/sitting/XEH_preInit.sqf +++ b/addons/sitting/XEH_preInit.sqf @@ -6,7 +6,7 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" if (hasInterface) then { GVAR(initializedClasses) = []; diff --git a/addons/sitting/initSettings.sqf b/addons/sitting/initSettings.inc.sqf similarity index 100% rename from addons/sitting/initSettings.sqf rename to addons/sitting/initSettings.inc.sqf diff --git a/addons/slideshow/stringtable.xml b/addons/slideshow/stringtable.xml index d5d55b934e..358e3ed3a1 100644 --- a/addons/slideshow/stringtable.xml +++ b/addons/slideshow/stringtable.xml @@ -11,7 +11,7 @@ Слайд-шоу Prezentace Presentación de diapositivas - Mostra Diapositive + Presentazione Diapositive スライドショー 슬라이드 쇼 幻燈片 @@ -28,7 +28,7 @@ Этот модуль позволяет вам устроить слайд-шоу на различных объектах. Один модуль на один список изображений. Поддерживаются только объекты с hiddenSelection 0. Este módulo permite configurar una presentación de diapositivas en diferentes objetos. Un módulo por lista de imágenes. Sólo son soportados objetos con hiddenSelection 0. Tento modul umožňuje nastavit prezentaci na různé objekty. Jeden modul na seznam s obrázky. Podporované jsou pouze objekty s hiddenSelection 0. - Questo modulo ti permette di creare una presentazione con diapositive su vari oggetti. Un modulo per lista immagini. Solo oggetti con hiddenSelection 0 sono supportati. + Questo modulo ti permette di creare una presentazione con diapositive su vari oggetti. Un modulo per ogni lista immagini. Solo oggetti con hiddenSelection 0 sono supportati. さまざまなオブジェクトへスライドショーを設定することができます。1つのモジュールは各画像リストになっています。オブジェクトが hiddenSelection 0へ対応している必要があります。 이 모듈은 다른 물체에 대해 슬라이드 쇼를 놓을 수 있게 해줍니다. 한 모듈 당 한 이미지 목록만 가능합니다. 또한 hiddenSelection 0가 있는 물체만 지원됩니다. 此模塊可讓圖片以幻燈片的形式顯示在物件上,每個模塊都能設定一串幻燈片清單,被設定的物件不能有隱藏部位(hiddenSelection) @@ -61,7 +61,7 @@ Имена объектов (так же могут использоваться синхронизированные объекты), на которых будет отображаться слайд-шоу, разделенные запятыми. Los nombres de objetos (también pueden ser objetos sincronizados) de diapositivas se mostrarán en, separados por comas. Jména objektů (lze také použít synchronizované objekty) které se budou zobrazovat v prezentaci, oddělit čárkou pokud jich je více. - Nomi di oggetti (possono anche essere oggetti sincronizzati) che verranno usati per la presentazione di diapositive, separato da virgole se più di uno. + Nomi di oggetti (possono anche essere oggetti sincronizzati) che verranno usati per la presentazione di diapositive, separati da virgole se più di uno. スライドショーを表示するオブジェクト名 (オブジェクトとの同期も可)。複数ある場合はコンマで区切れます 슬라이드 쇼가 보여질 물체(동기화 되는 물체도 가능합니다) 명칭, 다수의 경우 쉼표로 구분합니다. 物件名稱 (也可使用同步線來設定),幻燈片將會顯示在該物件上,如有多個物件,請以逗號作區隔 @@ -127,8 +127,8 @@ Список изображений, которые будут использованы для слайд-шоу, разделенные запятыми, с полными путями в правильном формате (например, images\image.paa). Lista de imágenes que se utilizarán para la presentación de diapositivas, separadas por comas, con la ruta completa en formato correcto (ej. imágenes\image.paa). Seznam obrázků které budou použity v prezentaci, oddělené čárkami, s kompletní cestou ve správném formátu (např. image\image.paa). - Lista di immagini che verranno usate durante la presentazione, separati da virgole, con il formato completo del percorso (es. images\image.paa) - 完全なパスでスライドショーに使う画像一覧を入力してください。コンマで区別できます。(例: images\image.paa) + Lista di immagini che verranno usate durante la presentazione, separate da virgole, con percorso completo formattato correttamente (es. images\image.paa) + スライド ショーに使用される画像のリスト。完全パスで入力してください。コンマで区切ります。(例: images\image.paa) 슬라이드 쇼에 쓰일 사진목록입니다, 쉼표로 구분됩니다, 경로설정을 정확히 하십시요. (예: 사진\사진.ppa) 要做為幻燈片的圖片清單,每個圖片請已逗號區隔,並輸入完整路徑位址 (例如:images\image.paa) 要做为幻灯片的图片清单,每个图片请已逗号区隔,并输入完整路径位址(例如:images\image.paa) @@ -157,7 +157,7 @@ Lista dos nomes que serão usados para entradas de interação, separados por vírgulas, na ordem das imagens. Список имен, которые будут использованы при взаимодействии, разделенные запятыми, в порядке следования изображений. Lista de nombres que se utilizarán para las entradas de interacción, separados por comas, en el orden de las imágenes. - Lista di nomi che verranno usati per per le interazioni, separati da virgole, in ordine per immagini. + Lista di nomi che verranno usati per le interazioni, separati da virgole, nell'ordine delle immagini. Liste aller Namen, die für Interaktionseinträge genutzt werden. Mit Kommata getrennt, in Reihenfolge der Bilder. 画像を操作できるインタラクション エントリ名の一覧を入力してください。コンマで区切り複数を指定できます。 상호작용 메시지에 쓰일 명칭입니다, 쉼표로 구분합니다, 이미지의 순서입니다. @@ -184,9 +184,9 @@ Name that will be used for main interaction entry (to distinguish multiple slideshows). Default: "Slides" Name der für den Hauptinteraktionseintrag benutzt wird (um mehrere Diavorführungen voneinander zu trennen). Nazwa, która będzie użyta w głównym menu interakcji (w celu rozróżnienia różnych slajdów). Domyślnie: "Slides" - メイン インタラクション エントリで使われる名前を設定します。(複数のスライドショーを区別するため)。標準: "Slides" + メイン インタラクション エントリで使われる名前を設定します。(複数のスライドショーを区別するため)。 デフォルト: "Slides" Nom qui sera utilisé pour l'entrée d'interaction principale (pour distinguer plusieurs diaporamas). Valeur par défaut : "Slides". - Nome che sarà utilizzato per le principali interazioni (per distinguere le multiple diapositive). Predefinito: "Slides" + Nome che verrà utilizzato per le principali interazioni (per distinguere multiple diapositive). Predefinito: "Slides" 設定該幻燈片的標題名稱 (用來區分多個不同標題的幻燈片) 預設名稱: "幻燈片" 设定该幻灯片的标题名称(用来区分多个不同标题的幻灯片)预设名称:"幻灯片" 상위 상호작용 이름 (여러 개의 슬라이드 쇼를 구분하기 위해 사용됨) 기본: "Slides" @@ -206,7 +206,7 @@ Doba trvání snímku Durata Diapositiva Länge der Diavorführung pro Bild - スライドの持続時間 + スライドの継続時間 슬라이드 지속 시간 幻燈片顯示時間 幻灯片显示时间 @@ -220,9 +220,9 @@ Длительность каждого слайда. По умолчанию: 0 (автоматический переход отключен) Duración de cada diapositiva. Por defecto: 0 (Transiciones automáticas desactivadas) Doba trvání každého snímku. Výchozí: 0 (Automatické posouvání je zakázáno) - Durata di ogni diapositiva. Default: 0 (Transizioni Automatiche Disabilitate) + Durata di ogni diapositiva. Predefinito: 0 (Transizioni Automatiche Disabilitate) Länge der Diavorführung pro Bild. Standard: 0 (Automatischer Wechsel deaktiviert) - 各スライドの持続時間。標準:0 (自動的な切り替えは無効) + 各スライドの継続時間。 デフォルト: 0 (自動的な切り替えは無効) 매 슬라이드의 지속 시간. 기본설정: 0 (자동 전환 비활성화) 每張幻燈片顯示的時間。 預設:0 (自動換圖已禁用) 每张幻灯片显示的时间。 预设:0(自动换图已禁用) @@ -233,10 +233,12 @@ 텍스쳐 선택 텍스쳐 선택 Auswahl der Textur + Selezione della texture Wybór Tekstury テクスチャの選択 Выбор текстуры Selección de texturas + Sélection de texture Object texture selection. Default: 0 @@ -244,10 +246,12 @@ 개체 텍스처 선택(기본값: 0) 물체의 텍스쳐를 선택합니다. 기본: 0 Auswahl der Objekttextur. Standard: 0 + Selezione della texture dell'oggetto. Predefinito: 0 Wybór tekstury obiektu. Domyślnie: 0 - オブジェクトテクスチャの選択。デフォルト: 0 + オブジェクトテクスチャの選択。 デフォルト: 0 Выбор текстуры объекта. По умолчанию: 0 Selección de textura de objeto. Defecto: 0 + Sélection de la texture de l'objet. Valeur par défaut : 0 Slides diff --git a/addons/smallarms/stringtable.xml b/addons/smallarms/stringtable.xml index 71a1ecb615..c10248ca16 100644 --- a/addons/smallarms/stringtable.xml +++ b/addons/smallarms/stringtable.xml @@ -6,7 +6,7 @@ 9 mm 17 發彈匣 Mag. 17 balles 9 mm Cargador de 17 proyectiles de 9 mm - Caricatore 17 colpi 9 mm + Caricatore 17cp 9mm 17-nab. mag. 9 mm Магазин, 17 патр. 9 мм 17-Schuss-9mm-Magazin @@ -23,6 +23,7 @@ Магазин, 25 патр. .45 ACP Mag. 25 balles .45 ACP Cargador de 25 proyectiles de .45 ACP + Caricatore 25cp .45 ACP 25-Schuss-.45-ACP-Magazin .45 ACP, 25ks zásobník .45 ACP 25 Merm. Şarjör @@ -36,10 +37,11 @@ Магазин, 25 патр. .45 ACP (зелёные трассеры) Mag. 25 traçantes (vertes) .45 ACP Cargador de 25 balas trazadoras (verde) de .45 ACP + Caricatore 25cp .45 ACP Traccianti (Verdi) 25-Schuss-.45-ACP-Vermin-Magazin (Leuchtspur Grün) .45 ACP, 25ks zásobník stopovky (zelené) .45 ACP 25 Merm. İzli (Yeşil) Şarjör - .45 ACP 25Rnd 曳光弾 (緑) マガジン + .45 ACP 25Rnd トレーサー (緑) マガジン .45 ACP 25发 弹匣(曳光,绿) .45 ACP 25발 예광탄 (초록) 탄창 @@ -49,10 +51,11 @@ Магазин, 25 патр. .45 ACP (красные трассеры) Mag. 25 traçantes (rouges) .45 ACP Cargador de 25 balas trazadoras (rojo) de .45 ACP + Caricatore 25cp .45 ACP Traccianti (Rossi) 25-Schuss-.45-ACP-Vermin-Magazin (Leuchtspur Rot) .45 ACP, 25ks zásobník stopovky (červené) .45 ACP 25 Merm. İzli (Kırmızı) Şarjör - .45 ACP 25Rnd 曳光弾 (赤) マガジン + .45 ACP 25Rnd トレーサー (赤) マガジン .45 ACP 25发 弹匣(曳光,红) .45 ACP 25발 예광탄 (빨강) 탄창 @@ -62,10 +65,11 @@ Магазин, 25 патр. .45 ACP (жёлтые трассеры) Mag. 25 traçantes (jaunes) .45 ACP Cargador de 25 balas trazadoras (amarillo) de .45 ACP + Caricatore 25cp .45 ACP Traccianti (Gialli) 25-Schuss-.45-ACP-Vermin-Magazin (Nachlade-Leuchtspur Gelb) .45 ACP, 25ks zásobník stopovky (žluté) .45 ACP 25 Merm. İzli (Sarı) Şarjör - .45 ACP 25Rnd 曳光弾 (黄) マガジン + .45 ACP 25Rnd トレーサー (黄) マガジン .45 ACP 25发 弹匣(曳光,黄) .45 ACP 25발 예광탄 (노랑) 탄창 @@ -75,6 +79,7 @@ Магазин, 8 патр. .45 ACP Mag. 8 balles .45 ACP Cargador de 8 proyectiles de .45 ACP + Caricatore 8cp .45 ACP 8-Schuss-.45-ACP-Magazin .45 ACP, 8ks zásobník .45 ACP 8 Merm. Şarjör @@ -88,6 +93,7 @@ Магазин, 15 патр. .45 ACP Mag. 15 balles .45 ACP Cargador de 15 proyectiles de .45 ACP + Caricatore 15cp .45 ACP 15-Schuss-.45-ACP-Magazin .45 ACP, 15ks zásobník .45 ACP 15 Merm. Şarjör diff --git a/addons/spectator/XEH_preInit.sqf b/addons/spectator/XEH_preInit.sqf index 1e3d019177..7ef6aadb6f 100644 --- a/addons/spectator/XEH_preInit.sqf +++ b/addons/spectator/XEH_preInit.sqf @@ -6,7 +6,7 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" // Used by public functions GVAR(availableModes) = [MODE_FREE, MODE_FPS, MODE_FOLLOW]; diff --git a/addons/spectator/initSettings.sqf b/addons/spectator/initSettings.inc.sqf similarity index 100% rename from addons/spectator/initSettings.sqf rename to addons/spectator/initSettings.inc.sqf diff --git a/addons/spectator/stringtable.xml b/addons/spectator/stringtable.xml index 54444c3b16..4bd6817591 100644 --- a/addons/spectator/stringtable.xml +++ b/addons/spectator/stringtable.xml @@ -7,7 +7,7 @@ Spettatore 旁觀者 旁观者 - スペクテイター + 観戦者 관전자 Spectateur Obserwator @@ -20,8 +20,8 @@ ACE Spectator ACE Zuschauer - ACE スペクテイター - Spettatore ACE + ACE 観戦者 + ACE Spettatore ACE Spectateur ACE 旁观者 ACE 旁觀者 @@ -41,9 +41,9 @@ Определяют, как система спектатора будет функционировать по умолчанию. Configurar cómo el sistema de espectador funcionará por defecto. Konfigurovat výchozí nastavení pozorovatele - Configura come il sistema spettatore si comporterà di default. + Configura come il sistema spettatore si comporterà di base. Configure le fonctionnement par défaut du système spectateur. - スペクテイター システムが標準でどのように動作するか設定できます。 + 観戦者システムが標準でどのように動作するか設定できます。 어떻게 관전자 시스템이 기본적으로 작동되는지 설정합니다 设定旁观者系统相关配置 設定旁觀者系統相關配置 @@ -52,7 +52,7 @@ AI Enabled KI Sichtbarkeit AIにも有効化 - AI Abilitate + IA Abilitate 可觀察AI 可观察 AI AI 활성 @@ -67,15 +67,15 @@ Make AI viewable in spectator Macht KI-Einheiten den Zuschauern sichtbar - スペクテイターでAI視点を可能に - Permette la visibilità delle AI in spettatore + 観戦者でAI視点を可能に + Rende le IA visibili come spettatore 開啟此功能後可在觀察者模式下觀察AI單位 开启此功能后可在观察者模式下观察 AI 单位。 관전자가 AI를 관전할 수 있습니다. Rend les unités IA visibles en spectateur. Spraw, aby SI było widoczne jako obserwator Сделать ИИ видимыми в режиме зрителя - Permite que IA seja visivel no espectador + Permite que IA seja visível no espectador Umožňuje sledovat AI v módu diváka Permitir ver a la IA en espectador @@ -83,11 +83,11 @@ Camera modes Kameramodus Tryby kamery - Modos de camera + Modos de câmera Режимы камеры Módy kamery Modos de cámara - Modalità camera + Modalità Videocamera Modes de caméra カメラ モード 카메라 모드 @@ -99,14 +99,14 @@ Camera modes that can be used Verwendbare Kameramodi Tryby kamery, jakie mogą być używane. - Modos de camera que podem ser utilizados + Modos de câmera que podem ser utilizados Режимы камеры, которые могут быть использованы Modos de la cámara que se pueden utilizar. Módy kamery které mohou být použity. - Modalità che la camera può utilizzare. + Modalità utilizzabili dalla videocamera spettatore. Modes de caméra pouvant être utilisés. カメラ モードを設定できます。 - 사용할 수 있는 카메라 모드들 입니다 + 사용할 수 있는 카메라 모드들입니다 设定可使用的摄影机模式 設定可使用的攝影機模式 @@ -169,7 +169,7 @@ Modalità visuali che possono essere usate. Modes de visualisation pouvant être utilisés. ビジョン モードを設定できます。 - 사용할 수 있는 시야 모드들 입니다 + 사용할 수 있는 시야 모드들입니다 设定可使用的视觉模式 設定可使用的視覺模式 @@ -228,7 +228,7 @@ A distância máxima que a câmera de acompanhamento pode estar do alvo. 攝影機能追隨目標的最大距離 摄影机能追随目标的最大距离 - Distanza massima che la telecamera seguente può percorrere dall'obiettivo + Distanza massima che la telecamera seguente può allontanarsi dall'obiettivo Distance maximale à laquelle la caméra de suivi peut se trouver par rapport à la cible. Maximální vzdálenost při které může kamera sledovat cíl Maksymalna odległość na jakiej kamera może podążać od celu @@ -288,7 +288,7 @@ Night Nacht Noc - Visão Norturna + Visão Noturna Ночное Noční Nocturna @@ -302,13 +302,13 @@ Thermal - Wärme + Wärmebild Termo Térmica Тепловизор Termální Térmica - Termico + Termica Thermique 熱源画像 열상 @@ -400,7 +400,7 @@ Slow Speed Langsam - 速度低下 + 速度を下げる Bassa Velocità 慢速度 慢速度 diff --git a/addons/switchunits/XEH_preInit.sqf b/addons/switchunits/XEH_preInit.sqf index 9361d05015..894773534a 100644 --- a/addons/switchunits/XEH_preInit.sqf +++ b/addons/switchunits/XEH_preInit.sqf @@ -6,6 +6,6 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" ADDON = true; diff --git a/addons/switchunits/initSettings.sqf b/addons/switchunits/initSettings.inc.sqf similarity index 100% rename from addons/switchunits/initSettings.sqf rename to addons/switchunits/initSettings.inc.sqf diff --git a/addons/switchunits/stringtable.xml b/addons/switchunits/stringtable.xml index a9172cfbed..c772b40867 100644 --- a/addons/switchunits/stringtable.xml +++ b/addons/switchunits/stringtable.xml @@ -6,7 +6,7 @@ Cambia Unità 切換單位 单位切换 - ユニット切り替え + ユニットを切り替え 유닛 변경 Einheitenwechsel Przełącz Jednostki @@ -28,7 +28,7 @@ Egység átváltva Unità cambiata Trocado de unidade - ユニットを切り替え + 切り替えたユニット 切换单位 切換單位 유닛 변경됨 @@ -69,6 +69,7 @@ Enable switch side Ermögliche Seitenwechsel + Permetti cambio fazione Permettre le changement de camp 啟用陣營切換 启用阵营切换 @@ -91,7 +92,7 @@ Átváltás BLUFOR-ra? На синих? Cambia per BLUFOR? - 同盟軍へ切り替え許可 + 同盟軍へ切り替える? 切换至蓝方? 切換至藍方? 청군으로 변경합니까? @@ -108,7 +109,7 @@ Nyugat-fakciós egységekre való váltás engedélyezése? Разрешить переключаться на синих юнитов? Consenti passaggio ad unità BLUFOR? - 同盟軍側ユニットへ切り替えられるようにします。 + 同盟軍ユニットへの切り替えを許可しますか? 允许切换至蓝方? 允許切換至藍方? 청군 인원으로 변경하는 것을 허락합니까? @@ -124,7 +125,7 @@ Átváltás OPFOR-ra? На красных? Cambia per OPFOR? - OPFOR軍側へ切り替え許可 + OPFOR軍へ切り替える? 切换至红方? 切換至紅方? 대항군으로 변경합니까? @@ -141,7 +142,7 @@ Kelet-fakciós egységekre való váltás engedélyezése? Разрешить переключаться на красных юнитов? Consenti passaggio ad unità OPFOR? - OPFOR軍側ユニットへ切り替えられるようにします。 + OPFOR軍ユニットへの切り替えを許可しますか? 允许切换至红方? 允許切換至紅方? 대항군 인원으로 변경하는 것을 허락합니까? @@ -152,12 +153,12 @@ ¿Cambiar a Independiente? Nach INDFOR wechseln? Přesunout k INDFOR? - Trocar para Indenpendente + Trocar para Independente Passage en Indépendant Átváltás INDFOR-ra? На независимых? Cambia per INDFOR? - 独立軍へ切り替え許可 + 独立軍へ切り替える? 切换至独立方? 切換至獨立方? 무소속군으로 전환합니까? @@ -169,12 +170,12 @@ ¿Permitir cambios a unidades Independientes? Erlaube das Wechseln zu INDFOR-Einheiten? Povolit přesun k INDFOR? - Permitir troca de unidades para o Indenpendente? + Permitir troca de unidades para o Independente? Autorise le passage en unité Indépendante. Független egységekre való váltás engedélyezése? Разрешить переключаться на независимых юнитов? Consenti passaggio ad unità INDFOR? - 独立軍側ユニットへ切り替えられるようにします。 + 独立軍ユニットへの切り替えを許可しますか? 允许切换至独立方? 允許切換至獨立方? 무소속군 인원으로 변경하는 것을 허락합니까? @@ -190,7 +191,7 @@ Átváltás civilre? На гражданских? Cambia per Civili? - 市民へ切り替え許可 + 市民へ切り替える? 민간인으로 전환합니까? 切换至平民方? 切換至平民方? @@ -207,7 +208,7 @@ Civil egységekre való váltás engedélyezése? Разрешить переключаться на гражданских юнитов? Consenti passaggio ad unità civili? - 市民側ユニットへ切り替えられるようにします。 + 市民ユニットへの切り替えを許可しますか? 민간인으로 변경하는걸 허가합니까? 允许切换至平民方? 允許切換至平民方? @@ -234,12 +235,12 @@ Habilita una zona segura alrededor de las unidades enemigas. Los jugadores no pueden cambiar de unidad dentro de la zona segura. Aktiviere eine Sicherheitszone um feindliche Einheiten? Spieler können nicht zu Einheiten in der Sicherheitszone wechseln. Povolit bezpečnou zónu kolem nepřátelských jednotek? Hráči nemohou změnit strany/jednotky uvnitř bezpečné zóny. - Habilitar uma zona segur ao redor das unidades inimigas? Jogadores não conseguirão trocar para unidades dentro dessa zona segura. + Habilitar uma zona segura ao redor das unidades inimigas? Jogadores não conseguirão trocar para unidades dentro dessa zona segura. Active une zone de sécurité autour des unités ennemies. Les joueurs ne peuvent pas changer de camp à l'intérieur de cette zone. Engedélyezve legyen-e egy biztonságos zóna az ellenségek körül? A játékosok nem tudnak a biztonságos zónán belüli egységekre váltani. Включить безопасную зону вокруг вражеских юнитов? Игроки не могут переключаться на юнитов, находящихся в безопасной зоне. Abilita una zona sicura attorno ad unità nemiche? I giocatori non possono cambiare ad unità dentro la zona sicura. - 敵ユニットから逃れる安全地帯を生成できます。プレイヤーは安全地帯内のユニットへ切り替えできません。 + 敵ユニットの周囲に安全地帯を確保しますか? プレイヤーは安全地帯内のユニットに切り替えることはできません。 적 주위로 안전지대를 활성화합니까? 안전지대 내에서는 플레이어가 인원 전환을 할 수 없습니다. 启用敌方周围安全地带? 玩家不能切换到安全区内的单位 啟用敵方周圍安全地帶? 玩家不能切換到安全區內的單位 @@ -271,7 +272,7 @@ A biztonságos zóna más csapatból lévő játékosok körül. Alapértelmezett: 100 Радиус безопасной зоны вокруг ироков из противоположной команды. По умолчанию: 100 La zona sicura attorno ai giocatori di un team diverso. Default: 100 - 別のチームへのプレイヤーの周囲にある安全地帯の範囲。標準: 100 + 別のチームのプレイヤーの周囲にある安全地帯の範囲。 デフォルト: 100 다른 진영으로 부터의 플레이어 안전 지대. 기본설정: 100 安全区的范围。预设值:100 安全區的範圍。預設值:100 @@ -286,7 +287,7 @@ Ce module vous permet de changer de camp en cours de partie. Questo modulo ti permette di cambiare lato durante la partita. El módulo permite a las unidades cambiar de bando durante el juego. - モジュールはゲームにおいて、陣営の切り替えを有効にします。 + モジュールを使用すると、ゲーム中に陣営を切り替えることが出来るようになります。 이 모듈은 당신을 게임 중에 진영을 바꿀 수 있게 해줍니다. 此模块允许你在游戏中切换至另一方 此模塊允許你在遊戲中切換至另一方 diff --git a/addons/tacticalladder/stringtable.xml b/addons/tacticalladder/stringtable.xml index 8cd2f5266d..a7d33865f9 100644 --- a/addons/tacticalladder/stringtable.xml +++ b/addons/tacticalladder/stringtable.xml @@ -56,7 +56,7 @@ Extend Ausfahren Rozłóż - Extender + Estender Разложить Prodloužit Estendi @@ -72,7 +72,7 @@ +Ctrl tilt +Strg kippen +Ctrl nachyl - +Ctrl tilt + +Ctrl inclinar +Ctrl наклонить +Ctrl naklonit +Ctrl inclinar diff --git a/addons/tagging/CfgEden.hpp b/addons/tagging/CfgEden.hpp index fbb40ab7a9..ac9f5e25da 100644 --- a/addons/tagging/CfgEden.hpp +++ b/addons/tagging/CfgEden.hpp @@ -8,7 +8,7 @@ class Cfg3DEN { control = "Edit"; displayName = CSTRING(stencilVehicle); tooltip = CSTRING(stencilVehicle_tooltip); - expression = QUOTE( [ARR_2(_this,_value)] call FUNC(stencilVehicle); ); + expression = QUOTE([ARR_2(_this,_value)] call FUNC(stencilVehicle)); condition = "objectVehicle"; defaultValue = "''"; typeName = "STRING"; diff --git a/addons/tagging/XEH_preInit.sqf b/addons/tagging/XEH_preInit.sqf index 34b4928b2a..d368b7c1c6 100644 --- a/addons/tagging/XEH_preInit.sqf +++ b/addons/tagging/XEH_preInit.sqf @@ -9,6 +9,6 @@ PREP_RECOMPILE_END; GVAR(cachedTags) = []; GVAR(itemActions) = createHashMap; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" ADDON = true; diff --git a/addons/tagging/initSettings.sqf b/addons/tagging/initSettings.inc.sqf similarity index 100% rename from addons/tagging/initSettings.sqf rename to addons/tagging/initSettings.inc.sqf diff --git a/addons/tagging/stringtable.xml b/addons/tagging/stringtable.xml index b6090e983d..d64fb5ef95 100644 --- a/addons/tagging/stringtable.xml +++ b/addons/tagging/stringtable.xml @@ -25,7 +25,7 @@ Konfiguriert, wie das Markieren standardmäßig funktioniert. 태그 시스템의 기본사항을 설정합니다. Configure le fonctionnement par défaut du système de marquage. - Configura quanto il sistema di marcamento agirà da se. + Configura come il sistema di marcamento agirà in maniera predefinita. 定义喷漆系统预设设定 定義噴漆系統預設設定 Configura como o sistema de Marcação funcionará como padrão. (Tagging) @@ -40,7 +40,7 @@ Schnelle Markierung (Spraydose) 스프레이 페인트 - 빠른 태그 Peinture en spray - Marquage rapide - Marcamento Rapido + Marcamento Spray - Rapido 快速喷漆 快速噴漆 Lata de Tinta - Marcação Rápida @@ -51,12 +51,12 @@ Action performed on main tag interaction point. Действие, выполняемое при выборе главного пункта меню маркировки. - メインのインタラクションポイント(タグ)を選択した際に行われる動作。 + メインのインタラクションポイント(タグ)を選択した際に行われるアクション。 Akcja wykonywana na głównym punkcie interakcji tagu. Aktion, die am Haupt-Interaktionspunkt ausgeführt werden soll. 상호작용 시 표시할 낙서를 고릅니다. Type de marquage à appliquer sur le point visé. - Azione eseguita sul punto di interazione dei tag principali. + Azione eseguita sul punto di interazione del tag principale. 直接喷漆在互动菜单瞄准的点上。 直接噴漆在互動選單瞄準的點上。 Ação executada no ponto principal de marcação @@ -87,7 +87,7 @@ Zufällig X 무작위 X X aléatoire - Random X + Randomico X 随机X标记 隨機X標記 Aleatório X @@ -103,7 +103,7 @@ Zufällig 무작위 Aléatoire - Random + Randomico 随机 隨機 Aleatório @@ -151,6 +151,8 @@ Стрелка вверх Flecha Arriba Pfeil Hoch + Freccia in alto + Flèche du haut Down Arrow @@ -160,6 +162,8 @@ Стрелка вниз Flecha Abajo Pfeil Runter + Freccia in basso + Flèche du bas Left Arrow @@ -169,6 +173,8 @@ Стрелка влево Flecha Izquierda Pfeil Links + Freccia a sinistra + Flèche gauche Right Arrow @@ -178,6 +184,8 @@ Стрелка вправо Flecha Derecha Pfeil Rechts + Freccia a destra + Flèche droite Circle @@ -187,6 +195,8 @@ Круг Círculo Kreis + Cerchio + Cercle Cross @@ -196,15 +206,19 @@ Перекрестие Cruz Kreuz + Croce + Croix Diamond - ひし形 + 菱形 Diament 마름모 Алмаз Diamante Diamant + Diamante + Losange Square @@ -214,6 +228,8 @@ Квадрат Cuadrado Quadrat + Quadrato + Carré Filled Square @@ -223,6 +239,8 @@ Заполненный Квадрат Cuadrado Lleno Gefülltes Quadrat + Quadrato pieno + Carré rempli Triangle @@ -232,6 +250,8 @@ Треугольник Triángulo Dreieck + Triangolo + Triangle Triangle Inverted @@ -241,6 +261,8 @@ Обратный треугольник Triángulo invertido Invertiertes Dreieck + Triangolo capovolto + Triangle inversé Spray Paint (Black) @@ -344,7 +366,7 @@ Lata de pintura en aerosol para marcar. Farba w sprayu, służy do oznakowywania terenu. Une bombe de peinture en spray pour tagger les murs. - Una bomboletta di spay per contrassegnare i muri. + Una bomboletta spay per applicare marker sui muri. Plechovka se sprejem k vytváření značek. Uma lata de tinta spray para marcar paredes. Балончик спрея для рисования маркеров на стенах. @@ -358,14 +380,18 @@ 車両IDマーキング Oznaczenie identyfikacyjne pojazdu Fahrzeug ID Markierung + Marcatore identificativo sui veicoli 차량 ID 마킹 + Marquage ID des véhicules Replaces clan tag with stenciled text 部隊タグをステンシルテキストに置き換える Zastępuje tag klanu tekstem z szablonu Ersetzt das Clan-Tag durch Schablonentext + Sostituisce l'icona del clan con testo in stampatello 클랜 태그를 스텐실 텍스트로 바꿉니다. + Remplace le tag du clan par un texte au pochoir diff --git a/addons/towing/CfgVehicles.hpp b/addons/towing/CfgVehicles.hpp index f74cf5d300..df791d95d3 100644 --- a/addons/towing/CfgVehicles.hpp +++ b/addons/towing/CfgVehicles.hpp @@ -11,43 +11,43 @@ class ACE_Actions {\ icon = "";\ class GVAR(startTow3) {\ displayName = CSTRING(start3);\ - condition = QUOTE(([ARR_2(_player,_target)] call FUNC(canStartTow)) && [ARR_2(_player, 'ACE_rope3')] call EFUNC(common,hasItem));\ + condition = QUOTE(([ARR_2(_player,_target)] call FUNC(canStartTow)) && [ARR_2(_player,'ACE_rope3')] call EFUNC(common,hasItem));\ statement = QUOTE([ARR_3(_player,_target,'ACE_rope3')] call FUNC(startTow));\ exceptions[] = { INTERACTION_EXCEPTIONS };\ };\ class GVAR(startTow6) {\ displayName = CSTRING(start6);\ - condition = QUOTE(([ARR_2(_player,_target)] call FUNC(canStartTow)) && [ARR_2(_player, 'ACE_rope6')] call EFUNC(common,hasItem));\ + condition = QUOTE(([ARR_2(_player,_target)] call FUNC(canStartTow)) && [ARR_2(_player,'ACE_rope6')] call EFUNC(common,hasItem));\ statement = QUOTE([ARR_3(_player,_target,'ACE_rope6')] call FUNC(startTow));\ exceptions[] = { INTERACTION_EXCEPTIONS };\ };\ class GVAR(startTow12) {\ displayName = CSTRING(start12);\ - condition = QUOTE(([ARR_2(_player,_target)] call FUNC(canStartTow)) && [ARR_2(_player, 'ACE_rope12')] call EFUNC(common,hasItem));\ + condition = QUOTE(([ARR_2(_player,_target)] call FUNC(canStartTow)) && [ARR_2(_player,'ACE_rope12')] call EFUNC(common,hasItem));\ statement = QUOTE([ARR_3(_player,_target,'ACE_rope12')] call FUNC(startTow));\ exceptions[] = { INTERACTION_EXCEPTIONS };\ };\ class GVAR(startTow15) {\ displayName = CSTRING(start15);\ - condition = QUOTE(([ARR_2(_player,_target)] call FUNC(canStartTow)) && [ARR_2(_player, 'ACE_rope15')] call EFUNC(common,hasItem));\ + condition = QUOTE(([ARR_2(_player,_target)] call FUNC(canStartTow)) && [ARR_2(_player,'ACE_rope15')] call EFUNC(common,hasItem));\ statement = QUOTE([ARR_3(_player,_target,'ACE_rope15')] call FUNC(startTow));\ exceptions[] = { INTERACTION_EXCEPTIONS };\ };\ class GVAR(startTow18) {\ displayName = CSTRING(start18);\ - condition = QUOTE(([ARR_2(_player,_target)] call FUNC(canStartTow)) && [ARR_2(_player, 'ACE_rope18')] call EFUNC(common,hasItem));\ + condition = QUOTE(([ARR_2(_player,_target)] call FUNC(canStartTow)) && [ARR_2(_player,'ACE_rope18')] call EFUNC(common,hasItem));\ statement = QUOTE([ARR_3(_player,_target,'ACE_rope18')] call FUNC(startTow));\ exceptions[] = { INTERACTION_EXCEPTIONS };\ };\ class GVAR(startTow27) {\ displayName = CSTRING(start27);\ - condition = QUOTE(([ARR_2(_player,_target)] call FUNC(canStartTow)) && [ARR_2(_player, 'ACE_rope27')] call EFUNC(common,hasItem));\ + condition = QUOTE(([ARR_2(_player,_target)] call FUNC(canStartTow)) && [ARR_2(_player,'ACE_rope27')] call EFUNC(common,hasItem));\ statement = QUOTE([ARR_3(_player,_target,'ACE_rope27')] call FUNC(startTow));\ exceptions[] = { INTERACTION_EXCEPTIONS };\ };\ class GVAR(startTow36) {\ displayName = CSTRING(start36);\ - condition = QUOTE(([ARR_2(_player,_target)] call FUNC(canStartTow)) && [ARR_2(_player, 'ACE_rope36')] call EFUNC(common,hasItem));\ + condition = QUOTE(([ARR_2(_player,_target)] call FUNC(canStartTow)) && [ARR_2(_player,'ACE_rope36')] call EFUNC(common,hasItem));\ statement = QUOTE([ARR_3(_player,_target,'ACE_rope36')] call FUNC(startTow));\ exceptions[] = { INTERACTION_EXCEPTIONS };\ };\ @@ -77,7 +77,7 @@ class CfgVehicles { class ACE_MainActions { displayName = CSTRING(detach); condition = "true"; - statement = QUOTE(private _parent = _target getVariable [ARR_2(QQGVAR(parent), objNull)]; private _child = _target getVariable [ARR_2(QQGVAR(child), objNull)]; [ARR_3(_player,_parent,_child)] call FUNC(detach)); + statement = QUOTE(private _parent = _target getVariable [ARR_2(QQGVAR(parent),objNull)]; private _child = _target getVariable [ARR_2(QQGVAR(child),objNull)]; [ARR_3(_player,_parent,_child)] call FUNC(detach)); distance = 2; }; }; diff --git a/addons/towing/XEH_postInit.sqf b/addons/towing/XEH_postInit.sqf index 455532f889..187af19244 100644 --- a/addons/towing/XEH_postInit.sqf +++ b/addons/towing/XEH_postInit.sqf @@ -3,6 +3,7 @@ ["MouseButtonUp", LINKFUNC(onMouseButtonUp)] call CBA_fnc_addDisplayHandler; GVAR(mouseLeft) = false; GVAR(mouseRight) = false; +GVAR(blockFireEHID) = -1; GVAR(cancel) = false; GVAR(canAttach) = false; @@ -11,4 +12,3 @@ GVAR(canAttach) = false; params ["_parent", "_child"]; _child setTowParent _parent; }] call CBA_fnc_addEventHandler; - diff --git a/addons/towing/XEH_preInit.sqf b/addons/towing/XEH_preInit.sqf index 9361d05015..894773534a 100644 --- a/addons/towing/XEH_preInit.sqf +++ b/addons/towing/XEH_preInit.sqf @@ -6,6 +6,6 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" ADDON = true; diff --git a/addons/towing/functions/fnc_startTow.sqf b/addons/towing/functions/fnc_startTow.sqf index 57cb38c416..fa70d91cff 100644 --- a/addons/towing/functions/fnc_startTow.sqf +++ b/addons/towing/functions/fnc_startTow.sqf @@ -28,8 +28,9 @@ if (_ropeLength == 0) then { _unit removeItem _ropeClass; +GVAR(isSwimming) = _unit call EFUNC(common,isSwimming); +GVAR(putWeaponAwayNextFrame) = false; GVAR(cancel) = false; GVAR(canAttach) = false; [LINKFUNC(towStateMachinePFH), 0, [TOW_STATE_ATTACH_PARENT, _unit, _target, objNull, _ropeLength, _ropeClass]] call CBA_fnc_addPerFrameHandler; [QGVAR(ropeDeployed), [_unit, _target, _ropeClass]] call CBA_fnc_localEvent; - diff --git a/addons/towing/functions/fnc_towStateMachinePFH.sqf b/addons/towing/functions/fnc_towStateMachinePFH.sqf index aa211c7a8c..0adcce76e6 100644 --- a/addons/towing/functions/fnc_towStateMachinePFH.sqf +++ b/addons/towing/functions/fnc_towStateMachinePFH.sqf @@ -18,11 +18,38 @@ params ["_args", "_handle"]; _args params ["_state", "_unit", "_parent", "_rope", "_length", "_ropeClass"]; +private _wasSwimming = GVAR(isSwimming); +GVAR(isSwimming) = _unit call EFUNC(common,isSwimming); + +// skip this frame to wait for weapon in hands +if (_wasSwimming && {!GVAR(isSwimming)}) exitWith {GVAR(putWeaponAwayNextFrame) = true;}; +// move weapon to back in next frame +if (GVAR(putWeaponAwayNextFrame)) then { + if (currentWeapon _unit isNotEqualTo "") then {[_unit] call EFUNC(weaponselect,putWeaponAway)}; + GVAR(putWeaponAwayNextFrame) = false; +}; + +// block fire when swimming in wetsuit with weapon +if (GVAR(isSwimming) && {currentWeapon _unit isNotEqualTo ""}) then { + if (GVAR(blockFireEHID) == -1) then { + GVAR(blockFireEHID) = [_unit, "DefaultAction", {true}, {}] call EFUNC(common,addActionEventHandler); + }; +} else { + if (GVAR(blockFireEHID) != -1) then { + [_unit, "DefaultAction", GVAR(blockFireEHID)] call EFUNC(common,removeActionEventHandler); + GVAR(blockFireEHID) = -1; + }; +}; + private _exitCondition = !( (alive GVAR(attachHelper)) && { alive _parent } && { alive _unit } && - { "" isEqualTo currentWeapon _unit || { _unit call EFUNC(common,isSwimming) }} && + { + currentWeapon _unit isEqualTo "" + || {_unit call EFUNC(common,isSwimming)} // swimming in wetsuit forces weapon in hands + || {getPosASLW _unit select 2 < -1.5} // walking-to-swimming animation in wetsuit lasts for 3 seconds + } && { [_unit, objNull, [INTERACTION_EXCEPTIONS]] call EFUNC(common,canInteractWith) } && { "unconscious" isNotEqualTo toLower animationState _unit } && { !(_unit getVariable ["ACE_isUnconscious", false]) } && @@ -149,6 +176,9 @@ switch (_state) do { [_handle] call CBA_fnc_removePerFrameHandler; _unit setVariable [QGVAR(hint), []]; call EFUNC(interaction,hideMouseHint); + if (GVAR(blockFireEHID) != -1) then { + [_unit, "DefaultAction", GVAR(blockFireEHID)] call EFUNC(common,removeActionEventHandler); + GVAR(blockFireEHID) = -1; + }; }; }; - diff --git a/addons/towing/initSettings.sqf b/addons/towing/initSettings.inc.sqf similarity index 92% rename from addons/towing/initSettings.sqf rename to addons/towing/initSettings.inc.sqf index 8361dccccd..03d20781cb 100644 --- a/addons/towing/initSettings.sqf +++ b/addons/towing/initSettings.inc.sqf @@ -1,7 +1,7 @@ [ QGVAR(addRopeToVehicleInventory), "CHECKBOX", LSTRING(Setting_addRopeToVehicleInventory_DisplayName), - LELSTRING(OptionsMenu,CategoryLogistics), + ELSTRING(main,Category_Logistics), true, true, { diff --git a/addons/towing/stringtable.xml b/addons/towing/stringtable.xml index 4dd29ac78d..949d36dd48 100644 --- a/addons/towing/stringtable.xml +++ b/addons/towing/stringtable.xml @@ -5,6 +5,7 @@ Towing けん引 Remorquage + Traino Буксирование Abschleppen Holowanie @@ -16,6 +17,7 @@ Attach Tow Rope けん引ロープを取り付け Attacher la corde de remorquage + Attacca la corda di traino Прикрепить буксировочный канат Abschleppseil befestigen Przypnij linkę holowniczą @@ -27,6 +29,7 @@ Attaching Cancelled 取り付けを中止しました Attachage annulé + Attaccamento interrotto Прикрепление отменено Befestigen Abgebrochen Przyczepianie anulowane @@ -38,6 +41,7 @@ Attach Tow Rope (3.2m) けん引ロープ (3.2m) を取り付け Attacher la corde (3,2 m) + Attacca corda di traino (3,2m) Прикрепить буксировочный канат (3.2м) Befestige Seil (3.2m) Przypnij linkę holowniczą (3,2m) @@ -49,6 +53,7 @@ Attach Tow Rope (6.2m) けん引ロープ (6.2m) を取り付け Attacher la corde (6,2 m) + Attacca corda di traino (6,2m) Прикрепить буксировочный канат (6.2м) Befestige Seil (6.2m) Przypnij linkę holowniczą (6,2m) @@ -60,6 +65,7 @@ Attach Tow Rope (12.2m) けん引ロープ (12.2m) を取り付け Attacher la corde (12,2 m) + Attacca corda di traino (12,2m) Прикрепить буксировочный канат (12.2м) Befestige Seil (12.2m) Przypnij linkę holowniczą (12,2m) @@ -71,6 +77,7 @@ Attach Tow Rope (15.2m) けん引ロープ (15.2m) を取り付け Attacher la corde (15,2 m) + Attacca corda di traino (15,2m) Прикрепить буксировочный канат (15.2м) Befestige Seil (15.2m) Przypnij linkę holowniczą (15,2m) @@ -82,6 +89,7 @@ Attach Tow Rope (18.3m) けん引ロープ (18.3m) を取り付け Attacher la corde (18,3 m) + Attacca corda di traino (18,3m) Прикрепить буксировочный канат (18.3м) Befestige Seil (18.3m) Przypnij linkę holowniczą (18,3m) @@ -93,6 +101,7 @@ Attach Tow Rope (27.4m) けん引ロープ (27.4m) を取り付け Attacher la corde (27,4 m) + Attacca corda di traino (27,4m) Прикрепить буксировочный канат (27.4м) Befestige Seil (27.4m) Przypnij linkę holowniczą (27,4m) @@ -104,6 +113,7 @@ Attach Tow Rope (36.6m) けん引ロープ (36.6m) を取り付け Attacher la corde (36,6 m) + Attacca corda di traino (36,6m) Прикрепить буксировочный канат (36.6м) Befestige Seil (36.6m) Przypnij linkę holowniczą (36,6m) @@ -115,6 +125,7 @@ Detach Tow Rope けん引ロープを外す Détacher la corde + Stacca corda di traino Отцепить буксировочный канат Entferne Abschleppseil Odepnij linkę holowniczą @@ -126,10 +137,12 @@ Add Tow Rope to Vehicle Inventory Добавить буксировочный трос в инвентарь машин Dodaj linkę holowniczą do ekwipunku pojazdów + Aggiungi corde di traino all'inventario dei veicoli 차량 소지품에 견인줄 추가 Añadir cuerda de remolcado al inventario del vehículo 車両のインベントリに牽引ロープを追加する Abschleppseil zum Fahrzeuginventar hinzufügen + Ajouter une corde à l'inventaire des véhicules diff --git a/addons/trenches/CfgVehicles.hpp b/addons/trenches/CfgVehicles.hpp index d34886f2ae..bec66e2e64 100644 --- a/addons/trenches/CfgVehicles.hpp +++ b/addons/trenches/CfgVehicles.hpp @@ -9,12 +9,12 @@ class CBA_Extended_EventHandlers; class ACE_ContinueDiggingTrench { \ displayName = CSTRING(ContinueDiggingTrench); \ condition = QUOTE([ARR_2(_target,_player)] call FUNC(canContinueDiggingTrench)); \ - statement = QUOTE([ARR_2(_target,_player)] call FUNC(continueDiggingTrench);); \ + statement = QUOTE([ARR_2(_target,_player)] call FUNC(continueDiggingTrench)); \ }; \ class ACE_RemoveTrench { \ displayName = CSTRING(RemoveEnvelope); \ condition = QUOTE([ARR_2(_target,_player)] call FUNC(canRemoveTrench)); \ - statement = QUOTE([ARR_2(_target,_player)] call FUNC(removeTrench);); \ + statement = QUOTE([ARR_2(_target,_player)] call FUNC(removeTrench)); \ }; \ class ACE_CamouflageTrench { \ displayName = CSTRING(CamouflageTrench); \ diff --git a/addons/trenches/XEH_preInit.sqf b/addons/trenches/XEH_preInit.sqf index 47d20d7c2b..94decd550a 100644 --- a/addons/trenches/XEH_preInit.sqf +++ b/addons/trenches/XEH_preInit.sqf @@ -6,7 +6,7 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" GVAR(entrenchingTools) = call (uiNamespace getVariable QGVAR(entrenchingTools)); diff --git a/addons/trenches/initSettings.sqf b/addons/trenches/initSettings.inc.sqf similarity index 100% rename from addons/trenches/initSettings.sqf rename to addons/trenches/initSettings.inc.sqf diff --git a/addons/trenches/stringtable.xml b/addons/trenches/stringtable.xml index bb2ea2ced1..6e029cb4c0 100644 --- a/addons/trenches/stringtable.xml +++ b/addons/trenches/stringtable.xml @@ -20,8 +20,8 @@ Entrenching Tool Saperka, używana do budowy okopów - Mit dem Klappspaten können Erdwälle oder Gräben ausgehoben werden. - Pala da Trincea + Mit dem Klappspaten können Erdwälle oder Gräben ausgehoben werden. + Usata per costruire barriere o scavare trincee. Pala para trincheras Outil permettant de creuser des tranchées. Polní lopatky se používají k zákopovým a jiným pracem. @@ -37,7 +37,7 @@ Envelope - Small Rund - Klein Okop - mały - Fascia - Piccola + Trincea - Piccola Trinchera pequeña Tranchée individuelle Trincheira - Pequena @@ -85,7 +85,7 @@ Envelope - Big Rund - Groß Okop - duży - Fascia - Grande + Trincea - Grande Trinchera grande Grande tranchée Trincheira - Grande @@ -107,7 +107,7 @@ Velký zákop pro jednoho Trincheira pessoal grande Большой персональный окоп - 大型の塹壕を掘る + 大型の個人用塹壕 대형 참호 大型个人掩体 大型個人掩體 @@ -137,7 +137,7 @@ Confirmar cavado Confirmer l'excavation Potvrdit kopání - Confirmar excavação + Confirmar escavação Копать ここに掘る 여기에 파기 @@ -153,7 +153,7 @@ Cancelar cavado Annuler l'excavation Zrušit kopání - Cancelar excavação + Cancelar escavação Отменить копание 掘るのを中止 취소하기 @@ -204,7 +204,7 @@ 塹壕を掘りつづける Graben fortsetzen 계속해서 참호파기 - Continuando a Scavare la Trincea + Continua a Scavare la Trincea 继续挖掘掩体 繼續蓋掩體 Kazmaya Devam Et @@ -217,7 +217,7 @@ Retirer la tranchée Убрать окоп Odstranit zákop - 塹壕を消す + 塹壕を撤去 Schützengraben entfernen 참호 제거 Rimuovi Trincea @@ -229,21 +229,23 @@ Camouflage Trench Zakamufluj okop + Camoufler la tranchée 伪装掩体 참호 위장시키기 Камуфлировать окоп Camuflar trinchera + Camuffa la trincea 塹壕を偽装 Graben tarnen Removing Trench Usuwanie okopu - Removendo tricnheira + Removendo trincheira Retrait de la tranchée Убирание окопа Odstraňuji zákop - 塹壕を消しています + 塹壕を撤去しています Entferne Schützengraben 참호 제거 중 Rimuovendo la Trincea @@ -260,6 +262,7 @@ ACETrincheras ACE Okopy ACE Gräben + ACE Trincee ACE 战壕 ACE 참호 @@ -267,10 +270,11 @@ Small Trench Dig Duration Время копания малого окопа Petites tranchées - durée d'excavation - 小型塹壕の完成時間 + 小型塹壕造成の所要時間 Tiempo de cavar trinchera pequeña Czas kopania małego okopu Kleiner Graben - Aushebungsdauer + Trincea piccola - Durata di scavo 小型战壕挖掘时间 소형참호 건설 시간 @@ -278,10 +282,11 @@ Time, in seconds, required to dig a small trench. Время в секундах, необходимое для рытья малого окопа Définit le temps nécessaire au déploiement des petites tranchées (en secondes). - 小型塹壕が完成するまでの時間 (秒) を設定できます。 + 小型塹壕の造成が完了するまで掛かる時間 (秒) を設定できます。 Tiempo, en segundos, requerido para cavar una trinchera pequeña. Czas, w sekundach wymagany do wykopania małego okopu Zeit in Sekunden, um einen kleinen Graben auszuheben. + Tempo in secondi per scavare una trincea piccola. 挖一条小型战壕所需的时间(秒)。 소형 참호를 팔 때 필요한 시간을 설정합니다. (초 단위) @@ -289,10 +294,11 @@ Small Trench Remove Duration Время удаления малого окопа Petites tranchées - durée de retrait - 小型塹壕の削除時間 + 小型塹壕撤去の所要時間 Tiempo de eliminar trinchera pequeña Czas usuwania małego okopu Kleiner Graben - Aufschüttdauer + Trincea piccola - Durata di rimozione 小型战壕回填时间 소형참호 제거 시간 @@ -300,10 +306,11 @@ Time, in seconds, required to remove a small trench. Время в секундах, необходимое для удаления малого окопа Définit le temps nécessaire pour le retrait des petites tranchées (en secondes). - 小型塹壕が削除されるまでの時間 (秒) を設定できます。 + 小型塹壕の撤去が完了するまで掛かる時間 (秒) を設定できます。 Tiempo, en segundos, requerido para eliminar una trinchera pequeña. Czas, w sekundach wymagany do usunięcia małego okopu Zeit in Sekunden, um einen kleinen Graben aufzuschütten. + Tempo in secondi per rimuovere una trincea piccola. 回填一条小型战壕所需的时间(秒)。 소형 참호를 제거할때 필요한 시간을 설정합니다. (초 단위) @@ -311,10 +318,11 @@ Big Trench Dig Duration Время рытья большого окопа Grandes tranchées - durée d'excavation - 大型塹壕の完成時間 + 大型塹壕造成の所要時間 Tiempo de cavar trinchera grande Czas kopania dużego okopu Große Graben - Aushebungsdauer + Trincea grande - Durata di scavo 大型战壕挖掘时间 대형참호 건설 시간 @@ -322,10 +330,11 @@ Time, in seconds, required to dig a big trench. Время в секундах, необходимое для рытья большого окопа Définit le temps nécessaire au déploiement des grandes tranchées (en secondes). - 大型塹壕が完成するまでの時間 (秒) を設定できます。 + 大型塹壕の造成が完了するまで掛かる時間 (秒) を設定できます。 Tiempo, en segundos, requerido para cavar una trinchera grande Czas, w sekundach wymagany do wykopania dużego okopu Zeit in Sekunden, um einen großen Graben auszuheben. + Tempo in secondi per scavare una trincea grande. 挖一条大型战壕所需的时间(秒)。 대형 참호를 팔때 필요한 시간을 설정합니다. (초 단위) @@ -333,10 +342,11 @@ Big Trench Remove Duration Время удаления большого окопа Grandes tranchées - durée de retrait - 大型塹壕の削除時間 + 大型塹壕撤去の所要時間 Tiempo de eliminar trinchera grande Czas usuwania dużego okopu Kleiner Graben - Aufschüttdauer + Trincea grande - Durata di rimozione 大型战壕回填时间 대형참호 제거 시간 @@ -344,10 +354,11 @@ Time, in seconds, required to remove a big trench. Время в секундах, необходимое для удаления большого окопа Définit le temps nécessaire pour le retrait des grandes tranchées (en secondes). - 大型塹壕が削除されるまでの時間 (秒) を設定できます。 + 大型塹壕の撤去が完了するまで掛かる時間 (秒) を設定できます。 Tiempo, en segundos, requerido para eliminar una trinchera grande Czas, w sekundach wymagany do usunięcia dużego okopu Zeit in Sekunden, um einen großen Graben aufzuschütten. + Tempo in secondi per rimuovere una trincea grande. 回填一条大型战壕所需的时间(秒)。 대형 참호를 제거할때 필요한 시간을 설정합니다. (초 단위) diff --git a/addons/tripod/CfgVehicles.hpp b/addons/tripod/CfgVehicles.hpp index 31888ab5dd..3e07574cb7 100644 --- a/addons/tripod/CfgVehicles.hpp +++ b/addons/tripod/CfgVehicles.hpp @@ -86,7 +86,7 @@ class CfgVehicles { distance = 5; condition = "(true)"; //wait a frame to handle "Do When releasing action menu key" option: - statement = QUOTE([ARR_2({_this call FUNC(adjust)}, [ARR_2(_player,_target)])] call CBA_fnc_execNextFrame); + statement = QUOTE([ARR_2({_this call FUNC(adjust)},[ARR_2(_player,_target)])] call CBA_fnc_execNextFrame); showDisabled = 0; exceptions[] = {}; icon = QPATHTOF(UI\w_sniper_tripod_ca.paa); diff --git a/addons/tripod/stringtable.xml b/addons/tripod/stringtable.xml index 7934238dfe..8b1c1f6eb8 100644 --- a/addons/tripod/stringtable.xml +++ b/addons/tripod/stringtable.xml @@ -9,7 +9,7 @@ Equipo SSWT Kit SSWT SSWT souprava - SSWT Kit + Kit SSWT SSWT Készlet Kit SSWT SSWT キット @@ -26,7 +26,7 @@ Colocar equipo SSWT Placer le kit SSWT Rozlož souprava SSWT - Place SSWT Kit + Piazza Kit SSWT SSWT készlet elhelyezése Colocar kit SSWT SSWT キットを置く @@ -62,7 +62,7 @@ Régler le kit SSWT SSWT készlet állítása Выровнять снайперский штатив - Aggiusta Kit SSWT + Regola Kit SSWT SSWT キットを調節 SSWT 키트 조절 调整狙击手专用三脚架 diff --git a/addons/ui/CfgInGameUI.hpp b/addons/ui/CfgInGameUI.hpp index b9a1c447dc..8f39984b03 100644 --- a/addons/ui/CfgInGameUI.hpp +++ b/addons/ui/CfgInGameUI.hpp @@ -1,5 +1,5 @@ class CfgInGameUI { class DefaultAction { - size = QUOTE(profileNamespace getVariable [ARR_2('GVAR(hideDefaultActionIcon)', (((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.8))]); + size = QUOTE(profileNamespace getVariable [ARR_2('GVAR(hideDefaultActionIcon)',(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.8))]); }; }; diff --git a/addons/ui/XEH_preInit.sqf b/addons/ui/XEH_preInit.sqf index 9f2cfd9824..b85b7329b0 100644 --- a/addons/ui/XEH_preInit.sqf +++ b/addons/ui/XEH_preInit.sqf @@ -6,7 +6,7 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" GVAR(interfaceInitialized) = false; diff --git a/addons/ui/initSettings.sqf b/addons/ui/initSettings.inc.sqf similarity index 100% rename from addons/ui/initSettings.sqf rename to addons/ui/initSettings.inc.sqf diff --git a/addons/ui/stringtable.xml b/addons/ui/stringtable.xml index b25d1fa1f4..562abe2765 100644 --- a/addons/ui/stringtable.xml +++ b/addons/ui/stringtable.xml @@ -7,7 +7,7 @@ Interface do usuário Interface Utilisateur Интерфейс - ユーザ インタフェイス + ユーザ インタフェース Interfejs użytkownika Benutzeroberfläche 사용자 인터페이스 @@ -23,7 +23,7 @@ Interface do usuário Interface Utilisateur Пользовательский интерфейс - ユーザ インタフェイス + ユーザ インタフェース Interfejs użytkownika Benutzeroberfläche 사용자 인터페이스 @@ -38,11 +38,11 @@ Este módulo permite ligar ou desligar partes da interface do usuário Ce module permet d'activer ou de désactiver certains éléments de l'Interface Utilisateur (IU). Этот модуль позволяет переключать видимость элементов пользовательского интерфейса. - モジュールではユーザ インタフェイスの一部表示を切り替えできます。 + このモジュールではユーザ インタフェースの表示部位の表示状態を切り替えることができます。 Moduł ten pozwala zmienić stan widoczności poszczególnych elementów UI. Dieses Modul erlaubt es, Teile der Benutzeroberfläche (UI) an- oder auszuschalten. 이 모듈은 사용자 인터페이스의 부분을 토글하는 것을 가능케 해줍니다. - Questo modulo consente di commutare parti di interfaccia utente visibili. + Questo modulo consente di selezionare quali parti dell'interfaccia utente sono visibili. 此模块允许你调整用户界面的任何一个控件 此模塊允許你調整使用者介面的任何一個元件 Tento modul umožňuje přepínání viditelných částí uživatelského rozhraní. @@ -54,7 +54,7 @@ Permitir IU Selecionável Autoriser la personnalisation de l'IU Вкл. настраиваемый интерфейс - UI 選択性を許可 + 選択性UIを許可 Zezwól na selektywne UI Erlaube selektives UI 선택적 사용자 인터페이스 허가 @@ -69,7 +69,7 @@ Permite o cliente modificar sua IU. Permet aux clients de modifier leur Interface Utilisateur. Позволить клиентам изменять их пользовательский интерфейс. - クライアントがユーザ インタフェイスを編集できるようにします。 + クライアントがユーザ インタフェースを編集できるようにします。 Zezwól klientowi na modyfikację UI. Erlaube Clients, ihr UI zu modifizieren. 클라이언트가 자신의 사용자 인터페이스를 사용하는 것을 허가합니다 @@ -99,11 +99,11 @@ Radar de Veículo Radar de véhicule Радар в технике - 車両のレーダ + 車両のレーダー Radar w pojeździe Fahrzeugradar 차량 레이더 - Rada Veicolo + Radar Veicolo 载具雷达 載具雷達 Radar de vehículos @@ -115,7 +115,7 @@ Bússola de Veículo Boussole de véhicule Компас в технике - 車両のレーダ + 車両のコンパス Kompas w pojeździe Fahrzeugkompass 차량 나침반 @@ -147,7 +147,7 @@ Barra de Grupo Barre de groupe Панель командира - 指揮メニュー + グループ バー Pasek grupy Gruppenleiste 그룹 막대 @@ -163,8 +163,9 @@ Marca de agua para compilación de desarrollo Filigrane version de développement Znak wodny wersji deweloperskiej - 開発版ウォーターマーク + 開発ビルドでの透かしマーク Wasserzeichen für Entwicklungsversion + Filigrana per versione in fase di sviluppo 开发建设水印 개발용 빌드 워터마크 @@ -190,11 +191,11 @@ Fundo do Nome do Armamento Fond pour le nom de l'arme Фон названия оружия - 武器名の背景表示 + 武器名の背景 Tło nazwy broni Waffenname Hintergrund 무기 이름 배경 - Nome Sfondo Arma + Sfondo Nome Arma 武器名称背景 武器名稱背景 Fondo de nombre de arma @@ -237,7 +238,7 @@ Quantidade de Munição Nombre de munitions Количество боеприпасов - 弾薬数 + 弾数 Ilość amunicji Munitionsanzahl 탄약수 @@ -253,11 +254,11 @@ Quantidade de Carregadores Nombre de chargeurs Количество магазинов - 弾倉装填数 + 弾倉数 Ilość magazynków Magazinanzahl 탄창수 - Contatore Caricatore + Contatore Caricatori 弹匣数量 彈匣數量 Recuento de cargadores @@ -269,11 +270,11 @@ Tipo de Arremessável Type d'objet lançable Тип гранаты - 投げる種類 + 投擲物の種類 Typ granatu Wurfobjekt-Typ 투척물 종류 - Tipo Lanciabile + Tipo di Lanciabile 投掷物类型 投擲物類型 Tipo arrojable @@ -285,7 +286,7 @@ Quantidade de Arremessável Nombre d'objets lançables Количество гранат - 投げられる数 + 投擲物の残数 Ilość granatów Wurfobjekt-Anzahl 투척물 개수 @@ -316,11 +317,11 @@ Informações na parte de baixo do fundo do Armamento Fond pour la barre d'informations inférieure de l'arme Фон информации об оружии снизу - 武器名の背景表示 (下側) + 武器名下部の情報表示の背景 Tło dolnej części informacji o broni Hintergrund der unteren Waffen-Info-Leiste 무기 상세 정보 배경 - Informazioni Sfondo Arma Bassa + Sfondo Informazioni Arma Bassa 武器底部信息栏背景 武器底部資訊欄背景 Fondo de información inferior de arma @@ -348,7 +349,7 @@ Barra de Energia Barre d'endurance Полоса выносливости - 体力バー + スタミナバー Pasek staminy Ausdaueranzeige 지구력 막대 @@ -379,11 +380,11 @@ Fundo do nome da arma do fuzileiro Fond pour le nom de l'arme (tireur) Фон названия орудия наводчика - 射手用の武器名の背景表示 + 射手用の武器名の背景 Tło nazwy broni strzelca Richtschütze Waffenname Hintergrund 사수 무기 명칭 배경 - Nome Sfondo Arma Artigliere + Sfondo Nome Arma Artigliere 炮手武器名称背景 砲手武器名稱背景 Pozadí jména zbraně vozidla @@ -446,7 +447,7 @@ Ilość magazynków strzelca Richtschütze Magazinanzahl 사수 탄창 수량 - Contatore Caricatore Artigliere + Contatore Caricatori Artigliere 炮手弹匣数量 砲手彈匣數量 Počet munice zbraně vozidla @@ -458,7 +459,7 @@ Tipo de Arremessável do fuzileiro Type d'objet lançable (tireur) Тип пусковой установки наводчика - 射手用のランチャーの種類 + 射手用ランチャーの種類 Typ rakiet strzelca Richtschütze Raketentyp 사수 발사체 종류 @@ -473,11 +474,11 @@ Quantidade de Arremessável do fuzileiro Nombre d'objets lançables (tireur) Кол-во снарядов ПУ наводчика - 射手用のランチャー弾薬数 + 射手用ランチャーの弾数 Ilość rakiet strzelca Richtschütze Raketenanzahl 사수 발사체 수량 - Contatore Lanciabili Artigliere + Contatore Missili Artigliere 炮手发射物数量 砲手發射物數量 Počet odpalitelných granátů vozidla @@ -503,11 +504,11 @@ Informações na parte de baixo do fundo do Armamento do fuzileiro Fond pour la barre d'informations inférieure (tireur) Фон информации об орудии наводчика снизу - 射手用の武器名の背景表示 (下側) + 射手用武器名下部の情報表示の背景 Tło dolnej części informacji o broni strzelca Hintergrund der unteren Waffen-Info-Leiste (Richtschütze) 사수 무기 상세 정보 배경 - Informazioni Sfondo Arma Artigliere Bassa + Sfondo Informazioni Arma Artigliere Bassa 炮手武器底部信息栏背景 砲手武器底部資訊欄背景 Nižší pozadí panelu s informacemi o zbrani vozidla @@ -539,7 +540,7 @@ Tło nazwy pojazdu Fahrzeugname Hintergrund 차량 명칭 배경 - Nome Sfondo Veicolo + Sfondo Nome Veicolo 载具名称背景 載具名稱背景 Fondo del nombre del vehículo @@ -598,11 +599,11 @@ Dano do Veículo Dégâts du véhicule Повреждение техники - 車両の損傷表示 + 車両の損傷状態 Uszkodzenia pojazdu Fahrzeugschaden 차량 피해 - Danno Veicolo + Danni Veicolo 载具伤害 載具傷害 Daño vehicular @@ -618,7 +619,7 @@ Tło informacji o pojeździe Fahrzeug Info Hintergrund 차량 정보 배경 - Informazioni Sfondo Veicolo + Sfondo Informazioni Veicolo 载具信息栏背景 載具資訊欄背景 Fondo de información del vehículo @@ -629,11 +630,11 @@ Requer informações de Soldado/Veículo/Armamento Requiert l'option "Information soldat/véhicule/arme". Требуется информация о солдате/технике/оружии. - 兵士/車両/武器の情報を必要とします。 + 兵士/車両/武器の情報 の表示が必要です。 Wymaga informacji o żołnierzu/pojeździe/broni. Benötigt Soldat/Fahrzeug/Waffe Information. 병사/차량/무기의 정보가 필요합니다. - Richiede informazione Soldato/Veicolo/Arma. + Richiede informazioni Soldato/Veicolo/Arma. 需要士兵/载具/武器的信息。 需要士兵/載具/武器的資訊. Requiere información de Soldado/Vehículo. @@ -644,7 +645,7 @@ A modificação da interface do usuário está desabilitada. La personnalisation de l'Interface Utilisateur est désactivée. Изменение пользовательского интерфейса запрещено. - ユーザ インタフェイスの変更は無効化されています。 + ユーザ インターフェースの変更は無効化されています。 Modyfikacja interfejsu użytkownika jest wyłączona. Die Modifizierung des UI ist deaktiviert. 사용자 인터페이스 변경이 비활성화 되어 있습니다. @@ -658,11 +659,11 @@ Não é possível modificar um elemento forçado da interface do usuário. Impossible de modifier un élément forcé de l'Interface Utilisateur. Невозможно изменить зафиксированный элемент пользовательского интерфейса. - ユーザー インタフェイス要素の強制はできません。 + ユーザ インターフェース要素の強制はできません。 Nie można modyfikować wymuszonego elementu interfejsu użytkownika. Gesperrte UI-Elemente können nicht modifiziert werden. 강제 사용자 인터페이스는 변경하실 수 없습니다. - Impossibile modificare un elemento forzato d' Interfaccia Utente. + Impossibile modificare un elemento forzato dell'Interfaccia Utente. 无法编辑已被锁定的用户界面控件 無法編輯已被鎖定的使用者介面元件 Nelze upravit prvek vynuceného uživatelského rozhraní. @@ -675,6 +676,7 @@ Indicateur de vitesse de déplacement Вкл. индикатор скорости передвижения Aktiviere Bewegungsgeschwindigkeits-Indikator + Attiva Indicatore di Velocità 启用移动速度指示器 이동 속도 표시기 활성화 Habilitar indicador de velocidad de movimiento @@ -686,6 +688,7 @@ Affiche un indicateur permettant de visualiser la vitesse de déplacement du personnage. Включает индикатор скорости передвижения персонажа игрока. Aktiviere den Bewegungsgeschwindigkeits-Indikator des Spielers. + Attiva Indicatore di Velocità del Giocatore 为玩家角色启用移动速度指示器。 플레이어 캐릭터를 위한 이동속도 표시기를 활성화합니다. Habilita el indicador de velocidad de movimiento para el personaje del jugador. @@ -699,6 +702,8 @@ Спрятать иконку действия по умолчанию Ocultar el icono de acción por defecto Standardaktionssymbol ausblenden + Masquer l'icône d'action par défaut + Nascondi Icona dell'Interazione Standard Hides the icon shown automatically when something is in front of the cursor. Requires a game restart.\nWarning: Does not remove the action itself! It is advisable to unbind 'Use default action' key to prevent unwanted interactions. @@ -709,6 +714,8 @@ Прячет иконку, которая показывается автоматически когда что-то находиться перед курсором. Требует рестарта игры.\nВнимание: не убирает само действие! Рекомендуется убрать комбинацию клавиш с настройки "Выполнить действие по умолчанию" чтобы предостеречься от нежеланных действий. Oculta el icono que se muestra automáticamente cuando algo se sitúa enfrente del cursor. Requiere reinicio del juego.\nAdvertencia: No elimina la propia acción! Es recomendable desactivar la tecla "Usar acción por defecto" para prevenir interacciones no deseadas. Blendet das Symbol aus, das automatisch angezeigt wird, wenn sich etwas vor dem Cursor befindet. Erfordert einen Neustart des Spiels.\nWarnung: Die Aktion selbst wird nicht entfernt! Es empfiehlt sich, die Belegung der Taste 'Standardaktion verwenden' aufzuheben, um unerwünschte Interaktionen zu verhindern. + Cache l'icône qui s'affiche automatiquement lorsque quelque chose est devant le curseur. Nécessite un redémarrage du jeu.\nAvertissement : l'action n'est pas supprimée ! Il est recommandé d'annuler l'affectation du bouton 'Utiliser l'action par défaut' afin d'éviter des interactions indésirables. + Nasconde l'icona mostrata in automatico quando qualcosa è davanti al cursore. La modifica richiede un riavvio del gioco.\nAttenzione: Non rimuovere l'azione stessa! È consigliato rimuovere solo il tasto dall'assegnazione 'Usa Azione Standard' per impedire interazioni non volute. diff --git a/addons/vector/XEH_postInit.sqf b/addons/vector/XEH_postInit.sqf index 12f643ece3..fb76dc5136 100644 --- a/addons/vector/XEH_postInit.sqf +++ b/addons/vector/XEH_postInit.sqf @@ -13,4 +13,4 @@ GVAR(useFeet) = false; GVAR(modeReticle) = 0; GVAR(illuminate) = false; -#include "initKeybinds.sqf" +#include "initKeybinds.inc.sqf" diff --git a/addons/vector/initKeybinds.sqf b/addons/vector/initKeybinds.inc.sqf similarity index 100% rename from addons/vector/initKeybinds.sqf rename to addons/vector/initKeybinds.inc.sqf diff --git a/addons/vector/stringtable.xml b/addons/vector/stringtable.xml index a3451971e7..c28e7078bf 100644 --- a/addons/vector/stringtable.xml +++ b/addons/vector/stringtable.xml @@ -46,7 +46,7 @@ Távolságmérő Medidor de Distância Дальномер - 測距機器 + 測距儀 거리측정기 测距仪 測距儀 diff --git a/addons/vehicle_damage/CfgAmmo.hpp b/addons/vehicle_damage/CfgAmmo.hpp index 23f582a814..408c3e7b15 100644 --- a/addons/vehicle_damage/CfgAmmo.hpp +++ b/addons/vehicle_damage/CfgAmmo.hpp @@ -1,3 +1,5 @@ +#pragma hemtt suppress pw3_padded_arg file + class CfgAmmo { class Default; class BulletCore; diff --git a/addons/vehicle_damage/XEH_preInit.sqf b/addons/vehicle_damage/XEH_preInit.sqf index 9361d05015..894773534a 100644 --- a/addons/vehicle_damage/XEH_preInit.sqf +++ b/addons/vehicle_damage/XEH_preInit.sqf @@ -6,6 +6,6 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" ADDON = true; diff --git a/addons/vehicle_damage/functions/fnc_addDamage.sqf b/addons/vehicle_damage/functions/fnc_addDamage.sqf index 83081309a2..75d72da340 100644 --- a/addons/vehicle_damage/functions/fnc_addDamage.sqf +++ b/addons/vehicle_damage/functions/fnc_addDamage.sqf @@ -14,7 +14,7 @@ * None * * Example: - * [vehicle player, 234, "HitHull"] call ace_vehicle_damage_fnc_knockOut + * [vehicle player, 234, "HitHull"] call ace_vehicle_damage_fnc_addDamage * * Public: No */ diff --git a/addons/vehicle_damage/functions/fnc_handleDamageEjectIfDestroyed.sqf b/addons/vehicle_damage/functions/fnc_handleDamageEjectIfDestroyed.sqf index 7655a0f628..fdf6f9c6d3 100644 --- a/addons/vehicle_damage/functions/fnc_handleDamageEjectIfDestroyed.sqf +++ b/addons/vehicle_damage/functions/fnc_handleDamageEjectIfDestroyed.sqf @@ -11,7 +11,7 @@ * None * * Example: - * _this call ace_cookoff_fnc_handleDamageEjectIfDestroyed + * _this call ace_vehicle_damage_fnc_handleDamageEjectIfDestroyed * * Public: No */ diff --git a/addons/vehicle_damage/functions/fnc_handleVehicleDamage.sqf b/addons/vehicle_damage/functions/fnc_handleVehicleDamage.sqf index 92d8d03ff4..01f098efb0 100644 --- a/addons/vehicle_damage/functions/fnc_handleVehicleDamage.sqf +++ b/addons/vehicle_damage/functions/fnc_handleVehicleDamage.sqf @@ -18,7 +18,7 @@ * Whether or not to continue handling last frame's damage * * Example: - * [ace_vehicle_damage_fnc_handleTankDamage, tank1, "Hit_Engine", 12]] call CBA_fnc_execNextFrame + * [ace_vehicle_damage_fnc_handleVehicleDamage, tank1, "Hit_Engine", 12]] call CBA_fnc_execNextFrame * * Public: No */ diff --git a/addons/vehicle_damage/initSettings.sqf b/addons/vehicle_damage/initSettings.inc.sqf similarity index 100% rename from addons/vehicle_damage/initSettings.sqf rename to addons/vehicle_damage/initSettings.inc.sqf diff --git a/addons/vehicle_damage/stringtable.xml b/addons/vehicle_damage/stringtable.xml index 0aa4a3bee2..5581408f74 100644 --- a/addons/vehicle_damage/stringtable.xml +++ b/addons/vehicle_damage/stringtable.xml @@ -3,9 +3,10 @@ ACE Advanced Vehicle Damage - ACE 拡張車両ダメージ + ACE アドバンスドビークルダメージ ACE Dégâts de véhicule avancés ACE Erweiterter Fahrzeugsschaden + ACE Danni Veicolo Avanzati ACE Zaawansowany system uszkodzeń pojazdów ACE 高级载具损坏 ACE 고급 차량 피해 @@ -14,9 +15,10 @@ Enable/Disable advanced vehicle damage - 拡張車両ダメージの使用を設定します。 + アドバンスドビークルダメージを有効/無効にする Active les dégâts de véhicule avancés. Aktiviert/Deaktiviert den Erweiterten Fahrzeugsschaden + Abilità danni avanzati ai veicoli Włącz/Wyłącz zaawansowane uszkodzenia pojazdów 启用/禁用高级载具损坏 고급 차량 피해 활성화/비활성화 @@ -25,9 +27,10 @@ Enable/Disable advanced car damage (Experimental) - 拡張車ダメージ (試験的) + アドバンスド車ダメージを有効/無効にする (試験的) Active les dégâts avancés sur les voitures (expérimental). Aktiviert/Deaktiviert den Erweiterten Fahrzeugsschaden (Experimentell) + Abilita danni avanzati ai veicoli (sperimentale) Włącz/Wyłącz zaawansowane uszkodzenia w samochodach (eksperymentalne) 启用/禁用高级车辆损坏(实验性) 고급 차량 피해(실험용) 활성화/비활성화 @@ -35,10 +38,11 @@ Habilita/Deshabilita el daño avanzado de coche (Experimental) - Enable/Disable advanced Car Damage - 拡張車ダメージの使用を設定します。 + Enable/Disable advanced car damage + アドバンスド車ダメージを有効/無効にする Dégâts de voiture avancés Aktiviert/Deaktiviert erweiterten Autoschaden + Abilita danni avanzati alle macchine Włącz/Wyłącz zaawansowane uszkodzenia w samochodach 启用/禁用高级车辆损坏 고급 차량 피해 활성화/비활성화 @@ -47,9 +51,10 @@ Removes all vehicle ammo after cook-off - 誘爆後は車両から全ての弾薬を削除します。 + 誘爆後に車両から全ての弾薬を削除 Retire toutes les munitions des véhicules après une auto-inflammation. Entfernt die gesamte Munition nach dem Durchzünden der Munition eines Fahrzeuges. + Rimuove tutte le munizioni dal veicolo dopo l'esplosione delle stesse Usuwa całą amunicję z pojazdu po samozapłonie 殉爆后移除所有车辆弹药 쿡오프 현상 후 차량에서 모든 탄약을 제거합니다. @@ -58,9 +63,10 @@ Enable/Disable Ammo Removal During Cook-Off - 誘爆後の弾薬処理 + 誘爆中の弾薬除去を有効/無効にする Retirer les munitions durant l'auto-inflammation Aktiviert/Deaktiviert Entfernung der Munition beim Durchzünden + Abilita rimozione munizioni dopo l'esplosione Włącz/Wyłącz usuwanie amunicji podczas samozapłonu 启用/禁用殉爆过程中的弹药移除功能 쿡오프시 탄약 제거 활성화/비활성화 @@ -71,7 +77,7 @@ Wreck (Turret) Épave (tourelle) Restos (torreta) - Rottami (torretta) + Rottame (Torretta) Wrak (wieżyczka) Обломки (башня) Wrack (Geschützturm) diff --git a/addons/vehiclelock/CfgVehicles.hpp b/addons/vehiclelock/CfgVehicles.hpp index 62a6a525fe..3209cf7205 100644 --- a/addons/vehiclelock/CfgVehicles.hpp +++ b/addons/vehiclelock/CfgVehicles.hpp @@ -2,20 +2,20 @@ class ACE_SelfActions { \ class ACE_unlockVehicle { \ displayName = CSTRING(Action_UnLock); \ - condition = QUOTE(([ARR_2(_player, _target)] call FUNC(hasKeyForVehicle)) && {(locked _target) in [ARR_2(2,3)]}); \ - statement = QUOTE([ARR_3(QUOTE(QGVAR(setVehicleLock)), [ARR_2(_target,false)], [_target])] call CBA_fnc_targetEvent); \ + condition = QUOTE(([ARR_2(_player,_target)] call FUNC(hasKeyForVehicle)) && {(locked _target) in [ARR_2(2,3)]}); \ + statement = QUOTE([ARR_3(QUOTE(QGVAR(setVehicleLock)),[ARR_2(_target,false)],[_target])] call CBA_fnc_targetEvent); \ icon = QPATHTOF(ui\key_menuIcon_ca.paa); \ }; \ class ACE_lockVehicle { \ displayName = CSTRING(Action_Lock); \ - condition = QUOTE(([ARR_2(_player, _target)] call FUNC(hasKeyForVehicle)) && {(locked _target) in [ARR_2(0,1)]}); \ - statement = QUOTE([ARR_3(QUOTE(QGVAR(setVehicleLock)), [ARR_2(_target,true)], [_target])] call CBA_fnc_targetEvent); \ + condition = QUOTE(([ARR_2(_player,_target)] call FUNC(hasKeyForVehicle)) && {(locked _target) in [ARR_2(0,1)]}); \ + statement = QUOTE([ARR_3(QUOTE(QGVAR(setVehicleLock)),[ARR_2(_target,true)],[_target])] call CBA_fnc_targetEvent); \ icon = QPATHTOF(ui\key_menuIcon_ca.paa); \ }; \ class ACE_lockpickVehicle { \ displayName = CSTRING(Action_Lockpick); \ - condition = QUOTE([ARR_3(_player, _target, 'canLockpick')] call FUNC(lockpick)); \ - statement = QUOTE([ARR_3(_player, _target, 'startLockpick')] call FUNC(lockpick)); \ + condition = QUOTE([ARR_3(_player,_target,'canLockpick')] call FUNC(lockpick)); \ + statement = QUOTE([ARR_3(_player,_target,'startLockpick')] call FUNC(lockpick)); \ }; \ }; \ class ACE_Actions { \ @@ -23,24 +23,24 @@ class ACE_unlockVehicle { \ displayName = CSTRING(Action_UnLock); \ distance = 4; \ - condition = QUOTE(([ARR_2(_player, _target)] call FUNC(hasKeyForVehicle)) && {(locked _target) in [ARR_2(2,3)]}); \ - statement = QUOTE([ARR_3(QUOTE(QGVAR(setVehicleLock)), [ARR_2(_target,false)], [_target])] call CBA_fnc_targetEvent); \ + condition = QUOTE(([ARR_2(_player,_target)] call FUNC(hasKeyForVehicle)) && {(locked _target) in [ARR_2(2,3)]}); \ + statement = QUOTE([ARR_3(QUOTE(QGVAR(setVehicleLock)),[ARR_2(_target,false)],[_target])] call CBA_fnc_targetEvent); \ exceptions[] = {"isNotSwimming"}; \ icon = QPATHTOF(ui\key_menuIcon_ca.paa); \ }; \ class ACE_lockVehicle { \ displayName = CSTRING(Action_Lock); \ distance = 4; \ - condition = QUOTE(([ARR_2(_player, _target)] call FUNC(hasKeyForVehicle)) && {(locked _target) in [ARR_2(0,1)]}); \ - statement = QUOTE([ARR_3(QUOTE(QGVAR(setVehicleLock)), [ARR_2(_target,true)], [_target])] call CBA_fnc_targetEvent); \ + condition = QUOTE(([ARR_2(_player,_target)] call FUNC(hasKeyForVehicle)) && {(locked _target) in [ARR_2(0,1)]}); \ + statement = QUOTE([ARR_3(QUOTE(QGVAR(setVehicleLock)),[ARR_2(_target,true)],[_target])] call CBA_fnc_targetEvent); \ exceptions[] = {"isNotSwimming"}; \ icon = QPATHTOF(ui\key_menuIcon_ca.paa); \ }; \ class ACE_lockpickVehicle { \ displayName = CSTRING(Action_Lockpick); \ distance = 4; \ - condition = QUOTE([ARR_3(_player, _target, 'canLockpick')] call FUNC(lockpick)); \ - statement = QUOTE([ARR_3(_player, _target, 'startLockpick')] call FUNC(lockpick)); \ + condition = QUOTE([ARR_3(_player,_target,'canLockpick')] call FUNC(lockpick)); \ + statement = QUOTE([ARR_3(_player,_target,'startLockpick')] call FUNC(lockpick)); \ exceptions[] = {"isNotSwimming"}; \ }; \ }; \ diff --git a/addons/vehiclelock/XEH_preInit.sqf b/addons/vehiclelock/XEH_preInit.sqf index 9361d05015..894773534a 100644 --- a/addons/vehiclelock/XEH_preInit.sqf +++ b/addons/vehiclelock/XEH_preInit.sqf @@ -6,6 +6,6 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" ADDON = true; diff --git a/addons/vehiclelock/functions/fnc_moduleInit.sqf b/addons/vehiclelock/functions/fnc_moduleInit.sqf index 6a3448e89c..4f6fdf118c 100644 --- a/addons/vehiclelock/functions/fnc_moduleInit.sqf +++ b/addons/vehiclelock/functions/fnc_moduleInit.sqf @@ -12,7 +12,7 @@ * None * * Example: - * [fromModule] call ACE_VehicleLock_fnc_hasKeyForVehicle; + * [fromModule] call ace_vehiclelock_fnc_moduleInit; * * Public: No */ diff --git a/addons/vehiclelock/initSettings.sqf b/addons/vehiclelock/initSettings.inc.sqf similarity index 100% rename from addons/vehiclelock/initSettings.sqf rename to addons/vehiclelock/initSettings.inc.sqf diff --git a/addons/vehiclelock/stringtable.xml b/addons/vehiclelock/stringtable.xml index 6097b9b3b9..55600489e8 100644 --- a/addons/vehiclelock/stringtable.xml +++ b/addons/vehiclelock/stringtable.xml @@ -28,7 +28,7 @@ Открыть машину Sblocca il Veicolo Destravar veículo - 車両の鍵を開ける + 車両を解錠 차량 잠금해제 载具解锁 載具解鎖 @@ -77,7 +77,7 @@ Páčim vozidlo... Zár feltörése... Взламываем замок... - Scassino il veicolo... + Scassinando il veicolo... Usando Mixa... 鍵をこじ開けている・・・ 문따는 중... @@ -126,7 +126,7 @@ Sada paklíčů, která dokáže odemknout zámky u většiny vozidel. Egy tolvajkulcs-készlet, mely a legtöbb jármű zárjait fel tudja törni. Набор отмычек, которым можно взломать почти любую машину. - Un grimardello per forzare la maggior parte dei veicoli + Un grimardello per forzare la maggior parte dei veicoli. Um set de chave mixas que pode abrir a maioria dos veículos. ピッキング ツールでは多くの車両をこじ開けられます。 거의 모든 차량을 열 수 있게 해주는 해정도구 모음입니다. @@ -158,7 +158,7 @@ Egy kulcs, ami a KELET egységeinek legtöbb járművét ki tudja nyitni. Klíč který by měl otevřít vetšinu Východních vozidel. Ключ для открытия большинства машин Синих. - Una chaive che apre la maggior parte dei veicoli orientali + Una chiave che apre la maggior parte dei veicoli orientali Uma chave que abre a maioria dos veículos orientais このキーは多くのOPFOR軍車両を開けられます。 거의 모든 대항군 진영 차량을 여는 열쇠입니다. @@ -174,7 +174,7 @@ Egy kulcs, ami a FÜGGETLEN egységek legtöbb járművét ki tudja nyitni. Klíč který by měl otevřít většinu Nezávislých vozidel. Ключ для открытия большинства машин Независимых. - Una chaive che apre la maggior parte dei veicoli degli indipendenti + Una chiave che apre la maggior parte dei veicoli degli indipendenti. Uma chave que abre a maioria dos veículos independentes このキーは多くの独立軍車両を開けられます。 거의 모든 무소속군 진영 차량을 여는 열쇠입니다. @@ -190,7 +190,7 @@ Klíč který by měl otevřít většinu Civilních vozidel. Egy kulcs, ami a CIVIL járművek többségét ki tudja nyitni. Ключ для открытия большинства машин Гражданских. - Una chaive che apr ela maggior parte dei veicoli civili + Una chiave che apre la maggior parte dei veicoli civili. Uma chave que abre a maioria dos veículos civis. このキーは多くの市民車両を開けられます。 거의 모든 민간인 차량을 여는 열쇠입니다 @@ -224,7 +224,7 @@ Jármű rakodótér zárás Закрывать инвентарь транспорта Blocca Inventario Veicolo - 施錠されている車両のインベントリ + 車両インベントリをロックする 차량 소지품 잠금 上锁载具的车箱 上鎖載具的車箱 @@ -239,8 +239,8 @@ Verrouille l'inventaire des véhicules fermés à clé. Bezárja a zárt járművek rakterét is Закрывать инвентарь транспорта, если транспорт закрыт - Blocca l'inventario di un veicolo bloccato - 施錠されている車両の開けないインベントリ + Blocca l'inventario di un veicolo bloccato. + 施錠された車両のインベントリをロックします 잠긴 차량의 소지품을 뒤지지 못하게 합니다. 上锁载具的车箱,使玩家不能拿取/查看载具内的装备 上鎖載具的車箱,使玩家不能拿取/查看載具內的裝備 @@ -256,7 +256,7 @@ Jármű kezdő zár-állapot Начальное состояние замков Stato Iniziale del Blocco per Veicoli - 開始時における車両の鍵の状態 + 開始時の車両の鍵の状態 시작 시 차량 잠금 상태 载具初始上锁状态 載具初始上鎖狀態 @@ -280,6 +280,7 @@ Remove Ambiguous Lock State Eliminar estado de bloqueo ambiguo + Rimuovi stati di blocco ambigui Supprimer les états de verrouillage ambigus Устранить неоднозначные состояния замков Usuń niejednoznaczny stan blokady @@ -315,7 +316,7 @@ Zárva Закрыт Bloccato - 施錠ずみ + 施錠済 잠김 上锁 上鎖 @@ -331,7 +332,7 @@ Nyitva Открыт Sbloccato - 開錠ずみ + 解錠済 열림 解锁 解鎖 @@ -346,8 +347,8 @@ Difficulté par défaut du crochetage Alapértelmezett zártörő-erősség Сила отмычки по умолчанию - Durabilità Default del Grimaldello - ピッキング ツールの能力設定 + Durabilità Predefinita del Grimaldello + Lockpickの能力設定 기본 해정도구 설정 预设开锁能力 預設開鎖能力 @@ -363,8 +364,8 @@ Temps par défaut requis pour crocheter une serrure. Valeur par défaut : 10 secondes. Alapértelmezett idő a zárfeltöréshez (másodpercben). Alapértelmezett: 10 Время для взлома замка отмычкой (в секундах). По умолчанию: 10 - Tempo Default richiesto per forzare serrature (in secondi). Default: 10 - ピッキング ツールを使った作業時間の標準設定。(秒) 標準: 10 + Tempo Default richiesto per forzare serrature (in secondi). Predefinito: 10 + Lockpickを使った作業の所要時間の標準設定。(秒) デフォルト: 10 해정을 위해 들이는 기본시간입니다(초 단위). 기본설정: 10 开锁时间(秒)。预设:10 開鎖時間(秒)。預設:10 @@ -380,7 +381,7 @@ Beállítások a zártörő erősségére és alapértelmezett zár-állapotra a járműveken. Eltávolítja az azonosíthatatlan zár-állapotokat. Настройки силы отмычек и начальное состояние замков транспорта. Устраняет неоднозначные состояния замков. Impostazioni per resistenza iniziale delle serrature e stato di blocco dei veicoli. Rimuove stati di blocco ambigui. - ピッキング ツールの能力と車両の鍵の初期状態を設定できます。あいまいな鍵の状態を削除します。 + Lockpickの能力と車両の鍵の初期状態を設定できます。あいまいな鍵の状態を削除します。 해정도구 설정과 시작시 차량의 잠금 상태 그리고 애매한 잠금 상태를 지우는 설정입니다. 设定开锁能力和初始载具上锁状态。移除不明确的锁定状态 設定開鎖能力和初始載具上鎖狀態。移除不明確的鎖定狀態 @@ -412,7 +413,7 @@ Szinkronizál a járművekkel és játékosokkal. Egyedi kulcsokat oszt ki a játékosoknak minden szinkronizált járműhöz. Csak a küldetés indításakor jelenlévő járművekhez érvényes. Синхронизируйте с транспортом и игроком. Это выдаст игроку ключи от всех синхронизированных транспортных средств. Работает только для объектов, присутствующих на старте миссии Sincronizza con veicoli e giocatori. Distribuirà chiavi ai giocatori per ogni veicolo sincronizzato. Valido solo per oggetti presenti ad inizio missione. - 車両とプレイヤへ同期します。プレイヤへ同期された車両のカスタム キーを作ります。これはミッション開始時に作成されたオブジェクトでのみ有効です。 + 車両とプレイヤーへ同期します。プレイヤーへ同期された車両のカスタム キーを作ります。これはミッション開始時に作成されたオブジェクトでのみ有効です。 차량과 플레이어에게 동기화됩니다. 동기화된 차량은 플레이어에게 열쇠를 지급합니다. 오직 미션 시작 시에 생긴 물체들만 유효합니다. 可同步在载具与玩家身上。将使被同步的玩家掌握其他被同步载具的钥匙。此模块只会在任务刚开始时触发。 可同步在載具與玩家身上。將使被同步的玩家掌握其他被同步載具的鑰匙。此模塊只會在任務剛開始時觸發 diff --git a/addons/vehicles/XEH_preInit.sqf b/addons/vehicles/XEH_preInit.sqf index 028a8aec1c..70cd66e1cc 100644 --- a/addons/vehicles/XEH_preInit.sqf +++ b/addons/vehicles/XEH_preInit.sqf @@ -6,7 +6,7 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" [ "AllVehicles", diff --git a/addons/vehicles/initSettings.sqf b/addons/vehicles/initSettings.inc.sqf similarity index 100% rename from addons/vehicles/initSettings.sqf rename to addons/vehicles/initSettings.inc.sqf diff --git a/addons/vehicles/stringtable.xml b/addons/vehicles/stringtable.xml index 84c094bc1a..741901d75c 100644 --- a/addons/vehicles/stringtable.xml +++ b/addons/vehicles/stringtable.xml @@ -25,8 +25,10 @@ Tempomat włączony クルーズコントロールを有効化 开启巡航模式 + Controllo di Velocità Attivo Круиз-контроль включён Control de crucero encendido + Régulateur de vitesse activé Speed Limiter off @@ -52,8 +54,10 @@ Tempomat wyłączony クルーズコントロールを無効化 关闭巡航模式 + Controllo di Velocità Non Attivo Круиз-контроль выключен Control de crucero apagado + Régulateur de vitesse désactivé Speed Limit @@ -95,8 +99,10 @@ Tempomat クルーズコントロール 巡航模式 + Controllo di Velocità Круиз-контроль Contro de crucero + Régulateur de vitesse Increase Speed Limit @@ -142,7 +148,7 @@ 关闭引擎自动熄火 Désactiver l'arrêt automatique du moteur Wyłącz automatyczne wyłączanie silnika - Disattivare lo spegnimento automatico del motore + Disattiva lo spegnimento automatico del motore Otomatik motor durdurmayı devre dışı bırak 자동으로 엔진 끄기 비활성화 @@ -156,7 +162,7 @@ Zabraň automatickému vypnutí motoru při opuštění vozidla. 避免離開載具時自動熄火。 避免离开载具时自动熄火。 - Impedire lo spegnimento automatico del motore quando si esce dai veicoli. + Impedisce lo spegnimento automatico del motore quando si esce dai veicoli. Empêche l'arrêt automatique du moteur à la sortie des véhicules. Araçtan inerken motorun otomatik kapatılmasını engelleyin. Zapobiegaj automatycznemu wyłączaniu silnika podczas wychodzenia z pojazdu. @@ -182,7 +188,7 @@ Versteckt den Abspringen-Eintrag aus dem Aktionsmenü. Benötigt Neustart des Spiels. Usuwa akcję Wyskocz z menu akcji. Wymaga restartu gry. Убирает действие 'Выпрыгнуть' из меню. (Требует перезагрузки) - アクション メニューから脱出アクションを消します。ゲームの再起動が必要です。 + アクションメニューから脱出アクションを消します。ゲームの再起動が必要です。 Oculta a opção de interação para ejetar. Requer que o jogo seja reiniciado. Oculta la entrada Expulsar del menú de acciones. Requiere un reinicio del juego. 隱藏在動作選單中逃脫動作的選項。要求遊戲重新啟動。 @@ -197,6 +203,7 @@ Schrittgröße des Geschwindigkeitsbegrenzers Przeskok limitera prędkości Pas du limiteur de vitesse + Intervalli del Limitatore di Velocità 制限速度の増減量 Krokování omezovače rychlosti Шаг ограничителя скорости diff --git a/addons/viewdistance/XEH_preInit.sqf b/addons/viewdistance/XEH_preInit.sqf index 9361d05015..894773534a 100644 --- a/addons/viewdistance/XEH_preInit.sqf +++ b/addons/viewdistance/XEH_preInit.sqf @@ -6,6 +6,6 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" ADDON = true; diff --git a/addons/viewdistance/initSettings.sqf b/addons/viewdistance/initSettings.inc.sqf similarity index 100% rename from addons/viewdistance/initSettings.sqf rename to addons/viewdistance/initSettings.inc.sqf diff --git a/addons/viewdistance/stringtable.xml b/addons/viewdistance/stringtable.xml index 2d6ae9bd96..0d97fe1f96 100644 --- a/addons/viewdistance/stringtable.xml +++ b/addons/viewdistance/stringtable.xml @@ -12,7 +12,7 @@ Látótáv-korlátozó Ограничитель дальности видимости Limitatore Distanza Visiva - 視界距離の制限 + 視界距離を制限 시야 제한기 视距限制器 視野距離限制器 @@ -29,7 +29,7 @@ Lehetővé teszi a játékosok által a látótávolság maximumának korlátozását. Позволяет ограничить максимальную дальность видимости, которая может быть установлена игроками. Consente di limitare la distanza visiva massima che può essere impostata dai giocatori. - プレイヤーへ最大の視界距離を制限できます。 + プレイヤーが設定できる最大視界距離を制限できます。 플레이어가 볼 수 있는 최대 시야를 제한합니다. 允许玩家最大的可视距离 允許玩家最大的可視距離 @@ -96,7 +96,7 @@ Korlátozza, mekkora látótávolságot állíthatnak be a kliensek (maximum 10000-ig) Устанавливает предел дальности, насколько клиенты могут увеличить свою дальность видимости (до 10000) Imposta il limite massimo a cui i client possono alzare la propria distanza visiva (massimo 10000) - 各クライアントが最大まで設定できる視界距離を設定します。(最大 10000) + 各クライアントが設定できる視界距離の上限を設定します。(最大 10000) 클라이언트가 최대 얼마나 멀리 볼 수 있는지 제한을 둡니다 (10000 까지 가능) 设定客户端最高可显示的视距(最高至10000) 設定客戶端最高可顯示的視野距離 (最高至10000) @@ -113,7 +113,7 @@ A kliens látótávolsága itt állítható be, és felülbírálható modulok által Предел дальности видимости клиентов устанавливается здесь и может быть переопределен модулем Limite per la distanza visiva del client impostato qui e può essere scavalcato dal modulo - クライアントへの視界距離の設定や、それをモジュールにより上書きできます + クライアントの表示距離の制限はここで設定され、モジュールによって上書きできます 클라이언트의 시야를 이 모듈로 덮어씌울 수 있습니다. 玩家的视距限制可在此设定,也可透过模块改写 玩家的視距限制可在此設定,也可透過模塊改寫 @@ -123,6 +123,7 @@ 设置为0将使用默认的视频设置 0으로 설정시 기존 비디오 설정을 사용합니다. Bei Einstellung auf 0 werden die Standard-Videoeinstellungen verwendet. + Se impostato su 0 verranno usate le impostazioni video predefinite. Ustawienie na 0, spowoduje użycie domyślnych ustawień wideo. 0に設定すると、デフォルトのビデオ設定が使用されます Значение 0 будет использовать настройки видео по умолчанию @@ -190,7 +191,7 @@ Megváltoztatja a játékon belüli látótávolságot, amennyiben a játékos szárazföldi járműben van. Изменяет дальность видимости в игре, когда игрок перемещается в наземном транспорте. Cambia la distanza visiva in gioco quando il giocatore è in un veicolo terrestre. - プレイヤーが車両の時の視界距離を変更します。 + プレイヤーが車両に乗っている時の視界距離を変更します。 플레이어가 차량 내부일 경우의 시야를 바꿀 수 있습니다. 改变玩家于地面载具内时的视距 改變玩家於地面載具內時的視野距離 @@ -241,7 +242,7 @@ Dinamikus objektum-látótáv Динамич. дальность отрисовки объектов Distanza Visiva Oggetti Dinamica - 動的なオブジェクトの描画距離 + 動的なオブジェクト描画距離 동적 물체 시야 动态物体的视距 動態物件的視野距離 @@ -257,7 +258,7 @@ Beállítja az objektum-látótávot a megadott látótáv koefficienseként. Устанавливает дальность отрисовки объектов как коэффициент от общей дальности видимости. Imposta la distanza visiva degli oggetti come un coefficiente basato sulla distanza visiva oppure basato sul campo visivo. - 視野角を元にするか、視界距離によるオブジェクト描画距離を決定します。視野角を元にするオプションを有効化した場合、視野角により最低と最高値が変動します。 + オブジェクト描画距離を視界距離の係数として、または視野角に基づいて設定します。視野角を元にするオプションを有効化した場合、視野角により最低と最高値が変動します。 설정된 시야 혹은 시야각(FoV)에 계수를 적용해 물체 시야를 적용합니다. 시야각를 바탕으로 하는 옵션을 활성화할 경우 시야각에 의한 최저와 최고치가 변동됩니다. 设定物体可被观察的距离,透过视距或是视野角度来决定。 設定物件可被觀察的距離,透過視野距離或是視野角度來決定。 @@ -290,7 +291,7 @@ Minimális Очень низкая Molto Basso - 最低 + 非常に低い 매우 낮음 非常低 非常低 @@ -307,7 +308,7 @@ Alacsony Низкая Basso - + 低い 낮음 @@ -324,7 +325,7 @@ Közepes Средняя Medio - 通常 + 중간 @@ -341,7 +342,7 @@ Magas Высокая Alto - + 高い 높음 @@ -358,7 +359,7 @@ Maximális Очень высокая Molto Alto - 最高 + 非常に高い 매우 높음 非常高 非常高 @@ -418,7 +419,7 @@ Esta opción no es valida! El limite es Tato volba je neplatná! Limit je Diese Option ist ungültig! Die Grenze ist - Essa opção é inválida. O limte é + Essa opção é inválida. O limite é Cette option est non valide ! La limite est de Ez a beállítás érvénytelen! A maximum mennyiség Настройка не верна! Текущий предел @@ -440,7 +441,7 @@ Videobeállítások Видео настройки Impostazioni Video - 映像設定 + 描画設定 영상 설정 影像设定 影像設定 diff --git a/addons/viewports/XEH_preInit.sqf b/addons/viewports/XEH_preInit.sqf index a8940fc7dd..ec82c949b1 100644 --- a/addons/viewports/XEH_preInit.sqf +++ b/addons/viewports/XEH_preInit.sqf @@ -6,7 +6,7 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" #ifdef POINT_CONFIG_DEBUG call compileScript [QPATHTOF(dev\debugPoints.sqf)]; diff --git a/addons/viewports/gui.hpp b/addons/viewports/gui.hpp index 50f036f0da..6cf3d16823 100644 --- a/addons/viewports/gui.hpp +++ b/addons/viewports/gui.hpp @@ -1,7 +1,7 @@ class RscTitles { class GVAR(display) { idd = -1; - onLoad = QUOTE( with uiNameSpace do { GVAR(display) = _this select 0 }; ); + onLoad = QUOTE(with uiNameSpace do { GVAR(display) = _this select 0 };); movingEnable = 0; duration = 9999999; fadeIn = 0; diff --git a/addons/viewports/initSettings.sqf b/addons/viewports/initSettings.inc.sqf similarity index 100% rename from addons/viewports/initSettings.sqf rename to addons/viewports/initSettings.inc.sqf diff --git a/addons/viewports/stringtable.xml b/addons/viewports/stringtable.xml index c2f56ae4a8..be78cdc995 100644 --- a/addons/viewports/stringtable.xml +++ b/addons/viewports/stringtable.xml @@ -6,20 +6,24 @@ ビューポート 뷰포트 观察口 + Periscopi Wizjery Триплексы Periscopios Sichtfenster + Périscopes Allows crew to look through periscopes Pozwala załodze patrzeć przez peryskop - 乗組員がペリスコープを通して外を見ることができます + 乗組員がペリスコープを通して外を見ることができるようにします 승무원이 잠망경을 통해 볼 수 있도록 허용합니다 允许乘员通过观察口观察 + Permetti all'equipaggio di guardare attraverso periscopi Разрешить экипажу смотреть сквозь перископ Permite a la tripulación asomarse a través de los periscopios Ermöglicht der Besatzung den Blick durch Periskope + Permet à l'équipage de regarder à travers des périscopes. diff --git a/addons/viewrestriction/XEH_preInit.sqf b/addons/viewrestriction/XEH_preInit.sqf index 9361d05015..894773534a 100644 --- a/addons/viewrestriction/XEH_preInit.sqf +++ b/addons/viewrestriction/XEH_preInit.sqf @@ -6,6 +6,6 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" ADDON = true; diff --git a/addons/viewrestriction/initSettings.sqf b/addons/viewrestriction/initSettings.inc.sqf similarity index 100% rename from addons/viewrestriction/initSettings.sqf rename to addons/viewrestriction/initSettings.inc.sqf diff --git a/addons/viewrestriction/stringtable.xml b/addons/viewrestriction/stringtable.xml index 1f9a755eb8..fee4a9bf33 100644 --- a/addons/viewrestriction/stringtable.xml +++ b/addons/viewrestriction/stringtable.xml @@ -11,7 +11,7 @@ Restriction Vue 人称限制 視野限制 - Visualizza Restrizione + Restrizione di Visuale Ограничение обзора Görüntüyü Kısıtla Reestricción de Vista @@ -25,7 +25,7 @@ La restriction de la vue limite l'usage de la vue à la 1ère/3ème personne globalement ou par type de véhicule. 人称限制可以设定在全局或是局部状况下能用的人称模式。 視野限制可以設定在全局或是局部狀況下能用的視野模式。 - Visualizza le impostazioni di restrizione per limitare l'utilizzo di prima e terza persona a livello globale o per tipologia di veicolo. + Impostazioni di restrizione visuale per limitare l'utilizzo di prima e terza persona a livello globale o per tipologia di veicolo. Настройки ограничения обзора при виде от 1-го или 3-го лица. Общие для всех, или Выборочные, в зависимости от техники. 1. veya 3. kişi görünümlerinin kullanımını genel olarak veya araç türüne göre sınırlamak için kısıtlama ayarlarını görüntüleyin. Opciones de Reestricción de Vista para limitar el uso de 1º o 3º persona globalmente o según el tipo de vehículo. @@ -50,7 +50,7 @@ Zmienia tryb globalny. (Domyślnie: Wyłączony) Globaler Modus. (Standard: Deaktiviert) Globális mód beállítása. Alapértelmeyett: Kikapcsolva - グローバル モードの設定。(標準: 無効) + グローバル モードの設定。 (デフォルト: 無効) 전체 모드를 사용합니다. 기본값: 사용 안 함 Mode global. Défaut: Désactivé 设定全局的人称模式。预设:关闭 @@ -80,7 +80,7 @@ Tryb selektywny piechoty. Domyślnie: Wyłączony (Wymagany tryb globalny: Selektywny) Selektiver Modus zu Fuß. (Standard: Deaktiviert, Benötigt Modus: Selektiv) Szelektív mód Gyalogosan. Alapértelmezett: Kikapcsolva (Mód: Szelektív szükséges) - 地上でのモードを選択します。(標準: 無効化 (要求モード: 選択性) + 地上でのモードを選択します。 (デフォルト: 無効化 (要求モード: 選択性) 보병 시점. 기본값: 사용 안 함 (모드-선택 필요) Mode sélectif hors des véhicules. Défaut: Désactivé (Nécessite Mode: Sélectif) 设定在步行的状况下能使用的人称模式。预设:关闭(需在全局设定中先选择'使用可选设定') @@ -110,7 +110,7 @@ Tryb selektywny pojazdów. Domyślnie: Wyłączony (Wymagany tryb globalny: Selektywny) Selektiver Modus in Landfahrzeugen. (Standard: Deaktiviert, Benötigt Modus: Selektiv) Szelektív mód a Szárazföldi Járművekben. Alapértelmezett: Kikapcsolva (Mód: Szelektív szükséges) - 地上車両でのモードを選択します。(標準: 無効化 (要求モード: 選択性) + 地上車両でのモードを選択します。 (デフォルト: 無効化 (要求モード: 選択性) 차량 시점. 기본값: 사용 안 함 (모드-선택 필요) Mode sélectif dans les véhicules terrestres. Défaut: Désactivé (Nécessite Mode: Sélectif) 设定在搭乘陆上载具的状况下能使用的人称模式。预设:关闭(需在全局设定中先选择'使用可选设定') @@ -140,7 +140,7 @@ Tryb selektywny lotnictwa. Domyślnie: Wyłączony (Wymagany tryb globalny: Selektywny) Selektiver Modus in Luftfahrzeugen. (Standard: Deaktiviert, Benötigt Modus: Selektiv) Szelektív mód a Légijárművekben. Alapértelmezett: Kikapcsolva (Mód: Szelektív szükséges) - 航空機でのモードを選択します。(標準: 無効化 (要求モード: 選択性) + 航空機でのモードを選択します。 (デフォルト: 無効化 (要求モード: 選択性) 항공기 시점. 기본값: 사용 안 함 (모드-선택 필요) Mode sélectif dans les véhicules aériens. Défaut: Désactivé (Nécessite Mode: Sélectif) 设定在搭乘空中载具的状况下能使用的人称模式。预设:关闭(需在全局设定中先选择'使用可选设定') @@ -170,7 +170,7 @@ Tryb selektywny jednostek pływających. Domyślnie: Wyłączony (Wymagany tryb globalny: Selektywny) Selektiver Modus zu Fuß. (Standard: Deaktiviert, Benötigt Modus: Selektiv) Szelektív mód a Vízi Járművekben. Alapértelmezett: Kikapcsolva (Mód: Szelektív szükséges) - 船舶でのモードを選択します。(標準: 無効化 (要求モード: 選択性) + 船舶でのモードを選択します。 (デフォルト: 無効化 (要求モード: 選択性) 함선 시점. 기본값: 사용 안 함 (모드-선택 필요) Mode sélectif dans les véhicules marins. Défaut: Désactivé (Nécessite Mode: Sélectif) 设定在搭乘水上载具的状况下能使用的人称模式。预设:关闭(需在全局设定中先选择'使用可选设定') @@ -200,12 +200,12 @@ Tryb selektywny UAV. Domyślnie: Wyłączony (Wymagany tryb globalny: Selektywny) Selektiver Modus in unbemannten Luftfahrzeugen. (Standard: Deaktiviert, Benötigt Modus: Selektiv Szelektív mód a Pilóta Nélküli Légijárművekben. Alapértelmezett: Kikapcsolva (Mód: Szelektív szükséges) - 無人機でのモードを選択します。(標準: 無効化 (要求モード: 選択性) + 無人機でのモードを選択します。 (デフォルト: 無効化 (要求モード: 選択性) 무인기 시점. 기본값: 사용 안 함 (모드-선택 필요) Mode sélectif dans les drones. Défaut: Désactivé (Nécessite Mode: Sélectif) 设定在搭乘无人载具的状况下能使用的人称模式。预设:关闭(需在全局设定中先选择'使用可选设定') 設定在搭乘無人載具的狀況下能使用的視野模式。預設:關閉(需在全局設定中先選擇'使用可選設定') - Modalità selettiva su UAVi. Default: Disabilitato (Necessita della Modalità: Selettiva) + Modalità selettiva su UAV. Default: Disabilitato (Necessita della Modalità: Selettiva) Выборочные установки для беспилотников. По умолчанию: Отключено (требуется режим: Выборочные) IHA araçlarında iken seçilen görüş modu. Varsayılan: Etkin Değil Modo selectivo en VANTs. Defecto: Deshabilitado (Requiere Modo: Selectivo) @@ -216,6 +216,7 @@ Deaktiviert Kikapcsolva 無効 + Disabilitata 사용 안 함 Désactivé 关闭 @@ -228,6 +229,7 @@ Forced 1st Person Wymuś 1. osobę Erzwungene Egoperspektive + Prima persona forzata 1人称視点に強制 강제 1인칭 Impose la 1ère personne @@ -241,6 +243,7 @@ Forced 3rd Person Wymuś 3. osobę Erzwungene Third-Person-Perspektive + Terza persona forzata 3人称視点に強制 강제 3인칭 Impose la 3ème personne @@ -254,6 +257,7 @@ Selective Selektywny Selektiv + Selettiva Szelektív 選択性 선택 @@ -267,26 +271,30 @@ Preserve view for vehicle types Behalte die Ansicht bei Fahrzeugtypen bei + Mantieni visuale per tipo di veicolo Запоминать вид для типов техники - 車両の種類により視点を変更 + 車両の種別により視点を変更 保留載具的視野模式 保留载具的人称模式 Zachowaj ustawienie widoku dla pojazdów Araç türleri için görünümü koru 차량 타입에 따른 시야 정보 저장 Preservar vista para los tipos de vehículos + Conserver la vue pour les types de véhicules Switch view on vehicle change to last used in this vehicle type (Requires Mode: Disabled) Wechsel die Ansicht bei Fahrzeugwechsel zu der zuletzt genutzen in diesen Fahrzeugtyp. (Benötigt Modus: Ausgeschaltet) + Cambia la visuale quando si cambia veicolo a quella usata la volta precedente su un veicolo dello stesso tipo (Richiede modalità: Disattivata) Переключать вид при смене техники на последний использованный в данном типе техники (требуется режим: Отключено) - 車両の種類により最後に使用した視点へ切り替え (無効モードでのみ有効) + 車両変更時の視点をその車両種別で最後に使用したものに切り替えます (要求モード: 無効) 切換到載具時自動切換到上次最後使用的視野模式(需求模式:關閉) 切换到载具时自动切换到上次最后使用的人称模式(需求模式:关闭) Zmień widok podczas zmiany pojazdu na ustawienie widoku z ostatniego używanego pojazdu tego typu (Wymaga Tryb: Wyłączony Araçlar için en son kullanılan bakış türünü kaydet. 해당 차량 타입에서 마지막으로 사용했던 시야로 설정하여 봅니다 (모드 - 사용 안함 필요) Cambiar vista en el cambio de vehículo hacia la última usada en ese tipo de vehículo (Requiere Modo: Deshabilitado) + Lors d'un changement de véhicule, change la vue pour la dernière utilisée dans ce type de véhicule (Mod requis : désactivé). diff --git a/addons/volume/XEH_preInit.sqf b/addons/volume/XEH_preInit.sqf index ae4979ef36..775f4d71d5 100644 --- a/addons/volume/XEH_preInit.sqf +++ b/addons/volume/XEH_preInit.sqf @@ -6,7 +6,7 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" GVAR(isLowered) = false; GVAR(initialGameVolume) = soundVolume; diff --git a/addons/volume/initSettings.sqf b/addons/volume/initSettings.inc.sqf similarity index 100% rename from addons/volume/initSettings.sqf rename to addons/volume/initSettings.inc.sqf diff --git a/addons/volume/stringtable.xml b/addons/volume/stringtable.xml index a7c75769c3..ea0eabf4eb 100644 --- a/addons/volume/stringtable.xml +++ b/addons/volume/stringtable.xml @@ -23,7 +23,7 @@ 음량 토글 切换音量 切換音量 - Attiva Volume + Cambia Volume Переключить громкость Przełącz Głosność Sesi Aç/Kapat @@ -37,7 +37,7 @@ 토글하여 음량 감소합니다. 切换降低音量。 切換降低音量。 - Attiva riduzione del volume. + Cambia Riduzione del Volume. Переключает уменьшение громкости Przełącz redukcje głosności Ses azaltmayı aç / kapat. @@ -51,7 +51,7 @@ 음량 감소됨 降低音量 降低音量 - Volume diminuito + Volume Abbassato Громкость снижена Zmniejszona głosność Azaltılmış ses @@ -65,7 +65,7 @@ 음량 복구됨 恢复音量 回復音量 - Volume ripristinato + Volume Ripristinato Громкость восстановлена Przywrócona głosność Volumen restaurado @@ -132,7 +132,7 @@ 설정 보기 显示提示 顯示提示 - Mostra notifiche + Mostra notifica Показывать уведомление Pokaż powiadomienie Bildirim Göster @@ -146,7 +146,7 @@ 음량이 감소/복구될 때 메시지를 표시합니다. 当正在降低/恢复音量时显示提示。 當正在降低/回復音量時顯示提示。 - Mostra notifiche mentre si abbassa/ripristina il volume. + Mostra notifiche quando si abbassa/ripristina il volume. Показывать уведомление при уменьшении/восстановлении громкости Pokaż powiadomienie zmniejszając/odnawiając głosność Ses azaltıldığın da bildirim göster. @@ -155,12 +155,12 @@ Fade delay Ausblendzeit - フェードへの遅延 + フェードの遅延 Retard fondu 페이드 지연 淡出/入延迟 淡出/入延遲 - Latenza della dissolvenza + Latenza del cambio volume Задержка затухания Opoznienie wyciszenia Retardo en disminución gradual @@ -168,12 +168,12 @@ Time it takes (in seconds) for the sound to fade in/out. Zeit, die es benötigt (in Sekunden), für das Geräusch, ein- bzw. auszublenden. - 音がフェードイン、アウトするまでの時間 (秒) を決定します。 + 音がフェードイン/アウトするまでの時間 (秒) を決定します。 Temps nécessaire (en secondes) aux sons pour être réduits/rétablis. 페이드 인/아웃 되는데 걸리는 시간(초) 设定音量淡出/入时所需的秒数。 設定音量淡出/入時所需的秒數。 - Il tempo che impiega (in secondi) il suono a dissolversi entrata/uscita. + Il tempo che impiega (in secondi) il suono a cambiare volume. Время (сек.) для затухания/восстановления звука. Ilość czasu (w sekundach) ile zajmuje wyciszenie/zgłośnienie dźwięku Tiempo que tarda (en segundos) para que se active o desactive la disminuación gradual del volumen @@ -186,7 +186,7 @@ 감소 시 알림 降低音量时是否提醒 降低音量時是否提醒 - Sollecita se diminuito + Notifica se diminuito Напоминать о снижении громкости Przypomnij o zmniejszonej głosności dźwięku Eğer Düşükse Hatırlat @@ -200,7 +200,7 @@ 음량이 감소되면 매 분 마다 알려줍니다 开启后会每分钟警告一次你的音量已被降低。 開啟後會每分鐘警告一次你的音量已被降低。 - Ti notifica ogni minuto se il tuo volume è basso. + Ti notifica ogni minuto se il tuo volume è abbassato. Ежеминутное напоминание о сниженной громкости Przypomina co minuten o zmniejszonej głosności dźwięku Eğer ses düşükse her dakika hatırlatır. @@ -214,7 +214,7 @@ 음량 감소 중 降低音量中 降低音量中 - Il volume è ancora basso + Il volume è ancora abbassato Громкость все еще снижена Dźwięk jest nadal zmniejszony Ses hala düşük diff --git a/addons/weaponselect/XEH_preInit.sqf b/addons/weaponselect/XEH_preInit.sqf index 01c9f2484f..25d6b9b5d5 100644 --- a/addons/weaponselect/XEH_preInit.sqf +++ b/addons/weaponselect/XEH_preInit.sqf @@ -26,6 +26,6 @@ GVAR(GrenadesNonFrag) = []; false } count getArray (configFile >> "CfgWeapons" >> "Throw" >> "muzzles"); -#include "initSettings.sqf" +#include "initSettings.inc.sqf" ADDON = true; diff --git a/addons/weaponselect/initSettings.sqf b/addons/weaponselect/initSettings.inc.sqf similarity index 100% rename from addons/weaponselect/initSettings.sqf rename to addons/weaponselect/initSettings.inc.sqf diff --git a/addons/weaponselect/stringtable.xml b/addons/weaponselect/stringtable.xml index 37410f70a2..4369c3b5f9 100644 --- a/addons/weaponselect/stringtable.xml +++ b/addons/weaponselect/stringtable.xml @@ -11,8 +11,8 @@ Afficher du texte lors d'un lancé de grenade Szöveg mutatása gránát eldobásakor Mostra indicazioni nel lancio granate - Mostrat texto ao lançar granada - 手榴弾を投げるときに通知 + Mostrar texto ao lançar granada + 手榴弾投擲時に通知 수류탄 투척 시 화면에 문자 표시 投掷手榴弹时显示提示信息 投擲手榴彈時顯示提示訊息 @@ -27,7 +27,7 @@ Affiche un texte ou une notification lors d'un lancé de grenade. Jelez egy súgót vagy szöveget a gránát eldobásakor. Mostra una notifica quando si lanciano granate - Mostra um hint ou texto ao lançar uma granada + Mostra uma notificação ou texto ao lançar uma granada 手榴弾を投げるときに、ヒントか文で通知します。 수류탄 투척 시 화면에 문자나 힌트를 표시합니다. 投掷手榴弹时显示提示信息。 @@ -178,7 +178,7 @@ Elsődleges Fegyver Kiválasztása Zvolit Hlavní Zbraň Selecionar Arma Principal - Seleziona Arma Primaria + Seleziona Cannone Primario Выбрать основное оружие 主砲を選択 주포 선택 @@ -197,7 +197,7 @@ Selecionar Metralhadora Seleziona Mitragliatrice Выбрать пулемёт - 機関砲を選択 + 機銃を選択 기관총 선택 选择机枪 選擇機槍 @@ -246,9 +246,9 @@ Gránát előkészítése Подготовить гранату Grenade prête - Granata pronta + Prepara Granata Granada pronta - 投てきよし + 手榴弾を準備 투척물 준비 准备手榴弹 準備手榴彈 @@ -299,7 +299,7 @@ Lançar Granada Selecionada Lancia la Granata Selezionata Бросить выбранную гранату - 選択された手榴弾を投げる + 選択された手榴弾を投擲 선택된 투척물 투척 投掷选择的手榴弹 投擲選擇的手榴彈 @@ -316,7 +316,7 @@ Гранат не осталось Granate esaurite Sem mais granadas - もう手榴弾は無い + 手榴弾は残っていない 투척물 없음 已无手榴弹 已無手榴彈 @@ -333,7 +333,7 @@ Não há granadas de fragmentação restantes Nessuna granata a frammentazione rimanente Осколочных гранат нет - もう破片手榴弾は無い + 破片手榴弾は残っていない 세열 수류탄 없음 已无破片手榴弹 已無破片手榴彈 @@ -349,7 +349,7 @@ Não há outras granadas restantes Nessun'altra granata rimanente. Нелетальные гранаты закончились - もうその他の手榴弾は無い + その他の手榴弾は残っていない 기타 투척물 없음 已无其他手榴弹 已無其他手榴彈 @@ -365,7 +365,7 @@ Nenhuma granada selecionada Nessuna granata selezionata Нет выбранной гранаты - 手榴弾は選択されていない + 手榴弾は未選択 선택된 수류탄 없음 未选择手榴弹 未選擇手榴彈 @@ -380,9 +380,9 @@ Wystrzel granat dymny Füstvető eltüzelése Пустить дымовую завесу - Lancia fumogeno + Lancia Cortina Fumogena Lançador de fumaça - 発煙弾発射機を発射 + 発煙弾を発射 연막발사기 박사 发射烟雾发射器 發射煙霧發射器 diff --git a/addons/weather/XEH_preInit.sqf b/addons/weather/XEH_preInit.sqf index 438c3e9962..bae7c82516 100644 --- a/addons/weather/XEH_preInit.sqf +++ b/addons/weather/XEH_preInit.sqf @@ -7,7 +7,7 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" // Make sure this data is read before client/server postInit call FUNC(getMapData); diff --git a/addons/weather/functions/fnc_updateWeather.sqf b/addons/weather/functions/fnc_updateWeather.sqf index b5495d67c5..d7f629147d 100644 --- a/addons/weather/functions/fnc_updateWeather.sqf +++ b/addons/weather/functions/fnc_updateWeather.sqf @@ -20,8 +20,8 @@ missionNamespace setVariable [QGVAR(currentOvercast), overcast, true]; [] call FUNC(updateTemperature); [] call FUNC(updateHumidity); -// Wind simulation -if (GVAR(windSimulation) && CBA_missionTime > GVAR(next_wind_udpate)) then { +// Wind simulation, take API for temporarily disabling into account along with setting +if (GVAR(windSimulation) && {!(missionNamespace getVariable [QGVAR(disableWindSimulation), false])} && {CBA_missionTime > GVAR(next_wind_udpate)}) then { GVAR(current_wind_direction) = GVAR(next_wind_direction); GVAR(current_wind_speed) = GVAR(next_wind_speed); diff --git a/addons/weather/functions/fnc_updateWind.sqf b/addons/weather/functions/fnc_updateWind.sqf index 0a821b19c0..af3d414a18 100644 --- a/addons/weather/functions/fnc_updateWind.sqf +++ b/addons/weather/functions/fnc_updateWind.sqf @@ -15,6 +15,9 @@ * Public: No */ +// Public API to temporarily disable wind simulation +if (missionNamespace getVariable [QGVAR(disableWindSimulation), false]) exitWith {}; + private _speed = linearConversion [GVAR(last_wind_update), GVAR(next_wind_udpate), CBA_missionTime, GVAR(current_wind_speed), GVAR(next_wind_speed), true]; private _direction = linearConversion [GVAR(last_wind_update), GVAR(next_wind_udpate), CBA_missionTime, GVAR(current_wind_direction), GVAR(next_wind_direction), true]; diff --git a/addons/weather/initSettings.sqf b/addons/weather/initSettings.inc.sqf similarity index 100% rename from addons/weather/initSettings.sqf rename to addons/weather/initSettings.inc.sqf diff --git a/addons/weather/stringtable.xml b/addons/weather/stringtable.xml index f8f649fb48..55306f4a01 100644 --- a/addons/weather/stringtable.xml +++ b/addons/weather/stringtable.xml @@ -62,7 +62,7 @@ Module météo ACE synchronisé en multijoueur. Többjátékos szinkronizált ACE időjárás modul ACE Модуль для синхронизации погоды в мультиплеере - Modulo Sincronizzazione Meteo ACE Multiplayer + Modulo Sincronizzazione Meteo ACE Multigiocatore ACE 天候モジュールではマルチプレイで同期します。 ACE 기후 모듈과 멀티플레이가 동기화됩니다. 使用 ACE 天气模块来同步所有客户端的天气状态(多人游戏) @@ -89,14 +89,14 @@ Expands the existing weather by temperature, humidity and air pressure. Erweitert das vorhandene Wetter um Temperatur, Luftfeuchtigkeit und Luftdruck. - Espande il tempo esistente per temperatura, umidità e pressione dell'aria. + Espande il tempo esistente con temperatura, umidità e pressione dell'aria. 透過增加濕度、溫度與氣壓來增強天氣模擬的表現。 透过增加湿度、温度与气压来增强天气模拟的表现。 気温や湿度、大気圧によって既存の天候を拡張します。 온도, 습도 및 기압에 따라 기존 날씨를 확장합니다. Poszerza istniejącą pogodę o temperaturę, wilgotność i ciśnienie powietrza. Расширяет текущие возможности погоды с учетом температуры, влажности и давления - Expande o clima existente com temperatura, humidade e pressão do ar. + Expande o clima existente com temperatura, umidade e pressão do ar. Rozšiřuje stávající počasí o teplotu, vlhkost a tlak vzduchu. Améliore le module météo existant en y ajoutant la température, l'humidité et la pression atmosphérique. Mevcut havayı sıcaklık, nem ve hava basıncı ile genişletir. @@ -112,7 +112,7 @@ Intervalle de mises à jour Frissítési intervallum Интервал обновления - Intervallo Aggiornamento + Intervallo Aggiornamenti 更新間隔 갱신 간격 更新间隔 @@ -129,7 +129,7 @@ Définit l'intervalle (en secondes) entre les mises à jour des conditions météo. Megadja az intervallumot (másodpercben) az időjárás-frissítések között Определяет интервал (в секундах) между обновлениями погоды - Definisce l'intervallo(in secondi) tra aggiornamenti del meteo + Definisce l'intervallo (in secondi) tra aggiornamenti del meteo 天候を更新する間隔を定義します。(秒) 기후를 갱신하는 간격을 초 단위로 정합니다. 设定天气更新的时间间隔(秒) @@ -158,8 +158,8 @@ Abilita la simulazione del vento basato sulla mappa (sovrascrive il vento vanilla) 啟用後將遵照地圖特色進行風力模擬(覆蓋掉官方原版的風力模擬) 启用后将遵照地图特色进行风力模拟(覆盖掉官方原版的风力模拟) - マップを基にした風シミュレーションを有効化 (標準の風を上書き) - 지도 기반의 바람 시뮬레이션을 활성화합니다. (바닐라 바람을 덮음) + マップを基にした風シミュレーションを有効化 (ゲーム標準の風を上書き) + 지도 기반의 바람 시뮬레이션을 활성화합니다. (바닐라 바람을 덮어 씀) Aktywuje symulację wiatru bazującą na mapie (nadpisuje wind z domyślnej wersji gry) Включает симуляцию ветра на основе текущей местности (переписывает ванильный ветер) Ativar a simulação de vento dos mapas. (sobrepõe vento vanilla) @@ -173,7 +173,7 @@ Überprüfe Lufttemperatur 檢查氣溫 检查气温 - Controllare la temperatura dell'aria + Controlla temperatura dell'aria Zkontrolovat teplotu vzduchu 気温を確認 Sprawdź temperaturę powietrza @@ -189,9 +189,9 @@ Zeige "Überprüfe Lufttemperatur" im Selbstinteraktionsmenü 顯示檢查氣溫動作 显示检查气温选项 - Mostra Controlla l'azione della temperatura dell'aria + Mostra l'azione di controllo della temperatura dell'aria Ukázat akci kontroly teploty vzduchu - 気温の確認動作を表示 + 気温を確認のアクションを表示 Pokaż akcje sprawdzającą temperaturę powietrza Afficher l'interaction "Vérifier la température" Mostrar a ação "Checar a temperatura do ar" diff --git a/addons/winddeflection/XEH_preInit.sqf b/addons/winddeflection/XEH_preInit.sqf index 9361d05015..894773534a 100644 --- a/addons/winddeflection/XEH_preInit.sqf +++ b/addons/winddeflection/XEH_preInit.sqf @@ -6,6 +6,6 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" ADDON = true; diff --git a/addons/winddeflection/initSettings.sqf b/addons/winddeflection/initSettings.inc.sqf similarity index 100% rename from addons/winddeflection/initSettings.sqf rename to addons/winddeflection/initSettings.inc.sqf diff --git a/addons/winddeflection/stringtable.xml b/addons/winddeflection/stringtable.xml index 03acec7e34..d0c0863a6e 100644 --- a/addons/winddeflection/stringtable.xml +++ b/addons/winddeflection/stringtable.xml @@ -61,7 +61,7 @@ Météo Wetterinformationen Időjárás-Információ - Meteo + Informazioni Meteo Informação Meteorológica 天候の情報 기상 정보 @@ -79,7 +79,7 @@ Luftfeuchtigkeit: %1 Páratartalom: %1% Umidità: %1% - Humidade: %1% + Umidade: %1% 湿度: %1% 습도: %1% 湿度:%1% diff --git a/addons/xm157/functions/fnc_keyPress.sqf b/addons/xm157/functions/fnc_keyPress.sqf index b55e6988aa..c5e4760563 100644 --- a/addons/xm157/functions/fnc_keyPress.sqf +++ b/addons/xm157/functions/fnc_keyPress.sqf @@ -22,6 +22,7 @@ if (!GVAR(shown)) exitWith { false }; // fast exit if not shown if (!([ACE_player, objNull, ["isNotInside"]] call EFUNC(common,canInteractWith))) exitWith { false }; if (!(ACE_player call CBA_fnc_canUseWeapon)) exitWith { false }; +if (currentMuzzle ACE_player != currentWeapon ACE_player) exitWith { false }; private _display = uinamespace getVariable [QGVAR(display), displayNull]; if (isNull _display) exitWith { ERROR("keyPress-no display"); false }; diff --git a/addons/yardage450/XEH_postInit.sqf b/addons/yardage450/XEH_postInit.sqf index 2d4ef89968..2959360f7d 100644 --- a/addons/yardage450/XEH_postInit.sqf +++ b/addons/yardage450/XEH_postInit.sqf @@ -1,6 +1,6 @@ #include "script_component.hpp" -#include "initKeybinds.sqf" +#include "initKeybinds.inc.sqf" GVAR(active) = false; diff --git a/addons/yardage450/initKeybinds.sqf b/addons/yardage450/initKeybinds.inc.sqf similarity index 100% rename from addons/yardage450/initKeybinds.sqf rename to addons/yardage450/initKeybinds.inc.sqf diff --git a/addons/yardage450/stringtable.xml b/addons/yardage450/stringtable.xml index cf955f8a74..4e94b4a5d8 100644 --- a/addons/yardage450/stringtable.xml +++ b/addons/yardage450/stringtable.xml @@ -27,7 +27,7 @@ Medidor de Distância a laser Lézeres távolságmérő Лазерный дальномер - Distanziometro Laser + Telemetro Laser Télémètre laser レーザー測距機 레이저 거리측정기 diff --git a/addons/zeus/CfgVehicles.hpp b/addons/zeus/CfgVehicles.hpp index 4ae07fdedc..2a1f261125 100644 --- a/addons/zeus/CfgVehicles.hpp +++ b/addons/zeus/CfgVehicles.hpp @@ -191,6 +191,13 @@ class CfgVehicles { function = QFUNC(moduleLoadIntoCargo); icon = "a3\ui_f\data\IGUI\Cfg\Actions\loadVehicle_ca.paa"; }; + class GVAR(moduleUnloadFromCargo): GVAR(moduleBase) { + curatorCanAttach = 1; + category = QGVAR(Utility); + displayName = CSTRING(ModuleUnloadFromCargo_DisplayName); + function = QFUNC(moduleUnloadFromCargo); + icon = "a3\ui_f\data\IGUI\Cfg\Actions\loadVehicle_ca.paa"; + }; class GVAR(moduleCargoParadrop): GVAR(moduleBase) { curatorCanAttach = 1; category = QGVAR(AI); @@ -336,6 +343,13 @@ class CfgVehicles { function = QFUNC(moduleBurn); icon = QPATHTOF(ui\Icon_Module_Zeus_Burn_ca.paa); }; + class GVAR(moduleMedicalMenu): GVAR(moduleBase) { + curatorCanAttach = 1; + category = QGVAR(Medical); + displayName = CSTRING(ModuleMedicalMenu_DisplayName); + function = QFUNC(moduleMedicalMenu); + icon = QPATHTOF(UI\Icon_Module_Zeus_Medic_ca.paa); + }; class Man; class CAManBase: Man { @@ -345,7 +359,7 @@ class CfgVehicles { condition = QUOTE(call FUNC(canCreateModule)); exceptions[] = {"isNotSwimming", "isNotInside", "isNotSitting", "isNotOnLadder", "isNotRefueling"}; //Set GVAR(zeus) to null first to disable the action through the isNil check - statement = QUOTE(GVAR(zeus) = objNull; [ARR_2(QQGVAR(createZeus), ACE_player)] call CBA_fnc_serverEvent); + statement = QUOTE(GVAR(zeus) = objNull; [ARR_2(QQGVAR(createZeus),ACE_player)] call CBA_fnc_serverEvent); showDisabled = 1; icon = "\A3\Ui_F_Curator\Data\Logos\arma3_curator_eye_32_ca.paa"; }; diff --git a/addons/zeus/XEH_PREP.hpp b/addons/zeus/XEH_PREP.hpp index 46cbbeb446..8de15147bd 100644 --- a/addons/zeus/XEH_PREP.hpp +++ b/addons/zeus/XEH_PREP.hpp @@ -8,11 +8,11 @@ PREP(bi_moduleRemoteControl); PREP(canCreateModule); PREP(getModuleDestination); PREP(handleZeusUnitAssigned); -PREP(moduleAddArsenal); PREP(moduleAddAceArsenal); +PREP(moduleAddArsenal); +PREP(moduleAddOrRemoveFRIES); PREP(moduleAddSpareTrack); PREP(moduleAddSpareWheel); -PREP(moduleAddOrRemoveFRIES); PREP(moduleBurn); PREP(moduleCaptive); PREP(moduleCargoParadrop); @@ -23,13 +23,14 @@ PREP(moduleGroupSide); PREP(moduleHeal); PREP(moduleLayTrench); PREP(moduleLoadIntoCargo); -PREP(moduleRemoveArsenal); +PREP(moduleMedicalMenu); PREP(moduleRemoveAceArsenal); +PREP(moduleRemoveArsenal); PREP(moduleSearchNearby); PREP(moduleSetEngineer); PREP(moduleSetMedic); -PREP(moduleSetMedicalVehicle); PREP(moduleSetMedicalFacility); +PREP(moduleSetMedicalVehicle); PREP(moduleSetRepairFacility); PREP(moduleSetRepairVehicle); PREP(moduleSimulation); @@ -42,6 +43,7 @@ PREP(moduleToggleFlashlight); PREP(moduleToggleNvg); PREP(moduleUnconscious); PREP(moduleUnGarrison); +PREP(moduleUnloadFromCargo); PREP(moduleZeusSettings); PREP(showMessage); PREP(ui_attributeCargo); diff --git a/addons/zeus/XEH_postInit.sqf b/addons/zeus/XEH_postInit.sqf index c1dba7e0e4..b4d1302ab5 100644 --- a/addons/zeus/XEH_postInit.sqf +++ b/addons/zeus/XEH_postInit.sqf @@ -19,20 +19,32 @@ if (isServer) then { [QGVAR(addObjects), { params ["_objects", ["_curator", objNull]]; - if (!isNull _curator) exitWith {_curator addCuratorEditableObjects [_objects, true]}; + // If valid object + if (_curator isEqualType objNull && {!isNull _curator}) exitWith {_curator addCuratorEditableObjects [_objects, true]}; + + // If invalid object (= objNull) or other + if !(_curator isEqualType []) then { + _curator = allCurators; + }; { _x addCuratorEditableObjects [_objects, true]; - } forEach allCurators; + } forEach _curator; }] call CBA_fnc_addEventHandler; [QGVAR(removeObjects), { params ["_objects", ["_curator", objNull]]; - if (!isNull _curator) exitWith {_curator removeCuratorEditableObjects [_objects, true]}; + // If valid object + if (_curator isEqualType objNull && {!isNull _curator}) exitWith {_curator removeCuratorEditableObjects [_objects, true]}; + + // If invalid object (= objNull) or other + if !(_curator isEqualType []) then { + _curator = allCurators; + }; { _x removeCuratorEditableObjects [_objects, true]; - } forEach allCurators; + } forEach _curator; }] call CBA_fnc_addEventHandler; [QGVAR(createZeus), { diff --git a/addons/zeus/XEH_preInit.sqf b/addons/zeus/XEH_preInit.sqf index c1bea7c581..12bd359866 100644 --- a/addons/zeus/XEH_preInit.sqf +++ b/addons/zeus/XEH_preInit.sqf @@ -19,6 +19,6 @@ if (isServer) then { GVAR(GlobalSkillAI) = [0.5,0.5,0.5,0.5,true,true]; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" ADDON = true; diff --git a/addons/zeus/config.cpp b/addons/zeus/config.cpp index 8b752771b7..2714c247b0 100644 --- a/addons/zeus/config.cpp +++ b/addons/zeus/config.cpp @@ -49,12 +49,14 @@ class CfgPatches { QGVAR(moduleUnconscious), QGVAR(moduleSetMedic), QGVAR(moduleSetMedicalVehicle), - QGVAR(moduleSetMedicalFacility) + QGVAR(moduleSetMedicalFacility), + QGVAR(moduleMedicalMenu) }; }; class GVAR(cargo): ADDON { units[] = { QGVAR(moduleLoadIntoCargo), + QGVAR(moduleUnloadFromCargo), QGVAR(moduleCargoParadrop) }; }; diff --git a/addons/zeus/functions/fnc_bi_moduleArsenal.sqf b/addons/zeus/functions/fnc_bi_moduleArsenal.sqf index f2be4a3838..7378cae65e 100644 --- a/addons/zeus/functions/fnc_bi_moduleArsenal.sqf +++ b/addons/zeus/functions/fnc_bi_moduleArsenal.sqf @@ -33,7 +33,7 @@ if (_activated && local _logic) then { }; if (_error == "") then { - if (["ACE_Arsenal"] call EFUNC(common,isModLoaded)) then { + if (["ace_arsenal"] call EFUNC(common,isModLoaded)) then { if (!isPlayer _unit || {player == _unit}) then { [{ diff --git a/addons/zeus/functions/fnc_moduleAddSpareTrack.sqf b/addons/zeus/functions/fnc_moduleAddSpareTrack.sqf index 208e781319..2e4efca6e0 100644 --- a/addons/zeus/functions/fnc_moduleAddSpareTrack.sqf +++ b/addons/zeus/functions/fnc_moduleAddSpareTrack.sqf @@ -32,10 +32,10 @@ if !(["ace_cargo"] call EFUNC(common,isModLoaded) && ["ace_repair"] call EFUNC(c if !(alive _mouseOverUnit) then { [LSTRING(OnlyAlive)] call FUNC(showMessage); } else { - if (getNumber (configFile >> "CfgVehicles" >> "ACE_Track" >> QEGVAR(cargo,size)) > [_mouseOverUnit] call EFUNC(cargo,getCargoSpaceLeft)) then { + if ("ACE_Track" call EFUNC(cargo,getSizeItem) > _mouseOverUnit call EFUNC(cargo,getCargoSpaceLeft)) then { [LSTRING(OnlyEnoughCargoSpace)] call FUNC(showMessage); } else { - ["ace_addCargo", ["ACE_Track", _mouseOverUnit, 1, true]] call CBA_fnc_localEvent; + ["ace_addCargo", ["ACE_Track", _mouseOverUnit, 1]] call CBA_fnc_localEvent; }; }; }; diff --git a/addons/zeus/functions/fnc_moduleAddSpareWheel.sqf b/addons/zeus/functions/fnc_moduleAddSpareWheel.sqf index 1746b1045a..d913300709 100644 --- a/addons/zeus/functions/fnc_moduleAddSpareWheel.sqf +++ b/addons/zeus/functions/fnc_moduleAddSpareWheel.sqf @@ -32,10 +32,10 @@ if !(["ace_cargo"] call EFUNC(common,isModLoaded) && ["ace_repair"] call EFUNC(c if !(alive _mouseOverUnit) then { [LSTRING(OnlyAlive)] call FUNC(showMessage); } else { - if (getNumber (configFile >> "CfgVehicles" >> "ACE_Wheel" >> QEGVAR(cargo,size)) > [_mouseOverUnit] call EFUNC(cargo,getCargoSpaceLeft)) then { + if ("ACE_Wheel" call EFUNC(cargo,getSizeItem) > _mouseOverUnit call EFUNC(cargo,getCargoSpaceLeft)) then { [LSTRING(OnlyEnoughCargoSpace)] call FUNC(showMessage); } else { - ["ace_addCargo", ["ACE_Wheel", _mouseOverUnit, 1, true]] call CBA_fnc_localEvent; + ["ace_addCargo", ["ACE_Wheel", _mouseOverUnit, 1]] call CBA_fnc_localEvent; }; }; }; diff --git a/addons/zeus/functions/fnc_moduleLayTrench.sqf b/addons/zeus/functions/fnc_moduleLayTrench.sqf index e92725138f..fe4e29b62c 100644 --- a/addons/zeus/functions/fnc_moduleLayTrench.sqf +++ b/addons/zeus/functions/fnc_moduleLayTrench.sqf @@ -27,6 +27,9 @@ if !(["ace_trenches"] call EFUNC(common,isModLoaded)) exitWith { [LSTRING(RequiresAddon)] call FUNC(showMessage); }; +if (_logic getVariable [QGVAR(ran), false]) exitWith {}; +_logic setVariable [QGVAR(ran), true]; + private _drawCode = { params ["_object", "_mousePos"]; private _startPos = getPos _object; diff --git a/addons/zeus/functions/fnc_moduleMedicalMenu.sqf b/addons/zeus/functions/fnc_moduleMedicalMenu.sqf new file mode 100644 index 0000000000..a69a65fb74 --- /dev/null +++ b/addons/zeus/functions/fnc_moduleMedicalMenu.sqf @@ -0,0 +1,41 @@ +#include "..\script_component.hpp" +/* + * Author: Brett Mayson + * Opens the medical menu for the unit + * + * Arguments: + * 0: The module logic + * + * Return Value: + * None + * + * Example: + * [LOGIC] call ace_zeus_fnc_moduleMedicalMenu + * + * Public: No + */ + +params ["_logic"]; + +if !(local _logic) exitWith {}; + +private _unit = attachedTo _logic; +deleteVehicle _logic; + +switch (false) do { + case !(isNull _unit): { + [LSTRING(NothingSelected)] call FUNC(showMessage); + }; + case (_unit isKindOf "CAManBase"): { + [LSTRING(OnlyInfantry)] call FUNC(showMessage); + }; + case (["ace_medical_gui"] call EFUNC(common,isModLoaded)): { + [LSTRING(RequiresAddon)] call FUNC(showMessage); + }; + case ([objNull, _unit] call EFUNC(medical_gui,canOpenMenu)): { + [LSTRING(MedicalMenuDisabled)] call FUNC(showMessage); + }; + default { + [_unit] call EFUNC(medical_gui,openMenu); + }; +}; diff --git a/addons/zeus/functions/fnc_moduleSetMedic.sqf b/addons/zeus/functions/fnc_moduleSetMedic.sqf index a05dc65d50..f66ca9132d 100644 --- a/addons/zeus/functions/fnc_moduleSetMedic.sqf +++ b/addons/zeus/functions/fnc_moduleSetMedic.sqf @@ -21,7 +21,7 @@ params ["_logic"]; if !(local _logic) exitWith {}; -if !(["ACE_Medical"] call EFUNC(common,isModLoaded)) then { +if !(["ace_medical"] call EFUNC(common,isModLoaded)) then { [LSTRING(RequiresAddon)] call FUNC(showMessage); } else { private _mouseOver = GETMVAR(bis_fnc_curatorObjectPlaced_mouseOver,[""]); diff --git a/addons/zeus/functions/fnc_moduleSetMedicalFacility.sqf b/addons/zeus/functions/fnc_moduleSetMedicalFacility.sqf index 8ff9b4a731..1f98212935 100644 --- a/addons/zeus/functions/fnc_moduleSetMedicalFacility.sqf +++ b/addons/zeus/functions/fnc_moduleSetMedicalFacility.sqf @@ -21,7 +21,7 @@ params ["_logic"]; if !(local _logic) exitWith {}; -if !(["ACE_Medical"] call EFUNC(common,isModLoaded)) then { +if !(["ace_medical"] call EFUNC(common,isModLoaded)) then { [LSTRING(RequiresAddon)] call FUNC(showMessage); } else { private _mouseOver = GETMVAR(bis_fnc_curatorObjectPlaced_mouseOver,[""]); diff --git a/addons/zeus/functions/fnc_moduleSetMedicalVehicle.sqf b/addons/zeus/functions/fnc_moduleSetMedicalVehicle.sqf index e3051f9824..e8189b377e 100644 --- a/addons/zeus/functions/fnc_moduleSetMedicalVehicle.sqf +++ b/addons/zeus/functions/fnc_moduleSetMedicalVehicle.sqf @@ -21,7 +21,7 @@ params ["_logic"]; if !(local _logic) exitWith {}; -if !(["ACE_Medical"] call EFUNC(common,isModLoaded)) then { +if !(["ace_medical"] call EFUNC(common,isModLoaded)) then { [LSTRING(RequiresAddon)] call FUNC(showMessage); } else { private _mouseOver = GETMVAR(bis_fnc_curatorObjectPlaced_mouseOver,[""]); diff --git a/addons/zeus/functions/fnc_moduleUnloadFromCargo.sqf b/addons/zeus/functions/fnc_moduleUnloadFromCargo.sqf new file mode 100644 index 0000000000..dc4b1dea9a --- /dev/null +++ b/addons/zeus/functions/fnc_moduleUnloadFromCargo.sqf @@ -0,0 +1,47 @@ +#include "..\script_component.hpp" +/* + * Author: johnb43 + * Loads the object module is placed on into selected vehicle. + * + * Arguments: + * 0: Module logic + * 1: Synchronized units + * 2: Activated + * + * Return Value: + * None + * + * Example: + * [LOGIC, [bob, kevin], true] call ace_zeus_fnc_moduleUnloadFromCargo + * + * Public: No + */ + +if (canSuspend) exitWith { + [FUNC(moduleUnloadFromCargo), _this] call CBA_fnc_directCall; +}; + +params ["_logic"]; + +if !(local _logic) exitWith {}; + +private _vehicle = attachedTo _logic; + +deleteVehicle _logic; + +if !(missionNamespace getVariable [QEGVAR(cargo,enable), false]) exitWith { + [LSTRING(RequiresAddon)] call FUNC(showMessage); +}; +if (isNull _vehicle) exitWith { + [LSTRING(NothingSelected)] call FUNC(showMessage); +}; +if (!alive _vehicle) exitWith { + [LSTRING(OnlyAlive)] call FUNC(showMessage); +}; +if ((_vehicle getVariable [QEGVAR(cargo,loaded), []]) isEqualTo []) exitWith { + [LSTRING(paradrop_noCargoLoaded)] call FUNC(showMessage); +}; + +EGVAR(cargo,interactionVehicle) = _vehicle; +EGVAR(cargo,interactionParadrop) = false; +createDialog QEGVAR(cargo,menu); diff --git a/addons/zeus/initSettings.sqf b/addons/zeus/initSettings.inc.sqf similarity index 100% rename from addons/zeus/initSettings.sqf rename to addons/zeus/initSettings.inc.sqf diff --git a/addons/zeus/stringtable.xml b/addons/zeus/stringtable.xml index b32b09692b..d23a7cf407 100644 --- a/addons/zeus/stringtable.xml +++ b/addons/zeus/stringtable.xml @@ -45,7 +45,7 @@ Különböző beállítási lehetőségeket biztosít a Zeus részeihez. Позволяет контролировать различные аспекты Зевса. Fornisce controllo su vari aspetti di Zeus. - Zeus の操作性を様々な側面から強化します。 + Zeusの操作性を様々な側面から強化します。 제우스에게 다양한 방면의 조작을 제공해줍니다 提供宙斯各个方面的控制权 提供宙斯各個方面的控制權 @@ -61,7 +61,7 @@ Felemelkedési üzenetek Сообщения о вознесении Messaggi di Ascesa - 転生表示 + 転生の布告 재림 메세지 宙斯上任信息 宙斯上任訊息 @@ -72,12 +72,12 @@ Mostrar mensajes emergentes globales cuando a un jugador se le asigna como Zeus. Zobrazit globální zprávu když je hráč přiřazen jako Zeus. Zeige globale Popup-Nachrichten wenn ein Spieler zu Zeus wird. - Mostra uma mensagem popup quando um jogador é atribuido ao Zeus. + Mostra uma mensagem popup quando um jogador é atribuído ao Zeus. Affiche des messages popup globaux lorsqu'un joueur est élevé au rang de Zeus. Globális üzeneteket jelez ki, ha egy játékos Zeus-nak lesz beosztva. Отображает глобальное всплывающее сообщение, когда один из игроков становится Зевсом. Mostra messaggi popup globali quando un giocatore viene assegnato come Zeus. - プレイヤーが Zeus になる際、全体へポップアップ表示を行います。 + プレイヤーがZeusになる際、全体へポップアップ表示を行います。 플레이어가 제우스가 되면 서버에 알림 팝업이 등장합니다. 当一位玩家被指定为宙斯时显示全局信息 當一位玩家被指定為宙斯時顯示全域訊息 @@ -109,8 +109,8 @@ Crée un aigle qui suit la caméra Zeus. Lerak egy sast, ami követi a Zeus kamerát. Спавнит орла, который следует за камерой Зевса. - Crea un'aquila che segue la camera Zeus. - Zeus カメラを追うイーグルを出現します。 + Crea un'aquila che segue la videocamera Zeus. + Zeusカメラを追いかける鷲を出現させます。 제우스의 카메라를 따라다니는 독수리를 생성합니다. 生成一个老鹰跟着宙斯的摄影机 生成一個老鷹跟著宙斯的攝影機 @@ -142,8 +142,8 @@ Joue des bruits de vent lorsque Zeus contrôle une unité distante. Szélhangokat játszik le, ha a Zeus távvezérel egy egységet. Проигрывает звук ветра каждый раз, когда Зевс вселяется в юнита. - Esegui rumori di vento quando Zeus controlla un'unità in remoto. - ユニットが Zeus 遠隔操作になった際、風の音がします。 + Riproduci rumori di vento quando Zeus controlla un'unità in remoto. + Zeusがユニットを遠隔操作した際、風の音を再生します。 제우스가 유닛을 조작할 때 바람소리가 납니다. 当宙斯开始控制单位时利用风的声音提示 當宙斯開始控制單位時利用風的聲音提示 @@ -158,8 +158,8 @@ Alerte d'artillerie Tüzérségi figyelmeztetés Предупреждение об арте - Allarme Esplosivi - 砲撃警告 + Allerta Artiglieria + 砲撃の警告 폭격 경고 武装警告 武裝警告 @@ -174,8 +174,8 @@ Diffuse un avertissement radio lorsque Zeus utilise de l'artillerie. Rádiós figyelmeztetés kiadása, ha a Zeus tüzérséget használ. Проигрывает звук радио каждый раз, когда Зевс использует артиллерию. - Riproduci un messaggio radio quando Zeus usa esplosivi. - Zeus が砲撃を使う際に、無線で警告を流します。 + Riproduci un messaggio radio quando Zeus usa artiglieria. + Zeusが砲撃を使う際に、無線で警告を流します。 제우스가 폭격 시 경고 무전을 재생합니다. 当宙斯开始攻击时使用无线电警告 當宙斯開始攻擊時使用無線電警告 @@ -254,8 +254,8 @@ Commuter captivité Elfogott állapot váltása Пленный (вкл./выкл.) - Attivatore Prigioniero - 捕虜に切り替え + Imposta Prigioniero + 捕虜状態を切り替え 포로 토글 切换俘虏 切換俘虜 @@ -266,7 +266,7 @@ Défendre la zone Защитить зону Bránit oblast - 防衛範囲 + エリアの防衛 Broń obszaru Verteidige Gebiet 지역 방어 @@ -313,7 +313,7 @@ 添加或删除宙斯的可编辑物体 Aktiviere oder deaktiviere zu bearbeitende Objekte von Zeus Agguingi o rimuovi oggetti che Zeus può modificare - Zeus から編集可能オブジェクトの追加と削除をする + Zeusから編集可能オブジェクトの追加と削除をする Dodaj lub usuń edytowalne obiekty z Zeus'a Добавить или удалить редактируемые объекты от Зевса Adiciona ou remove objetos editáveis do Zeus @@ -361,7 +361,7 @@ 모든 큐레이터 Wszyscy kuratorzy Tous les curateurs - Tutti i Moderatori + Tutti gli Zeus 所有宙斯 所有編輯者 Все кураторы @@ -372,11 +372,11 @@ Apply changes to all curators Änderungen bei allen Kuratoren aktualisieren - 全キュレーターへ変更を適用します。 + 全キュレーターへ変更を適用します 모든 큐레이터에 변화를 적용합니다 Zatwierdź zmiany dla wszystkich kuratorów Applique les changements à tous les curateurs. - Applica i cambiamenti a tutti i moderatori + Applica i cambiamenti a tutti gli Zeus 确认变更给所有宙斯 確認變更給所有編輯者 Применить изменения ко всем кураторам @@ -388,7 +388,7 @@ Additional Objects Zusätzliche Objekte Oggetti aggiuntivi - オブジェクト増加 + 追加のオブジェクト Dodatkowe obiekty Доп. объекты Objetos adicionais @@ -402,8 +402,8 @@ Additional objects to include in the action regardless of Task Radius Zusätzliche Objekte unabhängig vom Aufgabenradius einbeziehen - Oggetti aggiuntivi da includere nell'azione indipendentemente dal Raggio di Attività - タスク範囲に関係無くオブジェクトを更に増加させます + Oggetti aggiuntivi da includere nell'azione indipendentemente dal Raggio dell'Incarico + タスク半径に関係なく次のオブジェクトを編集可能に追加します Dodatkowe obiekty do uwzględnienia w akcji niezależnie od zasięgu zadania Дополнительные объекты для включения в действие, независимо от радиуса выполнения задачи Objetos adicionais para incluir na ação, ignorando a distância da tarefa @@ -419,11 +419,11 @@ Compétence globale de l'IA Мастерство ботов Globální zkušenosti AI - 総合的AIスキル + 全体のAIスキル Globalne umiejętności AI Globale KI-Fähigkeit 서버 인공지능 실력 - Abilità AI Globale + Abilità IA Globale AI 技巧设定 AI技巧設定 Habilidade Global da IA @@ -530,7 +530,7 @@ Rozpoznanie Aufklärung 탐지 - Ricognizione + Individuazione 索敌能力 索敵能力 Detecção @@ -575,7 +575,7 @@ Czy AI powinno szukać osłon Soll KI nach Deckung suchen 인공지능이 엄폐물을 찾아갑니다 - Le AI dovrebbero cercare una copertura + Le IA dovrebbero cercare coperture 决定 AI 是否会寻找掩护 決定AI是否會尋找掩護 A IA dever buscar cobertura @@ -605,7 +605,7 @@ Czy AI powinno automatycznie przechodzić w tryb walki Soll KI automatisch in Kampfmodus umschalten 인공지능이 자동적으로 교전 상태에 돌입합니다 - Le AI dovrebbero passare in modalità di combattimento automaticamente + Le IA dovrebbero passare in modalità di combattimento automaticamente 决定 AI 是否会自动与敌人交战 決定AI是否會自動與敵人交戰 A IA deveria automaticamente mudar para modo de combate @@ -616,7 +616,7 @@ Camp du groupe Сторона группы Strana skupiny - グループ側 + グループの陣営 Strona grupy Gruppenseite 진영 측 @@ -632,7 +632,7 @@ Zone de patrouille Патрулировать зону Oblast hlídkování - 哨戒範囲 + エリアの哨戒 Patrol obszaru Patrouillengebiet 정찰 구역 @@ -653,8 +653,8 @@ Commuter capitulation Kapituláló állapot váltása Сдавшийся (вкл./выкл.) - Attivatore Resa - 投降として切り替え + Imposta Resa + 投降状態を切り替え 항복 토글 切换投降 切換投降 @@ -711,7 +711,7 @@ Téléporter joueurs Телепортиваровать игроков Teleportovat hráče - プレイヤーを移動 + プレイヤーのテレポート Teleportuj graczy Spieler teleportieren 플레이어 순간이동 @@ -747,7 +747,7 @@ Teleportuje wybranego gracza na pozycję modułu Teleportiert ausgewählten Spieler zur Position des Moduls 모듈의 위치로 플레이어 순간이동 - Teletrasporta il giocatore selezionato nella posizione del modulo + Teletrasporta il giocatore selezionato sulla posizione del modulo 传送选定的玩家至模块位置 傳送選定的玩家至模塊位置 Teleporta o jogador selecionado para a posição do módulo @@ -758,7 +758,7 @@ Téléporter le groupe Телепортировать Группу Teleportovat skupinu - グループを移動 + グループで移動 Teleport grupy Gruppe teleportieren 그룹 순간이동 @@ -794,8 +794,8 @@ Commuter état de conscience Eszméletlen állapot váltása Без сознания (вкл./выкл.) - Attivatore Incoscienza - 気絶を切り替え + Imposta Incoscienza + 無意識状態を切り替え 기절 토글 切换昏迷 切換昏迷 @@ -806,7 +806,7 @@ Zone de recherche Обыскать зону Prohledat oblast - 捜索範囲 + エリアの捜索 Przeszukaj teren Durchsuche Gebiet 지역 수색 @@ -822,11 +822,11 @@ Chercher un bâtiment proche Обыскать ближайшие здания Prohledat nejbližší budovu - 近くの建物を捜索します + 至近の建物を捜索 Przeszukaj najbliższy budynek Durchsuche nahegelegenes Gebäude 근처 건물 수색 - Cerca Edifici nelle Vicinanze + Bonifica Edifici Vicini 搜索附近的建筑物 搜索附近的建築物 Procurar construções próximas @@ -857,7 +857,7 @@ Asignar vehículo médico Assegna Veicolo Medico Affecter véhicule sanitaire - 医療車両として割り当て + 医療車両に割り当て 의무 차량 임명 指定医疗载具 指定醫療載具 @@ -872,7 +872,7 @@ Asignar instalación médica Assegna Struttura Medica Affecter installation sanitaire - 医療施設として割り当て + 医療施設に割り当て 의무 시설 임명 指定医疗设施 指定醫療設施 @@ -884,7 +884,7 @@ シミュレーションを切り替え 재현 토글 Commuter Simulation - Attivatore Simulazione + Imposta Simulazione 切换模拟 切換模擬 Переключить симуляцию @@ -919,7 +919,7 @@ Ersatzkette hinzufügen Agregar oruga de repuesto Ajouter une chenille de rechange - 車両へ予備タイヤを追加 + 予備履帯を追加 예비 궤도 추가 增加备用履带 增加備用履帶 @@ -934,9 +934,9 @@ Używaj tylko na żywych jednostkach Применимо только к живым юнитам Csak élő egységeken használni - Si può fare solo su persone vive + Si può fare solo su unità vive Unidade deve estar viva - ユニットを生存させます + ユニットは生きている必要があります 대상이 반드시 살아 있어야 합니다 单位必须是活的 單位必須是活著 @@ -953,7 +953,7 @@ Csak járműben kívül lévő egységeken használni Si può usare solo su fanteria a piedi Unidade deve ser uma infantaria desmontada - ユニットを歩兵にさせます + ユニットは歩兵である必要があります 대상이 반드시 보병이어야 합니다 单位必须是步兵 單位必須是步兵 @@ -968,7 +968,7 @@ Jednotka musí být budova Si può usare solo su strutture L'unité doit être une structure. - ユニットを構造物とします + ユニットは構造物である必要があります 대상이 반드시 건축물이어야 합니다 单位必须是建筑 單位必須是建築 @@ -983,7 +983,7 @@ Jednotka musí být vozidlo Si può usare solo su veicoli L'unité doit être un véhicule. - ユニットを車両とします + ユニットは車両である必要があります 대상이 반드시 차량이어야 합니다 单位必须是载具 單位必須是載具 @@ -998,7 +998,7 @@ Einheit muss ein Fahrzeug mit Ladekapazität sein La unidad debe ser un vehículo con espacio de carga L'unité doit être un véhicule muni d'un espace de stockage. - ユニットをカーゴ スペースがある車両にします + ユニットはカーゴのある車両である必要があります 대상이 반드시 화물을 실을 수 있는 차량이어야 합니다 单位必须是载具且有载货空间 單位必須是載具且有載貨空間 @@ -1013,7 +1013,7 @@ Einheit muss freie Ladekapazität haben La unidad debe tener espacio de carga disponible L'unité doit avoir de l'espace de chargement disponible. - ユニットへカーゴ スペースを与えます + ユニットのカーゴには空きがありません 대상의 화물공간이 남아 있어야 합니다 单位必须有剩余的载货空间 單位必須有剩餘的載貨空間 @@ -1029,7 +1029,7 @@ Csak elfogatlan egységeken használni Юнит не должен быть пленным L'unità non dev'essere un prigioniero - ユニットを捕虜にさせません + ユニットは捕虜ではない必要があります 대상이 포로면 안됩니다 单位不能被俘虏 單位不能被俘虜 @@ -1039,7 +1039,7 @@ L'unité doit appartenir à un camp approprié. Юнит должен принадлежать соответствующей стороне Jednotka musí patřit k příslušné straně - ユニットを適切な陣営にします + ユニットは適切な陣営である必要があります Jednostka musi należeć do odpowiedniej strony Einheit muss einer passenden Seite angehören 대상이 적절한 진영에 속해야 합니다 @@ -1054,7 +1054,7 @@ Le bâtiment le plus proche est trop éloigné. Ближайшие здания слишком далеко Nejbližší budova je příliš daleko - 近くに建物がありません。 + 一番近い建物まで遠すぎます Najbliższy budynek jest zbyt daleko Nächstgelegenes Gebäude ist zu weit entfernt 가장 가까운 건물이 너무 멉니다 @@ -1075,7 +1075,7 @@ Ничего не выделено Semmi sincs az egér alatt Piazza su una unità - ユニットの上に設置 + ユニットの上に配置する必要があります 대상에 배치하기 放置在一个单位上 放置在一個單位上 @@ -1092,7 +1092,7 @@ Egy jelenleg hiányzó bővítményt igényel Требуется аддон, который отсутствует Richiede un addon che non è presente - 要求されたアドオンは存在していません + 要求されたアドオンがありません 需要一个不存在的插件 需要一個不存在的插件 현재 없는 애드온을 필요로 합니다 @@ -1100,7 +1100,7 @@ None Keiner - Niente + Nessuno Żadne なし Нет @@ -1132,7 +1132,7 @@ Players and AI Spieler und KI's - Giocati e AI + Giocatori e IA Gracze i SI プレイヤーとAI Игроки и ИИ @@ -1197,7 +1197,7 @@ 選擇要卸載的貨物 选择要卸载的货物 Scegli il carico da scaricare - 選択したカーゴを降ろす + 積み荷を選択すると降ろせます Wybierz ładunek do wyładowania Выберите груз для выгрузки Selecione objeto para descarregar @@ -1211,7 +1211,7 @@ Task Radius Rayon de la tâche Радиус задания - タスク範囲 + タスク半径 Obszar zadania Radius der Aufgabe 작업 반경 @@ -1226,7 +1226,7 @@ Radius to perform the task within Rayon dans lequel effectuer la tâche. Радиус выполнения задания - 次の範囲をタスクとして実行 + タスクを実行される半径 Obszar na którym zadanie powinno zostać wykonane Radius, in dem die Aufgabe ausgeführt werden soll 다음 반경 내에서 작업 @@ -1246,7 +1246,7 @@ Wpisano nieprawidłowy promień Ungültiger Radius eingegeben 알 수 없는 반경 입력됨 - Raggio Invalido Inserito + Inserito Raggio Invalido 错误的半径值 錯誤的半徑值 Raio inválido inserido @@ -1268,11 +1268,11 @@ Krycí palba - Add Full Arsenal + Add Full BI Arsenal Füge ganzes Arsenal hinzu Ajouter un arsenal complet - Aggiungi Arsenale Completo - オブジェクトに完全なアーセナルを追加 + Aggiungi Arsenale BI Completo + BI 武器庫を追加 增加完整的虚拟军火库到物体上 增加完整的虛擬軍火庫到物件上 Dodaj Wirtualny Arsenał @@ -1284,11 +1284,11 @@ Añadir Arsenal completo - Remove Arsenal + Remove BI Arsenal Entferne Arsenal Retirer un arsenal - Rimuovi Arsenale - オブジェクトからアーセナルを削除 + Rimuovi Arsenale BI + BI 武器庫を削除 移除物体上的虚拟军火库 移除物件上的虛擬軍火庫 Usuń Wirtualny Arsenał @@ -1302,8 +1302,8 @@ Load into Cargo In Frachtraum laden - Carica nel Cargo - カーゴに積み込み + Carica nel carico + カーゴへ積載 裝載到貨物中 装载到货物中 화물 싣기 @@ -1314,11 +1314,18 @@ Charger dans le véhicule Cargar en la carga + + Unload from cargo + Aus Frachtraum ausladen + Scarica dal carico + カーゴから降ろす + 화물 내리기 + Toggle NVGs Nachtsichtgeräte Hinzufügen/Entfernen Commuter JVN - Attiva NVGs + Attiva NVG 暗視装置の切り替え 切換夜視鏡 切换夜视仪 @@ -1349,8 +1356,8 @@ Add or remove NVGs from units Nachtsichtgeräte Hinzufügen/Entfernen Ajoute ou retire l'équipement de vision nocturne aux unités. - Aggiunge o rimuove NVGs alle unità - ユニットから暗視装置の追加と削除 + Aggiunge o rimuove NVG alle unità + ユニットの暗視装置を追加または削除します 增加或移除單位的夜視鏡 增加或移除单位的夜视仪 야시경 추가/제거 @@ -1364,10 +1371,10 @@ Toggle Target Ziel umschalten - 目標を切り替え + 切り替えの対象 切换目标 切換目標 - Scambia obiettivo + Imposta Bersaglio Przełącz cel Кому переключить Alternar alvo @@ -1379,10 +1386,10 @@ Units affected by the toggle Betroffene Spieler beim umschalten - ユニットは切り替えに影響を受けます + 切り替えの影響を受ける対象 被菜单位受切换影响 受切換所影響的單位 - Unità influenzate dallo scambio + Unità influenzate dall'impostazione Jednostki pod wpływem przełączenia Юниты, к которым применяется переключение Unidades afetadas pela alteração @@ -1411,7 +1418,7 @@ Toggle Flashlights Ändere Taschenlampen Commuter lampes torches - Attiva torce + Attiva Torce フラッシュライトの切り替え 切換手電筒 切换手电筒 @@ -1427,7 +1434,7 @@ Flashlights Taschenlampe Lampes torches - Torcia + Torce フラッシュライト 手電筒 手电筒 @@ -1443,8 +1450,8 @@ Add Gear Ausrüstung hinzufügen Ajouter du matériel - Aggiungi equipaggiamento - 装備を追加 + Aggiungi Equipaggiamento + 装備の追加 增加裝備 增加装备 장비 추가 @@ -1459,8 +1466,8 @@ Garrison Group Gebäude besetzen Garnir zone - 歩哨グループ - Proteggi gruppo + グループの駐屯 + Barrica Gruppo 佈置駐軍 布置驻军 그룹 주둔 @@ -1490,7 +1497,7 @@ Gebäude von der höchsten Position zuerst befüllen Les bâtiments se remplissent en commençant par le haut. 建物を最も高い位置から占拠していきます - Riempi gli edifici dalla posizione più alta prima + Riempi gli edifici prima dalla posizione più alta 從建築物的最高點開始布置衛哨 从建筑物的最高点开始布置卫哨 건물의 높은 위치부터 먼저 채움 @@ -1520,7 +1527,7 @@ Gleichmäßig befüllen Remplissage homogène 均一に占拠 - Riempimento uguale + Riempimento omogeno 平均分配 平均分配 평균 채우기 @@ -1534,7 +1541,7 @@ Building by building Gebäude nach Gebäude Bâtiment par bâtiment - 建物から建物へ + 建物ごとに Edificio per edificio 一棟填滿後再換下一棟 一栋填满后再换下一栋 @@ -1565,7 +1572,7 @@ Teleportieren Téléporter テレポート - Teletrasporto + Teletrasporta 傳送 传送 순간이동 @@ -1580,8 +1587,8 @@ Un-garrison Group Garnisionsgruppe auflösen Dégarnir zone - 非歩哨グループ - Non proteggere gruppo + グループの駐屯解除 + Sbarrica Gruppo 解除駐軍駐守狀態 解除驻军驻守状态 주둔해제 @@ -1600,7 +1607,7 @@ Keine Spieler gefunden Nincsenek játékosok Nessun giocatore trovato - プレーヤーが見つかりません + プレーヤーが見つかりませんでした 플레이어가 없습니다. Nie znaleziono graczy Nenhum jogador encontrado @@ -1617,7 +1624,7 @@ Fahrzeug reparieren zuweisen Hozzárendelés javítóműhöz Assegna veicolo di riparazione - 修理車両を割り当てる + 修理車両に割り当て 수리 차량 지정 Przydziel pojazd do naprawy Definir como veículo de reparo @@ -1634,7 +1641,7 @@ Zuweisen von Reparatureinrichtung Hozzárendelés javításhoz Assegna struttura di riparazione - 修理施設を割り当てる + 修理施設に割り当て 수리 시설 지정 Przydziel naprawę Definir como oficina de reparo @@ -1650,8 +1657,8 @@ Assigner ingénieur Engineer zuweisen Engedélyezze a mérnököt - Assign Engineer - 担当エンジニア + Assegna Geniere + 工兵に割り当て 엔지니어 지정 Przydziel inżyniera Definir como engenheiro @@ -1667,8 +1674,8 @@ Qualification technique Ingenieur Fähigkeit Mérnöki készség - Abilità ingegnere - エンジニアのスキル + Abilità Geniere + 工兵のスキル 기술자의 기술 Umiejętność inżyniera Habilidade do engenheiro @@ -1685,7 +1692,7 @@ Vollständige Heilung Teljes gyógyítás Guarigione completa - 完全に回復 + 完全回復 완전 치유 Pełne uleczenie Cura completa @@ -1702,7 +1709,7 @@ Selbstmordattentäter Öngyilkos merénylő Kamikaze - 自爆テロ犯 + 自爆兵化 자살 폭탄 Samobójca Bombardeiro suicida @@ -1718,7 +1725,7 @@ Camp cible Aktivierungsseite Aktiválási oldal - Lato di attivazione + Fazione Bersaglio 対象陣営 활성화 진영 Strona aktywacji @@ -1735,7 +1742,7 @@ Rayon de déclenchement Aktivierungsradius Aktiválási sugár - Raggio di attivazione + Raggio di Attivazione 活性化半径 활성화 반경 Promień aktywacji @@ -1752,7 +1759,7 @@ Taille de l'explosion Explosionsgröße Robbanásméret - Dimensione di esplosione + Dimensione dell'Esplosione 爆発サイズ 폭발 크기 Rozmiar wybuchu @@ -1769,7 +1776,7 @@ Recherche automatique Automatische Suche Automatikus keresés - Ricerca automatica + Ricerca Automatica 自動誘導 자동 탐색 Auto Seek @@ -1786,8 +1793,8 @@ L'unité essaiera de trouver activement des unités proches appartenant à au camp cible, puis elle se déplacera dans leur direction.\nLa portée de la recherche automatique est basée sur l'aptitude en repérage de l'unité, avec une distance minimale de 100 mètres. Die Einheit versucht aktiv, in der Nähe befindliche Einheiten der Aktivierungsseite zu finden und sich dorthin zu bewegen. Der Bereich der automatischen Suche basiert auf der Fähigkeit der Zielentfernung der Einheit mit einer Mindestentfernung von 100 Metern. Az egység aktívan megpróbálja megtalálni és elmozdulni az aktivációs oldal közeli egységei felé.Az automatikus keresési tartomány az egység helyszíni szakértelmén alapul, legalább 100 méterrel. - L'unità cercherà attivamente di trovare e spostarsi verso le unità vicine del lato di attivazione. La gamma di Auto Seek si basa sull'abilità a distanza spot dell'unità con un minimo di 100 metri. - 対象陣営ユニットを見つけて移動しようと積極的に試みます。自動誘導の範囲は、ユニットの索敵能力に基づいており、最低100メートルです。 + L'unità cercherà attivamente di trovare e spostarsi verso unità vicine della fazione bersaglio. La distanza di Ricerca Automatica si basa sull'abilità di identificazione dell'unità, con un minimo di 100 metri. + 対象陣営ユニットを見つけて移動しようと積極的に試みます。自動誘導の半径は、ユニットの索敵能力に基づいており、最低100メートルです。 유닛은 활성화 측의 근접 유닛을 향해 적극적으로 찾아서 이동하려고 시도합니다. 자동 탐색의 범위는 유닛의 색적 거리 스킬을 기준으로 최소 100미터입니다. Jednostka będzie aktywnie próbowała znaleźć i ruszyć w kierunku pobliskich jednostek strony aktywacji. Zasięg Auto Seek opiera się na umiejętności punktowej odległości jednostki z minimum 100 metrów. A unidade tentará ativamente encontrar e se mover para as unidades próximas do lado da ativação. O alcance da Auto Seek é baseado na habilidade de distância do ponto da unidade com um mínimo de 100 metros. @@ -1803,7 +1810,7 @@ Die Einheit ist bereits ein Selbstmordattentäter Az egység már öngyilkos bombázó L'unità è già un kamikaze - 既に自爆ユニットです + ユニットは既に自爆兵です 유닛은 이미 자살 폭탄 테러범입니다. Jednostka jest już zamachowcem-samobójcą A unidade já é um suicida @@ -1817,7 +1824,7 @@ ACE 武器庫を追加 添加 ACE 军火库 增加完整的ACE軍火庫 - Aggiungi l'arsenale ACE completo + Aggiungi Arsenale ACE Completo Dodaj pełny arsenał ACE Добавить полный ACE Арсенал Adicionar Arsenal ACE Completo @@ -1833,7 +1840,7 @@ ACE 武器庫を削除 删除 ACE 军火库 移除ACE軍火庫 - Rimuovi l'arsenale ACE + Rimuovi Arsenale ACE Usuń arsenał ACE Убрать ACE Арсенал Remover Arsenal ACE @@ -1847,7 +1854,7 @@ Create Zeus Zeus erstellen Создать Зевса - Zeus を作る + Zeus を作成 Stwórz Zeus'a Crea Zeus Criar Zeus @@ -1863,7 +1870,7 @@ Delete Zeus Zeus löschen Удалить Зевса - Zeus を消す + Zeus を削除 Usuń Zeus'a Cancella Zeus Apagar Zeus @@ -1900,7 +1907,7 @@ Soltar carga de paraquedas 空投貨物 空投货物 - Paradrop Cargo + Paracaduta Carico Výsadek nákladu Paralargage de cargaison Paraşüt Kargosu @@ -1910,7 +1917,7 @@ No cargo loaded Keine Ladung geladen - カーゴは未積載 + カーゴは積載されていません Niczego nie załadowano do cargo Грузовой отсек пуст Nenhuma carga carregada @@ -1927,17 +1934,54 @@ Burn Unit Einheit anzünden 焚烧单位 + Incendia Unità 유닛 불로 태우기 Podpal Jednostkę ユニットを燃やす Поджечь юнита Quemar a unidad + Brûler l'unité + + + Medical Menu + Sanitätsmenü + Menu medyczne + Menu Médico + Медицинское меню + Menú médico + Zdravotnická nabídka + Menù Medico + Menu médical + 医療メニュー + 의료 메뉴 + 医疗菜单 + 醫療選單 + Medikal Menü + + + The medical menu is disabled + Das Sanitätsmenü ist deaktiviert + Il Menù Medico è disabilitato + 医療メニューは無効になっています + 의료 메뉴가 비활성화되었습니다 Lay Trenchline + Wykop Okop + 참호라인 깔기 + Poser une tranchée + Grabenlinie legen + Piazza Trincea + 塹壕溝線を敷設 +SHIFT to force (Can only lay N/S or E/W) + +SHIFT aby wymusić (Można wykopać tylko N/S lub E/W) + + Shift 키로 강제하기 (동서남북 방향으로만 깔 수 있음) + +MAJ pour forcer (Disponible uniquement sur les alignements N/S ou E/O) + +SHIFT zum Erzwingen (Kann nur nach N/S oder E/W legen) + +SHIFT per forzare (Può piazzare solo N/S o E/O + +SHIFTキー で強制的に敷設 (北/南または東/西方向にのみ配置可能) diff --git a/addons/zeus/ui/RscAttributes.hpp b/addons/zeus/ui/RscAttributes.hpp index 4f05d52546..0ff21b145f 100644 --- a/addons/zeus/ui/RscAttributes.hpp +++ b/addons/zeus/ui/RscAttributes.hpp @@ -54,8 +54,8 @@ class GVAR(AttributeRadius): RscControlsGroupNoScrollbars { }; class GVAR(RscDefendArea): RscDisplayAttributes { - onLoad = QUOTE([ARR_3('onLoad', _this, QQGVAR(RscDefendArea))] call FUNC(zeusAttributes)); - onUnload = QUOTE([ARR_3('onUnload', _this, QQGVAR(RscDefendArea))] call FUNC(zeusAttributes)); + onLoad = QUOTE([ARR_3('onLoad',_this,QQGVAR(RscDefendArea))] call FUNC(zeusAttributes)); + onUnload = QUOTE([ARR_3('onUnload',_this,QQGVAR(RscDefendArea))] call FUNC(zeusAttributes)); class Controls: Controls { class Background: Background {}; class Title: Title {}; @@ -72,8 +72,8 @@ class GVAR(RscDefendArea): RscDisplayAttributes { }; class GVAR(RscEditableObjects): RscDisplayAttributes { - onLoad = QUOTE([ARR_3('onLoad', _this, QQGVAR(RscEditableObjects))] call FUNC(zeusAttributes)); - onUnload = QUOTE([ARR_3('onUnload', _this, QQGVAR(RscEditableObjects))] call FUNC(zeusAttributes)); + onLoad = QUOTE([ARR_3('onLoad',_this,QQGVAR(RscEditableObjects))] call FUNC(zeusAttributes)); + onUnload = QUOTE([ARR_3('onUnload',_this,QQGVAR(RscEditableObjects))] call FUNC(zeusAttributes)); class Controls: Controls { class Background: Background {}; class Title: Title {}; @@ -139,8 +139,8 @@ class GVAR(RscEditableObjects): RscDisplayAttributes { }; class GVAR(RscGlobalSetSkill): RscDisplayAttributes { - onLoad = QUOTE([ARR_3('onLoad', _this, QQGVAR(RscGlobalSetSkill))] call FUNC(zeusAttributes)); - onUnload = QUOTE([ARR_3('onUnload', _this, QQGVAR(RscGlobalSetSkill))] call FUNC(zeusAttributes)); + onLoad = QUOTE([ARR_3('onLoad',_this,QQGVAR(RscGlobalSetSkill))] call FUNC(zeusAttributes)); + onUnload = QUOTE([ARR_3('onUnload',_this,QQGVAR(RscGlobalSetSkill))] call FUNC(zeusAttributes)); class Controls: Controls { class Background: Background {}; class Title: Title {}; @@ -234,8 +234,8 @@ class GVAR(RscGlobalSetSkill): RscDisplayAttributes { }; class GVAR(RscGroupSide): RscDisplayAttributes { - onLoad = QUOTE([ARR_3('onLoad', _this, QQGVAR(RscGroupSide))] call FUNC(zeusAttributes)); - onUnload = QUOTE([ARR_3('onUnload', _this, QQGVAR(RscGroupSide))] call FUNC(zeusAttributes)); + onLoad = QUOTE([ARR_3('onLoad',_this,QQGVAR(RscGroupSide))] call FUNC(zeusAttributes)); + onUnload = QUOTE([ARR_3('onUnload',_this,QQGVAR(RscGroupSide))] call FUNC(zeusAttributes)); class Controls: Controls { class Background: Background {}; class Title: Title {}; @@ -312,8 +312,8 @@ class GVAR(RscGroupSide): RscDisplayAttributes { }; class GVAR(RscPatrolArea): RscDisplayAttributes { - onLoad = QUOTE([ARR_3('onLoad', _this, QQGVAR(RscPatrolArea))] call FUNC(zeusAttributes)); - onUnload = QUOTE([ARR_3('onUnload', _this, QQGVAR(RscPatrolArea))] call FUNC(zeusAttributes)); + onLoad = QUOTE([ARR_3('onLoad',_this,QQGVAR(RscPatrolArea))] call FUNC(zeusAttributes)); + onUnload = QUOTE([ARR_3('onUnload',_this,QQGVAR(RscPatrolArea))] call FUNC(zeusAttributes)); class Controls: Controls { class Background: Background {}; class Title: Title {}; @@ -330,8 +330,8 @@ class GVAR(RscPatrolArea): RscDisplayAttributes { }; class GVAR(RscSearchArea): RscDisplayAttributes { - onLoad = QUOTE([ARR_3('onLoad', _this, QQGVAR(RscSearchArea))] call FUNC(zeusAttributes)); - onUnload = QUOTE([ARR_3('onUnload', _this, QQGVAR(RscSearchArea))] call FUNC(zeusAttributes)); + onLoad = QUOTE([ARR_3('onLoad',_this,QQGVAR(RscSearchArea))] call FUNC(zeusAttributes)); + onUnload = QUOTE([ARR_3('onUnload',_this,QQGVAR(RscSearchArea))] call FUNC(zeusAttributes)); class Controls: Controls { class Background: Background {}; class Title: Title {}; @@ -348,8 +348,8 @@ class GVAR(RscSearchArea): RscDisplayAttributes { }; class GVAR(RscTeleportPlayers): RscDisplayAttributes { - onLoad = QUOTE([ARR_3('onLoad', _this, QQGVAR(RscTeleportPlayers))] call FUNC(zeusAttributes)); - onUnload = QUOTE([ARR_3('onUnload', _this, QQGVAR(RscTeleportPlayers))] call FUNC(zeusAttributes)); + onLoad = QUOTE([ARR_3('onLoad',_this,QQGVAR(RscTeleportPlayers))] call FUNC(zeusAttributes)); + onUnload = QUOTE([ARR_3('onUnload',_this,QQGVAR(RscTeleportPlayers))] call FUNC(zeusAttributes)); class Controls: Controls { class Background: Background {}; class Title: Title {}; @@ -493,8 +493,8 @@ class RscDisplayAttributesVehicleEmpty: RscDisplayAttributes { }; class GVAR(RscGarrison): RscDisplayAttributes { - onLoad = QUOTE([ARR_3('onLoad', _this, QQGVAR(RscGarrison))] call FUNC(zeusAttributes)); - onUnload = QUOTE([ARR_3('onUnload', _this, QQGVAR(RscGarrison))] call FUNC(zeusAttributes)); + onLoad = QUOTE([ARR_3('onLoad',_this,QQGVAR(RscGarrison))] call FUNC(zeusAttributes)); + onUnload = QUOTE([ARR_3('onUnload',_this,QQGVAR(RscGarrison))] call FUNC(zeusAttributes)); class Controls: Controls { class Background: Background {}; class Title: Title {}; @@ -571,8 +571,8 @@ class GVAR(RscGarrison): RscDisplayAttributes { }; class GVAR(RscToggleNvg): RscDisplayAttributes { - onLoad = QUOTE([ARR_3('onLoad', _this, QQGVAR(RscToggleNvg))] call FUNC(zeusAttributes)); - onUnload = QUOTE([ARR_3('onUnload', _this, QQGVAR(RscToggleNvg))] call FUNC(zeusAttributes)); + onLoad = QUOTE([ARR_3('onLoad',_this,QQGVAR(RscToggleNvg))] call FUNC(zeusAttributes)); + onUnload = QUOTE([ARR_3('onUnload',_this,QQGVAR(RscToggleNvg))] call FUNC(zeusAttributes)); class Controls: Controls { class Background: Background {}; class Title: Title {}; @@ -652,8 +652,8 @@ class GVAR(RscToggleNvg): RscDisplayAttributes { }; class GVAR(RscToggleFlashlight): RscDisplayAttributes { - onLoad = QUOTE([ARR_3('onLoad', _this, QQGVAR(RscToggleFlashlight))] call FUNC(zeusAttributes)); - onUnload = QUOTE([ARR_3('onUnload', _this, QQGVAR(RscToggleFlashlight))] call FUNC(zeusAttributes)); + onLoad = QUOTE([ARR_3('onLoad',_this,QQGVAR(RscToggleFlashlight))] call FUNC(zeusAttributes)); + onUnload = QUOTE([ARR_3('onUnload',_this,QQGVAR(RscToggleFlashlight))] call FUNC(zeusAttributes)); class Controls: Controls { class Background: Background {}; class Title: Title {}; @@ -741,8 +741,8 @@ class GVAR(RscToggleFlashlight): RscDisplayAttributes { }; class GVAR(RscSetEngineer): RscDisplayAttributes { - onLoad = QUOTE([ARR_3('onLoad', _this, QQGVAR(RscSetEngineer))] call FUNC(zeusAttributes)); - onUnload = QUOTE([ARR_3('onUnload', _this, QQGVAR(RscSetEngineer))] call FUNC(zeusAttributes)); + onLoad = QUOTE([ARR_3('onLoad',_this,QQGVAR(RscSetEngineer))] call FUNC(zeusAttributes)); + onUnload = QUOTE([ARR_3('onUnload',_this,QQGVAR(RscSetEngineer))] call FUNC(zeusAttributes)); class Controls: Controls { class Background: Background {}; class Title: Title {}; @@ -786,8 +786,8 @@ class GVAR(RscSetEngineer): RscDisplayAttributes { }; class GVAR(RscSuicideBomber): RscDisplayAttributes { - onLoad = QUOTE([ARR_3('onLoad', _this, QQGVAR(RscSuicideBomber))] call FUNC(zeusAttributes)); - onUnload = QUOTE([ARR_3('onUnload', _this, QQGVAR(RscSuicideBomber))] call FUNC(zeusAttributes)); + onLoad = QUOTE([ARR_3('onLoad',_this,QQGVAR(RscSuicideBomber))] call FUNC(zeusAttributes)); + onUnload = QUOTE([ARR_3('onUnload',_this,QQGVAR(RscSuicideBomber))] call FUNC(zeusAttributes)); class Controls: Controls { class Background: Background {}; class Title: Title {}; diff --git a/docs/_config.yml b/docs/_config.yml index 1ac4f3a7a5..52ba8da828 100644 --- a/docs/_config.yml +++ b/docs/_config.yml @@ -8,9 +8,9 @@ ace: githubUrl: https://github.com/acemod/ACE3 version: major: 3 - minor: 15 - patch: 2 - build: 69 + minor: 16 + patch: 1 + build: 74 markdown: kramdown diff --git a/docs/_config_dev.yml b/docs/_config_dev.yml index 4a05c7f94e..67de48f2f6 100644 --- a/docs/_config_dev.yml +++ b/docs/_config_dev.yml @@ -8,9 +8,9 @@ ace: githubUrl: https://github.com/acemod/ACE3 version: major: 3 - minor: 13 - patch: 2 - build: 49 + minor: 16 + patch: 1 + build: 74 markdown: kramdown diff --git a/docs/_includes/_footer.html b/docs/_includes/_footer.html index 2797f35cd9..ec55355d99 100644 --- a/docs/_includes/_footer.html +++ b/docs/_includes/_footer.html @@ -13,21 +13,33 @@ - + diff --git a/docs/_includes/_header.html b/docs/_includes/_header.html index 3fd9147794..7123c5968a 100644 --- a/docs/_includes/_header.html +++ b/docs/_includes/_header.html @@ -27,7 +27,7 @@ - +
diff --git a/docs/_includes/_navigation.html b/docs/_includes/_navigation.html index 82b0508518..e929b8d438 100644 --- a/docs/_includes/_navigation.html +++ b/docs/_includes/_navigation.html @@ -1,9 +1,17 @@