mirror of
https://github.com/acemod/ACE3.git
synced 2025-07-25 21:02:48 +00:00
Merge remote-tracking branch 'upstream/master' into pr/Ivanowicz/9580
This commit is contained in:
6
.github/workflows/arma.yml
vendored
6
.github/workflows/arma.yml
vendored
@ -11,7 +11,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout the source code
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
- name: Validate SQF
|
||||
run: python3 tools/sqf_validator.py
|
||||
- name: Validate Config
|
||||
@ -31,7 +31,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout the source code
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
- name: Lint (sqflint)
|
||||
uses: arma-actions/sqflint@master
|
||||
continue-on-error: true # No failure due to many false-positives
|
||||
@ -40,7 +40,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout the source code
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
- name: Setup HEMTT
|
||||
uses: arma-actions/hemtt@v1
|
||||
- name: Run HEMTT build
|
||||
|
4
.github/workflows/documentation.yml
vendored
4
.github/workflows/documentation.yml
vendored
@ -15,7 +15,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout the source code
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
- name: Install Python packages
|
||||
run: |
|
||||
pip3 install wheel
|
||||
@ -33,7 +33,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Extract Dependencies
|
||||
run: python3 tools/extract_dependencies.py --markdown
|
||||
|
2
.github/workflows/extensions.yml
vendored
2
.github/workflows/extensions.yml
vendored
@ -14,7 +14,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout the source code
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
- name: Build
|
||||
shell: cmd
|
||||
run: |
|
||||
|
44
.github/workflows/hemtt.yml
vendored
Normal file
44
.github/workflows/hemtt.yml
vendored
Normal file
@ -0,0 +1,44 @@
|
||||
name: HEMTT
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
pull_request_target:
|
||||
|
||||
jobs:
|
||||
windows:
|
||||
runs-on: windows-latest
|
||||
steps:
|
||||
- name: Install Arma 3 Tools
|
||||
uses: arma-actions/arma3-tools@master
|
||||
with:
|
||||
toolsUrl: ${{ secrets.ARMA3_TOOLS_URL }}
|
||||
- name: Checkout the source code
|
||||
uses: actions/checkout@v4
|
||||
- name: Setup HEMTT
|
||||
uses: arma-actions/hemtt@v1
|
||||
- name: Checkout pull request
|
||||
uses: actions/checkout@v4
|
||||
if: ${{ github.event_name == 'pull_request_target' }}
|
||||
with:
|
||||
path: pullrequest
|
||||
ref: 'refs/pull/${{ github.event.number }}/merge'
|
||||
- name: Replace addons with pull request addons
|
||||
if: ${{ github.event_name == 'pull_request_target' }}
|
||||
run: |
|
||||
rm -r addons\
|
||||
rm -r optionals\
|
||||
rm -r include\
|
||||
xcopy /e /h /q pullrequest\addons addons\
|
||||
xcopy /e /h /q pullrequest\optionals optionals\
|
||||
xcopy /e /h /q pullrequest\include include\
|
||||
- name: Run HEMTT build
|
||||
run: hemtt build
|
||||
- name: Rename build folder
|
||||
run: mv .hemttout/build .hemttout/@ace
|
||||
- name: Upload Artifact
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: ace3-${{ github.sha }}
|
||||
path: .hemttout/@*
|
6
.github/workflows/pboproject.yml
vendored
6
.github/workflows/pboproject.yml
vendored
@ -35,18 +35,18 @@ jobs:
|
||||
RHSSAF_URL: ${{ secrets.RHSSAF_URL }}
|
||||
RHSUSF_URL: ${{ secrets.RHSUSF_URL }}
|
||||
- name: Checkout CBA A3
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
path: x\cba
|
||||
ref: master
|
||||
repository: CBATeam/CBA_A3.git
|
||||
- name: Checkout ACE3
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
path: z\ace
|
||||
persist-credentials: false
|
||||
- name: Checkout pull request
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
if: ${{ github.event_name == 'pull_request_target' }}
|
||||
with:
|
||||
path: pullrequest
|
||||
|
@ -10,7 +10,7 @@ Brett Mayson
|
||||
bux578 <github@jonathandavid.de>
|
||||
commy2
|
||||
Dahlgren
|
||||
tcvm <baileydanyluk@gmail.com>
|
||||
Drofseh <drofseh.arma@gmail.com>
|
||||
esteldunedain <nicolas.d.badano@gmail.com>
|
||||
Felix Wiegand <koffeinflummi@gmail.com>
|
||||
Garth "L-H" de Wet <garthofhearts@gmail.com>
|
||||
@ -18,14 +18,17 @@ Giallustio
|
||||
Glowbal
|
||||
Grim
|
||||
Janus
|
||||
johnb43
|
||||
jokoho482 <jokoho482@gmail.com>
|
||||
Jonpas <jonpas33@gmail.com>
|
||||
Kieran
|
||||
kymckay
|
||||
mharis001 <mhariszakar@gmail.com>
|
||||
MikeMF
|
||||
NouberNou
|
||||
PabstMirror <pabstmirror@gmail.com>
|
||||
Ruthberg <ulteq@web.de>
|
||||
tcvm <baileydanyluk@gmail.com>
|
||||
tpM
|
||||
veteran29
|
||||
ViperMaul
|
||||
@ -79,7 +82,6 @@ diwako
|
||||
dixon13 <dixonbegay@gmail.com>
|
||||
Drift_91
|
||||
Drill <drill87@gmail.com>
|
||||
Drofseh <drofseh@gmail.com>
|
||||
Dslyecxi <dslyecxi@gmail.com>
|
||||
Dudakov aka [OMCB]Kaban <dudakov.s@gmail.com>
|
||||
Eclipser <jms@modeemi.fi>
|
||||
@ -135,7 +137,6 @@ MarcBook
|
||||
meat <p.humberdroz@gmail.com>
|
||||
Michail Nikolaev
|
||||
MikeMatrix <m.braun92@gmail.com>
|
||||
MikeMF
|
||||
mjc4wilton <mjc4wilton@gmail.com>
|
||||
Mysteryjuju
|
||||
nic547 <nic547@outlook.com>
|
||||
|
@ -5,7 +5,7 @@
|
||||
|
||||
<p align="center">
|
||||
<a href="https://github.com/acemod/ACE3/releases/latest">
|
||||
<img src="https://img.shields.io/badge/Version-3.16.0-blue.svg?style=flat-square" alt="ACE3 Version">
|
||||
<img src="https://img.shields.io/badge/Version-3.16.1-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">
|
||||
|
@ -172,7 +172,7 @@
|
||||
<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>
|
||||
<German>Beeinflusst, wie ruhig man eine Waffe halten kann. Ein höherer Wert bedeutet weniger Stabilisierung.</German>
|
||||
<Japanese>武器を持つ手のぶれ度合いを設定します。 値が高ければ高いほど、手ぶれが強くなります。</Japanese>
|
||||
<Chinesesimp>影响手持武器的晃动程度,数值越高,抖动的越厉害。</Chinesesimp>
|
||||
<Chinese>影響手持武器晃動程度,數值越高抖動越厲害</Chinese>
|
||||
@ -187,18 +187,26 @@
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_RestedSwayFactor">
|
||||
<English>Rested sway factor</English>
|
||||
<French>Facteur de balancement au repos</French>
|
||||
<Korean>휴식 시 손떨림 정도</Korean>
|
||||
<German>Verwacklungsfaktor, wenn aufgelegt</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_RestedSwayFactor_Description">
|
||||
<English>Influences the amount of weapon sway while weapon is rested.</English>
|
||||
<French>Influence le degré de balancement de l'arme au repos.</French>
|
||||
<Korean>무기가 아무런 행동도 하지 않는 동안 무기가 흔들리는 정도를 정합니다.</Korean>
|
||||
<German>Beeinflusst, wie ruhig man die Waffe hält, während sie aufgelegt ist.</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_DeployedSwayFactor">
|
||||
<English>Deployed sway factor</English>
|
||||
<French>Facteur de balancement déployé</French>
|
||||
<Korean>거치 시 손떨림 정도</Korean>
|
||||
<German>Verwacklungsfaktor, wenn Zweibein aufgestellt ist.</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_DeployedSwayFactor_Description">
|
||||
<English>Influences the amount of weapon sway while weapon is deployed.</English>
|
||||
<French>Influence le degré de balancement de l'arme déployée.</French>
|
||||
<Korean>무기를 거치하는 동안 무기를 흔드는 정도를 정합니다.</Korean>
|
||||
<German>Beeinflusst, wie ruhig man die Waffen hält, während das Zweibein aufgestellt ist.</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_Enabled">
|
||||
<English>Enabled</English>
|
||||
|
@ -289,7 +289,7 @@
|
||||
<Italian>(Scorrere) Estendere</Italian>
|
||||
<Chinese>(滾輪) 延長</Chinese>
|
||||
<Chinesesimp>(滚轮)延长</Chinesesimp>
|
||||
<Portuguese>(Roda do Mouse) Extender</Portuguese>
|
||||
<Portuguese>(Roda do Mouse) Estender</Portuguese>
|
||||
<Czech>(Scrollovat) Oddálit</Czech>
|
||||
<Turkish>(Tekerlek) Uzat</Turkish>
|
||||
</Key>
|
||||
|
@ -86,12 +86,14 @@
|
||||
<Polish>Automatyczne zakładanie NVG</Polish>
|
||||
<German>Automatisch NVGs ausrüsten</German>
|
||||
<Korean>야투경 자동 창착</Korean>
|
||||
<French>Equipement JVN automatique</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AI_AssignNVG_Description">
|
||||
<English>Equips NVG in inventory during night time and unequips it during day time.\nDoes not add NVGs to inventory!</English>
|
||||
<Polish>Zakłada NVG w nocy i zdejmuje je w ciągu dnia.\nNie dodaje NVG do ekwipunku!</Polish>
|
||||
<German>Rüstet NVG nachts aus dem Inventar aus und entfernt es tagsüber.\nFügt keine NVGs zum Inventar hinzu!</German>
|
||||
<Korean>야간에는 야투경을 소지품에 장착하고 주간에는 장착을 해제합니다.\n주의! 소지품에 야투경을 추가하는 것이 아닙니다!</Korean>
|
||||
<French>Equipe des JVN pendant la nuit et les déséquipe le jour.\nN'ajoute pas les JVN dans l'intenvaire !</French>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
@ -75,11 +75,11 @@ class GVAR(sorts) {
|
||||
scope = 2;
|
||||
displayName = CSTRING(sortByProtectionBallistic);
|
||||
tabs[] = {{3,4,6}, {}};
|
||||
statement = QUOTE([ARR_3(_this, 1000000, 1000)] call FUNC(sortStatement_protection));
|
||||
statement = QUOTE([ARR_3(_this,1000000,1000)] call FUNC(sortStatement_protection));
|
||||
};
|
||||
|
||||
class ACE_protectionExplosive: ACE_protectionBallistic {
|
||||
displayName = CSTRING(sortByProtectionExplosive);
|
||||
statement = QUOTE([ARR_3(_this, 1000, 1000000)] call FUNC(sortStatement_protection));
|
||||
statement = QUOTE([ARR_3(_this,1000,1000000)] call FUNC(sortStatement_protection));
|
||||
};
|
||||
};
|
||||
|
@ -24,7 +24,7 @@ class GVAR(stats) {
|
||||
priority = 1.5;
|
||||
displayName = "$STR_a3_rscdisplayarsenal_stat_weight";
|
||||
showText = 1;
|
||||
textStatement = QUOTE([ARR_2(_this select 0, _this select 1)] call FUNC(statTextStatement_mass));
|
||||
textStatement = QUOTE([ARR_2(_this select 0,_this select 1)] call FUNC(statTextStatement_mass));
|
||||
tabs[] = {{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14}, {0,1,2,3,4,5,6,7}};
|
||||
};
|
||||
class ACE_rateOfFire: statBase {
|
||||
@ -34,8 +34,8 @@ class GVAR(stats) {
|
||||
displayName = "$STR_a3_rscdisplayarsenal_stat_rof";
|
||||
showBar = 1;
|
||||
showText = 1;
|
||||
barStatement = QUOTE([ARR_3((_this select 0) select 0, _this select 1, [ARR_2([ARR_2(-1.4, 0.31)], [ARR_2(1, 0.01)])])] call FUNC(statBarStatement_rateOfFIre));
|
||||
textStatement = QUOTE([ARR_3((_this select 0) select 0, _this select 1, [ARR_2([ARR_2(-1.4, 0.31)], false)])] call FUNC(statTextStatement_rateOfFire));
|
||||
barStatement = QUOTE([ARR_3((_this select 0) select 0,_this select 1,[ARR_2([ARR_2(-1.4,0.31)],[ARR_2(1,0.01)])])] call FUNC(statBarStatement_rateOfFIre));
|
||||
textStatement = QUOTE([ARR_3((_this select 0) select 0,_this select 1,[ARR_2([ARR_2(-1.4,0.31)],false)])] call FUNC(statTextStatement_rateOfFire));
|
||||
tabs[] = {{0,1}, {}};
|
||||
};
|
||||
class ACE_accuracy: statBase {
|
||||
@ -45,8 +45,8 @@ class GVAR(stats) {
|
||||
displayName = "$STR_a3_rscdisplayarsenal_stat_dispersion";
|
||||
showBar = 1;
|
||||
showText = 1;
|
||||
barStatement = QUOTE([ARR_3((_this select 0) select 0, _this select 1, [ARR_3([ARR_2(-4, -1.7)], [ARR_2(1, 0.01)], true)])] call FUNC(statBarStatement_accuracy));
|
||||
textStatement = QUOTE([ARR_3((_this select 0) select 0, _this select 1, [ARR_2([ARR_2(-4, -1.7)], false)])] call FUNC(statTextStatement_accuracy));
|
||||
barStatement = QUOTE([ARR_3((_this select 0) select 0,_this select 1,[ARR_3([ARR_2(-4,-1.7)],[ARR_2(1,0.01)],true)])] call FUNC(statBarStatement_accuracy));
|
||||
textStatement = QUOTE([ARR_3((_this select 0) select 0,_this select 1,[ARR_2([ARR_2(-4,-1.7)],false)])] call FUNC(statTextStatement_accuracy));
|
||||
tabs[] = {{0,1}, {}};
|
||||
};
|
||||
class ACE_maxZeroing: statBase {
|
||||
@ -55,7 +55,7 @@ class GVAR(stats) {
|
||||
stats[] = {"maxZeroing"};
|
||||
displayName = "$STR_a3_rscdisplayarsenal_stat_range";
|
||||
showBar = 1;
|
||||
barStatement = QUOTE([ARR_3((_this select 0) select 0, _this select 1, [ARR_3([ARR_2(0, 2500)], [ARR_2(0.01, 1)], false)])] call FUNC(statBarStatement_default));
|
||||
barStatement = QUOTE([ARR_3((_this select 0) select 0,_this select 1,[ARR_3([ARR_2(0,2500)],[ARR_2(0.01,1)],false)])] call FUNC(statBarStatement_default));
|
||||
tabs[] = {{0,1,2}, {}};
|
||||
};
|
||||
class ACE_impact: statBase {
|
||||
@ -64,7 +64,7 @@ class GVAR(stats) {
|
||||
stats[] = {"hit", "initSpeed"};
|
||||
displayName = "$STR_a3_rscdisplayarsenal_stat_impact";
|
||||
showBar = 1;
|
||||
barStatement = QUOTE([ARR_3(_this select 0, _this select 1, [ARR_2([ARR_2(0, 3.2)], [ARR_2(-1, 1100)])])] call FUNC(statBarStatement_impact));
|
||||
barStatement = QUOTE([ARR_3(_this select 0,_this select 1,[ARR_2([ARR_2(0,3.2)],[ARR_2(-1,1100)])])] call FUNC(statBarStatement_impact));
|
||||
tabs[] = {{0,1,2}, {}};
|
||||
};
|
||||
class ACE_scopeMagnification: statBase {
|
||||
@ -105,7 +105,7 @@ class GVAR(stats) {
|
||||
stats[] = {"passthrough"};
|
||||
displayName = "$STR_a3_rscdisplayarsenal_stat_passthrough";
|
||||
showBar = 1;
|
||||
barStatement = QUOTE([ARR_3((_this select 0) select 0, _this select 1, [ARR_3([ARR_2(0, 0.63)], [ARR_2(0.01, 1)], false)])] call FUNC(statBarStatement_default));
|
||||
barStatement = QUOTE([ARR_3((_this select 0) select 0,_this select 1,[ARR_3([ARR_2(0,0.63)],[ARR_2(0.01,1)],false)])] call FUNC(statBarStatement_default));
|
||||
tabs[] = {{3,4,6}, {}};
|
||||
};
|
||||
class ACE_explosiveResistance: statBase {
|
||||
@ -114,7 +114,7 @@ class GVAR(stats) {
|
||||
stats[] = {"armor"};
|
||||
displayName = "$STR_a3_rscdisplayarsenal_stat_armor";
|
||||
showBar = 1;
|
||||
barStatement = QUOTE([ARR_3((_this select 0) select 0, _this select 1, [ARR_3([ARR_2(0, 0.80)], [ARR_2(0.01, 1)], false)])] call FUNC(statBarStatement_default));
|
||||
barStatement = QUOTE([ARR_3((_this select 0) select 0,_this select 1,[ARR_3([ARR_2(0,0.80)],[ARR_2(0.01,1)],false)])] call FUNC(statBarStatement_default));
|
||||
tabs[] = {{3,4,6}, {}};
|
||||
};
|
||||
class ACE_load: statBase {
|
||||
@ -123,7 +123,7 @@ class GVAR(stats) {
|
||||
stats[] = {"maximumLoad"};
|
||||
displayName = "$STR_a3_rscdisplayarsenal_stat_load";
|
||||
showBar = 1;
|
||||
barStatement = QUOTE([ARR_3((_this select 0) select 0, _this select 1, [ARR_3([ARR_2(0, 500)], [ARR_2(0.01, 1)], false)])] call FUNC(statBarStatement_default));
|
||||
barStatement = QUOTE([ARR_3((_this select 0) select 0,_this select 1,[ARR_3([ARR_2(0,500)],[ARR_2(0.01,1)],false)])] call FUNC(statBarStatement_default));
|
||||
tabs[] = {{3,4,5}, {}};
|
||||
};
|
||||
class ACE_smokeChemTTL: statBase {
|
||||
@ -133,7 +133,7 @@ class GVAR(stats) {
|
||||
displayName = CSTRING(statTTL);
|
||||
showText = 1;
|
||||
textStatement = QUOTE(call FUNC(statTextStatement_smokeChemTTL));
|
||||
condition = QUOTE((configName (_this select 1)) isKindOf [ARR_2('smokeShell', configFile >> 'CfgMagazines')]);
|
||||
condition = QUOTE((configName (_this select 1)) isKindOf [ARR_2('smokeShell',configFile >> 'CfgMagazines')]);
|
||||
tabs[] = {{}, {5}};
|
||||
};
|
||||
class ACE_explosionTime: statBase {
|
||||
|
@ -28,7 +28,7 @@ class Cfg3DEN {
|
||||
w = QUOTE(130 * ATTRIBUTE_W);
|
||||
h = QUOTE(106.83 * ATTRIBUTE_H);
|
||||
attributeLoad = QUOTE([ARR_2(_this,+_value)] call FUNC(attributeLoad));
|
||||
attributeSave = QUOTE(uiNamespace getVariable [ARR_2(QQGVAR(attributeValue),[ARR_2([], 0)])]);
|
||||
attributeSave = QUOTE(uiNamespace getVariable [ARR_2(QQGVAR(attributeValue),[ARR_2([],0)])]);
|
||||
class controls {
|
||||
class ModeTitle: ctrlStatic {
|
||||
idc = -1;
|
||||
@ -40,7 +40,7 @@ class Cfg3DEN {
|
||||
};
|
||||
class Mode: ctrlToolbox {
|
||||
idc = IDC_ATTRIBUTE_MODE;
|
||||
onToolBoxSelChanged = QUOTE([ARR_2(ctrlParentControlsGroup (_this select 0), _this select 1)] call FUNC(attributeMode));
|
||||
onToolBoxSelChanged = QUOTE([ARR_2(ctrlParentControlsGroup (_this select 0),_this select 1)] call FUNC(attributeMode));
|
||||
x = QUOTE(5 * ATTRIBUTE_W);
|
||||
y = QUOTE(5 * ATTRIBUTE_H);
|
||||
w = QUOTE(125 * ATTRIBUTE_W);
|
||||
@ -55,7 +55,7 @@ class Cfg3DEN {
|
||||
};
|
||||
class Category: ctrlToolboxPictureKeepAspect {
|
||||
idc = IDC_ATTRIBUTE_CATEGORY;
|
||||
onToolBoxSelChanged = QUOTE([ARR_2(ctrlParentControlsGroup (_this select 0), _this select 1)] call FUNC(attributeCategory));
|
||||
onToolBoxSelChanged = QUOTE([ARR_2(ctrlParentControlsGroup (_this select 0),_this select 1)] call FUNC(attributeCategory));
|
||||
x = QUOTE(5 * ATTRIBUTE_W);
|
||||
y = QUOTE(15 * ATTRIBUTE_H);
|
||||
w = QUOTE(125 * ATTRIBUTE_W);
|
||||
@ -129,7 +129,8 @@ class Cfg3DEN {
|
||||
};
|
||||
class SearchButton: ctrlButtonPicture {
|
||||
idc = IDC_ATTRIBUTE_SEARCH_BUTTON;
|
||||
onButtonClick = QUOTE( \
|
||||
#pragma hemtt suppress pw3_padded_arg
|
||||
onButtonClick = QUOTE(\
|
||||
params ['_searchButton']; \
|
||||
private _controlsGroup = ctrlParentControlsGroup _searchButton; \
|
||||
private _searchBar = _controlsGroup controlsGroupCtrl IDC_ATTRIBUTE_SEARCHBAR; \
|
||||
@ -147,7 +148,8 @@ class Cfg3DEN {
|
||||
class SearchBar: ctrlEdit {
|
||||
idc = IDC_ATTRIBUTE_SEARCHBAR;
|
||||
onKeyUp = QUOTE([ctrlParentControlsGroup (_this select 0)] call FUNC(attributeAddItems));
|
||||
onMouseButtonClick = QUOTE( \
|
||||
#pragma hemtt suppress pw3_padded_arg
|
||||
onMouseButtonClick = QUOTE(\
|
||||
params [ARR_2('_searchBar','_button')]; \
|
||||
if (_button != 1) exitWith {}; \
|
||||
_searchBar ctrlSetText ''; \
|
||||
|
@ -26,7 +26,7 @@ class Display3DEN {
|
||||
class GVAR(portVALoadouts) {
|
||||
text = CSTRING(portLoadoutsText);
|
||||
picture = QPATHTOEF(common,data\logo_ace3_ca.paa);
|
||||
action = QUOTE(call DFUNC(portVALoadouts););
|
||||
action = QUOTE(call DFUNC(portVALoadouts));
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -45,6 +45,8 @@ PREP(handleLoadoutsSearchbar);
|
||||
PREP(handleMouse);
|
||||
PREP(handleScrollWheel);
|
||||
PREP(handleSearchbar);
|
||||
PREP(handleSearchInputChanged);
|
||||
PREP(handleSearchModeToggle);
|
||||
PREP(handleStats);
|
||||
PREP(initBox);
|
||||
PREP(itemInfo);
|
||||
|
@ -18,9 +18,10 @@
|
||||
|
||||
params ["_controlsGroup"];
|
||||
|
||||
forceUnicode 0; // handle non-ANSI characters
|
||||
|
||||
private _category = lbCurSel (_controlsGroup controlsGroupCtrl IDC_ATTRIBUTE_CATEGORY);
|
||||
// Have to use toLower here and displayName to handle non-ANSI characters
|
||||
private _filter = toLower ctrlText (_controlsGroup controlsGroupCtrl IDC_ATTRIBUTE_SEARCHBAR);
|
||||
private _filter = ctrlText (_controlsGroup controlsGroupCtrl IDC_ATTRIBUTE_SEARCHBAR);
|
||||
private _configItems = uiNamespace getVariable QGVAR(configItems);
|
||||
private _magazineMiscItems = uiNamespace getVariable QGVAR(magazineMiscItems);
|
||||
private _attributeValue = uiNamespace getVariable [QGVAR(attributeValue), [[], 0]];
|
||||
@ -64,7 +65,7 @@ if (_category == IDX_CAT_ALL) exitWith {
|
||||
default {_cfgWeapons >> _x};
|
||||
};
|
||||
|
||||
_displayName = toLower getText (_config >> "displayName");
|
||||
_displayName = getText (_config >> "displayName");
|
||||
|
||||
// Add item if not filtered
|
||||
if (_displayName regexMatch _filter || {_x regexMatch _filter}) then {
|
||||
@ -116,7 +117,7 @@ private _config = _cfgClass;
|
||||
_config = [_cfgClass, _cfgMagazines] select (_x in _magazineMiscItems);
|
||||
};
|
||||
|
||||
_displayName = toLower getText (_config >> _x >> "displayName");
|
||||
_displayName = getText (_config >> _x >> "displayName");
|
||||
|
||||
// Add item if not filtered
|
||||
if (_displayName regexMatch _filter || {_x regexMatch _filter}) then {
|
||||
@ -140,3 +141,6 @@ private _config = _cfgClass;
|
||||
|
||||
// Sort alphabetically
|
||||
_listbox lnbSort [1, false];
|
||||
|
||||
// Reset unicode flag
|
||||
forceUnicode -1;
|
||||
|
@ -7,6 +7,7 @@
|
||||
* Arguments:
|
||||
* 0: Arsenal display <DISPLAY>
|
||||
* 1: Tab control <CONTROL>
|
||||
* 2: Animate panel refresh <BOOL>
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
@ -14,28 +15,30 @@
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
params ["_display", "_control"];
|
||||
params ["_display", "_control", ["_animate", true]];
|
||||
|
||||
// Fade old control background
|
||||
if (!isNil QGVAR(currentLeftPanel)) then {
|
||||
private _previousCtrlBackground = _display displayCtrl (GVAR(currentLeftPanel) - 1);
|
||||
_previousCtrlBackground ctrlSetFade 1;
|
||||
_previousCtrlBackground ctrlCommit FADE_DELAY;
|
||||
_previousCtrlBackground ctrlCommit ([0, FADE_DELAY] select _animate);
|
||||
};
|
||||
|
||||
// Show new control background
|
||||
private _ctrlIDC = ctrlIDC _control;
|
||||
private _ctrlBackground = _display displayCtrl (_ctrlIDC - 1);
|
||||
_ctrlBackground ctrlSetFade 0;
|
||||
_ctrlBackground ctrlCommit FADE_DELAY;
|
||||
_ctrlBackground ctrlCommit ([0, FADE_DELAY] select _animate);
|
||||
|
||||
private _ctrlPanel = _display displayCtrl IDC_leftTabContent;
|
||||
|
||||
// Force a "refresh" animation of the panel
|
||||
_ctrlPanel ctrlSetFade 1;
|
||||
_ctrlPanel ctrlCommit 0;
|
||||
_ctrlPanel ctrlSetFade 0;
|
||||
_ctrlPanel ctrlCommit FADE_DELAY;
|
||||
if (_animate) then {
|
||||
_ctrlPanel ctrlSetFade 1;
|
||||
_ctrlPanel ctrlCommit 0;
|
||||
_ctrlPanel ctrlSetFade 0;
|
||||
_ctrlPanel ctrlCommit FADE_DELAY;
|
||||
};
|
||||
|
||||
_ctrlPanel lbSetCurSel -1;
|
||||
|
||||
|
@ -7,6 +7,7 @@
|
||||
* Arguments:
|
||||
* 0: Arsenal display <DISPLAY>
|
||||
* 1: Tab control <CONTROL>
|
||||
* 2: Animate panel refresh <BOOL> (default: true)
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
@ -14,13 +15,13 @@
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
params ["_display", "_control"];
|
||||
params ["_display", "_control", ["_animate", true]];
|
||||
|
||||
// Fade old control background
|
||||
if (!isNil QGVAR(currentRightPanel)) then {
|
||||
private _previousCtrlBackground = _display displayCtrl (GVAR(currentRightPanel) - 1);
|
||||
_previousCtrlBackground ctrlSetFade 1;
|
||||
_previousCtrlBackground ctrlCommit FADE_DELAY;
|
||||
_previousCtrlBackground ctrlCommit ([0, FADE_DELAY] select _animate);
|
||||
};
|
||||
|
||||
// Show new control background
|
||||
@ -28,7 +29,7 @@ private _ctrlIDC = ctrlIDC _control;
|
||||
private _ctrlBackground = _display displayCtrl (_ctrlIDC - 1);
|
||||
_ctrlBackground ctrlShow true;
|
||||
_ctrlBackground ctrlSetFade 0;
|
||||
_ctrlBackground ctrlCommit FADE_DELAY;
|
||||
_ctrlBackground ctrlCommit ([0, FADE_DELAY] select _animate);
|
||||
|
||||
private _searchbarCtrl = _display displayCtrl IDC_rightSearchbar;
|
||||
|
||||
@ -183,10 +184,12 @@ switch (GVAR(currentLeftPanel)) do {
|
||||
};
|
||||
|
||||
// Force a "refresh" animation of the panel
|
||||
_ctrlPanel ctrlSetFade 1;
|
||||
_ctrlPanel ctrlCommit 0;
|
||||
_ctrlPanel ctrlSetFade 0;
|
||||
_ctrlPanel ctrlCommit FADE_DELAY;
|
||||
if (_animate) then {
|
||||
_ctrlPanel ctrlSetFade 1;
|
||||
_ctrlPanel ctrlCommit 0;
|
||||
_ctrlPanel ctrlSetFade 0;
|
||||
_ctrlPanel ctrlCommit FADE_DELAY;
|
||||
};
|
||||
|
||||
// Check if the left panel is a weapon. If so, right panel will be compatible items with weapon only
|
||||
private _leftPanelState = GVAR(currentLeftPanel) in [IDC_buttonPrimaryWeapon, IDC_buttonHandgun, IDC_buttonSecondaryWeapon, IDC_buttonBinoculars];
|
||||
|
28
addons/arsenal/functions/fnc_handleSearchInputChanged.sqf
Normal file
28
addons/arsenal/functions/fnc_handleSearchInputChanged.sqf
Normal file
@ -0,0 +1,28 @@
|
||||
#include "..\script_component.hpp"
|
||||
#include "..\defines.hpp"
|
||||
/*
|
||||
* Author: PabstMirror
|
||||
* Handles user input in the search text boxes
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Search text input (left or right) <CONTROL>
|
||||
* 1: Text <STRING>
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
params ["_ctrl", "_newText"];
|
||||
|
||||
if (!GVAR(liveUpdateSearch)) exitWith {};
|
||||
|
||||
private _display = ctrlParent _ctrl;
|
||||
|
||||
if (GVAR(leftSearchbarFocus)) then {
|
||||
[_display, _display displayCtrl IDC_leftSearchbar, false] call FUNC(handleSearchBar);
|
||||
};
|
||||
if (GVAR(rightSearchbarFocus)) then {
|
||||
[_display, _display displayCtrl IDC_rightSearchbar, false] call FUNC(handleSearchBar);
|
||||
};
|
30
addons/arsenal/functions/fnc_handleSearchModeToggle.sqf
Normal file
30
addons/arsenal/functions/fnc_handleSearchModeToggle.sqf
Normal file
@ -0,0 +1,30 @@
|
||||
#include "..\script_component.hpp"
|
||||
#include "..\defines.hpp"
|
||||
/*
|
||||
* Author: PabstMirror
|
||||
* Handles mouse clicks on search button to toggle live results
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Search button (left or right) <CONTROL>
|
||||
* 1: Mouse Button <NUMBER>
|
||||
* 2: Not used
|
||||
* 3: Not used
|
||||
* 4: Not used
|
||||
* 5: Ctrl Button <BOOL>
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
params ["_ctrl", "_mouseButton", "", "", "", "_keyCtrl"];
|
||||
|
||||
if ((!_keyCtrl)) exitWith {}; // Ignore if not CTRL + Click
|
||||
|
||||
GVAR(liveUpdateSearch) = !GVAR(liveUpdateSearch);
|
||||
|
||||
private _display = ctrlParent _ctrl;
|
||||
private _color = if (GVAR(liveUpdateSearch)) then { [0,1,0,0.5] } else { [0,0,0,0.5] };
|
||||
(_display displayCtrl IDC_leftSearchbarButton) ctrlSetBackgroundColor _color;
|
||||
(_display displayCtrl IDC_rightSearchbarButton) ctrlSetBackgroundColor _color;
|
@ -7,6 +7,7 @@
|
||||
* Arguments:
|
||||
* 0: Arsenal display <DISPLAY>
|
||||
* 1: Searchbar control <CONTROL>
|
||||
* 2: Animate panel refresh <BOOL> (default: true)
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
@ -14,10 +15,11 @@
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
params ["_display", "_control"];
|
||||
params ["_display", "_control", ["_animate", true]];
|
||||
|
||||
// Have to use toLower here and displayName to handle non-ANSI characters
|
||||
private _searchString = toLower ctrlText _control;
|
||||
forceUnicode 0; // handle non-ANSI characters
|
||||
|
||||
private _searchString = ctrlText _control;
|
||||
private _searchPattern = "";
|
||||
if (_searchString != "") then {
|
||||
_searchPattern = _searchString call EFUNC(common,escapeRegex);
|
||||
@ -28,7 +30,7 @@ if (_searchString != "") then {
|
||||
if ((ctrlIDC _control) == IDC_rightSearchbar) then {
|
||||
// Don't refill if there is no need
|
||||
if (GVAR(lastSearchTextRight) != "" && {(_searchString find GVAR(lastSearchTextRight)) != 0}) then {
|
||||
[_display, _display displayCtrl GVAR(currentRightPanel)] call FUNC(fillRightPanel);
|
||||
[_display, _display displayCtrl GVAR(currentRightPanel), _animate] call FUNC(fillRightPanel);
|
||||
};
|
||||
|
||||
GVAR(lastSearchTextRight) = _searchString;
|
||||
@ -55,7 +57,7 @@ if ((ctrlIDC _control) == IDC_rightSearchbar) then {
|
||||
|
||||
// Go through all items in panel and see if they need to be deleted or not
|
||||
for "_lbIndex" from (lbSize _rightPanelCtrl) - 1 to 0 step -1 do {
|
||||
_currentDisplayName = toLower (_rightPanelCtrl lbText _lbIndex);
|
||||
_currentDisplayName = _rightPanelCtrl lbText _lbIndex;
|
||||
_currentClassname = _rightPanelCtrl lbData _lbIndex;
|
||||
|
||||
// Remove item in panel if it doesn't match search, skip otherwise
|
||||
@ -126,8 +128,8 @@ if ((ctrlIDC _control) == IDC_rightSearchbar) then {
|
||||
} else {
|
||||
// Left panel search bar
|
||||
// Don't refill if there is no need
|
||||
if (GVAR(lastSearchTextLeft) != "" && {(_searchString find GVAR(lastSearchTextRight)) != 0}) then {
|
||||
[_display, _display displayCtrl GVAR(currentLeftPanel)] call FUNC(fillLeftPanel);
|
||||
if (GVAR(lastSearchTextLeft) != "" && {(_searchString find GVAR(lastSearchTextLeft)) != 0}) then {
|
||||
[_display, _display displayCtrl GVAR(currentLeftPanel), _animate] call FUNC(fillLeftPanel);
|
||||
};
|
||||
|
||||
GVAR(lastSearchTextLeft) = _searchString;
|
||||
@ -151,7 +153,7 @@ if ((ctrlIDC _control) == IDC_rightSearchbar) then {
|
||||
|
||||
// Go through all items in panel and see if they need to be deleted or not
|
||||
for "_lbIndex" from (lbSize _leftPanelCtrl) - 1 to 0 step -1 do {
|
||||
_currentDisplayName = toLower (_leftPanelCtrl lbText _lbIndex);
|
||||
_currentDisplayName = _leftPanelCtrl lbText _lbIndex;
|
||||
_currentClassname = _leftPanelCtrl lbData _lbIndex;
|
||||
|
||||
// Remove item in panel if it doesn't match search, skip otherwise
|
||||
@ -177,3 +179,6 @@ if ((ctrlIDC _control) == IDC_rightSearchbar) then {
|
||||
|
||||
[_display, nil, nil, configNull] call FUNC(itemInfo);
|
||||
};
|
||||
|
||||
// Reset unicode flag
|
||||
forceUnicode -1;
|
||||
|
@ -104,11 +104,13 @@ GVAR(currentLeftPanel) = nil;
|
||||
GVAR(currentRightPanel) = nil;
|
||||
GVAR(leftSearchbarFocus) = nil;
|
||||
GVAR(rightSearchbarFocus) = nil;
|
||||
GVAR(liveUpdateSearch) = nil;
|
||||
GVAR(shiftState) = nil;
|
||||
GVAR(leftTabFocus) = nil;
|
||||
GVAR(rightTabFocus) = nil;
|
||||
GVAR(rightTabLnBFocus) = nil;
|
||||
GVAR(ignoreFirstSortPanelCall) = nil;
|
||||
GVAR(refreshing) = nil;
|
||||
|
||||
GVAR(selectedWeaponType) = nil;
|
||||
GVAR(virtualItems) = nil;
|
||||
|
@ -230,10 +230,12 @@ GVAR(currentLeftPanel) = nil;
|
||||
GVAR(currentRightPanel) = nil;
|
||||
GVAR(leftSearchbarFocus) = false;
|
||||
GVAR(rightSearchbarFocus) = false;
|
||||
GVAR(liveUpdateSearch) = false;
|
||||
GVAR(leftTabFocus) = false;
|
||||
GVAR(rightTabFocus) = false;
|
||||
GVAR(rightTabLnBFocus) = false;
|
||||
GVAR(ignoreFirstSortPanelCall) = false;
|
||||
GVAR(refreshing) = false;
|
||||
|
||||
{
|
||||
private _panel = _display displayCtrl _x;
|
||||
|
@ -23,8 +23,9 @@ private _display = ctrlParent _control;
|
||||
private _item = [_control lbData _curSel, _control lnbData [_curSel, 0]] select (ctrlType _control == CT_LISTNBOX);
|
||||
|
||||
// When having chosen a new category, see if the current right panel can be kept open, otherwise take default
|
||||
private _selectCorrectPanelWeapon = [_display displayCtrl IDC_buttonOptic, _display displayCtrl GVAR(currentRightPanel)] select (!isNil QGVAR(currentRightPanel) && {GVAR(currentRightPanel) in [RIGHT_PANEL_ACC_IDCS, IDC_buttonCurrentMag, IDC_buttonCurrentMag2]});
|
||||
private _selectCorrectPanelContainer = [_display displayCtrl IDC_buttonMisc, _display displayCtrl GVAR(currentRightPanel)] select (!isNil QGVAR(currentRightPanel) && {GVAR(currentRightPanel) in [RIGHT_PANEL_ITEMS_IDCS]});
|
||||
private _currentRightPanel = _display displayCtrl GVAR(currentRightPanel);
|
||||
private _selectCorrectPanelWeapon = [_display displayCtrl IDC_buttonOptic, _currentRightPanel] select (!isNil QGVAR(currentRightPanel) && {GVAR(currentRightPanel) in [RIGHT_PANEL_ACC_IDCS, IDC_buttonCurrentMag, IDC_buttonCurrentMag2]});
|
||||
private _selectCorrectPanelContainer = [_display displayCtrl IDC_buttonMisc, _currentRightPanel] select (!isNil QGVAR(currentRightPanel) && {GVAR(currentRightPanel) in [RIGHT_PANEL_ITEMS_IDCS]});
|
||||
|
||||
// Remove all magazines from the current weapon that aren't compatible with the new weapon
|
||||
private _fnc_clearCurrentWeaponMags = {
|
||||
@ -115,7 +116,7 @@ switch (GVAR(currentLeftPanel)) do {
|
||||
|
||||
TOGGLE_RIGHT_PANEL_WEAPON
|
||||
|
||||
[_display, _selectCorrectPanelWeapon] call FUNC(fillRightPanel);
|
||||
[_display, _selectCorrectPanelWeapon, !GVAR(refreshing) && {_currentRightPanel isNotEqualTo _selectCorrectPanelWeapon}] call FUNC(fillRightPanel);
|
||||
};
|
||||
|
||||
// Make unit switch to new item
|
||||
@ -191,7 +192,7 @@ switch (GVAR(currentLeftPanel)) do {
|
||||
|
||||
TOGGLE_RIGHT_PANEL_WEAPON
|
||||
|
||||
[_display, _selectCorrectPanelWeapon] call FUNC(fillRightPanel);
|
||||
[_display, _selectCorrectPanelWeapon, !GVAR(refreshing) && {_currentRightPanel isNotEqualTo _selectCorrectPanelWeapon}] call FUNC(fillRightPanel);
|
||||
};
|
||||
|
||||
// Make unit switch to new item
|
||||
@ -273,7 +274,7 @@ switch (GVAR(currentLeftPanel)) do {
|
||||
_this call FUNC(fillRightPanel);
|
||||
}, [_display, _selectCorrectPanelWeapon]] call CBA_fnc_execNextFrame;
|
||||
} else {
|
||||
[_display, _selectCorrectPanelWeapon] call FUNC(fillRightPanel);
|
||||
[_display, _selectCorrectPanelWeapon, !GVAR(refreshing) && {_currentRightPanel isNotEqualTo _selectCorrectPanelWeapon}] call FUNC(fillRightPanel);
|
||||
};
|
||||
};
|
||||
|
||||
@ -347,7 +348,7 @@ switch (GVAR(currentLeftPanel)) do {
|
||||
|
||||
TOGGLE_RIGHT_PANEL_CONTAINER
|
||||
|
||||
[_display, _selectCorrectPanelContainer] call FUNC(fillRightPanel);
|
||||
[_display, _selectCorrectPanelContainer, !GVAR(refreshing) && {_currentRightPanel isNotEqualTo _selectCorrectPanelContainer}] call FUNC(fillRightPanel);
|
||||
};
|
||||
|
||||
// Make unit switch to new item
|
||||
@ -385,7 +386,7 @@ switch (GVAR(currentLeftPanel)) do {
|
||||
|
||||
TOGGLE_RIGHT_PANEL_CONTAINER
|
||||
|
||||
[_display, _selectCorrectPanelContainer] call FUNC(fillRightPanel);
|
||||
[_display, _selectCorrectPanelContainer, !GVAR(refreshing) && {_currentRightPanel isNotEqualTo _selectCorrectPanelContainer}] call FUNC(fillRightPanel);
|
||||
};
|
||||
|
||||
// Make unit switch to new item
|
||||
@ -423,7 +424,7 @@ switch (GVAR(currentLeftPanel)) do {
|
||||
|
||||
TOGGLE_RIGHT_PANEL_CONTAINER
|
||||
|
||||
[_display, _selectCorrectPanelContainer] call FUNC(fillRightPanel);
|
||||
[_display, _selectCorrectPanelContainer, !GVAR(refreshing) && {_currentRightPanel isNotEqualTo _selectCorrectPanelContainer}] call FUNC(fillRightPanel);
|
||||
};
|
||||
|
||||
// Make unit switch to new item
|
||||
@ -538,7 +539,7 @@ switch (GVAR(currentLeftPanel)) do {
|
||||
|
||||
TOGGLE_RIGHT_PANEL_WEAPON
|
||||
|
||||
[_display, _selectCorrectPanelWeapon] call FUNC(fillRightPanel);
|
||||
[_display, _selectCorrectPanelWeapon, !GVAR(refreshing) && {_currentRightPanel isNotEqualTo _selectCorrectPanelWeapon}] call FUNC(fillRightPanel);
|
||||
};
|
||||
|
||||
// Make unit switch to new item
|
||||
|
@ -7,6 +7,7 @@
|
||||
* Arguments:
|
||||
* 0: Update current and unique items lists <BOOL> (default: true)
|
||||
* 1: Update virtual items list <BOOL> (default: false)
|
||||
* 2: Use panel refresh animation <BOOL> (default: false)
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
@ -16,8 +17,7 @@
|
||||
*
|
||||
* Public: Yes
|
||||
*/
|
||||
params [["_updateItems", true, [true]], ["_updateVirtualItems", false, [false]]];
|
||||
|
||||
params [["_updateItems", true, [true]], ["_updateVirtualItems", false, [false]], ["_animate", false, [false]]];
|
||||
TRACE_2("",_updateItems,_updateVirtualItems);
|
||||
|
||||
// Don't execute in scheduled environment
|
||||
@ -36,6 +36,12 @@ if (_updateItems) then {
|
||||
};
|
||||
|
||||
private _virtualItems = GVAR(currentBox) getVariable QGVAR(virtualItems);
|
||||
|
||||
if (is3DEN) then {
|
||||
_virtualItems = uiNamespace getVariable QGVAR(configItems); // GVAR(currentBox) is nil in 3DEN
|
||||
_animate = true; // CBA frame functions are disabled during preInit
|
||||
};
|
||||
|
||||
if (isNil "_virtualItems") exitWith {
|
||||
[LLSTRING(noVirtualItems), false, 5, 1] call EFUNC(common,displayText);
|
||||
// Delay a frame in case this is running on display open
|
||||
@ -53,6 +59,11 @@ if (_updateVirtualItems) then {
|
||||
// Don't refresh left panel if in loadout tab
|
||||
if (!isNull findDisplay IDD_loadouts_display) exitWith {};
|
||||
|
||||
if (!_animate) then {
|
||||
GVAR(refreshing) = true;
|
||||
[{GVAR(refreshing) = false}, nil, 3] call CBA_fnc_execAfterNFrames;
|
||||
};
|
||||
|
||||
private _display = findDisplay IDD_ace_arsenal;
|
||||
|
||||
[_display, _display displayCtrl GVAR(currentLeftPanel)] call FUNC(fillLeftPanel);
|
||||
[_display, _display displayCtrl GVAR(currentLeftPanel), _animate] call FUNC(fillLeftPanel);
|
||||
|
@ -1602,6 +1602,7 @@
|
||||
<Key ID="STR_ACE_Arsenal_statIlluminators">
|
||||
<English>Illuminators</English>
|
||||
<French>Illuminateurs</French>
|
||||
<Korean>조명</Korean>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_defaultToFavoritesSetting">
|
||||
<English>Default to Favorites</English>
|
||||
@ -1643,5 +1644,8 @@
|
||||
<Korean>모든 아이템을 표시하거나 즐겨찾기를 표시할 때 전환합니다\nShift 키를 누른 상태에서 두 번 클릭하여 아이템을 추가하거나 제거합니다.</Korean>
|
||||
<French>Change entre l'affichage de tous les éléments ou de vos favoris.\nDouble-cliquez en maintenant la touche Maj enfoncée pour ajouter ou supprimer un élément.</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_buttonSearchTooltip">
|
||||
<English>Search\nCTRL + Click to enable live results</English>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
@ -4,12 +4,12 @@
|
||||
class GVAR(display) {
|
||||
idd = IDD_ace_arsenal;
|
||||
enableSimulation = 1;
|
||||
onLoad = QUOTE([ARR_3('onLoad', _this, QQGVAR(display))] call FUNC(onArsenalOpen));
|
||||
onUnload = QUOTE([ARR_3('onUnload', _this, QQGVAR(display))] call FUNC(onArsenalClose));
|
||||
onKeyDown = QUOTE([ARR_3('onKeyDown', _this, QQGVAR(display))] call FUNC(onKeyDown));
|
||||
onLoad = QUOTE([ARR_3('onLoad',_this,QQGVAR(display))] call FUNC(onArsenalOpen));
|
||||
onUnload = QUOTE([ARR_3('onUnload',_this,QQGVAR(display))] call FUNC(onArsenalClose));
|
||||
onKeyDown = QUOTE([ARR_3('onKeyDown',_this,QQGVAR(display))] call FUNC(onKeyDown));
|
||||
onKeyUp = QUOTE(GVAR(shiftState) = _this select 2);
|
||||
onMouseButtonDown = QUOTE([ARR_3('onMouseButtonDown', _this, QQGVAR(display))] call FUNC(onMouseButtonDown));
|
||||
onMouseButtonUp = QUOTE([ARR_3('onMouseButtonUp', _this, QQGVAR(display))] call FUNC(onMouseButtonUp));
|
||||
onMouseButtonDown = QUOTE([ARR_3('onMouseButtonDown',_this,QQGVAR(display))] call FUNC(onMouseButtonDown));
|
||||
onMouseButtonUp = QUOTE([ARR_3('onMouseButtonUp',_this,QQGVAR(display))] call FUNC(onMouseButtonUp));
|
||||
icon = "\A3\Ui_f\data\Logos\a_64_ca.paa";
|
||||
logo = "\A3\Ui_f\data\Logos\arsenal_1024_ca.paa";
|
||||
class ControlsBackground {
|
||||
@ -28,9 +28,9 @@ class GVAR(display) {
|
||||
class mouseArea: ctrlStatic {
|
||||
idc = IDC_mouseArea;
|
||||
style = 16;
|
||||
onMouseMoving = QUOTE([ARR_3('onMouseMoving', _this, GVAR(display))] call FUNC(handleMouse));
|
||||
onMouseHolding = QUOTE([ARR_3('onMouseHolding', _this, GVAR(display))] call FUNC(handleMouse));
|
||||
onMouseZChanged = QUOTE([ARR_3('onMouseZChanged', _this, GVAR(display))] call FUNC(handleScrollWheel));
|
||||
onMouseMoving = QUOTE([ARR_3('onMouseMoving',_this,GVAR(display))] call FUNC(handleMouse));
|
||||
onMouseHolding = QUOTE([ARR_3('onMouseHolding',_this,GVAR(display))] call FUNC(handleMouse));
|
||||
onMouseZChanged = QUOTE([ARR_3('onMouseZChanged',_this,GVAR(display))] call FUNC(handleScrollWheel));
|
||||
x = QUOTE(safezoneX);
|
||||
y = QUOTE(safezoneY);
|
||||
w = QUOTE(safezoneW);
|
||||
@ -42,7 +42,7 @@ class GVAR(display) {
|
||||
idc = IDC_arrowMinus;
|
||||
text = "-";
|
||||
colorBackground[] = {0,0,0,0.8};
|
||||
onButtonClick = QUOTE([ARR_2(ctrlParent (_this select 0), -1)] call FUNC(buttonCargo));
|
||||
onButtonClick = QUOTE([ARR_2(ctrlParent (_this select 0),-1)] call FUNC(buttonCargo));
|
||||
fade = 1;
|
||||
enable = 0;
|
||||
x = 0.5;
|
||||
@ -53,7 +53,7 @@ class GVAR(display) {
|
||||
};
|
||||
class ArrowRight: ArrowLeft {
|
||||
idc = IDC_arrowPlus;
|
||||
onButtonClick = QUOTE([ARR_2(ctrlParent (_this select 0), 1)] call FUNC(buttonCargo));
|
||||
onButtonClick = QUOTE([ARR_2(ctrlParent (_this select 0),1)] call FUNC(buttonCargo));
|
||||
text = "+";
|
||||
};
|
||||
class blockLeftFrame: RscFrame {
|
||||
@ -205,7 +205,7 @@ class GVAR(display) {
|
||||
x = QUOTE(5 * WIDTH_GAP + 4 * WIDTH_SINGLE);
|
||||
text = "";
|
||||
tooltip = CSTRING(buttonFavoritesTooltip);
|
||||
onButtonClick = QUOTE([ARR_2(ctrlParent (_this select 0), (_this select 0))] call FUNC(buttonFavorites));
|
||||
onButtonClick = QUOTE([ARR_2(ctrlParent (_this select 0),(_this select 0))] call FUNC(buttonFavorites));
|
||||
};
|
||||
class buttonClose: ctrlButtonOK {
|
||||
idc = IDC_menuBarClose;
|
||||
@ -417,7 +417,7 @@ class GVAR(display) {
|
||||
text = "<";
|
||||
colorBackground[] = {0,0,0,0};
|
||||
colorBackgroundDisabled[] = {0,0,0,0};
|
||||
onButtonClick = QUOTE([ARR_2(QQGVAR(statsChangePage),[ARR_3(ctrlParent (_this select 0), _this select 0, false)])] call CBA_fnc_localEvent);
|
||||
onButtonClick = QUOTE([ARR_2(QQGVAR(statsChangePage),[ARR_3(ctrlParent (_this select 0),_this select 0,false)])] call CBA_fnc_localEvent);
|
||||
x = QUOTE((0.5 - WIDTH_TOTAL / 2) + WIDTH_GAP);
|
||||
y = QUOTE(safezoneY + 1.8 * GRID_H);
|
||||
w = QUOTE(5 * GRID_W);
|
||||
@ -427,7 +427,7 @@ class GVAR(display) {
|
||||
class statsNextPage: statsPreviousPage {
|
||||
idc = IDC_statsNextPage;
|
||||
text = ">";
|
||||
onButtonClick = QUOTE([ARR_2(QQGVAR(statsChangePage),[ARR_3(ctrlParent (_this select 0), _this select 0, true)])] call CBA_fnc_localEvent);
|
||||
onButtonClick = QUOTE([ARR_2(QQGVAR(statsChangePage),[ARR_3(ctrlParent (_this select 0),_this select 0,true)])] call CBA_fnc_localEvent);
|
||||
x = QUOTE((0.5 - WIDTH_TOTAL / 2) + WIDTH_GAP + 42 * GRID_W);
|
||||
};
|
||||
class statsCurrentPage: RscText {
|
||||
@ -524,7 +524,7 @@ class GVAR(display) {
|
||||
text="<";
|
||||
colorBackground[]={0,0,0,0};
|
||||
colorBackgroundDisabled[]= {0,0,0,0};
|
||||
onButtonClick = QUOTE([ARR_2(QQGVAR(actionsChangePage),[ARR_3(ctrlParent (_this select 0), _this select 0, false)])] call CBA_fnc_localEvent);
|
||||
onButtonClick = QUOTE([ARR_2(QQGVAR(actionsChangePage),[ARR_3(ctrlParent (_this select 0),_this select 0,false)])] call CBA_fnc_localEvent);
|
||||
x = QUOTE(0);
|
||||
y = QUOTE(0);
|
||||
w = QUOTE(5 * GRID_W);
|
||||
@ -534,7 +534,7 @@ class GVAR(display) {
|
||||
class actionsNextPage: actionsPreviousPage {
|
||||
idc = IDC_actionsNextPage;
|
||||
text = ">";
|
||||
onButtonClick = QUOTE([ARR_2(QQGVAR(actionsChangePage),[ARR_3(ctrlParent (_this select 0), _this select 0, true)])] call CBA_fnc_localEvent);
|
||||
onButtonClick = QUOTE([ARR_2(QQGVAR(actionsChangePage),[ARR_3(ctrlParent (_this select 0),_this select 0,true)])] call CBA_fnc_localEvent);
|
||||
x = QUOTE(42 * GRID_W);
|
||||
};
|
||||
class actionsCurrentPage: RscText {
|
||||
@ -637,7 +637,8 @@ class GVAR(display) {
|
||||
idc = IDC_leftSearchbar;
|
||||
onSetFocus = QUOTE(GVAR(leftSearchbarFocus) = true);
|
||||
onKillFocus = QUOTE(GVAR(leftSearchbarFocus) = false);
|
||||
onMouseButtonClick = QUOTE([ARR_3(ctrlParent (_this select 0), _this select 0, _this select 1)] call FUNC(clearSearchbar));
|
||||
onMouseButtonClick = QUOTE([ARR_3(ctrlParent (_this select 0),_this select 0,_this select 1)] call FUNC(clearSearchbar));
|
||||
onEditChanged = QUOTE(call FUNC(handleSearchInputChanged));
|
||||
x = QUOTE(safezoneX + 13 * GRID_W);
|
||||
y = QUOTE(safezoneY + 1.8 * GRID_H);
|
||||
w = QUOTE(74 * GRID_W);
|
||||
@ -647,8 +648,10 @@ class GVAR(display) {
|
||||
class leftSearchbarButton: ctrlButtonPicture {
|
||||
idc = IDC_leftSearchbarButton;
|
||||
text = "\a3\Ui_f\data\GUI\RscCommon\RscButtonSearch\search_start_ca.paa";
|
||||
tooltip = CSTRING(buttonSearchTooltip);
|
||||
colorBackground[] = {0,0,0,0.5};
|
||||
onButtonClick = QUOTE([ARR_2(ctrlParent (_this select 0), ctrlParent (_this select 0) displayCtrl IDC_leftSearchbar)] call FUNC(handleSearchbar));
|
||||
onButtonClick = QUOTE([ARR_2(ctrlParent (_this select 0),ctrlParent (_this select 0) displayCtrl IDC_leftSearchbar)] call FUNC(handleSearchbar));
|
||||
onMouseButtonDown = QUOTE(call FUNC(handleSearchModeToggle));
|
||||
x = QUOTE(safezoneX + 87 * GRID_W);
|
||||
y = QUOTE(safezoneY + 1.8 * GRID_H);
|
||||
w = QUOTE(6 * GRID_W);
|
||||
@ -662,7 +665,7 @@ class GVAR(display) {
|
||||
};
|
||||
class rightSearchbarButton: leftSearchbarButton {
|
||||
idc = IDC_rightSearchbarButton;
|
||||
onButtonClick = QUOTE([ARR_2(ctrlParent (_this select 0), ctrlParent (_this select 0) displayCtrl IDC_rightSearchbar)] call FUNC(handleSearchbar));
|
||||
onButtonClick = QUOTE([ARR_2(ctrlParent (_this select 0),ctrlParent (_this select 0) displayCtrl IDC_rightSearchbar)] call FUNC(handleSearchbar));
|
||||
x = QUOTE(safezoneX + safezoneW - 93 * GRID_W);
|
||||
};
|
||||
class tabLeft: RscControlsGroupNoScrollbars {
|
||||
@ -686,7 +689,7 @@ class GVAR(display) {
|
||||
idc = IDC_buttonPrimaryWeapon;
|
||||
text = "\A3\Ui_f\data\GUI\Rsc\RscDisplayArsenal\PrimaryWeapon_ca.paa";
|
||||
tooltip = "$STR_A3_RscDisplayArsenal_tab_PrimaryWeapon";
|
||||
onButtonClick = QUOTE([ARR_2(ctrlParent (_this select 0), _this select 0)] call FUNC(fillLeftPanel));
|
||||
onButtonClick = QUOTE([ARR_2(ctrlParent (_this select 0),_this select 0)] call FUNC(fillLeftPanel));
|
||||
colorBackground[] = {0,0,0,0.5};
|
||||
x = QUOTE(0 * GRID_W);
|
||||
y = QUOTE(0 * GRID_H);
|
||||
@ -879,7 +882,7 @@ class GVAR(display) {
|
||||
idc = IDC_buttonOptic;
|
||||
tooltip = "$STR_A3_RscDisplayArsenal_tab_ItemOptic";
|
||||
text = "\A3\Ui_f\data\GUI\Rsc\RscDisplayArsenal\ItemOptic_ca.paa";
|
||||
onButtonClick = QUOTE([ARR_2(ctrlParent (_this select 0), _this select 0)] call FUNC(fillRightPanel));
|
||||
onButtonClick = QUOTE([ARR_2(ctrlParent (_this select 0),_this select 0)] call FUNC(fillRightPanel));
|
||||
colorBackground[] = {0,0,0,0.5};
|
||||
x = QUOTE(safezoneW + safezoneX - 10 * GRID_W);
|
||||
y = QUOTE(safezoneY + 8 * GRID_H);
|
||||
@ -1005,8 +1008,8 @@ class GVAR(display) {
|
||||
|
||||
class GVAR(loadoutsDisplay) {
|
||||
idd = IDD_loadouts_display;
|
||||
onLoad = QUOTE([ARR_3('onLoad', _this, QQGVAR(loadoutsDisplay))] call FUNC(onLoadoutsOpen));
|
||||
onUnload = QUOTE([ARR_3('onUnload', _this, QQGVAR(loadoutsDisplay))] call FUNC(onLoadoutsClose));
|
||||
onLoad = QUOTE([ARR_3('onLoad',_this,QQGVAR(loadoutsDisplay))] call FUNC(onLoadoutsOpen));
|
||||
onUnload = QUOTE([ARR_3('onUnload',_this,QQGVAR(loadoutsDisplay))] call FUNC(onLoadoutsClose));
|
||||
class controls {
|
||||
class centerBox: ctrlControlsGroupNoScrollbars {
|
||||
idc = IDC_centerBox;
|
||||
@ -1048,8 +1051,8 @@ class GVAR(loadoutsDisplay) {
|
||||
disableOverflow = 1;
|
||||
onSetFocus = QUOTE(GVAR(loadoutsPanelFocus) = true);
|
||||
onKillFocus = QUOTE(GVAR(loadoutsPanelFocus) = false);
|
||||
onLBSelChanged = QUOTE([ARR_3(ctrlParent (_this select 0), _this select 0, _this select 1)] call FUNC(onSelChangedLoadouts));
|
||||
onLBDblClick = QUOTE([ARR_2(ctrlParent (_this select 0), (ctrlParent (_this select 0)) displayCtrl IDC_buttonLoad)] call FUNC(buttonLoadoutsLoad));
|
||||
onLBSelChanged = QUOTE([ARR_3(ctrlParent (_this select 0),_this select 0,_this select 1)] call FUNC(onSelChangedLoadouts));
|
||||
onLBDblClick = QUOTE([ARR_2(ctrlParent (_this select 0),(ctrlParent (_this select 0)) displayCtrl IDC_buttonLoad)] call FUNC(buttonLoadoutsLoad));
|
||||
x = QUOTE(0);
|
||||
y = QUOTE(5 * GRID_H);
|
||||
w = QUOTE(160 * GRID_W);
|
||||
@ -1078,7 +1081,7 @@ class GVAR(loadoutsDisplay) {
|
||||
idc = IDC_loadoutsSearchbar;
|
||||
onSetFocus = QUOTE(GVAR(loadoutsSearchbarFocus) = true);
|
||||
onKillFocus = QUOTE(GVAR(loadoutsSearchbarFocus) = false);
|
||||
onMouseButtonClick = QUOTE([ARR_3(ctrlParent (_this select 0), _this select 0, _this select 1)] call FUNC(clearSearchbar));
|
||||
onMouseButtonClick = QUOTE([ARR_3(ctrlParent (_this select 0),_this select 0,_this select 1)] call FUNC(clearSearchbar));
|
||||
x = QUOTE(83 * GRID_W);
|
||||
y = QUOTE(safezoneH - (51 * GRID_H));
|
||||
w = QUOTE(72 * GRID_W);
|
||||
@ -1089,7 +1092,7 @@ class GVAR(loadoutsDisplay) {
|
||||
idc = -1;
|
||||
text = "\a3\Ui_f\data\GUI\RscCommon\RscButtonSearch\search_start_ca.paa";
|
||||
colorBackground[] = {0,0,0,0.5};
|
||||
onButtonClick = QUOTE([ARR_2(ctrlParent (_this select 0), ctrlParent (_this select 0) displayCtrl IDC_loadoutsSearchbar)] call FUNC(handleLoadoutsSearchbar));
|
||||
onButtonClick = QUOTE([ARR_2(ctrlParent (_this select 0),ctrlParent (_this select 0) displayCtrl IDC_loadoutsSearchbar)] call FUNC(handleLoadoutsSearchbar));
|
||||
x = QUOTE(155 * GRID_W);
|
||||
y = QUOTE(safezoneH - (51 * GRID_H));
|
||||
w = QUOTE(5 * GRID_W);
|
||||
@ -1104,7 +1107,7 @@ class GVAR(loadoutsDisplay) {
|
||||
text = CSTRING(buttonSaveText);
|
||||
tooltip = CSTRING(buttonSaveTooltip);
|
||||
sizeEx = QUOTE(5 * GRID_H);
|
||||
onButtonClick = QUOTE([ARR_2(ctrlParent (_this select 0), _this select 0)] call FUNC(buttonLoadoutsSave));
|
||||
onButtonClick = QUOTE([ARR_2(ctrlParent (_this select 0),_this select 0)] call FUNC(buttonLoadoutsSave));
|
||||
colorBackground[] = {0,0,0,0.8};
|
||||
};
|
||||
class buttonRename: buttonSave {
|
||||
@ -1112,21 +1115,21 @@ class GVAR(loadoutsDisplay) {
|
||||
x = QUOTE(32.5 * GRID_W);
|
||||
text = ECSTRING(common,rename);
|
||||
tooltip = CSTRING(buttonRenameTooltip);
|
||||
onButtonClick = QUOTE([ARR_2(ctrlParent (_this select 0), _this select 0)] call FUNC(buttonLoadoutsRename));
|
||||
onButtonClick = QUOTE([ARR_2(ctrlParent (_this select 0),_this select 0)] call FUNC(buttonLoadoutsRename));
|
||||
};
|
||||
class buttonLoad: buttonSave {
|
||||
idc = IDC_buttonLoad;
|
||||
x = QUOTE(65 * GRID_W);
|
||||
text = CSTRING(buttonLoadText);
|
||||
tooltip = CSTRING(buttonLoadTooltip);
|
||||
onButtonClick = QUOTE([ARR_2(ctrlParent (_this select 0), _this select 0)] call FUNC(buttonLoadoutsLoad));
|
||||
onButtonClick = QUOTE([ARR_2(ctrlParent (_this select 0),_this select 0)] call FUNC(buttonLoadoutsLoad));
|
||||
};
|
||||
class buttonShare: buttonSave {
|
||||
idc = IDC_buttonShare;
|
||||
x = QUOTE(97.5 * GRID_W);
|
||||
text = CSTRING(buttonSharePrivateText);
|
||||
tooltip = CSTRING(buttonShareTooltip);
|
||||
onButtonClick = QUOTE([ARR_2(ctrlParent (_this select 0), _this select 0)] call FUNC(buttonLoadoutsShare));
|
||||
onButtonClick = QUOTE([ARR_2(ctrlParent (_this select 0),_this select 0)] call FUNC(buttonLoadoutsShare));
|
||||
};
|
||||
class buttonDelete: buttonSave {
|
||||
idc = IDC_buttonDelete;
|
||||
@ -1134,7 +1137,7 @@ class GVAR(loadoutsDisplay) {
|
||||
text = CSTRING(buttonDeleteText);
|
||||
tooltip = CSTRING(buttonDeleteTooltip);
|
||||
colorBackgroundActive[] = {0.5,0,0,1};
|
||||
onButtonClick = QUOTE([ARR_2(ctrlParent (_this select 0), _this select 0)] call FUNC(buttonLoadoutsDelete));
|
||||
onButtonClick = QUOTE([ARR_2(ctrlParent (_this select 0),_this select 0)] call FUNC(buttonLoadoutsDelete));
|
||||
};
|
||||
};
|
||||
};
|
||||
@ -1174,7 +1177,7 @@ class GVAR(loadoutsDisplay) {
|
||||
sizeEx = QUOTE(5 * GRID_H);
|
||||
text = CSTRING(tabMyLoadoutsText);
|
||||
tooltip = CSTRING(tabMyLoadoutsTooltip);
|
||||
onButtonClick = QUOTE([ARR_2(ctrlParent (_this select 0), _this select 0)] call FUNC(loadoutsChangeTab));
|
||||
onButtonClick = QUOTE([ARR_2(ctrlParent (_this select 0),_this select 0)] call FUNC(loadoutsChangeTab));
|
||||
};
|
||||
class buttonDefaultLoadoutsBackground: buttonMyLoadoutsBackground {
|
||||
idc = IDC_buttonDefaultLoadoutsBackground;
|
||||
|
@ -6,7 +6,7 @@ class GVAR(customArsenalButton_Button): RscButtonArsenal {
|
||||
|
||||
text = QPATHTOF(data\iconCustom.paa);
|
||||
tooltip = "";
|
||||
onButtonClick = QUOTE([ARR_2(ctrlParent (_this select 0), _this select 0)] call FUNC(fillRightPanel));
|
||||
onButtonClick = QUOTE([ARR_2(ctrlParent (_this select 0),_this select 0)] call FUNC(fillRightPanel));
|
||||
colorBackground[] = {0,0,0,0.5};
|
||||
};
|
||||
|
||||
|
@ -13,7 +13,7 @@
|
||||
class GVAR(DetachVehicle) { \
|
||||
displayName = CSTRING(Detach); \
|
||||
condition = QUOTE(_this call FUNC(canDetach)); \
|
||||
statement = QUOTE(_this call FUNC(detach) ); \
|
||||
statement = QUOTE(_this call FUNC(detach)); \
|
||||
exceptions[] = {"isNotSwimming"}; \
|
||||
showDisabled = 0; \
|
||||
icon = QPATHTOF(UI\detach_ca.paa); \
|
||||
|
@ -5,7 +5,7 @@ class RscTitles {
|
||||
duration = 9999999;
|
||||
fadein = 0;
|
||||
fadeout = 0;
|
||||
onLoad = QUOTE(uiNamespace setVariable [ARR_2(QQGVAR(virtualAmmoDisplay), _this select 0)]);
|
||||
onLoad = QUOTE(uiNamespace setVariable [ARR_2(QQGVAR(virtualAmmoDisplay),_this select 0)]);
|
||||
class controls {};
|
||||
class objects {
|
||||
class TheObject {
|
||||
|
@ -26,10 +26,12 @@ if ((_itemClassname == "") || {(!_silentScripted) && {!(_this call FUNC(canAttac
|
||||
|
||||
private _itemVehClass = getText (configFile >> "CfgWeapons" >> _itemClassname >> "ACE_Attachable");
|
||||
private _onAttachText = getText (configFile >> "CfgWeapons" >> _itemClassname >> "displayName");
|
||||
private _itemModelOrientation = getArray (configFile >> "CfgWeapons" >> _itemClassname >> QGVAR(orientation));
|
||||
|
||||
if (_itemVehClass == "") then {
|
||||
_itemVehClass = getText (configFile >> "CfgMagazines" >> _itemClassname >> "ACE_Attachable");
|
||||
_onAttachText = getText (configFile >> "CfgMagazines" >> _itemClassname >> "displayName");
|
||||
_itemModelOrientation = getArray (configFile >> "CfgWeapons" >> _itemClassname >> QGVAR(orientation));
|
||||
};
|
||||
|
||||
if (_itemVehClass == "") exitWith {ERROR("no ACE_Attachable for Item");};
|
||||
@ -68,7 +70,7 @@ if (_unit == _attachToVehicle) then { //Self Attachment
|
||||
|
||||
[{
|
||||
params ["_args","_idPFH"];
|
||||
_args params ["_unit","_attachToVehicle","_itemClassname","_itemVehClass","_onAttachText","_actionID"];
|
||||
_args params ["_unit","_attachToVehicle","_itemClassname","_itemVehClass","_onAttachText","_actionID", "_itemModelOrientation"];
|
||||
|
||||
private _virtualPosASL = (eyePos _unit) vectorAdd (positionCameraToWorld [0,0,0.6]) vectorDiff (positionCameraToWorld [0,0,0]);
|
||||
if (cameraView == "EXTERNAL") then {
|
||||
@ -95,7 +97,7 @@ if (_unit == _attachToVehicle) then { //Self Attachment
|
||||
(QGVAR(virtualAmmo) call BIS_fnc_rscLayer) cutText ["", "PLAIN"];
|
||||
|
||||
if (GVAR(placeAction) == PLACE_APPROVE) then {
|
||||
[_unit, _attachToVehicle, _itemClassname, _itemVehClass, _onAttachText, _virtualPos] call FUNC(placeApprove);
|
||||
[_unit, _attachToVehicle, _itemClassname, _itemVehClass, _onAttachText, _virtualPos, _itemModelOrientation] call FUNC(placeApprove);
|
||||
};
|
||||
} else {
|
||||
//Show the virtual object:
|
||||
@ -112,9 +114,13 @@ if (_unit == _attachToVehicle) then { //Self Attachment
|
||||
((uiNamespace getVariable [QGVAR(virtualAmmoDisplay), displayNull]) displayCtrl 800851) ctrlSetPosition _screenPos;
|
||||
private _dir = (positionCameraToWorld [0,0,1]) vectorFromTo (positionCameraToWorld [0,0,0]);
|
||||
private _angle = asin (_dir select 2);
|
||||
private _up = [0, cos _angle, sin _angle];
|
||||
((uiNamespace getVariable [QGVAR(virtualAmmoDisplay), displayNull]) displayCtrl 800851) ctrlSetModelDirAndUp [[1,0,0], _up];
|
||||
|
||||
// Tranform yaw/roll angle to vector, defaults are pre-#9623 behavior
|
||||
_itemModelOrientation params [["_roll", 0], ["_yaw", 90]];
|
||||
private _dirAndUp = [[[0,1,0], [0,0,1]], _yaw, 0, _roll] call BIS_fnc_transformVectorDirAndUp;
|
||||
private _dirAndUp = [_dirAndUp, 0, _angle, 0] call BIS_fnc_transformVectorDirAndUp;
|
||||
((uiNamespace getVariable [QGVAR(virtualAmmoDisplay), displayNull]) displayCtrl 800851) ctrlSetModelDirAndUp _dirAndUp;
|
||||
};
|
||||
};
|
||||
}, 0, [_unit, _attachToVehicle, _itemClassname, _itemVehClass, _onAttachText, _actionID]] call CBA_fnc_addPerFrameHandler;
|
||||
}, 0, [_unit, _attachToVehicle, _itemClassname, _itemVehClass, _onAttachText, _actionID, _itemModelOrientation]] call CBA_fnc_addPerFrameHandler;
|
||||
};
|
||||
|
@ -15,17 +15,18 @@
|
||||
* 3: Light Vehicle Classname <STRING>
|
||||
* 4: On Attach Text <STRING>
|
||||
* 5: Starting Pos of dummy item <ARRAY>
|
||||
* 5: Orientation of model <ARRAY>
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* No
|
||||
* None
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
params ["_unit", "_attachToVehicle", "_itemClassname", "_itemVehClass", "_onAttachText", "_startingPosition"];
|
||||
params ["_unit", "_attachToVehicle", "_itemClassname", "_itemVehClass", "_onAttachText", "_startingPosition", "_itemModelOrientation"];
|
||||
TRACE_6("params",_unit,_attachToVehicle,_itemClassname,_itemVehClass,_onAttachText,_startingPosition);
|
||||
|
||||
private _startingOffset = _attachToVehicle worldToModel _startingPosition;
|
||||
@ -93,6 +94,19 @@ _endPosTestOffset set [2, (_startingOffset select 2)];
|
||||
private _attachedObject = _itemVehClass createVehicle (getPos _unit);
|
||||
_attachedObject attachTo [_attachToVehicle, _endPosTestOffset];
|
||||
|
||||
// Get wanted orientation if any is set
|
||||
_itemModelOrientation params [["_roll", 0], ["_yaw", 90]];
|
||||
private _dirAndUp = [[[0,1,0],[0,0,1]], -_yaw, 0, _roll] call BIS_fnc_transformVectorDirAndUp;
|
||||
|
||||
// Transform dir and up vector from player model to world, then to model-space of _attachToVehicle
|
||||
private _dir = _unit vectorModelToWorldVisual _dirAndUp#0;
|
||||
_dir = _attachToVehicle vectorWorldToModelVisual _dir;
|
||||
|
||||
private _up = _unit vectorModelToWorldVisual _dirAndUp#1;
|
||||
_up = _attachToVehicle vectorWorldToModelVisual _up;
|
||||
|
||||
_attachedObject setVectorDirAndUp [_dir, _up];
|
||||
|
||||
//Remove Item from inventory
|
||||
_unit removeItem _itemClassname;
|
||||
|
||||
|
@ -6,7 +6,7 @@ class EGVAR(arsenal,stats) {
|
||||
stats[] = {"ACE_barrelTwist"};
|
||||
displayName= CSTRING(statBarrelTwist);
|
||||
showText = 1;
|
||||
textStatement = QUOTE(params [ARR_2('_stat', '_config')]; private _barrelTwist = getNumber (_config >> _stat select 0); format [ARR_3('%1mm (%2in)',_barrelTwist toFixed 0, (_barrelTwist / 25.4) toFixed 1)]);
|
||||
textStatement = QUOTE(params [ARR_2('_stat','_config')]; private _barrelTwist = getNumber (_config >> _stat select 0); format [ARR_3('%1mm (%2in)',_barrelTwist toFixed 0,(_barrelTwist / 25.4) toFixed 1)]);
|
||||
tabs[] = {{0,1}, {}};
|
||||
};
|
||||
class ACE_barrelLength: statBase {
|
||||
@ -15,7 +15,7 @@ class EGVAR(arsenal,stats) {
|
||||
stats[] = {"ACE_barrelLength"};
|
||||
displayName = CSTRING(statBarrelLength);
|
||||
showText = 1;
|
||||
textStatement = QUOTE(params [ARR_2('_stat', '_config')]; private _barrelLength = getNumber (_config >> _stat select 0); format [ARR_3('%1mm (%2in)',_barrelLength toFixed 0, (_barrelLength / 25.4) toFixed 1)]);
|
||||
textStatement = QUOTE(params [ARR_2('_stat','_config')]; private _barrelLength = getNumber (_config >> _stat select 0); format [ARR_3('%1mm (%2in)',_barrelLength toFixed 0,(_barrelLength / 25.4) toFixed 1)]);
|
||||
tabs[] = {{0,1}, {}};
|
||||
};
|
||||
class ACE_ammo: statBase {
|
||||
@ -25,7 +25,7 @@ class EGVAR(arsenal,stats) {
|
||||
displayName = "$STR_dn_ammo";
|
||||
showText = 1;
|
||||
condition = QUOTE(getText (_this select 1 >> _this select 0 select 0) isNotEqualTo '');
|
||||
textStatement = QUOTE(params [ARR_2('_stat', '_config')]; private _ammoDisplayName = getText (configFile >> 'CfgAmmo' >> (getText (_config >> 'ammo')) >> _stat select 1); [ARR_2(_ammoDisplayName, getText (_config >> _stat select 0))] select (_ammoDisplayName == ''));
|
||||
textStatement = QUOTE(params [ARR_2('_stat','_config')]; private _ammoDisplayName = getText (configFile >> 'CfgAmmo' >> (getText (_config >> 'ammo')) >> _stat select 1); [ARR_2(_ammoDisplayName,getText (_config >> _stat select 0))] select (_ammoDisplayName == ''));
|
||||
tabs[] = {{}, {4}};
|
||||
};
|
||||
class ACE_ballisticCoef: statBase {
|
||||
@ -34,8 +34,8 @@ class EGVAR(arsenal,stats) {
|
||||
stats[] = {"ACE_dragModel","ACE_ballisticCoefficients", "ACE_standardAtmosphere"};
|
||||
displayName= CSTRING(statBallisticCoef);
|
||||
showText= 1;
|
||||
textStatement = QUOTE(params[ARR_2('_stat', '_config')]; private _ammoCfg = (configFile >> 'CfgAmmo' >> (getText (_config >> 'ammo'))); private _ballisticCoef = getArray (_ammoCfg >> _stat select 1); _ballisticCoef sort false; format [ARR_4('%1 G%2 (%3)', _ballisticCoef select 0 ,getNumber (_ammoCfg >> _stat select 0), getText (_ammoCfg >> _stat select 2))]);
|
||||
condition = QUOTE(params[ARR_2('_stat', '_config')]; private _ammoCfg = (configFile >> 'CfgAmmo' >> (getText (_config >> 'ammo'))); (getArray (_ammoCfg >> _stat select 1) isNotEqualTo []));
|
||||
textStatement = QUOTE(params[ARR_2('_stat','_config')]; private _ammoCfg = (configFile >> 'CfgAmmo' >> (getText (_config >> 'ammo'))); private _ballisticCoef = getArray (_ammoCfg >> _stat select 1); _ballisticCoef sort false; format [ARR_4('%1 G%2 (%3)',_ballisticCoef select 0,getNumber (_ammoCfg >> _stat select 0),getText (_ammoCfg >> _stat select 2))]);
|
||||
condition = QUOTE(params[ARR_2('_stat','_config')]; private _ammoCfg = (configFile >> 'CfgAmmo' >> (getText (_config >> 'ammo'))); (getArray (_ammoCfg >> _stat select 1) isNotEqualTo []));
|
||||
tabs[] ={{}, {4}};
|
||||
};
|
||||
class ACE_bulletMass: statBase {
|
||||
@ -44,8 +44,8 @@ class EGVAR(arsenal,stats) {
|
||||
stats[] = {"ACE_bulletMass"};
|
||||
displayName = CSTRING(statBulletMass);
|
||||
showText = 1;
|
||||
textStatement = QUOTE(params[ARR_2('_stat', '_config')]; private _ammoWeight = getNumber (configFile >> 'CfgAmmo' >> (getText (_config >> 'ammo')) >> _stat select 0); format [ARR_3('%1g (%2gr)', _ammoWeight toFixed 1, (_ammoWeight * 15.43) toFixed 1)]);
|
||||
condition = QUOTE(params[ARR_2('_stat', '_config')]; getNumber (configFile >> 'CfgAmmo' >> (getText (_config >> 'ammo')) >> _stat select 0) > 0);
|
||||
textStatement = QUOTE(params[ARR_2('_stat','_config')]; private _ammoWeight = getNumber (configFile >> 'CfgAmmo' >> (getText (_config >> 'ammo')) >> _stat select 0); format [ARR_3('%1g (%2gr)',_ammoWeight toFixed 1,(_ammoWeight * 15.43) toFixed 1)]);
|
||||
condition = QUOTE(params[ARR_2('_stat','_config')]; getNumber (configFile >> 'CfgAmmo' >> (getText (_config >> 'ammo')) >> _stat select 0) > 0);
|
||||
tabs[] = {{}, {4}};
|
||||
};
|
||||
class ACE_magMuzzleVelocity: statBase {
|
||||
@ -54,7 +54,7 @@ class EGVAR(arsenal,stats) {
|
||||
stats[] = {"initSpeed", "ammo"};
|
||||
displayName= CSTRING(statMuzzleVelocity);
|
||||
showText= 1;
|
||||
textStatement = QUOTE([ARR_2(_this select 0, _this select 1)] call FUNC(statTextStatement_magazineMuzzleVelocity));
|
||||
textStatement = QUOTE([ARR_2(_this select 0,_this select 1)] call FUNC(statTextStatement_magazineMuzzleVelocity));
|
||||
condition = QUOTE(getText (_this select 1 >> _this select 0 select 1) isNotEqualTo '' && {getNumber (_this select 1 >> (_this select 0) select 0) > 0});
|
||||
tabs[] = {{}, {4}};
|
||||
};
|
||||
@ -64,7 +64,7 @@ class EGVAR(arsenal,stats) {
|
||||
stats[] = {"initSpeed"};
|
||||
displayName= CSTRING(statMuzzleVelocity);
|
||||
showText = 1;
|
||||
textStatement = QUOTE([ARR_2(_this select 0, _this select 1)] call FUNC(statTextStatement_weaponMuzzleVelocity));
|
||||
textStatement = QUOTE([ARR_2(_this select 0,_this select 1)] call FUNC(statTextStatement_weaponMuzzleVelocity));
|
||||
tabs[] = {{0,1}, {}};
|
||||
};
|
||||
class ACE_magazineAiUsage: statBase {
|
||||
@ -74,7 +74,7 @@ class EGVAR(arsenal,stats) {
|
||||
displayName= CSTRING(ammoUsage_ai);
|
||||
showText= 1;
|
||||
textStatement = QUOTE(call FUNC(statTextStatement_magazineAiUsage));
|
||||
condition = QUOTE(is3DEN || {!isNull getAssignedCuratorLogic player} || {missionNamespace getVariable [ARR_2(QQGVAR(showAIMagazineUse), missionName == 'Arsenal')]});
|
||||
condition = QUOTE(is3DEN || {!isNull getAssignedCuratorLogic player} || {missionNamespace getVariable [ARR_2(QQGVAR(showAIMagazineUse),missionName == 'Arsenal')]});
|
||||
tabs[] = {{}, {4}};
|
||||
};
|
||||
};
|
||||
|
@ -3517,6 +3517,7 @@
|
||||
<Polish>Wykorzystanie przez AI</Polish>
|
||||
<German>KI Verwendet</German>
|
||||
<Korean>인공지능 사용</Korean>
|
||||
<French>Utilisation de l'IA</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Ballistics_ammoUsageShort_illumination">
|
||||
<English>Illum</English>
|
||||
@ -3524,6 +3525,7 @@
|
||||
<Polish>Flary</Polish>
|
||||
<German>Leuchtmittel</German>
|
||||
<Korean>조명탄</Korean>
|
||||
<French>Fusées éclairantes</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Ballistics_ammoUsageShort_concealment">
|
||||
<English>Smoke</English>
|
||||
@ -3531,6 +3533,7 @@
|
||||
<Polish>Granaty dymne</Polish>
|
||||
<German>Rauch</German>
|
||||
<Korean>연막탄</Korean>
|
||||
<French>Fumigènes</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Ballistics_ammoUsageShort_infantry">
|
||||
<English>Inf</English>
|
||||
@ -3538,6 +3541,7 @@
|
||||
<Polish>Piechota</Polish>
|
||||
<German>Infanterie</German>
|
||||
<Korean>보병</Korean>
|
||||
<French>Infanterie</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Ballistics_ammoUsageShort_lightVehicle">
|
||||
<English>Veh</English>
|
||||
@ -3545,6 +3549,7 @@
|
||||
<Polish>Pojazdy</Polish>
|
||||
<German>Fahrzeug</German>
|
||||
<Korean>차량</Korean>
|
||||
<French>Véhicule</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Ballistics_ammoUsageShort_armor">
|
||||
<English>Armor</English>
|
||||
@ -3552,6 +3557,7 @@
|
||||
<Polish>Pojazdy opancerzone</Polish>
|
||||
<German>Panzerung</German>
|
||||
<Korean>기갑</Korean>
|
||||
<French>Blindage</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Ballistics_ammoUsageShort_aircraft">
|
||||
<English>Air</English>
|
||||
@ -3559,6 +3565,7 @@
|
||||
<Polish>Lotnictwo</Polish>
|
||||
<German>Luft</German>
|
||||
<Korean>항공</Korean>
|
||||
<French>Aviation</French>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
@ -6,8 +6,8 @@ class CfgVehicles {
|
||||
displayName = CSTRING(SetCaptive);
|
||||
selection = "righthand";
|
||||
distance = HANDCUFFS_DISTANCE;
|
||||
condition = QUOTE([ARR_2(_player, _target)] call FUNC(canApplyHandcuffs));
|
||||
statement = QUOTE([ARR_2(_player, _target)] call FUNC(doApplyHandcuffs));
|
||||
condition = QUOTE([ARR_2(_player,_target)] call FUNC(canApplyHandcuffs));
|
||||
statement = QUOTE([ARR_2(_player,_target)] call FUNC(doApplyHandcuffs));
|
||||
exceptions[] = {"isNotSwimming", "isNotInside"};
|
||||
icon = QPATHTOF(UI\handcuff_ca.paa);
|
||||
};
|
||||
@ -17,16 +17,16 @@ class CfgVehicles {
|
||||
displayName = CSTRING(ReleaseCaptive);
|
||||
selection = "righthand";
|
||||
distance = HANDCUFFS_DISTANCE;
|
||||
condition = QUOTE([ARR_2(_player, _target)] call FUNC(canRemoveHandcuffs));
|
||||
statement = QUOTE([ARR_2(_player, _target)] call FUNC(doRemoveHandcuffs));
|
||||
condition = QUOTE([ARR_2(_player,_target)] call FUNC(canRemoveHandcuffs));
|
||||
statement = QUOTE([ARR_2(_player,_target)] call FUNC(doRemoveHandcuffs));
|
||||
exceptions[] = {"isNotSwimming", "isNotInside"};
|
||||
icon = QPATHTOF(UI\handcuff_ca.paa);
|
||||
};
|
||||
class ACE_EscortCaptive {
|
||||
displayName = CSTRING(EscortCaptive);
|
||||
distance = 4;
|
||||
condition = QUOTE([ARR_2(_player, _target)] call FUNC(canEscortCaptive));
|
||||
statement = QUOTE([ARR_3(_player, _target, true)] call FUNC(doEscortCaptive));
|
||||
condition = QUOTE([ARR_2(_player,_target)] call FUNC(canEscortCaptive));
|
||||
statement = QUOTE([ARR_3(_player,_target,true)] call FUNC(doEscortCaptive));
|
||||
exceptions[] = {"isNotSwimming"};
|
||||
showDisabled = 0;
|
||||
icon = QPATHTOF(UI\captive_ca.paa);
|
||||
@ -34,8 +34,8 @@ class CfgVehicles {
|
||||
class ACE_StopEscorting {
|
||||
displayName = CSTRING(StopEscorting);
|
||||
distance = 4;
|
||||
condition = QUOTE([ARR_2(_player, _target)] call FUNC(canStopEscorting));
|
||||
statement = QUOTE([ARR_3(_player,_target, false)] call FUNC(doEscortCaptive));
|
||||
condition = QUOTE([ARR_2(_player,_target)] call FUNC(canStopEscorting));
|
||||
statement = QUOTE([ARR_3(_player,_target,false)] call FUNC(doEscortCaptive));
|
||||
exceptions[] = {"isNotEscorting", "isNotSwimming"};
|
||||
showDisabled = 0;
|
||||
icon = QPATHTOF(UI\captive_ca.paa);
|
||||
@ -43,8 +43,8 @@ class CfgVehicles {
|
||||
class ACE_LoadCaptive {
|
||||
displayName = CSTRING(LoadCaptive);
|
||||
distance = 4;
|
||||
condition = QUOTE([ARR_3(_player, _target, objNull)] call FUNC(canLoadCaptive));
|
||||
statement = QUOTE([ARR_3(_player, _target, objNull)] call FUNC(doLoadCaptive));
|
||||
condition = QUOTE([ARR_3(_player,_target,objNull)] call FUNC(canLoadCaptive));
|
||||
statement = QUOTE([ARR_3(_player,_target,objNull)] call FUNC(doLoadCaptive));
|
||||
exceptions[] = {"isNotEscorting", "isNotSwimming"};
|
||||
showDisabled = 0;
|
||||
icon = QPATHTOF(UI\captive_ca.paa);
|
||||
@ -53,23 +53,23 @@ class CfgVehicles {
|
||||
class GVAR(UnloadCaptive) {
|
||||
displayName = CSTRING(UnloadCaptive);
|
||||
distance = 4;
|
||||
condition = QUOTE([ARR_2(_player, _target)] call FUNC(canUnloadCaptive));
|
||||
statement = QUOTE([ARR_2(_player, _target)] call FUNC(doUnloadCaptive));
|
||||
condition = QUOTE([ARR_2(_player,_target)] call FUNC(canUnloadCaptive));
|
||||
statement = QUOTE([ARR_2(_player,_target)] call FUNC(doUnloadCaptive));
|
||||
exceptions[] = {"isNotSwimming"};
|
||||
};
|
||||
class GVAR(BlindfoldCaptive) {
|
||||
displayName = CSTRING(BlindfoldCaptive);
|
||||
distance = 4;
|
||||
condition = QUOTE([ARR_2(_player, _target)] call FUNC(canBlindfoldCaptive));
|
||||
statement = QUOTE([ARR_3(_player, _target, true)] call FUNC(doBlindfoldCaptive));
|
||||
condition = QUOTE([ARR_2(_player,_target)] call FUNC(canBlindfoldCaptive));
|
||||
statement = QUOTE([ARR_3(_player,_target,true)] call FUNC(doBlindfoldCaptive));
|
||||
exceptions[] = {"isNotSwimming"};
|
||||
showDisabled = 0;
|
||||
};
|
||||
class GVAR(RemoveBlindfoldCaptive) {
|
||||
displayName = CSTRING(RemoveBlindfoldCaptive);
|
||||
distance = 4;
|
||||
condition = QUOTE([ARR_2(_player, _target)] call FUNC(canRemoveBlindfoldCaptive));
|
||||
statement = QUOTE([ARR_3(_player, _target, false)] call FUNC(doBlindfoldCaptive));
|
||||
condition = QUOTE([ARR_2(_player,_target)] call FUNC(canRemoveBlindfoldCaptive));
|
||||
statement = QUOTE([ARR_3(_player,_target,false)] call FUNC(doBlindfoldCaptive));
|
||||
exceptions[] = {"isNotSwimming"};
|
||||
showDisabled = 0;
|
||||
};
|
||||
@ -79,23 +79,23 @@ class CfgVehicles {
|
||||
class ACE_SelfActions {
|
||||
class ACE_StopEscortingSelf {
|
||||
displayName = CSTRING(StopEscorting);
|
||||
condition = QUOTE([ARR_2(_player, objNull)] call FUNC(canStopEscorting));
|
||||
statement = QUOTE([ARR_3(_player,objNull, false)] call FUNC(doEscortCaptive));
|
||||
condition = QUOTE([ARR_2(_player,objNull)] call FUNC(canStopEscorting));
|
||||
statement = QUOTE([ARR_3(_player,objNull,false)] call FUNC(doEscortCaptive));
|
||||
exceptions[] = {"isNotEscorting", "isNotSwimming"};
|
||||
showDisabled = 0;
|
||||
};
|
||||
class ACE_StartSurrenderingSelf {
|
||||
displayName = CSTRING(StartSurrendering);
|
||||
condition = QUOTE([ARR_2(_player, true)] call FUNC(canSurrender));
|
||||
statement = QUOTE([ARR_2(_player, true)] call FUNC(setSurrendered));
|
||||
condition = QUOTE([ARR_2(_player,true)] call FUNC(canSurrender));
|
||||
statement = QUOTE([ARR_2(_player,true)] call FUNC(setSurrendered));
|
||||
exceptions[] = {"isNotSwimming"};
|
||||
showDisabled = 0;
|
||||
icon = QPATHTOF(UI\Surrender_ca.paa);
|
||||
};
|
||||
class ACE_StopSurrenderingSelf {
|
||||
displayName = CSTRING(StopSurrendering);
|
||||
condition = QUOTE([ARR_2(_player, false)] call FUNC(canSurrender));
|
||||
statement = QUOTE([ARR_2(_player, false)] call FUNC(setSurrendered));
|
||||
condition = QUOTE([ARR_2(_player,false)] call FUNC(canSurrender));
|
||||
statement = QUOTE([ARR_2(_player,false)] call FUNC(setSurrendered));
|
||||
exceptions[] = {"isNotSurrendering", "isNotSwimming"};
|
||||
showDisabled = 0;
|
||||
icon = QPATHTOF(UI\Surrender_ca.paa);
|
||||
@ -109,8 +109,8 @@ class CfgVehicles {
|
||||
class GVAR(LoadCaptive) { \
|
||||
displayName = CSTRING(LoadCaptive); \
|
||||
distance = 4; \
|
||||
condition = QUOTE([ARR_3(_player, objNull, _target)] call FUNC(canLoadCaptive)); \
|
||||
statement = QUOTE([ARR_3(_player, objNull, _target)] call FUNC(doLoadCaptive)); \
|
||||
condition = QUOTE([ARR_3(_player,objNull,_target)] call FUNC(canLoadCaptive)); \
|
||||
statement = QUOTE([ARR_3(_player,objNull,_target)] call FUNC(doLoadCaptive)); \
|
||||
exceptions[] = {"isNotEscorting", "isNotSwimming"}; \
|
||||
}; \
|
||||
}; \
|
||||
|
@ -11,7 +11,7 @@
|
||||
* The return value <BOOL>
|
||||
*
|
||||
* Example:
|
||||
* [bob1, bob2] call ACE_captives_fnc_handlePlayerChange
|
||||
* [bob1, bob2] call ACE_captives_fnc_handlePlayerChanged
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
@ -9,7 +9,7 @@ class Cfg3DEN {
|
||||
property = QGVAR(customName);
|
||||
control = "Edit";
|
||||
|
||||
expression = QUOTE(_this setVariable [ARR_3(QQGVAR(customName), _value, true)];);
|
||||
expression = QUOTE(_this setVariable [ARR_3(QQGVAR(customName),_value,true)];);
|
||||
defaultValue = "''";
|
||||
|
||||
condition = "objectHasInventoryCargo - objectVehicle";
|
||||
@ -21,7 +21,7 @@ class Cfg3DEN {
|
||||
property = QGVAR(space);
|
||||
control = "Edit";
|
||||
|
||||
expression = QUOTE([ARR_2(_this,_value)] call DFUNC(setSpace););
|
||||
expression = QUOTE([ARR_2(_this,_value)] call DFUNC(setSpace));
|
||||
defaultValue = QUOTE(GET_NUMBER(configOf _this >> QQGVAR(space),0));
|
||||
|
||||
validate = "number";
|
||||
@ -35,7 +35,7 @@ class Cfg3DEN {
|
||||
control = "Edit";
|
||||
|
||||
// Expression only runs on the server, must handle actions for all machines and future JIPs (Why BI?!)
|
||||
expression = QUOTE([ARR_2(_this,_value)] call DFUNC(setSize););
|
||||
expression = QUOTE([ARR_2(_this,_value)] call DFUNC(setSize));
|
||||
defaultValue = QUOTE(GET_NUMBER(configOf _this >> QQGVAR(size),-1));
|
||||
|
||||
validate = "number";
|
||||
|
@ -81,7 +81,8 @@ GVAR(vehicleAction) = [
|
||||
{locked _target < 2} &&
|
||||
{([_player, _target] call EFUNC(interaction,getInteractionDistance)) < MAX_LOAD_DISTANCE} &&
|
||||
{alive _target} &&
|
||||
{[_player, _target, ["isNotSwimming"]] call EFUNC(common,canInteractWith)}
|
||||
{[_player, _target, ["isNotSwimming"]] call EFUNC(common,canInteractWith)} &&
|
||||
{[_player, _target] call EFUNC(interaction,canInteractWithVehicleCrew)}
|
||||
}
|
||||
] call EFUNC(interact_menu,createAction);
|
||||
|
||||
@ -99,6 +100,7 @@ GVAR(objectActions) = [
|
||||
{(_target getVariable [QGVAR(canLoad), getNumber (configOf _target >> QGVAR(canLoad))]) in [true, 1]} &&
|
||||
{alive _target} &&
|
||||
{[_player, _target, ["isNotSwimming"]] call EFUNC(common,canInteractWith)} &&
|
||||
{[_player, _target] call EFUNC(interaction,canInteractWithVehicleCrew)} &&
|
||||
{(_target getVariable [QGVAR(noRename), getNumber (configOf _target >> QGVAR(noRename))]) in [false, 0]}
|
||||
}
|
||||
] call EFUNC(interact_menu,createAction),
|
||||
@ -114,6 +116,7 @@ GVAR(objectActions) = [
|
||||
{locked _target < 2} &&
|
||||
{alive _target} &&
|
||||
{[_player, _target, ["isNotSwimming"]] call EFUNC(common,canInteractWith)} &&
|
||||
{[_player, _target] call EFUNC(interaction,canInteractWithVehicleCrew)} &&
|
||||
{((nearestObjects [_target, GVAR(cargoHolderTypes), (MAX_LOAD_DISTANCE + 10)]) findIf {
|
||||
private _hasCargoConfig = 1 == getNumber (configOf _x >> QGVAR(hasCargo));
|
||||
private _hasCargoPublic = _x getVariable [QGVAR(hasCargo), false];
|
||||
|
@ -28,7 +28,7 @@ if (_item isEqualType objNull && {{alive _x && {getText (configOf _x >> "simulat
|
||||
|
||||
private _itemSize = [_item] call FUNC(getSizeItem);
|
||||
private _validItem = false;
|
||||
if (_item isEqualType "") then {
|
||||
if (_item isEqualType "") then {
|
||||
_validItem =
|
||||
isClass (configFile >> "CfgVehicles" >> _item) &&
|
||||
{getNumber (configFile >> "CfgVehicles" >> _item >> QGVAR(canLoad)) == 1};
|
||||
|
@ -38,6 +38,17 @@ if (_item isEqualType objNull) then {
|
||||
_item attachTo [_vehicle,[0,0,-100]];
|
||||
[QEGVAR(common,hideObjectGlobal), [_item, true]] call CBA_fnc_serverEvent;
|
||||
|
||||
if (["ace_zeus"] call EFUNC(common,isModLoaded)) then {
|
||||
private _objectCurators = objectCurators _item;
|
||||
|
||||
// Save which curators had this object as editable
|
||||
_item setVariable [QGVAR(objectCurators), _objectCurators, true];
|
||||
|
||||
if (_objectCurators isEqualTo []) exitWith {};
|
||||
|
||||
[QEGVAR(zeus,removeObjects), [[_item], _objectCurators]] call CBA_fnc_serverEvent;
|
||||
};
|
||||
|
||||
// Some objects below water will take damage over time and eventualy become "water logged" and unfixable (because of negative z attach)
|
||||
[_item, "blockDamage", "ACE_cargo", true] call EFUNC(common,statusEffect_set);
|
||||
};
|
||||
|
@ -53,6 +53,15 @@ if (_object isEqualType objNull) then {
|
||||
// hideObjectGlobal must be executed before setPos to ensure light objects are rendered correctly
|
||||
// do both on server to ensure they are executed in the correct order
|
||||
[QGVAR(serverUnload), [_object, _emptyPosAGL]] call CBA_fnc_serverEvent;
|
||||
|
||||
if (["ace_zeus"] call EFUNC(common,isModLoaded)) then {
|
||||
// Get which curators had this object as editable
|
||||
private _objectCurators = _object getVariable [QGVAR(objectCurators), []];
|
||||
|
||||
if (_objectCurators isEqualTo []) exitWith {};
|
||||
|
||||
[QEGVAR(zeus,addObjects), [[_object], _objectCurators]] call CBA_fnc_serverEvent;
|
||||
};
|
||||
} else {
|
||||
_object = createVehicle [_item, _emptyPosAGL, [], 0, "NONE"];
|
||||
_object setPosASL (AGLtoASL _emptyPosAGL);
|
||||
|
@ -97,7 +97,7 @@ class GVAR(menu) {
|
||||
text = CSTRING(unloadObject);
|
||||
idc = 12;
|
||||
x = "20.9 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
|
||||
action = QUOTE([] call FUNC(startUnload););
|
||||
action = QUOTE([] call FUNC(startUnload));
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -40,7 +40,7 @@ class GVAR(renameMenu) {
|
||||
text = CSTRING(renameObjectUI);
|
||||
};
|
||||
class edit: ACE_gui_editBase {
|
||||
onLoad = QUOTE((_this select 0) ctrlSetText (GVAR(interactionVehicle) getVariable [ARR_2(QUOTE(QGVAR(customName)), '')]));
|
||||
onLoad = QUOTE((_this select 0) ctrlSetText (GVAR(interactionVehicle) getVariable [ARR_2(QUOTE(QGVAR(customName)),'')]));
|
||||
idc = 100;
|
||||
canModify = 1;
|
||||
x = "13.1 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
|
||||
|
@ -22,7 +22,7 @@ class Extended_DisplayLoad_EventHandlers {
|
||||
ADDON = QUOTE(_this call COMPILE_SCRIPT(XEH_missionDisplayLoad));
|
||||
};
|
||||
class RscUnitInfo {
|
||||
ADDON = QUOTE([ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;);
|
||||
ADDON = QUOTE([ARR_2('ace_infoDisplayChanged',[ARR_2(_this select 0,'Any')])] call CBA_fnc_localEvent;);
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -19,6 +19,7 @@ class RscPicture;
|
||||
class RscControlsGroupNoScrollbars;
|
||||
|
||||
class GVAR(CompassControl): RscControlsGroupNoScrollbars {
|
||||
#pragma hemtt suppress pw3_padded_arg
|
||||
onLoad = QUOTE(\
|
||||
params ['_control'];\
|
||||
private _display = ctrlParent _control;\
|
||||
@ -58,6 +59,7 @@ class GVAR(CompassControl): RscControlsGroupNoScrollbars {
|
||||
h = QUOTE(HEIGHT);
|
||||
};
|
||||
class CompassGroup: RscControlsGroupNoScrollbars {
|
||||
#pragma hemtt suppress pw3_padded_arg
|
||||
onLoad = QUOTE(\
|
||||
params ['_control'];\
|
||||
private _display = ctrlParent _control;\
|
||||
|
@ -2,107 +2,107 @@
|
||||
class RscInGameUI {
|
||||
class RscUnitInfo;
|
||||
class RscUnitInfoNoHUD {
|
||||
onLoad = QUOTE([ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;);
|
||||
onLoad = QUOTE([ARR_2('ace_infoDisplayChanged',[ARR_2(_this select 0,'Any')])] call CBA_fnc_localEvent;);
|
||||
};
|
||||
|
||||
class RscUnitInfoSoldier: RscUnitInfo {
|
||||
onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); uiNamespace setVariable [ARR_2('ACE_dlgSoldier', _this select 0)]; [ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Soldier')])] call CBA_fnc_localEvent;);
|
||||
onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); uiNamespace setVariable [ARR_2('ACE_dlgSoldier',_this select 0)]; [ARR_2('ace_infoDisplayChanged',[ARR_2(_this select 0,'Soldier')])] call CBA_fnc_localEvent;);
|
||||
};
|
||||
|
||||
class RscUnitInfoTank: RscUnitInfo {
|
||||
onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); uiNamespace setVariable [ARR_2('ACE_dlgVehicle', _this select 0)];);
|
||||
onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); uiNamespace setVariable [ARR_2('ACE_dlgVehicle',_this select 0)];);
|
||||
};
|
||||
|
||||
class RscUnitInfoAirNoWeapon: RscUnitInfo {
|
||||
onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); uiNamespace setVariable [ARR_2('ACE_dlgAircraft', _this select 0)];);
|
||||
onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); uiNamespace setVariable [ARR_2('ACE_dlgAircraft',_this select 0)];);
|
||||
};
|
||||
|
||||
class RscUnitInfoAir: RscUnitInfoAirNoWeapon {
|
||||
onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); uiNamespace setVariable [ARR_2('ACE_dlgAircraft', _this select 0)];);
|
||||
onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); uiNamespace setVariable [ARR_2('ACE_dlgAircraft',_this select 0)];);
|
||||
};
|
||||
|
||||
class RscUnitInfo_AH64D_gunner {
|
||||
onLoad = QUOTE(uiNamespace setVariable [ARR_2('ACE_dlgAircraft', _this select 0)]; [ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Aircraft')])] call CBA_fnc_localEvent;);
|
||||
onLoad = QUOTE(uiNamespace setVariable [ARR_2('ACE_dlgAircraft',_this select 0)]; [ARR_2('ace_infoDisplayChanged',[ARR_2(_this select 0,'Aircraft')])] call CBA_fnc_localEvent;);
|
||||
};
|
||||
|
||||
class RscUnitInfoUAV {
|
||||
onLoad = QUOTE(uiNamespace setVariable [ARR_2('ACE_dlgUAV', _this select 0)]; [ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'UAV')])] call CBA_fnc_localEvent;);
|
||||
onLoad = QUOTE(uiNamespace setVariable [ARR_2('ACE_dlgUAV',_this select 0)]; [ARR_2('ace_infoDisplayChanged',[ARR_2(_this select 0,'UAV')])] call CBA_fnc_localEvent;);
|
||||
};
|
||||
|
||||
class RscUnitInfoSubmarine: RscUnitInfo {
|
||||
onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); uiNamespace setVariable [ARR_2('ACE_dlgSubmarine', _this select 0)];);
|
||||
onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); uiNamespace setVariable [ARR_2('ACE_dlgSubmarine',_this select 0)];);
|
||||
};
|
||||
|
||||
class RscUnitInfoShip: RscUnitInfo {
|
||||
onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); uiNamespace setVariable [ARR_2('ACE_dlgShip', _this select 0)];);
|
||||
onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); uiNamespace setVariable [ARR_2('ACE_dlgShip',_this select 0)];);
|
||||
};
|
||||
|
||||
class RscWeaponEmpty {
|
||||
onLoad = QUOTE([ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;);
|
||||
onLoad = QUOTE([ARR_2('ace_infoDisplayChanged',[ARR_2(_this select 0,'Any')])] call CBA_fnc_localEvent;);
|
||||
};
|
||||
|
||||
class RscWeaponRangeFinder {
|
||||
onLoad = QUOTE([ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;);
|
||||
onLoad = QUOTE([ARR_2('ace_infoDisplayChanged',[ARR_2(_this select 0,'Any')])] call CBA_fnc_localEvent;);
|
||||
};
|
||||
|
||||
class RscWeaponRangeArtillery {
|
||||
onLoad = QUOTE(uiNamespace setVariable [ARR_2('ACE_dlgArtillery', _this select 0)]; [ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Artillery')])] call CBA_fnc_localEvent;);
|
||||
onLoad = QUOTE(uiNamespace setVariable [ARR_2('ACE_dlgArtillery',_this select 0)]; [ARR_2('ace_infoDisplayChanged',[ARR_2(_this select 0,'Artillery')])] call CBA_fnc_localEvent;);
|
||||
};
|
||||
|
||||
class RscWeaponRangeArtilleryAuto {
|
||||
onLoad = QUOTE(uiNamespace setVariable [ARR_2('ACE_dlgArtillery', _this select 0)]; [ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Artillery')])] call CBA_fnc_localEvent;);
|
||||
onLoad = QUOTE(uiNamespace setVariable [ARR_2('ACE_dlgArtillery',_this select 0)]; [ARR_2('ace_infoDisplayChanged',[ARR_2(_this select 0,'Artillery')])] call CBA_fnc_localEvent;);
|
||||
};
|
||||
|
||||
class RscWeaponRangeFinderPAS13 {
|
||||
onLoad = QUOTE([ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;);
|
||||
onLoad = QUOTE([ARR_2('ace_infoDisplayChanged',[ARR_2(_this select 0,'Any')])] call CBA_fnc_localEvent;);
|
||||
};
|
||||
|
||||
class RscOptics_LaserDesignator {
|
||||
onLoad = QUOTE([ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;);
|
||||
onLoad = QUOTE([ARR_2('ace_infoDisplayChanged',[ARR_2(_this select 0,'Any')])] call CBA_fnc_localEvent;);
|
||||
};
|
||||
|
||||
class RscWeaponRangeFinderMAAWS {
|
||||
onLoad = QUOTE([ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;);
|
||||
onLoad = QUOTE([ARR_2('ace_infoDisplayChanged',[ARR_2(_this select 0,'Any')])] call CBA_fnc_localEvent;);
|
||||
};
|
||||
|
||||
class RscWeaponRangeFinderAbramsCom {
|
||||
onLoad = QUOTE([ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;);
|
||||
onLoad = QUOTE([ARR_2('ace_infoDisplayChanged',[ARR_2(_this select 0,'Any')])] call CBA_fnc_localEvent;);
|
||||
};
|
||||
|
||||
class RscWeaponRangeFinderAbramsGun {
|
||||
onLoad = QUOTE([ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;);
|
||||
onLoad = QUOTE([ARR_2('ace_infoDisplayChanged',[ARR_2(_this select 0,'Any')])] call CBA_fnc_localEvent;);
|
||||
};
|
||||
|
||||
class RscWeaponRangeFinderStrykerMGSGun {
|
||||
onLoad = QUOTE([ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;);
|
||||
onLoad = QUOTE([ARR_2('ace_infoDisplayChanged',[ARR_2(_this select 0,'Any')])] call CBA_fnc_localEvent;);
|
||||
};
|
||||
|
||||
class RscOptics_strider_commander {
|
||||
onLoad = QUOTE([ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;);
|
||||
onLoad = QUOTE([ARR_2('ace_infoDisplayChanged',[ARR_2(_this select 0,'Any')])] call CBA_fnc_localEvent;);
|
||||
};
|
||||
|
||||
class RscOptics_titan {
|
||||
onLoad = QUOTE([ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;);
|
||||
onLoad = QUOTE([ARR_2('ace_infoDisplayChanged',[ARR_2(_this select 0,'Any')])] call CBA_fnc_localEvent;);
|
||||
};
|
||||
|
||||
class RscOptics_punisher {
|
||||
onLoad = QUOTE([ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;);
|
||||
onLoad = QUOTE([ARR_2('ace_infoDisplayChanged',[ARR_2(_this select 0,'Any')])] call CBA_fnc_localEvent;);
|
||||
};
|
||||
|
||||
class RscOptics_SDV_periscope {
|
||||
onLoad = QUOTE([ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;);
|
||||
onLoad = QUOTE([ARR_2('ace_infoDisplayChanged',[ARR_2(_this select 0,'Any')])] call CBA_fnc_localEvent;);
|
||||
};
|
||||
|
||||
class RscUnitInfoParachute: RscUnitInfo {
|
||||
onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); uiNamespace setVariable [ARR_2('ACE_dlgParachute', _this select 0)]; [ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Parachute')])] call CBA_fnc_localEvent;);
|
||||
onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); uiNamespace setVariable [ARR_2('ACE_dlgParachute',_this select 0)]; [ARR_2('ace_infoDisplayChanged',[ARR_2(_this select 0,'Parachute')])] call CBA_fnc_localEvent;);
|
||||
};
|
||||
|
||||
class RscUnitVehicle {
|
||||
onLoad = QUOTE([ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;);
|
||||
onLoad = QUOTE([ARR_2('ace_infoDisplayChanged',[ARR_2(_this select 0,'Any')])] call CBA_fnc_localEvent;);
|
||||
};
|
||||
|
||||
class RscOptics_LaserDesignator_02 {
|
||||
onLoad = QUOTE([ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;);
|
||||
onLoad = QUOTE([ARR_2('ace_infoDisplayChanged',[ARR_2(_this select 0,'Any')])] call CBA_fnc_localEvent;);
|
||||
};
|
||||
|
||||
class RscStaminaBar {
|
||||
@ -110,6 +110,6 @@ class RscInGameUI {
|
||||
};
|
||||
|
||||
class RscStanceInfo {
|
||||
onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscStanceInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); [ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Stance')])] call CBA_fnc_localEvent;);
|
||||
onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscStanceInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); [ARR_2('ace_infoDisplayChanged',[ARR_2(_this select 0,'Stance')])] call CBA_fnc_localEvent;);
|
||||
};
|
||||
};
|
||||
|
@ -60,7 +60,7 @@ if (_state) then {
|
||||
};
|
||||
|
||||
private _ctrl = _dlg displayctrl 103;
|
||||
_ctrl ctrlSetEventHandler ["buttonClick", QUOTE(while {!isNull (uiNamespace getVariable [ARR_2(QUOTE(QGVAR(dlgDisableMouse)),displayNull)])} do {closeDialog 0}; failMission 'LOSER'; [false] call DFUNC(disableUserInput);)];
|
||||
_ctrl ctrlSetEventHandler ["buttonClick", QUOTE(while {!isNull (uiNamespace getVariable [ARR_2(QUOTE(QGVAR(dlgDisableMouse)),displayNull)])} do {closeDialog 0}; failMission 'LOSER'; [false] call DFUNC(disableUserInput))];
|
||||
_ctrl ctrlEnable true;
|
||||
_ctrl ctrlSetText "ABORT";
|
||||
_ctrl ctrlSetTooltip "Abort.";
|
||||
@ -69,7 +69,7 @@ if (_state) then {
|
||||
if (["ace_medical"] call FUNC(isModLoaded)) then {
|
||||
_ctrl ctrlSetEventHandler ["buttonClick", 'closeDialog 0; [player, "respawn_button"] call EFUNC(medical_status,setDead); [false] call DFUNC(disableUserInput);'];
|
||||
} else {
|
||||
_ctrl ctrlSetEventHandler ["buttonClick", QUOTE(closeDialog 0; player setDamage 1; [false] call DFUNC(disableUserInput);)];
|
||||
_ctrl ctrlSetEventHandler ["buttonClick", QUOTE(closeDialog 0; player setDamage 1; [false] call DFUNC(disableUserInput))];
|
||||
};
|
||||
_ctrl ctrlEnable ((getMissionConfigValue ["respawnButton", -1]) != 0); // handles 3den attribute or description.ext
|
||||
_ctrl ctrlSetText localize "$str_3den_multiplayer_attributecategory_respawn_displayname";
|
||||
|
@ -8,6 +8,7 @@
|
||||
<Chinesesimp>[班组] BGM-71A TOW</Chinesesimp>
|
||||
<Russian>[CSW] BGM-71A TOW</Russian>
|
||||
<Spanish>[CSW] BGM-71A TOW</Spanish>
|
||||
<German>[CSW] BGM-71A TOW</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_RHS_USF3_CSW_mag_TOWB_displayName">
|
||||
<English>[CSW] BGM-71B TOW</English>
|
||||
@ -16,6 +17,7 @@
|
||||
<Chinesesimp>[班组] BGM-71B TOW</Chinesesimp>
|
||||
<Russian>[CSW] BGM-71B TOW</Russian>
|
||||
<Spanish>[CSW] BGM-71B TOW</Spanish>
|
||||
<German>[CSW] BGM-71B TOW</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_RHS_USF3_CSW_mag_ITOW_displayName">
|
||||
<English>[CSW] BGM-71C ITOW</English>
|
||||
@ -24,6 +26,7 @@
|
||||
<Chinesesimp>[班组] BGM-71C ITOW</Chinesesimp>
|
||||
<Russian>[CSW] BGM-71C ITOW</Russian>
|
||||
<Spanish>[CSW] BGM-71C ITOW</Spanish>
|
||||
<German>[CSW] BGM-71C ITOW</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_RHS_USF3_CSW_mag_TOW2_displayName">
|
||||
<English>[CSW] BGM-71D TOW-2</English>
|
||||
@ -32,6 +35,7 @@
|
||||
<Chinesesimp>[班组] BGM-71D TOW-2</Chinesesimp>
|
||||
<Russian>[CSW] BGM-71D TOW-2</Russian>
|
||||
<Spanish>[CSW] BGM-71D TOW-2</Spanish>
|
||||
<German>[CSW] BGM-71D TOW-2</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_RHS_USF3_CSW_mag_TOW2A_displayName">
|
||||
<English>[CSW] BGM-71E TOW-2A</English>
|
||||
@ -40,6 +44,7 @@
|
||||
<Chinesesimp>[班组] BGM-71E TOW-2A</Chinesesimp>
|
||||
<Russian>[CSW] BGM-71E TOW-2A</Russian>
|
||||
<Spanish>[CSW] BGM-71E TOW-2A</Spanish>
|
||||
<German>[CSW] BGM-71E TOW-2A</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_RHS_USF3_CSW_mag_TOW2b_displayName">
|
||||
<English>[CSW] BGM-71F TOW-2B</English>
|
||||
@ -48,6 +53,7 @@
|
||||
<Chinesesimp>[班组] BGM-71F TOW-2B</Chinesesimp>
|
||||
<Russian>[CSW] BGM-71F TOW-2B</Russian>
|
||||
<Spanish>[CSW] BGM-71F TOW-2B</Spanish>
|
||||
<German>[CSW] BGM-71F TOW-2B</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_RHS_USF3_CSW_mag_TOW2b_aero_displayName">
|
||||
<English>[CSW] BGM-71F-3 TOW-2B AERO</English>
|
||||
@ -56,6 +62,7 @@
|
||||
<Chinesesimp>[班组] BGM-71F-3 TOW-2B AERO</Chinesesimp>
|
||||
<Russian>[CSW] BGM-71F-3 TOW-2B AERO</Russian>
|
||||
<Spanish>[CSW] BGM-71F-3 TOW-2B AERO</Spanish>
|
||||
<German>[CSW] BGM-71F-3 TOW-2B AERO</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_RHS_USF3_CSW_mag_TOW2bb_displayName">
|
||||
<English>[CSW] BGM-71H Bunker Buster</English>
|
||||
@ -64,6 +71,7 @@
|
||||
<Chinesesimp>[班组] BGM-71H “碉堡克星”</Chinesesimp>
|
||||
<Russian>[CSW] BGM-71H Bunker Buster</Russian>
|
||||
<Spanish>[CSW] BGM-71H Anti-Búnquer</Spanish>
|
||||
<German>[CSW] BGM-71H Bunker Buster</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_RHS_USF3_CSW_48Rnd_40mm_MK19_displayName">
|
||||
<English>[CSW] Mk. 19 40mm M384 HE</English>
|
||||
@ -72,6 +80,7 @@
|
||||
<Chinesesimp>[班组] Mk. 19 40mm M384 高爆</Chinesesimp>
|
||||
<Russian>[CSW] Mk. 19 40 мм M384 HE</Russian>
|
||||
<Spanish>[CSW] Mk. 19 40mm M384 HE</Spanish>
|
||||
<German>[CSW] Mk. 19 40mm M384 HE</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_RHS_USF3_CSW_48Rnd_40mm_MK19_M430I_displayName">
|
||||
<English>[CSW] Mk. 19 40mm M430I HEDP</English>
|
||||
@ -80,6 +89,7 @@
|
||||
<Chinesesimp>[班组] Mk. 19 40mm M430I 两用高爆</Chinesesimp>
|
||||
<Russian>[CSW] Mk. 19 40 мм M430I HEDP</Russian>
|
||||
<Spanish>[CSW] Mk. 19 40mm M430I HEDP</Spanish>
|
||||
<German>[CSW] Mk. 19 40mm M430I HEDP</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_RHS_USF3_CSW_48Rnd_40mm_MK19_M430A1_displayName">
|
||||
<English>[CSW] Mk. 19 40mm M430A1 HEDP</English>
|
||||
@ -88,6 +98,7 @@
|
||||
<Chinesesimp>[班组] Mk. 19 40mm M430A1 两用高爆</Chinesesimp>
|
||||
<Russian>[CSW] Mk. 19 40 мм M430A1 HEDP</Russian>
|
||||
<Spanish>[CSW] Mk. 19 40mm M430A1 HEDP</Spanish>
|
||||
<German>[CSW] Mk. 19 40mm M430A1 HEDP</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_RHS_USF3_CSW_48Rnd_40mm_MK19_M1001_displayName">
|
||||
<English>[CSW] Mk. 19 40mm M1001 Canister</English>
|
||||
@ -96,6 +107,7 @@
|
||||
<Chinesesimp>[班组] Mk. 19 40mm M1001 霰弹</Chinesesimp>
|
||||
<Russian>[CSW] Mk. 19 40 мм M1001 Канистровый</Russian>
|
||||
<Spanish>[CSW] Mk. 19 40mm M1001 Bote de metralla</Spanish>
|
||||
<German>[CSW] Mk. 19 40mm M1001 Kanister</German>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
@ -39,7 +39,7 @@ class CfgVehicles {
|
||||
class ACE_ContinueDiggingTrench {
|
||||
displayName = ECSTRING(trenches,ContinueDiggingTrench);
|
||||
condition = QUOTE([ARR_2(_target,_player)] call EFUNC(trenches,canContinueDiggingTrench));
|
||||
statement = QUOTE([ARR_2(_target,_player)] call EFUNC(trenches,continueDiggingTrench););
|
||||
statement = QUOTE([ARR_2(_target,_player)] call EFUNC(trenches,continueDiggingTrench));
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -4,126 +4,157 @@
|
||||
<Key ID="STR_ACE_Compat_WS_RealisticNames_AA40_Name">
|
||||
<English>AA12</English>
|
||||
<Korean>AA-12</Korean>
|
||||
<German>AA12</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_WS_RealisticNames_AA40_Tan_Name">
|
||||
<English>AA12 (Sand)</English>
|
||||
<Korean>AA-12 (모래)</Korean>
|
||||
<German>AA12 (Sand)</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_WS_RealisticNames_AA40_Snake_Name">
|
||||
<English>AA12 (Snake)</English>
|
||||
<Korean>AA-12 (뱀 위장)</Korean>
|
||||
<German>AA12 (Schlange)</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_WS_RealisticNames_Galat_Name">
|
||||
<English>Galil ARM</English>
|
||||
<Korean>갈릴 ARM</Korean>
|
||||
<German>Galil ARM</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_WS_RealisticNames_Galat_Old_Name">
|
||||
<English>Galil ARM (Old)</English>
|
||||
<Korean>갈릴 ARM (낡음)</Korean>
|
||||
<German>Galil ARM (Alt)</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_WS_RealisticNames_GLX_Name">
|
||||
<English>GLX 160</English>
|
||||
<Korean>GLX-160</Korean>
|
||||
<German>GLX 160</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_WS_RealisticNames_GLX_Snake_Name">
|
||||
<English>GLX 160 (Snake)</English>
|
||||
<Korean>GLX-160 (뱀 위장)</Korean>
|
||||
<German>GLX 160 (Schlange)</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_WS_RealisticNames_GLX_Hex_Name">
|
||||
<English>GLX 160 (Hex)</English>
|
||||
<Korean>GLX-160 (육각)</Korean>
|
||||
<German>GLX 160 (Hex)</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_WS_RealisticNames_GLX_GreenHex_Name">
|
||||
<English>GLX 160 (Green Hex)</English>
|
||||
<Korean>GLX-160 (초록육각)</Korean>
|
||||
<German>GLX 160 (Grün Hex)</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_WS_RealisticNames_GLX_Camo_Name">
|
||||
<English>GLX 160 (Camo)</English>
|
||||
<Korean>GLX-160 (위장)</Korean>
|
||||
<German>GLX 160 (Tarn)</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_WS_RealisticNames_GLX_Tan_Name">
|
||||
<English>GLX 160 (Sand)</English>
|
||||
<Korean>GLX-160 (모래)</Korean>
|
||||
<German>GLX 160 (Sand)</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_WS_RealisticNames_EBR_Black_Name">
|
||||
<English>Mk14 Mod 1 EBR (Black)</English>
|
||||
<Korean>Mk.14 Mod 1 EBR (검정)</Korean>
|
||||
<German>Mk14 Mod 1 EBR (Schwarz)</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_WS_RealisticNames_EBR_Snake_Name">
|
||||
<English>Mk14 Mod 1 EBR (Snake)</English>
|
||||
<Korean>Mk.14 Mod 1 EBR (뱀 위장)</Korean>
|
||||
<German>Mk14 Mod 1 EBR (Schlange)</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_WS_RealisticNames_S77_Name">
|
||||
<English>Vektor SS-77</English>
|
||||
<Korean>벡터 SS-77</Korean>
|
||||
<German>Vektor SS-77</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_WS_RealisticNames_S77_AAF_Name">
|
||||
<English>Vektor SS-77 (Camo)</English>
|
||||
<Korean>벡터 SS-77 (위장)</Korean>
|
||||
<German>Vektor SS-77 (Tarn)</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_WS_RealisticNames_S77_Hex_Name">
|
||||
<English>Vektor SS-77 (Hex)</English>
|
||||
<Korean>벡터 SS-77 (육각)</Korean>
|
||||
<German>Vektor SS-77 (Hex)</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_WS_RealisticNames_S77_GreenHex_Name">
|
||||
<English>Vektor SS-77 (Green Hex)</English>
|
||||
<Korean>벡터 SS-77 (초록육각)</Korean>
|
||||
<German>Vektor SS-77 (Grün Hex)</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_WS_RealisticNames_S77_Desert_Name">
|
||||
<English>Vektor SS-77 (Desert)</English>
|
||||
<Korean>벡터 SS-77 (사막)</Korean>
|
||||
<German>Vektor SS-77 (Wüstet)</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_WS_RealisticNames_S77_Compact_Name">
|
||||
<English>Vektor SS-77 Compact</English>
|
||||
<Korean>벡터 SS-77 단축형</Korean>
|
||||
<German>Vektor SS-77 Kompakt</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_WS_RealisticNames_S77_Compact_Snake_Name">
|
||||
<English>Vektor SS-77 Compact (Snake)</English>
|
||||
<Korean>벡터 SS-77 단축형 (뱀 위장)</Korean>
|
||||
<German>Vektor SS-77 Compact (Schlange)</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_WS_RealisticNames_SLR_Wood_Name">
|
||||
<English>FN FAL 50.00 (Wood)</English>
|
||||
<Korean>FN FAL 50.00 (목재)</Korean>
|
||||
<German>FN FAL 50.00 (Holz)</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_WS_RealisticNames_SLR_GL_Wood_Name">
|
||||
<English>FN FAL 50.00 GL (Wood)</English>
|
||||
<Korean>FN FAL 50.00 GL (목재)</Korean>
|
||||
<German>FN FAL 50.00 GL (Holz)</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_WS_RealisticNames_SLR_Name">
|
||||
<English>FN FAL 50.00</English>
|
||||
<Korean>FN FAL 50.00</Korean>
|
||||
<German>FN FAL 50.00</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_WS_RealisticNames_SLR_GL_Name">
|
||||
<English>FN FAL 50.00 GL</English>
|
||||
<Korean>FN FAL 50.00 GL</Korean>
|
||||
<German>FN FAL 50.00 GL</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_WS_RealisticNames_SLR_Desert_Name">
|
||||
<English>FN FAL 50.00 (Desert)</English>
|
||||
<Korean>FN FAL 50.00 (사막)</Korean>
|
||||
<German>FN FAL 50.00 (Wüstet)</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_WS_RealisticNames_SLR_Camo_Name">
|
||||
<English>FN FAL 50.00 (Jungle)</English>
|
||||
<Korean>FN FAL 50.00 (정글)</Korean>
|
||||
<German>FN FAL 50,00 (Dschungel)</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_WS_RealisticNames_Velko_R4_Name">
|
||||
<English>Vektor R4</English>
|
||||
<Korean>벡터 R4</Korean>
|
||||
<German>Vektor R4</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_WS_RealisticNames_Velko_R5_Name">
|
||||
<English>Vektor R5 Carbine</English>
|
||||
<Korean>벡터 R5 카빈</Korean>
|
||||
<German>Vektor R5 Carbine</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_WS_RealisticNames_Velko_R5_GL_Name">
|
||||
<English>Vektor R5 Carbine GL</English>
|
||||
<Korean>벡터 R5 카빈 GL</Korean>
|
||||
<German>Vektor R5 Carbine GL</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_WS_RealisticNames_Velko_R5_Snake_Name">
|
||||
<English>Vektor R5 Carbine (Snake)</English>
|
||||
<Korean>벡터 R5 카빈 (뱀 위장)</Korean>
|
||||
<German>Vektor R5 Carbine (Schlange)</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_WS_RealisticNames_Velko_R5_GL_Snake_Name">
|
||||
<English>Vektor R5 Carbine GL (Snake)</English>
|
||||
<Korean>벡터 R5 카빈 GL (뱀 위장)</Korean>
|
||||
<German>Vektor R5 Carbine GL (Schlange)</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_WS_RealisticNames_XMS_Name">
|
||||
<English>XMS</English>
|
||||
|
@ -136,7 +136,7 @@ class CfgVehicles {
|
||||
distance = 4;
|
||||
condition = "true";
|
||||
//wait a frame to handle "Do When releasing action menu key" option:
|
||||
statement = QUOTE([ARR_2({_this call FUNC(deploy)}, [ARR_2(_target,_player)])] call CBA_fnc_execNextFrame);
|
||||
statement = QUOTE([ARR_2({_this call FUNC(deploy)},[ARR_2(_target,_player)])] call CBA_fnc_execNextFrame);
|
||||
showDisabled = 0;
|
||||
exceptions[] = {};
|
||||
icon = QPATHTOF(UI\icon_sandbag_ca.paa);
|
||||
|
@ -79,7 +79,7 @@
|
||||
<Chinese>裝填 %1</Chinese>
|
||||
<Chinesesimp>装填 %1</Chinesesimp>
|
||||
<Turkish>Yükle %1</Turkish>
|
||||
<Korean>%1 싣는중</Korean>
|
||||
<Korean>%1 싣기</Korean>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_CSW_unloadX">
|
||||
<English>Unload %1</English>
|
||||
@ -96,7 +96,7 @@
|
||||
<Chinese>卸載 %1</Chinese>
|
||||
<Chinesesimp>卸载 %1</Chinesesimp>
|
||||
<Turkish>Boşalt %1</Turkish>
|
||||
<Korean>%1 내리는중</Korean>
|
||||
<Korean>%1 내리기</Korean>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_CSW_actionLink">
|
||||
<English>Link %1</English>
|
||||
@ -182,6 +182,7 @@
|
||||
<Chinesesimp>弹药存储</Chinesesimp>
|
||||
<Russian>Хранилище боеприпасов</Russian>
|
||||
<Spanish>Almacenamiento de munición</Spanish>
|
||||
<French>Stockage des munitions</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_CSW_handleExtraMagazinesType_description">
|
||||
<English>Determines whether extra magazines are stored on the ground or inside an ammo box</English>
|
||||
@ -192,6 +193,7 @@
|
||||
<Chinesesimp>设置多余的弹夹是存放在地面上还是弹药箱内</Chinesesimp>
|
||||
<Russian>Определяет будут ли дополнительные магазины лежать на земле или внутри хранилища</Russian>
|
||||
<Spanish>Determina si los cargadores extra son almacenados en el suelo o en una caja de munición</Spanish>
|
||||
<French>Détermine si les chargeurs supplémentaires sont stockés par terre ou dans une caisse de munitions.</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_CSW_handleExtraMagazinesType_weaponHolder">
|
||||
<English>Ground</English>
|
||||
@ -202,6 +204,7 @@
|
||||
<Chinesesimp>地面</Chinesesimp>
|
||||
<Russian>Земля</Russian>
|
||||
<Spanish>Suelo</Spanish>
|
||||
<French>Sol</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_CSW_handleExtraMagazinesType_ammoBox">
|
||||
<English>Ammo Box</English>
|
||||
@ -212,6 +215,7 @@
|
||||
<Chinesesimp>弹药箱</Chinesesimp>
|
||||
<Russian>Коробка с боеприпасами</Russian>
|
||||
<Spanish>Caja de munición</Spanish>
|
||||
<French>Caisse de munitions</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_CSW_ammoHandling_displayName">
|
||||
<English>Ammo handling</English>
|
||||
|
@ -10,6 +10,7 @@
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [] call ace_dagr_fnc_menuInit
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
@ -17,10 +17,10 @@ class RscListBox;
|
||||
#define W_MAKEITBIGGA(num) (num * (safeZoneH / 40))
|
||||
#define H_MAKEITBIGGA(num) (num * (safeZoneH / 30))
|
||||
|
||||
#define X_PART(num) QUOTE(linearConversion [ARR_5(0, 2, (missionNamespace getVariable [ARR_2(QUOTE(QEGVAR(inventory,inventoryDisplaySize)), 0)]), X_BIS(num), X_MAKEITBIGGA(num))])
|
||||
#define Y_PART(num) QUOTE(linearConversion [ARR_5(0, 2, (missionNamespace getVariable [ARR_2(QUOTE(QEGVAR(inventory,inventoryDisplaySize)), 0)]), Y_BIS(num), Y_MAKEITBIGGA(num))])
|
||||
#define W_PART(num) QUOTE(linearConversion [ARR_5(0, 2, (missionNamespace getVariable [ARR_2(QUOTE(QEGVAR(inventory,inventoryDisplaySize)), 0)]), W_BIS(num), W_MAKEITBIGGA(num))])
|
||||
#define H_PART(num) QUOTE(linearConversion [ARR_5(0, 2, (missionNamespace getVariable [ARR_2(QUOTE(QEGVAR(inventory,inventoryDisplaySize)), 0)]), H_BIS(num), H_MAKEITBIGGA(num))])
|
||||
#define X_PART(num) QUOTE(linearConversion [ARR_5(0,2,(missionNamespace getVariable [ARR_2(QUOTE(QEGVAR(inventory,inventoryDisplaySize)),0)]),X_BIS(num),X_MAKEITBIGGA(num))])
|
||||
#define Y_PART(num) QUOTE(linearConversion [ARR_5(0,2,(missionNamespace getVariable [ARR_2(QUOTE(QEGVAR(inventory,inventoryDisplaySize)),0)]),Y_BIS(num),Y_MAKEITBIGGA(num))])
|
||||
#define W_PART(num) QUOTE(linearConversion [ARR_5(0,2,(missionNamespace getVariable [ARR_2(QUOTE(QEGVAR(inventory,inventoryDisplaySize)),0)]),W_BIS(num),W_MAKEITBIGGA(num))])
|
||||
#define H_PART(num) QUOTE(linearConversion [ARR_5(0,2,(missionNamespace getVariable [ARR_2(QUOTE(QEGVAR(inventory,inventoryDisplaySize)),0)]),H_BIS(num),H_MAKEITBIGGA(num))])
|
||||
|
||||
class GVAR(remoteInventory) {
|
||||
idd = -1;
|
||||
|
@ -45,7 +45,7 @@
|
||||
<Hungarian>Előtöltött műrakéta</Hungarian>
|
||||
<Russian>Предзаряженная ракетная болванка</Russian>
|
||||
<Italian>Missile inerte precaricato</Italian>
|
||||
<Portuguese>Míssel inerte pré-carregado</Portuguese>
|
||||
<Portuguese>Míssil inerte pré-carregado</Portuguese>
|
||||
<Japanese>仮置きのミサイルをあらかじめ装填</Japanese>
|
||||
<Korean>더미 미사일을 미리 장전하기</Korean>
|
||||
<Chinese>預裝訓練導彈</Chinese>
|
||||
|
@ -13,8 +13,8 @@ class RscTitles {
|
||||
class controls {
|
||||
class background: RscPicture {
|
||||
idc = 1000;
|
||||
x = QUOTE(profileNamespace getVariable [ARR_2('TRIPLES(IGUI,GVAR(grid),X)', (safeZoneX + safeZoneW) - 12.9 * GUI_GRID_W)]);
|
||||
y = QUOTE(profileNamespace getVariable [ARR_2('TRIPLES(IGUI,GVAR(grid),Y)', safeZoneY + 0.175 * safeZoneH)]);
|
||||
x = QUOTE(profileNamespace getVariable [ARR_2('TRIPLES(IGUI,GVAR(grid),X)',(safeZoneX + safeZoneW) - 12.9 * GUI_GRID_W)]);
|
||||
y = QUOTE(profileNamespace getVariable [ARR_2('TRIPLES(IGUI,GVAR(grid),Y)',safeZoneY + 0.175 * safeZoneH)]);
|
||||
w = QUOTE(8 * GUI_GRID_W);
|
||||
h = QUOTE(8 * GUI_GRID_H);
|
||||
text = QPATHTOF(data\dogtagSingle.paa);
|
||||
@ -26,8 +26,8 @@ class RscTitles {
|
||||
sizeEx = QUOTE(GUI_GRID_H);
|
||||
colorText[] = {1, 1, 1, 1};
|
||||
colorBackground[] = {0, 0, 0, 0};
|
||||
x = QUOTE(1.6 * GUI_GRID_W + (profileNamespace getVariable [ARR_2('TRIPLES(IGUI,GVAR(grid),X)', (safeZoneX + safeZoneW) - 12.9 * GUI_GRID_W)]));
|
||||
y = QUOTE(0.065 * safeZoneH + (profileNamespace getVariable [ARR_2('TRIPLES(IGUI,GVAR(grid),Y)', safeZoneY + 0.175 * safeZoneH)]));
|
||||
x = QUOTE(1.6 * GUI_GRID_W + (profileNamespace getVariable [ARR_2('TRIPLES(IGUI,GVAR(grid),X)',(safeZoneX + safeZoneW) - 12.9 * GUI_GRID_W)]));
|
||||
y = QUOTE(0.065 * safeZoneH + (profileNamespace getVariable [ARR_2('TRIPLES(IGUI,GVAR(grid),Y)',safeZoneY + 0.175 * safeZoneH)]));
|
||||
w = QUOTE(5.9 * GUI_GRID_W);
|
||||
h = QUOTE(3 * GUI_GRID_H);
|
||||
font = "RobotoCondensed";
|
||||
|
@ -17,7 +17,7 @@ if (["ACE_Medical"] call EFUNC(common,isModLoaded)) then {
|
||||
{!isNil {_target getVariable QGVAR(dogtagData)}}
|
||||
] call EFUNC(interact_menu,createAction);
|
||||
|
||||
["ACE_bodyBagObject", 0, ["ACE_MainActions"], _checkTagAction] call EFUNC(interact_menu,addActionToClass);
|
||||
["ACE_bodyBagObject", 0, ["ACE_MainActions"], _checkTagAction, true] call EFUNC(interact_menu,addActionToClass);
|
||||
|
||||
private _takeTagAction = [
|
||||
"ACE_TakeDogtag",
|
||||
@ -27,7 +27,7 @@ if (["ACE_Medical"] call EFUNC(common,isModLoaded)) then {
|
||||
{(!isNil {_target getVariable QGVAR(dogtagData)}) && {((_target getVariable [QGVAR(dogtagTaken), objNull]) != _target)}}
|
||||
] call EFUNC(interact_menu,createAction);
|
||||
|
||||
["ACE_bodyBagObject", 0, ["ACE_MainActions"], _takeTagAction] call EFUNC(interact_menu,addActionToClass);
|
||||
["ACE_bodyBagObject", 0, ["ACE_MainActions"], _takeTagAction, true] call EFUNC(interact_menu,addActionToClass);
|
||||
};
|
||||
|
||||
if (isServer) then {
|
||||
|
@ -75,14 +75,13 @@ private _hintLMB = LLSTRING(Drop);
|
||||
getCursorObjectParams params ["_cursorObject", "", "_distance"];
|
||||
|
||||
if (
|
||||
!isNull _cursorObject &&
|
||||
{_distance < MAX_LOAD_DISTANCE} &&
|
||||
{[_unit, _cursorObject, ["isNotCarrying"]] call EFUNC(common,canInteractWith)} &&
|
||||
!isNull _cursorObject && {[_unit, _cursorObject, ["isNotCarrying"]] call EFUNC(common,canInteractWith)} &&
|
||||
{
|
||||
if (_target isKindOf "CAManBase") then {
|
||||
[_cursorObject, 0, true] call EFUNC(common,nearestVehiclesFreeSeat) isNotEqualTo []
|
||||
(_distance <= MAX_LOAD_DISTANCE_MAN) && {[_cursorObject, 0, true] call EFUNC(common,nearestVehiclesFreeSeat) isNotEqualTo []}
|
||||
} else {
|
||||
["ace_cargo"] call EFUNC(common,isModLoaded) &&
|
||||
{EGVAR(cargo,enable)} &&
|
||||
{[_target, _cursorObject] call EFUNC(cargo,canLoadItemIn)}
|
||||
}
|
||||
}
|
||||
|
@ -79,7 +79,7 @@ if !(_target isKindOf "CAManBase") then {
|
||||
|
||||
// Recreate UAV crew (add a frame delay or this may cause the vehicle to be moved to [0,0,0])
|
||||
if (_target getVariable [QGVAR(isUAV), false]) then {
|
||||
[{
|
||||
[{
|
||||
params ["_target"];
|
||||
if (!alive _target) exitWith {};
|
||||
TRACE_2("restoring uav crew",_target,getPosASL _target);
|
||||
@ -97,11 +97,13 @@ if (_mass != 0) then {
|
||||
// Reset temp direction
|
||||
_target setVariable [QGVAR(carryDirection_temp), nil];
|
||||
|
||||
private _cursorObject = cursorObject;
|
||||
getCursorObjectParams params ["_cursorObject", "", "_distance"];
|
||||
|
||||
// Try loading into vehicle
|
||||
if (_tryLoad && {!isNull _cursorObject} && {[_unit, _cursorObject, ["isNotCarrying"]] call EFUNC(common,canInteractWith)}) then {
|
||||
if (_target isKindOf "CAManBase") then {
|
||||
if (_distance > MAX_LOAD_DISTANCE_MAN) exitWith {};
|
||||
|
||||
private _vehicles = [_cursorObject, 0, true] call EFUNC(common,nearestVehiclesFreeSeat);
|
||||
|
||||
if ([_cursorObject] isEqualTo _vehicles) then {
|
||||
@ -114,6 +116,7 @@ if (_tryLoad && {!isNull _cursorObject} && {[_unit, _cursorObject, ["isNotCarryi
|
||||
} else {
|
||||
if (
|
||||
["ace_cargo"] call EFUNC(common,isModLoaded) &&
|
||||
{EGVAR(cargo,enable)} &&
|
||||
{[_target, _cursorObject] call EFUNC(cargo,canLoadItemIn)}
|
||||
) then {
|
||||
[_unit, _target, _cursorObject] call EFUNC(cargo,startLoadIn);
|
||||
|
@ -16,7 +16,7 @@
|
||||
|
||||
#include "\z\ace\addons\main\script_macros.hpp"
|
||||
|
||||
#define MAX_LOAD_DISTANCE 5
|
||||
#define MAX_LOAD_DISTANCE_MAN 5
|
||||
|
||||
#define DRAG_ANIMATIONS ["amovpercmstpslowwrfldnon_acinpknlmwlkslowwrfldb_2", "amovpercmstpsraswpstdnon_acinpknlmwlksnonwpstdb_2", "amovpercmstpsnonwnondnon_acinpknlmwlksnonwnondb_2", "acinpknlmstpsraswrfldnon", "acinpknlmstpsnonwpstdnon", "acinpknlmstpsnonwnondnon", "acinpknlmwlksraswrfldb", "acinpknlmwlksnonwnondb", "ace_dragging_rifle_limpb", "ace_dragging", "ace_dragging_limpb", "ace_dragging_static", "ace_dragging_drop"]
|
||||
#define CARRY_ANIMATIONS ["acinpercmstpsnonwnondnon", "acinpknlmstpsnonwnondnon_acinpercmrunsnonwnondnon"]
|
||||
|
@ -181,9 +181,15 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Dragging_weightCoefficient_DisplayName">
|
||||
<English>Max Weight Coefficient</English>
|
||||
<French>Coefficient de poids maximal</French>
|
||||
<Korean>최대 무게 계수</Korean>
|
||||
<German>Maximaler Gewichtskoeffizient</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Dragging_weightCoefficient_Description">
|
||||
<English>Modifies weight limit calculations. Set to 0 to ignore.</English>
|
||||
<French>Modifie les calculs de limite de poids. Configurer à 0 pour ignorer.</French>
|
||||
<Korean>무게 제한 계산을 수정합니다. 무시하려면 0으로 설정하십시오.</Korean>
|
||||
<German>Ändert die Berechnung der Gewichtsbegrenzung. Zum Ignorieren auf 0 setzen.</German>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
@ -6,8 +6,8 @@ class EGVAR(arsenal,stats) {
|
||||
stats[] = {QGVAR(Range)};
|
||||
displayName = CSTRING(statExploRange);
|
||||
showText = 1;
|
||||
textStatement = QUOTE(params [ARR_2('_stat', '_config')]; private _exploRangeStat = getNumber (_config >> _stat select 0); format [ARR_3('%1m (%2ft)', _exploRangeStat, (_exploRangeStat / 0.3048) toFixed 1)]);
|
||||
condition = QUOTE(params [ARR_2('', '_config')]; (getNumber (_config >> QQGVAR(Detonator))) > 0);
|
||||
textStatement = QUOTE(params [ARR_2('_stat','_config')]; private _exploRangeStat = getNumber (_config >> _stat select 0); format [ARR_3('%1m (%2ft)',_exploRangeStat,(_exploRangeStat / 0.3048) toFixed 1)]);
|
||||
condition = QUOTE(params [ARR_2('','_config')]; (getNumber (_config >> QQGVAR(Detonator))) > 0);
|
||||
tabs[] = {{}, {7}};
|
||||
};
|
||||
};
|
||||
|
@ -56,7 +56,7 @@ class ACE_Triggers {
|
||||
isAttachable = 1;
|
||||
displayName = CSTRING(timerName);
|
||||
picture = QPATHTOF(data\UI\Timer.paa);
|
||||
onPlace = QUOTE([ARR_4(_this select 1, _this select 3 select 0, nil, _this select 0)] call FUNC(startTimer); false);
|
||||
onPlace = QUOTE([ARR_4(_this select 1,_this select 3 select 0,nil,_this select 0)] call FUNC(startTimer); false);
|
||||
onSetup = QUOTE(_this call FUNC(openTimerUI));
|
||||
};
|
||||
class Tripwire {
|
||||
|
@ -28,7 +28,7 @@ class Extended_Take_EventHandlers {
|
||||
};
|
||||
class Extended_Put_EventHandlers {
|
||||
class CAManBase {
|
||||
GVAR(takeHandler) = QUOTE([ARR_3(_this select 1, _this select 0, _this select 2)] call FUNC(onInventoryChanged));
|
||||
GVAR(takeHandler) = QUOTE([ARR_3(_this select 1,_this select 0,_this select 2)] call FUNC(onInventoryChanged));
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -11,7 +11,7 @@ class CfgVehicles {
|
||||
exceptions[] = {"isNotSwimming", "isNotInside", "isNotSitting"};
|
||||
showDisabled = 1;
|
||||
icon = QPATHTOF(UI\Explosives_Menu_ca.paa);
|
||||
insertChildren = QUOTE([_player] call FUNC(addTransmitterActions););
|
||||
insertChildren = QUOTE([_player] call FUNC(addTransmitterActions));
|
||||
class ACE_Place {
|
||||
displayName = CSTRING(Place);
|
||||
statement = "";
|
||||
@ -49,7 +49,7 @@ class CfgVehicles {
|
||||
distance = 1;
|
||||
displayName = CSTRING(Defuse);
|
||||
condition = QUOTE([ARR_2(_player,_target)] call FUNC(canDefuse));
|
||||
statement = QUOTE([ARR_2(_player,_target)] call FUNC(startDefuse););
|
||||
statement = QUOTE([ARR_2(_player,_target)] call FUNC(startDefuse));
|
||||
exceptions[] = {"isNotSwimming"};
|
||||
icon = QPATHTOF(UI\Defuse_ca.paa);
|
||||
};
|
||||
@ -87,7 +87,7 @@ class CfgVehicles {
|
||||
displayName = CSTRING(TriggerMenu);
|
||||
condition = "true";
|
||||
statement = "";
|
||||
insertChildren = QUOTE([ARR_3(_target getVariable QUOTE(QGVAR(class)),_target,_player)] call FUNC(addTriggerActions););
|
||||
insertChildren = QUOTE([ARR_3(_target getVariable QUOTE(QGVAR(class)),_target,_player)] call FUNC(addTriggerActions));
|
||||
showDisabled = 0;
|
||||
exceptions[] = {"isNotSwimming"};
|
||||
icon = QPATHTOF(UI\Explosives_Menu_ca.paa);
|
||||
|
@ -142,7 +142,7 @@ class Rsc_ACE_PhoneInterface {
|
||||
w = "0.0309375 * safezoneW";
|
||||
h = "0.033 * safezoneH";
|
||||
tooltip = CSTRING(Phone_AddToSpeedDial);
|
||||
action = QUOTE([ARR_2(ctrlText 1401,ctrlText 1400)] call FUNC(addToSpeedDial););
|
||||
action = QUOTE([ARR_2(ctrlText 1401,ctrlText 1400)] call FUNC(addToSpeedDial));
|
||||
};
|
||||
class clear: Rsc_ACE_HiddenButton {
|
||||
idc = 1610;
|
||||
@ -160,7 +160,7 @@ class Rsc_ACE_PhoneInterface {
|
||||
w = "0.04125 * safezoneW";
|
||||
h = "0.033 * safezoneH";
|
||||
tooltip = CSTRING(Phone_Dial);
|
||||
action = QUOTE([ARR_2(ace_player,ctrlText 1400)] call FUNC(dialPhone););
|
||||
action = QUOTE([ARR_2(ace_player,ctrlText 1400)] call FUNC(dialPhone));
|
||||
};
|
||||
class up: Rsc_ACE_HiddenButton {
|
||||
idc = 1612;
|
||||
|
@ -5,7 +5,7 @@ class RscTitles {
|
||||
duration = 9999999;
|
||||
fadein = 0;
|
||||
fadeout = 0;
|
||||
onLoad = QUOTE(uiNamespace setVariable [ARR_2(QQGVAR(virtualAmmoDisplay), _this select 0)]);
|
||||
onLoad = QUOTE(uiNamespace setVariable [ARR_2(QQGVAR(virtualAmmoDisplay),_this select 0)]);
|
||||
class controls {};
|
||||
class objects {
|
||||
class TheObject {
|
||||
|
@ -2,7 +2,7 @@ class GVAR(timerUI) {
|
||||
idd = -1;
|
||||
movingEnable = 1;
|
||||
enableSimulation = 1;
|
||||
onLoad = QUOTE(uiNamespace setVariable [ARR_2(QQGVAR(timerDisplay), _this select 0)]);
|
||||
onLoad = QUOTE(uiNamespace setVariable [ARR_2(QQGVAR(timerDisplay),_this select 0)]);
|
||||
class controlsBackground {
|
||||
class Header: RscText {
|
||||
idc = -1;
|
||||
|
@ -13,7 +13,7 @@
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [FUNC(dialingPhone), 0.25, [_unit,4,_arr,_code]] call CALLSTACK(CBA_fnc_addPerFrameHandler);
|
||||
* [ace_explosives_fnc_dialingPhone, 0.25, [_unit,4,_arr,_code]] call CBA_fnc_addPerFrameHandler;
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
@ -83,8 +83,8 @@ class CfgVehicles {
|
||||
};
|
||||
class ACE_fastRope {
|
||||
displayName = CSTRING(Interaction_fastRope);
|
||||
condition = QUOTE([ARR_2(_player, _target)] call FUNC(canFastRope));
|
||||
statement = QUOTE([ARR_2(_player, _target)] call FUNC(fastRope));
|
||||
condition = QUOTE([ARR_2(_player,_target)] call FUNC(canFastRope));
|
||||
statement = QUOTE([ARR_2(_player,_target)] call FUNC(fastRope));
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -162,7 +162,7 @@
|
||||
<French>Déployer les cordes de 3 m</French>
|
||||
<Polish>Wysuń linę o długości 3 m.</Polish>
|
||||
<Russian>Выпустить 3 м канат</Russian>
|
||||
<Portuguese>Jogar cordar (3m)</Portuguese>
|
||||
<Portuguese>Jogar cordas (3m)</Portuguese>
|
||||
<Italian>Dispiegamento corde 3m</Italian>
|
||||
<Czech>Připravit 3m lana</Czech>
|
||||
<Turkish>3m halat sal</Turkish>
|
||||
@ -178,7 +178,7 @@
|
||||
<French>Déployer les cordes de 6 m</French>
|
||||
<Polish>Wysuń linę o długości 6 m.</Polish>
|
||||
<Russian>Выпустить 6 м канат</Russian>
|
||||
<Portuguese>Jogar cordar (6m)</Portuguese>
|
||||
<Portuguese>Jogar cordas (6m)</Portuguese>
|
||||
<Italian>Dispiegamento corde 6m</Italian>
|
||||
<Czech>Připravit 6m lana</Czech>
|
||||
<Turkish>6m halat sal</Turkish>
|
||||
@ -195,7 +195,7 @@
|
||||
<Japanese>12m ロープを展開</Japanese>
|
||||
<Polish>Wysuń linę o długości 12 m.</Polish>
|
||||
<Russian>Выпустить 12 м канат</Russian>
|
||||
<Portuguese>Jogar cordar (12m)</Portuguese>
|
||||
<Portuguese>Jogar cordas (12m)</Portuguese>
|
||||
<Chinese>部屬12公尺長之繩索</Chinese>
|
||||
<Chinesesimp>部署12米长的绳索</Chinesesimp>
|
||||
<Italian>Dispiegamento corde 12m</Italian>
|
||||
@ -211,7 +211,7 @@
|
||||
<Japanese>15m ロープを展開</Japanese>
|
||||
<Polish>Wysuń linę o długości 15 m.</Polish>
|
||||
<Russian>Выпустить 15 м канат</Russian>
|
||||
<Portuguese>Jogar cordar (15m)</Portuguese>
|
||||
<Portuguese>Jogar cordas (15m)</Portuguese>
|
||||
<Chinese>部屬15公尺長之繩索</Chinese>
|
||||
<Chinesesimp>部署15米长的绳索</Chinesesimp>
|
||||
<Italian>Dispiegamento corde 15m</Italian>
|
||||
@ -227,7 +227,7 @@
|
||||
<Japanese>18m ロープを展開</Japanese>
|
||||
<Polish>Wysuń linę o długości 18 m.</Polish>
|
||||
<Russian>Выпустить 18 м канат</Russian>
|
||||
<Portuguese>Jogar cordar (18m)</Portuguese>
|
||||
<Portuguese>Jogar cordas (18m)</Portuguese>
|
||||
<Chinese>部屬18公尺長之繩索</Chinese>
|
||||
<Chinesesimp>部署18米长的绳索</Chinesesimp>
|
||||
<Italian>Dispiegamento corde 18m</Italian>
|
||||
@ -243,7 +243,7 @@
|
||||
<Japanese>27m ロープを展開</Japanese>
|
||||
<Polish>Wysuń linę o długości 27 m.</Polish>
|
||||
<Russian>Выпустить 27 м канат</Russian>
|
||||
<Portuguese>Jogar cordar (27m)</Portuguese>
|
||||
<Portuguese>Jogar cordas (27m)</Portuguese>
|
||||
<Chinese>部屬27公尺長之繩索</Chinese>
|
||||
<Chinesesimp>部署27米长的绳索</Chinesesimp>
|
||||
<Italian>Dispiegamento corde 27m</Italian>
|
||||
@ -259,7 +259,7 @@
|
||||
<Japanese>36m ロープを展開</Japanese>
|
||||
<Polish>Wysuń linę o długości 36 m.</Polish>
|
||||
<Russian>Выпустить 36 м канат</Russian>
|
||||
<Portuguese>Jogar cordar (36m)</Portuguese>
|
||||
<Portuguese>Jogar cordas (36m)</Portuguese>
|
||||
<Chinese>部屬36公尺長之繩索</Chinese>
|
||||
<Chinesesimp>部署36米长的绳索</Chinesesimp>
|
||||
<Italian>Dispiegamento corde 36m</Italian>
|
||||
|
@ -1,7 +1,7 @@
|
||||
class ACE_UI {
|
||||
class gunnerZeroing {
|
||||
class conditions {
|
||||
ADDON = QUOTE(getNumber ([ARR_2(vehicle ACE_player, ACE_player call CBA_fnc_turretPath)] call CBA_fnc_getTurret >> 'ace_fcs_enabled') != 1);
|
||||
ADDON = QUOTE(getNumber ([ARR_2(vehicle ACE_player,ACE_player call CBA_fnc_turretPath)] call CBA_fnc_getTurret >> 'ace_fcs_enabled') != 1);
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -27,7 +27,7 @@ class CfgVehicles {
|
||||
class ResetFCS {
|
||||
displayName = CSTRING(ResetFCS);
|
||||
condition = QUOTE(_player call FUNC(canResetFCS));
|
||||
statement = QUOTE([ARR_2(vehicle _player,[_player] call DEFUNC(common,getTurretIndex))] call DFUNC(reset););
|
||||
statement = QUOTE([ARR_2(vehicle _player,[_player] call DEFUNC(common,getTurretIndex))] call DFUNC(reset));
|
||||
showDisabled = 0;
|
||||
icon = "";
|
||||
};
|
||||
@ -39,7 +39,7 @@ class CfgVehicles {
|
||||
class ResetFCS {
|
||||
displayName = CSTRING(ResetFCS);
|
||||
condition = QUOTE(_player call FUNC(canResetFCS));
|
||||
statement = QUOTE([ARR_2(vehicle _player,[_player] call DEFUNC(common,getTurretIndex))] call DFUNC(reset););
|
||||
statement = QUOTE([ARR_2(vehicle _player,[_player] call DEFUNC(common,getTurretIndex))] call DFUNC(reset));
|
||||
showDisabled = 0;
|
||||
icon = "";
|
||||
};
|
||||
|
@ -12,15 +12,15 @@ class RscTitles {
|
||||
class controls {
|
||||
class Thirst: RscPicture {
|
||||
idc = IDC_COLORED_HUD_THIRST;
|
||||
x = QUOTE(profileNamespace getVariable [ARR_2(QUOTE(QUOTE(TRIPLES(IGUI,XGVAR(grid),X))), safeZoneX + safeZoneW - 4.2 * GUI_GRID_W)]);
|
||||
y = QUOTE(profileNamespace getVariable [ARR_2(QUOTE(QUOTE(TRIPLES(IGUI,XGVAR(grid),Y))), safeZoneY + safeZoneH - 2.2 * GUI_GRID_H)]);
|
||||
x = QUOTE(profileNamespace getVariable [ARR_2(QUOTE(QUOTE(TRIPLES(IGUI,XGVAR(grid),X))),safeZoneX + safeZoneW - 4.2 * GUI_GRID_W)]);
|
||||
y = QUOTE(profileNamespace getVariable [ARR_2(QUOTE(QUOTE(TRIPLES(IGUI,XGVAR(grid),Y))),safeZoneY + safeZoneH - 2.2 * GUI_GRID_H)]);
|
||||
w = QUOTE(2 * GUI_GRID_W);
|
||||
h = QUOTE(2 * GUI_GRID_H);
|
||||
text = QPATHTOF(ui\icon_hud_thirststatus.paa);
|
||||
};
|
||||
class Hunger: Thirst {
|
||||
idc = IDC_COLORED_HUD_HUNGER;
|
||||
x = QUOTE(2 * GUI_GRID_W + (profileNamespace getVariable [ARR_2(QUOTE(QUOTE(TRIPLES(IGUI,XGVAR(grid),X))), safeZoneX + safeZoneW - 4.2 * GUI_GRID_W)]));
|
||||
x = QUOTE(2 * GUI_GRID_W + (profileNamespace getVariable [ARR_2(QUOTE(QUOTE(TRIPLES(IGUI,XGVAR(grid),X))),safeZoneX + safeZoneW - 4.2 * GUI_GRID_W)]));
|
||||
text = QPATHTOF(ui\icon_hud_hungerstatus.paa);
|
||||
};
|
||||
};
|
||||
@ -35,23 +35,23 @@ class RscTitles {
|
||||
class controlsBackground {
|
||||
class Thirst: RscPicture {
|
||||
idc = -1;
|
||||
x = QUOTE(profileNamespace getVariable [ARR_2(QUOTE(QUOTE(TRIPLES(IGUI,XGVAR(grid),X))), safeZoneX + safeZoneW - 4.2 * GUI_GRID_W)]);
|
||||
y = QUOTE(profileNamespace getVariable [ARR_2(QUOTE(QUOTE(TRIPLES(IGUI,XGVAR(grid),Y))), safeZoneY + safeZoneH - 2.2 * GUI_GRID_H)]);
|
||||
x = QUOTE(profileNamespace getVariable [ARR_2(QUOTE(QUOTE(TRIPLES(IGUI,XGVAR(grid),X))),safeZoneX + safeZoneW - 4.2 * GUI_GRID_W)]);
|
||||
y = QUOTE(profileNamespace getVariable [ARR_2(QUOTE(QUOTE(TRIPLES(IGUI,XGVAR(grid),Y))),safeZoneY + safeZoneH - 2.2 * GUI_GRID_H)]);
|
||||
w = QUOTE(2 * GUI_GRID_W);
|
||||
h = QUOTE(2 * GUI_GRID_H);
|
||||
text = QPATHTOF(ui\icon_hud_thirststatus.paa);
|
||||
colorText[] = {1, 1, 1, 0.2};
|
||||
};
|
||||
class Hunger: Thirst {
|
||||
x = QUOTE(2 * GUI_GRID_W + (profileNamespace getVariable [ARR_2(QUOTE(QUOTE(TRIPLES(IGUI,XGVAR(grid),X))), safeZoneX + safeZoneW - 4.2 * GUI_GRID_W)]));
|
||||
x = QUOTE(2 * GUI_GRID_W + (profileNamespace getVariable [ARR_2(QUOTE(QUOTE(TRIPLES(IGUI,XGVAR(grid),X))),safeZoneX + safeZoneW - 4.2 * GUI_GRID_W)]));
|
||||
text = QPATHTOF(ui\icon_hud_hungerstatus.paa);
|
||||
};
|
||||
};
|
||||
class controls {
|
||||
class ThirstGroup: RscControlsGroupNoScrollbars {
|
||||
idc = IDC_DRAINING_HUD_THIRST_GROUP;
|
||||
x = QUOTE(profileNamespace getVariable [ARR_2(QUOTE(QUOTE(TRIPLES(IGUI,XGVAR(grid),X))), safeZoneX + safeZoneW - 4.2 * GUI_GRID_W)]);
|
||||
y = QUOTE(profileNamespace getVariable [ARR_2(QUOTE(QUOTE(TRIPLES(IGUI,XGVAR(grid),Y))), safeZoneY + safeZoneH - 2.2 * GUI_GRID_H)]);
|
||||
x = QUOTE(profileNamespace getVariable [ARR_2(QUOTE(QUOTE(TRIPLES(IGUI,XGVAR(grid),X))),safeZoneX + safeZoneW - 4.2 * GUI_GRID_W)]);
|
||||
y = QUOTE(profileNamespace getVariable [ARR_2(QUOTE(QUOTE(TRIPLES(IGUI,XGVAR(grid),Y))),safeZoneY + safeZoneH - 2.2 * GUI_GRID_H)]);
|
||||
w = QUOTE(2 * GUI_GRID_W);
|
||||
h = QUOTE(2 * GUI_GRID_H);
|
||||
class controls {
|
||||
@ -67,7 +67,7 @@ class RscTitles {
|
||||
};
|
||||
class HungerGroup: ThirstGroup {
|
||||
idc = IDC_DRAINING_HUD_HUNGER_GROUP;
|
||||
x = QUOTE(2 * GUI_GRID_W + (profileNamespace getVariable [ARR_2(QUOTE(QUOTE(TRIPLES(IGUI,XGVAR(grid),X))), safeZoneX + safeZoneW - 4.2 * GUI_GRID_W)]));
|
||||
x = QUOTE(2 * GUI_GRID_W + (profileNamespace getVariable [ARR_2(QUOTE(QUOTE(TRIPLES(IGUI,XGVAR(grid),X))),safeZoneX + safeZoneW - 4.2 * GUI_GRID_W)]));
|
||||
class controls: controls {
|
||||
class Icon: Icon {
|
||||
idc = IDC_DRAINING_HUD_HUNGER_ICON;
|
||||
|
@ -11,7 +11,7 @@
|
||||
* Can Drink From Source <BOOL>
|
||||
*
|
||||
* Example:
|
||||
* [_player, _source] call ace_field_rations_canDrinkFromSource
|
||||
* [_player, _source] call ace_field_rations_fnc_canDrinkFromSource
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
@ -11,7 +11,7 @@
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [_player, _source] call ace_field_rations_drinkFromSource
|
||||
* [_player, _source] call ace_field_rations_fnc_drinkFromSource
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
@ -11,7 +11,7 @@
|
||||
* Animation <STRING>
|
||||
*
|
||||
* Example:
|
||||
* [_player, _source] call ace_field_rations_getDrinkAnimation
|
||||
* [_player, _source] call ace_field_rations_fnc_getDrinkAnimation
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
@ -10,7 +10,7 @@
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* call acex_field_rations_fnc_scanFieldRations
|
||||
* call ace_field_rations_fnc_scanFieldRations
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
@ -620,7 +620,7 @@
|
||||
<Japanese>ウォーターボトル</Japanese>
|
||||
<Korean>물병</Korean>
|
||||
<Polish>Butelka wody</Polish>
|
||||
<Portuguese>Garrafa de agua</Portuguese>
|
||||
<Portuguese>Garrafa de água</Portuguese>
|
||||
<Russian>Бутылка воды (полная)</Russian>
|
||||
<Spanish>Botella de agua</Spanish>
|
||||
<Turkish>Su Şişesi</Turkish>
|
||||
|
@ -10,11 +10,11 @@
|
||||
// SELF INTERACT KEYBIND - %12
|
||||
// INTERACT KEYBIND - %13
|
||||
#define BASE_ARGUMENTS "' '", \
|
||||
QUOTE([ARR_2('ACE3 Common', QQEGVAR(interact_menu,selfInteractKey))] call FUNC(getKeybindName)), \
|
||||
QUOTE([ARR_2('ACE3 Common', QQEGVAR(interact_menu,interactKey))] call FUNC(getKeybindName))
|
||||
QUOTE([ARR_2('ACE3 Common',QQEGVAR(interact_menu,selfInteractKey))] call FUNC(getKeybindName)), \
|
||||
QUOTE([ARR_2('ACE3 Common',QQEGVAR(interact_menu,interactKey))] call FUNC(getKeybindName))
|
||||
|
||||
// MEDCIAL MENU KEYBIND - %14
|
||||
#define MEDICAL_MENU_KEYBIND QUOTE([ARR_2('ACE3 Common', QQEGVAR(medical_gui,openMedicalMenuKey))] call FUNC(getKeybindName))
|
||||
#define MEDICAL_MENU_KEYBIND QUOTE([ARR_2('ACE3 Common',QQEGVAR(medical_gui,openMedicalMenuKey))] call FUNC(getKeybindName))
|
||||
|
||||
|
||||
class CfgHints {
|
||||
|
@ -22,96 +22,115 @@
|
||||
<English>Hunger</English>
|
||||
<Polish>Głód</Polish>
|
||||
<Korean>허기</Korean>
|
||||
<German>Hunger</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_FieldManual_Field_Rations_Hunger_Description">
|
||||
<English>%3Hunger%4 increases linearly with soldier's movement speed. Restore by eating food.<br/><br/>%3Usage:%4<br/>%2Pick up food.<br/>%2Use [%3%12%4] and select %3Survival%4.<br/>%2Choose an item to consume.</English>
|
||||
<Polish>%3Głód%4 zwiększa się liniowo wraz z prędkością ruchu. Odnawiany przez spożywanie jedzenia.<br/><br/>%3Użycie:%4<br/>%2Podnieś jedzenie.<br/>%2Użyj [%3%12%4] i wybierz %3Surwiwal%4.<br/>%2Wybierz pokarm do zjedzenia</Polish>
|
||||
<Korean>%3허기%4는 병사의 이동속도에 따라 선형적으로 증가합니다. 음식을 섭취하여 회복하십시오.<br/><br/>%3사용 방법:%4<br/>%2음식을 집으십시오.<br/>%2[%3%12%4]를 사용하여 %3생존%4을 선택하십시오.<br/>%2섭취할 아이템을 선택하십시오.</Korean>
|
||||
<German>%3Hunger%4 steigt linear mit der Bewegungsgeschwindigkeit des Soldaten. Regeneriert sich, indem Nahrung zu sich genommen wird.<br/><br/>%3Verwende:%4<br/>%2Nahrung einsammeln.<br/>%2Verwende [%3%12%4] und wählen %3Überleben%4.<br />%2Wähle einen Gegenstand zum Verzehr aus.</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_FieldManual_Field_Rations_Thirst_DisplayName">
|
||||
<English>Thirst</English>
|
||||
<Polish>Pragnienie</Polish>
|
||||
<Korean>갈증</Korean>
|
||||
<German>Durst</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_FieldManual_Field_Rations_Thirst_Description">
|
||||
<English>%3Thirst%4 increases linearly with soldier's movement speed. Restore by drinking liquids.<br/><br/>%3Usage:%4<br/>%2Pick up a drink.<br/>%2Use [%3%12%4] and select %3Survival%4.<br/>%2Choose an item to consume.</English>
|
||||
<Polish>%3Pragnienie%4 zwiększa się liniowo wraz z prędkością ruchu. Odnawiane przez spożywanie napojów.<br/><br/>%3Użycie:%4<br/>%2Podnieś napój.<br/>%2Użyj [%3%12%4] i wybierz %3Surwiwal%4.<br/>%2Wybierz napój do wypicia.</Polish>
|
||||
<Korean>%3허기%4은 병사의 이동속도에 따라 선형적으로 증가합니다. 음료를 섭취하여 회복하십시오.<br/><br/>%3사용 방법:%4<br/>%2음료를 집으십시오.<br/>%2[%3%12%4]를 사용하여 %3생존%4을 선택하십시오.<br/>%2섭취할 아이템을 선택하십시오.</Korean>
|
||||
<German>%3Durst%4 steigt linear mit der Bewegungsgeschwindigkeit des Soldaten. Regeneriert sich durch das Trinken von Flüssigkeiten.<br/><br/>%3Verwende:%4<br/>%2Holen ein Getränk.<br/>%2Verwende [%3%12%4] und wähle %3Überleben%4.< br/>%2Wähle einen Gegenstand zum Verzehr aus.</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_FieldManual_Medical_Treatment_DisplayName">
|
||||
<English>Medical Treatment</English>
|
||||
<Polish>Opieka Medyczna</Polish>
|
||||
<Korean>의료 치료법</Korean>
|
||||
<German>Medizinische Behandlung</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_FieldManual_Medical_Treatment_Adenosine_ShortName">
|
||||
<English>Decrease Heart Rate</English>
|
||||
<Polish>Obniża Tętno</Polish>
|
||||
<Korean>심박수를 낮춥니다</Korean>
|
||||
<German>Verringere Herzfrequenz</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_FieldManual_Medical_Treatment_Adenosine_Description">
|
||||
<English>%3Adenosine%4 is used to decrease heart rate.<br/><br/>%3Usage:%4<br/>%2Use [%3%13%4] or [%3%14%4] and select an appendage.<br/>%2Inject %3Adenosine%4.</English>
|
||||
<Polish>%3Adenozyna%4 jest używana do obniżenia tętna.<br/><br/>%3Użycie:%4<br/>%2Użyj [%3%13%4] lub [%3%14%4] i wybierz kończynę.<br/>%2Wstrzyknij %3Adenozynę%4.</Polish>
|
||||
<Korean>%3아데노신%4은 심박수를 줄이기 위해 사용됩니다.<br/><br/>%3사용 방법%4<br/>%2[%3%13%4] 또는 [%3%14%4]를 사용하고 부위를 선택하십시오.<br/>%2%3아데노신%4을 주사하십시오.</Korean>
|
||||
<German>%3Adenosin%4 wird verwendet, um die Herzfrequenz zu senken.<br/><br/>%3Verwende:%4<br/>%2Verwende [%3%13%4] oder [%3%14%4] und wählen ein Körperteil aus.<br/>%2Injiziere %3Adenosin%4.</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_FieldManual_Medical_Treatment_Bandages_DisplayName">
|
||||
<English>Bandages</English>
|
||||
<Polish>Bandaże</Polish>
|
||||
<Korean>붕대</Korean>
|
||||
<German>Bandagen</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_FieldManual_Medical_Treatment_Bandages_ShortName">
|
||||
<English>Close Wounds</English>
|
||||
<Polish>Zamykają Rany</Polish>
|
||||
<Korean>상처를 막습니다</Korean>
|
||||
<German>Wunden schließen</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_FieldManual_Medical_Treatment_Bandages_Description">
|
||||
<English>%3Bandages%4 stop bleeding and close wounds. Depending on your settings, bandages may reopen if surgery is not performed.<br/><br/>%2%3Field Dressing:%4<br/>%11<t color='#D9D900'>Average</t> In All Categories<br/>%2%3Packing Bandage:%4<br/>%11<t color='#D9D900'>Average</t> Treatment<br/>%11<t color='#E60000'>Higher</t> Reopen Chance<br/>%11<t color='#00CC00'>Longer</t> Reopen Delay<br/>%2%3Elastic Bandage:%4<br/>%11<t color='#00CC00'>Higher</t> Treatment<br/>%11<t color='#E60000'>Higher</t> Reopen Chance<br/>%11<t color='#E60000'>Shorter</t> Reopen Delay<br/>%2%3Quickclot:%4<br/>%11<t color='#E60000'>Lower</t> Treatment<br/>%11<t color='#00CC00'>Lower</t> Reopen Chance<br/>%11<t color='#00CC00'>Longer</t> Reopening Delay<br/><br/>%3Usage:%4<br/>%2Use [%3%13%4] or [%3%14%4] and select a injured body part.<br/>%2Bandage body part by selecting desired %3Bandage%4 type.</English>
|
||||
<Polish>%3Bandaże%4 zatrzymają krwawienie i zamykają rany. W zależności od twoich ustawień, bandaże mogą się otwierać, jeżeli rany nie są zaszyte. <br/><br/>%2%3Bandaż Jałowy:%4<br/>%11<t color='#D9D900'>Przeciętne</t> We wszystkich kategoriach<br/>%2%3Bandaż Uciskowy: %4<br/>%11<t color='#D9D900'>Przeciętne</t> Leczenie<br/>%11<t color='#E60000'>Wyższa</t> Szansa Otwarcia<br/>%11<t color='#00CC00'>Dłuższe</t> Opóźnienie Otwarcia<br/>%2%3Bandaż Elastyczny: %4<br/>%11<t color='#00CC00'>Lepsze</t> Leczenie<br/>%11<t color='#E60000'>Wyższa</t> Szansa Otwarcia<br/>%11<t color='#E60000'>Krótsze</t> Opóźnienie Otwarcia<br/>%2%3Quickclot: %4<br/>%11<t color='#E60000'>Gorsze</t> Leczenie<br/>%11<t color='#00CC00'>Niższa</t> Szansa Otwarcia<br/>%11<t color='#00CC00'>Dłuższe</t> Opóźnienie Otwarcia<br/><br/>%3Użycie:%4<br/>%2Użyj [%3%13%4] lub [%3%14%4] i wybierz zranioną część ciała. <br/>%2Zabandażuj ranę wybierając typ %3Bandażu%4.</Polish>
|
||||
<Korean>%3붕대%4는 출혈을 멈추고 상처를 치료합니다.설정에 따라 수술을 하지 않을 경우 붕대가 다시 풀릴 수 있습니다.<br/><br/>%2%3붕대(기본):%4<br/>모든 카테고리에 대해 %11<tcolor='#D9D900'>평균</t>적임<br/>%2%3붕대(거즈):%4<br/><br/>%11<t color='#D9D900'>평균</t>적인 치료 효과<br/>%11<t color='#E60000'>높은</t> 풀림 확률<br/>%11<t color='#00CC00'>긴</t> 풀림 딜레이<br/>%2%3붕대(압박):%4<br/>%11<t color='#00CC00'>높은</t> 치료 효과<br/>%11<t color='#E60000'>높은</t> 풀림 확률<br/>%11<t color='#E60000'>짧은</t> 풀림 딜레이<br/>%2%3붕대(퀵 클롯):%4<br/>%11<t color='#E60000'>낮은</t> 치료 효과<br/>%11<t color='#00CC00'>낮은</t> 풀림 확률<br/>%11<t color='#00CC00'>긴</t> 풀림 딜레이<br/><br/>%3사용 방법:%4<br/>%2[%3%13%4] 또는 [%3%14%4]를 사용하고 부상당한 신체부위를 선택하십시오.<br/>%2원하는 종류의 %3붕대%4를 선택하여 신체부위에 붕대를 감으십시오.</Korean>
|
||||
<German>%3Verbände%4 stoppen Blutungen und schließen Wunden. Abhängig von Ihren Einstellungen können sich Verbände wieder öffnen, wenn keine Operation durchgeführt wird.<br/><br/>%2%3Einfache Bandage:%4<br/>%11<t color='#D9D900'>Durchschnittlich</t> In allen Kategorien<br/>%2%3Mullbinde:%4<br/>%11<t color='#D9D900'>Durchschnittliche</t> Behandlung<br/>%11<t color='#E60000' >Höhere</t> Wiedereröffnungswahrscheinlichkeit<br/>%11<t color='#00CC00'>Längere</t> Wiedereröffnungsverzögerung<br/>%2%3Elastischer Verband:%4<br/>%11<t color='#00CC00'>Längere</t> Behandlung<br/>%11<t color='#E60000'>Höhere</t> Chance auf Wiedereröffnung<br/>%11<t color='#E60000'> Kürzere</t> Wiedereröffnungsverzögerung<br/>%2%3Quickclot:%4<br/>%11<t color='#E60000'>Kürzere</t> Behandlung<br/>%11<t color=' #00CC00'>Geringere</t> Wiedereröffnungswahrscheinlichkeit<br/>%11<t color='#00CC00'>Längere</t> Wiedereröffnungsverzögerung<br/><br/>%3Verwende:%4<br/> %2Verwenden Sie [%3%13%4] oder [%3%14%4] und wähle ein verletztes Körperteil aus.<br/>%2Verbinde ein Körperteil, indem der gewünschte %3Bandagen%4-Typ ausgewählt wurde.</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_FieldManual_Medical_Treatment_IVFluids_DisplayName">
|
||||
<English>IV Fluids</English>
|
||||
<Polish>Płyny IV</Polish>
|
||||
<Korean>IV 수액</Korean>
|
||||
<German>IV-Flüssigkeiten</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_FieldManual_Medical_Treatment_IVFluids_ShortName">
|
||||
<English>Restore Blood Volume</English>
|
||||
<Polish>Przywracają Krew</Polish>
|
||||
<Korean>혈액량을 회복합니다</Korean>
|
||||
<German>Blutvolumen wiederherstellen</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_FieldManual_Medical_Treatment_IVFluids_Description">
|
||||
<English>%3IV fluids%4 restore lost blood volume. Blood, Plasma, and Saline are functionally the same.<br/><br/>%3Usage:%4<br/>%2Use [%3%13%4] or [%3%14%4] and select an appendage.<br/>%2Restore blood volume by selecting desired %3IV Fluid%4 type.</English>
|
||||
<Polish>%3Płyny IV%4 przywracają poziom krwi. Krew, Osocze, i Sól Fizjologiczna są takie same pod względem funkcjonalności.<br/><br/>%3Użycie:%4<br/>%2Użyj [%3%13%4] lub [%3%14%4] i wybierz kończynę.<br/>%2Przywróć poziom krwi przez podanie wybrego %3Płynu IV%4.</Polish>
|
||||
<Korean>%3수액용기%4는 손실된 혈액량을 보충합니다. 혈액, 혈장 및 생리식염수는 기능적으로 동일합니다.<br/><br/>%3사용 방법:%4<br/>%2[%3%13%4] 또는 [%3%14%4]를 사용하고 부위를 선택하십시오.<br/>%2원하는 %3수액용기%4 종류를 선택하여 혈액량을 보충하십시오.</Korean>
|
||||
<German>%3IV-Flüssigkeiten%4 stellen das verlorene Blutvolumen wieder her. Blut, Plasma und Kochsalzlösung sind funktionell gleich.<br/><br/>%3Verwende:%4<br/>%2Verwende [%3%13%4] oder [%3%14%4] und wählen ein Körperteil aus..<br/>%2Stelle das Blutvolumen wieder her, indem der gewünschte %3IV Flüssigkeitstyp%4 ausgewählt wird.</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_FieldManual_Medical_Treatment_Epinephrine_ShortName">
|
||||
<English>Increase Heart Rate | Wake Up Faster</English>
|
||||
<Polish>Zwiększ Tętno | Obudź się Szybciej</Polish>
|
||||
<Korean>심박수 상승 | 더 빨리 일어남</Korean>
|
||||
<German>Herzfrequenz erhöhen | Wache schneller auf</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_FieldManual_Medical_Treatment_Epinephrine_Description">
|
||||
<English>%3Epinephrine%4 increases a patient's pulse as well as potentially decreasing the time between consciousnesss checks (effectively reducing the time needed for the patient to wake up).<br/><br/>%3Usage%4<br/>%2Use [%3%13%4] or [%3%14%4] and select an appendage.<br/>%2Inject %3Epinephrine%4.</English>
|
||||
<Polish>%3Adrenalina%4 zwiększa tętno pacjenta, zmniejszając czas pomiędzy sprawdzeniami przytomności (efektywnie redukując czas potrzebny do przebudzenia się pacjenta).<br/><br/>%3Użycie%4<br/>%2Użyj [%3%13%4] lub [%3%14%4] i wybierz kończynę.<br/>%2Wstrzyknij %3Adrenalinę%4.</Polish>
|
||||
<Korean>%3에피네프린%4는 환자의 맥박을 증가시킬 뿐만 아니라 의식 검사 사이의 시간을 감소시킬 수 있습니다(환자가 깨어나는 데 필요한 시간을 효과적으로 단축).<br>%3t사용 방법:%4<br/>%2[%3%13%4] 또는 [%3%14%4]를 선택하고 부위를 선택하십시오.<br/>%2%3에피네프린%4을 주사하십시오.</Korean>
|
||||
<German>%3Epinephrine%4 erhöht den Puls eines Patienten und verkürzt möglicherweise die Zeit zwischen Bewusstseinskontrollen (wodurch die Zeit, die der Patient zum Aufwachen benötigt, effektiv verkürzt wird).<br/><br/>%3Verwendung%4<br/>%2Verwende [%3%13%4] oder [%3%14%4] und wählen ein Körperteil aus.<br/>%2Injiziere %3Epinephrine%4.</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_FieldManual_Medical_Treatment_PAK_ShortName">
|
||||
<English>Restore Like New</English>
|
||||
<Polish>Jak Nowo Narodzony</Polish>
|
||||
<Korean>신체 완치</Korean>
|
||||
<German>Wie neu wiederherstellen</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_FieldManual_Medical_Treatment_PAK_Description">
|
||||
<English>The %3Personal Aid Kit%4 is an item that allows a soldier to be fully healed. Independent of %3ACE Settings%4, it requires that the patient is in %3Stable Condition%4 before use.<br/><br/>%3Stable Condition%4 qualifies as:<br/>%2Unit is %3Alive%4.<br/>%2Unit is %3Conscious%4.<br/>%2Unit has no active %3Bleeding%4.<br/>%2Heart Rate >= 40.<br/>%2Systolic BP >= 60.<br/>%2Diastolic BP >= 50.<br/><br/>%3Usage:%4<br/>%2Move to appropriate location depending on %3ACE Settings%4.<br/>%2Use [%3%13%4] or [%3%14%4] and select %3Advanced Treatments%4<br/>%2Select %3Use Personal Aid Kit%4.</English>
|
||||
<Polish>%3Apteczka Osobista%4 jest przedmiotem pozwalającym na pełne uleczenie gracza. Niezależnie od %3Ustawień ACE%4, wymagane jest, aby pacjent był w%3Stanie Stabilnym%4 przed jej użyciem.<br/><br/>%3Stan Stabilny%4 występuje gdy:<br/>%2Jednostka jest %3Żywa%4.<br/>%2Jednostka jest %3Przytomna%4.<br/>%2Jednostka nie%3Krwawu%4.<br/>%2Tętno>= 40. <br/>%2Ciśnienie Skurczowe >= 60.<br/>%2Ciśnienie Rozkurczowe >= 50.<br/><br/>%3Użycie:%4<br/>%2Udaj się do właściwej lokacji żależnej od %3Ustawień ACE%4.<br/>%2Użyj [%3%13%4] lub [%3%14%4] i wybierz %3Zaawansowane Zabiegi%4.<br/>%2Wybierz %3Użyj Apteczki Osobistej%4.</Polish>
|
||||
<Korean>%3개인응급키트%4는 병사를 완치시킬 수 있는 아이템입니다. %3ACE 설정%4과 무관하게 사용 전에 환자가 %3안정된 상태%4로 있어야 합니다.<br/><br/>%3안정된 상태%4는 다음 조건이 필요합니다:<br/>%2유닛이 %3살아있어야%4 합니다.<br/>%2유닛은 %3의식이 있어야%4 합니다.<br/>%2유닛은 %3출혈이 일어나지 않은 상태%4여야 합니다.<br/>%2심박수가 40 이상이어야 합니다.<br/>%2수축 혈압이 60 이상이어야 합니다.<br/>이완 혈압이 50 이상이어야 합니다.<br/><br/>%3사용 방법:%4<br/>%2%3ACE 설정%4에 따라 적절한 위치로 이동하십시오.<br/>%2[%3%13%4] 또는 [%3%14%4]를 사용하여 %3고급 치료%4를 선택하십시오.<br/>%2%3개인응급키트 사용%4을 선택하십시오.</Korean>
|
||||
<German>Das %3Persönliche Erste Hilfe Kit%4 ist ein Gegenstand, der es einem Soldaten ermöglicht, vollständig geheilt zu werden. Unabhängig von den %3ACE-Einstellungen%4 ist es erforderlich, dass sich der Patient vor der Verwendung in einem %3stabilen Zustand%4 befindet.<br/><br/>%3Stabiler Zustand%4 gilt wenn:<br/>%2Einheit ist %3am Leben%4 .<br/>%2Einheit ist %3Bei Bewusstsein%4.<br/>%2Einheit hat keine aktive %3Blutung%4.<br/>%2Herzfrequenz >= 40.<br/>%2Systolischer Blutdruck >= 60.< br/>%2Diastolischer Blutdruck >= 50.<br/><br/>%3Verwende:%4<br/>%2Bewege den Patienten je nach %3ACE-Einstellungen%4 an den entsprechenden Ort.<br/>%2Verwende [%3% 13%4] oder [%3%14%4] und wähle %3Erweiterte Behandlungen%4<br/>%2Wähle %3Persönliche Erste Hilfe Kit verwenden%4.</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_FieldManual_Medical_Treatment_Splint_ShortName">
|
||||
<English>Fix Fractures</English>
|
||||
<Polish>Opatrywanie Złamań</Polish>
|
||||
<Korean>골절을 치료합니다</Korean>
|
||||
<German>Brüche richten</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_FieldManual_Medical_Treatment_Splint_Description">
|
||||
<English>A %3Splint%4 is used to fix fractures. The %3Splint%4 is consumed when used.<br/><br/>%3Usage:%4<br/>%2Use [%3%13%4] or [%3%14%4] and select an affected appendage.<br/>%2Select %3Apply Splint%4.</English>
|
||||
<Polish>%3Szyna%4 jest używana do leczenie złamań. %3Szyna%4 jest zużywana po wykorzystaniu.<br/><br/>%3Użycie:%4<br/>%2Użyj [%3%13%4] lub [%3%14%4] i wybierz kończynę, na którą ma być założona.<br/>%2Wybierz %3Załóż Szynę%4.</Polish>
|
||||
<Korean>%3부목%4은 골절을 치료하는 데 사용되며 %3부목%4은 사용 시 소모됩니다.<br/><br/>%3사용 방법%4<br/>%2[%3%13%4] 또는 [%3%14%4]를 사용하여 해당 부위를 선택하십시오.<br/>%2%3부목 대기%4를 선택하십시오.</Korean>
|
||||
<German>Ein %3Splint%4 wird zur Fixierung von Frakturen verwendet. Der %3Splint%4 wird bei Verwendung verbraucht.<br/><br/>%3Verwendung:%4<br/>%2Verwende [%3%13%4] oder [%3%14%4] und wählen ein Körperteil aus.<br/>%2Wähle %3Schiene verwenden%4.</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_FieldManual_Medical_Treatment_SurgicalKit_ShortName">
|
||||
<English>Prevent Wounds From Reopening</English>
|
||||
|
@ -1,2 +1,3 @@
|
||||
[rapify]
|
||||
enabled = false
|
||||
[tools]
|
||||
pboProject_noBinConfig = true
|
||||
sqfvm_skipConfigChecks = true
|
||||
|
@ -1,5 +1,6 @@
|
||||
#include "script_component.hpp"
|
||||
|
||||
#pragma hemtt flag pe23_ignore_has_include
|
||||
#if __has_include("\z\ace\addons\nomedical\script_component.hpp")
|
||||
#define PATCH_SKIP "No Medical"
|
||||
#endif
|
||||
|
@ -12,7 +12,7 @@
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [FUNC(fireManagerPFH), 0.25, [_unit]] call CBA_fnc_addPerFrameHandler
|
||||
* [ace_fire_fnc_fireManagerPFH, 0.25, [_unit]] call CBA_fnc_addPerFrameHandler
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
@ -10,7 +10,7 @@
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* call ace_frag_fnc_addTack
|
||||
* call ace_frag_fnc_dev_addTrack
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
@ -11,7 +11,7 @@
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* call ace_frag_fnc_debugAmmo
|
||||
* call ace_frag_fnc_dev_debugAmmo
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
@ -10,7 +10,7 @@
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* call ace_frag_fnc_drawTraces
|
||||
* call ace_frag_fnc_dev_drawTraces
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
@ -10,6 +10,7 @@
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* None
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
@ -6,7 +6,7 @@ class EGVAR(arsenal,stats) {
|
||||
stats[] = {"ACE_GForceCoef"};
|
||||
displayName = CSTRING(statGReduction);
|
||||
showBar = 1;
|
||||
barStatement = QUOTE([ARR_3((_this select 0) select 0, _this select 1, [ARR_3([ARR_2(1, 0)], [ARR_2(0.01, 1)], false)])] call EFUNC(arsenal,statBarStatement_default));
|
||||
barStatement = QUOTE([ARR_3((_this select 0) select 0,_this select 1,[ARR_3([ARR_2(1,0)],[ARR_2(0.01,1)],false)])] call EFUNC(arsenal,statBarStatement_default));
|
||||
condition = QUOTE(getNumber (_this select 1 >> (_this select 0) select 0) > 0);
|
||||
tabs[] = {{3}, {}};
|
||||
};
|
||||
|
@ -28,7 +28,7 @@ if ([_unit] call FUNC(isGogglesVisible)) then {
|
||||
private _dirtImage = getText (configFile >> "CfgGlasses" >> goggles _unit >> "ACE_OverlayDirt");
|
||||
|
||||
if (_dirtImage != "") then {
|
||||
GVAR(GogglesEffectsLayer) cutRsc ["RscACE_GogglesEffects", "PLAIN", 0.1, false];
|
||||
GVAR(GogglesEffectsLayer) cutRsc ["RscACE_GogglesEffects", "PLAIN", 0.1, false, false];
|
||||
(GETUVAR(GVAR(DisplayEffects),displayNull) displayCtrl 10660) ctrlSetText _dirtImage;
|
||||
|
||||
private _effectBrightness = linearConversion [0,1,([] call EFUNC(common,ambientBrightness)),0.25,1];
|
||||
|
@ -20,7 +20,7 @@ if (call FUNC(ExternalCamera)) exitWith {};
|
||||
private _unit = ACE_player;
|
||||
|
||||
if ([_unit] call FUNC(isGogglesVisible)) exitWith {
|
||||
GVAR(GogglesEffectsLayer) cutRsc ["RscACE_GogglesEffects", "PLAIN", 2, false];
|
||||
GVAR(GogglesEffectsLayer) cutRsc ["RscACE_GogglesEffects", "PLAIN", 2, false, false];
|
||||
|
||||
((GETUVAR(GVAR(DisplayEffects),displayNull)) displayCtrl 10662) ctrlSetText format [getText (configFile >> "CfgGlasses" >> goggles _unit >> "ACE_DustPath"), GETDUSTT(DAMOUNT) + 1];
|
||||
|
||||
|
@ -47,7 +47,7 @@ private _imagePath = getText (_config >> ["ACE_Overlay", "ACE_OverlayCracked"] s
|
||||
private _angle = getNumber (_config >> "ACE_Overlay_Angle");
|
||||
|
||||
if (_imagePath != "") then {
|
||||
GVAR(GogglesLayer) cutRsc ["RscACE_Goggles", "PLAIN", 1, false];
|
||||
GVAR(GogglesLayer) cutRsc ["RscACE_Goggles", "PLAIN", 1, false, false];
|
||||
private _overlay = (GLASSDISPLAY displayCtrl 10650);
|
||||
_overlay ctrlSetText _imagePath;
|
||||
|
||||
|
@ -41,7 +41,7 @@ if (getText (_config >> "ACE_OverlayCracked") != "") then {
|
||||
if (call FUNC(ExternalCamera)) exitWith {};
|
||||
|
||||
if (isNull (GLASSDISPLAY)) then {
|
||||
GVAR(GogglesLayer) cutRsc ["RscACE_Goggles", "PLAIN", 1, false];
|
||||
GVAR(GogglesLayer) cutRsc ["RscACE_Goggles", "PLAIN", 1, false, false];
|
||||
};
|
||||
|
||||
(GLASSDISPLAY displayCtrl 10650) ctrlSetText getText (_config >> "ACE_OverlayCracked");
|
||||
|
@ -11,7 +11,7 @@
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [player, target] call ace_gunbag_fnc_swapGunbag
|
||||
* [player, target] call ace_gunbag_fnc_swapGunbagCallback
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
@ -61,7 +61,7 @@
|
||||
<Italian>Metti l'arma nella borsa per armi</Italian>
|
||||
<Chinesesimp>将武器放置枪袋</Chinesesimp>
|
||||
<Chinese>將武器放置槍袋</Chinese>
|
||||
<Portuguese>Colocar arma na Bosla de Arma</Portuguese>
|
||||
<Portuguese>Colocar arma na Bolsa de Arma</Portuguese>
|
||||
<Turkish>Silahını silah çantasına koy</Turkish>
|
||||
<Spanish>Poner el arma en la funda</Spanish>
|
||||
</Key>
|
||||
|
@ -9,7 +9,7 @@ class Cfg3DEN {
|
||||
property = QXGVAR(blacklist);
|
||||
control = "Checkbox";
|
||||
condition = "objectControllable";
|
||||
expression = QUOTE(_this setVariable [ARR_3(QQXGVAR(blacklist), _value, true)]);
|
||||
expression = QUOTE(_this setVariable [ARR_3(QQXGVAR(blacklist),_value,true)]);
|
||||
defaultValue = "(false)";
|
||||
};
|
||||
};
|
||||
@ -25,7 +25,7 @@ class Cfg3DEN {
|
||||
tooltip = CSTRING(BlacklistEdenDesc);
|
||||
property = QXGVAR(blacklist);
|
||||
control = "Checkbox";
|
||||
expression = QUOTE(_this setVariable [ARR_3(QQXGVAR(blacklist), _value, true)]);
|
||||
expression = QUOTE(_this setVariable [ARR_3(QQXGVAR(blacklist),_value,true)]);
|
||||
defaultValue = "(false)";
|
||||
};
|
||||
};
|
||||
|
@ -6,7 +6,7 @@ class EGVAR(arsenal,stats) {
|
||||
stats[] = {QGVAR(protection)};
|
||||
displayName= CSTRING(statHearingProtection);
|
||||
showBar = 1;
|
||||
barStatement = QUOTE([ARR_3((_this select 0) select 0, _this select 1, [ARR_3([ARR_2(0, 1)], [ARR_2(0.01, 1)], false)])] call EFUNC(arsenal,statBarStatement_default));
|
||||
barStatement = QUOTE([ARR_3((_this select 0) select 0,_this select 1,[ARR_3([ARR_2(0,1)],[ARR_2(0.01,1)],false)])] call EFUNC(arsenal,statBarStatement_default));
|
||||
tabs[] = {{6}, {}};
|
||||
};
|
||||
class ACE_volumeMuffling: statBase {
|
||||
@ -15,7 +15,7 @@ class EGVAR(arsenal,stats) {
|
||||
stats[] = {QGVAR(lowerVolume)};
|
||||
displayName= CSTRING(statHearingLowerVolume);
|
||||
showBar = 1;
|
||||
barStatement = QUOTE([ARR_3((_this select 0) select 0, _this select 1, [ARR_3([ARR_2(0, 1)], [ARR_2(0.01, 1)], false)])] call EFUNC(arsenal,statBarStatement_default));
|
||||
barStatement = QUOTE([ARR_3((_this select 0) select 0,_this select 1,[ARR_3([ARR_2(0,1)],[ARR_2(0.01,1)],false)])] call EFUNC(arsenal,statBarStatement_default));
|
||||
tabs[] = {{6}, {}};
|
||||
};
|
||||
};
|
||||
|
@ -20,7 +20,7 @@ class Extended_PostInit_EventHandlers {
|
||||
class Extended_Init_EventHandlers {
|
||||
class CAManBase {
|
||||
class GVAR(AddEarPlugs) {
|
||||
serverInit = QUOTE( _this call FUNC(addEarPlugs) );
|
||||
serverInit = QUOTE(_this call FUNC(addEarPlugs));
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -7,15 +7,15 @@ class CfgVehicles {
|
||||
displayName = CSTRING(EarPlugs_On);
|
||||
condition = QUOTE(GVAR(EnableCombatDeafness) && {!([_player] call FUNC(hasEarPlugsIn)) && {'ACE_EarPlugs' in items _player}});
|
||||
exceptions[] = {"isNotSwimming", "isNotInside", "isNotSitting"};
|
||||
statement = QUOTE([ARR_2(_player, true)] call FUNC(putInEarPlugs));
|
||||
statement = QUOTE([ARR_2(_player,true)] call FUNC(putInEarPlugs));
|
||||
showDisabled = 0;
|
||||
icon = QPATHTOF(UI\ACE_earplugs_x_ca.paa);
|
||||
};
|
||||
class ACE_RemoveEarplugs {
|
||||
displayName = CSTRING(EarPlugs_Off);
|
||||
condition = QUOTE( GVAR(EnableCombatDeafness) && {[_player] call FUNC(hasEarPlugsIn)});
|
||||
condition = QUOTE(GVAR(EnableCombatDeafness) && {[_player] call FUNC(hasEarPlugsIn)});
|
||||
exceptions[] = {"isNotSwimming", "isNotInside", "isNotSitting"};
|
||||
statement = QUOTE([ARR_2(_player, true)] call FUNC(removeEarPlugs));
|
||||
statement = QUOTE([ARR_2(_player,true)] call FUNC(removeEarPlugs));
|
||||
showDisabled = 0;
|
||||
icon = QPATHTOF(UI\ACE_earplugs_x_ca.paa);
|
||||
};
|
||||
|
@ -9,6 +9,7 @@
|
||||
<Japanese>ハンターキラー</Japanese>
|
||||
<Polish>Hunter Killer</Polish>
|
||||
<German>Hunter Killer</German>
|
||||
<French>Hunter Killer</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_HunterKiller_override">
|
||||
<English>Override</English>
|
||||
@ -18,6 +19,7 @@
|
||||
<Japanese>オーバーライド</Japanese>
|
||||
<Polish>Nadpisanie</Polish>
|
||||
<German>Überschreibe</German>
|
||||
<French>Surcharge</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_HunterKiller_override_description">
|
||||
<English>Force other turret to slew onto your viewpoint</English>
|
||||
@ -27,6 +29,7 @@
|
||||
<Japanese>他のタレットを強制的に自分の視点に旋回させる</Japanese>
|
||||
<Polish>Obróć drugą wieżyczkę w kierunku, w którym zwrócona jest twoja wieżyczka.</Polish>
|
||||
<German>Zwingt andere Türme, sich auf deine Blickrichtung zu drehen</German>
|
||||
<French>Force une autre tourelle à s'aligner sur votre point de vue.</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_HunterKiller_observe">
|
||||
<English>Observe</English>
|
||||
@ -36,6 +39,7 @@
|
||||
<Japanese>オブザーブ</Japanese>
|
||||
<Polish>Obserwowanie</Polish>
|
||||
<German>Observiere</German>
|
||||
<French>Observation</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_HunterKiller_observe_description">
|
||||
<English>Slew your turret onto other turret's viewpoint</English>
|
||||
@ -45,6 +49,7 @@
|
||||
<Japanese>自分のタレットを相手のタレットの視点に旋回させる。</Japanese>
|
||||
<Polish>Obróć swoją wieżyczkę tam, gdzie patrzy druga.</Polish>
|
||||
<German>Richtet deinen Turm auf die Blickrichtung eines anderen Turms</German>
|
||||
<French>Aligne votre tourelle sur le point de vue d'une autre tourelle.</French>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user