Merge remote-tracking branch 'upstream/master' into patch-3

This commit is contained in:
Vdauphin 2022-09-05 01:53:05 +02:00
commit 5cbe1201de
968 changed files with 24955 additions and 5464 deletions

View File

@ -34,11 +34,11 @@ We welcome anyone to contribute to this repository. Issues that we are actively
## Pull Request process
When contributing to this repository, please first discuss the change you wish to make via issue or [Slack](https://slackin.ace3mod.com/) with the [ACE3 project maintainers](https://ace3mod.com/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.
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.
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://ace3mod.com/wiki/development/).
3. Please follow our [Development Guidelines](https://ace3.acemod.org/wiki/development/).
### Notes
@ -47,4 +47,4 @@ Please note that all contributors to this project are volunteers and do this in
## Assistance with contributing
If you require assistance with contributing, check out the #dev channel on our [Slack](https://slackin.ace3mod.com/). Additional documentation can be found on our [Development wiki](https://ace3mod.com/wiki/development/).
If you require assistance with contributing, check out the #dev channel on our [Discord](https://acemod.org/discord). Additional documentation can be found on our [Development wiki](https://ace3.acemod.org/wiki/development/).

View File

@ -30,7 +30,7 @@ All good? Then proceed and fill out the items below.
A clear and concise description of what the bug is.
**Steps to reproduce:**
_Follow [https://ace3mod.com/img/wiki/user/issue_flowchart.png](this flowchart)!_
_Follow [https://ace3.acemod.org/img/wiki/user/issue_flowchart.webp](this flowchart)!_
1. _Go to ..._
2. _Click ..._

View File

@ -1,20 +0,0 @@
---
name: Enhancement request
about: Suggest an improvement for this project
title: ''
labels: kind/enhancement
assignees: ''
---
**Is your enhancement related to a problem?**
A clear and concise description of what the enhancement entails. Ex. [...] would improve user experience.
**Solution you'd like:**
A clear and concise description of what you want to happen.
**Alternatives you've considered:**
A clear and concise description of any alternative solutions or ideas you've considered.
**Additional context:**
Add any other context or screenshots about the enhancement here.

View File

@ -9,4 +9,4 @@ assignees: ''
### Do not post feature requests here!
Learn how to make a feature request [here](https://ace3mod.com/wiki/user/how-to-make-a-feature-request.html).
Learn how to make a feature request [here](https://ace3.acemod.org/wiki/user/how-to-make-a-feature-request.html).

View File

@ -1,6 +1,9 @@
**When merged this pull request will:**
- Describe what this pull request will do
- Each change in a separate line
- Include documentation if applicable
- Respect the [Development Guidelines](https://ace3mod.com/wiki/development/)
- Follow title standard `Component - Add|Fix|Improve|Change|Make|Remove bananas`
- _Describe what this pull request will do_
- _Each change in a separate line_
### 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}`.

View File

@ -15,7 +15,7 @@ jobs:
with:
toolsUrl: ${{ secrets.ARMA3_TOOLS_URL }}
- name: Install Mikero Tools
uses: arma-actions/mikero-tools@2021-04-10
uses: arma-actions/mikero-tools@2021-11-06
- name: Download game data
run: |
Invoke-WebRequest "$env:ARMA3_DATA_URL" -OutFile arma3.zip
@ -56,8 +56,10 @@ jobs:
run: |
rm -r z\ace\addons\
rm -r z\ace\optionals\
rm -r z\ace\tools\pDummies\
xcopy /e /h /q pullrequest\addons z\ace\addons\
xcopy /e /h /q pullrequest\optionals z\ace\optionals\
xcopy /e /h /q pullrequest\tools\pDummies z\ace\tools\pDummies\
- name: Setup build environment
run: |
subst P: .

View File

@ -6,10 +6,10 @@
# request, preferably including an email address.
# CORE TEAM
Brandon (TCVM) <brandondanyluk366@gmail.com>
bux578 <github@jonathandavid.de>
commy2
Dahlgren
Dani (TCVM) <baileydanyluk@gmail.com>
esteldunedain <nicolas.d.badano@gmail.com>
Felix Wiegand <koffeinflummi@gmail.com>
Garth "L-H" de Wet <garthofhearts@gmail.com>
@ -35,7 +35,7 @@ Walter Pearce <jaynus@gmail.com>
11RDP-LoupVert <loupvert@11rdp.fr>
654wak654 <ozanegitmen@gmail.com>
[BIG]Bull
ACCtomeek <tomeek99@gmail.com>
ACCtomeek
adam3adam <br.ada@seznam.cz>
Adanteh
aeroson
@ -68,6 +68,7 @@ Clon1998 <ps.patti1998@gmail.com>
Codingboy
Coren <coren4@gmail.com>
Crusty
Cyruz143
dabako <dabako@dabakoworld.de>
dgibso29 <gibson@earringpranks.com>
Dharma Bellamkonda <dharma.bellamkonda@gmail.com>
@ -130,6 +131,7 @@ meat <p.humberdroz@gmail.com>
Michail Nikolaev
MikeMatrix <m.braun92@gmail.com>
mjc4wilton <mjc4wilton@gmail.com>
Mysteryjuju
nic547 <nic547@outlook.com>
nikolauska <nikolauska1@gmail.com>
nomisum <nomisum@gmail.com>
@ -147,12 +149,14 @@ QuickDagger
rakowozz
ramius86 <pasini86@hotmail.com>
Raspu86
RcINS
Riccardo Petricca <petriccarcc@gmail.com>
Robert Boklahánics <bokirobi@gmail.com>
ruPaladin <happyworm24@rambler.ru>
Rutger "RedBery" Meijering <c.redbery@gmail.com>
sancron
Schwaggot <tom.ryan@posteo.de>
Seb <sebsmith90@gmail.com>
shukari
simon84 <badguy360th@gmail.com>
Skengman2
@ -161,6 +165,7 @@ Sniperwolf572 <tenga6@gmail.com>
System98
SzwedzikPL <szwedzikpl@gmail.com>
Tachi <zaveruha007@gmail.com>
tbeswick96
Tessa Elieff <Fastroping Sound - CreativeCommons Attributions 3.0>
Timi007 <timi007@gmx.net>
Toaster <jonathan.pereira@gmail.com>
@ -174,6 +179,7 @@ VyMajoris(W-Cephei)<vycanismajoriscsa@gmail.com>
Walthzer <walthzer.69@gmail.com>
Winter <simon@agius-muscat.net>
wizpig64
YetheSamartaka
xrufix
Zakant <Zakant@gmx.de>
zGuba

View File

@ -4,7 +4,7 @@
<p align="center">
<a href="https://github.com/acemod/ACE3/releases/latest">
<img src="https://img.shields.io/badge/Version-3.14.0-blue.svg?style=flat-square" alt="ACE3 Version">
<img src="https://img.shields.io/badge/Version-3.15.0-blue.svg?style=flat-square" alt="ACE3 Version">
</a>
<a href="https://github.com/acemod/ACE3/issues">
<img src="https://img.shields.io/github/issues-raw/acemod/ACE3.svg?style=flat-square&label=Issues" alt="ACE3 Issues">
@ -18,8 +18,8 @@
<a href="https://github.com/acemod/ACE3/blob/master/LICENSE">
<img src="https://img.shields.io/badge/License-GPLv2-red.svg?style=flat-square" alt="ACE3 License">
</a>
<a href="https://slackin.ace3mod.com/">
<img src="https://img.shields.io/badge/Slack-Join-darkviolet.svg?style=flat-square" alt="ACE3 Slack">
<a href="https://acemod.org/discord">
<img src="https://img.shields.io/badge/Discord-Join-darkviolet.svg?style=flat-square" alt="ACE3 Discord">
</a>
<a href="https://circleci.com/gh/acemod/ACE3">
<img src="https://circleci.com/gh/acemod/ACE3.svg?style=svg" alt="ACE3 Build Status">
@ -78,8 +78,8 @@ The mod is **built modularly**, so almost any included PBO can be easily removed
ACE3 requires Arma 3 and the latest version of <a href="https://github.com/CBATeam/CBA_A3/releases">CBA A3</a>. See the following pages for help and information on how to get started with ACE3:
- [Installation guide](https://ace3mod.com/wiki/user/installation-guide.html)
- [Information center](https://ace3mod.com/wiki/user/information-center.html)
- [Installation guide](https://ace3.acemod.org/wiki/user/installation-guide.html)
- [Information center](https://ace3.acemod.org/wiki/user/information-center.html)
## Contributing
@ -87,26 +87,26 @@ You can help out with the ongoing development by looking for potential bugs in o
### Contribution guidelines
To contribute something to ACE3, simply fork this repository and submit your pull requests for review by other collaborators. See [the pull request guidelines](https://ace3mod.com/wiki/development/merging-pull-requests.html) for further information on this process.
To contribute something to ACE3, simply fork this repository and submit your pull requests for review by other collaborators. See [the pull request guidelines](https://ace3.acemod.org/wiki/development/merging-pull-requests.html) for further information on this process.
### Submitting issues and requesting features
Please, use our [Issue Tracker](https://github.com/acemod/ACE3/issues) to report a bug, propose a feature, or suggest changes to the existing ones. See also:
- [How to report an issue](https://ace3mod.com/wiki/user/how-to-report-an-issue.html)
- [How to make a feature request](https://ace3mod.com/wiki/user/how-to-make-a-feature-request.html)
- [How to report an issue](https://ace3.acemod.org/wiki/user/how-to-report-an-issue.html)
- [How to make a feature request](https://ace3.acemod.org/wiki/user/how-to-make-a-feature-request.html)
### Testing & building
To help us test the latest development changes, download our master branch ([directly](https://github.com/acemod/ACE3/archive/master.zip), or [with git](https://help.github.com/articles/fetching-a-remote/)), then assemble a test build:
- [Setting up the development environment](https://ace3mod.com/wiki/development/setting-up-the-development-environment.html) step-by-step instructions on how to properly setup and build a version of ACE3 for testing purposes.
- [Setting up the development environment](https://ace3.acemod.org/wiki/development/setting-up-the-development-environment.html) step-by-step instructions on how to properly setup and build a version of ACE3 for testing purposes.
### Get in touch
<table>
<tr>
<td><a href="https://slackin.ace3mod.com/">Slack</a></td>
<td>We have a public Slack team that anyone can join. This is where all our developers and contributors hang out and where we make announcements</td>
<td><a href="https://acemod.org/discord">Discord</a></td>
<td>We have a public Discord server that anyone can join. This is where all our developers and contributors hang out and where we make announcements</td>
</tr>
<tr>

View File

@ -28,7 +28,7 @@ if (!hasInterface) exitWith {};
//Add warnings for missing compat PBOs (only if AB is on)
{
_x params ["_modPBO", "_compatPBO"];
if ((isClass (configFile >> "CfgPatches" >> _modPBO)) && {!isClass (configFile >> "CfgPatches" >> _compatPBO)}) then {
if ([_modPBO] call EFUNC(common,isModLoaded) && {!([_compatPBO] call EFUNC(common,isModLoaded))}) then {
WARNING_2("Weapon Mod [%1] missing ace compat pbo [%2] (from @ace\optionals)",_modPBO,_compatPBO);
};
} forEach [

View File

@ -49,7 +49,7 @@
<Japanese>アドバンスド バリスティックス</Japanese>
<Korean>고급 탄도학</Korean>
<Chinese>先進彈道系統</Chinese>
<Chinesesimp>进弹道系统</Chinesesimp>
<Chinesesimp>弹道系统</Chinesesimp>
<Turkish>Gelişmiş Balistik</Turkish>
</Key>
<Key ID="STR_ACE_Advanced_Ballistics_enabled_DisplayName">
@ -66,7 +66,7 @@
<Japanese>アドバンスド バリスティックスを有効化</Japanese>
<Korean>고급 탄도학</Korean>
<Chinese>先進彈道系統</Chinese>
<Chinesesimp>进弹道系统</Chinesesimp>
<Chinesesimp>弹道系统</Chinesesimp>
<Turkish>Gelişmiş Balistik</Turkish>
</Key>
<Key ID="STR_ACE_Advanced_Ballistics_enabled_Description">
@ -83,7 +83,7 @@
<Japanese>アドバンスド バリスティックスを有効化します。</Japanese>
<Korean>고급 탄도학을 적용합니다</Korean>
<Chinese>啟用先進彈道系統</Chinese>
<Chinesesimp>启用进弹道系统</Chinesesimp>
<Chinesesimp>启用进弹道系统</Chinesesimp>
<Turkish>Gelişmiş balistiği etkinleştir</Turkish>
</Key>
<Key ID="STR_ACE_Advanced_Ballistics_muzzleVelocityVariationEnabled_DisplayName">
@ -200,7 +200,7 @@
<Japanese>弾丸の軌跡エフェクトを有効化</Japanese>
<Korean>예광탄 효과 적용</Korean>
<Chinese>啟用曳光彈效果</Chinese>
<Chinesesimp>启用曳光弹效果</Chinesesimp>
<Chinesesimp>启用子弹尾迹效果</Chinesesimp>
<Turkish>İzli Mermi Etkisini Etkinleştir</Turkish>
</Key>
<Key ID="STR_ACE_Advanced_Ballistics_bulletTraceEnabled_Description">
@ -217,7 +217,7 @@
<Japanese>大口径弾の軌跡エフェクトを有効化します。 (高性能光学機器を介してのみ見ることができます)</Japanese>
<Korean>대구경 탄환에 예광탄 효과를 적용합니다(오직 고성능 조준경 사용시에만 보입니다)</Korean>
<Chinese>啟用曳光彈效果給大口徑子彈 (只有透過高倍率光學瞄鏡才能看到)</Chinese>
<Chinesesimp>启用曳光弹效果给大口径子弹 (只有透过高倍率光学瞄镜才能看到)</Chinesesimp>
<Chinesesimp>给大口径子弹启用子弹尾迹效果(只有透过高倍率光学瞄镜才能看到)</Chinesesimp>
<Turkish>Yüksek kalibreli mermilere mermi izleme efekti sağlar (yalnızca yüksek güçlü optiklerden bakıldığında görülebilir)</Turkish>
</Key>
<Key ID="STR_ACE_Advanced_Ballistics_simulationInterval_DisplayName">
@ -250,7 +250,7 @@
<Japanese>各シミュレーション毎の間隔を定義します。</Japanese>
<Korean>각 계산 단위의 간격을 정의합니다</Korean>
<Chinese>定義每個模擬計算之間的時間間隔</Chinese>
<Chinesesimp>定义每个模拟计算之间的时间间隔</Chinesesimp>
<Chinesesimp>定义每个计算步骤之间的间隔</Chinesesimp>
</Key>
<Key ID="STR_ACE_Advanced_Ballistics_simulationRadius_DisplayName">
<English>Simulation Radius</English>
@ -283,7 +283,7 @@
<Japanese>アドバンスド バリスティックスの適用半径範囲 (プレイヤー中心、メートル単位) を定義します。</Japanese>
<Korean>플레이어 주위의 발사체를 고급 탄도학으로 정의하는 범위를 정합니다(미터)</Korean>
<Chinese>以玩家的半徑距離(公尺)定義先進彈道系統啟用範圍</Chinese>
<Chinesesimp>以玩家的半径距离(公尺)定义先进弹道系统启用范围</Chinesesimp>
<Chinesesimp>定义玩家周围的半径(米),在这个半径内,进阶弹道系统会被启用</Chinesesimp>
<Turkish>Mermilere gelişmiş balistik uygulandığı oyuncunun etrafındaki yarıçapı (metre cinsinden) tanımlar</Turkish>
</Key>
<Key ID="STR_ACE_Advanced_Ballistics_Description">
@ -300,7 +300,7 @@
<Japanese>アドバンスド バリスティックスのシミュレーションを有効化します。 弾道は気温・気圧・湿度・重力・弾薬の種類・発射する武器などの変化による影響を受けるようになります。</Japanese>
<Korean>이 모듈은 고급 탄도학을 적용시킵니다 - 이는 발사체의 궤적이 기온, 대기압, 습도, 중력, 탄환의 종류와 어느 무기에서 발사되는지에 따라 영향을 받습니다.</Korean>
<Chinese>該模塊實現先進的彈道仿真 - 這意味著子彈的軌跡是由空氣溫度、大氣壓力、濕度、重力、彈藥類型以及射擊的武器所影響</Chinese>
<Chinesesimp>该模块实现先进的弹道仿真 - 这意味着子弹的轨迹是由空气温度、大气压力、湿度、重力、弹药类型以及射击的武器所影响</Chinesesimp>
<Chinesesimp>该模块实现增强的弹道模拟—子弹的轨迹由空气温度、大气压力、湿度、重力、弹药类型和射击的武器等变量所影响</Chinesesimp>
<Turkish>Bu modül gelişmiş balistik simülasyonunu etkinleştirir - yani mermilerin gidişatını hava sıcaklığı, atmosfer basıncı, nem, yerçekimi, mühimmat türü ve ateşlendiği silah gibi durumlar etkiler.</Turkish>
</Key>
</Package>

View File

@ -30,7 +30,7 @@ if (!hasInterface) exitWith {};
GVAR(ppeBlackout) ppEffectCommit 0.4;
// - GVAR updating and initialization -----------------------------------------
["unit", FUNC(handlePlayerChanged), true] call CBA_fnc_addPlayerEventHandler;
["unit", LINKFUNC(handlePlayerChanged), true] call CBA_fnc_addPlayerEventHandler;
["visibleMap", {
params ["", "_visibleMap"]; // command visibleMap is updated one frame later
@ -56,7 +56,8 @@ if (!hasInterface) exitWith {};
[1, 3] select (_this getVariable [QEGVAR(dragging,isCarrying), false]);
}] call FUNC(addDutyFactor);
};
if (["ACE_Weather"] call EFUNC(common,isModLoaded)) then {
// Weather has an off switch, Dragging & Medical don't.
if (missionNamespace getVariable [QEGVAR(weather,enabled), false]) then {
[QEGVAR(weather,temperature), { // 35->1, 45->2
linearConversion [35, 45, (missionNamespace getVariable [QEGVAR(weather,currentTemperature), 25]), 1, 2, true];
}] call FUNC(addDutyFactor);

View File

@ -9,7 +9,7 @@ PREP_RECOMPILE_END;
#include "initSettings.sqf"
GVAR(staminaBarWidth) = 10 * (((safezoneW / safezoneH) min 1.2) / 40);
GVAR(dutyList) = [[], []];
GVAR(dutyList) = createHashMap;
GVAR(setAnimExclusions) = [];
ADDON = true;

View File

@ -18,6 +18,4 @@
params [["_id", "", [""]], ["_factor", 1, [0, {}]]];
if (_id == "" || {_factor isEqualTo 1}) exitWith {};
GVAR(dutyList) params ["_idList", "_factorList"];
_idList pushBack _id;
_factorList pushBack _factor,
GVAR(dutyList) set [_id, _factor];

View File

@ -30,7 +30,7 @@ private _duty = GVAR(animDuty);
} else {
_duty = _duty * (_unit call _x);
};
} forEach (GVAR(dutyList) select 1);
} forEach (values GVAR(dutyList));
if (GVAR(isSwimming)) then {
_terrainGradient = 0;

View File

@ -31,6 +31,8 @@ if (GVAR(fadeStaminaBar)) then {
} else {
_staminaBarContainer ctrlSetFade (0.9 * _stamina / 0.8);
};
} else {
_staminaBarContainer ctrlSetFade 0;
};
// - Color --------------------------------------------------------------------

View File

@ -14,7 +14,9 @@
*
* Public: No
*/
if (!alive ACE_player) exitWith { // Dead people don't breath, Will also handle null (Map intros)
// Dead people don't breathe, will also handle null (map intros)
if (!alive ACE_player) exitWith {
[FUNC(mainLoop), [], 1] call CBA_fnc_waitAndExecute;
private _staminaBarContainer = uiNamespace getVariable [QGVAR(staminaBarContainer), controlNull];
_staminaBarContainer ctrlSetFade 1;

View File

@ -16,10 +16,4 @@
*/
params [["_id", "", [""]]];
GVAR(dutyList) params ["_idList", "_factorList"];
private _index = _idList find _id;
if (_index != -1) then {
_idList deleteAt _index;
_factorList deleteAt _index;
};
GVAR(dutyList) deleteAt _id;

View File

@ -6,7 +6,7 @@
<Spanish>ACE Fatiga Avanzada</Spanish>
<German>ACE Erweiterte Ausdauer</German>
<Chinese>ACE 進階疲勞</Chinese>
<Chinesesimp>ACE 进阶疲劳</Chinesesimp>
<Chinesesimp>ACE 进阶体力</Chinesesimp>
<Japanese>ACE アドバンスド ファティーグ</Japanese>
<Italian>ACE Fatica Avanzata</Italian>
<Korean>ACE 고급 피로도</Korean>
@ -73,7 +73,7 @@
<French>Facteur de récupération</French>
<Italian>Fattore Recupero</Italian>
<Chinese>回復值</Chinese>
<Chinesesimp>回复值</Chinesesimp>
<Chinesesimp>恢复系数</Chinesesimp>
<Russian>Фактор восстановления</Russian>
<Portuguese>Fator de Recuperação</Portuguese>
<Czech>Faktor zotavení</Czech>
@ -89,7 +89,7 @@
<French>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.</French>
<Italian>Determina in quanto tempo il giocatore recupera quando rilassato. Maggiore significa migliore.</Italian>
<Chinese>決定玩家休息多久就能回復體力,值越高恢復越快</Chinese>
<Chinesesimp>决定玩家休息多久就能复体力,值越高恢复越快</Chinesesimp>
<Chinesesimp>决定玩家休息多久就能复体力,值越高恢复越快</Chinesesimp>
<Russian>Изменяет скорость восстановления игрока во время отдыха. Чем выше, тем быстрее.</Russian>
<Portuguese>Altera o quão rápido um jogador recupera quando descansando. Quanto maior, mais rápido.</Portuguese>
<Czech>Mění, jak rychle se hráč zotaví, když odpočívá. Vyšší je rychlejší.</Czech>
@ -104,7 +104,7 @@
<French>Facteur de charge</French>
<Italian>Fattore Caricamento</Italian>
<Chinese>負重量</Chinese>
<Chinesesimp>重量</Chinesesimp>
<Chinesesimp>重量系数</Chinesesimp>
<Russian>Фактор нагрузки</Russian>
<Portuguese>Fator de Carga</Portuguese>
<Czech>Faktor zatížení</Czech>
@ -119,7 +119,7 @@
<French>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.</French>
<Italian>Incrementa o decrementa quanto il peso influenza le prestazioni dei giocatori. Zero significa che il peso dell'equipaggiamento non ha alcuna influenza nelle prestazioni.</Italian>
<Chinese>增加或降低玩家所能承受的負重量. 如設定值為0, 代表裝備的重量將不會影響到玩家的體力表現</Chinese>
<Chinesesimp>增加或降低玩家所能承受的负重量. 如设定值为0, 代表装备的重量将不会影响到玩家的体力表现</Chinesesimp>
<Chinesesimp>增加或降低玩家所能承受的负重量。如设定值为0代表装备的重量将不会影响到玩家的体力表现</Chinesesimp>
<Russian>Увеличивает или уменьшает вес, влияющий на производительность игроков. Ноль означает, что вес снаряжения не влияет на производительность</Russian>
<Portuguese>Aumenta ou diminui o quanto o peso influencia a performance do jogador. Zero significa que o peso não tem impacto algum na performance.</Portuguese>
<Czech>Zvyšuje nebo snižuje, jak velká váha ovlivňuje výkon hráče. Nulová hodnota znamená, že hmotnost zařízení nemá žádný vliv na výkon.</Czech>
@ -134,7 +134,7 @@
<French>Facteur d'inclinaison du terrain</French>
<Italian>Fattore Pendenza Terreno</Italian>
<Chinese>地形陡峭影響值</Chinese>
<Chinesesimp>地形陡峭影响值</Chinesesimp>
<Chinesesimp>地形陡峭系数</Chinesesimp>
<Russian>Фактор местности</Russian>
<Portuguese>Fator de Inclinação do Terreno</Portuguese>
<Czech>Faktor stoupání terénu</Czech>
@ -149,7 +149,7 @@
<French>Définit à quel point un terrain escarpé réduit l'endurance du joueur.\nPlus la valeur est élevée, moins le joueur est endurant.</French>
<Italian>Stabilisce quanto la pendenza del terreno incrementa la perdita della stamina. Maggiore significa più stamina persa.</Italian>
<Chinese>設定陡峭的地形將會影響多少體力的流失,值越高代表體力流失越快</Chinese>
<Chinesesimp>设定陡峭的地形将会影响多少体力的流失值越高代表体力流失越快</Chinesesimp>
<Chinesesimp>设定陡峭的地形将会影响多少体力的流失速度,值越高代表体力流失越快</Chinesesimp>
<Russian>Устанавливает, насколько крутая местность увеличивает потерю выносливости. Чем выше, тем быстрее теряется выносливость.</Russian>
<Portuguese>Define o quanto que um terreno íngrime aumenta na perda de estamina. Quanto maior, maior a perda de estamina.</Portuguese>
<Czech>Nastavuje, o kolik strmý terén zvyšuje ztrátu výdrže. Vyšší znamená vyšší ztrátu výdrže.</Czech>
@ -159,7 +159,7 @@
<Spanish>Factor de balanceo de mira</Spanish>
<German>Verwacklungsfaktor</German>
<Japanese>手ぶれ因数</Japanese>
<Chinesesimp>抖动</Chinesesimp>
<Chinesesimp>抖动</Chinesesimp>
<Chinese>抖動因素</Chinese>
<French>Facteur de tremblement</French>
<Italian>Fattore di oscillazione</Italian>
@ -167,13 +167,14 @@
<Russian>Фактор колебания прицела</Russian>
<Portuguese>Fator de Balanço de Mira</Portuguese>
<Czech>Faktor kývání</Czech>
<Korean>손떨림 정도</Korean>
</Key>
<Key ID="STR_ACE_Advanced_Fatigue_SwayFactor_Description">
<English>Influences the amount of weapon sway. Higher means more sway.</English>
<Spanish>Afecta al la estabilidad de la mira. Más alto significa más balanceo</Spanish>
<German>Beeinflusst den Faktor, wie ruhig man eine Waffe halten kann. Ein höherer Wert bedeutet weniger Stabilisierung</German>
<Japanese>武器を持つ手のぶれ度合いを設定します。 値が高ければ高いほど、手ぶれが強くなります。</Japanese>
<Chinesesimp>影响手持武器的晃动程度,数值越高,抖动的越厉害.</Chinesesimp>
<Chinesesimp>影响手持武器的晃动程度,数值越高,抖动的越厉害。</Chinesesimp>
<Chinese>影響手持武器晃動程度,數值越高抖動越厲害</Chinese>
<French>Influe sur l'amplitude du tremblement de l'arme. Une valeur plus élevée signifie plus de tremblement.</French>
<Italian>Influenza l'ammontare di oscillazione dell'arma. Maggiore significa più oscillazione.</Italian>
@ -181,6 +182,7 @@
<Russian>Влияет на колебания прицела оружия. Чем выше - тем больше.</Russian>
<Portuguese>Influencia a quantidade de balanço da mira da arma. Quanto maior, mais balanço.</Portuguese>
<Czech>Ovlivňuje množství kývání zbraní. Vyšší znamená více kývání.</Czech>
<Korean>손떨림의 정도를 정합니다. 높을 수록 많이 휘적입니다.</Korean>
</Key>
<Key ID="STR_ACE_Advanced_Fatigue_Enabled">
<English>Enabled</English>
@ -207,7 +209,7 @@
<French>Active/Désactive la fatigue avancée.</French>
<Italian>Abilita/disabilita la Fatica Avanzata.</Italian>
<Chinese>啟用/關閉進階體力.</Chinese>
<Chinesesimp>启用/关闭进阶体力.</Chinesesimp>
<Chinesesimp>启用/关闭进阶体力</Chinesesimp>
<Russian>Включает / Отключает Продвинутую усталость</Russian>
<Portuguese>Ativa/Desativa Fadiga Avançada.</Portuguese>
<Czech>Aktivuje / deaktivuje Pokročilou únavu.</Czech>
@ -248,6 +250,7 @@
<Russian>Скрыть шкалу усталости автоматически</Russian>
<German>Blende Ausdauerleiste automatisch aus</German>
<Chinese>體力條自動淡去</Chinese>
<Chinesesimp>自动淡化体力条</Chinesesimp>
<Italian>Dissolvenza automatica della barra della stamina</Italian>
<Czech>Automaticky schovat lištu výdrže</Czech>
<French>Fondu automatique de la barre d'endurance</French>
@ -255,6 +258,7 @@
<Polish>Chowaj pasek wytrzymałości automatycznie</Polish>
<Portuguese>Barra de stamina some automaticamente</Portuguese>
<Turkish>Dayanıklılık çubuğunu otomatik olarak soldur</Turkish>
<Korean>자동으로 피로도 막대 숨기기</Korean>
</Key>
<Key ID="STR_ACE_Advanced_Fatigue_FadeStaminaBar_Description">
<English>Adjusts transparency of the bar based on stamina status.</English>
@ -262,12 +266,14 @@
<Russian>Регулирует прозрачность шкалы в зависимости от статуса выносливости.</Russian>
<German>Passt die Transparenz der Ausdauerleiste abhängig vom Ausdauerstatus an.</German>
<Chinese>依照目前的體力程度調整體力條之透明度</Chinese>
<Chinesesimp>根据体力状况调整体力条的透明度</Chinesesimp>
<Italian>Regola la trasparenza della barra in base allo stato di affaticamento.</Italian>
<Czech>Upravuje průhlednost lišty v závislosti na současném stavu výdrže</Czech>
<French>Règle la transparence de la barre en fonction de l'état d'endurance.</French>
<Japanese>スタミナの状態に応じて、自動的にバーの透明度を調整します。</Japanese>
<Polish>Dostosowuje przezroczystość paska na podstawie stanu wytrzymałości.</Polish>
<Portuguese>Ajusta a transparência da barra baseado no status da stamina</Portuguese>
<Korean>피로도에 따라 피로도 막대의 투명도를 조절합니다.</Korean>
</Key>
</Package>
</Project>

View File

@ -75,7 +75,7 @@
<French>Afficher l'arc de lancé</French>
<Italian>Mostra Arco di Tiro</Italian>
<Chinese>顯示投擲軌道</Chinese>
<Chinesesimp>显示投掷轨道</Chinesesimp>
<Chinesesimp>显示投掷弧线</Chinesesimp>
<Portuguese>Mostrar o Arco de Arremesso</Portuguese>
<Czech>Zobrazit oblouk vrhu </Czech>
<Turkish>Atış Yayını Göster</Turkish>
@ -91,7 +91,7 @@
<French>Active la visualisation de l'arc de lancé (la trajectoire de vol de l'objet).</French>
<Italian>Abilita la visualizzazione dell'arco del tiro (dove l'oggetto lanciabile volerà).</Italian>
<Chinese>顯示投擲軌道幫助投擲</Chinese>
<Chinesesimp>显示投掷轨道帮助投掷</Chinesesimp>
<Chinesesimp>显示投掷弧线帮助投掷</Chinesesimp>
<Portuguese>Permite a visualização do Arco de Arremesso por onde o objeto será jogado.</Portuguese>
<Czech>Zapíná vizualizaci oblouku vrhu (kam bude předmět hozen).</Czech>
</Key>
@ -106,7 +106,7 @@
<French>Afficher les contrôles à la souris du lancé</French>
<Italian>Mostra Comandi Mouse Lancio</Italian>
<Chinese>顯示滑鼠投擲控制提示</Chinese>
<Chinesesimp>显示鼠投掷控制提示</Chinesesimp>
<Chinesesimp>显示鼠投掷控制提示</Chinesesimp>
<Portuguese>Mostrar os controles de mouse para Arremesso</Portuguese>
<Czech>Zobrazit ovládání házení myší</Czech>
</Key>
@ -121,7 +121,7 @@
<French>Active les aides visuelles pour les contrôles à la souris lorsqu'un lancé est préparé.</French>
<Italian>Abilita la visualizzazione dei controlli del mouse quando l'oggetto lanciabile è pronto.</Italian>
<Chinese>開啟後會在準備投擲時, 顯示滑鼠相關操作</Chinese>
<Chinesesimp>开启后会在准备投掷时, 显示滑鼠相关操作</Chinesesimp>
<Chinesesimp>开启后会在准备投掷时,显示鼠标相关操作</Chinesesimp>
<Portuguese>Ativa as dicas visuais dos controles do mouse quando um arremessável é preparado.</Portuguese>
<Czech>Zapíná popisky pro ovládání myší, když je házený předmět připraven.</Czech>
</Key>
@ -136,7 +136,7 @@
<French>Permettre le ramassage d'objets lançables</French>
<Italian>Abilita Raccogli Oggetti</Italian>
<Chinese>啟用可撿取地面投擲物</Chinese>
<Chinesesimp>启用捡取地面投掷物</Chinesesimp>
<Chinesesimp>启用捡取地面投掷物</Chinesesimp>
<Portuguese>Permitir pegar arremessáveis</Portuguese>
<Czech>Zapnout zdvihání házených předmětů</Czech>
</Key>
@ -151,7 +151,7 @@
<French>Active la possibilité de ramasser des objets lançables du sol.</French>
<Italian>Abilita la possibilità di raccogliere un oggetto lanciabile da terra.</Italian>
<Chinese>啟用後, 可撿取地面上的投擲物</Chinese>
<Chinesesimp>启用后, 可捡取地面上的投掷物</Chinesesimp>
<Chinesesimp>启用后可捡取地面上的投掷物</Chinesesimp>
<Portuguese>Permite que objetos arremessados sejam pegos do chão. (ACE Menu de Interação)</Portuguese>
<Czech>Zapíná schopnost zvednutí házených předmětů ze země.</Czech>
</Key>
@ -166,7 +166,7 @@
<French>Activer le ramassage d'objets lançables attachés</French>
<Italian>Abilita Raccogli Oggetti Lanciabili da altri Oggetti</Italian>
<Chinese>啟用可撿取附著投擲物</Chinese>
<Chinesesimp>启用捡取附着投掷物</Chinesesimp>
<Chinesesimp>启用捡取附着投掷物</Chinesesimp>
<Portuguese>Permitir pegar arremessáveis fixados</Portuguese>
<Czech>Zapnout zdvihání připnutých předmětů.</Czech>
</Key>
@ -181,7 +181,7 @@
<French>Active la possibilité de ramasser des objets lançables attachés à d'autres objets.</French>
<Italian>Abilita la possibilità di raccogliere gli oggetti lanciabili dagli altri oggetti. </Italian>
<Chinese>啟用後, 可撿取附著在物件上的投擲物</Chinese>
<Chinesesimp>启用后, 可捡取附着在物件上的投掷物</Chinesesimp>
<Chinesesimp>启用后,可捡取附着在物体上的投掷物</Chinesesimp>
<Portuguese>Permite que arremessáveis fixados em objetos sejam pegos.</Portuguese>
<Czech>Zapíná schopnost zvednutí předmětů z objektů ke kterým jsou připnuté.</Czech>
</Key>
@ -211,7 +211,7 @@
<French>Mode de lancé de l'objet (Tenir)</French>
<Italian>Modalità Oggetto Gettabile (Mantenere)</Italian>
<Chinese>投擲模式 (按住)</Chinese>
<Chinesesimp>投掷模式 (按住)</Chinesesimp>
<Chinesesimp>投掷模式(按住)</Chinesesimp>
<Portuguese>Modo de Arremesso (Segurar)</Portuguese>
<Czech>Mód puštění (Držet)</Czech>
</Key>
@ -226,7 +226,7 @@
<French>Mode de lancé de l'objet (Basculer)</French>
<Italian>Modalità Oggetto lanciabile Gettabile (Interruttore)</Italian>
<Chinese>投擲模式 (切換)</Chinese>
<Chinesesimp>投掷模式 (切换)</Chinesesimp>
<Chinesesimp>投掷模式(切换)</Chinesesimp>
<Portuguese>Modo de Arremesso (Alternar)</Portuguese>
<Czech>Mód puštění (Přepnout)</Czech>
</Key>
@ -241,7 +241,7 @@
<French>amorcée</French>
<Italian>Armato</Italian>
<Chinese>引信開始燃燒</Chinese>
<Chinesesimp>引信开始燃烧</Chinesesimp>
<Chinesesimp>已开引信</Chinesesimp>
<Portuguese>Preparado</Portuguese>
<Czech>Odjištěný</Czech>
</Key>
@ -272,7 +272,7 @@
<French>(Défilement) Changer de mode</French>
<Italian>(Scorrere) Cambio Modalità</Italian>
<Chinese>(滾輪) 變更模式</Chinese>
<Chinesesimp>(滚轮) 变更模式</Chinesesimp>
<Chinesesimp>(滚轮)变更模式</Chinesesimp>
<Portuguese>(Roda do Mouse) Alternar modo</Portuguese>
<Czech>(Scrollovat) Změnit mód</Czech>
<Turkish>(Tekerlek) Modu Değiştir</Turkish>
@ -288,7 +288,7 @@
<French>(Défilement) Étendre</French>
<Italian>(Scorrere) Estendere</Italian>
<Chinese>(滾輪) 延長</Chinese>
<Chinesesimp>(滚轮) 延长</Chinesesimp>
<Chinesesimp>(滚轮)延长</Chinesesimp>
<Portuguese>(Roda do Mouse) Extender</Portuguese>
<Czech>(Scrollovat) Oddálit</Czech>
<Turkish>(Tekerlek) Uzat</Turkish>
@ -304,7 +304,7 @@
<French>(Clique) Dégoupiller</French>
<Italian>(Click) Arma</Italian>
<Chinese>(點擊) 提早拉開引信</Chinese>
<Chinesesimp>(点击) 提早拉开引信</Chinesesimp>
<Chinesesimp>(点击)提早拉开引信</Chinesesimp>
<Portuguese>(Clique) Cozinhar</Portuguese>
<Czech>(Klik) Odjistit</Czech>
<Turkish>(Tıkla) Cook</Turkish>

View File

@ -9,3 +9,9 @@ class Extended_PreInit_EventHandlers {
init = QUOTE(call COMPILE_SCRIPT(XEH_preInit));
};
};
class Extended_PostInit_EventHandlers {
class ADDON {
init = QUOTE(call COMPILE_FILE(XEH_postInit));
};
};

View File

@ -1,2 +1,6 @@
PREP(initEjectAction);
PREP(canShowEject);
PREP(droneAddActions);
PREP(droneGetTurretTargetPos);
PREP(droneModifyWaypoint);
PREP(droneSetWaypoint);
PREP(initEjectAction);

View File

@ -0,0 +1,8 @@
#include "script_component.hpp"
[QGVAR(droneModifyWaypoint), LINKFUNC(droneModifyWaypoint)] call CBA_fnc_addEventHandler;
[QGVAR(droneSetWaypoint), LINKFUNC(droneSetWaypoint)] call CBA_fnc_addEventHandler;
if (hasInterface) then {
["ACE_controlledUAV", LINKFUNC(droneAddActions)] call CBA_fnc_addEventHandler;
};

View File

@ -0,0 +1,121 @@
#include "script_component.hpp"
/*
* Author: PabstMirror
* Adds actions to a drone
*
* Arguments:
* 0: vehicle <OBJECT>
*
* Return Value:
* None
*
* Example:
* [v] call ace_aircraft_fnc_droneAddActions
*
* Public: No
*/
params ["_vehicle"];
TRACE_1("droneAddActions",_vehicle);
if (!alive _vehicle) exitWith {};
if (_vehicle getVariable [QGVAR(droneActionsAdded), false]) exitWith {};
_vehicle setVariable [QGVAR(droneActionsAdded), true];
// move to location
private _condition = {
params ["_vehicle"];
(missionNamespace getVariable [QGVAR(droneWaypoints), true]) && {waypointsEnabledUAV _vehicle} && {(ACE_controlledUAV select 2) isEqualTo [0]}
};
private _statement = {
params ["_vehicle"];
private _group = group driver _vehicle;
private _pos = ([_vehicle, [0]] call FUNC(droneGetTurretTargetPos)) select 0;
[QGVAR(droneSetWaypoint), [_vehicle, _group, _pos, "MOVE"], _group] call CBA_fnc_targetEvent;
};
private _action = [QGVAR(droneSetWaypointMove), localize "$STR_AC_MOVE",
"\a3\3DEN\Data\CfgWaypoints\Move_ca.paa", _statement, _condition] call EFUNC(interact_menu,createAction);
[_vehicle, 1, ["ACE_SelfActions"], _action] call EFUNC(interact_menu,addActionToObject);
if (_vehicle isKindOf "Air") then {
// loiter at location
_condition = {
params ["_vehicle"];
(missionNamespace getVariable [QGVAR(droneWaypoints), true]) && {waypointsEnabledUAV _vehicle} && {(ACE_controlledUAV select 2) isEqualTo [0]}
};
_statement = {
params ["_vehicle"];
private _group = group driver _vehicle;
private _pos = ([_vehicle, [0]] call FUNC(droneGetTurretTargetPos)) select 0;
[QGVAR(droneSetWaypoint), [_vehicle, _group, _pos, "LOITER"], _group] call CBA_fnc_targetEvent;
};
_action = [QGVAR(droneSetWaypointLoiter), localize "$STR_AC_LOITER",
"\a3\3DEN\Data\CfgWaypoints\Loiter_ca.paa", _statement, _condition] call EFUNC(interact_menu,createAction);
[_vehicle, 1, ["ACE_SelfActions"], _action] call EFUNC(interact_menu,addActionToObject);
// set height
_condition = {
params ["_vehicle"];
(missionNamespace getVariable [QGVAR(droneWaypoints), true]) && {waypointsEnabledUAV _vehicle} && {(ACE_controlledUAV select 2) isEqualTo [0]}
};
_statement = {
params ["_vehicle", "", "_args"];
private _group = group driver _vehicle;
[QGVAR(droneModifyWaypoint), [_vehicle, _group, "height", _args], _group] call CBA_fnc_targetEvent;
};
_action = [QGVAR(setAltitude), localize "$STR_3den_waypoint_attribute_loiteraltitude_displayname",
"", {}, _condition] call EFUNC(interact_menu,createAction);
private _base = [_vehicle, 1, ["ACE_SelfActions"], _action] call EFUNC(interact_menu,addActionToObject);
{
_action = [str _x, str _x, "", _statement, { true }, {}, _x] call EFUNC(interact_menu,createAction);
[_vehicle, 1, _base, _action] call EFUNC(interact_menu,addActionToObject);
} forEach [20, 50, 200, 500, 2000];
// set loiter radius
_condition = {
params ["_vehicle"];
private _group = group driver _vehicle;
private _index = (currentWaypoint _group) min count waypoints _group;
private _waypoint = [_group, _index];
(missionNamespace getVariable [QGVAR(droneWaypoints), true]) && {waypointsEnabledUAV _vehicle} && {(ACE_controlledUAV select 2) isEqualTo [0]}
&& {(waypointType _waypoint) == "LOITER"}
};
_statement = {
params ["_vehicle", "", "_args"];
private _group = group driver _vehicle;
[QGVAR(droneModifyWaypoint), [_vehicle, _group, "radius", _args], _group] call CBA_fnc_targetEvent;
};
_action = [QGVAR(lotierRadius), localize "$STR_3den_waypoint_attribute_loiterradius_displayname",
"", {}, _condition] call EFUNC(interact_menu,createAction);
_base = [_vehicle, 1, ["ACE_SelfActions"], _action] call EFUNC(interact_menu,addActionToObject);
{
_action = [str _x, str _x, "", _statement, { true }, {}, _x] call EFUNC(interact_menu,createAction);
[_vehicle, 1, _base, _action] call EFUNC(interact_menu,addActionToObject);
} forEach [500, 750, 1000, 1250, 1500];
// set loiter direction
_condition = {
params ["_vehicle", "", "_args"];
private _group = group driver _vehicle;
private _index = (currentWaypoint _group) min count waypoints _group;
private _waypoint = [_group, _index];
(missionNamespace getVariable [QGVAR(droneWaypoints), true]) && {waypointsEnabledUAV _vehicle} && {(ACE_controlledUAV select 2) isEqualTo [0]}
&& {(waypointType _waypoint) == "LOITER"} && {(waypointLoiterType _waypoint) != _args}
};
_statement = {
params ["_vehicle", "", "_args"];
private _group = group driver _vehicle;
[QGVAR(droneModifyWaypoint), [_vehicle, _group, "dir", _args], _group] call CBA_fnc_targetEvent;
};
_action = [QGVAR(lotierTypeR), localize "$STR_3den_waypoint_attribute_loiterdirection_displayname",
"\a3\3DEN\Data\Attributes\LoiterDirection\cw_ca.paa", _statement, _condition, {}, "CIRCLE"] call EFUNC(interact_menu,createAction);
[_vehicle, 1, ["ACE_SelfActions"], _action] call EFUNC(interact_menu,addActionToObject);
_action = [QGVAR(lotierTypeR), localize "$STR_3den_waypoint_attribute_loiterdirection_displayname",
"\a3\3DEN\Data\Attributes\LoiterDirection\ccw_ca.paa", _statement, _condition, {}, "CIRCLE_L"] call EFUNC(interact_menu,createAction);
[_vehicle, 1, ["ACE_SelfActions"], _action] call EFUNC(interact_menu,addActionToObject);
};

View File

@ -0,0 +1,46 @@
#include "script_component.hpp"
/*
* Author: PabstMirror
* Get drone's target location, if aimed at infinity it will return a virtual point
*
* Arguments:
* 0: vehicle <OBJECT>
*
* Return Value:
* [PosASL <ARRAY>, Real <BOOL>]
*
* Example:
* [v] call ace_aircraft_fnc_droneGetTurretTargetPos
*
* Public: No
*/
params ["_vehicle"];
private _turret = [0];
TRACE_2("droneGetTurretTargetPos",_vehicle,_turret);
private _turretConfig = [_vehicle, _turret] call CBA_fnc_getTurret;
private _gunBeg = _vehicle selectionPosition getText (_turretConfig >> "gunBeg");
private _gunEnd = _vehicle selectionPosition getText (_turretConfig >> "gunEnd");
if (_gunEnd isEqualTo _gunBeg) then {
// e.g. Darter doesn't have valid gunBeg/gunEnd
private _vehicleConfig = configOf _vehicle;
_gunBeg = _vehicle selectionPosition getText (_vehicleConfig >> "uavCameraGunnerDir");
_gunEnd = _vehicle selectionPosition getText (_vehicleConfig >> "uavCameraGunnerPos");
};
_gunBeg = AGLToASL (_vehicle modelToWorld _gunBeg);
_gunEnd = AGLToASL (_vehicle modelToWorld _gunEnd);
private _turretDir = _gunEnd vectorFromTo _gunBeg;
private _farPoint = _gunEnd vectorAdd (_turretDir vectorMultiply 4999);
private _intersections = lineIntersectsSurfaces [_gunEnd, _farPoint, _vehicle, objNull, true, 1];
if (_intersections isNotEqualTo []) then {
[_intersections select 0 select 0, true]
} else {
// Not looking at anything, just get a virtual point where the camera is pointing
_farPoint set [2, 0 max getTerrainHeightASL _farPoint];
[_farPoint, false]
};

View File

@ -0,0 +1,36 @@
#include "script_component.hpp"
/*
* Author: PabstMirror
* Modify the current waypoint of a drone
*
* Arguments:
* 0: Vehicle <OBJECT>
* 1: Group <GROUP>
* 2: Type <STRING>
* 3: Value <ANY>
*
* Return Value:
* None
*
* Example:
* [v, group v, "height", 2000] call ace_aircraft_fnc_droneModifyWaypoint
*
* Public: No
*/
params ["_vehicle", "_group", "_type", "_value"];
TRACE_4("droneModifyWaypoint",_vehicle,_group,_type,_value);
private _index = (currentWaypoint _group) min count waypoints _group;
private _waypoint = [_group, _index];
switch (toLower _type) do {
case ("height"): {
private _pos = waypointPosition _waypoint;
_pos set [2, _value];
_waypoint setWaypointPosition [_pos, 0];
_vehicle flyInHeight _value;
};
case ("radius"): { _waypoint setWaypointLoiterRadius _value; };
case ("dir"): { _waypoint setWaypointLoiterType _value; };
};
_group setCurrentWaypoint _waypoint;

View File

@ -0,0 +1,43 @@
#include "script_component.hpp"
/*
* Author: PabstMirror
* Set new waypoint of a drone
*
* Arguments:
* 0: Vehicle <OBJECT>
* 1: Group <GROUP>
* 2: Pos 2D <ARRAY>
* 3: Type <STRING>
*
* Return Value:
* None
*
* Example:
* [v, group v, [2000,5000], "LOITER"] call ace_aircraft_fnc_droneSetWaypoint
*
* Public: No
*/
params ["_vehicle", "_group", "_pos", "_type"];
TRACE_4("droneSetWaypoint",_vehicle,_group,_pos,_type);
private _index = (currentWaypoint _group) min count waypoints _group;
private _waypoint = [_group, _index];
// Try to save attributes from existing waypoint
private _currentHeight = round ((waypointPosition _waypoint) select 2);
private _currentLoiterRadius = waypointLoiterRadius _waypoint;
private _currentLoiterType = waypointLoiterType _waypoint;
// Set pos to ATL
_pos set [2, if (_currentHeight >= 50) then { _currentHeight } else { 0 }];
// [_group] call CBA_fnc_clearWaypoints;
_waypoint = _group addWaypoint [_pos, 0];
_waypoint setWaypointType _type;
TRACE_3("",_currentHeight,_currentLoiterRadius,_currentLoiterType);
if (_currentHeight > 1) then { _vehicle flyInHeight _currentHeight; };
if (_currentLoiterRadius > 1) then { _waypoint setWaypointLoiterRadius _currentLoiterRadius; };
if (_currentLoiterType != "") then { _waypoint setWaypointLoiterType _currentLoiterType; };
_group setCurrentWaypoint _waypoint;

View File

@ -56,6 +56,7 @@
<English>30mm High-Explosive Incendiary</English>
<Spanish>30mm Alto Explosivo Incendiaria</Spanish>
<Chinese>30毫米高爆燃燒彈</Chinese>
<Chinesesimp>30 mm 高爆燃烧</Chinesesimp>
<French>30 mm High-Explosive Incendiary</French>
<Polish>30mm Odłamkowo-Burzące - Zapalające</Polish>
<Turkish>30mm Yüksek Patlayıcı </Turkish>
@ -63,11 +64,13 @@
<Japanese>30mm 焼夷りゅう弾</Japanese>
<Czech>30mm Tříštivo-trhavá zápalná střela</Czech>
<Russian>30мм Осколочно-Фугасный Зажигательный</Russian>
<Korean>30mm 고폭소이탄</Korean>
</Key>
<Key ID="STR_ACE_Aircraft_GatlingDescriptionShortHEI">
<English>30mm HEI</English>
<Spanish>30mm AEI</Spanish>
<Chinese>30毫米高爆燃燒</Chinese>
<Chinesesimp>30mm 高爆燃烧</Chinesesimp>
<French>30 mm HEI</French>
<Polish>30mm OB-Z</Polish>
<Turkish>30mm HEI</Turkish>
@ -75,11 +78,13 @@
<Japanese>30mm HEI</Japanese>
<Czech>30mm HEI</Czech>
<Russian>30мм ОФЗ</Russian>
<Korean>30mm HEI</Korean>
</Key>
<Key ID="STR_ACE_Aircraft_GatlingDescriptionAP">
<English>30mm DU Armor Piercing</English>
<Spanish>30mm UE Perforante de Blindaje</Spanish>
<Chinese>30毫米貧化鈾穿甲彈 </Chinese>
<Chinesesimp>30 mm 贫铀穿甲</Chinesesimp>
<French>30 mm UA Armor Piercing</French>
<Polish>30mm Zubożony Uran - Przebijające</Polish>
<Turkish>30mm DU Zırh Delici</Turkish>
@ -87,11 +92,13 @@
<Japanese>30mm DU 徹甲弾</Japanese>
<Czech>30mm Protipancéřová střela z ochuzeného Uranu</Czech>
<Russian>30мм ОУ Бронебойный Снаряд</Russian>
<Korean>30mm 열화우라늄 철갑탄</Korean>
</Key>
<Key ID="STR_ACE_Aircraft_GatlingDescriptionShortAP">
<English>30mm DU AP</English>
<Spanish>30mm UE AP</Spanish>
<Chinese>30毫米貧鈾穿甲</Chinese>
<Chinesesimp>30mm 贫铀穿甲</Chinesesimp>
<French>30 mm UA AP</French>
<Polish>30mm ZU-P</Polish>
<Turkish>30mm DU AP</Turkish>
@ -99,11 +106,13 @@
<Japanese>30mm DU AP</Japanese>
<Czech>30 mm DU AP</Czech>
<Russian>30мм ОУ БС</Russian>
<Korean>30mm DU AP</Korean>
</Key>
<Key ID="STR_ACE_Aircraft_GatlingDescriptionCM41">
<English>30mm Combat Mix 4:1 DU:HEI</English>
<Spanish>30mm Mezcla de Combate 4:1 UE:AEI</Spanish>
<Chinese>30毫米戰鬥混合彈4:1 穿甲:高爆</Chinese>
<Chinesesimp>30mm 战斗混合 穿甲/高爆 4:1</Chinesesimp>
<French>30 mm Mix de Combat 4:1 UA:HEI</French>
<Polish>30mm Mieszanka bojowa 4:1 ZU:OB-Z</Polish>
<Turkish>30mm Combat Mix 4:1 DU:HEI</Turkish>
@ -111,11 +120,13 @@
<Japanese>30mm コンバット ミックス 4:1 DU:HEI</Japanese>
<Czech>30mm Bojový Mix 4:1 DU:HEI</Czech>
<Russian>30мм Смешанное боепитание 4:1 ОУ:ОФЗ</Russian>
<Korean>30mm 4:1 열화:고폭소이</Korean>
</Key>
<Key ID="STR_ACE_Aircraft_GatlingDescriptionShortCM41">
<English>30mm CM 4:1</English>
<Spanish>30mm MC 4:1</Spanish>
<Chinese>30毫米 穿高混合 4:1</Chinese>
<Chinesesimp>30mm 穿爆混合 4:1</Chinesesimp>
<French>30 mm MdC 4:1</French>
<Polish>30mm MB 4:1</Polish>
<Turkish>30mm CM 4:1</Turkish>
@ -123,11 +134,13 @@
<Japanese>30mm CM 4:1</Japanese>
<Czech>30mm BM 4:1</Czech>
<Russian>30мм СБ 4:1</Russian>
<Korean>30mm CM 4:1</Korean>
</Key>
<Key ID="STR_ACE_Aircraft_GatlingDescriptionCM51">
<English>30mm Combat Mix 5:1 DU:HEI</English>
<Spanish>30mm Mezcla de Combate 5:1 UE:AEI</Spanish>
<Chinese>30毫米戰鬥混合彈5:1 穿甲:高爆</Chinese>
<Chinesesimp>30 mm 战斗混合 穿甲/高爆 5:1</Chinesesimp>
<French>30 mm Mix de Combat 5:1 UA:HEI</French>
<Polish>30mm Mieszanka bojowa 5:1 ZU:OB-Z</Polish>
<Turkish>30mm Combat Mix 5:1 DU:HEI</Turkish>
@ -135,11 +148,13 @@
<Japanese>30mm コンバット ミックス 5:1 DU:HEI</Japanese>
<Czech>30mm Bojový Mix 5:1 DU:HEI</Czech>
<Russian>30мм Смешанное боепитание 5:1 ОУ:ОФЗ</Russian>
<Korean>30mm 5:1 열화:고폭소이</Korean>
</Key>
<Key ID="STR_ACE_Aircraft_GatlingDescriptionShortCM51">
<English>30mm CM 5:1</English>
<Spanish>30mm MC 5:1</Spanish>
<Chinese>30毫米 穿高混合 5:1</Chinese>
<Chinesesimp>30mm 穿爆混合 5:1</Chinesesimp>
<French>30 mm MdC 5:1</French>
<Polish>30mm MB 5:1</Polish>
<Turkish>30mm CM 5:1</Turkish>
@ -147,6 +162,7 @@
<Japanese>30mm CM 5:1</Japanese>
<Czech>30mm BM 5:1</Czech>
<Russian>30мм СБ 5:1</Russian>
<Korean>30mm CM 5:1</Korean>
</Key>
</Package>
</Project>

Binary file not shown.

Binary file not shown.

View File

@ -18,11 +18,14 @@ class CfgModels {
skeletonName = "";
};
class ace_entrchtool: Default {};
class ace_envelope_big: Default {};
class ace_envelope_big4: Default {};
class ace_envelope_big4_nogeo: Default {};
class ace_envelope_small: Default {};
class ace_envelope_small4: Default {};
class ace_envelope_small4_nogeo: Default {};
class ace_envelope: Default {
sections[] = {"velka"};
};
class ace_envelope_big: ace_envelope {};
class ace_envelope_big4: ace_envelope {};
class ace_envelope_big4_nogeo: ace_envelope {};
class ace_envelope_small: ace_envelope {};
class ace_envelope_small4: ace_envelope {};
class ace_envelope_small4_nogeo: ace_envelope {};
class LWTS_optic: Default {};
};
};

View File

@ -34,6 +34,7 @@ PREP(fillLeftPanel);
PREP(fillLoadoutsList);
PREP(fillRightPanel);
PREP(fillSort);
PREP(getLoadout);
PREP(handleLoadoutsSearchbar);
PREP(handleMouse);
PREP(handleScrollWheel);

View File

@ -59,10 +59,11 @@ GVAR(lastSortRight) = "";
if (!isNil QGVAR(currentLoadoutsTab) && {GVAR(currentLoadoutsTab) == IDC_buttonSharedLoadouts}) then {
private _curSelData =_contentPanelCtrl lnbData [(lnbCurSelRow _contentPanelCtrl), 1];
([_loadoutData] call FUNC(verifyLoadout)) params ["_loadout", "_nullItemsAmount", "_unavailableItemsAmount"];
([_loadoutData] call FUNC(verifyLoadout)) params ["_extendedLoadout", "_nullItemsAmount", "_unavailableItemsAmount"];
private _newRow = _contentPanelCtrl lnbAddRow [_playerName, _loadoutName];
_extendedLoadout params ["_loadout"];
ADD_LOADOUTS_LIST_PICTURES
_contentPanelCtrl lnbSetData [[_newRow, 1], _playerName + _loadoutName];
@ -85,3 +86,20 @@ GVAR(lastSortRight) = "";
};
};
}] call CBA_fnc_addEventHandler;
["CBA_loadoutSet", {
params ["_unit", "_loadout", "_extendedInfo"];
private _face = _extendedInfo getOrDefault [QGVAR(face), ""];
if (_face != "") then {
_unit setFace _face;
};
private _voice = _extendedInfo getOrDefault [QGVAR(voice), ""];
if (_voice != "") then {
_unit setSpeaker _voice;
};
private _insignia = _extendedInfo getOrDefault [QGVAR(insignia), ""];
if (_insignia != "") then {
_unit setVariable ["BIS_fnc_setUnitInsignia_class", nil];
[_unit, _insignia] call bis_fnc_setUnitInsignia;
};
}] call CBA_fnc_addEventHandler;

View File

@ -14,9 +14,13 @@ PREP_RECOMPILE_END;
[QGVAR(enableIdentityTabs), "CHECKBOX", localize LSTRING(enableIdentityTabsSettings), localize LSTRING(settingCategory), true, true] call CBA_fnc_addSetting;
// Arsenal loadouts
[QGVAR(allowDefaultLoadouts), "CHECKBOX", [LSTRING(allowDefaultLoadoutsSetting), LSTRING(defaultLoadoutsTooltip)], localize LSTRING(settingCategory), true, true] call CBA_fnc_addSetting;
[QGVAR(allowSharedLoadouts), "CHECKBOX", localize LSTRING(allowSharingSetting), localize LSTRING(settingCategory), true, true] call CBA_fnc_addSetting;
[QGVAR(EnableRPTLog), "CHECKBOX", [LSTRING(printToRPTSetting), LSTRING(printToRPTTooltip)], localize LSTRING(settingCategory), false, false] call CBA_fnc_addSetting;
[QGVAR(allowDefaultLoadouts), "CHECKBOX", [LSTRING(allowDefaultLoadoutsSetting), LSTRING(defaultLoadoutsTooltip)], [localize LSTRING(settingCategory), localize LSTRING(loadoutSubcategory)], true, true] call CBA_fnc_addSetting;
[QGVAR(allowSharedLoadouts), "CHECKBOX", localize LSTRING(allowSharingSetting), [localize LSTRING(settingCategory), localize LSTRING(loadoutSubcategory)], true, true] call CBA_fnc_addSetting;
[QGVAR(EnableRPTLog), "CHECKBOX", [LSTRING(printToRPTSetting), LSTRING(printToRPTTooltip)], [localize LSTRING(settingCategory), localize LSTRING(loadoutSubcategory)], false, false] call CBA_fnc_addSetting;
[QGVAR(loadoutsSaveFace), "CHECKBOX", localize LSTRING(loadoutsSaveFaceSetting), [localize LSTRING(settingCategory), localize LSTRING(loadoutSubcategory)], false] call CBA_fnc_addSetting;
[QGVAR(loadoutsSaveVoice), "CHECKBOX", localize LSTRING(loadoutsSaveVoiceSetting), [localize LSTRING(settingCategory), localize LSTRING(loadoutSubcategory)], false] call CBA_fnc_addSetting;
[QGVAR(loadoutsSaveInsignia), "CHECKBOX", localize LSTRING(loadoutsSaveInsigniaSetting), [localize LSTRING(settingCategory), localize LSTRING(loadoutSubcategory)], true] call CBA_fnc_addSetting;
[QGVAR(statsToggle), {
params ["_display", "_showStats"];

View File

@ -6,7 +6,7 @@
*
* Arguments:
* 0: Name of loadout <STRING>
* 1: getUnitLoadout array <ARRAY>
* 1: CBA extended loadout or getUnitLoadout array <ARRAY>
*
* Return Value:
* None
@ -17,7 +17,15 @@
* Public: Yes
*/
params [["_name", "", [""]], ["_loadout", [], [[]], 10]];
params [["_name", "", [""]], ["_loadout", [], [[]]]];
private _extendedInfo = createHashMap;
if (count _loadout == 2) then {
_extendedInfo = _loadout select 1;
_loadout = _loadout select 0;
};
if (count _loadout != 10) exitWith {};
if (isNil QGVAR(defaultLoadoutsList)) then {
GVAR(defaultLoadoutsList) = [];
@ -36,7 +44,7 @@ for "_dataIndex" from 0 to 10 do {
if (_weapon != "") then {
private _baseWeapon = _weapon call BIS_fnc_baseWeapon;
if (_weapon != _baseWeapon) then {
if (_weapon != _baseWeapon) then {
(_loadout select _dataIndex) set [0, _baseWeapon];
};
};
@ -71,7 +79,7 @@ for "_dataIndex" from 0 to 10 do {
private _baseWeapon = _weapon call BIS_fnc_baseWeapon;
if (_weapon != _baseWeapon) then {
(_x select 0)set [0, _baseWeapon];
(_x select 0) set [0, _baseWeapon];
};
};
};
@ -100,7 +108,7 @@ for "_dataIndex" from 0 to 10 do {
private _loadoutIndex = (+(GVAR(defaultLoadoutsList))) findIf {(_x select 0) == _name};
if (_loadoutIndex == -1) then {
GVAR(defaultLoadoutsList) pushBack [_name, _loadout];
GVAR(defaultLoadoutsList) pushBack [_name, [_loadout, _extendedInfo]];
} else {
GVAR(defaultLoadoutsList) set [_loadoutIndex, [_name, _loadout]];
GVAR(defaultLoadoutsList) set [_loadoutIndex, [_name, [_loadout, _extendedInfo]]];
};

View File

@ -9,10 +9,10 @@
* 0: items only misc items <ARRAY of STRING>
* 1: tooltip <STRING> (Optional)
* 2: picture path <STRING> (Optional)
* 3: override a spezific button (0-9) <NUMBER> (Optional)
* 3: override a specific button (0-9) <NUMBER> (Optional)
*
* Return Value:
* successful: number of the slot; error: -1 <NUMBER>
* successful: number of the slot (0-9); error: -1 <NUMBER>
*
* Example:
* [["ACE_bloodIV_500", "ACE_Banana"], "MedicalStuff", "\z\ace\addons\arsenal\data\iconCustom.paa", 5] call ace_arsenal_fnc_addRightPanelButton

View File

@ -43,7 +43,7 @@ if (GVAR(shiftState)) then {
[_display, localize LSTRING(exportDefault)] call FUNC(message);
} else {
private _export = str getUnitLoadout GVAR(center);
private _export = str ([GVAR(center)] call FUNC(getLoadout));
"ace_clipboard" callExtension (_export + ";");
"ace_clipboard" callExtension "--COMPLETE--";

View File

@ -39,8 +39,9 @@ if (GVAR(shiftState) && {is3DEN}) then {
set3DENMissionAttributes [[QGVAR(DummyCategory), QGVAR(DefaultLoadoutsListAttribute), GVAR(defaultLoadoutsList)]];
} else {
if (count _data == 10) then {
GVAR(center) setUnitLoadout _data;
private _count = count _data;
if (_count == 10 || { _count == 2 }) then {
[GVAR(center), _data] call CBA_fnc_setLoadout;
GVAR(currentItems) = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", [], [], [], [], [], []];
for "_index" from 0 to 15 do {
@ -92,8 +93,19 @@ if (GVAR(shiftState) && {is3DEN}) then {
call FUNC(updateUniqueItemsList);
// Reapply insignia
[GVAR(center), ""] call bis_fnc_setUnitInsignia;
[GVAR(center), GVAR(currentInsignia)] call bis_fnc_setUnitInsignia;
if (QGVAR(insignia) in _loadout#1) then {
GVAR(currentInsignia) = _loadout#1 getOrDefault [QGVAR(insignia), ""];
} else {
[GVAR(center), ""] call bis_fnc_setUnitInsignia;
[GVAR(center), GVAR(currentInsignia)] call bis_fnc_setUnitInsignia;
};
if (QGVAR(face) in _loadout#1) then {
GVAR(currentFace) = _loadout#1 getOrDefault [QGVAR(face), GVAR(currentFace)];
};
if (QGVAR(voice) in _loadout#1) then {
GVAR(currentVoice) = _loadout#1 getOrDefault [QGVAR(voice), GVAR(currentVoice)];
};
[_display, _display displayCtrl GVAR(currentLeftPanel)] call FUNC(fillLeftPanel);

View File

@ -34,7 +34,7 @@ private _loadout = switch GVAR(currentLoadoutsTab) do {
};
};
GVAR(center) setUnitLoadout [_loadout, true];
[GVAR(center), _loadout, true] call CBA_fnc_setLoadout;
GVAR(currentItems) = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", [], [], [], [], [], []];
for "_index" from 0 to 15 do {
@ -91,9 +91,21 @@ for "_index" from 0 to 15 do {
call FUNC(updateUniqueItemsList);
// Reapply insignia
[GVAR(center), ""] call bis_fnc_setUnitInsignia;
[GVAR(center), GVAR(currentInsignia)] call bis_fnc_setUnitInsignia;
if (QGVAR(insignia) in _loadout#1) then {
GVAR(currentInsignia) = _loadout#1 getOrDefault [QGVAR(insignia), ""];
} else {
[GVAR(center), ""] call bis_fnc_setUnitInsignia;
[GVAR(center), GVAR(currentInsignia)] call bis_fnc_setUnitInsignia;
};
if (QGVAR(face) in _loadout#1) then {
GVAR(currentFace) = _loadout#1 getOrDefault [QGVAR(face), GVAR(currentFace)];
};
if (QGVAR(voice) in _loadout#1) then {
GVAR(currentVoice) = _loadout#1 getOrDefault [QGVAR(voice), GVAR(currentVoice)];
};
[(findDisplay IDD_ace_arsenal), [localize LSTRING(loadoutLoaded), _loadoutName] joinString " "] call FUNC(message);
[QGVAR(onLoadoutLoad), [_loadout, _loadoutName]] call CBA_fnc_localEvent;
[QGVAR(onLoadoutLoad), [_loadout#0, _loadoutName]] call CBA_fnc_localEvent;
[QGVAR(onLoadoutLoadExtended), [_loadout, _loadoutName]] call CBA_fnc_localEvent;

View File

@ -35,16 +35,17 @@ if (count _similarLoadouts > 0) exitWith {
// Update loadout info in profile / 3DEN and list namespaces
private _loadoutToRename = (_data select {_x select 0 == _loadoutName}) select 0;
(_contentPanelCtrl getVariable (_loadoutName + str GVAR(currentLoadoutsTab))) params ["_loadout", "_nullItemsAmount", "_unavailableItemsAmount", "_nullItemsList", "_unavailableItemsList"];
(_contentPanelCtrl getVariable (_loadoutName + str GVAR(currentLoadoutsTab))) params ["_extendedLoadout", "_nullItemsAmount", "_unavailableItemsAmount", "_nullItemsList", "_unavailableItemsList"];
_data set [_data find _loadoutToRename, [_editBoxContent, (_loadoutToRename select 1)]];
_contentPanelCtrl setVariable [_loadoutName + str GVAR(currentLoadoutsTab), nil];
_contentPanelCtrl setVariable [_editBoxContent + str GVAR(currentLoadoutsTab), [_loadout, _nullItemsAmount, _unavailableItemsAmount, _nullItemsList, _unavailableItemsList]];
_contentPanelCtrl setVariable [_editBoxContent + str GVAR(currentLoadoutsTab), [_extendedLoadout, _nullItemsAmount, _unavailableItemsAmount, _nullItemsList, _unavailableItemsList]];
// Add new row
_contentPanelCtrl lnbDeleteRow _curSelRow;
private _newRow = _contentPanelCtrl lnbAddRow ["",_editBoxContent];
_extendedLoadout params ["_loadout"];
ADD_LOADOUTS_LIST_PICTURES
if (_nullItemsAmount > 0) then {

View File

@ -31,7 +31,8 @@ private _cursSelRow = lnbCurSelRow _contentPanelCtrl;
private _loadoutName = _contentPanelCtrl lnbText [_cursSelRow, 1];
private _curSelLoadout = (_contentPanelCtrl getVariable (_loadoutName + str GVAR(currentLoadoutsTab))) select 0;
private _loadout = getUnitLoadout GVAR(center);
private _extendedLoadout = GVAR(center) call FUNC(getLoadout);
private _loadout = _loadout select 0;
private _loadoutIndex = _data findIf {(_x select 0) == _editBoxContent};
private _sharedLoadoutsVars = GVAR(sharedLoadoutsNamespace) getVariable QGVAR(sharedLoadoutsVars);
@ -62,7 +63,7 @@ switch (GVAR(currentLoadoutsTab)) do {
if (_weapon != "") then {
private _baseWeapon = _weapon call BIS_fnc_baseWeapon;
if (_weapon != _baseWeapon) then {
if (_weapon != _baseWeapon) then {
(_loadout select _dataIndex) set [0, _baseWeapon];
};
};
@ -135,9 +136,9 @@ switch (GVAR(currentLoadoutsTab)) do {
};
if (_loadoutIndex isEqualto -1) then {
_data pushBack [_editBoxContent, _loadout];
_data pushBack [_editBoxContent, _extendedLoadout];
} else {
_data set [_loadoutIndex, [[_editBoxContent, _loadoutName] select (_loadoutName isEqualTo _editBoxContent), _loadout]];
_data set [_loadoutIndex, [[_editBoxContent, _loadoutName] select (_loadoutName isEqualTo _editBoxContent), _extendedLoadout]];
};
// Delete "old" loadout row
@ -149,7 +150,7 @@ switch (GVAR(currentLoadoutsTab)) do {
ADD_LOADOUTS_LIST_PICTURES
_contentPanelCtrl setVariable [_editBoxContent + str GVAR(currentLoadoutsTab), [_loadout] call FUNC(verifyLoadout)];
_contentPanelCtrl setVariable [_editBoxContent + str GVAR(currentLoadoutsTab), [_extendedLoadout] call FUNC(verifyLoadout)];
_contentPanelCtrl lnbSort [1, false];
@ -243,9 +244,9 @@ switch (GVAR(currentLoadoutsTab)) do {
};
if (_loadoutIndex == -1) then {
GVAR(defaultLoadoutsList) pushBack [_editBoxContent, _loadout];
GVAR(defaultLoadoutsList) pushBack [_editBoxContent, _extendedLoadout];
} else {
GVAR(defaultLoadoutsList) set [_loadoutIndex, [[_editBoxContent, _loadoutName] select (_loadoutName isEqualTo _editBoxContent), _loadout]];
GVAR(defaultLoadoutsList) set [_loadoutIndex, [[_editBoxContent, _loadoutName] select (_loadoutName isEqualTo _editBoxContent), _extendedLoadout]];
};
for '_i' from 0 to (((lnbsize _contentPanelCtrl) select 0) - 1) do {
@ -256,7 +257,7 @@ switch (GVAR(currentLoadoutsTab)) do {
ADD_LOADOUTS_LIST_PICTURES
_contentPanelCtrl setVariable [_editBoxContent + str GVAR(currentLoadoutsTab), [_loadout] call FUNC(verifyLoadout)];
_contentPanelCtrl setVariable [_editBoxContent + str GVAR(currentLoadoutsTab), [_extendedLoadout] call FUNC(verifyLoadout)];
_contentPanelCtrl lnbSort [1, false];
@ -295,4 +296,5 @@ switch (GVAR(currentLoadoutsTab)) do {
};
[(findDisplay IDD_ace_arsenal), [localize LSTRING(loadoutSaved), _editBoxContent] joinString " "] call FUNC(message);
private _savedLoadout = (_data select {_x select 0 == _editBoxContent}) select 0;
[QGVAR(onLoadoutSave), [_data find _savedLoadout, _savedLoadout]] call CBA_fnc_localEvent;
[QGVAR(onLoadoutSave), [_data find _savedLoadout, _savedLoadout#0]] call CBA_fnc_localEvent;
[QGVAR(onLoadoutSaveExtended), [_data find _savedLoadout, _savedLoadout]] call CBA_fnc_localEvent;

View File

@ -44,7 +44,7 @@ if (GVAR(currentLoadoutsTab) != IDC_buttonSharedLoadouts) then {
[_loadoutData] call FUNC(verifyLoadout)
} else {
_loadoutCachedInfo
} params ["_loadout", "_nullItemsAmount", "_unavailableItemsAmount", "_nullItemsList", "_unavailableItemsList"];
} params ["_extendedLoadout", "_nullItemsAmount", "_unavailableItemsAmount", "_nullItemsList", "_unavailableItemsList"];
// Log missing / nil items to RPT
if (GVAR(EnableRPTLog) && {isNil "_loadoutCachedInfo"} && {(_nullItemsAmount > 0) || {_unavailableItemsAmount > 0}}) then {
@ -64,6 +64,7 @@ if (GVAR(currentLoadoutsTab) != IDC_buttonSharedLoadouts) then {
private _newRow = _contentPanelCtrl lnbAddRow ["",_loadoutName];
_extendedLoadout params ["_loadout"];
ADD_LOADOUTS_LIST_PICTURES
if (_nullItemsAmount > 0) then {
@ -76,7 +77,7 @@ if (GVAR(currentLoadoutsTab) != IDC_buttonSharedLoadouts) then {
};
};
_contentPanelCtrl setVariable [_loadoutName + str GVAR(currentLoadoutsTab), [_loadout, _nullItemsAmount, _unavailableItemsAmount, _nullItemsList, _unavailableItemsList]];
_contentPanelCtrl setVariable [_loadoutName + str GVAR(currentLoadoutsTab), [_extendedLoadout, _nullItemsAmount, _unavailableItemsAmount, _nullItemsList, _unavailableItemsList]];
if ((profileName + _loadoutName) in _sharedLoadoutsVars && {GVAR(currentLoadoutsTab) == IDC_buttonMyLoadouts}) then {
_contentPanelCtrl lnbSetPicture [[_newRow, 0], QPATHTOF(data\iconPublic.paa)];
@ -99,11 +100,12 @@ if (GVAR(currentLoadoutsTab) != IDC_buttonSharedLoadouts) then {
[QGVAR(loadoutUnshared), [_contentPanelCtrl, profileName, _loadoutName]] call CBA_fnc_remoteEvent;
} else {
([_loadoutData] call FUNC(verifyLoadout)) params ["_loadout", "_nullItemsAmount", "_unavailableItemsAmount"];
([_loadoutData] call FUNC(verifyLoadout)) params ["_extendedLoadout", "_nullItemsAmount", "_unavailableItemsAmount"];
_contentPanelCtrl lnbSetColumnsPos [0, 0.15, 0.40, 0.50, 0.60, 0.70, 0.75, 0.80, 0.85, 0.90];
private _newRow = _contentPanelCtrl lnbAddRow [_playerName, _loadoutName];
_extendedLoadout params ["_loadout"];
ADD_LOADOUTS_LIST_PICTURES
_contentPanelCtrl lnbSetData [[_newRow, 1], _playerName + _loadoutName];

View File

@ -89,7 +89,7 @@ private _compatibleMagazines = [[[], []], [[], []], [[], []]];
// Magazine groups
{
private _magazineGroups = uiNamespace getVariable [QGVAR(magazineGroups),["#CBA_HASH#",[],[],[]]];
private _magazineGroups = uiNamespace getVariable [QGVAR(magazineGroups), createHashMap];
private _magArray = _magazineGroups get (toLower _x);
{((_compatibleMagazines select _index) select _subIndex) pushBackUnique _x} forEach _magArray;
} foreach ([getArray (_weaponConfig >> _x >> "magazineWell"), getArray (_weaponConfig >> "magazineWell")] select (_x == "this"));

View File

@ -0,0 +1,37 @@
#include "script_component.hpp"
/*
* Author: Brett Mayson
* Get the extended loadout of a unit, including identity options if enabled
*
* Arguments:
* 0: Unit <OBJECT>
*
* Return Value:
* CBA Extended Loadout <ARRAY>
*
* Example:
* [_unit] call ace_arsenal_fnc_getLoadout
*
* Public: Yes
*/
params [["_unit", objNull, [objNull]]];
if (isNull _unit) exitWith {};
([_unit] call CBA_fnc_getLoadout) params ["_loadout", "_extendedInfo"];
if (GVAR(loadoutsSaveFace)) then {
_extendedInfo set [QGVAR(face), face _unit];
};
if (GVAR(loadoutsSaveVoice)) then {
_extendedInfo set [QGVAR(voice), speaker _unit];
};
if (GVAR(loadoutsSaveInsignia)) then {
private _insignia = _unit getVariable ["BIS_fnc_setUnitInsignia_class", ""];
if (_insignia != "") then {
_extendedInfo set [QGVAR(insignia), _insignia];
};
};
[_loadout, _extendedInfo]

View File

@ -32,7 +32,7 @@ if (is3DEN) then {
// Apply the loadout from the dummy to all selected units
if (_exitCode == 1) then {
{
_x setUnitLoadout (getUnitLoadout GVAR(center));
[_x, GVAR(center) call FUNC(getLoadout)] call CBA_fnc_setLoadout;
} foreach (get3DENSelected "object");
save3DENInventory (get3DENSelected "object");

View File

@ -79,7 +79,7 @@ for "_index" from 0 to 14 do {
};
if ((_array select 2) isNotEqualTo "") then {
((GVAR(virtualItems) select _index) select 2) pushBackUnique (_array select 2);
((GVAR(virtualItems) select _index) select 2) pushBackUnique (_array select 2);
};
};

View File

@ -29,10 +29,15 @@ private _containerDefaultRightPanel = _display displayCtrl IDC_buttonMisc;
private _selectCorrectPanelContainer = [_containerDefaultRightPanel, _display displayCtrl GVAR(currentRightPanel)] select (!isNil QGVAR(currentRightPanel) && {GVAR(currentRightPanel) in [RIGHT_PANEL_ITEMS_IDCS]});
private _fnc_clearPreviousWepMags = {
private _compatibleMags = getArray (configfile >> "cfgweapons" >> _baseWeapon >> "magazines");
private _compatibleMagsBaseWeapon = [_baseWeapon, true] call CBA_fnc_compatibleMagazines;
if (_item != "") then {
_compatibleMagsBaseWeapon = _compatibleMagsBaseWeapon select {!(_x in _compatibleMags)};
};
{
GVAR(center) removeMagazines _x;
} foreach _compatibleMags;
} foreach _compatibleMagsBaseWeapon;
GVAR(currentItems) set [15, uniformItems GVAR(center)];
GVAR(currentItems) set [16, vestItems GVAR(center)];
@ -54,14 +59,15 @@ switch (GVAR(currentLeftPanel)) do {
TOGGLE_RIGHT_PANEL_HIDE
} else {
if ((GVAR(currentItems) select 0) != _item && {_baseWeapon != _item}) then {
call _fnc_clearPreviousWepMags;
private _compatibleItems = (_item call bis_fnc_compatibleItems) apply {tolower _x};
private _cfgMags = configFile >> "CfgMagazines";
private _compatibleMags = ([_item, true] call CBA_fnc_compatibleMagazines) select { getNumber (_cfgMags >> _x >> "scope") == 2 };
GVAR(center) addWeapon _item;
call _fnc_clearPreviousWepMags;
[GVAR(center), _item] call CBA_fnc_addWeaponWithoutItems;
if (_compatibleMags isNotEqualTo []) then {
GVAR(center) addWeaponItem [_item, [_compatibleMags select 0]];
GVAR(center) addWeaponItem [_item, [_compatibleMags select 0], true];
};
{
@ -96,14 +102,15 @@ switch (GVAR(currentLeftPanel)) do {
TOGGLE_RIGHT_PANEL_HIDE
} else {
if ((GVAR(currentItems) select 2) != _item && {_baseWeapon != _item}) then {
call _fnc_clearPreviousWepMags;
private _compatibleItems = (_item call bis_fnc_compatibleItems) apply {tolower _x};
private _cfgMags = configFile >> "CfgMagazines";
private _compatibleMags = ([_item, true] call CBA_fnc_compatibleMagazines) select { getNumber (_cfgMags >> _x >> "scope") == 2 };
GVAR(center) addWeapon _item;
call _fnc_clearPreviousWepMags;
[GVAR(center), _item] call CBA_fnc_addWeaponWithoutItems;
if (_compatibleMags isNotEqualTo []) then {
GVAR(center) addWeaponItem [_item, [_compatibleMags select 0]];
GVAR(center) addWeaponItem [_item, [_compatibleMags select 0], true];
};
{
@ -137,14 +144,15 @@ switch (GVAR(currentLeftPanel)) do {
TOGGLE_RIGHT_PANEL_HIDE
} else {
if ((GVAR(currentItems) select 1) != _item && {_baseWeapon != _item}) then {
call _fnc_clearPreviousWepMags;
private _compatibleItems = (_item call bis_fnc_compatibleItems) apply {tolower _x};
private _cfgMags = configFile >> "CfgMagazines";
private _compatibleMags = ([_item, true] call CBA_fnc_compatibleMagazines) select { getNumber (_cfgMags >> _x >> "scope") == 2 };
GVAR(center) addWeapon _item;
call _fnc_clearPreviousWepMags;
[GVAR(center), _item] call CBA_fnc_addWeaponWithoutItems;
if (_compatibleMags isNotEqualTo []) then {
GVAR(center) addWeaponItem [_item, [_compatibleMags select 0]];
GVAR(center) addWeaponItem [_item, [_compatibleMags select 0], true];
};
{

View File

@ -33,7 +33,7 @@ private _fnc_selectItem = {
private _primaryMags = primaryWeaponMagazine GVAR(center);
GVAR(currentItems) set [18, (primaryWeaponItems GVAR(center)) + ([_primaryMags + [""], _primaryMags] select (count _primaryMags > 1))];
} else {
GVAR(center) addPrimaryWeaponItem _item;
GVAR(center) addWeaponItem [primaryWeapon GVAR(center), _item, true];
private _primaryMags = primaryWeaponMagazine GVAR(center);
GVAR(currentItems) set [18, (primaryWeaponItems GVAR(center)) + ([_primaryMags + [""], _primaryMags] select (count _primaryMags > 1))];
};
@ -47,7 +47,7 @@ private _fnc_selectItem = {
private _secondaryMags = secondaryWeaponMagazine GVAR(center);
GVAR(currentItems) set [19, (secondaryWeaponItems GVAR(center)) + ([_secondaryMags + [""], _secondaryMags] select (count _secondaryMags > 1))];
} else {
GVAR(center) addSecondaryWeaponItem _item;
GVAR(center) addWeaponItem [secondaryWeapon GVAR(center), _item, true];
private _secondaryMags = secondaryWeaponMagazine GVAR(center);
GVAR(currentItems) set [19, (secondaryWeaponItems GVAR(center)) + ([_secondaryMags + [""], _secondaryMags] select (count _secondaryMags > 1))];
};
@ -60,7 +60,7 @@ private _fnc_selectItem = {
private _handgunMags = handgunMagazine GVAR(center);
GVAR(currentItems) set [20, (handgunItems GVAR(center)) + ([_handgunMags + [""], _handgunMags] select (count _handgunMags > 1))];
} else {
GVAR(center) addHandgunItem _item;
GVAR(center) addWeaponItem [handgunWeapon GVAR(center), _item, true];
private _handgunMags = handgunMagazine GVAR(center);
GVAR(currentItems) set [20, (handgunItems GVAR(center)) + ([_handgunMags + [""], _handgunMags] select (count _handgunMags > 1))];
};

View File

@ -5,7 +5,7 @@
* Verify the provided loadout.
*
* Arguments:
* 0: Loadout <ARRAY> (getUnitLoadout format)
* 0: Loadout <ARRAY> (CBA Extended Loadout or getUnitLoadout format)
*
* Return Value:
* Verified loadout and missing / unavailable items list and count <ARRAY>
@ -15,6 +15,14 @@
params ["_loadout"];
private _extendedInfo = createHashMap;
// Check if the provided loadout is a CBA extended loadout
if (count _loadout == 2) then {
_extendedInfo = _loadout select 1;
_loadout = _loadout select 0;
};
private _weaponCfg = configFile >> "CfgWeapons";
private _magCfg = configFile >> "CfgMagazines";
private _vehcCfg = configFile >> "CfgVehicles";
@ -236,4 +244,4 @@ for "_dataIndex" from 0 to 9 do {
};
};
[_loadout, _nullItemsAmount, _unavailableItemsAmount, _nullItemsList, _unavailableItemsList]
[[_loadout, _extendedInfo], _nullItemsAmount, _unavailableItemsAmount, _nullItemsList, _unavailableItemsList]

View File

@ -54,7 +54,7 @@ cba_diagnostic_projectileMaxLines = 10;
] call BIS_fnc_GUImessage;
if (_return) then {
profileNamespace setVariable [QGVAR(missionLastLoadout), getUnitLoadout player];
profileNamespace setVariable [QGVAR(missionLastLoadout), [player] call CBA_fnc_getLoadout];
_display closeDisplay 2;
findDisplay 46 closeDisplay 0;
};

View File

@ -5,7 +5,7 @@ params ["_unit"];
private _loadout = profileNamespace getVariable QGVAR(missionLastLoadout);
if (!isNil "_loadout") then {
_unit setUnitLoadout _loadout;
[_unit, _loadout] call CBA_fnc_setLoadout;
};
_unit allowDamage false;

View File

@ -27,7 +27,7 @@
<Italian>Nascondi interfaccia</Italian>
<Korean>인터페이스 숨기기</Korean>
<Chinese>隱藏介面</Chinese>
<Chinesesimp>隐藏</Chinesesimp>
<Chinesesimp>隐藏</Chinesesimp>
<Russian>Скрыть интерфейс</Russian>
<Portuguese>Oculta a Interface</Portuguese>
<Czech>Skrýt rozhraní</Czech>
@ -43,7 +43,7 @@
<Italian>Equipaggiamenti</Italian>
<Korean>로드아웃</Korean>
<Chinese>裝備</Chinese>
<Chinesesimp>装备</Chinesesimp>
<Chinesesimp>负载</Chinesesimp>
<Russian>Комплекты</Russian>
<Portuguese>Loadouts</Portuguese>
<Czech>Sady vybavení</Czech>
@ -59,7 +59,7 @@
<Italian>Esporta</Italian>
<Korean>내보내기</Korean>
<Chinese>匯出</Chinese>
<Chinesesimp></Chinesesimp>
<Chinesesimp></Chinesesimp>
<Russian>Экспорт</Russian>
<Portuguese>Exportar</Portuguese>
<Czech>Export</Czech>
@ -75,7 +75,7 @@
<Italian>Importa</Italian>
<Korean>가져오기</Korean>
<Chinese>匯入</Chinese>
<Chinesesimp></Chinesesimp>
<Chinesesimp></Chinesesimp>
<Russian>Импорт</Russian>
<Portuguese>Importar</Portuguese>
<Czech>Import</Czech>
@ -139,7 +139,7 @@
<Italian>Salva l'equipaggiamento corrente</Italian>
<Korean>현재 로드아웃 저장</Korean>
<Chinese>保存當前的裝備</Chinese>
<Chinesesimp>保存当前的装备</Chinesesimp>
<Chinesesimp>保存当前的负载</Chinesesimp>
<Russian>Сохранить текущий комплект экипировки</Russian>
<Portuguese>Salva o loadout atual</Portuguese>
<Czech>Uložit současnou sadu vybavení</Czech>
@ -155,9 +155,11 @@
<Portuguese>[Shift+Clique para salvar nos padrões da missão]</Portuguese>
<French>[Shift+Clic pour enregistrer en tant qu'équipement prédéfini.]</French>
<Chinese>[Shift+左鍵來保存至任務預設]</Chinese>
<Chinesesimp>[Shift+左鍵 以保存至任务默认值]</Chinesesimp>
<Italian>[Shift+Click per salvare la missione con gli equipaggiamenti predefiniti]</Italian>
<Czech>[Shift+Klik pro uložení jako standardního vybavení pro misi]</Czech>
<Turkish>[Shift+Click varsayılan kıyafetlere kaydet]</Turkish>
<Korean>[쉬프트+클릭 하여 임무 기본으로 설정]</Korean>
</Key>
<Key ID="STR_ACE_Arsenal_buttonRenameTooltip">
<English>Rename the selected loadout</English>
@ -169,7 +171,7 @@
<Italian>Rinomina l'equipaggiamento selezionato</Italian>
<Korean>선택한 로드아웃의 이름 바꾸기</Korean>
<Chinese>重新命名當前選擇的裝備</Chinese>
<Chinesesimp>新命名当前选择的装备</Chinesesimp>
<Chinesesimp>命名当前选择的负载</Chinesesimp>
<Russian>Переименовать выбранный комплект экипировки</Russian>
<Portuguese>Renomeia o loadout selecionado</Portuguese>
<Czech>Přejmenovat vybranou sadu vybavení</Czech>
@ -201,7 +203,7 @@
<Italian>Carica l'equipaggiamento selezionato</Italian>
<Korean>선택한 로드아웃 불러오기</Korean>
<Chinese>載入當前選擇的裝備</Chinese>
<Chinesesimp>载入当前选择的装备</Chinesesimp>
<Chinesesimp>载入当前选择的负载</Chinesesimp>
<Russian>Загрузить выбранный комплект экипировки</Russian>
<Portuguese>Carrega o loadout selecionado</Portuguese>
<Czech>Nahrát vybranou sadu vybavení</Czech>
@ -233,7 +235,7 @@
<Italian>Elimina l'equipaggiamento selezionato</Italian>
<Korean>선택한 로드아웃 삭제하기</Korean>
<Chinese>刪除當前選擇的裝備</Chinese>
<Chinesesimp>删除当前选择的装备</Chinesesimp>
<Chinesesimp>删除当前选择的负载</Chinesesimp>
<Russian>Удалить выбранный комплект экипировки</Russian>
<Portuguese>Apaga o loadout selecionado</Portuguese>
<Czech>Smazat vybranou sadu vybavení</Czech>
@ -249,7 +251,7 @@
<Italian>I miei equipaggiamenti</Italian>
<Korean>내 로드아웃</Korean>
<Chinese>我的裝備</Chinese>
<Chinesesimp>我的装备</Chinesesimp>
<Chinesesimp>我的负载</Chinesesimp>
<Russian>Мои комплекты</Russian>
<Portuguese>Meus loadouts</Portuguese>
<Czech>Moje sady vybavení</Czech>
@ -265,7 +267,7 @@
<Italian>Gli equipaggiamenti salvati nel tuo profilo</Italian>
<Korean>프로필에 저장된 로드아웃</Korean>
<Chinese>裝備已保存到你的設定檔中</Chinese>
<Chinesesimp>装备已保存到你的设定档</Chinesesimp>
<Chinesesimp>负载已保存到你的档案</Chinesesimp>
<Russian>Комплекты экипировки, сохраненные в вашем профиле</Russian>
<Portuguese>Loadouts salvos em seu perfil</Portuguese>
<Czech>Sadz vybavení uložené ve vašem profilu</Czech>
@ -281,7 +283,7 @@
<Italian>Equipaggiamenti standard</Italian>
<Korean>기본 로드아웃</Korean>
<Chinese>預設裝備</Chinese>
<Chinesesimp>预设装备</Chinesesimp>
<Chinesesimp>默认负载</Chinesesimp>
<Russian>По умолчанию</Russian>
<Portuguese>Loadouts padrões</Portuguese>
<Czech>Standardní sady vybavení</Czech>
@ -297,7 +299,7 @@
<Italian>Equipaggiamenti resi disponibili dal creatore della missione</Italian>
<Korean>미션메이커가 허용한 로드아웃</Korean>
<Chinese>任務作者提供的預設裝備</Chinese>
<Chinesesimp>任务作者提供的预设装备</Chinesesimp>
<Chinesesimp>任务作者提供的负载</Chinesesimp>
<Russian>Комплекты экипировки, предоставляемые создателем миссии</Russian>
<Portuguese>Loadouts definidos pelo criador da missão</Portuguese>
<Czech>Sady vybavení od autora mise</Czech>
@ -313,7 +315,7 @@
<Italian>Equipaggiamenti pubblici</Italian>
<Korean>공용 로드아웃</Korean>
<Chinese>公用裝備</Chinese>
<Chinesesimp>公用装备</Chinesesimp>
<Chinesesimp>公用负载</Chinesesimp>
<Russian>Публичные комплекты</Russian>
<Portuguese>Loadouts públicos</Portuguese>
<Czech>Veřejné sady vybavení</Czech>
@ -329,7 +331,7 @@
<Italian>Equipaggiamenti condivisi da te e da altri giocatori</Italian>
<Korean>플레이어들이 공유하는 로드아웃</Korean>
<Chinese>由你與其他玩家分享的裝備配置</Chinese>
<Chinesesimp>由你与其他玩家分享的装备配置</Chinesesimp>
<Chinesesimp>你和其他玩家分享的负载配置</Chinesesimp>
<Russian>Комплекты экипировки, опубликованные вами и другими игроками</Russian>
<Portuguese>Loadouts compartilhados por você ou outros jogadores</Portuguese>
<Czech>Sady vybavení sdílené vámi a ostatními hráči</Czech>
@ -343,7 +345,7 @@
<Polish>Sortuj wg wagi</Polish>
<Japanese>重量で並び替え</Japanese>
<Italian>Ordina per peso</Italian>
<Korean>무게로 정렬</Korean>
<Korean>무게 순서로 정렬</Korean>
<Chinese>以重量排序</Chinese>
<Chinesesimp>以重量排序</Chinesesimp>
<Russian>Сортировка по весу</Russian>
@ -359,7 +361,7 @@
<Polish>Sortuj wg ilości</Polish>
<Japanese>量で並び替え</Japanese>
<Italian>Ordina per quantitativo</Italian>
<Korean>갯수로 정렬</Korean>
<Korean>갯수 순서로 정렬</Korean>
<Chinese>以數量排序</Chinese>
<Chinesesimp>以数量排序</Chinesesimp>
<Russian>Сортировка по количеству</Russian>
@ -375,6 +377,8 @@
<Spanish>Ordenar por capacidad</Spanish>
<Russian>Сортировка по вместимости</Russian>
<Polish>Sortuj po rozmiarze</Polish>
<Korean>공간 순서로 정렬</Korean>
<Chinesesimp>以容量排序</Chinesesimp>
</Key>
<Key ID="STR_ACE_Arsenal_sortByAccuracyText">
<English>Sort by accuracy</English>
@ -385,6 +389,8 @@
<Spanish>Ordenar por precisión</Spanish>
<Russian>Сортировка по точности</Russian>
<Polish>Sortuj po celności</Polish>
<Korean>정확도 순서로 정렬</Korean>
<Chinesesimp>以精度排序</Chinesesimp>
</Key>
<Key ID="STR_ACE_Arsenal_sortByRateOfFireText">
<English>Sort by rate of fire</English>
@ -395,6 +401,8 @@
<Spanish>Ordenar por cadencia de tiro</Spanish>
<Russian>Сортировка по темпу стрельбы</Russian>
<Polish>Sortuj po szybkostrzelności</Polish>
<Korean>발사속도 순서로 정렬</Korean>
<Chinesesimp>以射速排序</Chinesesimp>
</Key>
<Key ID="STR_ACE_Arsenal_sortByMagnificationText">
<English>Sort by magnification</English>
@ -404,6 +412,8 @@
<Spanish>Ordenar por magnificación</Spanish>
<Russian>Сортировка по кратности приближения</Russian>
<Polish>Sortuj po przybliżeniu</Polish>
<Korean>배율 순서로 정렬</Korean>
<Chinesesimp>以放大倍数排序</Chinesesimp>
</Key>
<Key ID="STR_ACE_Arsenal_sortByMagCountText">
<English>Sort by ammo count</English>
@ -414,6 +424,8 @@
<Spanish>Ordenar por cantidad de munición</Spanish>
<Russian>Сортировка по количеству боеприпасов</Russian>
<Polish>Sortuj po ilości amunicji</Polish>
<Korean>총알 갯수 순서롤 정렬</Korean>
<Chinesesimp>以弹量排序</Chinesesimp>
</Key>
<Key ID="STR_ACE_Arsenal_sortByProtectionBallistic">
<English>Sort by ballistic protection</English>
@ -423,6 +435,8 @@
<Russian>Сортировка по баллистической защите</Russian>
<Polish>Sortuj po ochronie balistycznej</Polish>
<German>Nach ballistischem Schutz sortieren</German>
<Korean>방탄 성능 순서로 정렬</Korean>
<Chinesesimp>以防弹性能排序</Chinesesimp>
</Key>
<Key ID="STR_ACE_Arsenal_sortByProtectionExplosive">
<English>Sort by explosive protection</English>
@ -432,6 +446,8 @@
<Russian>Сортировка по защите от взрывов</Russian>
<Polish>Sortuj po ochronie przeciw wybuchom</Polish>
<German>Nach Explosionsschutz sortieren</German>
<Korean>방폭 성능 순서로 정렬</Korean>
<Chinesesimp>以防爆性能排序</Chinesesimp>
</Key>
<Key ID="STR_ACE_Arsenal_buttonShareTooltip">
<English>Share or stop sharing the selected loadout</English>
@ -441,9 +457,9 @@
<Polish>Udostępnij lub przestań udostępniać wybrany zestaw</Polish>
<Japanese>選択した装備の共有設定</Japanese>
<Italian>Condividi o smetti di condividere l'equipaggiamento selezionato</Italian>
<Korean>선택한 로드아웃 공유 혹은 공유중지</Korean>
<Korean>선택한 로드아웃 공유 혹은 공유 중지</Korean>
<Chinese>開始/停止分享當前選擇的裝備</Chinese>
<Chinesesimp>开始/停止分享当前选择的装备</Chinesesimp>
<Chinesesimp>开始/停止分享当前选择的负载</Chinesesimp>
<Russian>Открыть или закрыть общий доступ к комплекту экипировки</Russian>
<Portuguese>Compartilhar ou parar de compartilhar o loadout selecionado</Portuguese>
<Czech>Sdílet nebo přestat sdílet vybranou sadu vybavení</Czech>
@ -491,7 +507,7 @@
<Italian>La lista degli equipaggiamenti standard è vuota!</Italian>
<Korean>기본 로드아웃 목록이 비어있습니다!</Korean>
<Chinese>沒有預設的裝備清單!</Chinese>
<Chinesesimp>没有预设的装备清单!</Chinesesimp>
<Chinesesimp>没有默认负载清单!</Chinesesimp>
<Russian>Список комплекта экипировки пуст!</Russian>
<Portuguese>A lista de loadouts padrões está vazia!</Portuguese>
<Czech>Seznam standardních sad vybavení je prázdný!</Czech>
@ -507,7 +523,7 @@
<Italian>La lista degli equipaggiamenti standard è stata esportata negli appunti</Italian>
<Korean>클립보드에 기본 로드아웃 목록 내보내기</Korean>
<Chinese>預設的裝備清單已匯出到剪貼簿中</Chinese>
<Chinesesimp>预设的装备清单已汇出到剪贴簿中</Chinesesimp>
<Chinesesimp>默认负载清单已导出到剪贴板</Chinesesimp>
<Russian>Список комплекта экипировки по умолчанию экспортирован в буфер</Russian>
<Portuguese>A lista de loadouts padrões foi exportada pra área de transferência</Portuguese>
<Czech>Seznam standardních sad vybavení byl exportován do schránky</Czech>
@ -523,7 +539,7 @@
<Italian>Equipaggiamento corrente esportato negli appunti</Italian>
<Korean>현재 로드아웃을 클립보드로 내보냈습니다.</Korean>
<Chinese>當前的裝備已匯出到剪貼簿中</Chinese>
<Chinesesimp>当前的装备已汇出到剪贴簿中</Chinesesimp>
<Chinesesimp>当前负载已导出到剪贴板</Chinesesimp>
<Russian>Текущий список комплекта экипировки экспортирован в буфер</Russian>
<Portuguese>Loadout atual foi exportado pra área de transferência</Portuguese>
<Czech>Současná sada vybavení byla exportována do schránky</Czech>
@ -555,7 +571,7 @@
<Italian>La lista degli equipaggiamenti standard è stata importata dagli appunti</Italian>
<Korean>클립보드에서 기본 로드아웃 가져오기</Korean>
<Chinese>預設的裝備清單已從剪貼簿中匯入</Chinese>
<Chinesesimp>预设的装备清单已从剪贴簿中汇</Chinesesimp>
<Chinesesimp>默认负载已从剪贴板导</Chinesesimp>
<Russian>Список комплекта экипировки по умолчанию импортирован из буфера</Russian>
<Portuguese>A lista de loadouts padrões foi importada da área de transferência</Portuguese>
<Czech>Seznam standardních sad vybavení byl importován ze schránky</Czech>
@ -571,7 +587,7 @@
<Italian>Equipaggiamento importato dagli appunti</Italian>
<Korean>클립보드에서 로드아웃을 가져왔습니다.</Korean>
<Chinese>裝備已從剪貼簿中匯入</Chinese>
<Chinesesimp>装备已从剪贴簿中汇</Chinesesimp>
<Chinesesimp>负载已从剪贴板中导</Chinesesimp>
<Russian>Список комплекта экипировки импортирован из буфера</Russian>
<Portuguese>Loadout importado da área de transferência</Portuguese>
<Czech>Sada vybavení byla importována ze schránky</Czech>
@ -587,7 +603,7 @@
<Italian>Il seguente equipaggiamento è stato eliminato:</Italian>
<Korean>다음 로드아웃이 삭제됨 :</Korean>
<Chinese>以下的裝備已被刪除:</Chinese>
<Chinesesimp>以下的装备已被删除:</Chinesesimp>
<Chinesesimp>以下的负载已被删除:</Chinesesimp>
<Russian>Удален комплект экипировки:</Russian>
<Portuguese>O seguinte loadout foi apagado:</Portuguese>
<Czech>Tato sada vybavení byla smazána:</Czech>
@ -603,7 +619,7 @@
<Italian>Il seguente equipaggiamento non è più pubblico:</Italian>
<Korean>다음 로드아웃이 더이상 공용이 아님:</Korean>
<Chinese>以下的裝備已不再被分享:</Chinese>
<Chinesesimp>以下的装备已不再被分享:</Chinesesimp>
<Chinesesimp>以下的负载已不再被分享:</Chinesesimp>
<Russian>Этот комплект экипировки больше не публичный:</Russian>
<Portuguese>O seguinte loadout não é mais público:</Portuguese>
<Czech>Tato sada vybavení již není veřejná:</Czech>
@ -619,7 +635,7 @@
<Italian>Il campo del nome è vuoto!</Italian>
<Korean>이름칸이 비었습니다!</Korean>
<Chinese>名稱欄位為空!</Chinese>
<Chinesesimp>名称栏位为空!</Chinesesimp>
<Chinesesimp>名称栏位为空</Chinesesimp>
<Russian>Поле имени пустое!</Russian>
<Portuguese>O nome não pode estar vazio!</Portuguese>
<Czech>Pole "Jméno" je prázdné!</Czech>
@ -635,7 +651,7 @@
<Italian>Sei l'autore di questo equipaggiamento</Italian>
<Korean>이 로드아웃의 제작자입니다.</Korean>
<Chinese>你是這個裝備的作者</Chinese>
<Chinesesimp>你是这个装备的作者</Chinesesimp>
<Chinesesimp>你是这个负载的作者</Chinesesimp>
<Russian>Вы автор этого комплекта экипировки</Russian>
<Portuguese>Você é o autor desse loadout</Portuguese>
<Czech>Jste autorem této sady vybavení</Czech>
@ -651,7 +667,7 @@
<Italian>Un tuo equipaggiamento con lo stesso nome è pubblico</Italian>
<Korean>같은 이름의 로드아웃이 공용에 있습니다.</Korean>
<Chinese>已有相同名稱的裝備在公用分享區</Chinese>
<Chinesesimp>已有相同名称的装备在公用分享区</Chinesesimp>
<Chinesesimp>已有相同名称的负载在公用分享区</Chinesesimp>
<Russian>Ваш комплект экипировки с таким же именем является публичным</Russian>
<Portuguese>Um loadout seu com o mesmo nome é público</Portuguese>
<Czech>Vaše sada vybavení se stejným jménem je veřejná</Czech>
@ -667,7 +683,7 @@
<Italian>Il seguente equipaggiamento è stato salvato:</Italian>
<Korean>다음 로드아웃이 저장됨:</Korean>
<Chinese>以下的裝備已被保存:</Chinese>
<Chinesesimp>以下的装备已被保存:</Chinesesimp>
<Chinesesimp>以下的负载已被保存:</Chinesesimp>
<Russian>Сохранен комплект экипировки:</Russian>
<Portuguese>O seguinte loadout foi salvo:</Portuguese>
<Czech>Tato sada vybavení byla uložena:</Czech>
@ -683,7 +699,7 @@
<Italian>Il seguente equipaggiamento è stato caricato:</Italian>
<Korean>다음 로드아웃을 불러옴:</Korean>
<Chinese>以下的裝備已被載入:</Chinese>
<Chinesesimp>以下的装备已被载入:</Chinesesimp>
<Chinesesimp>以下的负载已被载入:</Chinesesimp>
<Russian>Загружен комплект экипировки:</Russian>
<Portuguese>O seguinte loadout foi carregado:</Portuguese>
<Czech>Tato sada vybavení byla načtena:</Czech>
@ -699,7 +715,7 @@
<Italian>Un equipaggiamento con lo stesso nome è gia esistente!</Italian>
<Korean>같은 이름의 로드아웃이 이미 존재합니다!</Korean>
<Chinese>已有相同名稱的裝備!</Chinese>
<Chinesesimp>已有相同名称的装备!</Chinesesimp>
<Chinesesimp>已有相同名称的负载!</Chinesesimp>
<Russian>Комплект с таким именем уже существует!</Russian>
<Portuguese>Um loadout com o mesmo nome já existe!</Portuguese>
<Czech>Již existuje sada vybavení se stejným jménem!</Czech>
@ -779,7 +795,7 @@
<Italian>Consenti equipaggiamenti standard</Italian>
<Korean>기본 로드아웃 허용</Korean>
<Chinese>允許預設裝備</Chinese>
<Chinesesimp>允许预设装备</Chinesesimp>
<Chinesesimp>允许默认负载</Chinesesimp>
<Russian>Разрешить комплекты по умолчанию</Russian>
<Portuguese>Permitir loadouts padrões</Portuguese>
<Czech>Povolit standardní sady vybavení</Czech>
@ -795,7 +811,7 @@
<Italian>Consenti condivisione equipaggiamenti</Italian>
<Korean>로드아웃 공유 허용</Korean>
<Chinese>允許分享裝備</Chinese>
<Chinesesimp>允许分享装备</Chinesesimp>
<Chinesesimp>允许分享负载</Chinesesimp>
<Russian>Разрешить публикацию комплектов</Russian>
<Portuguese>Permitir compartilhar loadouts</Portuguese>
<Czech>Povolit sdílení sad vybavení</Czech>
@ -827,7 +843,7 @@
<Korean>주무기 탄약</Korean>
<German>Primärmagazin</German>
<Chinese>主要武器彈匣</Chinese>
<Chinesesimp>武器弹匣</Chinesesimp>
<Chinesesimp>主武器弹匣</Chinesesimp>
<Russian>Основной магазин</Russian>
<Portuguese>Carregador Primário</Portuguese>
<Czech>Hlavní zásobník</Czech>
@ -843,7 +859,7 @@
<Korean>보조무기 탄약</Korean>
<German>Sekundärmagazin</German>
<Chinese>次要武器彈匣</Chinese>
<Chinesesimp>次要武器弹匣</Chinesesimp>
<Chinesesimp>武器弹匣</Chinesesimp>
<Russian>Вторичный магазин</Russian>
<Portuguese>Carregador Secundário</Portuguese>
<Czech>Vedlejší zásobník</Czech>
@ -857,14 +873,30 @@
<Polish>ACE Arsenał</Polish>
<Japanese>ACE 武器庫</Japanese>
<Italian>ACE Arsenale</Italian>
<Korean>ACE 아스날</Korean>
<Korean>ACE 무기고</Korean>
<Chinese>ACE虛擬軍火庫</Chinese>
<Chinesesimp>ACE虚拟军火库</Chinesesimp>
<Chinesesimp>ACE 虚拟军火库</Chinesesimp>
<Russian>ACE Арсенал</Russian>
<Portuguese>ACE Arsenal</Portuguese>
<Czech>ACE Arzenál</Czech>
<Turkish>ACE Arsenal</Turkish>
</Key>
<Key ID="STR_ACE_Arsenal_loadoutSubcategory">
<English>Loadouts</English>
<Spanish>Equipamiento</Spanish>
<French>Sets d'équipement</French>
<German>Ausrüstungen</German>
<Polish>Zestawy wyposażenia</Polish>
<Japanese>装備</Japanese>
<Italian>Equipaggiamenti</Italian>
<Korean>로드아웃</Korean>
<Chinese>裝備</Chinese>
<Chinesesimp>负载</Chinesesimp>
<Russian>Комплекты</Russian>
<Portuguese>Loadouts</Portuguese>
<Czech>Sady vybavení</Czech>
<Turkish>Kıyafetler</Turkish>
</Key>
<Key ID="STR_ACE_Arsenal_defaultLoadoutsTooltip">
<English>Allow the use of the default loadouts tab</English>
<Spanish>Permitir el uso de la pestaña de equipamientos por defecto</Spanish>
@ -875,7 +907,7 @@
<Korean>기본 로드아웃 탭 사용 허가</Korean>
<German>Erlaube die Nutzung des Standardausrüstungsreiters</German>
<Chinese>允許使用預設的裝備</Chinese>
<Chinesesimp>允许使用预设的装备</Chinesesimp>
<Chinesesimp>允许使用默认的负载</Chinesesimp>
<Russian>Разрешить использование вкладки комплектов экипировки по умолчанию</Russian>
<Portuguese>Permite o uso da aba de loadouts padrões</Portuguese>
<Czech>Povolit používání záložky standardních sad vybavení</Czech>
@ -923,7 +955,7 @@
<Korean>RPT에 누락 된 항목 / 사용할 수없는 항목 기록</Korean>
<German>Fehlende Gegenstände werden in der RPT aufgezeichnet</German>
<Chinese>記錄遺失/無法使用的項目到RPT檔案中</Chinese>
<Chinesesimp>记录遗失/无法使用的项目到RPT档案中</Chinesesimp>
<Chinesesimp>记录遗失/无法使用的项目到 RPT</Chinesesimp>
<Russian>Вести журнал отсутствующих / недоступных предметов в RPT</Russian>
<Portuguese>Registrar em log itens indisponíveis no RPT</Portuguese>
<Czech>Zalogovat chybějící/nedostupné předměty do RPT logu</Czech>
@ -938,7 +970,7 @@
<Japanese>ACE 武器庫を開けません</Japanese>
<Korean>ACE 아스날을 열 수 없음</Korean>
<Chinese>無法開啟ACE虛擬軍火庫</Chinese>
<Chinesesimp>无法开启ACE虚拟军火库</Chinesesimp>
<Chinesesimp>无法开启 ACE 虚拟军火库</Chinesesimp>
<Polish>Nie można otworzyć arsenału ACE</Polish>
<Russian>Невозможно открыть ACE Арсенал</Russian>
<Portuguese>Não foi possível abrir o ACE Arsenal</Portuguese>
@ -951,9 +983,9 @@
<French>Importer les sets BI VA dans l'arsenal ACE</French>
<German>Importiert die BI-VA-Ausrüstungen in das ACE-Arsenal</German>
<Japanese>標準の VA 装備から ACE 武器庫へ取り込み</Japanese>
<Korean>바닐라 로드아웃을 ace 아스날로 가져오기</Korean>
<Korean>바닐라 로드아웃을 ACE 아스날로 가져오기</Korean>
<Chinese>匯入BI原廠虛擬軍火庫的裝備到ACE虛擬軍火庫中</Chinese>
<Chinesesimp>汇入BI原厂虚拟军火库的装备到ACE虚拟军火库中</Chinesesimp>
<Chinesesimp>导入 BI 原版虚拟军火库的负载到 ACE 虚拟军火库中</Chinesesimp>
<Italian>Importa l'arsenale virtuale BI nell'arsenale ACE</Italian>
<Polish>Importuj zestawy wyposażenia z wirtualnego arsenału BI do arsenału ACE</Polish>
<Russian>Импорт комплектов из Арсенала BI в Арсенал ACE</Russian>
@ -968,7 +1000,7 @@
<Japanese>プレイヤー ユニットがありません!ユニットを設置し"Player"と名付けてください。</Japanese>
<Korean>플레이어 유닛을 사용할 수 없습니다! 유닛을 놓고 "플레이어"라고 표시하십시오.</Korean>
<Chinese>沒有可用的玩家單位!請擺放一個單位並設定成"玩家"</Chinese>
<Chinesesimp>没有可用的玩家单位!请摆放一个单位并设定成"玩家"</Chinesesimp>
<Chinesesimp>没有可用的玩家单位!请摆放一个单位并设定成“玩家”</Chinesesimp>
<Italian>Non ci sono giocatori! Poisziona una unità e impostala come "Giocatore".</Italian>
<Polish>Brak dostępnych jednostek gracza! Postaw jednostkę i oznacz ją jako "Gracz".</Polish>
<Russian>Нет доступных игроков! Разместите юнит и отметьте его как «Игрок»</Russian>
@ -981,9 +1013,9 @@
<French>Aucun équipement à importer.</French>
<German>Keine Ausrüstungen zum Importieren</German>
<Japanese>インポートする装備がありません。</Japanese>
<Korean>가져올 로드 아웃이 없습니다.</Korean>
<Korean>가져올 로드아웃이 없습니다.</Korean>
<Chinese>沒有裝備被匯入</Chinese>
<Chinesesimp>没有装备被汇入。</Chinesesimp>
<Chinesesimp>没有负载被导入。</Chinesesimp>
<Italian>Non ci sono equipaggiamenti da importare.</Italian>
<Polish>Brak zestawów wyposażenia do zaimportowania.</Polish>
<Russian>Нет комплектов для импорта</Russian>
@ -996,9 +1028,9 @@
<Spanish>ACE Arsenal</Spanish>
<German>ACE-Arsenal</German>
<Japanese>ACE 武器庫</Japanese>
<Korean>ACE 아스날</Korean>
<Korean>ACE 무기고</Korean>
<Chinese>ACE虛擬軍火庫</Chinese>
<Chinesesimp>ACE虚拟军火库</Chinesesimp>
<Chinesesimp>ACE 虚拟军火库</Chinesesimp>
<Italian>Arsenale ACE</Italian>
<Polish>Arsenał ACE</Polish>
<Russian>ACE Арсенал</Russian>
@ -1012,9 +1044,9 @@
<Spanish>Volver al arsenal de ACE</Spanish>
<German>Zurück zum ACE-Arsenal.</German>
<Japanese>ACE 武器庫へ戻ります。</Japanese>
<Korean>ACE 아스날로 돌아가기</Korean>
<Korean>ACE 무기고로 돌아가기</Korean>
<Chinese>返回到ACE虛擬軍火庫</Chinese>
<Chinesesimp>返回到ACE虚拟军火库。</Chinesesimp>
<Chinesesimp>返回到 ACE 虚拟军火库。</Chinesesimp>
<Italian>Torna all'arsenale ACE</Italian>
<Polish>Wróć do arsenału ACE.</Polish>
<Russian>Вернуться в ACE Арсенал</Russian>
@ -1028,9 +1060,9 @@
<Spanish>Usar el arsenal de ACE para probar diferentes armas y equipamiento.</Spanish>
<German>Verwende ACE-Arsenal und sieh dir verschiedene Waffen und Ausrüstung an und probiere sie aus.</German>
<Japanese>様々な武器と装備を試せるよう ACE 武器庫を使用します。</Japanese>
<Korean>ACE Arsenal을 사용하여 다른 무기와 장비를 시험해보십시오.</Korean>
<Korean>ACE 무기고를 사용하여 다른 무기와 장비를 시험해보십시오.</Korean>
<Chinese>使用ACE虛擬軍火庫來嘗試不同的武器與裝備</Chinese>
<Chinesesimp>使用ACE虚拟军火库来尝试不同的武器与装备。</Chinesesimp>
<Chinesesimp>使用 ACE 虚拟军火库来尝试不同的武器与装备。</Chinesesimp>
<Italian>Usa l'arsenale ACE per provare armi ed equipaggiamenti vari.</Italian>
<Polish>Skorzystaj z arsenału ACE by wypróbować broń i ekwipunek.</Polish>
<Russian>Используйте ACE Arsenal, чтобы опробовать различное оружие и снаряжение.</Russian>
@ -1045,7 +1077,7 @@
<Japanese>様々な武器と装備を試して、あなただけの装備を作成してください。</Japanese>
<Korean>무기와 장비를 사용해보고 자신의 로드아웃을 만듭니다.</Korean>
<Chinese>嘗試不同的武器與裝備來組合你個人的裝備配置</Chinese>
<Chinesesimp>尝试不同的武器与装备来组合你个人的装备配置。</Chinesesimp>
<Chinesesimp>尝试不同的武器与装备来组合你个人的负载配置。</Chinesesimp>
<Italian>Prova armi ed equipaggiamenti e creai i tuoi equipaggiamenti personalizzati.</Italian>
<Polish>Wypróbuj broń i ekwipunek i stwórz swoje własne zestawy wyposażenia.</Polish>
<Russian>Опробуйте оружие и снаряжение, создавайте собственные комплекты экипировки.</Russian>
@ -1059,7 +1091,7 @@
<German>Öffnet das Ausrüstungsmenü</German>
<French>Affiche les sets d'équipement.</French>
<Chinese>開啟裝備選單</Chinese>
<Chinesesimp>开启装备选</Chinesesimp>
<Chinesesimp>开启负载菜</Chinesesimp>
<Japanese>装備画面を開く</Japanese>
<Italian>Apri la pagina degli equipaggiamenti</Italian>
<Polish>Otwórz ekran zestawów</Polish>
@ -1067,6 +1099,7 @@
<Portuguese>Abre a tela de loadouts</Portuguese>
<Czech>Otevřít obrazovku se sadami vybavení</Czech>
<Turkish>Kıyafetler ekranını</Turkish>
<Korean>로드아웃 화면 열기</Korean>
</Key>
<Key ID="STR_ACE_Arsenal_buttonExportTooltip">
<English>Export current / default loadouts</English>
@ -1074,13 +1107,14 @@
<German>Exportiert aktuelles / standard Loadout</German>
<French>Exporte le set d'équipement actuel/les sets prédéfinis.</French>
<Chinese>匯出當前/預設的裝備</Chinese>
<Chinesesimp>出当前/预设的装备</Chinesesimp>
<Chinesesimp>出当前/预设的装备</Chinesesimp>
<Japanese>現在/標準装備をエクスポートします</Japanese>
<Italian>Esporta l'equipaggiamento attuale oppure la lista degli equipaggiamenti di base</Italian>
<Polish>Eksportuj obecne / domyślne zestawy wyposażenia </Polish>
<Russian>Экспорт комплектов экипировки</Russian>
<Portuguese>Exporta loadout atual / loadouts padrões</Portuguese>
<Czech>Exportovat současný/standardní sady vybavení</Czech>
<Korean>현재/기본 로드아웃을 내보냅니다</Korean>
</Key>
<Key ID="STR_ACE_Arsenal_buttonImportTooltip">
<English>Import current / default loadouts</English>
@ -1088,13 +1122,14 @@
<German>Importiert aktuelles / standard Loadout</German>
<French>Importe le set d'équipement actuel/les sets prédéfinis.</French>
<Chinese>匯入當前/預設的裝備</Chinese>
<Chinesesimp>汇入当前/预设的装备</Chinesesimp>
<Chinesesimp>导入当前/预设的负载</Chinesesimp>
<Japanese>現在/標準装備をインポートします</Japanese>
<Italian>Importa l'equipaggiamento attuale oppure la lista degli equipaggiamenti di base</Italian>
<Polish>Importuj obecne / domyślne zestawy wyposażenia</Polish>
<Russian>Импорт комплектов экипировки</Russian>
<Portuguese>Importa loadout atual / loadouts padrões</Portuguese>
<Czech>Importovat současný/standardní sady vybavení</Czech>
<Korean>현재/기본 로드아웃 을 불러옵니다</Korean>
</Key>
<Key ID="STR_ACE_Arsenal_statPotassium">
<English>Potassium levels</English>
@ -1110,6 +1145,7 @@
<Czech>Úrovně draslíku</Czech>
<Turkish>Potasyum seviyeleri</Turkish>
<Japanese>カリウム含有量</Japanese>
<Korean>칼륨 레벨</Korean>
</Key>
<Key ID="STR_ACE_Arsenal_statMagnification">
<English>Magnification</English>
@ -1138,8 +1174,10 @@
<Portuguese>Suporte de Visão Noturna</Portuguese>
<French>Support JVN</French>
<Chinese>夜視鏡支援</Chinese>
<Chinesesimp>支持夜视仪</Chinesesimp>
<Czech>Podpora nočního vidění</Czech>
<Turkish>Gece Görüş Desteği</Turkish>
<Korean>야간투시 지원여부</Korean>
</Key>
<Key ID="STR_ACE_Arsenal_statVisionMode_supPrim">
<English>Primary supported</English>
@ -1152,7 +1190,9 @@
<Portuguese>Primária suportada</Portuguese>
<French>Primaire supportée</French>
<Chinese>主武器支援</Chinese>
<Chinesesimp>主镜支持</Chinesesimp>
<Czech>Hlavní část hledí podporuje</Czech>
<Korean>주무기 지원여부</Korean>
</Key>
<Key ID="STR_ACE_Arsenal_statVisionMode_supSec">
<English>Secondary supported</English>
@ -1165,7 +1205,9 @@
<Portuguese>Secundária suportada</Portuguese>
<French>Secondaire supportée</French>
<Chinese>次要武器支援</Chinese>
<Chinesesimp>副镜支持</Chinesesimp>
<Czech>Vedlejší část hledí podporuje</Czech>
<Korean>보조무기 지원여부</Korean>
</Key>
<Key ID="STR_ACE_Arsenal_statVisionMode_IntPrim">
<English>Primary integrated</English>
@ -1178,7 +1220,9 @@
<Portuguese>Primária integrada</Portuguese>
<French>Primaire intégrée</French>
<Chinese>整合主武器</Chinese>
<Chinesesimp>主镜内置</Chinesesimp>
<Czech>Integrováno do hlavní části hledí</Czech>
<Korean>주무기 내장여부</Korean>
</Key>
<Key ID="STR_ACE_Arsenal_statVisionMode_NoSup">
<English>Not Supported</English>
@ -1191,8 +1235,10 @@
<Portuguese>Não suportado</Portuguese>
<French>Non supporté</French>
<Chinese>不支援</Chinese>
<Chinesesimp>不支持</Chinesesimp>
<Czech>Není podporováno</Czech>
<Turkish>Desteklenmiyor</Turkish>
<Korean>지원되지 않음</Korean>
</Key>
<Key ID="STR_ACE_Arsenal_page">
<English>Page</English>
@ -1208,6 +1254,7 @@
<Portuguese>Página</Portuguese>
<Czech>Stránka</Czech>
<Turkish>Sayfa</Turkish>
<Korean>페이지</Korean>
</Key>
<Key ID="STR_ACE_Arsenal_enableIdentityTabsSettings">
<English>Enable the faces / voices / insignias tabs</English>
@ -1215,7 +1262,7 @@
<German>Aktiviere die Gesichter-, Stimmen- und Abzeichenübersicht</German>
<French>Activer les onglets visages/voix/insignes</French>
<Japanese>顔 / 声 / 記章タブを有効化</Japanese>
<Chinesesimp>启用脸谱/声音/徽章/选项 </Chinesesimp>
<Chinesesimp>启用脸谱/语音/徽章选项</Chinesesimp>
<Chinese>啟用臉譜/聲音/徽章選項</Chinese>
<Italian>Abilita volti, voci e insegne</Italian>
<Polish>Aktywuj zakładki twarz / głos / insygnia</Polish>
@ -1223,6 +1270,7 @@
<Portuguese>Ativar as abas de rostos / vozes / insígnias</Portuguese>
<Czech>Povolit záložky s tvářemi, hlasy a insigniemi</Czech>
<Turkish>Yüzler/sesler/peçler bölmelerini etkinleştir</Turkish>
<Korean>얼굴/음성/부대마크 탭 활성화</Korean>
</Key>
<Key ID="STR_ACE_Arsenal_buttonClearContainerTooltip">
<English>Empty the selected container</English>
@ -1230,13 +1278,14 @@
<German>Aktuellen Container leeren</German>
<French>Vider le conteneur selectionné</French>
<Japanese>選択されたコンテナは空です</Japanese>
<Chinesesimp>选择的箱子是空的</Chinesesimp>
<Chinesesimp>选择的容器是空的</Chinesesimp>
<Chinese>清空選擇的箱子</Chinese>
<Italian>Svuota il contenitore selezionato</Italian>
<Polish>Opróżnij wybrany pojemnik</Polish>
<Russian>Очистить контейнер</Russian>
<Portuguese>Esvaziar o cointâiner selecionado</Portuguese>
<Czech>Vyprázdnit vybraný nosič</Czech>
<Korean>선택한 보관함 비우기</Korean>
</Key>
<Key ID="STR_ACE_Arsenal_exportedClassnameText">
<English>Exported class name to clipboard</English>
@ -1244,13 +1293,14 @@
<German>Der Klassenname wurde in die Zwischenablage exportiert</German>
<French>Nom de classe exporté dans le presse papier.</French>
<Japanese>クリップボードへクラスネームをエクスポート</Japanese>
<Chinesesimp>类复制到剪贴板</Chinesesimp>
<Chinesesimp>将类复制到剪贴板</Chinesesimp>
<Chinese>輸出 class name 到剪貼簿上</Chinese>
<Italian>Copiato il nome della classe negli appunti</Italian>
<Polish>Wyeksportowano nazwę klasy do schowka</Polish>
<Russian>Имя класса, экспортированного в буфер</Russian>
<Portuguese>O nome da classe foi exportado para a área de transferência</Portuguese>
<Czech>Jméno třídy exportováno do schránky</Czech>
<Korean>클래스 이름 복사하기</Korean>
</Key>
<Key ID="STR_ACE_Arsenal_Mode">
<English>Mode</English>
@ -1296,8 +1346,10 @@
<Portuguese>Lista Negra</Portuguese>
<French>Liste noire</French>
<Chinese>黑名單</Chinese>
<Chinesesimp>黑名单</Chinesesimp>
<Czech>Seznam zakázaných</Czech>
<Turkish>Kara Liste</Turkish>
<Korean>블랙리스트</Korean>
</Key>
<Key ID="STR_ACE_Arsenal_Items">
<English>Items</English>
@ -1326,7 +1378,9 @@
<Russian>Экспорт текущего списка предметов в виде массива для использования в скриптах</Russian>
<French>Exporte l'équipement actuel dans le presse-papier, sous la forme d'un tableau à utiliser dans les scripts.</French>
<Chinese>匯出目前的物品列表為陣列用於腳本編寫</Chinese>
<Chinesesimp>导出目前的物品列表为排列以用于脚本编写</Chinesesimp>
<Czech>Exportovat současný seznam předmětů jako pole pro použití ve skriptech</Czech>
<Korean>스크립트에서 사용을 위해 현재 항목 목록을 배열로 내보내기</Korean>
</Key>
<Key ID="STR_ACE_Arsenal_AttributeImport_Tooltip">
<English>Import items list array from clipboard (should be the same format as export)</English>
@ -1338,8 +1392,10 @@
<Portuguese>Importar lista de itens da área de transferência (deve estar no mesmo formato que uma lista exportada)</Portuguese>
<French>Importe un tableau d'équipements depuis le presse-papier (le format doit être identique à celui de l'exportation).</French>
<Chinese>從剪貼簿匯入物品列表之陣列(應該與匯出的格式一樣)</Chinese>
<Chinesesimp>从剪贴板导入物品列表排列(应与导出的格式一样)</Chinesesimp>
<Italian>Importa elenco appunti (deve essere nello stesso formato di un elenco esportato)</Italian>
<Czech>Importovat pole se seznamem předmětů ze schránky (měl by být ve stejném formátu jako export)</Czech>
<Korean>클립보드에서 항목 목록을 배열로 가져옵니다(내보내기와 동일한 형식이어야 함).</Korean>
</Key>
<Key ID="STR_ACE_Arsenal_AttributeAddCompatible_DisplayName">
<English>Add Compatible Items</English>
@ -1351,8 +1407,10 @@
<Portuguese>Adicionar itens compatíveis</Portuguese>
<French>Ajouter des objets compatibles</French>
<Chinese>增加相容的物品</Chinese>
<Chinesesimp>添加兼容物品</Chinesesimp>
<Italian>Aggiungi Oggetti Compatibili</Italian>
<Czech>Přidat kompatibilní předměty</Czech>
<Korean>호환 아이템 추가</Korean>
</Key>
<Key ID="STR_ACE_Arsenal_AttributeAddCompatible_Tooltip">
<English>Will automatically add compatible attachments or magazines (based on selected category) for all weapons in current items list</English>
@ -1364,8 +1422,10 @@
<Portuguese>Irá automaticamente adicionar acessórios ou carregadores (baseado na categoria selecionada) para todas as armas na lista de itens atual</Portuguese>
<French>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.</French>
<Chinese>將會自動增加相容的配件以及彈匣(基於選擇的類型)至妳目前物品列表中的全部武器</Chinese>
<Chinesesimp>将自动为当前物品列表中的所有武器添加兼容的配件或弹匣(基于选定的类别)</Chinesesimp>
<Italian>Aggiungerà automaticamente accessori o caricatori (in base alla categoria selezionata) per tutte le armi nell'elenco degli oggetti correnti</Italian>
<Czech>Automaticky přídá kompatibilní zásobníky (na základě vybrané kategorie) ro všechny zbraně v současném seznamu předmětů</Czech>
<Korean>현재 아이템 목록에 있는 모든 무기에 해당하는부착물과 탄창(선택한 카테고리에 따라)을 자동으로 추가합니다.</Korean>
</Key>
<Key ID="STR_ACE_Arsenal_statTTL">
<English>Time to live</English>
@ -1378,8 +1438,10 @@
<Russian>Время действия</Russian>
<Portuguese>Time to live</Portuguese>
<Chinese>有效時間</Chinese>
<Chinesesimp>有效时间</Chinesesimp>
<Czech>Time to live</Czech>
<Turkish>Bitme Süresi</Turkish>
<Korean>유효 시간</Korean>
</Key>
<Key ID="STR_ACE_Arsenal_StatExplosionTime">
<English>Fuse Time</English>
@ -1389,6 +1451,8 @@
<Japanese>信管設定時間</Japanese>
<Spanish>Tiempo de espoleta</Spanish>
<German>Detonationsverzögerung</German>
<Chinesesimp>引信时间</Chinesesimp>
<Korean>신관 시간</Korean>
</Key>
<Key ID="STR_ACE_Arsenal_DetonatesOnImpact">
<English>Detonates on impact</English>
@ -1398,6 +1462,17 @@
<Polish>Detonuj przy uderzeniu</Polish>
<Japanese>着発信管</Japanese>
<Spanish>Detona mediante impacto</Spanish>
<Chinesesimp>碰炸引信</Chinesesimp>
<Korean>충격 신관</Korean>
</Key>
<Key ID="STR_ACE_Arsenal_loadoutsSaveFaceSetting">
<English>Save Face</English>
</Key>
<Key ID="STR_ACE_Arsenal_loadoutsSaveVoiceSetting">
<English>Save Voice</English>
</Key>
<Key ID="STR_ACE_Arsenal_loadoutsSaveInsigniaSetting">
<English>Save Insignia</English>
</Key>
</Package>
</Project>

View File

@ -19,7 +19,7 @@
params ["_player", "_turret"];
private _vehicle = vehicle _player;
private _typeOf = typeOf _vehicle;
private _vehicleCfg = configFile >> "CfgVehicles" >> _typeOf;
private _vehicleCfg = configOf _vehicle;
// config "ace_artillerytables_showGunLaying" [0 disabled, 1 enabled, 2 enabled w/ alt elevationMode] falls back to artilleryScanner
private _showGunLaying = if (isNumber (_vehicleCfg >> QGVAR(showGunLaying))) then {

View File

@ -5,6 +5,7 @@
<English>Artillery Rangetable</English>
<German>Artillerieschusstafel</German>
<Chinese>火炮射程表</Chinese>
<Chinesesimp>火炮射表</Chinesesimp>
<Italian>Tavola balistica per artigliria </Italian>
<Czech>Dělostřelecké tabulky střelby</Czech>
<Japanese>火砲射表</Japanese>
@ -14,11 +15,13 @@
<Spanish>Tabla de distancias de artillería</Spanish>
<Turkish>Topçu Menzil Tablosu</Turkish>
<Russian>Артиллерийская баллистическая таблица</Russian>
<Korean>포병 사격거리표</Korean>
</Key>
<Key ID="STR_ACE_ArtilleryTables_rangetable_description">
<English>Universal Artillery Rangetable</English>
<German>Universale Artillerieschusstafel</German>
<Chinese>通用的火炮射程表</Chinese>
<Chinesesimp>通用火炮射表</Chinesesimp>
<Italian>Tavola balistica universale per artiglieria</Italian>
<Czech>Univerzální dělostřelecká tabulka střelby</Czech>
<Japanese>汎用の火砲用射程表</Japanese>
@ -28,6 +31,7 @@
<Spanish>Tabla de distancias universal de artillería</Spanish>
<Turkish>Uluslar arası Topçu Menzil Tablosu</Turkish>
<Russian>Универсальная артиллерийская баллистическая таблица</Russian>
<Korean>범용 포병 사격거리표</Korean>
</Key>
<Key ID="STR_ACE_ArtilleryTables_advancedCorrections_displayName">
<English>Air Resistance</English>
@ -59,7 +63,7 @@
<Italian>Per Proiettili dei Giocatori, simula la Resistenza dell'Aria e gli Effetti del Vento</Italian>
<Japanese>プレイヤが射撃すると、空気抵抗モデルと風による影響を与えます。</Japanese>
<Korean>플레이어 사격시 공기저항과 바람에 영향을 받습니다</Korean>
<Chinesesimp>设定由玩家射击的迫击炮,将会受到空气阻力与风力的影响</Chinesesimp>
<Chinesesimp>设定由玩家射击的炮弹是否受到空气阻力与风力的影响</Chinesesimp>
<Chinese>設定由玩家射擊的迫擊砲,將會受到空氣阻力與風力的影響</Chinese>
<Turkish>Oyuncu atışları, hava direnci ve rüzgar efektleri için</Turkish>
</Key>
@ -67,6 +71,7 @@
<English>Artillery Computer Disabled</English>
<German>Artilleriecomputer ausgeschaltet</German>
<Chinese>停用火炮電腦</Chinese>
<Chinesesimp>停用弹道计算机</Chinesesimp>
<Italian>Computer artiglieria disattivato</Italian>
<Czech>Zakázat používání dělostřeleckého počítače</Czech>
<Japanese>砲撃コンピュータ無効化</Japanese>
@ -76,11 +81,13 @@
<Spanish>Computadora de artillería deshabilitada</Spanish>
<Turkish>Topçu Bilgisayarı Devre Dışı</Turkish>
<Russian>Артиллерийский Компьютер Отключён</Russian>
<Korean>탄도계산컴퓨터 비활성화</Korean>
</Key>
<Key ID="STR_ACE_ArtilleryTables_disableArtilleryComputer_description">
<English>Disable the vanilla artillery computers</English>
<German>Deaktiviert die Vanilla-Artilleriecomputer</German>
<Chinese>停用原本的火炮控制電腦</Chinese>
<Chinesesimp>禁用游戏自带的弹道计算机</Chinesesimp>
<Italian>Disattiva il computer artiglieria vanilla</Italian>
<Czech>Zakázat používání dělostřeleckého počítače základní hry</Czech>
<Japanese>ゲームの砲撃コンピュータを無効化します。</Japanese>
@ -90,6 +97,7 @@
<Spanish>Deshabilita la computadora de artillería por defecto de Arma 3</Spanish>
<Turkish>Topçu bilgisayarını devre dışı bırak</Turkish>
<Russian>Отключить ванильный артиллерийский компьютер</Russian>
<Korean>바닐라 탄도계산컴퓨터를 비활성화 합니다.</Korean>
</Key>
</Package>
</Project>

View File

@ -32,7 +32,7 @@
<Japanese>ATragMX を開く</Japanese>
<Korean>ATragMX 열기</Korean>
<Chinese>開啟ATragMX</Chinese>
<Chinesesimp>开启ATragMX</Chinesesimp>
<Chinesesimp>开启 ATragMX</Chinesesimp>
<Turkish>ATragMX'i aç</Turkish>
</Key>
<Key ID="STR_ACE_ATragMX_Description">
@ -49,7 +49,7 @@
<Japanese>ATragMX 付きの携行型端末</Japanese>
<Korean>ATragMX가 달린 PDA</Korean>
<Chinese>裝有軍用PDA的ATragMX</Chinese>
<Chinesesimp>装有军用PDA的ATragMX</Chinesesimp>
<Chinesesimp>装有 ATragMX 的军用 PDA</Chinesesimp>
<Turkish>Rugged PDA with ATragMX</Turkish>
</Key>
<Key ID="STR_ACE_ATragMX_ATragMXDialogKey">
@ -66,7 +66,7 @@
<Japanese>ATragMX を開く</Japanese>
<Korean>ATragMX 열기</Korean>
<Chinese>開啟ATragMX</Chinese>
<Chinesesimp>开启ATragMX</Chinesesimp>
<Chinesesimp>开启 ATragMX</Chinesesimp>
<Turkish>ATragMX'i aç</Turkish>
</Key>
</Package>

View File

@ -13,7 +13,7 @@
<Hungarian>Tárgy hozzácsatolása</Hungarian>
<Russian>Прикрепить предмет</Russian>
<Japanese>アイテムを取り付ける</Japanese>
<Korean>물건 부착</Korean>
<Korean>아이템 부착</Korean>
<Chinese>附掛裝備&gt;&gt;</Chinese>
<Chinesesimp>附挂装备&gt;&gt;</Chinesesimp>
<Turkish>Eşyayı bağla</Turkish>
@ -47,7 +47,7 @@
<Hungarian>Tárgy lecsatolása</Hungarian>
<Russian>Отсоединить</Russian>
<Japanese>アイテムを外す</Japanese>
<Korean>분리</Korean>
<Korean>떼내기</Korean>
<Chinese>取下裝備</Chinese>
<Chinesesimp>取下装备</Chinesesimp>
<Turkish>Eşyayı sök</Turkish>
@ -66,7 +66,7 @@
<Japanese>赤外線ストロボを取り付けました</Japanese>
<Korean>적외선 스트로브 부착됨</Korean>
<Chinese>已附掛紅外線頻閃器</Chinese>
<Chinesesimp>已附挂红外线频闪器</Chinesesimp>
<Chinesesimp>已附挂红外频闪器</Chinesesimp>
<Turkish>IR Strobe Bağlandı</Turkish>
</Key>
<Key ID="STR_ACE_Attach_IrStrobe_Detached">
@ -81,9 +81,9 @@
<Hungarian>Infravörös jeladó lecsatolva</Hungarian>
<Russian>ИК-маяк отсоединён</Russian>
<Japanese>赤外線ストロボを外しました</Japanese>
<Korean>적외선 스트로브 분리됨</Korean>
<Korean>적외선 스트로브 떼어냄</Korean>
<Chinese>已取下紅外線頻閃器</Chinese>
<Chinesesimp>已取下红外线频闪器</Chinesesimp>
<Chinesesimp>已取下红外频闪器</Chinesesimp>
<Turkish>IR Strobe Söküldü</Turkish>
</Key>
<Key ID="STR_ACE_Attach_IrGrenade_Attached">
@ -100,7 +100,7 @@
<Japanese>赤外線グレネードを取り付けました</Japanese>
<Korean>적외선 수류탄 부착됨</Korean>
<Chinese>已附掛紅外線手榴彈</Chinese>
<Chinesesimp>已附挂红外线手榴弹</Chinesesimp>
<Chinesesimp>已附挂红外手雷</Chinesesimp>
<Turkish>IR Bombası Bağlandı</Turkish>
</Key>
<Key ID="STR_ACE_Attach_IrGrenade_Detached">
@ -115,9 +115,9 @@
<Hungarian>Infravörös gránát lecsatolva</Hungarian>
<Russian>ИК-граната отсоединена</Russian>
<Japanese>赤外線グレネードを外しました</Japanese>
<Korean>적외선 수류탄 분리됨</Korean>
<Korean>적외선 수류탄 떼어냄</Korean>
<Chinese>已取下紅外線手榴彈</Chinese>
<Chinesesimp>已取下红外线手榴弹</Chinesesimp>
<Chinesesimp>已取下红外手雷</Chinesesimp>
<Turkish>IR Bombası Söküldü</Turkish>
</Key>
<Key ID="STR_ACE_Attach_Chemlight_Attached">
@ -134,7 +134,7 @@
<Japanese>ケミライトを取り付けました</Japanese>
<Korean>켐라이트 부착됨</Korean>
<Chinese>已附掛螢光棒</Chinese>
<Chinesesimp>已附挂光棒</Chinesesimp>
<Chinesesimp>已附挂光棒</Chinesesimp>
<Turkish>ık Çubuğu Bağlandı</Turkish>
</Key>
<Key ID="STR_ACE_Attach_Chemlight_Detached">
@ -149,9 +149,9 @@
<Hungarian>Chemlight hozzácsatolva</Hungarian>
<Russian>Химсвет отсоединён</Russian>
<Japanese>ケミライトを外しました</Japanese>
<Korean>켐라이트 분리됨</Korean>
<Korean>켐라이트 떼어냄</Korean>
<Chinese>已取下螢光棒</Chinese>
<Chinesesimp>已取下光棒</Chinesesimp>
<Chinesesimp>已取下光棒</Chinesesimp>
<Turkish>ık Çubuğu Söküldü</Turkish>
</Key>
<Key ID="STR_ACE_Attach_IrStrobe_Name">
@ -168,7 +168,7 @@
<Japanese>赤外線ストロボ</Japanese>
<Korean>적외선 스트로브</Korean>
<Chinese>紅外線頻閃器</Chinese>
<Chinesesimp>红外线频闪器</Chinesesimp>
<Chinesesimp>红外频闪器</Chinesesimp>
<Turkish>IR Stroboskop</Turkish>
</Key>
<Key ID="STR_ACE_Attach_IrStrobe_Description">
@ -185,7 +185,7 @@
<Japanese>赤外線ストロボはあなたの位置を知らせますが、夜間暗視装置を介してでしか見れません。</Japanese>
<Korean>적외선 스트로브는 자신의 위치를 반짝이면서 표시합니다. 이는 야간투시경으로 밖에 보지 못합니다.</Korean>
<Chinese>紅外線閃頻器,藉由紅外線閃頻信號來辨識你的位置,僅能使用夜視系統來辨識紅外線信號</Chinese>
<Chinesesimp>红外线闪频器,藉由红外线闪频信号来辨识你的位置,仅能使用夜视系统来辨识红外线信号</Chinesesimp>
<Chinesesimp>红外频闪器制造只有用夜视仪才能看到的频闪信标,发出一个位置信号。</Chinesesimp>
<Turkish>IR Stroboskop, yalnızca gece görüşlerinden gözükebilen titreşimli bir ışık aracılığıyla konumunuzu gösterir.</Turkish>
</Key>
<Key ID="STR_ACE_Attach_PlaceAction">
@ -200,7 +200,7 @@
<Hungarian>Elhelyez</Hungarian>
<Russian>Установить</Russian>
<Japanese>置く</Japanese>
<Korean></Korean>
<Korean></Korean>
<Chinese>放置</Chinese>
<Chinesesimp>放置</Chinesesimp>
<Turkish>Yerleştir</Turkish>
@ -268,7 +268,7 @@
<Hungarian>%1&lt;br/&gt;lecsatolva</Hungarian>
<Russian>%1&lt;br/&gt;отсоединен(-а)</Russian>
<Japanese>%1&lt;br/&gt;を外しました</Japanese>
<Korean>%1&lt;br/&gt;분리됨</Korean>
<Korean>%1&lt;br/&gt;떼어냄</Korean>
<Chinese>%1&lt;br/&gt;已取下</Chinese>
<Chinesesimp>%1&lt;br/&gt;已取下</Chinesesimp>
<Turkish>%1&lt;br/&gt;Söküldü</Turkish>

View File

@ -17,10 +17,10 @@
params [["_backpack", objNull, [objNull, ""]]];
if (_backpack isEqualType objNull) then {
_backpack = typeOf _backpack;
private _config = if (_backpack isEqualType objNull) then {
configOf _backpack
} else {
configFile >> "CfgVehicles" >> _backpack
};
private _config = configFile >> "CfgVehicles" >> _backpack;
getText (_config >> "vehicleClass") == "backpacks" && {getNumber (_config >> "maximumLoad") > 0} // return

View File

@ -101,7 +101,7 @@ class CfgWeapons {
// Rifle_Long_Base_F MG
// Stoner 99 LMG
class LMG_Mk200_F: Rifle_Long_Base_F {
ACE_barrelLength = 317.5;
ACE_barrelLength = 381;
ACE_barrelTwist = 177.8;
initSpeed = -0.999327;
};

File diff suppressed because it is too large Load Diff

View File

@ -5,7 +5,7 @@ class CfgVehicles {
class ACE_ApplyHandcuffs {
displayName = CSTRING(SetCaptive);
selection = "righthand";
distance = 2;
distance = HANDCUFFS_DISTANCE;
condition = QUOTE([ARR_2(_player, _target)] call FUNC(canApplyHandcuffs));
statement = QUOTE([ARR_2(_player, _target)] call FUNC(doApplyHandcuffs));
exceptions[] = {"isNotSwimming", "isNotInside"};
@ -16,7 +16,7 @@ class CfgVehicles {
class ACE_RemoveHandcuffs {
displayName = CSTRING(ReleaseCaptive);
selection = "righthand";
distance = 2;
distance = HANDCUFFS_DISTANCE;
condition = QUOTE([ARR_2(_player, _target)] call FUNC(canRemoveHandcuffs));
statement = QUOTE([ARR_2(_player, _target)] call FUNC(doRemoveHandcuffs));
exceptions[] = {"isNotSwimming", "isNotInside"};

View File

@ -41,7 +41,7 @@ if (!hasInterface) exitWith {};
private _target = cursorObject;
if !([ACE_player, _target, []] call EFUNC(common,canInteractWith)) exitWith {false};
if !(_target isKindOf "CAManBase") exitWith {false};
if ((_target distance ACE_player) > getNumber (configFile >> "CfgVehicles" >> "CAManBase" >> "ACE_Actions" >> "ACE_ApplyHandcuffs" >> "distance")) exitWith {false};
if ((_target distance ACE_player) > getNumber (configOf ACE_player >> "ACE_Actions" >> "ACE_ApplyHandcuffs" >> "distance")) exitWith {false};
if ([ACE_player, _target] call FUNC(canApplyHandcuffs)) exitWith {
[ACE_player, _target] call FUNC(doApplyHandcuffs);

View File

@ -20,18 +20,21 @@ TRACE_1("params", _vehicle);
scopeName "main";
private _seats = fullCrew [_vehicle, "", true];
reverse _seats;
{
_x params ["_unit", "_role", "_cargoIndex", "_turretPath", "_isPersonTurret"];
if (isNull _unit && {_role == "cargo"} && {_cargoIndex > -1} && {!_isPersonTurret}) then {
[_cargoIndex, false] breakOut "main";
};
} forEach (fullCrew [_vehicle, "", true]);
} forEach _seats;
{
_x params ["_unit", "_role", "_cargoIndex", "_turretPath", "_isPersonTurret"];
if (isNull _unit && {_cargoIndex > -1}) then {
[_cargoIndex, true] breakOut "main";
};
} forEach (fullCrew [_vehicle, "", true]);
} forEach _seats;
[-1, false]

View File

@ -15,3 +15,5 @@
#endif
#include "\z\ace\addons\main\script_macros.hpp"
#define HANDCUFFS_DISTANCE 2

View File

@ -8,7 +8,7 @@
<Chinese>俘虜</Chinese>
<Chinesesimp>俘虏</Chinesesimp>
<Japanese>捕虜</Japanese>
<Korean>포로설정</Korean>
<Korean>포로</Korean>
<Polish>Jeńcy</Polish>
<Russian>Пленные</Russian>
<Portuguese>Prisioneiros</Portuguese>
@ -31,7 +31,7 @@
<Japanese>捕虜にする</Japanese>
<Korean>포박하기</Korean>
<Chinese>逮捕俘虜</Chinese>
<Chinesesimp>逮捕俘虏</Chinesesimp>
<Chinesesimp>俘获</Chinesesimp>
<Turkish>Kelepçele</Turkish>
</Key>
<Key ID="STR_ACE_Captives_ReleaseCaptive">
@ -99,7 +99,7 @@
<Japanese>捕虜を取っている必要があります!</Japanese>
<Korean>먼저 포로로 만들어야합니다!</Korean>
<Chinese>你必須先逮捕他!</Chinese>
<Chinesesimp>你必须先逮捕他!</Chinesesimp>
<Chinesesimp>你必须先俘获他!</Chinesesimp>
<Turkish>Önce onu tutuklamalısın!</Turkish>
</Key>
<Key ID="STR_ACE_Captives_LoadCaptive">
@ -362,7 +362,7 @@
<Japanese>プレイヤーは拘束される前に、投降する必要があります。</Japanese>
<Korean>체포하기 전에 먼저 플레이어가 투항을 해야만 합니다</Korean>
<Chinese>玩家須先要求目標投降,才可以進行逮捕</Chinese>
<Chinesesimp>玩家须先要求目标投降,才可以进行逮捕</Chinesesimp>
<Chinesesimp>玩家须先要求目标投降,才可以进行俘获</Chinesesimp>
</Key>
<Key ID="STR_ACE_Captives_SurrenderOnly">
<English>Surrendering only</English>
@ -432,7 +432,7 @@
<Italian>Necessita arresa AI</Italian>
<Japanese>AI の投降を必要とする</Japanese>
<Chinese>需要AI先行投降</Chinese>
<Chinesesimp>需要AI先行投降</Chinesesimp>
<Chinesesimp>需要 AI 先行投降</Chinesesimp>
<Korean>AI 항복 필요</Korean>
<Polish>Wymaga poddania się przez SI</Polish>
<Russian>Требовать ИИ сдаться для ареста</Russian>
@ -447,7 +447,7 @@
<Italian>Necessita che le AI si arrendano prima di essere arrestate</Italian>
<Japanese>AI の拘束は AI が投降している場合に限り可能にします。</Japanese>
<Chinese>在逮捕AI之前該AI必須先進入投降狀態</Chinese>
<Chinesesimp>逮捕AI之前该AI必须先进入投降状态。</Chinesesimp>
<Chinesesimp>俘获 AI 之前该 AI 必须先进入投降状态。</Chinesesimp>
<Korean>포박하기 전에 먼저 AI가 투항해야만 합니다.</Korean>
<Polish>Wymaga poddania się przez SI zanim aresztowanie będzie możliwe</Polish>
<Russian>Требовать для ареста, чтобы ИИ вначале сдавались</Russian>
@ -462,7 +462,7 @@
<Japanese>カーソル先のユニットを拘束</Japanese>
<Italian>Imposta l'unità nello stato di prigioniero.</Italian>
<Chinese>設置在游標下的單位成俘虜狀態</Chinese>
<Chinesesimp>设置在标下的单位成俘虏状态。</Chinesesimp>
<Chinesesimp>设置在标下的单位成俘虏状态。</Chinesesimp>
<Korean>커서의 병력을 포박합니다.</Korean>
<Polish>Ustawia jednostkę pod kursorem jako jeniec.</Polish>
<Russian>Арестовывает указанный курсором юнит</Russian>

View File

@ -322,6 +322,11 @@ class CfgVehicles {
GVAR(canLoad) = 1;
};
// Invisible Target Soldier
class TargetSoldierBase: StaticWeapon {
GVAR(canLoad) = 0;
};
class StaticMortar;
class Mortar_01_base_F: StaticMortar {
GVAR(size) = 2; // 1 = small, 2 = large
@ -426,41 +431,43 @@ class CfgVehicles {
class Land_CanisterFuel_F: Items_base_F {
GVAR(size) = 1;
GVAR(canLoad) = 1;
EGVAR(cargo,noRename) = 1;
GVAR(noRename) = 1;
};
// Flexible Fuel tanks, 300L
class FlexibleTank_base_F: ThingX {
GVAR(size) = 3;
GVAR(canLoad) = 1;
GVAR(noRename) = 1;
};
// objects
class RoadCone_F: ThingX {
GVAR(size) = 1;
GVAR(canLoad) = 1;
EGVAR(cargo,noRename) = 1;
GVAR(noRename) = 1;
};
class RoadBarrier_F: RoadCone_F {
GVAR(size) = 2;
GVAR(noRename) = 1;
};
class Lamps_base_F;
class Land_PortableLight_single_F: Lamps_base_F {
GVAR(size) = 2;
GVAR(canLoad) = 1;
EGVAR(cargo,noRename) = 1;
GVAR(noRename) = 1;
};
class FloatingStructure_F;
class Land_Camping_Light_F: FloatingStructure_F {
GVAR(size) = 0.2;
GVAR(canLoad) = 1;
EGVAR(cargo,noRename) = 1;
GVAR(noRename) = 1;
};
class Land_Camping_Light_off_F: ThingX {
GVAR(size) = 0.2;
GVAR(canLoad) = 1;
EGVAR(cargo,noRename) = 1;
GVAR(noRename) = 1;
};

View File

@ -25,5 +25,6 @@ PREP(startLoadIn);
PREP(startUnload);
PREP(unload);
PREP(unloadAllVehicles);
PREP(unloadCarryItem);
PREP(unloadItem);
PREP(validateCargoSpace);

View File

@ -50,8 +50,6 @@
GVAR(interactionParadrop) = false;
createDialog QGVAR(menu);
};
// TOOO maybe drag/carry the unloaded item?
}] call CBA_fnc_addEventHandler;
[QGVAR(serverUnload), {
@ -101,7 +99,7 @@ GVAR(objectActions) = [
{(_target getVariable [QGVAR(canLoad), getNumber (configOf _target >> QGVAR(canLoad))]) in [true, 1]} &&
{alive _target} &&
{[_player, _target, ["isNotSwimming"]] call EFUNC(common,canInteractWith)} &&
{(getNumber ((configOf _target) >> QGVAR(noRename))) == 0}
{(_target getVariable [QGVAR(noRename), getNumber (configOf _target >> QGVAR(noRename))]) in [false, 0]}
}
] call EFUNC(interact_menu,createAction),
[QGVAR(load), localize LSTRING(loadObject), "a3\ui_f\data\IGUI\Cfg\Actions\loadVehicle_ca.paa",

View File

@ -35,7 +35,8 @@ if (_item isEqualType "") then {
} else {
_validItem =
(alive _item) &&
{_ignoreInteraction || {([_item, _vehicle] call EFUNC(interaction,getInteractionDistance)) < MAX_LOAD_DISTANCE}};
{_ignoreInteraction || {([_item, _vehicle] call EFUNC(interaction,getInteractionDistance)) < MAX_LOAD_DISTANCE}} &&
{!(_item getVariable [QEGVAR(cookoff,isCookingOff), false])};
};
_validItem &&

View File

@ -18,8 +18,11 @@
params ["_object", ["_addCustomPart", false]];
private _class = if (_object isEqualType "") then {_object} else {typeOf _object};
private _displayName = getText (configFile >> "CfgVehicles" >> _class >> "displayName");
private _displayName = if (_object isEqualType "") then {
getText (configFile >> "CfgVehicles" >> _object >> "displayName")
} else {
getText ((configOf _object) >> "displayName")
};
if (_addCustomPart && {!(_object isEqualType "")}) then {
private _customPart = _object getVariable [QGVAR(customName), ""];

View File

@ -17,6 +17,7 @@
params ["_object"];
private _type = typeOf _object;
private _config = configOf _object;
TRACE_2("params",_object,_type);
// If object had size given to it via eden/public then override config canLoad setting
@ -24,7 +25,7 @@ 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);
};
private _canLoadConfig = getNumber (configFile >> "CfgVehicles" >> _type >> QGVAR(canLoad)) == 1;
private _canLoadConfig = getNumber (_config >> QGVAR(canLoad)) == 1;
// Nothing to do here if object can't be loaded
if !(_canLoadConfig || {_canLoadPublic in [true, 1]}) exitWith {};

View File

@ -19,10 +19,11 @@ params ["_vehicle"];
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
private _hasCargoPublic = _vehicle getVariable [QGVAR(hasCargo), false];
private _hasCargoConfig = getNumber (configFile >> "CfgVehicles" >> _type >> QGVAR(hasCargo)) == 1;
private _hasCargoConfig = getNumber (_config >> QGVAR(hasCargo)) == 1;
// Nothing to do here if vehicle has no cargo space
if !(_hasCargoConfig || _hasCargoPublic) exitWith {};
@ -40,13 +41,11 @@ if (_addCargoType) then {
// Vehicle can have default ace cargo in its config
if (isServer) then {
{
if (isClass _x) then {
private _cargoClassname = getText (_x >> "type");
private _cargoCount = getNumber (_x >> "amount");
TRACE_3("adding ACE_Cargo", (configName _x), _cargoClassname, _cargoCount);
["ace_addCargo", [_cargoClassname, _vehicle, _cargoCount]] call CBA_fnc_localEvent;
};
} count ("true" configClasses (configFile >> "CfgVehicles" >> _type >> "ACE_Cargo" >> "Cargo"));
private _cargoClassname = getText (_x >> "type");
private _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"));
};
// Servers and HCs do not require action menus (beyond this point)

View File

@ -19,6 +19,7 @@ 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
[LSTRING(clearedCustomName), 3] call EFUNC(common,displayTextStructured);
} else {

View File

@ -0,0 +1,40 @@
#include "script_component.hpp"
/*
* Author: GhostIsSpooky
* Dragging integration. Unloader starts carrying unloaded object.
*
* Arguments:
* 0: Unloader <OBJECT>
* 1: Item <OBJECT>
*
* Return Value:
* None
*
* Example:
* [player, object] call ace_cargo_fnc_unloadCarryItem
*
* Public: No
*/
params ["_unloader", "_object"];
TRACE_2("unloadCarryItem-start",_unloader,_object);
if !(["ace_dragging"] call EFUNC(common,isModLoaded)) exitWith {};
if (!GVAR(carryAfterUnload) || {getNumber (configOf _object >> QGVAR(blockUnloadCarry)) > 0}) exitWith {};
// 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
TRACE_1("unloadCarryItem-failed to unload nearby player",_this);
}] call CBA_fnc_waitUntilAndExecute;

View File

@ -42,6 +42,9 @@ if !(_item in _loaded) exitWith {
private _object = [_item, _emptyPosAGL, _loaded, _vehicle] call FUNC(unload);
// Dragging integration
[_unloader, _object] call FUNC(unloadCarryItem);
// Invoke listenable event
["ace_cargoUnloaded", [_object, _vehicle, "unload"]] call CBA_fnc_globalEvent;
true

View File

@ -43,6 +43,15 @@
{[QGVAR(enableRename), _this, true] call EFUNC(common,cbaSettings_settingChanged)}
] call CBA_fnc_addSetting;
[
QGVAR(carryAfterUnload), "CHECKBOX",
[LSTRING(carryAfterUnload), LSTRING(carryAfterUnload_description)],
[LELSTRING(OptionsMenu,CategoryLogistics), LLSTRING(openMenu)],
true,
false,
{[QGVAR(carryAfterUnload), _this] call EFUNC(common,cbaSettings_settingChanged)}
] call CBA_fnc_addSetting;
[
QGVAR(cargoNetType), "LIST",
[LSTRING(cargoNetType), LSTRING(cargoNetType_description)],

View File

@ -40,6 +40,8 @@
<Russian>Переименовано в:</Russian>
<German>Neu Bewaffnet: &lt;br/&gt;%1</German>
<Polish>Nazwa zmieniona na:&lt;br/&gt;%1</Polish>
<Chinesesimp>重命名为:&lt;br/&gt;%1</Chinesesimp>
<Korean>%1&lt;br/&gt;으로 명칭을 바꿈</Korean>
</Key>
<Key ID="STR_ACE_Cargo_clearedCustomName">
<English>Custom name has been cleared.</English>
@ -48,6 +50,8 @@
<Russian>Пользовательское название удалено.</Russian>
<German>Eigener Name wurde gelöscht.</German>
<Polish>Własna nazwa została usunięta</Polish>
<Chinesesimp>自定义名称已被清除。</Chinesesimp>
<Korean>임의로 지은 명칭을 지웠습니다.</Korean>
</Key>
<Key ID="STR_ACE_Cargo_renameObjectUI">
<English>Set New Name:</English>
@ -56,6 +60,8 @@
<Russian>Задать новое название:</Russian>
<German>Neuen Namen setzen:</German>
<Polish>Ustaw nową nazwę:</Polish>
<Chinesesimp>设定新名称:</Chinesesimp>
<Korean>새로운 명칭 설정:</Korean>
</Key>
<Key ID="STR_ACE_Cargo_ModuleSettings_enableRename">
<English>Enable Rename Action</English>
@ -64,6 +70,8 @@
<Russian>Включить возможность переименования</Russian>
<German>Aktiviere Umbenennungs-Aktion</German>
<Polish>Włącz możliwość zmiany nazwy</Polish>
<Chinesesimp>启用重命名动作</Chinesesimp>
<Korean>새로 명칭짓기 행동 활성화</Korean>
</Key>
<Key ID="STR_ACE_Cargo_ModuleSettings_enableRename_Description">
<English>Enables the rename action for renamable objects.</English>
@ -72,6 +80,8 @@
<Russian>Включает переименование для объектов, допускающих переименование.</Russian>
<German>Aktiviert die Umbenennungs-Aktion für neu benennbare Objekte.</German>
<Polish>Włącza akcję zmiany nazwy dla obiektów z możliwością zmiany nazwy.</Polish>
<Chinesesimp>启用可重命名物体的重命名动作。</Chinesesimp>
<Korean>개체의 명칭을 새로 짓는 것을 허가합니다.</Korean>
</Key>
<Key ID="STR_ACE_Cargo_openMenu">
<English>Cargo</English>
@ -102,7 +112,7 @@
<Japanese>カーゴ メニュー</Japanese>
<Korean>화물 메뉴</Korean>
<Chinese>貨物選單</Chinese>
<Chinesesimp>货物</Chinesesimp>
<Chinesesimp>货物</Chinesesimp>
<Turkish>Kargo Menüsü</Turkish>
</Key>
<Key ID="STR_ACE_Cargo_labelSpace">
@ -118,7 +128,7 @@
<Japanese>カーゴの空き容量: %1</Japanese>
<Korean>선적 공간 남음: %1</Korean>
<Chinese>貨物剩餘空間: %1</Chinese>
<Chinesesimp>货物剩余空间: %1</Chinesesimp>
<Chinesesimp>货物剩余空间%1</Chinesesimp>
<Turkish>Kargo Alanı Kaldı: %1</Turkish>
</Key>
<Key ID="STR_ACE_Cargo_ModuleSettings_enable">
@ -148,7 +158,7 @@
<Italian>Abilita il modulo di caricamento in cargo</Italian>
<French>Active la possibilité de charger du matériel dans un module de fret (véhicule/container).</French>
<Japanese>カーゴ モジュールで積み込みを有効化</Japanese>
<Korean>화물 모듈에 싣기를 활성화합니다</Korean>
<Korean>화물 모듈 활성화합니다</Korean>
<Chinese>啟用貨物裝載功能</Chinese>
<Chinesesimp>启用货物装载功能</Chinesesimp>
</Key>
@ -285,6 +295,8 @@
<French>Nom personnalisé</French>
<German>Eigener Name</German>
<Polish>Własna nazwa</Polish>
<Chinesesimp>自定义名称</Chinesesimp>
<Korean>임의 명칭</Korean>
</Key>
<Key ID="STR_ACE_Cargo_customName_edenDesc">
<English>Set a custom cargo name used in the cargo interface.</English>
@ -293,6 +305,8 @@
<Russian>Установить пользовательское имя груза, используемое в интерфейсе погрузки.</Russian>
<German>Definiere eigenen Frachtnamen, welcher im Frachtraum genutzt wird.</German>
<Polish>Ustaw własną nazwę ładunku, używaną w menu ładunku.</Polish>
<Chinesesimp>设置货物界面中使用的一个自定义货物名称。</Chinesesimp>
<Korean>화물 인터페이스에 쓰일 화물의 명칭을 설정합니다.</Korean>
</Key>
<Key ID="STR_ACE_Cargo_space_edenName">
<English>Cargo Space</English>
@ -347,7 +361,7 @@
<Italian>Lo spazio del cargo necessita di mantenere questo oggetto (-1 per scaricabile)</Italian>
<Japanese>オブジェクトを積載するのに必要なカーゴ スペース (-1 で積載不可)</Japanese>
<Chinese>此貨物會佔掉多少空間(設定-1的話此貨物就不能被裝載)</Chinese>
<Chinesesimp>此货物会占掉多少空间(设定-1的话此货物就不能被装载)</Chinesesimp>
<Chinesesimp>此货物会占掉多少空间(设定 -1 的话此货物就不能被装载)</Chinesesimp>
<Polish>Wymagana przestrzeń ładunkowa dla tego obiektu (-1 dla niemożliwych do załadowania)</Polish>
<Korean>이 화물을 적재하는데 필요한 공간 (-1=무조건 적재가능)</Korean>
<Russian>Грузовое пространство, необходимое для размещения этого объекта (-1 для незагружаемого)</Russian>
@ -408,9 +422,9 @@
<Italian>Modificato per quanto tempo ci impiega a paracadutare un oggetto cargo.</Italian>
<French>Modifie le temps nécessaire au paralargage d'une cargaison.</French>
<Chinese>設定空投所需消耗的時間</Chinese>
<Chinesesimp>设定空投所需消耗的时间.</Chinesesimp>
<Chinesesimp>设定空投所需消耗的时间</Chinesesimp>
<Polish>Modyfikator wskazujący jak dużo czasu potrzeba by zrzucić przedmiot na spadochronie.</Polish>
<Korean>화물을 공중 투하 하는데 얼마나 걸리는 시간 설정</Korean>
<Korean>화물을 공중 투하 하는데 걸리는 시간 설정합니다</Korean>
<Russian>Модификатор времени, необходимого для десантирования груза</Russian>
<Portuguese>Coeficiente de quanto tempo leva para soltar uma carga de paraquedas</Portuguese>
<Czech>Upravuje jak dlouho výsadek trvá pro náklad.</Czech>
@ -428,6 +442,8 @@
<Chinese>裝載時間係數</Chinese>
<Czech>Koeficient času nákládání</Czech>
<Spanish>Coeficiente de tiempo para cargar</Spanish>
<Chinesesimp>装载时间系数</Chinesesimp>
<Korean>적재 시간 계수</Korean>
</Key>
<Key ID="STR_ACE_Cargo_loadTimeCoefficient_description">
<English>Modifies how long it takes to load/unload items.\nTime, in seconds, is the size of the item multiplied by this value.</English>
@ -441,6 +457,8 @@
<Chinese>修改要花多長時間來裝載/卸載物品。\n時間以秒為單位而物品的大小數值與這個係數成比。</Chinese>
<Czech>Upravuje jak dlouho nakládají/vykládání trvá.\nVýsledkem je čas v sekundách - velikost objektu vynásobená touto hodnotou.</Czech>
<Spanish>Modifica el tiempo de carga/descarga de objetos.\n El Tiempo en segundos, es el tamño del objeto multiplicado por este valor.</Spanish>
<Chinesesimp>修改装载/卸载物体所需的时间。\n时间单位物体的大小乘以该系数值。</Chinesesimp>
<Korean>화물의 적재/하역 시 걸리는 시간을 설정합니다.\n초 단위로 물건의 크기에 곱셈하여 계산합니다.</Korean>
</Key>
<Key ID="STR_ACE_Cargo_openAfterUnload">
<English>Reopen Cargo Menu</English>
@ -450,6 +468,8 @@
<Russian>Переоткрыть меню погрузки</Russian>
<German>Frachtmenü erneut öffnen</German>
<Polish>Ponownie otwórz menu załadunku</Polish>
<Chinesesimp>重新打开货物菜单</Chinesesimp>
<Korean>화물 메뉴 다시 열기</Korean>
</Key>
<Key ID="STR_ACE_Cargo_openAfterUnload_description">
<English>Reopen the Cargo Menu after successful unload.</English>
@ -459,6 +479,14 @@
<Russian>Переоткрыть меню погрузки после успешной выгрузки.</Russian>
<German>Frachtmenü erneut öffnen, nach erfolgreichen Entladen.</German>
<Polish>Ponownie otwórz menu załadunku po udanym wyładowaniu.</Polish>
<Chinesesimp>成功卸货后,重新打开货物菜单。</Chinesesimp>
<Korean>화물을 성공적으로 내리고 난 다음 화물 메뉴를 열지 결정합니다.</Korean>
</Key>
<Key ID="STR_ACE_Cargo_carryAfterUnload">
<English>Carry After Unload</English>
</Key>
<Key ID="STR_ACE_Cargo_carryAfterUnload_description">
<English>Controls whether cargo items are carried or dragged after unloading.</English>
</Key>
<Key ID="STR_ACE_Cargo_cargoNetType">
<English>Type of cargo</English>

View File

@ -0,0 +1 @@
z\ace\addons\casings

View File

@ -0,0 +1,17 @@
class Extended_PreStart_EventHandlers {
class ADDON {
init = QUOTE(call COMPILE_SCRIPT(XEH_preStart));
};
};
class Extended_PreInit_EventHandlers {
class ADDON {
init = QUOTE(call COMPILE_SCRIPT(XEH_preInit));
};
};
class Extended_PostInit_EventHandlers {
class ADDON {
init = QUOTE(call COMPILE_SCRIPT(XEH_postInit));
};
};

4
addons/casings/README.md Normal file
View File

@ -0,0 +1,4 @@
ace_casings
===============
Create persistent empty casing when bullets are fired by infantry weapons.

View File

@ -0,0 +1 @@
PREP(createCasing);

View File

@ -0,0 +1,7 @@
#include "script_component.hpp"
if (!hasInterface || !GVAR(enabled)) exitWith {};
GVAR(cachedCasings) = createHashMap;
GVAR(casings) = [];
["CAManBase", "FiredMan", {call FUNC(createCasing)}] call CBA_fnc_addClassEventHandler;

View File

@ -0,0 +1,11 @@
#include "script_component.hpp"
ADDON = false;
PREP_RECOMPILE_START;
#include "XEH_PREP.hpp"
PREP_RECOMPILE_END;
#include "initSettings.sqf"
ADDON = true;

View File

@ -0,0 +1,3 @@
#include "script_component.hpp"
#include "XEH_PREP.hpp"

17
addons/casings/config.cpp Normal file
View File

@ -0,0 +1,17 @@
#include "script_component.hpp"
class CfgPatches {
class ADDON {
name = COMPONENT_NAME;
units[] = {};
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_common"};
author = ECSTRING(common,ACETeam);
authors[] = {"esteldunedain","Cyruz","diwako"};
url = ECSTRING(main,URL);
VERSION_CONFIG;
};
};
#include "CfgEventHandlers.hpp"

View File

@ -0,0 +1,68 @@
#include "script_component.hpp"
/*
* Author: esteldunedain / Cyruz / diwako
* Produces a casing matching the fired weapons caliber on the ground around the unit
*
* Arguments:
* 0: unit - Object the event handler is assigned to <OBJECT>
* 1: ammo - Ammo used <STRING>
*
* Return Value:
* None
*
* Example:
* [player, "", "","", "B_556x45_Ball"] call ace_casings_fnc_createCasing
*
* Public: No
*/
params ["_unit", "", "", "", "_ammo"];
if (!isNull objectParent _unit) exitWith {};
private _modelPath = GVAR(cachedCasings) get _ammo;
if (isNil "_modelPath") then {
private _cartridge = getText (configFile >> "CfgAmmo" >> _ammo >> "cartridge");
//Default cartridge is a 5.56mm model
_modelPath = switch (_cartridge) do {
case "FxCartridge_9mm": { "A3\Weapons_f\ammo\cartridge_small.p3d" };
case "FxCartridge_65": { "A3\weapons_f\ammo\cartridge_65.p3d" };
case "FxCartridge_762": { "A3\weapons_f\ammo\cartridge_762.p3d" };
case "FxCartridge_127": { "A3\weapons_f\ammo\cartridge_127.p3d" };
case "FxCartridge_slug": { "A3\weapons_f\ammo\cartridge_slug.p3d" };
case "": { "" };
default { "A3\Weapons_f\ammo\cartridge.p3d" };
};
GVAR(cachedCasings) set [_ammo, _modelPath];
};
if (_modelPath isEqualTo "") exitWith {};
private _unitPos = getposASL _unit;
// Distant shooters don't produce as many cases
if ((AGLToASL positionCameraToWorld [0,0,0]) vectorDistance _unitPos > 100 && {random 1 < 0.9}) exitWith {};
private _weapDir = _unit weaponDirection currentWeapon _unit;
private _ejectDir = _weapDir vectorCrossProduct [0, 0, 1];
private _pos = _unitPos
vectorAdd (_weapDir vectorMultiply (-0.5 + random 2))
vectorAdd (_ejectDir vectorMultiply (0.2 + random 2));
[
{
params ["_modelPath", "_pos"];
private _lisPos = (lineIntersectsSurfaces [_pos, _pos vectorAdd [0,0,-1e11], objNull, objNull, true, 1, "ROADWAY", "FIRE"]) #0;
private _casing = createSimpleObject [_modelPath, (_lisPos #0 vectorAdd [0,0,0.005]), true];
_casing setDir (random 360);
_casing setVectorUp _lisPos #1;
private _idx = GVAR(casings) pushBack _casing;
for "_" from 0 to (_idx - GVAR(maxCasings)) do {
deleteVehicle (GVAR(casings) deleteAt 0);
};
},
[_modelPath,_pos],
0.4
] call CBA_fnc_waitAndExecute;

View File

@ -0,0 +1 @@
#include "\z\ace\addons\casings\script_component.hpp"

View File

@ -0,0 +1,17 @@
[
QGVAR(enabled), "CHECKBOX",
[LSTRING(displayName), LSTRING(description)],
LSTRING(Settings_DisplayName),
true,
false,
{},
true
] call CBA_fnc_addSetting;
[
QGVAR(maxCasings), "SLIDER",
[LSTRING(maxCasings_displayName), LSTRING(maxCasings_description)],
LSTRING(Settings_DisplayName),
[100, 500, 250, -1],
false
] call CBA_fnc_addSetting;

View File

@ -0,0 +1,17 @@
#define COMPONENT casings
#define COMPONENT_BEAUTIFIED Casings
#include "\z\ace\addons\main\script_mod.hpp"
// #define DEBUG_MODE_FULL
// #define DISABLE_COMPILE_CACHE
// #define ENABLE_PERFORMANCE_COUNTERS
#ifdef DEBUG_ENABLED_CASINGS
#define DEBUG_MODE_FULL
#endif
#ifdef DEBUG_SETTINGS_CASINGS
#define DEBUG_SETTINGS DEBUG_SETTINGS_CASINGS
#endif
#include "\z\ace\addons\main\script_macros.hpp"

View File

@ -0,0 +1,40 @@
<?xml version="1.0" encoding="utf-8"?>
<Project name="ACE">
<Package name="Casings">
<Key ID="STR_ACE_Casings_Settings_DisplayName">
<English>ACE Casings</English>
<Japanese>ACE 薬莢</Japanese>
<Polish>ACE Łuski</Polish>
<Korean>ACE 탄피</Korean>
<Chinesesimp>ACE 弹壳</Chinesesimp>
</Key>
<Key ID="STR_ACE_Casings_displayName">
<English>Casings Enabled</English>
<Japanese>薬莢の有効化</Japanese>
<Polish>Łuski włączone</Polish>
<Korean>탄피 활성화</Korean>
<Chinesesimp>开启弹壳生成</Chinesesimp>
</Key>
<Key ID="STR_ACE_Casings_description">
<English>Enable persistent casings (POTENTIAL performance impact on old/weak systems)</English>
<Japanese>永続的な薬莢を有効にする (古い/弱いシステムに対する潜在的なパフォーマンスの影響)</Japanese>
<Polish>Włącz pozostawanie łusek (MOŻLIWY wpływ na wydajność na starych/słabych komputerach)</Polish>
<Korean>영구적으로 남는 탄피를 활성화합니다(오래되고 취약한 시스템에 잠재적인 성능에 영향을 미칩니다.)</Korean>
<Chinesesimp>开启生成持续存在的弹壳(可能对较老和性能不行的系统有影响)</Chinesesimp>
</Key>
<Key ID="STR_ACE_Casings_maxCasings_displayName">
<English>Maximum casings</English>
<Japanese>薬莢の最大量</Japanese>
<Polish>Maksymalna liczba łusek</Polish>
<Korean>탄피 최대 갯수</Korean>
<Chinesesimp>最大弹壳量</Chinesesimp>
</Key>
<Key ID="STR_ACE_Casings_maxCasings_description">
<English>Maximum amount of casings to display</English>
<Japanese>表示される薬莢の最大の数</Japanese>
<Polish>Maksymalna liczba wyświetlanych łusek</Polish>
<Korean>표시할 최대 탄피 갯수</Korean>
<Chinesesimp>显示的最大弹壳数量</Chinesesimp>
</Key>
</Package>
</Project>

View File

@ -6,11 +6,11 @@
<Japanese>ケミライト</Japanese>
<Polish>Świetliki</Polish>
<German>Knicklichter</German>
<Korean>켐라이트</Korean>
<Korean>화학조명</Korean>
<French>Cyalumes</French>
<Italian>Luce chimica</Italian>
<Chinese>螢光棒</Chinese>
<Chinesesimp>光棒</Chinesesimp>
<Chinesesimp>光棒</Chinesesimp>
<Russian>Химсвет</Russian>
<Portuguese>Bastões de Luz</Portuguese>
<Czech>Chemická světla</Czech>
@ -54,11 +54,11 @@
<Japanese>[ACE] ケミライト</Japanese>
<Polish>[ACE] Świetliki</Polish>
<German>[ACE] Knicklichter</German>
<Korean>[ACE] 켐라이트</Korean>
<Korean>[ACE] 화학조명</Korean>
<French>[ACE] Cyalumes</French>
<Italian>[ACE] Luci chimiche</Italian>
<Chinese>[ACE] 螢光棒</Chinese>
<Chinesesimp>[ACE] 光棒</Chinesesimp>
<Chinesesimp>[ACE] 光棒</Chinesesimp>
<Russian>[ACE] Химсвет</Russian>
<Portuguese>[ACE] Bastões de Luz</Portuguese>
<Czech>[ACE] Chemická světla</Czech>
@ -74,7 +74,7 @@
<French>Cyalume (orange)</French>
<Italian>Luce chimica (Arancione)</Italian>
<Chinese>螢光棒 (橘色)</Chinese>
<Chinesesimp>萤光棒 (橘色)</Chinesesimp>
<Chinesesimp>荧光棒(橘色)</Chinesesimp>
<Russian>Химсвет (Оранжевый)</Russian>
<Portuguese>Bastão de Luz (Laranja)</Portuguese>
<Czech>Chemické světlo (Oranžové)</Czech>
@ -106,7 +106,7 @@
<French>Type : lumière - Orange&lt;br /&gt;Munitions : 1&lt;br /&gt;Application : main</French>
<Italian>Tipo: Luce - Arancione&lt;br/&gt;Rimanenti: 1&lt;br/&gt;Usata in: Mano</Italian>
<Chinese>類型: 光 - 橘色&lt;br /&gt;發數: 1&lt;br /&gt;使用於: 手</Chinese>
<Chinesesimp>类型: 光 - 橘色&lt;br /&gt;发数: 1&lt;br /&gt;使用于: </Chinesesimp>
<Chinesesimp>类型:光—橘色&lt;br /&gt;发数1&lt;br /&gt;使用于:</Chinesesimp>
<Russian>Тип: Свет - Оранжевый&lt;br /&gt;1 штука&lt;br /&gt;В руках</Russian>
<Portuguese>Tipo: Luz - Laranja&lt;br/&gt;Usos: 1&lt;br/&gt;Usado em: Mão</Portuguese>
<Czech>Typ: Světlo - Oranžové&lt;br/&gt;Počet použití: 1&lt;br/&gt;Použít v ruce</Czech>
@ -118,11 +118,11 @@
<Japanese>ケミライト (白)</Japanese>
<Polish>Świetlik (biały)</Polish>
<German>Knicklicht (weiß)</German>
<Korean>켐라이트 (하양)</Korean>
<Korean>화학조명 (하양)</Korean>
<French>Cyalume (blanc)</French>
<Italian>Luce chimica (Bianca)</Italian>
<Chinese>螢光棒 (白色)</Chinese>
<Chinesesimp>萤光棒 (白色)</Chinesesimp>
<Chinesesimp>荧光棒(白色)</Chinesesimp>
<Russian>Химсвет (Белый)</Russian>
<Portuguese>Bastão de Luz (Branco)</Portuguese>
<Czech>Chemické světlo (Bílé)</Czech>
@ -154,7 +154,7 @@
<French>Type : lumière - Blanche&lt;br /&gt;Munitions : 1&lt;br /&gt;Application : main</French>
<Italian>Tipo: Luce - Bianca&lt;br/&gt;Rimanenti: 1&lt;br/&gt;Usata in: Mano</Italian>
<Chinese>類型: 光 - 白色&lt;br /&gt;發數: 1&lt;br /&gt;使用於: 手</Chinese>
<Chinesesimp>类型: 光 - 白色&lt;br /&gt;发数: 1&lt;br /&gt;使用于: </Chinesesimp>
<Chinesesimp>类型:光—白色&lt;br /&gt;发数1&lt;br /&gt;使用于:</Chinesesimp>
<Russian>Тип: Свет - Белый&lt;br /&gt;1 штука&lt;br /&gt;В руках</Russian>
<Portuguese>Tipo: Luz - Branco&lt;br/&gt;Usos: 1&lt;br/&gt;Usado em: Mão</Portuguese>
<Czech>Typ: Světlo - Bílé&lt;br/&gt;Počet použití: 1&lt;br/&gt;Použít v ruce</Czech>
@ -166,11 +166,11 @@
<Japanese>ケミライト (高輝度 赤)</Japanese>
<Polish>Świetlik (jaskrawy czerwony)</Polish>
<German>Knicklicht (rot, hell)</German>
<Korean>켐라이트 (밝은 빨간색)</Korean>
<Korean>화학조명 (밝은 빨간색)</Korean>
<French>Cyalume HL (rouge)</French>
<Italian>Luce chimica (Hi Rossa)</Italian>
<Chinese>螢光棒 (超亮紅色)</Chinese>
<Chinesesimp>萤光棒 (超亮红色)</Chinesesimp>
<Chinesesimp>荧光棒(高亮红色)</Chinesesimp>
<Russian>Химсвет (Ярко-Красный)</Russian>
<Portuguese>Bastão de Luz (Vermelho Forte)</Portuguese>
<Czech>Chemické světlo (Červené jasné)</Czech>
@ -186,7 +186,7 @@
<French>Lum. rouge HL</French>
<Italian>Luce Hi Rossa</Italian>
<Chinese>超亮紅色光</Chinese>
<Chinesesimp>亮红色光</Chinesesimp>
<Chinesesimp>亮红色光</Chinesesimp>
<Russian>Яркий Красный свет</Russian>
<Portuguese>Luz forte vermelha</Portuguese>
<Czech>Červené jasné světlo</Czech>
@ -202,7 +202,7 @@
<French>Type : lumière HL (30 minutes) - Rouge&lt;br /&gt;Munitions : 1&lt;br /&gt;Application : main</French>
<Italian>Tipo: Luce - Rossa Hi (30 minuti)&lt;br /&gt;Rimanenti: 1&lt;br/&gt;Usata in: Mano</Italian>
<Chinese>類型: 光 - 超亮紅色 (30分鐘)&lt;br /&gt;發數: 1&lt;br /&gt;使用於: 手</Chinese>
<Chinesesimp>类型: 光 - 超亮红色 (30分钟)&lt;br /&gt;发数: 1&lt;br /&gt;使用于: </Chinesesimp>
<Chinesesimp>类型光—高亮红色30分钟&lt;br /&gt;发数1&lt;br /&gt;使用于:</Chinesesimp>
<Russian>Тип: Свет - Ярко-Красный (30 минут)&lt;br /&gt;1 штука&lt;br /&gt;В руках</Russian>
<Portuguese>Tipo: Luz - Vermelho Forte (30 minutos)&lt;br/&gt;Usos: 1&lt;br/&gt;Usado em: Mão</Portuguese>
<Czech>Typ: Světlo - Červené jasné&lt;br/&gt;Počet použití: 1&lt;br/&gt;Použít v ruce</Czech>
@ -214,11 +214,11 @@
<Japanese>ケミライト (高輝度 黄)</Japanese>
<Polish>Świetlik (jaskrawy żółty)</Polish>
<German>Knicklicht (gelb, hell)</German>
<Korean>켐라이트 (밝은 노란색)</Korean>
<Korean>화학조명 (밝은 노란색)</Korean>
<French>Cyalume HL (jaune)</French>
<Italian>Luce chimica (Hi Gialla)</Italian>
<Chinese>螢光棒 (超亮黃色)</Chinese>
<Chinesesimp>萤光棒 (超亮黄色)</Chinesesimp>
<Chinesesimp>荧光棒(高亮黄色)</Chinesesimp>
<Russian>Химсвет (Ярко-Желтый)</Russian>
<Portuguese>Bastão de Luz (Amarelo Forte)</Portuguese>
<Czech>Chemické světlo (Žluté jasné)</Czech>
@ -234,7 +234,7 @@
<French>Lum. jaune HL</French>
<Italian>Luce Hi Gialla</Italian>
<Chinese>超亮黃色光</Chinese>
<Chinesesimp>亮黄色光</Chinesesimp>
<Chinesesimp>亮黄色光</Chinesesimp>
<Russian>Яркий Желтый свет</Russian>
<Portuguese>Luz forte amarela</Portuguese>
<Czech>Žluté jasné světlo</Czech>
@ -250,7 +250,7 @@
<French>Type : lumière HL (30 minutes) - Jaune&lt;br /&gt;Munitions : 1&lt;br /&gt;Application : main</French>
<Italian>Tipo: Luce - Gialla Hi (30 minuti)&lt;br /&gt;Rimanenti: 1&lt;br/&gt;Usata in: Mano</Italian>
<Chinese>類型: 光 - 超亮黃色 (30分鐘)&lt;br /&gt;發數: 1&lt;br /&gt;使用於: 手</Chinese>
<Chinesesimp>类型: 光 - 超亮黄色 (30分钟)&lt;br /&gt;发数: 1&lt;br /&gt;使用于: </Chinesesimp>
<Chinesesimp>类型光—高亮黄色30分钟&lt;br /&gt;发数1&lt;br /&gt;使用于:</Chinesesimp>
<Russian>Тип: Свет - Ярко-Желтый (30 минут)&lt;br /&gt;1 штука&lt;br /&gt;В руках</Russian>
<Portuguese>Tipo: Luz - Amarelo Forte (30 minutos)&lt;br/&gt;Usos: 1&lt;br/&gt;Usado em: Mão</Portuguese>
<Czech>Typ: Světlo - Žluté jasné&lt;br/&gt;Počet použití: 1&lt;br/&gt;Použít v ruce</Czech>
@ -262,11 +262,11 @@
<Japanese>ケミライト (高輝度 白)</Japanese>
<Polish>Świetlik (jaskrawy biały)</Polish>
<German>Knicklicht (weiß, hell)</German>
<Korean>켐라이트 (밝은 하얀색)</Korean>
<Korean>화학조명 (밝은 하얀색)</Korean>
<French>Cyalume HL (blanc)</French>
<Italian>Luce chimica (Hi Bianca)</Italian>
<Chinese>螢光棒 (超亮白色)</Chinese>
<Chinesesimp>萤光棒 (超亮白色)</Chinesesimp>
<Chinesesimp>荧光棒(高亮白色)</Chinesesimp>
<Russian>Химсвет (Ярко-Белый)</Russian>
<Portuguese>Bastão de Luz (Branco Forte)</Portuguese>
<Czech>Chemické světlo (Bílé jasné)</Czech>
@ -282,7 +282,7 @@
<French>Lum. blanche HL</French>
<Italian>Luce Hi Bianca</Italian>
<Chinese>超亮白色光</Chinese>
<Chinesesimp>亮白色光</Chinesesimp>
<Chinesesimp>亮白色光</Chinesesimp>
<Russian>Яркий Белый свет</Russian>
<Portuguese>Luz forte branca</Portuguese>
<Czech>Bílé jasné světlo</Czech>
@ -298,7 +298,7 @@
<French>Type : lumière HL (30 minutes) - Blanche&lt;br /&gt;Munitions : 1&lt;br /&gt;Application : main</French>
<Italian>Tipo: Luce - Bianca Hi (30 minuti)&lt;br /&gt;Rimanenti: 1&lt;br/&gt;Usata in: Mano</Italian>
<Chinese>類型: 光 - 超亮白色 (30分鐘)&lt;br /&gt;發數: 1&lt;br /&gt;使用於: 手</Chinese>
<Chinesesimp>类型: 光 - 超亮白色 (30分钟)&lt;br /&gt;发数: 1&lt;br /&gt;使用于: </Chinesesimp>
<Chinesesimp>类型光—高亮白色30分钟&lt;br /&gt;发数1&lt;br /&gt;使用于:</Chinesesimp>
<Russian>Тип: Свет - Ярко-Белый (30 минут)&lt;br /&gt;1 штука&lt;br /&gt;В руках</Russian>
<Portuguese>Tipo: Luz - Branco Forte (30 minutos)&lt;br/&gt;Usos: 1&lt;br/&gt;Usado em: Mão</Portuguese>
<Czech>Typ: Světlo - Bílé jasné&lt;br/&gt;Počet použití: 1&lt;br/&gt;Použít v ruce</Czech>
@ -315,9 +315,11 @@
<Russian>Химсвет (Ярко-Синий)</Russian>
<Portuguese>Bastão de Luz (Azul Forte)</Portuguese>
<Chinese>螢光棒(超亮藍色)</Chinese>
<Chinesesimp>荧光棒(高亮蓝色)</Chinesesimp>
<Czech>Chemické světlo (Modré jasné)</Czech>
<Spanish>Luz química (Azul Hi)</Spanish>
<Turkish>ık Çubuğu (Mavi)</Turkish>
<Korean>화학조명 (밝은 파란색)</Korean>
</Key>
<Key ID="STR_ACE_Chemlights_HiBlue_DisplayNameShort">
<English>Blue Hi Light</English>
@ -329,9 +331,11 @@
<Russian>Яркий Синий свет</Russian>
<Portuguese>Luz forte azul</Portuguese>
<Chinese>超亮藍色光</Chinese>
<Chinesesimp>高亮蓝色光</Chinesesimp>
<Czech>Modré jasné světlo</Czech>
<Spanish>Luz azul Hi</Spanish>
<Turkish>Mavi Yüksek Işık</Turkish>
<Korean>밝은 파란색</Korean>
</Key>
<Key ID="STR_ACE_Chemlights_HiBlue_DescriptionShort">
<English>Type: Light - Blue Hi (30 minute)&lt;br /&gt;Rounds: 1&lt;br /&gt;Used in: Hand</English>
@ -343,9 +347,11 @@
<Russian>Тип: Свет - Ярко-Синий (30 минут)&lt;br /&gt;1 штука&lt;br /&gt;В руках</Russian>
<Portuguese>Tipo: Luz - Azul Forte (30 minutos)&lt;br/&gt;Usos: 1&lt;br/&gt;Usado em: Mão</Portuguese>
<Chinese>類型: 光 - 超亮藍色 (30分鐘)&lt;br /&gt;發數: 1&lt;br /&gt;使用於: 手</Chinese>
<Chinesesimp>类型光—高亮蓝色30分钟&lt;br /&gt;发数1&lt;br /&gt;使用于:手</Chinesesimp>
<Czech>Typ: Světlo - Modré jasné&lt;br/&gt;Počet použití: 1&lt;br/&gt;Použít v ruce</Czech>
<Spanish>Tipo: Luz - Azul Hi (30 minutos)&lt;br /&gt;Cantidad: 1&lt;br /&gt;Usado en: Mano</Spanish>
<Turkish>Type: Light - Blue Hi (30 minute)&lt;br /&gt;Rounds: 1&lt;br /&gt;Used in: Hand</Turkish>
<Korean>종류: 밝은 파란색 (30분)&lt;br /&gt;수량: 1&lt;br /&gt;사용처: 손</Korean>
</Key>
<Key ID="STR_ACE_Chemlights_HiGreen_DisplayName">
<English>Chemlight (Hi Green)</English>
@ -357,9 +363,11 @@
<Russian>Химсвет (Ярко-Зеленый)</Russian>
<Portuguese>Bastão de Luz (Verde Forte)</Portuguese>
<Chinese>螢光棒(超亮綠色)</Chinese>
<Chinesesimp>荧光棒(高亮绿色)</Chinesesimp>
<Czech>Chemické světlo (Zelené jasné)</Czech>
<Spanish>Luz química (Verde Hi)</Spanish>
<Turkish>ık Çubuğu (Yeşil)</Turkish>
<Korean>화학조명 (밝은 초록색)</Korean>
</Key>
<Key ID="STR_ACE_Chemlights_HiGreen_DisplayNameShort">
<English>Green Hi Light</English>
@ -371,9 +379,11 @@
<Russian>Яркий Зеленый свет</Russian>
<Portuguese>Luz forte verde</Portuguese>
<Chinese>超亮綠色光</Chinese>
<Chinesesimp>高亮绿色光</Chinesesimp>
<Czech>Zelené jasné světlo</Czech>
<Spanish>Luz verde Hi</Spanish>
<Turkish>Yeşil Yüksek Işık</Turkish>
<Korean>밝은 초록색</Korean>
</Key>
<Key ID="STR_ACE_Chemlights_HiGreen_DescriptionShort">
<English>Type: Light - Green Hi (30 minute)&lt;br /&gt;Rounds: 1&lt;br /&gt;Used in: Hand</English>
@ -385,9 +395,11 @@
<Russian>Тип: Свет - Ярко-Зеленый (30 минут)&lt;br /&gt;1 штука&lt;br /&gt;В руках</Russian>
<Portuguese>Tipo: Luz - Verde Forte (30 minutos)&lt;br/&gt;Usos: 1&lt;br/&gt;Usado em: Mão</Portuguese>
<Chinese>類型: 光 - 超亮綠色 (30分鐘)&lt;br /&gt;發數: 1&lt;br /&gt;使用於: 手</Chinese>
<Chinesesimp>类型光—高亮绿色30分钟&lt;br /&gt;发数1&lt;br /&gt;使用于:手</Chinesesimp>
<Czech>Typ: Světlo - Zelené jasné&lt;br/&gt;Počet použití: 1&lt;br/&gt;Použít v ruce</Czech>
<Spanish>Tipo: Luz - Verde Hi (30 minutos)&lt;br /&gt;Cantidad: 1&lt;br /&gt;Usado en: Mano</Spanish>
<Turkish>Type: Light - Green Hi (30 minute)&lt;br /&gt;Rounds: 1&lt;br /&gt;Used in: Hand</Turkish>
<Korean>종류: 밝은 초록색 (30분)&lt;br /&gt;수량: 1&lt;br /&gt;사용처: 손</Korean>
</Key>
<Key ID="STR_ACE_Chemlights_UltraHiOrange_DisplayName">
<English>Chemlight (Ultra-Hi Orange)</English>
@ -399,9 +411,11 @@
<Russian>Химсвет (Ультраяркий Оранжевый)</Russian>
<Portuguese>Bastão de Luz (Laranja Ultra Forte)</Portuguese>
<Chinese>螢光棒(極亮橘色)</Chinese>
<Chinesesimp>荧光棒(高亮橘色)</Chinesesimp>
<Czech>Chemické světlo (Oranžové velmi jasné)</Czech>
<Spanish>Luz química (Naranja Ultra-Hi)</Spanish>
<Turkish>ık Çubuğu (Turuncu)</Turkish>
<Korean>화학조명 (밝은 주황색)</Korean>
</Key>
<Key ID="STR_ACE_Chemlights_UltraHiOrange_DisplayNameShort">
<English>Orange Ultra-Hi Light</English>
@ -413,9 +427,11 @@
<Russian>Ультраяркий Оранжевый свет</Russian>
<Portuguese>Luz ultra forte laranja</Portuguese>
<Chinese>極亮橘色光</Chinese>
<Chinesesimp>高亮橘色光</Chinesesimp>
<Czech>Oranžové velmi jasné světlo</Czech>
<Spanish>Luz naranja Ultra-Hi</Spanish>
<Turkish>Turuncu Yüksek Işık</Turkish>
<Korean>밝은 주황색</Korean>
</Key>
<Key ID="STR_ACE_Chemlights_UltraHiOrange_DescriptionShort">
<English>Type: Light - Orange Ultra-Hi (5 minute)&lt;br /&gt;Rounds: 1&lt;br /&gt;Used in: Hand</English>
@ -427,20 +443,22 @@
<Russian>Тип: Свет - Ультраяркий Оранжевый (5 минут)&lt;br /&gt;1 штука&lt;br /&gt;В руках</Russian>
<Portuguese>Tipo: Luz - Laranja Ultra Forte (5 minutos)&lt;br/&gt;Usos: 1&lt;br/&gt;Usado em: Mão</Portuguese>
<Chinese>類型: 光 - 極亮橘色 (5分鐘)&lt;br /&gt;發數: 1&lt;br /&gt;使用於: 手</Chinese>
<Chinesesimp>类型光—高亮橘色5分钟&lt;br /&gt;发数1&lt;br /&gt;使用于:手</Chinesesimp>
<Czech>Typ: Světlo - Oranžové velmi jasné&lt;br/&gt;Počet použití: 1&lt;br/&gt;Použít v ruce</Czech>
<Spanish>Tipo: Luz - Naranja Ultra-Hi (5 minutos)&lt;br /&gt;Cantidad: 1&lt;br /&gt;Usado en: Mano</Spanish>
<Turkish>Type: Light - Orange Ultra-Hi (5 minute)&lt;br /&gt;Rounds: 1&lt;br /&gt;Used in: Hand</Turkish>
<Korean>종류: 밝은 주황색 (5분)&lt;br /&gt;수량: 1&lt;br /&gt;사용처: 손</Korean>
</Key>
<Key ID="STR_ACE_Chemlights_IR_DisplayName">
<English>Chemlight (IR)</English>
<Japanese>ケミライト (IR)</Japanese>
<Polish>Świetlik (podczerwony)</Polish>
<German>Knicklicht (IR)</German>
<Korean>켐라이트 (적외선)</Korean>
<Korean>화학조명 (적외선)</Korean>
<French>Cyalume (IR)</French>
<Italian>Luce chimica (IR)</Italian>
<Chinese>螢光棒 (紅外線)</Chinese>
<Chinesesimp>萤光棒 (红外线)</Chinesesimp>
<Chinesesimp>荧光棒(红外线)</Chinesesimp>
<Russian>Химсвет (Инфракрасный)</Russian>
<Portuguese>Bastão de Luz (IV)</Portuguese>
<Czech>Chemické světlo (Infračervené)</Czech>
@ -452,7 +470,7 @@
<Japanese>赤外線光</Japanese>
<Polish>Światło podczerwone</Polish>
<German>IR-Knicklicht</German>
<Korean>적외선 켐라이트</Korean>
<Korean>적외선 화학조명</Korean>
<French>Lum. IR</French>
<Italian>Luce IR</Italian>
<Chinese>紅外線光</Chinese>
@ -472,7 +490,7 @@
<French>Type: lumière - Infrarouge&lt;br /&gt;Munitions : 1&lt;br /&gt;Application : main</French>
<Italian>Tipo: Luce - Infrarossi&lt;br /&gt;Usata in: Mano</Italian>
<Chinese>類型: 光 - 紅外線&lt;br /&gt;發數: 1&lt;br /&gt;使用於: 手</Chinese>
<Chinesesimp>类型: 光 - 红外线&lt;br /&gt;发数: 1&lt;br /&gt;使用于: </Chinesesimp>
<Chinesesimp>类型:光—红外线&lt;br /&gt;发数1&lt;br /&gt;使用于:</Chinesesimp>
<Russian>Тип: Свет - Инфракрасный&lt;br /&gt;1 штука&lt;br /&gt;В руках</Russian>
<Portuguese>Tipo: Luz - Infravermelho&lt;br/&gt;Usos: 1&lt;br/&gt;Usado em: Mão</Portuguese>
<Czech>Typ: Světlo - Infračervené&lt;br/&gt;Počet použití: 1&lt;br/&gt;Použít v ruce</Czech>
@ -484,11 +502,11 @@
<Japanese>ケミライト シールド (空)</Japanese>
<Polish>Osłona na świetlik (pusta)</Polish>
<German>Knicklicht-Abschirmung (leer)</German>
<Korean>켐라이트 쉴드 (비어있음)</Korean>
<Korean>화학조명 가림막 (비어있음)</Korean>
<French>Etui cyalume (vide)</French>
<Italian>Scudo Luce chimica (Vuoto)</Italian>
<Chinese>螢光棒保護殼 (空)</Chinese>
<Chinesesimp>萤光棒保护壳 (空)</Chinesesimp>
<Chinesesimp>荧光棒保护壳(空)</Chinesesimp>
<Russian>Контейнер для Химсвета (Пуст)</Russian>
<Portuguese>Estojo de Luz (Vazio)</Portuguese>
<Czech>Clona na chemické světlo</Czech>
@ -500,11 +518,11 @@
<Japanese>ケミライトを入れられます。シールドとケミライトを組み合わせることで、照明にもなりえます。</Japanese>
<Polish>Osłona na świetliki. Połącz ją ze świetlikiem by stworzyć lampkę do czytania.</Polish>
<German>Abschirmung für Knicklichter. Mit Knicklicht kombinieren, um Leselicht zu erhalten.</German>
<Korean>켐라이트를 위한 가림막입니다. 켐라이트와 같이 사용하여 읽을 때 씁니다.</Korean>
<Korean>화학조명을 위한 가림막입니다. 화학조명과 같이 사용하여 읽을 때 씁니다.</Korean>
<French>Étui pour cyalume. Le combiner avec un cyalume pour obtenir une lampe de lecture.</French>
<Italian>Scudo per luci chimiche. Combina con una luce chimica per una luce da lettura.</Italian>
<Chinese>螢光棒的保護殼. 與螢光棒結合後可充當閱讀燈</Chinese>
<Chinesesimp>萤光棒的保护壳. 与萤光棒结合后可充当阅读灯.</Chinesesimp>
<Chinesesimp>荧光棒的保护壳。与萤光棒结合后可充当阅读灯。</Chinesesimp>
<Russian>Защитный контейнер для Химсвета. Объедините с Химсветом, чтобы подготовить Свет для чтения</Russian>
<Portuguese>Estojo para os bastões de luz. Combine com o bastão de luz para preparar luz de leitura.</Portuguese>
<Czech>Clona na chemické světlo. Při vložení chemického světla vznikne praktické světlo na čtení.</Czech>
@ -516,11 +534,11 @@
<Japanese>ケミライト シールド (緑)</Japanese>
<Polish>Osłona na świetlik (zielona)</Polish>
<German>Knicklicht-Abschirmung (grün)</German>
<Korean>켐라이트 쉴드 (초록)</Korean>
<Korean>화학조명 가림막 (초록)</Korean>
<French>Etui avec cyalume (vert)</French>
<Italian>Scudo Luce Chimica (Verde)</Italian>
<Chinese>螢光棒保護殼 (綠色)</Chinese>
<Chinesesimp>萤光棒保护壳 (绿色)</Chinesesimp>
<Chinesesimp>荧光棒保护壳(绿色)</Chinesesimp>
<Russian>Контейнер для Химсвета (Зел)</Russian>
<Portuguese>Estojo de Luz (Verde)</Portuguese>
<Czech>Clona s vloženým chemickým světlem (Zelené)</Czech>
@ -548,11 +566,11 @@
<Japanese>ケミライト シールド (赤)</Japanese>
<Polish>Osłona na świetlik (czerwona)</Polish>
<German>Knicklicht-Abschirmung (rot)</German>
<Korean>켐라이트 쉴드 (빨강)</Korean>
<Korean>화학조명 가림막 (빨강)</Korean>
<French>Etui avec cyalume (rouge)</French>
<Italian>Scudo Luce Chimica (Rossa)</Italian>
<Chinese>螢光棒保護殼 (紅色)</Chinese>
<Chinesesimp>萤光棒保护壳 (红色)</Chinesesimp>
<Chinesesimp>荧光棒保护壳(红色)</Chinesesimp>
<Russian>Контейнер для Химсвета (Красн)</Russian>
<Portuguese>Estojo de Luz (Vermelho)</Portuguese>
<Czech>Clona s vloženým chemickým světlem (Červené)</Czech>
@ -580,11 +598,11 @@
<Japanese>ケミライト シールド (青)</Japanese>
<Polish>Osłona na świetlik (niebieska)</Polish>
<German>Knicklicht-Abschirmung (blau)</German>
<Korean>켐라이트 쉴드 (파랑)</Korean>
<Korean>화학조명 가림막 (파랑)</Korean>
<French>Etui avec cyalume (bleu)</French>
<Italian>Scudo Luce Chimica (Blu)</Italian>
<Chinese>螢光棒保護殼 (藍色)</Chinese>
<Chinesesimp>萤光棒保护壳 (蓝色)</Chinesesimp>
<Chinesesimp>荧光棒保护壳(蓝色)</Chinesesimp>
<Russian>Контейнер для Химсвета (Син)</Russian>
<Portuguese>Estojo de Luz (Azul)</Portuguese>
<Czech>Clona s vloženým chemickým světlem (Modré)</Czech>
@ -612,11 +630,11 @@
<Japanese>ケミライト シールド (黄)</Japanese>
<Polish>Osłona na świetlik (żółta)</Polish>
<German>Knicklicht-Abschirmung (gelb)</German>
<Korean>켐라이트 쉴드 (노랑)</Korean>
<Korean>화학조명 가림막 (노랑)</Korean>
<French>Etui avec cyalume (jaune)</French>
<Italian>Scudo Luce Chimica (Gialla)</Italian>
<Chinese>螢光棒保護殼 (黃色)</Chinese>
<Chinesesimp>萤光棒保护壳 (黄色)</Chinesesimp>
<Chinesesimp>荧光棒保护壳(黄色)</Chinesesimp>
<Russian>Контейнер для Химсвета (Желт)</Russian>
<Portuguese>Estojo de Luz (Amarelo)</Portuguese>
<Czech>Clona s vloženým chemickým světlem (Žluté)</Czech>
@ -644,11 +662,11 @@
<Japanese>ケミライト シールド (オレンジ)</Japanese>
<Polish>Osłona na świetlik (pomarańczowa)</Polish>
<German>Knicklicht-Abschirmung (orange)</German>
<Korean>켐라이트 쉴드 (주황)</Korean>
<Korean>화학조명 가림막 (주황)</Korean>
<French>Etui avec cyalume (orange)</French>
<Italian>Scudo Luce Chimica (Arancione)</Italian>
<Chinese>螢光棒保護殼 (橘色)</Chinese>
<Chinesesimp>萤光棒保护壳 (橘色)</Chinesesimp>
<Chinesesimp>荧光棒保护壳(橘色)</Chinesesimp>
<Russian>Контейнер для Химсвета (Оранж)</Russian>
<Portuguese>Estojo de Luz (Laranja)</Portuguese>
<Czech>Clona s vloženým chemickým světlem (Oranžové)</Czech>
@ -676,11 +694,11 @@
<Japanese>ケミライト シールド (白)</Japanese>
<Polish>Osłona na świetlik (biała)</Polish>
<German>Knicklicht-Abschirmung (weiß)</German>
<Korean>켐라이트 쉴드 (하양)</Korean>
<Korean>화학조명 가림막 (하양)</Korean>
<French>Etui avec cyalume (blanc)</French>
<Italian>Scudo Luce Chimica (Bianca)</Italian>
<Chinese>螢光棒保護殼 (白色)</Chinese>
<Chinesesimp>萤光棒保护壳 (白色)</Chinesesimp>
<Chinesesimp>荧光棒保护壳(白色)</Chinesesimp>
<Russian>Контейнер для Химсвета (Белый)</Russian>
<Portuguese>Estojo de Luz (Branco)</Portuguese>
<Czech>Clona s vloženým chemickým světlem (Bílé)</Czech>

View File

@ -111,7 +111,6 @@ PREP(inTransitionAnim);
PREP(isAwake);
PREP(isEngineer);
PREP(isEOD);
PREP(isFeatureCameraActive);
PREP(isInBuilding);
PREP(isMedic);
PREP(isModLoaded);
@ -127,7 +126,6 @@ PREP(muteUnitHandleInitPost);
PREP(muteUnitHandleRespawn);
PREP(nearestVehiclesFreeSeat);
PREP(numberToDigits);
PREP(numberToDigitsString);
PREP(numberToString);
PREP(onAnswerRequest);
PREP(owned);
@ -145,6 +143,7 @@ PREP(removeSpecificMagazine);
PREP(requestCallback);
PREP(resetAllDefaults);
PREP(restoreVariablesJIP);
PREP(rscObjectHelper);
PREP(runAfterSettingsInit);
PREP(runTests);
PREP(sanitizeString);
@ -187,6 +186,7 @@ PREP(uniqueElements);
PREP(uniqueItems);
PREP(unloadPerson);
PREP(unloadPersonLocal);
PREP(unloadUnitWeapon);
PREP(unmuteUnit);
PREP(useItem);
PREP(useMagazine);

View File

@ -27,6 +27,7 @@
["blockThrow", false, ["ACE_Attach", "ACE_concertina_wire", "ACE_dragging", "ACE_Explosives", "ACE_Ladder", "ACE_rearm", "ACE_refuel", "ACE_Sandbag", "ACE_Trenches", "ACE_tripod"]] call FUNC(statusEffect_addType);
["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);
[QGVAR(forceWalk), {
params ["_object", "_set"];
@ -78,12 +79,23 @@
if (_object isEqualTo ACE_Player && {_set > 0}) then {
call FUNC(endRadioTransmission);
};
if (isClass (configFile >> "CfgPatches" >> "task_force_radio")) then {
if (["task_force_radio"] call FUNC(isModLoaded)) then {
_object setVariable ["tf_unable_to_use_radio", _set > 0, true];
};
if (isClass (configFile >> "CfgPatches" >> "acre_main")) then {
if (["acre_main"] call FUNC(isModLoaded)) then {
_object setVariable ["acre_sys_core_isDisabledRadio", _set > 0, true];
};
}] call CBA_fnc_addEventHandler;
[QGVAR(blockSpeaking), {
params ["_object", "_set"];
TRACE_2("blockSpeaking EH",_object,_set);
if (["acre_main"] call FUNC(isModLoaded)) then {
_object setVariable ["acre_sys_core_isDisabled", _set > 0, true];
};
if (["task_force_radio"] call FUNC(isModLoaded)) then {
_object setVariable ["tf_voiceVolume", [1, 0] select (_set > 0), true];
};
}] call CBA_fnc_addEventHandler;
[QGVAR(blockDamage), { //Name reversed from `allowDamage` because we want NOR logic
@ -527,4 +539,34 @@ GVAR(deviceKeyCurrentIndex) = -1;
{false},
[0xC7, [true, false, false]], false] call CBA_fnc_addKeybind; //SHIFT + Home Key
["ACE3 Weapons", QGVAR(unloadWeapon), localize LSTRING(unloadWeapon), {
// Conditions:
if !([ACE_player, objNull, ["isNotInside"]] call FUNC(canInteractWith)) exitWith {false};
private _currentWeapon = currentWeapon ACE_player;
if !(_currentWeapon != primaryWeapon _unit && {_currentWeapon != handgunWeapon _unit} && {_currentWeapon != secondaryWeapon _unit}) exitWith {false};
private _currentMuzzle = currentMuzzle ACE_player;
private _currentAmmoCount = ACE_player ammo _currentMuzzle;
if (_currentAmmoCount < 1) exitWith {false};
// Statement:
[ACE_player, _currentWeapon, _currentMuzzle, _currentAmmoCount, false] call FUNC(unloadUnitWeapon);
true
}, {false}, [19, [false, false, true]], false] call CBA_fnc_addKeybind; //ALT + R Key
["CBA_loadoutSet", {
params ["_unit", "_loadout"];
// remove if with https://github.com/CBATeam/CBA_A3/pull/1548
if (count _loadout == 2) then {
_loadout = _loadout select 0;
};
_loadout params ["_primaryWeaponArray"];
if ((_primaryWeaponArray param [0, ""]) == "ACE_FakePrimaryWeapon") then {
TRACE_1("Ignoring fake gun",_primaryWeaponArray);
_loadout set [0, []];
};
}] call CBA_fnc_addEventHandler;
GVAR(commonPostInited) = true;

View File

@ -11,6 +11,9 @@ GVAR(syncedEvents) = createHashMap;
GVAR(showHudHash) = createHashMap;
GVAR(vehicleIconCache) = createHashMap; // for getVehicleIcon
// Cache for FUNC(isModLoaded)
GVAR(isModLoadedCache) = createHashMap;
GVAR(settingsInitFinished) = false;
GVAR(runAtSettingsInitialized) = [];

View File

@ -37,11 +37,11 @@ GVAR(AssignedItemsShownItems) = [
private _assignedItems = getUnitLoadout _unit param [9, ["","","","","",""]]; // ["ItemMap","ItemGPS","ItemRadio","ItemCompass","ItemWatch","NVGoggles"]
GVAR(AssignedItemsShownItems) = [
!((_assignedItems select 0) isEqualTo "") && {getText (configFile >> "CfgWeapons" >> _assignedItems select 0 >> "ACE_hideItemType") != "map"},
!((_assignedItems select 3) isEqualTo "") && {getText (configFile >> "CfgWeapons" >> _assignedItems select 3 >> "ACE_hideItemType") != "compass"},
!((_assignedItems select 4) isEqualTo "") && {getText (configFile >> "CfgWeapons" >> _assignedItems select 4 >> "ACE_hideItemType") != "watch"},
!((_assignedItems select 2) isEqualTo "") && {getText (configFile >> "CfgWeapons" >> _assignedItems select 2 >> "ACE_hideItemType") != "radio"},
!((_assignedItems select 1) isEqualTo "") && {getText (configFile >> "CfgWeapons" >> _assignedItems select 1 >> "ACE_hideItemType") != "gps"}
((_assignedItems select 0) isNotEqualTo "") && {getText (configFile >> "CfgWeapons" >> _assignedItems select 0 >> "ACE_hideItemType") != "map"},
((_assignedItems select 3) isNotEqualTo "") && {getText (configFile >> "CfgWeapons" >> _assignedItems select 3 >> "ACE_hideItemType") != "compass"},
((_assignedItems select 4) isNotEqualTo "") && {getText (configFile >> "CfgWeapons" >> _assignedItems select 4 >> "ACE_hideItemType") != "watch"},
((_assignedItems select 2) isNotEqualTo "") && {getText (configFile >> "CfgWeapons" >> _assignedItems select 2 >> "ACE_hideItemType") != "radio"},
((_assignedItems select 1) isNotEqualTo "") && {getText (configFile >> "CfgWeapons" >> _assignedItems select 1 >> "ACE_hideItemType") != "gps"}
];
GVAR(AssignedItemsShownItems) params ["_showMap", "_showCompass", "_showWatch", "_showRadio", "_showGPS"];

View File

@ -22,7 +22,7 @@ params ["_oldComponent", "_newComponent", "_version"];
_oldComponent params ["_oldComponentName", "_oldSettingName"];
_newComponent params ["_newComponentName", "_newSettingName"];
private _isReplacementAvailable = isClass (configFile >> "CfgPatches" >> _newComponentName);
private _isReplacementAvailable = [_newComponentName] call FUNC(isModLoaded);
private _isDeprecatedLoaded = missionNamespace getvariable [_oldSettingName, false];
private _isReplacementLoaded = missionNamespace getvariable [_newSettingName, false];

View File

@ -66,9 +66,13 @@ if (_state) then {
_ctrl ctrlSetTooltip "Abort.";
_ctrl = _dlg displayctrl ([104, 1010] select isMultiplayer);
_ctrl ctrlSetEventHandler ["buttonClick", QUOTE(closeDialog 0; player setDamage 1; [false] call DFUNC(disableUserInput);)];
_ctrl ctrlEnable (call {private _config = missionConfigFile >> "respawnButton"; !isNumber _config || {getNumber _config == 1}});
_ctrl ctrlSetText "RESPAWN";
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 ctrlEnable ((getMissionConfigValue ["respawnButton", -1]) != 0); // handles 3den attribute or description.ext
_ctrl ctrlSetText localize "$str_3den_multiplayer_attributecategory_respawn_displayname";
_ctrl ctrlSetTooltip "Respawn.";
};

View File

@ -19,7 +19,7 @@
["ace_endRadioTransmissions"] call CBA_fnc_localEvent;
// ACRE
if (isClass (configFile >> "CfgPatches" >> "acre_main")) then {
if (["acre_main"] call FUNC(isModLoaded)) then {
[-1] call acre_sys_core_fnc_handleMultiPttKeyPressUp;
[0] call acre_sys_core_fnc_handleMultiPttKeyPressUp;
[1] call acre_sys_core_fnc_handleMultiPttKeyPressUp;
@ -27,8 +27,8 @@ if (isClass (configFile >> "CfgPatches" >> "acre_main")) then {
};
// TFAR
if (isClass (configFile >> "CfgPatches" >> "task_force_radio")) then {
if (isClass (configFile >> "CfgPatches" >> "tfar_core")) exitWith { // Beta TFAR, exit to avoid script errors from legacy functions not existing
if (["task_force_radio"] call FUNC(isModLoaded)) then {
if (["tfar_core"] call FUNC(isModLoaded)) exitWith { // Beta TFAR, exit to avoid script errors from legacy functions not existing
ACE_Player call TFAR_fnc_releaseAllTangents;
};
call TFAR_fnc_onSwTangentReleased;

View File

@ -43,9 +43,13 @@ if (_cargo 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 _typeOfCargo = if (_cargo isEqualType "") then {_cargo} else {typeOf _cargo};
private _itemSize = if (isNumber (configFile >> "CfgVehicles" >> _typeOfCargo >> QEGVAR(cargo,size)) && {getNumber (configFile >> "CfgVehicles" >> _typeOfCargo >> QEGVAR(cargo,size)) != -1}) then {
getNumber (configFile >> "CfgVehicles" >> _typeOfCargo >> QEGVAR(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);

View File

@ -17,7 +17,7 @@
params [["_vehicle", objNull, [objNull]]];
private _config = configFile >> "CfgVehicles" >> _vehicle;
private _config = configOf _vehicle;
private _cargo = [];
private _codrivers = getArray (_config >> "cargoIsCoDriver");

View File

@ -17,7 +17,7 @@
params [["_vehicle", objNull, [objNull]]];
private _config = configFile >> "CfgVehicles" >> _vehicle;
private _config = configOf _vehicle;
private _cargo = [];
private _codrivers = getArray (_config >> "cargoIsCoDriver");

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