mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
Merge branch 'master' into doc-ballistics
Merge upstream in to make upstream merge easier
This commit is contained in:
commit
bdc3b20624
@ -73,6 +73,7 @@ Raspu86
|
||||
Riccardo Petricca <petriccarcc@gmail.com>
|
||||
Robert Boklahánics <bokirobi@gmail.com>
|
||||
ramius86 <pasini86@hotmail.com>
|
||||
SilentSpike <SilentSpike100@gmail.com>
|
||||
simon84 <badguy360th@gmail.com>
|
||||
Sniperwolf572 <tenga6@gmail.com>
|
||||
Tachi <zaveruha007@gmail.com>
|
||||
@ -93,5 +94,6 @@ VyMajoris(W-Cephei)<vycanismajoriscsa@gmail.com>
|
||||
Bla1337
|
||||
nikolauska <nikolauska1@gmail.com>
|
||||
adam3adam <br.ada@seznam.cz>
|
||||
Professor <lukas.trneny@wo.cz>
|
||||
Professor <lukas.trneny@wo.cz>
|
||||
Winter <simon@agius-muscat.net>
|
||||
Dharma Bellamkonda <dharma.bellamkonda@gmail.com>
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
ace_fcs.dll
BIN
ace_fcs.dll
Binary file not shown.
@ -2,7 +2,7 @@ class CfgVehicles {
|
||||
class ACE_Module;
|
||||
class GVAR(ModuleSettings): ACE_Module {
|
||||
scope = 2;
|
||||
displayName = "Advanced Ballistics";
|
||||
displayName = "$STR_ACE_AdvancedBallistics_DisplayName";
|
||||
icon = QUOTE(PATHTOF(UI\Icon_Module_Wind_ca.paa));
|
||||
category = "ACE";
|
||||
function = QUOTE(DFUNC(initModuleSettings));
|
||||
@ -12,26 +12,26 @@ class CfgVehicles {
|
||||
author = "Ruthberg";
|
||||
class Arguments {
|
||||
class enabled {
|
||||
displayName = "Advanced Ballistics";
|
||||
description = "Enables advanced ballistics";
|
||||
displayName = "$STR_ACE_AdvancedBallistics_enabled_DisplayName";
|
||||
description = "$STR_ACE_AdvancedBallistics_enabled_Description";
|
||||
typeName = "BOOL";
|
||||
defaultValue = 0;
|
||||
};
|
||||
class alwaysSimulateForSnipers {
|
||||
displayName = "Always Enabled For Snipers";
|
||||
description = "Always enables advanced ballistics when high power optics are used";
|
||||
displayName = "$STR_ACE_AdvancedBallistics_alwaysSimulateForSnipers_DisplayName";
|
||||
description = "$STR_ACE_AdvancedBallistics_alwaysSimulateForSnipers_Description";
|
||||
typeName = "BOOL";
|
||||
defaultValue = 1;
|
||||
};
|
||||
class disabledInFullAutoMode {
|
||||
displayName = "Disabled In FullAuto Mode";
|
||||
description = "Disables the advanced ballistics during full auto fire";
|
||||
displayName = "$STR_ACE_AdvancedBallistics_disabledInFullAutoMod_DisplayName";
|
||||
description = "$STR_ACE_AdvancedBallistics_disabledInFullAutoMod_Description";
|
||||
typeName = "BOOL";
|
||||
defaultValue = 0;
|
||||
};
|
||||
class onlyActiveForLocalPlayers {
|
||||
displayName = "Disabled For Non Local Players";
|
||||
description = "Disables the advanced ballistics for bullets coming from other players (enable this if you encounter frame drops during heavy firefights in multiplayer)";
|
||||
displayName = "$STR_ACE_AdvancedBallistics_onlyActiveForLocalPlayers_DisplayName";
|
||||
description = "$STR_ACE_AdvancedBallistics_onlyActiveForLocalPlayers_Description";
|
||||
typeName = "BOOL";
|
||||
defaultValue = 1;
|
||||
};
|
||||
@ -44,35 +44,38 @@ class CfgVehicles {
|
||||
};
|
||||
*/
|
||||
class ammoTemperatureEnabled {
|
||||
displayName = "Enable Ammo Temperature Simulation";
|
||||
description = "Muzzle velocity varies with ammo temperature";
|
||||
displayName = "$STR_ACE_AdvancedBallistics_ammoTemperatureEnabled_DisplayName";
|
||||
description = "$STR_ACE_AdvancedBallistics_ammoTemperatureEnabled_Description";
|
||||
typeName = "BOOL";
|
||||
defaultValue = 1;
|
||||
};
|
||||
class barrelLengthInfluenceEnabled {
|
||||
displayName = "Enable Barrel Length Simulation";
|
||||
description = "Muzzle velocity varies with barrel length";
|
||||
displayName = "$STR_ACE_AdvancedBallistics_barrelLengthInfluenceEnabled_DisplayName";
|
||||
description = "$STR_ACE_AdvancedBallistics_barrelLengthInfluenceEnabled_Description";
|
||||
typeName = "BOOL";
|
||||
defaultValue = 1;
|
||||
};
|
||||
class bulletTraceEnabled {
|
||||
displayName = "Enable Bullet Trace Effect";
|
||||
description = "Enables a bullet trace effect to high caliber bullets (only visible when looking through high power optics)";
|
||||
displayName = "$STR_ACE_AdvancedBallistics_bulletTraceEnabled_DisplayName";
|
||||
description = "$STR_ACE_AdvancedBallistics_bulletTraceEnabled_Description";
|
||||
typeName = "BOOL";
|
||||
defaultValue = 1;
|
||||
};
|
||||
class simulationInterval {
|
||||
displayName = "Simulation Interval";
|
||||
description = "Defines the interval between every calculation step";
|
||||
displayName = "$STR_ACE_AdvancedBallistics_simulationInterval_DisplayName";
|
||||
description = "$STR_ACE_AdvancedBallistics_simulationInterval_Description";
|
||||
typeName = "NUMBER";
|
||||
defaultValue = 0.0;
|
||||
};
|
||||
class simulationRadius {
|
||||
displayName = "Simulation Radius";
|
||||
description = "Defines the radius around the player (in meters) at which advanced ballistics are applied to projectiles";
|
||||
displayName = "$STR_ACE_AdvancedBallistics_simulationRadius_DisplayName";
|
||||
description = "$STR_ACE_AdvancedBallistics_simulationRadius_Description";
|
||||
typeName = "NUMBER";
|
||||
defaultValue = 3000;
|
||||
};
|
||||
};
|
||||
class ModuleDescription {
|
||||
description = "$STR_ACE_AdvancedBallistics_Description";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
@ -76,7 +76,7 @@ if (GVAR(barrelLengthInfluenceEnabled)) then {
|
||||
};
|
||||
|
||||
if (GVAR(ammoTemperatureEnabled)) then {
|
||||
_temperature = GET_TEMPERATURE_AT_HEIGHT((getPosASL _unit) select 2);
|
||||
_temperature = ((getPosASL _unit) select 2) call EFUNC(weather,calculateTemperatureAtHeight);
|
||||
_muzzleVelocityShift = [_AmmoCacheEntry select 9, _temperature] call FUNC(calculateAmmoTemperatureVelocityShift);
|
||||
if (_muzzleVelocityShift != 0) then {
|
||||
_bulletVelocity = _bulletVelocity vectorAdd ((vectorNormalized _bulletVelocity) vectorMultiply (_muzzleVelocityShift));
|
||||
@ -105,7 +105,7 @@ _barrelTwist = _WeaponCacheEntry select 0;
|
||||
_stabilityFactor = 1.5;
|
||||
|
||||
if (_caliber > 0 && _bulletLength > 0 && _bulletMass > 0 && _barrelTwist > 0) then {
|
||||
_temperature = GET_TEMPERATURE_AT_HEIGHT((getPosASL _unit) select 2);
|
||||
_temperature = ((getPosASL _unit) select 2) call EFUNC(weather,calculateTemperatureAtHeight);
|
||||
_barometricPressure = ((getPosASL _bullet) select 2) call EFUNC(weather,calculateBarometricPressure);
|
||||
_stabilityFactor = [_caliber, _bulletLength, _bulletMass, _barrelTwist, _muzzleVelocity, _temperature, _barometricPressure] call FUNC(calculateStabilityFactor);
|
||||
};
|
||||
|
@ -21,6 +21,5 @@
|
||||
#define SPECIFIC_GAS_CONSTANT_DRY_AIR 287.058
|
||||
#define STD_AIR_DENSITY_ICAO 1.22498
|
||||
#define STD_AIR_DENSITY_ASM 1.20885
|
||||
#define GET_TEMPERATURE_AT_HEIGHT(h) (EGVAR(weather,currentTemperature) - 0.0065 * (h))
|
||||
|
||||
#define EXTENSION_REQUIRED_VERSION "1.0"
|
||||
|
@ -25,5 +25,85 @@
|
||||
<Czech>Zobrazit úhloměr</Czech>
|
||||
<Portuguese>Mostrar Transferidor</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AdvancedBallistics_DisplayName">
|
||||
<English>Advanced Ballistics</English>
|
||||
<Polish>Zaawansowana balistyka</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AdvancedBallistics_enabled_DisplayName">
|
||||
<English>Advanced Ballistics</English>
|
||||
<Polish>Zaawansowana balistyka</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AdvancedBallistics_enabled_Description">
|
||||
<English>Enables advanced ballistics</English>
|
||||
<Polish>Aktywuje zaawansowaną balistykę</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AdvancedBallistics_alwaysSimulateForSnipers_DisplayName">
|
||||
<English>Always Enabled For Snipers</English>
|
||||
<Polish>Zawsze akt. dla snajp.</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AdvancedBallistics_alwaysSimulateForSnipers_Description">
|
||||
<English>Always enables advanced ballistics when high power optics are used</English>
|
||||
<Polish>Aktywuje zaawansowaną balistykę zawsze, kiedy używana jest optyka</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AdvancedBallistics_disabledInFullAutoMod_DisplayName">
|
||||
<English>Disabled In FullAuto Mode</English>
|
||||
<Polish>Wył. podczas ognia auto.</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AdvancedBallistics_disabledInFullAutoMod_Description">
|
||||
<English>Disables the advanced ballistics during full auto fire</English>
|
||||
<Polish>Dezaktywuje zaawansowaną balistykę podczas ognia automatycznego</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AdvancedBallistics_onlyActiveForLocalPlayers_DisplayName">
|
||||
<English>Disabled For Non Local Players</English>
|
||||
<Polish>Wyłącz dla nielok. graczy</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AdvancedBallistics_onlyActiveForLocalPlayers_Description">
|
||||
<English>Disables the advanced ballistics for bullets coming from other players (enable this if you encounter frame drops during heavy firefights in multiplayer)</English>
|
||||
<Polish>Dezaktywuje zaawansowaną balistykę dla pocisków pochodzących od innych graczy(aktywuj tą opcję jeżeli odczuwasz spadki FPS podczas sporych strzelanin w MP)</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AdvancedBallistics_ammoTemperatureEnabled_DisplayName">
|
||||
<English>Enable Ammo Temperature Simulation</English>
|
||||
<Polish>Symulacja temp. amunicji</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AdvancedBallistics_ammoTemperatureEnabled_Description">
|
||||
<English>Muzzle velocity varies with ammo temperature</English>
|
||||
<Polish>Prędkość wylotowa pocisku jest zależna od temperatury amunicji</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AdvancedBallistics_barrelLengthInfluenceEnabled_DisplayName">
|
||||
<English>Enable Barrel Length Simulation</English>
|
||||
<Polish>Symulacja długości lufy</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AdvancedBallistics_barrelLengthInfluenceEnabled_Description">
|
||||
<English>Muzzle velocity varies with barrel length</English>
|
||||
<Polish>Prędkość wylotowa pocisku jest zależna od długości lufy</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AdvancedBallistics_bulletTraceEnabled_DisplayName">
|
||||
<English>Enable Bullet Trace Effect</English>
|
||||
<Polish>Efekt smugi pocisku</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AdvancedBallistics_bulletTraceEnabled_Description">
|
||||
<English>Enables a bullet trace effect to high caliber bullets (only visible when looking through high power optics)</English>
|
||||
<Polish>Aktywuje efekt smugi pocisku dla pocisków wysokokalibrowych (widoczne tylko podczas patrzenia przez optykę)</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AdvancedBallistics_simulationInterval_DisplayName">
|
||||
<English>Simulation Interval</English>
|
||||
<Polish>Interwał symulacji</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AdvancedBallistics_simulationInterval_Description">
|
||||
<English>Defines the interval between every calculation step</English>
|
||||
<Polish>Określa interwał pomiędzy każdym krokiem kalkulacji</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AdvancedBallistics_simulationRadius_DisplayName">
|
||||
<English>Simulation Radius</English>
|
||||
<Polish>Zasięg symulacji</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AdvancedBallistics_simulationRadius_Description">
|
||||
<English>Defines the radius around the player (in meters) at which advanced ballistics are applied to projectiles</English>
|
||||
<Polish>Określa obszar naokoło gracza (w metrach), na którym zaawansowana balistyka jest aplikowana dla pocisków</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AdvancedBallistics_Description">
|
||||
<English></English>
|
||||
<Polish>Moduł ten pozwala aktywować zaawansowaną balistykę biorącą przy obliczeniach trajektorii lotu pocisku pod uwagę takie rzeczy jak temperatura powietrza, ciśnienie atmosferyczne, wilgotność powietrza, siły Coriolisa i Eotvosa, grawitację a także broń z jakiej wykonywany jest strzał oraz rodzaj amunicji. Wszystko to sprowadza się na bardzo dokładne odwzorowanie balistyki.</Polish>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
@ -95,36 +95,6 @@ if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) t
|
||||
GVAR(workingMemory) set [1, _muzzleVelocity];
|
||||
GVAR(workingMemory) set [2, _zeroRange];
|
||||
|
||||
private ["_elevationCur", "_windageCur", "_clickSize", "_clickNumber", "_clickInterval"];
|
||||
_elevationCur = GVAR(workingMemory) select 10;
|
||||
_windageCur = GVAR(workingMemory) select 11;
|
||||
|
||||
switch (GVAR(currentScopeUnit)) do {
|
||||
case 0: {
|
||||
_elevationCur = _elevationCur * 3.38;
|
||||
_windageCur = _windageCur * 3.38;
|
||||
};
|
||||
case 2: {
|
||||
_elevationCur = _elevationCur / 1.047;
|
||||
_windageCur = _windageCur / 1.047;
|
||||
};
|
||||
case 3: {
|
||||
switch (GVAR(workingMemory) select 7) do {
|
||||
case 0: { _clickSize = 1; };
|
||||
case 1: { _clickSize = 1 / 1.047; };
|
||||
case 2: { _clickSize = 3.38; };
|
||||
};
|
||||
_clickNumber = GVAR(workingMemory) select 8;
|
||||
_clickInterval = _clickSize / _clickNumber;
|
||||
|
||||
_elevationCur = Round(_elevationCur / _clickInterval);
|
||||
_windageCur = Round(_windageCur / _clickInterval);
|
||||
};
|
||||
};
|
||||
|
||||
GVAR(workingMemory) set [10, _elevationCur];
|
||||
GVAR(workingMemory) set [11, _windageCur];
|
||||
|
||||
[] call FUNC(update_gun);
|
||||
[] call FUNC(update_gun_ammo_data);
|
||||
[] call FUNC(update_atmosphere);
|
||||
|
@ -190,7 +190,7 @@ class CfgVehicles {
|
||||
class ACE_Box_Ammo: NATO_Box_Base {
|
||||
scope = 2;
|
||||
accuracy = 1000;
|
||||
displayName = "[ACE] Ammo Supply Crate";
|
||||
displayName = "$STR_ACE_AmmoSupplyCrate_DisplayName";
|
||||
model = "\A3\weapons_F\AmmoBoxes\AmmoBox_F";
|
||||
author = "$STR_ACE_Common_ACETeam";
|
||||
class TransportMagazines {
|
||||
|
@ -1,12 +1,12 @@
|
||||
ace_ballistics
|
||||
==============
|
||||
|
||||
Changes to weapon and ammunition values.
|
||||
|
||||
Changes to weapon, magazine and ammunition values.
|
||||
|
||||
## Maintainers
|
||||
|
||||
The people responsible for merging changes to this component or answering potential questions.
|
||||
|
||||
- [Ruthberg] (http://github.com/Ulteq)
|
||||
- [KoffeinFlummi](https://github.com/KoffeinFlummi)
|
||||
- [commy2](https://github.com/commy2)
|
||||
|
@ -1592,5 +1592,9 @@
|
||||
<Portuguese>Calibre: 12.7x99mm (AMAX)<br/>Cartuchos: 5</Portuguese>
|
||||
<Hungarian>Kaliber: 12,7x99mm (AMAX)<br />Lövedékek: 5</Hungarian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AmmoSupplyCrate_DisplayName">
|
||||
<English>[ACE] Ammo Supply Crate</English>
|
||||
<Polish>[ACE] Skrzynka z amunicją</Polish>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
||||
|
@ -161,7 +161,7 @@ class CfgVehicles {
|
||||
class GVAR(ModuleSurrender): Module_F {
|
||||
author = "$STR_ACE_Common_ACETeam";
|
||||
category = "ACE";
|
||||
displayName = "Make Unit Surrender";
|
||||
displayName = "$STR_ACE_Captives_ModuleSurrender_DisplayName"; //Make Unit Surrender
|
||||
function = QUOTE(DFUNC(moduleSurrender));
|
||||
scope = 2; //show in editor
|
||||
scopeCurator = 2; //show in zeus
|
||||
@ -172,8 +172,8 @@ class CfgVehicles {
|
||||
functionPriority = 0;
|
||||
class Arguments {};
|
||||
class ModuleDescription: ModuleDescription {
|
||||
description = "Sync a unit to make them surrender.<br/>Source: ace_captives";
|
||||
description = "$STR_ACE_Captives_ModuleSurrender_Description"; //Sync a unit to make them surrender.<br/>Source: ace_captives
|
||||
sync[] = {"AnyAI"};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
@ -193,5 +193,13 @@
|
||||
<Hungarian>Semmi sincs az egér alatt</Hungarian>
|
||||
<Italian>Nessuna selezione</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Captives_ModuleSurrender_DisplayName">
|
||||
<English>Make Unit Surrender</English>
|
||||
<Polish>Poddaj się!</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Captives_ModuleSurrender_Description">
|
||||
<English>Sync a unit to make them surrender.<br />Source: ace_captives</English>
|
||||
<Polish>Zsynchronizuj z jednostką aby sprawić by się poddała<br />Źródło: ace_captives</Polish>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
@ -25,72 +25,72 @@ class CfgVehicles {
|
||||
// += needs a non inherited entry in that class, otherwise it simply overwrites
|
||||
//#include <DefaultItems.hpp>
|
||||
|
||||
class Module_F;
|
||||
class ACE_ModuleCheckPBOs: Module_F {
|
||||
class Logic;
|
||||
class Module_F: Logic {
|
||||
class ModuleDescription {};
|
||||
};
|
||||
class ACE_ModuleCheckPBOs: Module_F {
|
||||
author = "$STR_ACE_Common_ACETeam";
|
||||
category = "ACE";
|
||||
displayName = "Check PBOs";
|
||||
displayName = "$STR_ACE_Common_CheckPBO_DisplayName";
|
||||
function = QFUNC(moduleCheckPBOs);
|
||||
scope = 2;
|
||||
isGlobal = 1;
|
||||
icon = QUOTE(PATHTOF(UI\Icon_Module_CheckPBO_ca.paa));
|
||||
class Arguments {
|
||||
class Action {
|
||||
displayName = "Action";
|
||||
description = "What to do with people who do not have the right PBOs?";
|
||||
displayName = "$STR_ACE_Common_CheckPBO_Action_DisplayName";
|
||||
description = "$STR_ACE_Common_CheckPBO_Action_Description";
|
||||
class values {
|
||||
class WarnOnce {
|
||||
default = 1;
|
||||
name = "Warn once";
|
||||
name = "$STR_ACE_Common_CheckPBO_Action_WarnOnce";
|
||||
value = 0;
|
||||
};
|
||||
class Warn {
|
||||
name = "Warn (permanent)";
|
||||
name = "$STR_ACE_Common_CheckPBO_Action_WarnPerm";
|
||||
value = 1;
|
||||
};
|
||||
class Kick {
|
||||
name = "Kick";
|
||||
name = "$STR_ACE_Common_CheckPBO_Action_Kick";
|
||||
value = 2;
|
||||
};
|
||||
};
|
||||
};
|
||||
class CheckAll {
|
||||
displayName = "Check all addons";
|
||||
description = "Check all addons instead of only those of ACE?";
|
||||
displayName = "$STR_ACE_Common_CheckPBO_CheckAll_DisplayName";
|
||||
description = "$STR_ACE_Common_CheckPBO_CheckAll_Description";
|
||||
typeName = "BOOL";
|
||||
class values {
|
||||
class WarnOnce {
|
||||
default = 1;
|
||||
name = "No";
|
||||
value = 0;
|
||||
};
|
||||
class Warn {
|
||||
name = "Yes";
|
||||
value = 1;
|
||||
};
|
||||
};
|
||||
defaultValue = 0;
|
||||
};
|
||||
class Whitelist {
|
||||
displayName = "Whitelist";
|
||||
description = "What addons are allowed regardless?";
|
||||
displayName = "$STR_ACE_Common_CheckPBO_Whitelist_DisplayName";
|
||||
description = "$STR_ACE_Common_CheckPBO_Whitelist_Description";
|
||||
typeName = "STRING";
|
||||
class values {
|
||||
default = "[]";
|
||||
};
|
||||
};
|
||||
};
|
||||
class ModuleDescription: ModuleDescription {
|
||||
description = "$STR_ACE_Common_CheckPBO_Description";
|
||||
};
|
||||
};
|
||||
|
||||
class ACE_ModuleLSDVehicles: Module_F {
|
||||
author = "$STR_ACE_Common_ACETeam";
|
||||
category = "ACE";
|
||||
displayName = "LSD Vehicles";
|
||||
displayName = "$STR_ACE_Common_LSDVehicles_DisplayName";
|
||||
function = "ACE_Common_fnc_moduleLSDVehicles";
|
||||
scope = 2;
|
||||
icon = QUOTE(PATHTOF(UI\Icon_Module_LSD_ca.paa));
|
||||
isGlobal = 1;
|
||||
class Arguments {
|
||||
};
|
||||
class ModuleDescription: ModuleDescription {
|
||||
description = "$STR_ACE_Common_LSDVehicles_Description";
|
||||
sync[] = {"AnyVehicle"};
|
||||
};
|
||||
};
|
||||
|
||||
class Box_NATO_Support_F;
|
||||
|
@ -101,7 +101,7 @@ class ACE_Settings {
|
||||
isClientSettable = 1;
|
||||
displayName = "$STR_ACE_Common_SettingFeedbackIconsName";
|
||||
description = "$STR_ACE_Common_SettingFeedbackIconsDesc";
|
||||
values[] = {"Hide", "Top right, downwards", "Top right, to the left", "Top left, downwards", "Top left, to the right"};
|
||||
values[] = {"$STR_ACE_Common_Hide", "$STR_ACE_Common_TopRightDown", "$STR_ACE_Common_TopRightLeft", "$STR_ACE_Common_TopLeftDown", "$STR_ACE_Common_TopLeftRight"};
|
||||
};
|
||||
class GVAR(SettingProgressBarLocation) {
|
||||
value = 0;
|
||||
@ -110,7 +110,7 @@ class ACE_Settings {
|
||||
isClientSettable = 1;
|
||||
displayName = "$STR_ACE_Common_SettingProgressbarLocationName";
|
||||
description = "$STR_ACE_Common_SettingProgressbarLocationDesc";
|
||||
values[] = {"Top", "Bottom"};
|
||||
values[] = {"$STR_ACE_Common_Top", "$STR_ACE_Common_Bottom"};
|
||||
};
|
||||
class GVAR(displayTextColor) {
|
||||
value[] = {0,0,0,0.1};
|
||||
|
@ -49,6 +49,9 @@ _addons = [_addons, {_this find "ace_" == 0}] call FUNC(filter);
|
||||
if (hasInterface) then {
|
||||
["[ACE] ERROR", _errorMsg, {findDisplay 46 closeDisplay 0}] call FUNC(errorMessage);
|
||||
};
|
||||
} else {
|
||||
// Print the current extension version
|
||||
diag_log text format ["[ACE] Extension version: %1: %2", _x, (_x callExtension "version")];
|
||||
};
|
||||
} forEach getArray (configFile >> "ACE_Extensions" >> "extensions");
|
||||
|
||||
|
@ -470,5 +470,57 @@
|
||||
<French>Une banane est un fruit qui, d'un point de vue botanique, fait partie du groupe des baies. Produite par plusieurs sortes de grandes plantes à fleurs herbacées du type Musa.</French>
|
||||
<Portuguese>A banana é uma fruta comestível, botanicamente uma baga, produzida por vários tipos de plantas herbáceas grandes do genero Musa.</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_CheckPBO_DisplayName">
|
||||
<English>Check PBOs</English>
|
||||
<Polish>Sprawdzaj PBO</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_CheckPBO_Description">
|
||||
<English></English>
|
||||
<Polish>Sprawdzaj spójność addonów z serwerem</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_CheckPBO_Action_DisplayName">
|
||||
<English>Action</English>
|
||||
<Polish>Akcja</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_CheckPBO_Action_Description">
|
||||
<English>What to do with people who do not have the right PBOs?</English>
|
||||
<Polish>Co zrobić z graczami, którzy nie mają właściwych PBO?</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_CheckPBO_Action_WarnOnce">
|
||||
<English>Warn once</English>
|
||||
<Polish>Ostrzeż raz</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_CheckPBO_Action_WarnPerm">
|
||||
<English>Warn (permanent)</English>
|
||||
<Polish>Ostrzeżenie (permanentne)</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_CheckPBO_Action_Kick">
|
||||
<English>Kick</English>
|
||||
<Polish>Kick</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_CheckPBO_CheckAll_DisplayName">
|
||||
<English>Check all addons</English>
|
||||
<Polish>Sprawdź wsz. addony</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_CheckPBO_CheckAll_Description">
|
||||
<English>Check all addons instead of only those of ACE?</English>
|
||||
<Polish>Sprawdzaj wszystkie addony czy tylko te z ACE?</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_CheckPBO_Whitelist_DisplayName">
|
||||
<English>Whitelist</English>
|
||||
<Polish>Biała lista</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_CheckPBO_Whitelist_Description">
|
||||
<English>What addons are allowed regardless?</English>
|
||||
<Polish>Jakie addony są dozwolone?</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_LSDVehicles_DisplayName">
|
||||
<English>LSD Vehicles</English>
|
||||
<Polish>Pojazdy LSD</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_LSDVehicles_Description">
|
||||
<English>Adds LSD effect to synchronized vehicle</English>
|
||||
<Polish>Dodaje efekt LSD pod zsynchronizowany pojazd</Polish>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
@ -1,44 +1,30 @@
|
||||
class Module_F;
|
||||
class Logic;
|
||||
class Module_F: Logic {
|
||||
class ModuleDescription {};
|
||||
};
|
||||
class ACE_ModuleExplosive: Module_F {
|
||||
author = "$STR_ACE_Common_ACETeam";
|
||||
category = "ACE";
|
||||
displayName = "Explosive System";
|
||||
displayName = "$STR_ACE_Explosive_Module_DisplayName";
|
||||
function = QUOTE(FUNC(module));
|
||||
scope = 2;
|
||||
isGlobal = 1;
|
||||
icon = PATHTOF(UI\Icon_Module_Explosives_ca.paa);
|
||||
class Arguments {
|
||||
class RequireSpecialist {
|
||||
displayName = "Require specialists?";
|
||||
description = "Require explosive specialists to disable explosives? Default: No";
|
||||
displayName = "$STR_ACE_Explosive_RequireSpecialist_DisplayName";
|
||||
description = "$STR_ACE_Explosive_RequireSpecialist_Description";
|
||||
typeName = "BOOL";
|
||||
class values {
|
||||
class Yes {
|
||||
name = "Yes";
|
||||
value = 1;
|
||||
};
|
||||
class No {
|
||||
default = 1;
|
||||
name = "No";
|
||||
value = 0;
|
||||
};
|
||||
};
|
||||
defaultValue = 0;
|
||||
};
|
||||
class PunishNonSpecialists {
|
||||
displayName = "Punish non-specialists?";
|
||||
description = "Increase the time it takes to complete actions for non-specialists? Default: Yes";
|
||||
displayName = "$STR_ACE_Explosive_PunishNonSpecialists_DisplayName";
|
||||
description = "$STR_ACE_Explosive_PunishNonSpecialists_Description";
|
||||
typeName = "BOOL";
|
||||
class values {
|
||||
class Yes {
|
||||
default = 1;
|
||||
name = "Yes";
|
||||
value = 1;
|
||||
};
|
||||
class No {
|
||||
name = "No";
|
||||
value = 0;
|
||||
};
|
||||
};
|
||||
defaultValue = 1;
|
||||
};
|
||||
};
|
||||
};
|
||||
class ModuleDescription: ModuleDescription {
|
||||
description = "$STR_ACE_Explosive_Module_Description";
|
||||
};
|
||||
};
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="Explosives">
|
||||
<Key ID="STR_ACE_Explosives_Menu">
|
||||
@ -505,5 +505,29 @@
|
||||
<Italian>Raccogli</Italian>
|
||||
<Portuguese>Pegar</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosive_Module_DisplayName">
|
||||
<English>Explosive System</English>
|
||||
<Polish>System ładunków wybuchowych</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosive_RequireSpecialist_DisplayName">
|
||||
<English>Require specialists?</English>
|
||||
<Polish>Wymagaj specjalistów?</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosive_RequireSpecialist_Description">
|
||||
<English>Require explosive specialists to disable explosives? Default: No</English>
|
||||
<Polish>Wymagać saperów do rozbrajania ładunków wybuchowych? Domyślnie: Nie</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosive_PunishNonSpecialists_DisplayName">
|
||||
<English>Punish non-specialists?</English>
|
||||
<Polish>Karaj nie-specjalistów?</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosive_PunishNonSpecialists_Description">
|
||||
<English>Increase the time it takes to complete actions for non-specialists? Default: Yes</English>
|
||||
<Polish>Zwiększyć ilość wymaganego czasu do ukończenia akcji dla nie-specjalistów? Domyślnie: Tak</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosive_Module_Description">
|
||||
<English></English>
|
||||
<Polish>Moduł ten pozwala dostosować opcje związane z ładunkami wybuchowymi, ich podkładaniem oraz rozbrajaniem.</Polish>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
@ -98,21 +98,21 @@ class CfgVehicles {
|
||||
class ACE_ModuleHearing: Module_F {
|
||||
author = "$STR_ACE_Common_ACETeam";
|
||||
category = "ACE";
|
||||
displayName = "Hearing";
|
||||
displayName = "$STR_ACE_Hearing_Module_DisplayName";
|
||||
function = QFUNC(moduleHearing);
|
||||
scope = 2;
|
||||
isGlobal = 1;
|
||||
icon = PATHTOF(UI\Icon_Module_Hearing_ca.paa);
|
||||
class Arguments {
|
||||
class EnableCombatDeafness {
|
||||
displayName = "Enable combat deafness?";
|
||||
description = "Enable combat deafness?";
|
||||
displayName = "$STR_ACE_Hearing_CombatDeafness_DisplayName";
|
||||
description = "$STR_ACE_Hearing_CombatDeafness_Description";
|
||||
typeName = "BOOL";
|
||||
class values {
|
||||
class Yes { name = "Yes"; value = 1; default = 1; };
|
||||
class No { name = "No"; value = 0; };
|
||||
};
|
||||
defaultValue = 1;
|
||||
};
|
||||
};
|
||||
class ModuleDescription {
|
||||
description = "$STR_ACE_Hearing_Module_Description";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -109,5 +109,21 @@
|
||||
<Italian>Disabilita i fischi nelle orecchie</Italian>
|
||||
<Portuguese>Desabilitar zumbido de ouvidos</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Hearing_Module_DisplayName">
|
||||
<English>Hearing</English>
|
||||
<Polish>Słuch</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Hearing_CombatDeafness_DisplayName">
|
||||
<English>Enable combat deafness?</English>
|
||||
<Polish>Wł. głuchotę bojową</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Hearing_CombatDeafness_Description">
|
||||
<English>Enable combat deafness?</English>
|
||||
<Polish>Możliwość chwilowej utraty słuchu przy głośnych wystrzałach i jednoczesnym braku włożonych stoperów</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Hearing_Module_Description">
|
||||
<English></English>
|
||||
<Polish>Głuchota bojowa pojawia się w momentach, kiedy stoimy w pobliżu broni wielkokalibrowej bez ochrony słuchu, lub np. podczas ostrzału artyleryjskiego. Moduł ten pozwala na włączenie lub wyłączenie tego efektu.</Polish>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
@ -1,47 +1,8 @@
|
||||
class GVAR(cursorMenu) {
|
||||
idd = 91919;
|
||||
movingEnable = false;
|
||||
access = 0;
|
||||
movingEnable = 0;
|
||||
enableSimulation = 1;
|
||||
onLoad = QUOTE(uiNamespace setVariable [ARR_2(QUOTE(QGVAR(dlgCursorMenu)),_this select 0)]; uiNamespace setVariable [ARR_2(QUOTE(QGVAR(cursorMenuOpened)),true)]);
|
||||
onUnload = QUOTE(uiNamespace setVariable [ARR_2(QUOTE(QGVAR(cursorMenuOpened)),false)]);
|
||||
objects[] = {};
|
||||
/*class controlsBackground {
|
||||
class Background {
|
||||
idc = 91920;
|
||||
moving = 0;
|
||||
font = "TahomaB";
|
||||
text = "";
|
||||
sizeEx = 0;
|
||||
lineSpacing = 0;
|
||||
access = 0;
|
||||
type = 0;
|
||||
style = 0;
|
||||
size = 1;
|
||||
colorBackground[] = {0, 0, 0, 0.5};
|
||||
colorText[] = {0, 0, 0, 0};
|
||||
x = "safezoneX";
|
||||
y = "safezoneY";
|
||||
w = "safezoneW";
|
||||
h = "safezoneH";
|
||||
};
|
||||
};*/
|
||||
class controls {
|
||||
class Canvas {
|
||||
idc = 91921;
|
||||
moving = 0;
|
||||
font = "TahomaB";
|
||||
text = "";
|
||||
sizeEx = 0;
|
||||
lineSpacing = 0;
|
||||
access = 0;
|
||||
type = 0;
|
||||
style = 0;
|
||||
size = 1;
|
||||
colorBackground[] = {0, 0, 0, 0};
|
||||
colorText[] = {0, 0, 0, 0};
|
||||
x = "safezoneX";
|
||||
y = "safezoneY";
|
||||
w = "safezoneW";
|
||||
h = "safezoneH";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -25,6 +25,21 @@ PREP(renderSelector);
|
||||
PREP(setupTextColors);
|
||||
PREP(splitPath);
|
||||
|
||||
// Event handlers for all interact menu controls
|
||||
DFUNC(handleMouseMovement) = {
|
||||
if (GVAR(cursorKeepCentered)) then {
|
||||
GVAR(cursorPos) = GVAR(cursorPos) vectorAdd [_this select 1, _this select 2, 0] vectorDiff [0.5, 0.5, 0];
|
||||
setMousePosition [0.5, 0.5];
|
||||
} else {
|
||||
GVAR(cursorPos) = [_this select 1, _this select 2, 0];
|
||||
};
|
||||
};
|
||||
DFUNC(handleMouseButtonDown) = {
|
||||
if !(GVAR(actionOnKeyRelease)) then {
|
||||
[GVAR(openedMenuType),true] call FUNC(keyUp);
|
||||
};
|
||||
};
|
||||
|
||||
GVAR(keyDown) = false;
|
||||
GVAR(keyDownSelfAction) = false;
|
||||
GVAR(keyDownTime) = 0;
|
||||
@ -51,6 +66,7 @@ GVAR(expandedTime) = diag_tickTime;
|
||||
GVAR(iconCtrls) = [];
|
||||
GVAR(iconCount) = 0;
|
||||
|
||||
GVAR(collectedActionPoints) = [];
|
||||
GVAR(foundActions) = [];
|
||||
GVAR(lastTimeSearchedActions) = -1000;
|
||||
|
||||
|
@ -67,12 +67,12 @@ if !({} isEqualTo (_origActionData select 5)) then {
|
||||
if (count _pPath == count _fullPath &&
|
||||
{_pPath isEqualTo _fullPath}) then {
|
||||
|
||||
_action = [_object, _action, _fullPath] call FUNC(collectActiveActionTree);
|
||||
_action = [_object, [_actionData,[]], _fullPath] call FUNC(collectActiveActionTree);
|
||||
if ((count _action) > 0) then {
|
||||
_activeChildren pushBack _action;
|
||||
};
|
||||
};
|
||||
} forEach GVAR(objectActions);
|
||||
} forEach GVAR(objectActionList);
|
||||
|
||||
|
||||
// If the original action has no statement, and no children, don't display it
|
||||
|
@ -37,40 +37,36 @@ GVAR(useCursorMenu) = (vehicle ACE_player != ACE_player) ||
|
||||
{(_menuType == 1) && {(isWeaponDeployed ACE_player) || GVAR(AlwaysUseCursorSelfInteraction) || {cameraView == "GUNNER"}}} ||
|
||||
{(_menuType == 0) && GVAR(AlwaysUseCursorInteraction)};
|
||||
|
||||
// Delete existing controls in case there's any left
|
||||
GVAR(iconCount) = 0;
|
||||
for "_i" from 0 to (count GVAR(iconCtrls))-1 do {
|
||||
ctrlDelete (GVAR(iconCtrls) select _i);
|
||||
GVAR(ParsedTextCached) set [_i, ""];
|
||||
};
|
||||
GVAR(iconCtrls) resize GVAR(iconCount);
|
||||
|
||||
if (GVAR(useCursorMenu)) then {
|
||||
createDialog QGVAR(cursorMenu);
|
||||
(findDisplay 46) createDisplay QGVAR(cursorMenu); //"RscCinemaBorder";//
|
||||
(finddisplay 91919) displayAddEventHandler ["KeyUp", {[_this,'keyup'] call CBA_events_fnc_keyHandler}];
|
||||
(finddisplay 91919) displayAddEventHandler ["KeyDown", {[_this,'keydown'] call CBA_events_fnc_keyHandler}];
|
||||
// The dialog sets:
|
||||
// uiNamespace getVariable QGVAR(dlgCursorMenu);
|
||||
// uiNamespace getVariable QGVAR(cursorMenuOpened);
|
||||
ctrlEnable [91921, true];
|
||||
GVAR(cursorPos) = [0.5,0.5,0];
|
||||
((finddisplay 91919) displayctrl 91921) ctrlAddEventHandler ["MouseMoving", {
|
||||
if (GVAR(cursorKeepCentered)) then {
|
||||
GVAR(cursorPos) = GVAR(cursorPos) vectorAdd [_this select 1, _this select 2, 0] vectorDiff [0.5, 0.5, 0];
|
||||
setMousePosition [0.5, 0.5];
|
||||
} else {
|
||||
GVAR(cursorPos) = [_this select 1, _this select 2, 0];
|
||||
};
|
||||
}];
|
||||
// handles LMB in cursor mode when action on keyrelease is disabled
|
||||
((finddisplay 91919) displayctrl 91921) ctrlAddEventHandler ["MouseButtonDown", {
|
||||
if (!GVAR(actionOnKeyRelease) && GVAR(actionSelected)) then {
|
||||
[GVAR(openedMenuType),true] call FUNC(keyUp);
|
||||
};
|
||||
}];
|
||||
|
||||
_ctrl = (findDisplay 91919) ctrlCreate ["RscStructuredText", 9922];
|
||||
_ctrl ctrlSetPosition [safeZoneX, safeZoneY, safeZoneW, safeZoneH];
|
||||
_ctrl ctrlCommit 0;
|
||||
|
||||
// handles Mouse moving and LMB in cursor mode when action on keyrelease is disabled
|
||||
((finddisplay 91919) displayctrl 9922) ctrlAddEventHandler ["MouseMoving", DFUNC(handleMouseMovement)];
|
||||
((finddisplay 91919) displayctrl 9922) ctrlAddEventHandler ["MouseButtonDown", DFUNC(handleMouseButtonDown)];
|
||||
setMousePosition [0.5, 0.5];
|
||||
};
|
||||
|
||||
GVAR(selfMenuOffset) = ((positionCameraToWorld [0, 0, 2]) call EFUNC(common,positionToASL)) vectorDiff
|
||||
((positionCameraToWorld [0, 0, 0]) call EFUNC(common,positionToASL));
|
||||
|
||||
private ["_wavesAtOrigin", "_wavesAtVirtualPoint"];
|
||||
|
||||
_wavesAtOrigin = [(positionCameraToWorld [0, 0, 0])] call EFUNC(common,waveHeightAt);
|
||||
_wavesAtVirtualPoint = [(positionCameraToWorld [0, 0, 2])] call EFUNC(common,waveHeightAt);
|
||||
GVAR(selfMenuOffset) set [2, ((GVAR(selfMenuOffset) select 2) + _wavesAtOrigin - _wavesAtVirtualPoint)];
|
||||
|
||||
|
||||
["interactMenuOpened", [_menuType]] call EFUNC(common,localEvent);
|
||||
|
||||
true
|
||||
|
@ -19,7 +19,7 @@ _calledByClicking = _this select 1;
|
||||
if (GVAR(openedMenuType) < 0) exitWith {true};
|
||||
|
||||
if (uiNamespace getVariable [QGVAR(cursorMenuOpened),false]) then {
|
||||
closeDialog 0;
|
||||
(findDisplay 91919) closeDisplay 2;
|
||||
};
|
||||
|
||||
if(GVAR(actionSelected)) then {
|
||||
|
@ -17,13 +17,13 @@ GVAR(currentOptions) = [];
|
||||
private ["_player","_numInteractObjects","_numInteractions","_actionsVarName","_classActions","_target","_player","_action","_cameraPos","_cameraDir", "_lambda", "_nearestObjects", "_pos", "_virtualPoint", "_wavesAtOrigin", "_wavesAtVirtualPoint"];
|
||||
_player = ACE_player;
|
||||
|
||||
_cameraPos = (positionCameraToWorld [0, 0, 0]) call EFUNC(common,positionToASL);
|
||||
_cameraDir = ((positionCameraToWorld [0, 0, 1]) call EFUNC(common,positionToASL)) vectorDiff _cameraPos;
|
||||
|
||||
_fnc_renderNearbyActions = {
|
||||
// Render all nearby interaction menus
|
||||
#define MAXINTERACTOBJECTS 3
|
||||
|
||||
_cameraPos = (positionCameraToWorld [0, 0, 0]) call EFUNC(common,positionToASL);
|
||||
_cameraDir = ((positionCameraToWorld [0, 0, 1]) call EFUNC(common,positionToASL)) vectorDiff _cameraPos;
|
||||
|
||||
GVAR(foundActions) = [];
|
||||
GVAR(lastTimeSearchedActions) = diag_tickTime;
|
||||
|
||||
@ -101,7 +101,7 @@ _fnc_renderSelfActions = {
|
||||
// Iterate through base level class actions and render them if appropiate
|
||||
_actionsVarName = format [QGVAR(SelfAct_%1), typeOf _target];
|
||||
_classActions = missionNamespace getVariable [_actionsVarName, []];
|
||||
|
||||
|
||||
_pos = if !(GVAR(useCursorMenu)) then {
|
||||
_virtualPoint = (((positionCameraToWorld [0, 0, 0]) call EFUNC(common,positionToASL)) vectorAdd GVAR(selfMenuOffset)) call EFUNC(common,ASLToPosition);
|
||||
_wavesAtOrigin = [(positionCameraToWorld [0, 0, 0])] call EFUNC(common,waveHeightAt);
|
||||
@ -111,7 +111,7 @@ _fnc_renderSelfActions = {
|
||||
} else {
|
||||
[0.5, 0.5]
|
||||
};
|
||||
|
||||
|
||||
{
|
||||
_action = _x;
|
||||
[_target, _action, _pos] call FUNC(renderBaseMenu);
|
||||
@ -119,6 +119,8 @@ _fnc_renderSelfActions = {
|
||||
};
|
||||
|
||||
|
||||
GVAR(collectedActionPoints) resize 0;
|
||||
|
||||
// Render nearby actions, unit self actions or vehicle self actions as appropiate
|
||||
if (GVAR(openedMenuType) == 0) then {
|
||||
|
||||
@ -137,3 +139,29 @@ if (GVAR(openedMenuType) == 0) then {
|
||||
} else {
|
||||
ACE_player call _fnc_renderSelfActions;
|
||||
};
|
||||
|
||||
if (count GVAR(collectedActionPoints) > 1) then {
|
||||
// Do the oclusion pass
|
||||
|
||||
// Order action points according to z
|
||||
GVAR(collectedActionPoints) sort true;
|
||||
|
||||
private ["_i","_j","_delta"];
|
||||
for [{_i = count GVAR(collectedActionPoints) - 1}, {_i > 0}, {_i = _i - 1}] do {
|
||||
for [{_j = _i - 1}, {_j >= 0}, {_j = _j - 1}] do {
|
||||
// Check if action point _i is ocluded by _j
|
||||
_delta = vectorNormalized ((GVAR(collectedActionPoints) select _i select 1) vectorDiff (GVAR(collectedActionPoints) select _j select 1));
|
||||
|
||||
// If _i is inside a cone with 20º half angle with origin on _j
|
||||
if (_delta select 2 > 0.94) exitWith {
|
||||
GVAR(collectedActionPoints) deleteAt _i;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
// Render the non-ocluded points
|
||||
{
|
||||
EXPLODE_3_PVT(_x,_z,_sPos,_activeActionTree);
|
||||
[[], _activeActionTree, _sPos, [180,360]] call FUNC(renderMenu);
|
||||
} forEach GVAR(collectedActionPoints);
|
||||
|
@ -93,11 +93,17 @@ _fnc_print = {
|
||||
// Check if there's something left for rendering
|
||||
if (count _activeActionTree == 0) exitWith {false};
|
||||
|
||||
//EXPLODE_2_PVT(_activeActionTree,_actionData,_actionChildren);
|
||||
|
||||
BEGIN_COUNTER(fnc_renderMenus);
|
||||
|
||||
[[], _activeActionTree, _sPos, [180,360]] call FUNC(renderMenu);
|
||||
// IGNORE_PRIVATE_WARNING(_cameraPos,_cameraDir);
|
||||
if (count _pos > 2) then {
|
||||
_sPos pushBack (((_pos call EFUNC(common,positionToASL)) vectorDiff _cameraPos) vectorDotProduct _cameraDir);
|
||||
} else {
|
||||
_sPos pushBack 0;
|
||||
};
|
||||
|
||||
// Add action point for oclusion and rendering
|
||||
GVAR(collectedActionPoints) pushBack [_sPos select 2, _sPos, _activeActionTree];
|
||||
|
||||
END_COUNTER(fnc_renderMenus);
|
||||
|
||||
|
@ -23,6 +23,10 @@ PARAMS_4(_text,_icon,_sPos,_textSettings);
|
||||
if(GVAR(iconCount) > (count GVAR(iconCtrls))-1) then {
|
||||
_displayNum = [[46, 12] select visibleMap,91919] select (uiNamespace getVariable [QGVAR(cursorMenuOpened),false]);
|
||||
GVAR(iconCtrls) pushBack ((findDisplay _displayNum) ctrlCreate ["RscStructuredText", 54021+GVAR(iconCount)]);
|
||||
if (GVAR(useCursorMenu)) then {
|
||||
((finddisplay _displayNum) displayctrl (54021+GVAR(iconCount))) ctrlAddEventHandler ["MouseMoving", DFUNC(handleMouseMovement)];
|
||||
((finddisplay _displayNum) displayctrl (54021+GVAR(iconCount))) ctrlAddEventHandler ["MouseButtonDown", DFUNC(handleMouseButtonDown)];
|
||||
};
|
||||
};
|
||||
_ctrl = GVAR(iconCtrls) select GVAR(iconCount);
|
||||
|
||||
|
@ -20,6 +20,10 @@ private ["_displayNum", "_ctrl", "_pos"];
|
||||
if(GVAR(iconCount) > (count GVAR(iconCtrls))-1) then {
|
||||
_displayNum = [[46, 12] select visibleMap,91919] select (uiNamespace getVariable [QGVAR(cursorMenuOpened),false]);
|
||||
GVAR(iconCtrls) pushBack ((findDisplay _displayNum) ctrlCreate ["RscStructuredText", 54021+GVAR(iconCount)]);
|
||||
if (GVAR(useCursorMenu)) then {
|
||||
((finddisplay _displayNum) displayctrl (54021+GVAR(iconCount))) ctrlAddEventHandler ["MouseMoving", DFUNC(handleMouseMovement)];
|
||||
((finddisplay _displayNum) displayctrl (54021+GVAR(iconCount))) ctrlAddEventHandler ["MouseButtonDown", DFUNC(handleMouseButtonDown)];
|
||||
};
|
||||
};
|
||||
|
||||
_ctrl = GVAR(iconCtrls) select GVAR(iconCount);
|
||||
|
@ -12,7 +12,7 @@
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_menuDepth", "_mixColor", "_pathCount", "_row", "_shadowColor", "_textColor", "_textSize"];
|
||||
private ["_menuDepth", "_mixColor", "_pathCount", "_row", "_shadowColor", "_textColor", "_textSize", "_colorShadowMax", "_colorShadowMin", "_colorTextMax", "_colorTextMin", "_shadowSetting"];
|
||||
|
||||
//Mixes 2 colors (number arrays) and makes a color string "#AARRGGBB" for structured text
|
||||
_mixColor = {
|
||||
@ -30,9 +30,16 @@ _mixColor = {
|
||||
_return
|
||||
};
|
||||
|
||||
_textColor = [GVAR(colorTextMin), GVAR(colorTextMax), 1] call _mixColor;
|
||||
_shadowColor = [GVAR(colorShadowMin), GVAR(colorShadowMax), 1] call _mixColor;
|
||||
_textSize = switch (GVAR(textSize)) do {
|
||||
_colorTextMin = missionNamespace getVariable [QGVAR(colorTextMin), [1,1,1,0.25]];
|
||||
_colorTextMax = missionNamespace getVariable [QGVAR(colorTextMax), [1,1,1,1]];
|
||||
_colorShadowMin = missionNamespace getVariable [QGVAR(colorShadowMin), [0,0,0,0.25]];
|
||||
_colorShadowMax = missionNamespace getVariable [QGVAR(colorShadowMax), [0,0,0,1]];
|
||||
_shadowSetting = missionNamespace getVariable [QGVAR(shadowSetting), 2];
|
||||
_textSize = missionNamespace getVariable [QGVAR(textSize), 2];
|
||||
|
||||
_textColor = [_colorTextMin, _colorTextMax, 1] call _mixColor;
|
||||
_shadowColor = [_colorShadowMin, _colorShadowMax, 1] call _mixColor;
|
||||
_textSize = switch (_textSize) do {
|
||||
case (0): {0.4};
|
||||
case (1): {0.6};
|
||||
case (2): {0.8};
|
||||
@ -40,20 +47,20 @@ _textSize = switch (GVAR(textSize)) do {
|
||||
case (4): {1.2};
|
||||
};
|
||||
|
||||
GVAR(colorSelectedSettings) = format ["color='%1' size='%2' shadow='%3' shadowColor='%4' shadowOffset='0.06'", _textColor, _textSize, GVAR(shadowSetting), _shadowColor];
|
||||
GVAR(colorSelectedSettings) = format ["color='%1' size='%2' shadow='%3' shadowColor='%4' shadowOffset='0.06'", _textColor, _textSize, _shadowSetting, _shadowColor];
|
||||
|
||||
GVAR(textSettingsMatrix) = [];
|
||||
for "_pathCount" from 0 to 15 do {
|
||||
_row = [];
|
||||
for "_menuDepth" from 0 to 15 do {
|
||||
if (_menuDepth > 0) then {
|
||||
_textColor = [GVAR(colorTextMin), GVAR(colorTextMax), (((_pathCount - 1) / _menuDepth) max 0.25)] call _mixColor;
|
||||
_shadowColor = [GVAR(colorShadowMin), GVAR(colorShadowMax), (((_pathCount - 1) / _menuDepth) max 0.25)] call _mixColor;
|
||||
_textColor = [_colorTextMin, _colorTextMax, (((_pathCount - 1) / _menuDepth) max 0.25)] call _mixColor;
|
||||
_shadowColor = [_colorShadowMin, _colorShadowMax, (((_pathCount - 1) / _menuDepth) max 0.25)] call _mixColor;
|
||||
} else {
|
||||
_textColor = [GVAR(colorTextMin), GVAR(colorTextMax), 0] call _mixColor;
|
||||
_shadowColor = [GVAR(colorShadowMin), GVAR(colorShadowMax), 0] call _mixColor;
|
||||
_textColor = [_colorTextMin, _colorTextMax, 0] call _mixColor;
|
||||
_shadowColor = [_colorShadowMin, _colorShadowMax, 0] call _mixColor;
|
||||
};
|
||||
_row pushBack format ["color='%1' size='%2' shadow='%3' shadowColor='%4' shadowOffset='0.06'", _textColor, _textSize, GVAR(shadowSetting), _shadowColor];
|
||||
_row pushBack format ["color='%1' size='%2' shadow='%3' shadowColor='%4' shadowOffset='0.06'", _textColor, _textSize, _shadowSetting, _shadowColor];
|
||||
};
|
||||
GVAR(textSettingsMatrix) pushBack _row;
|
||||
};
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,46 +1,44 @@
|
||||
|
||||
#define HSPACE 0.5-2.0/16/2
|
||||
#define VSPACE 0.5-0.3/9/2
|
||||
|
||||
class RscStructuredText;
|
||||
class ACE_Interaction_Button_Base {
|
||||
tooltip = "";
|
||||
//action = "ACE_Interaction_isMousePressed = true;(findDisplay 1713999) closeDisplay 1;_action = ACE_Interaction_Buttons select ACE_Interaction_SelectedButton;ACE_Interaction_SelectedButton = -1; if (call (_action select 2)) then {call (_action select 1)};";
|
||||
action = "";
|
||||
tooltip = "";
|
||||
//action = "ACE_Interaction_isMousePressed = true;(findDisplay 1713999) closeDisplay 1;_action = ACE_Interaction_Buttons select ACE_Interaction_SelectedButton;ACE_Interaction_SelectedButton = -1; if (call (_action select 2)) then {call (_action select 1)};";
|
||||
action = "";
|
||||
|
||||
idc = -1;
|
||||
access = 0;
|
||||
type = 1;
|
||||
text = "";
|
||||
font = "PuristaMedium";
|
||||
sizeEx = "0.8 / 40 / (getResolution select 5)";
|
||||
shadow = 2;
|
||||
idc = -1;
|
||||
access = 0;
|
||||
type = 1;
|
||||
text = "";
|
||||
font = "PuristaMedium";
|
||||
sizeEx = "0.8 / 40 / (getResolution select 5)";
|
||||
shadow = 2;
|
||||
|
||||
style = 2;
|
||||
x = 0;
|
||||
y = 0;
|
||||
w = 2.0 / 16 * safezoneW;
|
||||
h = 0.3 / 9 * safezoneH;
|
||||
style = 2;
|
||||
x = 0;
|
||||
y = 0;
|
||||
w = 2.0 / 16 * safezoneW;
|
||||
h = 0.3 / 9 * safezoneH;
|
||||
|
||||
offsetX = 0.003;
|
||||
offsetY = 0.003;
|
||||
offsetPressedX = 0.002;
|
||||
offsetPressedY = 0.002;
|
||||
borderSize = 0;
|
||||
offsetX = 0.003;
|
||||
offsetY = 0.003;
|
||||
offsetPressedX = 0.002;
|
||||
offsetPressedY = 0.002;
|
||||
borderSize = 0;
|
||||
|
||||
colorText[] = {1,1,1,1};
|
||||
colorDisabled[] = {0.5,0.5,0.5,1};
|
||||
colorBackground[] = {0,0,0,0.8};
|
||||
colorBackgroundDisabled[] = {0,0,0,0.8};
|
||||
colorBackgroundActive[] = {1,1,1,0};
|
||||
colorFocused[] = {1,1,1,1};
|
||||
colorShadow[] = {0,0,0,0};
|
||||
colorBorder[] = {1,1,1,0.8};
|
||||
colorText[] = {1,1,1,1};
|
||||
colorDisabled[] = {0.5,0.5,0.5,1};
|
||||
colorBackground[] = {0,0,0,0.8};
|
||||
colorBackgroundDisabled[] = {0,0,0,0.8};
|
||||
colorBackgroundActive[] = {1,1,1,0};
|
||||
colorFocused[] = {1,1,1,1};
|
||||
colorShadow[] = {0,0,0,0};
|
||||
colorBorder[] = {1,1,1,0.8};
|
||||
|
||||
soundEnter[] = {"\A3\ui_f\data\sound\RscButton\soundEnter",0.09,1};
|
||||
soundPush[] = {"\A3\ui_f\data\sound\RscButton\soundPush",0.09,1};
|
||||
soundClick[] = {"\A3\ui_f\data\sound\RscButton\soundClick",0.09,1};
|
||||
soundEscape[] = {"\A3\ui_f\data\sound\RscButton\soundEscape",0.09,1};
|
||||
soundEnter[] = {"\A3\ui_f\data\sound\RscButton\soundEnter",0.09,1};
|
||||
soundPush[] = {"\A3\ui_f\data\sound\RscButton\soundPush",0.09,1};
|
||||
soundClick[] = {"\A3\ui_f\data\sound\RscButton\soundClick",0.09,1};
|
||||
soundEscape[] = {"\A3\ui_f\data\sound\RscButton\soundEscape",0.09,1};
|
||||
};
|
||||
|
||||
class RscListbox;
|
||||
@ -49,86 +47,86 @@ class RscText;
|
||||
#define X_OFFSET 0.2
|
||||
|
||||
class RscACE_SelectAnItem {
|
||||
idd = 8854;
|
||||
movingEnable = 0;
|
||||
class controls {
|
||||
class back:IGUIBack {
|
||||
x = X_OFFSET;
|
||||
y = 0;
|
||||
w = 0.6;
|
||||
h = 0.71;
|
||||
colorBackground[] = {0, 0, 0, 0.2};
|
||||
};
|
||||
class header: RscText{
|
||||
idc = 8870;
|
||||
x = X_OFFSET + 0.005;
|
||||
y = 0.005;
|
||||
w = 0.59;
|
||||
h = 0.05;
|
||||
style = 0x02;
|
||||
text = "";
|
||||
};
|
||||
class itemList:RscListBox {
|
||||
onMouseButtonDblClick = "_this call ACE_Interaction_fnc_onSelectMenuDblClick";
|
||||
idc = 8866;
|
||||
x = X_OFFSET + 0.005;
|
||||
w = 0.59;
|
||||
h = 0.54;
|
||||
y = 0.06;
|
||||
};
|
||||
idd = 8854;
|
||||
movingEnable = 0;
|
||||
class controls {
|
||||
class back:IGUIBack {
|
||||
x = X_OFFSET;
|
||||
y = 0;
|
||||
w = 0.6;
|
||||
h = 0.71;
|
||||
colorBackground[] = {0, 0, 0, 0.2};
|
||||
};
|
||||
class header: RscText{
|
||||
idc = 8870;
|
||||
x = X_OFFSET + 0.005;
|
||||
y = 0.005;
|
||||
w = 0.59;
|
||||
h = 0.05;
|
||||
style = 0x02;
|
||||
text = "";
|
||||
};
|
||||
class itemList:RscListBox {
|
||||
onMouseButtonDblClick = "_this call ACE_Interaction_fnc_onSelectMenuDblClick";
|
||||
idc = 8866;
|
||||
x = X_OFFSET + 0.005;
|
||||
w = 0.59;
|
||||
h = 0.54;
|
||||
y = 0.06;
|
||||
};
|
||||
|
||||
class cancelBtnBackground: ACE_Interaction_Button_Base {
|
||||
type = 0;
|
||||
style = 2;
|
||||
idc = -1;
|
||||
colorBackground[] = {0,0,0,0.5};
|
||||
colorBackgroundDisabled[] = {0,0,0,0.5};
|
||||
x = X_OFFSET + 0.005;
|
||||
w = 0.15;
|
||||
h = 0.1;
|
||||
y = 0.605;
|
||||
};
|
||||
class approveBtnBackground: ACE_Interaction_Button_Base {
|
||||
type = 0;
|
||||
style = 2;
|
||||
idc = -1;
|
||||
colorBackground[] = {0,0,0,0.5};
|
||||
colorBackgroundDisabled[] = {0,0,0,0.5};
|
||||
x = X_OFFSET + 0.445;
|
||||
y = 0.605;
|
||||
h = 0.1;
|
||||
w = 0.15;
|
||||
};
|
||||
class cancelBtnBackground: ACE_Interaction_Button_Base {
|
||||
type = 0;
|
||||
style = 2;
|
||||
idc = -1;
|
||||
colorBackground[] = {0,0,0,0.5};
|
||||
colorBackgroundDisabled[] = {0,0,0,0.5};
|
||||
x = X_OFFSET + 0.005;
|
||||
w = 0.15;
|
||||
h = 0.1;
|
||||
y = 0.605;
|
||||
};
|
||||
class approveBtnBackground: ACE_Interaction_Button_Base {
|
||||
type = 0;
|
||||
style = 2;
|
||||
idc = -1;
|
||||
colorBackground[] = {0,0,0,0.5};
|
||||
colorBackgroundDisabled[] = {0,0,0,0.5};
|
||||
x = X_OFFSET + 0.445;
|
||||
y = 0.605;
|
||||
h = 0.1;
|
||||
w = 0.15;
|
||||
};
|
||||
|
||||
class cancelBtn: ACE_Interaction_Button_Base {
|
||||
idc = 8855;
|
||||
x = X_OFFSET + 0.005;
|
||||
w = 0.15;
|
||||
h = 0.1;
|
||||
y = 0.605;
|
||||
style = 2;
|
||||
text = $STR_ACE_Interaction_Back; //$STR_ACE_Interaction_CancelSelection;
|
||||
action = "call ACE_Interaction_fnc_hideMenu;"; //'Default' call ACE_Interaction_fnc_openMenu; 'Default' call ACE_Interaction_fnc_openMenuSelf;
|
||||
colorBackground[] = {0,0,0,0};
|
||||
colorBackgroundDisabled[] = {0,0,0,0};
|
||||
colorBackgroundActive[] = {1,1,1,0.2};
|
||||
colorFocused[] = {0,0,0,0};
|
||||
class cancelBtn: ACE_Interaction_Button_Base {
|
||||
idc = 8855;
|
||||
x = X_OFFSET + 0.005;
|
||||
w = 0.15;
|
||||
h = 0.1;
|
||||
y = 0.605;
|
||||
style = 2;
|
||||
text = $STR_ACE_Interaction_Back; //$STR_ACE_Interaction_CancelSelection;
|
||||
action = "call ACE_Interaction_fnc_hideMenu;"; //'Default' call ACE_Interaction_fnc_openMenu; 'Default' call ACE_Interaction_fnc_openMenuSelf;
|
||||
colorBackground[] = {0,0,0,0};
|
||||
colorBackgroundDisabled[] = {0,0,0,0};
|
||||
colorBackgroundActive[] = {1,1,1,0.2};
|
||||
colorFocused[] = {0,0,0,0};
|
||||
};
|
||||
class approveBtn: ACE_Interaction_Button_Base {
|
||||
idc = 8860;
|
||||
x = X_OFFSET + 0.445;
|
||||
y = 0.605;
|
||||
h = 0.1;
|
||||
w = 0.15;
|
||||
style = 2;
|
||||
text = $STR_ACE_Interaction_MakeSelection;
|
||||
action = "call ACE_Interaction_fnc_hideMenu;";
|
||||
colorBackground[] = {0,0,0,0};
|
||||
colorBackgroundDisabled[] = {0,0,0,0};
|
||||
colorBackgroundActive[] = {1,1,1,0.2};
|
||||
colorFocused[] = {0,0,0,0};
|
||||
};
|
||||
};
|
||||
class approveBtn: ACE_Interaction_Button_Base {
|
||||
idc = 8860;
|
||||
x = X_OFFSET + 0.445;
|
||||
y = 0.605;
|
||||
h = 0.1;
|
||||
w = 0.15;
|
||||
style = 2;
|
||||
text = $STR_ACE_Interaction_MakeSelection;
|
||||
action = "call ACE_Interaction_fnc_hideMenu;";
|
||||
colorBackground[] = {0,0,0,0};
|
||||
colorBackgroundDisabled[] = {0,0,0,0};
|
||||
colorBackgroundActive[] = {1,1,1,0.2};
|
||||
colorFocused[] = {0,0,0,0};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
#define GUI_GRID_W (0.025)
|
||||
@ -136,64 +134,64 @@ class RscACE_SelectAnItem {
|
||||
|
||||
class RscPicture;
|
||||
class RscInteractionIcon: RscPicture {
|
||||
x = 19.25 * GUI_GRID_W;
|
||||
y = 15.75 * GUI_GRID_H;
|
||||
w = 2*GUI_GRID_H;
|
||||
h = 2*GUI_GRID_H;
|
||||
x = 19.25 * GUI_GRID_W;
|
||||
y = 15.75 * GUI_GRID_H;
|
||||
w = 2*GUI_GRID_H;
|
||||
h = 2*GUI_GRID_H;
|
||||
};
|
||||
class RscInteractionHelperIcon: RscInteractionIcon {
|
||||
x = 20 * GUI_GRID_W;
|
||||
y = 16 * GUI_GRID_H;
|
||||
w = GUI_GRID_H;
|
||||
h = GUI_GRID_H;
|
||||
x = 20 * GUI_GRID_W;
|
||||
y = 16 * GUI_GRID_H;
|
||||
w = GUI_GRID_H;
|
||||
h = GUI_GRID_H;
|
||||
};
|
||||
class RscInteractionText: RscText{
|
||||
x = 21 * GUI_GRID_W;
|
||||
y = 16 * GUI_GRID_H;
|
||||
w = 8 * GUI_GRID_W;
|
||||
h = 1.5 * GUI_GRID_H;
|
||||
x = 21 * GUI_GRID_W;
|
||||
y = 16 * GUI_GRID_H;
|
||||
w = 8 * GUI_GRID_W;
|
||||
h = 1.5 * GUI_GRID_H;
|
||||
};
|
||||
class RscTitles {
|
||||
class GVAR(InteractionHelper) {
|
||||
idd = 9930;
|
||||
enableSimulation = 1;
|
||||
movingEnable = 0;
|
||||
fadeIn=0.5;
|
||||
fadeOut=0.5;
|
||||
duration = 10e10;
|
||||
onLoad = "uiNamespace setVariable ['ACE_Helper_Display', _this select 0];";
|
||||
class GVAR(InteractionHelper) {
|
||||
idd = 9930;
|
||||
enableSimulation = 1;
|
||||
movingEnable = 0;
|
||||
fadeIn=0.5;
|
||||
fadeOut=0.5;
|
||||
duration = 10e10;
|
||||
onLoad = "uiNamespace setVariable ['ACE_Helper_Display', _this select 0];";
|
||||
|
||||
class controls {
|
||||
class SelectIcon: RscInteractionHelperIcon{
|
||||
idc = 1200;
|
||||
text = PATHTOF(UI\mouse_left_ca.paa);
|
||||
y = 17.5 * GUI_GRID_H;
|
||||
};
|
||||
class SelectText: RscInteractionText{
|
||||
idc = 1000;
|
||||
y = 17 * GUI_GRID_H;
|
||||
text = $STR_ACE_Interaction_MakeSelection;
|
||||
};
|
||||
class GoBackIcon: RscInteractionHelperIcon{
|
||||
idc = 1201;
|
||||
text = PATHTOF(UI\mouse_right_ca.paa);
|
||||
y = 19.5 * GUI_GRID_H;
|
||||
};
|
||||
class GoBackText: RscInteractionText{
|
||||
idc = 1001;
|
||||
y = 19 * GUI_GRID_H;
|
||||
text = $STR_ACE_Interaction_Back;
|
||||
};
|
||||
class ScrollIcon: RscInteractionHelperIcon{
|
||||
idc = 1202;
|
||||
text = PATHTOF(UI\mouse_scroll_ca.paa);
|
||||
y = 18.5 * GUI_GRID_H;
|
||||
};
|
||||
class ScrollText: RscInteractionText{
|
||||
idc = 1002;
|
||||
y = 18 * GUI_GRID_H;
|
||||
text = $STR_ACE_Interaction_ScrollHint;
|
||||
};
|
||||
class controls {
|
||||
class SelectIcon: RscInteractionHelperIcon{
|
||||
idc = 1200;
|
||||
text = PATHTOF(UI\mouse_left_ca.paa);
|
||||
y = 17.5 * GUI_GRID_H;
|
||||
};
|
||||
class SelectText: RscInteractionText{
|
||||
idc = 1000;
|
||||
y = 17 * GUI_GRID_H;
|
||||
text = $STR_ACE_Interaction_MakeSelection;
|
||||
};
|
||||
class GoBackIcon: RscInteractionHelperIcon{
|
||||
idc = 1201;
|
||||
text = PATHTOF(UI\mouse_right_ca.paa);
|
||||
y = 19.5 * GUI_GRID_H;
|
||||
};
|
||||
class GoBackText: RscInteractionText{
|
||||
idc = 1001;
|
||||
y = 19 * GUI_GRID_H;
|
||||
text = $STR_ACE_Interaction_Back;
|
||||
};
|
||||
class ScrollIcon: RscInteractionHelperIcon{
|
||||
idc = 1202;
|
||||
text = PATHTOF(UI\mouse_scroll_ca.paa);
|
||||
y = 18.5 * GUI_GRID_H;
|
||||
};
|
||||
class ScrollText: RscInteractionText{
|
||||
idc = 1002;
|
||||
y = 18 * GUI_GRID_H;
|
||||
text = $STR_ACE_Interaction_ScrollHint;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -3,7 +3,6 @@ ace_interaction
|
||||
|
||||
Provides interaction options between units.
|
||||
|
||||
|
||||
## Maintainers
|
||||
|
||||
The people responsible for merging changes to this component or answering potential questions.
|
||||
|
@ -15,6 +15,7 @@ if (!hasInterface) exitWith {};
|
||||
GVAR(isOpeningDoor) = false;
|
||||
|
||||
// restore global fire teams for JIP
|
||||
private ["_team"];
|
||||
{
|
||||
_team = _x getVariable [QGVAR(assignedFireTeam), ""];
|
||||
if (_team != "") then {_x assignTeam _team};
|
||||
|
@ -1,26 +1,24 @@
|
||||
#include "script_component.hpp"
|
||||
|
||||
class CfgPatches {
|
||||
class ADDON {
|
||||
units[] = {};
|
||||
weapons[] = {};
|
||||
requiredVersion = REQUIRED_VERSION;
|
||||
requiredAddons[] = {"ace_interact_menu"};
|
||||
author[] = {"commy2", "KoffeinFlummi", "esteldunedain", "bux578"};
|
||||
authorUrl = "https://github.com/commy2/";
|
||||
VERSION_CONFIG;
|
||||
};
|
||||
class ADDON {
|
||||
units[] = {};
|
||||
weapons[] = {};
|
||||
requiredVersion = REQUIRED_VERSION;
|
||||
requiredAddons[] = {"ace_interact_menu"};
|
||||
author[] = {"commy2", "KoffeinFlummi", "esteldunedain", "bux578"};
|
||||
authorUrl = "https://github.com/commy2/";
|
||||
VERSION_CONFIG;
|
||||
};
|
||||
};
|
||||
|
||||
#include "CfgEventHandlers.hpp"
|
||||
|
||||
#include "CfgVehicles.hpp"
|
||||
|
||||
#include <Menu_Config.hpp>
|
||||
#include "Menu_Config.hpp"
|
||||
|
||||
class ACE_Settings {
|
||||
class GVAR(EnableTeamManagement) {
|
||||
value = 1;
|
||||
typeName = "BOOL";
|
||||
};
|
||||
class GVAR(EnableTeamManagement) {
|
||||
value = 1;
|
||||
typeName = "BOOL";
|
||||
};
|
||||
};
|
||||
|
@ -1,36 +0,0 @@
|
||||
/*
|
||||
Author: Garth de Wet (LH)
|
||||
|
||||
Description:
|
||||
Adds an item to the select menu
|
||||
|
||||
Parameters:
|
||||
0: ARRAY/NUMBER - List container
|
||||
1: String - Display Name
|
||||
2: String - Picture
|
||||
3: String/code - data
|
||||
|
||||
Returns:
|
||||
ARRAY/Number
|
||||
|
||||
Example:
|
||||
*/
|
||||
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_container", "_displayName", "_picture", "_data", "_index"];
|
||||
|
||||
_container = _this select 0;
|
||||
_displayName = _this select 1;
|
||||
_picture = _this select 2;
|
||||
_data = _this select 3;
|
||||
|
||||
if (_picture == "" || _picture == "PictureThing") then {
|
||||
_picture = QUOTE(PATHTOF(UI\dot_ca.paa));
|
||||
};
|
||||
|
||||
_index = lbAdd [_container, _displayName];
|
||||
lbSetData [_container, _index, str _data];
|
||||
lbSetPicture [_container, _index, _picture];
|
||||
|
||||
_container
|
@ -2,7 +2,7 @@
|
||||
* Author: esteldunedain
|
||||
* Mount unit actions inside passenger submenu
|
||||
*
|
||||
* Argument:
|
||||
* Arguments:
|
||||
* 0: Vehicle <OBJECT>
|
||||
* 1: Player <OBJECT>
|
||||
* 3: Parameters <ARRAY>
|
||||
@ -10,14 +10,17 @@
|
||||
* Return value:
|
||||
* Children actions <ARRAY>
|
||||
*
|
||||
* Example:
|
||||
* array = [target, player, [params]] call ace_interaction_fnc_addPassengerAction
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
EXPLODE_3_PVT(_this,_vehicle,_player,_parameters);
|
||||
EXPLODE_1_PVT(_parameters,_unit);
|
||||
|
||||
private ["_unit","_actions"];
|
||||
_unit = _parameters select 0;
|
||||
private ["_varName", "_actionTrees", "_actions"];
|
||||
|
||||
_varName = format [QEGVAR(interact_menu,Act_%1), typeOf _unit];
|
||||
_actionTrees = missionNamespace getVariable [_varName, []];
|
||||
|
@ -2,7 +2,7 @@
|
||||
* Author: esteldunedain
|
||||
* Create one action per passenger
|
||||
*
|
||||
* Argument:
|
||||
* Arguments:
|
||||
* 0: Vehicle <OBJECT>
|
||||
* 1: Player <OBJECT>
|
||||
* 3: Parameters <ARRAY>
|
||||
@ -10,6 +10,9 @@
|
||||
* Return value:
|
||||
* Children actions <ARRAY>
|
||||
*
|
||||
* Example:
|
||||
* [target, player, [params]] call ace_interaction_fnc_addPassengersActions
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
@ -20,8 +23,9 @@ private ["_actions"];
|
||||
_actions = [];
|
||||
|
||||
{
|
||||
private ["_unit"];
|
||||
_unit = _x;
|
||||
if (_x != _player) then {
|
||||
if (_unit != _player) then {
|
||||
_actions pushBack
|
||||
[
|
||||
[
|
||||
@ -39,4 +43,4 @@ _actions = [];
|
||||
};
|
||||
} forEach crew _vehicle;
|
||||
|
||||
_actions
|
||||
_actions
|
||||
|
32
addons/interaction/functions/fnc_addSelectableItem.sqf
Normal file
32
addons/interaction/functions/fnc_addSelectableItem.sqf
Normal file
@ -0,0 +1,32 @@
|
||||
/*
|
||||
* Author: Garth de Wet (LH)
|
||||
* Adds an item to the select menu
|
||||
*
|
||||
* Arguments:
|
||||
* 0: List container <ARRAY/NUMBER>
|
||||
* 1: Display name <STRING>
|
||||
* 2: Picture <STRING>
|
||||
* 3: Data <STRING/CODE>
|
||||
*
|
||||
* Return value:
|
||||
* Container <ARRAY/NUMBER>
|
||||
*
|
||||
* Example:
|
||||
* [actions, "Banana", "UI\dot_ca.paa", "bananaContents"] call ace_interaction_fnc_addSelectableItem
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
PARAMS_4(_container,_displayName,_picture,_data);
|
||||
|
||||
if (_picture == "" || _picture == "PictureThing") then {
|
||||
_picture = QUOTE(PATHTOF(UI\dot_ca.paa));
|
||||
};
|
||||
|
||||
private ["_index"];
|
||||
_index = lbAdd [_container, _displayName];
|
||||
lbSetData [_container, _index, str _data];
|
||||
lbSetPicture [_container, _index, _picture];
|
||||
|
||||
_container
|
@ -1,8 +1,21 @@
|
||||
// by commy2
|
||||
|
||||
/*
|
||||
* Author: commy2
|
||||
* Applies buttons
|
||||
*
|
||||
* Arguments:
|
||||
* None
|
||||
*
|
||||
* Return value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* call ace_interaction_fnc_applyButtons
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_object", "_actions", "_dlgInteractionDialog", "_ctrlInteractionDialog", "_index", "_ctrlInteractionDialogIcon"];
|
||||
private ["_object", "_actions", "_dlgInteractionDialog", "_ctrlInteractionDialog", "_index", "_ctrlInteractionDialogIcon", "_a", "_action", "_count"];
|
||||
|
||||
_object = GVAR(Target);
|
||||
_actions = GVAR(Buttons);
|
||||
|
@ -3,11 +3,11 @@
|
||||
* Test if can Become Leader of group
|
||||
*
|
||||
* Arguments:
|
||||
* 0: target <OBJECT>
|
||||
* 1: player <OBJECT>
|
||||
* 0: Target <OBJECT>
|
||||
* 1: Player <OBJECT>
|
||||
*
|
||||
* Return Value:
|
||||
* <BOOL>
|
||||
* Able to become leader of group <BOOL>
|
||||
*
|
||||
* Example:
|
||||
* [player, player] call ace_interaction_fnc_canBecomeLeader
|
||||
|
@ -1,5 +1,18 @@
|
||||
// by commy2
|
||||
|
||||
/*
|
||||
* Author: commy2
|
||||
* Checks if the player can interact with civilian
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Target <OBJECT>
|
||||
*
|
||||
* Return value:
|
||||
* Able to interact with civilian <BOOL>
|
||||
*
|
||||
* Example:
|
||||
* [target] call ace_interaction_fnc_canInteractWithCivilian
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
EXPLODE_2_PVT(_this,_unit,_isCivilian);
|
||||
@ -8,4 +21,4 @@ if (isNil "_isCivilian") then {_isCivilian = true};
|
||||
|
||||
alive _unit
|
||||
&& [side _unit != side ACE_player, side group _unit == civilian] select _isCivilian
|
||||
//&& {count (weapons _unit) == 0}
|
||||
//&& {count (weapons _unit) == 0}
|
||||
|
@ -1,10 +1,22 @@
|
||||
// by commy2
|
||||
/*
|
||||
* Author: commy2
|
||||
* Checks if the player can join a group
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Player <OBJECT>
|
||||
* 1: Target <OBJECT>
|
||||
*
|
||||
* Return value:
|
||||
* Able to join a group <BOOL>
|
||||
*
|
||||
* Example:
|
||||
* [player, target] call ace_interaction_fnc_canJoinGroup
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_unit", "_target"];
|
||||
|
||||
_unit = _this select 0;
|
||||
_target = _this select 1;
|
||||
PARAMS_2(_unit,_target);
|
||||
|
||||
alive _target
|
||||
&& {!(_target getVariable ["ACE_isUnconscious", false])}
|
||||
|
@ -1,10 +1,22 @@
|
||||
// by commy2
|
||||
/*
|
||||
* Author: commy2
|
||||
* Checks if the player can join a team
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Player <OBJECT>
|
||||
* 1: Target <OBJECT>
|
||||
*
|
||||
* Return value:
|
||||
* Able to join a team <BOOL>
|
||||
*
|
||||
* Example:
|
||||
* [player, target] call ace_interaction_fnc_canJoinTeam
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_unit", "_target"];
|
||||
|
||||
_unit = _this select 0;
|
||||
_target = _this select 1;
|
||||
PARAMS_2(_unit,_target);
|
||||
|
||||
alive _target
|
||||
&& {!(_target getVariable ["ACE_isUnconscious", false])}
|
||||
|
@ -1,11 +1,22 @@
|
||||
// by commy2
|
||||
|
||||
/*
|
||||
* Author: commy2
|
||||
* Checks if the player can tap a shoulder
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Player <OBJECT>
|
||||
* 1: Target <OBJECT>
|
||||
*
|
||||
* Return value:
|
||||
* Able to tap a shoulder <BOOL>
|
||||
*
|
||||
* Example:
|
||||
* [player, target] call ace_interaction_fnc_canTapShoulder
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_unit", "_target"];
|
||||
|
||||
_unit = _this select 0;
|
||||
_target = _this select 1;
|
||||
PARAMS_2(_unit,_target);
|
||||
|
||||
_target isKindOf "CAManBase" &&
|
||||
{alive _target} &&
|
||||
|
@ -3,8 +3,8 @@
|
||||
* Become Leader of group
|
||||
*
|
||||
* Arguments:
|
||||
* 0: target <OBJECT>
|
||||
* 1: player <OBJECT>
|
||||
* 0: Target <OBJECT>
|
||||
* 1: Player <OBJECT>
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
|
@ -1,9 +1,25 @@
|
||||
// by commy2
|
||||
/*
|
||||
* Author: commy2
|
||||
* Get door
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Distance <NUMBER>
|
||||
*
|
||||
* Return value:
|
||||
* House objects and door <ARRAY>
|
||||
* 0: House <OBJECT>
|
||||
* 1: Door Name <STRING>
|
||||
*
|
||||
* Example:
|
||||
* [player, target] call ace_interaction_fnc_getDoor
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_distance", "_position0", "_position1", "_intersections", "_count", "_house", "_door", "_index", "_id"];
|
||||
PARAMS_1(_distance);
|
||||
|
||||
_distance = _this select 0;
|
||||
private ["_position0", "_position1", "_intersections", "_count", "_house", "_door"];
|
||||
|
||||
_position0 = positionCameraToWorld [0, 0, 0];
|
||||
_position1 = positionCameraToWorld [0, 0, _distance];
|
||||
@ -22,4 +38,5 @@ _intersections = [_house, "GEOM"] intersect [_position0, _position1];
|
||||
|
||||
_door = _intersections select 0 select 0;
|
||||
if (isNil "_door") exitWith {[_house, ""]};
|
||||
|
||||
[_house, _door]
|
||||
|
@ -1,10 +1,26 @@
|
||||
// by commy2
|
||||
/*
|
||||
* Author: commy2
|
||||
* Get door animations
|
||||
*
|
||||
* Arguments:
|
||||
* 0: House <OBJECT>
|
||||
* 1: Door <STRING>
|
||||
*
|
||||
* Return value:
|
||||
* Animation and Locked variable <ARRAY>
|
||||
* 0: Animation <STRING>
|
||||
* 1: Locked variable <STRING>
|
||||
*
|
||||
* Example:
|
||||
* array = [target, "door"] call ace_interaction_fnc_getDoorAnimations
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_house", "_door", "_animations", "_lockedVariable"];
|
||||
PARAMS_2(_house,_door);
|
||||
|
||||
_house = _this select 0;
|
||||
_door = _this select 1;
|
||||
private ["_index", "_animations", "_lockedVariable"];
|
||||
|
||||
_index = [
|
||||
"door_1",
|
||||
|
@ -1,21 +1,25 @@
|
||||
/*
|
||||
* Author: KoffeinFlummi
|
||||
*
|
||||
* Forces a civilian to the ground. (chance of failure).
|
||||
* Forces a civilian to the ground (with a chance of failure)
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Unit to be sent away (Object)
|
||||
* 0: Unit <OBJECT>
|
||||
*
|
||||
* Return value:
|
||||
* none
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [target] call ace_interaction_fnc_getDown
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
#define RADIUS 10
|
||||
|
||||
private ["_unit", "_chance", "_x"];
|
||||
PARAMS_1(_unit);
|
||||
|
||||
_unit = _this select 0;
|
||||
private ["_chance", "_x"];
|
||||
|
||||
ACE_player playActionNow "GestureGo"; // put something else here.
|
||||
|
||||
@ -31,4 +35,4 @@ if (count (weapons ACE_player) > 0) then {
|
||||
_this setUnitPos "DOWN";
|
||||
}, _x] call CBA_fnc_globalExecute;
|
||||
};
|
||||
} foreach (_unit nearEntities ["Civilian", RADIUS]);
|
||||
} forEach (_unit nearEntities ["Civilian", RADIUS]);
|
||||
|
@ -1,4 +1,18 @@
|
||||
// by commy2
|
||||
/*
|
||||
* Author: commy2
|
||||
* Get selected button
|
||||
*
|
||||
* Arguments:
|
||||
* None
|
||||
*
|
||||
* Return value:
|
||||
* Angle <NUMBER>
|
||||
*
|
||||
* Example:
|
||||
* call ace_interaction_fnc_getSelectedButton
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
#define MIN_DISTANCE 0.0065
|
||||
|
@ -2,18 +2,21 @@
|
||||
* Author: esteldunedain
|
||||
* Return a suitable position for the action point for the current weapon
|
||||
*
|
||||
* Argument:
|
||||
* None
|
||||
* Arguments:
|
||||
* None (uses local variable _target)
|
||||
*
|
||||
* Return value:
|
||||
* Children actions <ARRAY>
|
||||
*
|
||||
* Example:
|
||||
* call ace_interaction_fnc_getWeaponPos
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
// IGNORE_PRIVATE_WARNING(_target);
|
||||
|
||||
private ["_weaponDir","_refSystem"];
|
||||
private ["_weaponDir", "_refSystem"];
|
||||
|
||||
_weaponDir = _target weaponDirection currentWeapon _target;
|
||||
_refSystem = _weaponDir call EFUNC(common,createOrthonormalReference);
|
||||
|
@ -1,22 +1,22 @@
|
||||
/*
|
||||
Author: Garth de Wet (LH)
|
||||
|
||||
Description:
|
||||
Closes the Interaction menu
|
||||
|
||||
Parameters:
|
||||
Nothing
|
||||
|
||||
Returns:
|
||||
Nothing
|
||||
|
||||
Example:
|
||||
call FUNC(hideMenu);
|
||||
*/
|
||||
* Author: Garth de Wet (LH)
|
||||
* Closes the Interaction menu
|
||||
*
|
||||
* Arguments:
|
||||
* None
|
||||
*
|
||||
* Return value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* call ace_interaction_fnc_hideMenu
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
closeDialog 0;
|
||||
(findDisplay 1713999) closeDisplay 1;
|
||||
(uiNameSpace getVariable QGVAR(Flow_Display)) closeDisplay 0;
|
||||
GVAR(MainButton) = nil;
|
||||
call FUNC(hideMouseHint);
|
||||
call FUNC(hideMouseHint);
|
||||
|
@ -1,22 +1,21 @@
|
||||
/*
|
||||
Author(s):
|
||||
Garth de Wet (LH)
|
||||
|
||||
Description:
|
||||
Hides the interaction helper text with the mouse buttons at the bottom middle of the screen
|
||||
|
||||
Parameters:
|
||||
Nothing
|
||||
|
||||
Returns:
|
||||
Nothing
|
||||
|
||||
Example:
|
||||
call FUNC(hideMouseHint);
|
||||
*/
|
||||
* Author: Garth de Wet (LH)
|
||||
* Hides the interaction helper text with the mouse buttons at the bottom middle of the screen
|
||||
*
|
||||
* Arguments:
|
||||
* None
|
||||
*
|
||||
* Return value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* call ace_interaction_fnc_hideMouseHint
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
if (isNull (uiNamespace getVariable ["ACE_Helper_Display", objNull])) exitWith{};
|
||||
|
||||
(QGVAR(InteractionHelper) call BIS_fnc_rscLayer) cutText ["", "PLAIN"];
|
||||
showHUD true;
|
||||
showHUD true;
|
||||
|
@ -1,21 +1,24 @@
|
||||
/*
|
||||
* Author: commy2
|
||||
*
|
||||
* Check if the vehicle is in range of the player.
|
||||
*
|
||||
* Argument:
|
||||
* 0: Vehicke (Object)
|
||||
* 1: Distance in meters (Number)
|
||||
* Arguments:
|
||||
* 0: Vehicle <OBJECT>
|
||||
* 1: Distance in meters <NUMBER>
|
||||
*
|
||||
* Return value:
|
||||
* (Bool)
|
||||
* Vehicle in range of player <BOOL>
|
||||
*
|
||||
* Example:
|
||||
* [target, 5] call ace_interaction_fnc_isInRange
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_vehicle", "_distance", "_player"];
|
||||
PARAMS_2(_vehicle,_distance);
|
||||
|
||||
_vehicle = _this select 0;
|
||||
_distance = _this select 1;
|
||||
private ["_player", "_position0", "_position1"];
|
||||
|
||||
_player = ACE_player;
|
||||
|
||||
|
@ -1,10 +1,24 @@
|
||||
// by commy2
|
||||
/*
|
||||
* Author: commy2
|
||||
* Assigns a unit to the team
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Unit <OBJECT>
|
||||
* 1: Team <STRING>
|
||||
*
|
||||
* Return value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [target, "YELLOW"] call ace_interaction_fnc_joinTeam
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_unit", "_team", "_message"];
|
||||
PARAMS_2(_unit,_team);
|
||||
|
||||
_unit = _this select 0;
|
||||
_team = _this select 1;
|
||||
private ["_message"];
|
||||
|
||||
_unit setVariable [QGVAR(assignedFireTeam), _team, true];
|
||||
[_unit, format ["{_this assignTeam '%1'}", _team]] call EFUNC(common,execRemoteFnc);
|
||||
|
@ -1,16 +1,24 @@
|
||||
/*
|
||||
* Author: bux578
|
||||
*
|
||||
* Initializes the Interaction module.
|
||||
* Initializes the Interaction module
|
||||
*
|
||||
* Arguments:
|
||||
* Whatever the module provides. (I dunno.)
|
||||
* 0: Logic <NUMBER>
|
||||
* 1: ???
|
||||
* 2: Activation State <BOOL>
|
||||
*
|
||||
* Return Value:
|
||||
* Return value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [logic, ???, activationState] call ace_interaction_fnc_moduleInteraction
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_logic", "_activated"];
|
||||
|
||||
_logic = _this select 0;
|
||||
_activated = _this select 2;
|
||||
|
||||
|
@ -1,21 +1,22 @@
|
||||
/*
|
||||
Author: Garth de Wet (LH)
|
||||
|
||||
Description:
|
||||
Depending on the passed value, either scrolls down through the list or up.
|
||||
|
||||
Parameters:
|
||||
NUMBER - Amount to increase current interaction target
|
||||
|
||||
Returns:
|
||||
Nothing
|
||||
|
||||
Example:
|
||||
1 call FUNC(MoveDown);
|
||||
-1 call FUNC(MoveDown);
|
||||
*/
|
||||
* Author: Garth de Wet (LH)
|
||||
* Scrolls through the list down or up
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Amount <NUMBER>
|
||||
*
|
||||
* Return value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [2] call ace_interaction_fnc_moveDown
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_count", "_player", "_vehicle", "_dlgInteractionDialog", "_top", "_i", "", "_ctrl", "_index", "_action", "_color", "_current", "_infoText", "_target"];
|
||||
|
||||
#define CLAMP(x,low,high) (if(x > high)then{high}else{if(x < low)then{low}else{x}})
|
||||
if (isNil QGVAR(MainButton)) exitWith{};
|
||||
if (isNil QGVAR(Buttons)) exitWith{};
|
@ -1,7 +1,21 @@
|
||||
// by commy2
|
||||
/*
|
||||
* Author: commy2
|
||||
* On button up
|
||||
*
|
||||
* Arguments:
|
||||
* None
|
||||
*
|
||||
* Return value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* call ace_interaction_fnc_onButtonUp
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_player", "_vehicle", "_target", "_count", "_index", "_action", "_statement", "_condition", "_conditionShow", "_exceptions", "_distance"];
|
||||
private ["_player", "_vehicle", "_target", "_count", "_index", "_action", "_statement", "_condition", "_conditionShow", "_distance"];
|
||||
|
||||
_player = ACE_player;
|
||||
_vehicle = vehicle _player;
|
||||
@ -20,11 +34,9 @@ _action = if (_index != -1 && {_index < _count}) then {
|
||||
closeDialog 0;
|
||||
|
||||
|
||||
|
||||
_statement = _action select 1;
|
||||
_condition = _action select 2;
|
||||
_conditionShow = _action select 7;
|
||||
_exceptions = _action select 8;//
|
||||
_distance = _action select 9;
|
||||
|
||||
if ((_distance == 0 || {[GVAR(Target), _distance] call FUNC(isInRange)}) && {[_target, _player] call _condition} && {[_target, _player] call _conditionShow}) then {
|
||||
|
@ -1,6 +1,20 @@
|
||||
// by commy2
|
||||
/*
|
||||
* Author: commy2
|
||||
* On click
|
||||
*
|
||||
* Arguments:
|
||||
* Index <NUMBER>
|
||||
*
|
||||
* Return value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* 5 call ace_interaction_fnc_onClick
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
private ["_player", "_vehicle", "_target", "_count", "_index", "_action", "_subMenu", "_statement", "_condition", "_conditionShow", "_exceptions", "_distance"];
|
||||
private ["_player", "_vehicle", "_target", "_count", "_index", "_action", "_subMenu", "_statement", "_condition", "_conditionShow", "_distance"];
|
||||
|
||||
_player = ACE_player;
|
||||
_vehicle = vehicle _player;
|
||||
@ -29,7 +43,6 @@ if (count _subMenu < 2) then {
|
||||
_statement = _action select 1;
|
||||
_condition = _action select 2;
|
||||
_conditionShow = _action select 7;
|
||||
_exceptions = _action select 8;//
|
||||
_distance = _action select 9;
|
||||
|
||||
if ((_distance == 0 || {[GVAR(Target), _distance] call FUNC(isInRange)}) && {[_target, _player] call _condition} && {[_target, _player] call _conditionShow}) then {
|
||||
|
@ -1,4 +1,18 @@
|
||||
// by CorruptedHeart, commy2
|
||||
/*
|
||||
* Author: CorruptedHeart, commy2
|
||||
* On select menu double click
|
||||
*
|
||||
* Arguments:
|
||||
* None
|
||||
*
|
||||
* Return value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* call ace_interaction_fnc_onSelectMenuDblClick
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
call compile (lbData [8866, lbCurSel 8866]) call GVAR(SelectAccept);
|
||||
|
@ -1,19 +1,32 @@
|
||||
// by commy2
|
||||
/*
|
||||
* Author: commy2
|
||||
* Opens door
|
||||
*
|
||||
* Arguments:
|
||||
* 0: House <OBJECT>
|
||||
* 1: Door <STRING>
|
||||
*
|
||||
* Return value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [house, "door"] call ace_interaction_fnc_openDoor
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_info", "_house", "_door", "_animations", "_lockedVariable"];
|
||||
private ["_info", "_animations", "_phase", "_position", "_time", "_usedMouseWheel"];
|
||||
|
||||
_info = [2] call FUNC(getDoor);
|
||||
|
||||
_house = _info select 0;
|
||||
_door = _info select 1;
|
||||
EXPLODE_2_PVT(_info,_house,_door);
|
||||
|
||||
if (isNull _house) exitWith {};
|
||||
|
||||
_animations = [_house, _door] call FUNC(getDoorAnimations);
|
||||
|
||||
_lockedVariable = _animations select 1;
|
||||
_animations = _animations select 0;
|
||||
EXPLODE_2_PVT(_animations,_animations,_lockedVariable);
|
||||
|
||||
if (count _animations == 0) exitWith {};
|
||||
|
||||
@ -26,6 +39,7 @@ GVAR(isOpeningDoor) = true;
|
||||
playSound "ACE_Sound_Click";
|
||||
|
||||
[_house, _animations] spawn {
|
||||
private ["_house", "_animations", "_phase", "_position", "_time", "_usedMouseWheel"];
|
||||
_house = _this select 0;
|
||||
_animations = _this select 1;
|
||||
|
||||
|
@ -1,44 +1,57 @@
|
||||
// by commy2
|
||||
/*
|
||||
* Author: commy2
|
||||
* Opens menu select UI
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Unit <OBJECT>
|
||||
* 1: Vehicle <OBJECT>
|
||||
*
|
||||
* Return value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [unit, vehicle] call ace_interaction_fnc_openMenuSelectUI
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_unit", "_vehicle", "_cargo"];
|
||||
PARAMS_2(_unit,_vehicle);
|
||||
|
||||
_unit = _this select 0;
|
||||
_vehicle = _this select 1;
|
||||
private ["_cargo", "_actions"];
|
||||
|
||||
// allow interaction with all cargo slots and all ffv slots
|
||||
// Allow interaction with all cargo slots and all FFV slots
|
||||
_cargo = [_vehicle, ["cargo", "ffv"], true] call EFUNC(common,getVehicleCrew);
|
||||
|
||||
// you can only interact if you are in cargo or ffv yourself. exit otherwise
|
||||
// You can only interact if you are in cargo or FFV yourself. exit otherwise
|
||||
if !(_unit in _cargo) exitWith {};
|
||||
|
||||
GVAR(InteractionMenu_Crew) = _cargo;
|
||||
|
||||
// prepare: add header and "OK" button to select menu
|
||||
private "_actions";
|
||||
// Prepare: add header and "OK" button to select menu
|
||||
_actions = [localize "STR_ACE_Interaction_InteractionMenu", localize "STR_ACE_Interaction_Interact"] call FUNC(prepareSelectMenu);
|
||||
|
||||
// prepare: add all cargo units as options to select menu
|
||||
// Prepare: add all cargo units as options to select menu
|
||||
{
|
||||
if (_x != _unit) then {
|
||||
_actions = [
|
||||
_actions,
|
||||
[_x] call EFUNC(common,getName),
|
||||
QUOTE(PATHTOF(UI\dot_ca.paa)),
|
||||
_forEachIndex
|
||||
] call FUNC(AddSelectableItem);
|
||||
};
|
||||
if (_x != _unit) then {
|
||||
_actions = [
|
||||
_actions,
|
||||
[_x] call EFUNC(common,getName),
|
||||
QUOTE(PATHTOF(UI\dot_ca.paa)),
|
||||
_forEachIndex
|
||||
] call FUNC(addSelectableItem);
|
||||
};
|
||||
} forEach _cargo;
|
||||
|
||||
// open select menu
|
||||
// Open select menu
|
||||
[
|
||||
_actions,
|
||||
{
|
||||
call FUNC(hideMenu);
|
||||
[0, GVAR(InteractionMenu_Crew) select _this, ""] spawn FUNC(showMenu);
|
||||
GVAR(InteractionMenu_Crew) = nil;
|
||||
},
|
||||
{
|
||||
call FUNC(hideMenu);
|
||||
}
|
||||
_actions,
|
||||
{
|
||||
call FUNC(hideMenu);
|
||||
[0, GVAR(InteractionMenu_Crew) select _this, ""] spawn FUNC(showMenu);
|
||||
GVAR(InteractionMenu_Crew) = nil;
|
||||
},
|
||||
{
|
||||
call FUNC(hideMenu);
|
||||
}
|
||||
] call FUNC(openSelectMenu);
|
||||
|
@ -1,36 +1,42 @@
|
||||
/*
|
||||
Author: Garth de Wet (LH)
|
||||
|
||||
Description:
|
||||
Opens the select menu UI and sets up the UI
|
||||
|
||||
Parameters:
|
||||
0: ARRAY - items
|
||||
ARRAY
|
||||
0 = Text
|
||||
1 = statement to execute
|
||||
2 = condition before execute
|
||||
3 = showDisabled
|
||||
4 = priority
|
||||
5 = icon
|
||||
6 = extra variables. Passed to the code.
|
||||
1: Code - select action
|
||||
2: Code - Cancel Action
|
||||
Returns:
|
||||
Nothing
|
||||
|
||||
Example:
|
||||
*/
|
||||
* Author: Garth de Wet (LH)
|
||||
* Opens the select menu UI and sets up the UI
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Items <ARRAY>
|
||||
* 0: Text <STRING>
|
||||
* 1: Statement to execute <CODE>
|
||||
* 2: Condition before execute <CODE>
|
||||
* 3: showDisabled <BOOL>
|
||||
* 4: Priority <NUMBER>
|
||||
* 5: Icon <STRING>
|
||||
* 6: Extra variables passed to the code <ARRAY>
|
||||
* 1: Select Action <CODE>
|
||||
* 2: Cancel Action <CODE>
|
||||
*
|
||||
* Return value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [["text", {statement}, {condition}, showDisabled, priority, "icon", [variables]], {selectAction}, {cancelAction}] call ace_interaction_fnc_openSelectMenu
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
private["_action", "_count", "_customActions", "_i"];
|
||||
|
||||
if (!(profileNamespace getVariable [QGVAR(FlowMenu), false])) then {
|
||||
GVAR(SelectAccept) = _this select 1;
|
||||
GVAR(SelectCancel) = _this select 2;
|
||||
buttonSetAction [8855, QUOTE( call GVAR(SelectCancel); )]; // cancel
|
||||
buttonSetAction [8860, QUOTE( (call compile (lbData [ARR_2(8866, lbCurSel 8866)])) call GVAR(SelectAccept); )]; // accept
|
||||
buttonSetAction [8855, QUOTE( call GVAR(SelectCancel); )]; // Cancel
|
||||
buttonSetAction [8860, QUOTE( (call compile (lbData [ARR_2(8866, lbCurSel 8866)])) call GVAR(SelectAccept); )]; // Accept
|
||||
lbSetCurSel [8866, 0];
|
||||
}else{
|
||||
_customActions = _this select 0;
|
||||
PARAMS_1(_customActions);
|
||||
|
||||
private ["_count", "_action"];
|
||||
|
||||
_count = count _customActions;
|
||||
if (_count == 0) exitWith {};
|
||||
_customActions call FUNC(sortOptionsByPriority);
|
||||
|
@ -1,28 +1,29 @@
|
||||
/*
|
||||
Author: Garth de Wet (LH)
|
||||
|
||||
Description:
|
||||
Prepares the select menu for use.
|
||||
|
||||
Parameters:
|
||||
0: TEXT - Header text
|
||||
1: TEXT - Approve button text
|
||||
|
||||
Returns:
|
||||
ARRAY/NUMBER - container object for use with AddSelectableItem.
|
||||
|
||||
Example:
|
||||
["Select Explosive", "Place"] call FUNC(prepareSelectMenu);
|
||||
*/
|
||||
* Author: Garth de Wet (LH)
|
||||
* Prepares the select menu for use
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Header Text <STRING>
|
||||
* 1: Approve Button Text <STRING>
|
||||
*
|
||||
* Return value:
|
||||
* Container object <NUMBER>
|
||||
*
|
||||
* Example:
|
||||
* array = ["Select Explosive", "Place"] call ace_interaction_fnc_prepareSelectMenu
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_buttonAction", "_header", "_buttonText", "_cancelButton"];
|
||||
PARAMS_2(_header,_buttonText);
|
||||
|
||||
closeDialog 0;
|
||||
_header = _this select 0;
|
||||
_buttonText = _this select 1;
|
||||
|
||||
if (isNil "_buttonText" or {_buttonText == ""}) then {
|
||||
_buttonText = localize "STR_ACE_Interaction_MakeSelection";
|
||||
};
|
||||
|
||||
createDialog "RscACE_SelectAnItem";
|
||||
ctrlSetText [8860, _buttonText];
|
||||
ctrlSetText [8870, _header];
|
||||
|
@ -1,22 +1,26 @@
|
||||
/*
|
||||
* Author: KoffeinFlummi
|
||||
*
|
||||
* Pushes a boat away from the player.
|
||||
* Pushes a boat away from the player
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Boat (object)
|
||||
* 1: Velocity (vectorlike array)
|
||||
* 0: Boat <OBJECT>
|
||||
* 1: Velocity <ARRAY>
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [target, [vector]] call ace_interaction_fnc_push
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
#include "script_component.hpp"
|
||||
|
||||
_boat = _this select 0;
|
||||
_velocity = _this select 1;
|
||||
PARAMS_2(_boat,_velocity);
|
||||
|
||||
if !(local _boat) exitWith {
|
||||
[_this, QUOTE(FUNC(push)), _boat] call EFUNC(common,execRemoteFnc);
|
||||
[_this, QUOTE(FUNC(push)), _boat] call EFUNC(common,execRemoteFnc);
|
||||
};
|
||||
|
||||
_boat setVelocity _velocity;
|
||||
|
@ -1,7 +1,23 @@
|
||||
// by commy2
|
||||
/*
|
||||
* Author: commy2
|
||||
* Removes tag
|
||||
*
|
||||
* Arguments:
|
||||
* None
|
||||
*
|
||||
* Return value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* call ace_interaction_fnc_removeTag
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
0 spawn {
|
||||
private ["_index", "_name"];
|
||||
|
||||
waitUntil {player getVariable ["ACE_Name", ""] != ""};
|
||||
|
||||
_name = player getVariable ["ACE_Name", ""];
|
||||
|
@ -1,36 +1,40 @@
|
||||
/*
|
||||
* Author: KoffeinFlummi
|
||||
*
|
||||
* Sends a civilian crowd away (chance of failure).
|
||||
* Sends a civilian crowd away with a chance of failure
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Unit to be sent away (Object)
|
||||
* 0: Unit <OBJECT>
|
||||
*
|
||||
* Return value:
|
||||
* none
|
||||
*/
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [target] call ace_interaction_fnc_sendAway
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
#define DISTANCE 50
|
||||
#define RADIUS 10
|
||||
|
||||
private ["_unit", "_chance", "_x"];
|
||||
PARAMS_1(_unit);
|
||||
|
||||
_unit = _this select 0;
|
||||
private ["_chance", "_x"];
|
||||
|
||||
ACE_player playActionNow "GestureGo";
|
||||
|
||||
if (count weapons ACE_player > 0) then {
|
||||
_chance = 0.8;
|
||||
_chance = 0.8;
|
||||
} else {
|
||||
_chance = 0.5;
|
||||
_chance = 0.5;
|
||||
};
|
||||
|
||||
{
|
||||
if (count (weapons _unit) == 0 and random 1 < _chance) then {
|
||||
[-2, {
|
||||
(_this select 0) setUnitPos "AUTO";
|
||||
(_this select 0) doMove [(getPos (_this select 0) select 0) + DISTANCE * (eyeDirection (_this select 1) select 0), (getPos (_this select 0) select 1) + DISTANCE * (eyeDirection (_this select 1) select 1), 0];
|
||||
}, [_x, ACE_player]] call CBA_fnc_globalExecute;
|
||||
};
|
||||
} foreach (_unit nearEntities ["Civilian", RADIUS]);
|
||||
if (count (weapons _unit) == 0 and random 1 < _chance) then {
|
||||
[-2, {
|
||||
(_this select 0) setUnitPos "AUTO";
|
||||
(_this select 0) doMove [(getPos (_this select 0) select 0) + DISTANCE * (eyeDirection (_this select 1) select 0), (getPos (_this select 0) select 1) + DISTANCE * (eyeDirection (_this select 1) select 1), 0];
|
||||
}, [_x, ACE_player]] call CBA_fnc_globalExecute;
|
||||
};
|
||||
} forEach (_unit nearEntities ["Civilian", RADIUS]);
|
||||
|
@ -1,28 +1,28 @@
|
||||
/*
|
||||
Author(s):
|
||||
Garth de Wet (LH)
|
||||
|
||||
Description:
|
||||
Shows the interaction helper text with the mouse buttons at the bottom middle of the screen
|
||||
|
||||
Parameters:
|
||||
0: STRING - Left click text
|
||||
1: STRING - Right click text
|
||||
3: STRING - (Optional) Scroll text
|
||||
|
||||
Returns:
|
||||
Nothing
|
||||
|
||||
Example:
|
||||
["Place Explosive", "Cancel"] call FUNC(showMouseHint);
|
||||
*/
|
||||
* Author: Garth de Wet (LH)
|
||||
* Shows the interaction helper text with the mouse buttons at the bottom middle of the screen
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Left Click Text <STRING>
|
||||
* 1: Right Click Text <STRING>
|
||||
* 2: Scroll Text <STRING> (Optional)
|
||||
*
|
||||
* Return value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* ["Place Explosive", "Cancel"] call ace_interaction_fnc_showMouseHint
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
#define GUI_GRID_W (0.025)
|
||||
#define GUI_GRID_H (0.04)
|
||||
private ["_leftClick", "_rightClick", "_scroll"];
|
||||
_leftClick = _this select 0;
|
||||
_rightClick = _this select 1;
|
||||
|
||||
private ["_scroll", "_display"];
|
||||
|
||||
PARAMS_2(_leftClick,_rightClick);
|
||||
_scroll = "";
|
||||
if (count _this > 2) then {
|
||||
_scroll = _this select 2;
|
||||
@ -44,11 +44,10 @@ if (isNull _display) exitWith{};
|
||||
if (_scroll == "") exitWith {
|
||||
(_display displayCtrl 1002) ctrlShow false;
|
||||
(_display displayCtrl 1202) ctrlShow false;
|
||||
|
||||
(_display displayCtrl 1001) ctrlSetPosition [21 * GUI_GRID_W, 18 * GUI_GRID_H, 8 * GUI_GRID_W, 1.5 * GUI_GRID_H];
|
||||
(_display displayCtrl 1201) ctrlSetPosition [20 * GUI_GRID_W, 18.5 * GUI_GRID_H, 1 * GUI_GRID_W, 1 * GUI_GRID_H];
|
||||
(_display displayCtrl 1001) ctrlSetPosition [21 * GUI_GRID_W, 18 * GUI_GRID_H, 8 * GUI_GRID_W, 1.5 * GUI_GRID_H];
|
||||
(_display displayCtrl 1201) ctrlSetPosition [20 * GUI_GRID_W, 18.5 * GUI_GRID_H, 1 * GUI_GRID_W, 1 * GUI_GRID_H];
|
||||
(_display displayCtrl 1001) ctrlCommit 0;
|
||||
(_display displayCtrl 1201) ctrlCommit 0;
|
||||
};
|
||||
(_display displayCtrl 1002) ctrlSetText _scroll;
|
||||
showHUD false;
|
||||
showHUD false;
|
||||
|
@ -1,4 +1,18 @@
|
||||
// by commy2
|
||||
/*
|
||||
* Author: commy2
|
||||
* Sort options by priority
|
||||
*
|
||||
* Arguments:
|
||||
* Actions <ARRAY>
|
||||
*
|
||||
* Return value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* customActions call ace_interaction_fnc_sortOptionsByPriority
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_actions", "_count", "_index", "_actionN", "_actionM"];
|
||||
|
@ -1,4 +1,19 @@
|
||||
// by commy2
|
||||
/*
|
||||
* Author: commy2
|
||||
* Taps a shoulder
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Player <OBJECT>
|
||||
* 1: Target <OBJECT>
|
||||
*
|
||||
* Return value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [player, target] call ace_interaction_fnc_tapShoulder
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
EXPLODE_3_PVT(_this,_tapper,_target,_shoulderNum);
|
||||
@ -13,7 +28,7 @@ if (_target != ACE_player) exitWith {
|
||||
|
||||
addCamShake [4, 0.5, 5];
|
||||
|
||||
private "_message";
|
||||
private ["_message"];
|
||||
//localize is converting the escaped <> symbols, so just add them here instead of in the stringtable
|
||||
if (_shoulderNum == 0) then {
|
||||
_message = format ["%1 >", (localize "STR_ACE_Interaction_YouWereTappedRight")];
|
||||
|
@ -1,12 +1,32 @@
|
||||
// by commy2
|
||||
/*
|
||||
* Author: commy2
|
||||
* Updates tooltip's position
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Tooltip Display <NUMBER>
|
||||
* 1: X Coordinate <NUMBER>
|
||||
* 2: Y Coordinate <NUMBER>
|
||||
*
|
||||
* Return value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [player, 0.5, 0.5] call ace_interaction_fnc_updateTooltipPosition
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
PARAMS_3(_tooltip,_coordinateX,_coordinateY);
|
||||
|
||||
private["_ctrl"];
|
||||
|
||||
disableSerialization;
|
||||
_ctrl = ctrlParent (_this select 0) displayCtrl 40;
|
||||
_ctrl = ctrlParent _tooltip displayCtrl 40;
|
||||
|
||||
_ctrl ctrlSetPosition [
|
||||
(_this select 1) + 0.01 * safezoneW,
|
||||
(_this select 2) + 0.01 * safezoneH,
|
||||
_coordinateX + 0.01 * safezoneW,
|
||||
_coordinateY + 0.01 * safezoneH,
|
||||
2.0 / 16 * safezoneW,
|
||||
0.3 / 9 * safezoneH
|
||||
];
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="Interaction">
|
||||
<Key ID="STR_ACE_Interaction_MainAction">
|
||||
@ -522,7 +522,7 @@
|
||||
<German>Rot</German>
|
||||
<Spanish>Rojo</Spanish>
|
||||
<French>Rouge</French>
|
||||
<Polish>Czerwony</Polish>
|
||||
<Polish>Czerwonych</Polish>
|
||||
<Czech>Červený</Czech>
|
||||
<Russian>Красный</Russian>
|
||||
<Portuguese>Vermelha</Portuguese>
|
||||
@ -534,7 +534,7 @@
|
||||
<German>Grün</German>
|
||||
<Spanish>Verde</Spanish>
|
||||
<French>Vert</French>
|
||||
<Polish>Zielony</Polish>
|
||||
<Polish>Zielonych</Polish>
|
||||
<Czech>Zelený</Czech>
|
||||
<Russian>Зеленый</Russian>
|
||||
<Portuguese>Verde</Portuguese>
|
||||
@ -546,7 +546,7 @@
|
||||
<German>Blau</German>
|
||||
<Spanish>Azul</Spanish>
|
||||
<French>Bleu</French>
|
||||
<Polish>Niebieski</Polish>
|
||||
<Polish>Niebieskich</Polish>
|
||||
<Czech>Modrý</Czech>
|
||||
<Russian>Синий</Russian>
|
||||
<Portuguese>Azul</Portuguese>
|
||||
@ -558,7 +558,7 @@
|
||||
<German>Gelb</German>
|
||||
<Spanish>Amarillo</Spanish>
|
||||
<French>Jaune</French>
|
||||
<Polish>Żółty</Polish>
|
||||
<Polish>Żółtych</Polish>
|
||||
<Czech>Žlutý</Czech>
|
||||
<Russian>Жёлтый</Russian>
|
||||
<Portuguese>Amarela</Portuguese>
|
||||
@ -666,7 +666,7 @@
|
||||
<German>Du bist Gruppe %1 beigetreten</German>
|
||||
<Spanish>Te has unido al equipo %1</Spanish>
|
||||
<French>Tu as rejoint l'équipe %1</French>
|
||||
<Polish>Dołączyłeś do drużyny %1</Polish>
|
||||
<Polish>Dołączyłeś do %1</Polish>
|
||||
<Czech>Připojil ses do %1 týmu</Czech>
|
||||
<Russian>Вы присоединились к группе %1</Russian>
|
||||
<Portuguese>Você uniu-se à Equipe %1</Portuguese>
|
||||
@ -793,5 +793,21 @@
|
||||
<Italian>Passeggeri</Italian>
|
||||
<Portuguese>Passageiros</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_InteractionSystem_Module_DisplayName">
|
||||
<English>Interaction System</English>
|
||||
<Polish>System interakcji</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_InteractionSystem_EnableTeamManagement_DisplayName">
|
||||
<English>Enable Team Management</English>
|
||||
<Polish>Wł. zarządzanie drużyną</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_InteractionSystem_EnableTeamManagement_Description">
|
||||
<English>Should players be allowed to use the Team Management Menu? Default: Yes</English>
|
||||
<Polish>Czy gracze mogą korzystać z menu zarządzania drużyną? Domyślnie: Tak</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_InteractionSystem_Module_Description">
|
||||
<English></English>
|
||||
<Polish>Na zarządzanie drużyną składa się: przydział kolorów dla członków drużyny, przejmowanie dowodzenia, dołączanie/opuszczanie drużyn.</Polish>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
@ -16,7 +16,7 @@ class CfgVehicles {
|
||||
class MainTurret : MainTurret {
|
||||
weapons[] = { QGVAR(Titan_Static) };
|
||||
magazines[] = {"1Rnd_GAT_missiles","1Rnd_GAT_missiles","1Rnd_GAT_missiles","1Rnd_GAT_missiles"};
|
||||
|
||||
|
||||
turretInfoType = "ACE_RscOptics_javelin";
|
||||
gunnerOpticsModel = PATHTOF(data\reticle_titan.p3d);
|
||||
opticsZoomMin = 0.08333;
|
||||
@ -29,12 +29,12 @@ class CfgVehicles {
|
||||
};
|
||||
};
|
||||
};
|
||||
class O_static_AT_F: AT_01_base_F {
|
||||
class O_static_AT_F: AT_01_base_F {
|
||||
class Turrets : Turrets {
|
||||
class MainTurret : MainTurret {
|
||||
weapons[] = { QGVAR(Titan_Static) };
|
||||
magazines[] = {"1Rnd_GAT_missiles","1Rnd_GAT_missiles","1Rnd_GAT_missiles","1Rnd_GAT_missiles"};
|
||||
|
||||
|
||||
turretInfoType = "ACE_RscOptics_javelin";
|
||||
gunnerOpticsModel = PATHTOF(data\reticle_titan.p3d);
|
||||
opticsZoomMin = 0.08333;
|
||||
@ -47,12 +47,12 @@ class CfgVehicles {
|
||||
};
|
||||
};
|
||||
};
|
||||
class I_static_AT_F: AT_01_base_F {
|
||||
class I_static_AT_F: AT_01_base_F {
|
||||
class Turrets : Turrets {
|
||||
class MainTurret : MainTurret {
|
||||
weapons[] = { QGVAR(Titan_Static) };
|
||||
magazines[] = {"1Rnd_GAT_missiles","1Rnd_GAT_missiles","1Rnd_GAT_missiles","1Rnd_GAT_missiles"};
|
||||
|
||||
|
||||
turretInfoType = "ACE_RscOptics_javelin";
|
||||
gunnerOpticsModel = PATHTOF(data\reticle_titan.p3d);
|
||||
opticsZoomMin = 0.08333;
|
||||
|
@ -38,7 +38,7 @@ class CfgWeapons {
|
||||
lockingTargetSound[] = {"",0,1};
|
||||
lockedTargetSound[] = {"",0,1};
|
||||
};
|
||||
class launch_I_Titan_short_F: launch_Titan_short_base {
|
||||
class launch_I_Titan_short_F: launch_Titan_short_base {
|
||||
GVAR(enabled) = 1;
|
||||
weaponInfoType = "ACE_RscOptics_javelin";
|
||||
modelOptics = PATHTOF(data\reticle_titan.p3d);
|
||||
@ -48,7 +48,7 @@ class CfgWeapons {
|
||||
lockingTargetSound[] = {"",0,1};
|
||||
lockedTargetSound[] = {"",0,1};
|
||||
};
|
||||
class launch_O_Titan_short_F: launch_Titan_short_base {
|
||||
class launch_O_Titan_short_F: launch_Titan_short_base {
|
||||
GVAR(enabled) = 1;
|
||||
weaponInfoType = "ACE_RscOptics_javelin";
|
||||
modelOptics = PATHTOF(data\reticle_titan.p3d);
|
||||
@ -59,7 +59,7 @@ class CfgWeapons {
|
||||
lockingTargetSound[] = {"",0,1};
|
||||
lockedTargetSound[] = {"",0,1};
|
||||
};
|
||||
class launch_Titan_short_F: launch_Titan_short_base {
|
||||
class launch_Titan_short_F: launch_Titan_short_base {
|
||||
GVAR(enabled) = 1;
|
||||
weaponInfoType = "ACE_RscOptics_javelin";
|
||||
modelOptics = PATHTOF(data\reticle_titan.p3d);
|
||||
|
@ -22,4 +22,6 @@ GVAR(MeasuredWindSpeed) = 0;
|
||||
GVAR(ImpellerState) = 0;
|
||||
|
||||
GVAR(Kestrel4500) = false;
|
||||
GVAR(Overlay) = false;
|
||||
GVAR(Overlay) = false;
|
||||
|
||||
[] call FUNC(restoreUserData);
|
@ -9,10 +9,11 @@ PREP(createKestrelDialog);
|
||||
PREP(displayKestrel);
|
||||
PREP(generateOutputData);
|
||||
PREP(measureWindSpeed);
|
||||
PREP(onCloseDialog);
|
||||
PREP(onCloseDisplay);
|
||||
PREP(restoreUserData);
|
||||
PREP(storeUserData);
|
||||
PREP(updateDisplay);
|
||||
PREP(updateImpellerState);
|
||||
|
||||
PREP(onCloseDialog);
|
||||
PREP(onCloseDisplay);
|
||||
|
||||
ADDON = true;
|
||||
|
@ -51,3 +51,4 @@ switch (_this) do {
|
||||
};
|
||||
|
||||
[] call FUNC(updateDisplay);
|
||||
[] call FUNC(storeUserData);
|
||||
|
@ -14,13 +14,14 @@
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_playerDir", "_windSpeed", "_crosswind", "_headwind", "_humidity", "_temperature", "_humidity", "_barometricPressure", "_altitude"];
|
||||
private ["_playerAltitude", "_playerDir", "_windSpeed", "_crosswind", "_headwind", "_humidity", "_temperature", "_humidity", "_barometricPressure", "_altitude"];
|
||||
_playerAltitude = (getPosASL ACE_player) select 2;
|
||||
|
||||
if (isNil QGVAR(MIN) || isNil QGVAR(MAX)) then {
|
||||
_temperature = GET_TEMPERATURE_AT_HEIGHT((getPosASL ACE_player) select 2);
|
||||
_temperature = _playerAltitude call EFUNC(weather,calculateTemperatureAtHeight);
|
||||
_humidity = EGVAR(weather,currentHumidity);
|
||||
_barometricPressure = ((getPosASL ACE_player) select 2) call EFUNC(weather,calculateBarometricPressure);
|
||||
_altitude = EGVAR(weather,Altitude) + ((getPosASL ACE_player) select 2);
|
||||
_barometricPressure = _playerAltitude call EFUNC(weather,calculateBarometricPressure);
|
||||
_altitude = EGVAR(weather,Altitude) + _playerAltitude;
|
||||
GVAR(MIN) = [0, 0, 0, 0, _temperature, _humidity, _barometricPressure, _altitude];
|
||||
GVAR(MAX) = [0, 0, 0, 0, _temperature, _humidity, _barometricPressure, _altitude];
|
||||
};
|
||||
@ -42,9 +43,9 @@ if (GVAR(MinAvgMaxMode) == 1) then {
|
||||
|
||||
// Wind SPD
|
||||
_windSpeed = call FUNC(measureWindSpeed);
|
||||
GVAR(MIN) set [1, (GVAR(MIN) select 1) min abs(_windSpeed)];
|
||||
GVAR(MAX) set [1, abs(_windSpeed) max (GVAR(MAX) select 1)];
|
||||
GVAR(TOTAL) set [1, (GVAR(TOTAL) select 1) + abs(_windSpeed)];
|
||||
GVAR(MIN) set [1, (GVAR(MIN) select 1) min _windSpeed];
|
||||
GVAR(MAX) set [1, _windSpeed max (GVAR(MAX) select 1)];
|
||||
GVAR(TOTAL) set [1, (GVAR(TOTAL) select 1) + _windSpeed];
|
||||
|
||||
// CROSSWIND
|
||||
_crosswind = 0;
|
||||
@ -70,7 +71,7 @@ if (GVAR(MinAvgMaxMode) == 1) then {
|
||||
};
|
||||
|
||||
// TEMP
|
||||
_temperature = GET_TEMPERATURE_AT_HEIGHT((getPosASL ACE_player) select 2);
|
||||
_temperature = _playerAltitude call EFUNC(weather,calculateTemperatureAtHeight);
|
||||
GVAR(MIN) set [4, (GVAR(MIN) select 4) min _temperature];
|
||||
GVAR(MAX) set [4, _temperature max (GVAR(MAX) select 4)];
|
||||
GVAR(TOTAL) set [4, (GVAR(TOTAL) select 4) + _temperature];
|
||||
@ -82,13 +83,13 @@ GVAR(MAX) set [5, _humidity max (GVAR(MAX) select 5)];
|
||||
GVAR(TOTAL) set [5, (GVAR(TOTAL) select 5) + _humidity];
|
||||
|
||||
// BARO
|
||||
_barometricPressure = ((getPosASL ACE_player) select 2) call EFUNC(weather,calculateBarometricPressure);
|
||||
_barometricPressure = _playerAltitude call EFUNC(weather,calculateBarometricPressure);
|
||||
GVAR(MIN) set [6, (GVAR(MIN) select 6) min _barometricPressure];
|
||||
GVAR(MAX) set [6, _barometricPressure max (GVAR(MAX) select 6)];
|
||||
GVAR(TOTAL) set [6, (GVAR(TOTAL) select 6) + _barometricPressure];
|
||||
|
||||
// ALTITUDE
|
||||
_altitude = EGVAR(weather,Altitude) + ((getPosASL ACE_player) select 2);
|
||||
_altitude = EGVAR(weather,Altitude) + _playerAltitude;
|
||||
GVAR(MIN) set [7, (GVAR(MIN) select 7) min _altitude];
|
||||
GVAR(MAX) set [7, _altitude max (GVAR(MAX) select 7)];
|
||||
GVAR(TOTAL) set [7, (GVAR(TOTAL) select 7) + _altitude];
|
@ -34,10 +34,11 @@ _textInfoLine2 = "";
|
||||
_windSpeed = call FUNC(measureWindSpeed);
|
||||
_windDir = (ACE_wind select 0) atan2 (ACE_wind select 1);
|
||||
|
||||
_temperature = GET_TEMPERATURE_AT_HEIGHT((getPosASL ACE_player) select 2);
|
||||
_humidity = EGVAR(weather,currentHumidity);
|
||||
|
||||
_playerDir = getDir ACE_player;
|
||||
_playerAltitude = (getPosASL ACE_player) select 2;
|
||||
|
||||
_temperature = _playerAltitude call EFUNC(weather,calculateTemperatureAtHeight);
|
||||
_humidity = EGVAR(weather,currentHumidity);
|
||||
|
||||
GVAR(Direction) = 4 * floor(_playerDir / 90);
|
||||
if (_playerDir % 90 > 10) then { GVAR(Direction) = GVAR(Direction) + 1};
|
||||
@ -174,7 +175,7 @@ switch (GVAR(Menu)) do {
|
||||
};
|
||||
case 6: { // BARO
|
||||
if (!GVAR(MinAvgMax)) then {
|
||||
_textCenterBig = Str(round((((getPosASL ACE_player) select 2) call EFUNC(weather,calculateBarometricPressure)) * 10) / 10);
|
||||
_textCenterBig = Str(round((_playerAltitude call EFUNC(weather,calculateBarometricPressure)) * 10) / 10);
|
||||
} else {
|
||||
_textCenterLine1Left = "Min";
|
||||
_textCenterLine2Left = "Avg";
|
||||
@ -186,7 +187,7 @@ switch (GVAR(Menu)) do {
|
||||
};
|
||||
case 7: { // ALTITUDE
|
||||
if (!GVAR(MinAvgMax)) then {
|
||||
_textCenterBig = Str(round(EGVAR(weather,Altitude) + ((getPosASL ACE_player) select 2)));
|
||||
_textCenterBig = Str(round(EGVAR(weather,Altitude) + _playerAltitude));
|
||||
} else {
|
||||
_textCenterLine1Left = "Min";
|
||||
_textCenterLine2Left = "Avg";
|
||||
@ -198,7 +199,7 @@ switch (GVAR(Menu)) do {
|
||||
};
|
||||
case 8: { // User Screen 1
|
||||
_textCenterLine1Left = Str(round(_playerDir));
|
||||
_textCenterLine2Left = Str(round(EGVAR(weather,Altitude) + ((getPosASL ACE_player) select 2)));
|
||||
_textCenterLine2Left = Str(round(EGVAR(weather,Altitude) + _playerAltitude));
|
||||
_textCenterLine3Left = Str(round(abs(_windSpeed) * 10) / 10);
|
||||
_textCenterLine1Right = GVAR(Directions) select GVAR(Direction);
|
||||
_textCenterLine2Right = "m";
|
||||
@ -207,7 +208,7 @@ switch (GVAR(Menu)) do {
|
||||
case 9: { // User Screen 2
|
||||
_textCenterLine1Left = Str(round(_temperature * 10) / 10);
|
||||
_textCenterLine2Left = Str(round(_humidity * 100 * 10) / 10);
|
||||
_textCenterLine3Left = Str(round((1013.25 * exp(-(EGVAR(weather,Altitude) + ((getPosASL ACE_player) select 2)) / 7990) - 10 * overcast) * 10) / 10);
|
||||
_textCenterLine3Left = Str(round((_playerAltitude call EFUNC(weather,calculateBarometricPressure)) * 10) / 10);
|
||||
_textCenterLine1Right = "C";
|
||||
_textCenterLine2Right = "%";
|
||||
_textCenterLine3Right = "hPA";
|
||||
|
18
addons/kestrel4500/functions/fnc_restoreUserData.sqf
Normal file
18
addons/kestrel4500/functions/fnc_restoreUserData.sqf
Normal file
@ -0,0 +1,18 @@
|
||||
/*
|
||||
* Author: Ruthberg
|
||||
* Reads user data from profileNamespace
|
||||
*
|
||||
* Arguments:
|
||||
* Nothing
|
||||
*
|
||||
* Return Value:
|
||||
* Nothing
|
||||
*
|
||||
* Example:
|
||||
* call ace_kestrel4500_fnc_restore_user_data
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
GVAR(Menu) = 0 max (profileNamespace getVariable ["ACE_Kestrel4500_menu", 0]) min ((count GVAR(Menus)) - 1);
|
18
addons/kestrel4500/functions/fnc_storeUserData.sqf
Normal file
18
addons/kestrel4500/functions/fnc_storeUserData.sqf
Normal file
@ -0,0 +1,18 @@
|
||||
/*
|
||||
* Author: Ruthberg
|
||||
* Saves user data into profileNamespace
|
||||
*
|
||||
* Arguments:
|
||||
* Nothing
|
||||
*
|
||||
* Return Value:
|
||||
* Nothing
|
||||
*
|
||||
* Example:
|
||||
* call ace_kestrel4500_fnc_store_user_data
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
profileNamespace setVariable ["ACE_Kestrel4500_menu", GVAR(menu)];
|
@ -10,5 +10,3 @@
|
||||
#endif
|
||||
|
||||
#include "\z\ace\addons\main\script_macros.hpp"
|
||||
|
||||
#define GET_TEMPERATURE_AT_HEIGHT(h) (EGVAR(weather,currentTemperature) - 0.0065 * (h))
|
||||
|
@ -3,74 +3,66 @@ class CfgVehicles {
|
||||
class ACE_ModuleMap: Module_F {
|
||||
author = "$STR_ACE_Common_ACETeam";
|
||||
category = "ACE";
|
||||
displayName = "Map";
|
||||
displayName = "$STR_ACE_Map_Module_DisplayName";
|
||||
function = QFUNC(moduleMap);
|
||||
scope = 2;
|
||||
isGlobal = 1;
|
||||
icon = PATHTOF(UI\Icon_Module_Map_ca.paa);
|
||||
class Arguments {
|
||||
class MapIllumination {
|
||||
displayName = "Map illumination?";
|
||||
description = "Calculate dynamic map illumination based on light conditions?";
|
||||
displayName = "$STR_ACE_Map_MapIllumination_DisplayName";
|
||||
description = "$STR_ACE_Map_MapIllumination_Description";
|
||||
typeName = "BOOL";
|
||||
class values {
|
||||
class Yes { name = "Yes"; value = 1; default = 1; };
|
||||
class No { name = "No"; value = 0; };
|
||||
};
|
||||
defaultValue = 1;
|
||||
};
|
||||
class MapShake {
|
||||
displayName = "Map shake?";
|
||||
description = "Make map shake when walking?";
|
||||
displayName = "$STR_ACE_Map_MapShake_DisplayName";
|
||||
description = "$STR_ACE_Map_MapShake_Description";
|
||||
typeName = "BOOL";
|
||||
class values {
|
||||
class Yes { name = "Yes"; value = 1; default = 1;};
|
||||
class No { name = "No"; value = 0; };
|
||||
};
|
||||
defaultValue = 1;
|
||||
};
|
||||
class MapLimitZoom {
|
||||
displayName = "Limit map zoom?";
|
||||
description = "Limit the amount of zoom available for the map?";
|
||||
displayName = "$STR_ACE_Map_MapLimitZoom_DisplayName";
|
||||
description = "$STR_ACE_Map_MapLimitZoom_Description";
|
||||
typeName = "BOOL";
|
||||
class values {
|
||||
class Yes { name = "Yes"; value = 1; };
|
||||
class No { name = "No"; value = 0; default = 1;};
|
||||
};
|
||||
defaultValue = 0;
|
||||
};
|
||||
class MapShowCursorCoordinates {
|
||||
displayName = "Show cursor coordinates?";
|
||||
description = "Show the grid coordinates on the mouse pointer?";
|
||||
displayName = "$STR_ACE_Map_MapShowCursorCoordinates_DisplayName";
|
||||
description = "$STR_ACE_Map_MapShowCursorCoordinates_Description";
|
||||
typeName = "BOOL";
|
||||
class values {
|
||||
class Yes { name = "Yes"; value = 1; };
|
||||
class No { name = "No"; value = 0; default = 1;};
|
||||
};
|
||||
defaultValue = 0;
|
||||
};
|
||||
};
|
||||
class ModuleDescription {
|
||||
description = "$STR_ACE_Map_Module_Description";
|
||||
};
|
||||
};
|
||||
|
||||
class ACE_ModuleBlueForceTracking: Module_F {
|
||||
author = "$STR_ACE_Common_ACETeam";
|
||||
category = "ACE";
|
||||
displayName = "Blue Force Tracking";
|
||||
displayName = "$STR_ACE_Map_BFT_Module_DisplayName";
|
||||
function = QFUNC(blueForceTrackingModule);
|
||||
scope = 2;
|
||||
isGlobal = 1;
|
||||
icon = PATHTOF(UI\Icon_Module_BFTracking_ca.paa);
|
||||
class Arguments {
|
||||
class Interval {
|
||||
displayName = "Interval";
|
||||
description = "How often the markers should be refreshed (in seconds)";
|
||||
displayName = "$STR_ACE_Map_BFT_Interval_DisplayName";
|
||||
description = "$STR_ACE_Map_BFT_Interval_Description";
|
||||
typeName = "NUMBER";
|
||||
defaultValue = 1;
|
||||
};
|
||||
class HideAiGroups {
|
||||
displayName = "Hide AI groups?";
|
||||
description = "Hide markers for 'AI only' groups?";
|
||||
displayName = "$STR_ACE_Map_BFT_HideAiGroups_DisplayName";
|
||||
description = "$STR_ACE_Map_BFT_HideAiGroups_Description";
|
||||
typeName = "BOOL";
|
||||
class values {
|
||||
class Yes { name = "Yes"; value = 1; };
|
||||
class No { name = "No"; value = 0; default = 1; };
|
||||
};
|
||||
defaultValue = 0;
|
||||
};
|
||||
};
|
||||
class ModuleDescription {
|
||||
description = "$STR_ACE_Map_BFT_Module_Description";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
@ -1,6 +1,69 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="Map">
|
||||
|
||||
</Package>
|
||||
<Package name="Map">
|
||||
<Key ID="STR_ACE_Map_Module_DisplayName">
|
||||
<English>Map</English>
|
||||
<Polish>Mapa</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Map_MapIllumination_DisplayName">
|
||||
<English>Map illumination?</English>
|
||||
<Polish>Oświetlenie mapy</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Map_MapIllumination_Description">
|
||||
<English>Calculate dynamic map illumination based on light conditions?</English>
|
||||
<Polish>Oblicza dynamiczne oświetlenie mapy bazujące na warunkach oświetleniowych</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Map_MapShake_DisplayName">
|
||||
<English>Map shake?</English>
|
||||
<Polish>Drżenie mapy</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Map_MapShake_Description">
|
||||
<English>Make map shake when walking?</English>
|
||||
<Polish>Ekran mapy drży podczas ruchu</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Map_MapLimitZoom_DisplayName">
|
||||
<English>Limit map zoom?</English>
|
||||
<Polish>Ograniczony zoom</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Map_MapLimitZoom_Description">
|
||||
<English>Limit the amount of zoom available for the map?</English>
|
||||
<Polish>Ogranicza maksymalny stopień przybliżenia mapy</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Map_MapShowCursorCoordinates_DisplayName">
|
||||
<English>Show cursor coordinates?</English>
|
||||
<Polish>Koordynaty pod kursorem</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Map_MapShowCursorCoordinates_Description">
|
||||
<English>Show the grid coordinates on the mouse pointer?</English>
|
||||
<Polish>Pokazuje pod kursorem koordynaty wskazanego kwadratu mapy</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Map_Module_Description">
|
||||
<English></English>
|
||||
<Polish>Moduł ten pozwala dostosować opcje widoku ekranu mapy.</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Map_BFT_Module_DisplayName">
|
||||
<English>Blue Force Tracking</English>
|
||||
<Polish>Blue Force Tracking</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Map_BFT_Interval_DisplayName">
|
||||
<English>Interval</English>
|
||||
<Polish>Interwał</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Map_BFT_Interval_Description">
|
||||
<English>How often the markers should be refreshed (in seconds)</English>
|
||||
<Polish>Jak często markery powinny być odświeżane (w sekundach)</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Map_BFT_HideAiGroups_DisplayName">
|
||||
<English>Hide AI groups?</English>
|
||||
<Polish>Ukryj grupy AI</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Map_BFT_HideAiGroups_Description">
|
||||
<English>Hide markers for 'AI only' groups?</English>
|
||||
<Polish>Ukrywa markery dla grup złożonych tylko z AI</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Map_BFT_Module_Description">
|
||||
<English></English>
|
||||
<Polish>Pozwala śledzić na mapie pozycje sojuszniczych jednostek za pomocą markerów BFT.</Polish>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
@ -1,6 +1,6 @@
|
||||
class CfgFactionClasses {
|
||||
class NO_CATEGORY;
|
||||
class ADDON: NO_CATEGORY {
|
||||
displayName = "ACE Medical";
|
||||
displayName = "$STR_ACE_Medical_Category_DisplayName";
|
||||
};
|
||||
};
|
||||
|
@ -9,10 +9,9 @@ class CfgVehicles {
|
||||
};
|
||||
};
|
||||
class ACE_Module;
|
||||
// TODO localization for all the modules
|
||||
class ACE_moduleMedicalSettings: ACE_Module {
|
||||
scope = 2;
|
||||
displayName = "Medical Settings [ACE]";
|
||||
displayName = "$STR_ACE_MedicalSettings_Module_DisplayName";
|
||||
icon = QUOTE(PATHTOF(UI\Icon_Module_Medical_ca.paa));
|
||||
category = "ACE_medical";
|
||||
function = QUOTE(DFUNC(moduleMedicalSettings));
|
||||
@ -22,78 +21,78 @@ class CfgVehicles {
|
||||
author = "$STR_ACE_Common_ACETeam";
|
||||
class Arguments {
|
||||
class level {
|
||||
displayName = "Medical Level";
|
||||
description = "What is the medical simulation level?";
|
||||
displayName = "$STR_ACE_MedicalSettings_level_DisplayName";
|
||||
description = "$STR_ACE_MedicalSettings_level_Description";
|
||||
typeName = "NUMBER";
|
||||
class values {
|
||||
class normal {
|
||||
name = "Basic";
|
||||
name = "$STR_ACE_MedicalSettings_basic";
|
||||
value = 1;
|
||||
default = 1;
|
||||
};
|
||||
class full {
|
||||
name = "Advanced";
|
||||
name = "$STR_ACE_MedicalSettings_advanced";
|
||||
value = 2;
|
||||
};
|
||||
};
|
||||
};
|
||||
class medicSetting {
|
||||
displayName = "Medics setting";
|
||||
description = "What is the level of detail prefered for medics?";
|
||||
displayName = "$STR_ACE_MedicalSettings_medicSetting_DisplayName";
|
||||
description = "$STR_ACE_MedicalSettings_medicSetting_Description";
|
||||
typeName = "NUMBER";
|
||||
class values {
|
||||
class disable {
|
||||
name = "Disable medics";
|
||||
name = "$STR_ACE_MedicalSettings_medicSetting_disable";
|
||||
value = 0;
|
||||
};
|
||||
class normal {
|
||||
name = "Normal";
|
||||
name = "$STR_ACE_MedicalSettings_basic";
|
||||
value = 1;
|
||||
default = 1;
|
||||
};
|
||||
class full {
|
||||
name = "Advanced";
|
||||
name = "$STR_ACE_MedicalSettings_advanced";
|
||||
value = 2;
|
||||
};
|
||||
};
|
||||
};
|
||||
class allowLitterCreation {
|
||||
displayName = "Enable Litter";
|
||||
description = "Enable litter being created upon treatment";
|
||||
displayName = "$STR_ACE_MedicalSettings_allowLitterCreation_DisplayName";
|
||||
description = "$STR_ACE_MedicalSettings_allowLitterCreation_Description";
|
||||
typeName = "BOOL";
|
||||
defaultValue = 1;
|
||||
};
|
||||
class litterCleanUpDelay {
|
||||
displayName = "Life time of litter objects";
|
||||
description = "How long should litter objects stay? In seconds. -1 is forever.";
|
||||
displayName = "$STR_ACE_MedicalSettings_litterCleanUpDelay_DisplayName";
|
||||
description = "$STR_ACE_MedicalSettings_litterCleanUpDelay_Description";
|
||||
typeName = "NUMBER";
|
||||
defaultValue = 1800;
|
||||
};
|
||||
class enableScreams {
|
||||
displayName = "Enable Screams";
|
||||
description = "Enable screaming by injuried units";
|
||||
displayName = "$STR_ACE_MedicalSettings_enableScreams_DisplayName";
|
||||
description = "$STR_ACE_MedicalSettings_enableScreams_Description";
|
||||
typeName = "BOOL";
|
||||
defaultValue = 1;
|
||||
};
|
||||
class playerDamageThreshold {
|
||||
displayName = "Player Damage";
|
||||
description = "What is the damage a player can take before being killed?";
|
||||
displayName = "$STR_ACE_MedicalSettings_playerDamageThreshold_DisplayName";
|
||||
description = "$STR_ACE_MedicalSettings_playerDamageThreshold_Description";
|
||||
typeName = "NUMBER";
|
||||
defaultValue = 1;
|
||||
};
|
||||
class AIDamageThreshold {
|
||||
displayName = "AI Damage";
|
||||
description = "What is the damage an AI can take before being killed?";
|
||||
displayName = "$STR_ACE_MedicalSettings_AIDamageThreshold_DisplayName";
|
||||
description = "$STR_ACE_MedicalSettings_AIDamageThreshold_Description";
|
||||
typeName = "NUMBER";
|
||||
defaultValue = 1;
|
||||
};
|
||||
class enableUnconsciousnessAI {
|
||||
displayName = "AI Unconsciousness";
|
||||
description = "Allow AI to go unconscious";
|
||||
displayName = "$STR_ACE_MedicalSettings_enableUnconsciousnessAI_DisplayName";
|
||||
description = "$STR_ACE_MedicalSettings_enableUnconsciousnessAI_Description";
|
||||
typeName = "NUMBER";
|
||||
class values {
|
||||
class disable {
|
||||
name = "Disabled";
|
||||
name = "$STR_ACE_Medical_disabled";
|
||||
value = 0;
|
||||
};
|
||||
class normal {
|
||||
@ -102,45 +101,45 @@ class CfgVehicles {
|
||||
default = 1;
|
||||
};
|
||||
class full {
|
||||
name = "Enabled";
|
||||
name = "$STR_ACE_Medical_enabled";
|
||||
value = 2;
|
||||
};
|
||||
};
|
||||
};
|
||||
class preventInstaDeath {
|
||||
displayName = "Prevent instant death";
|
||||
description = "Have a unit move to unconscious instead of death";
|
||||
displayName = "$STR_ACE_MedicalSettings_preventInstaDeath_DisplayName";
|
||||
description = "$STR_ACE_MedicalSettings_preventInstaDeath_Description";
|
||||
typeName = "BOOL";
|
||||
defaultValue = 0;
|
||||
};
|
||||
class bleedingCoefficient {
|
||||
displayName = "Bleeding coefficient";
|
||||
description = "Coefficient to modify the bleeding speed";
|
||||
displayName = "$STR_ACE_MedicalSettings_bleedingCoefficient_DisplayName";
|
||||
description = "$STR_ACE_MedicalSettings_bleedingCoefficient_Description";
|
||||
typeName = "NUMBER";
|
||||
defaultValue = 1;
|
||||
};
|
||||
class painCoefficient {
|
||||
displayName = "Pain coefficient";
|
||||
description = "Coefficient to modify the pain intensity";
|
||||
displayName = "$STR_ACE_MedicalSettings_painCoefficient_DisplayName";
|
||||
description = "$STR_ACE_MedicalSettings_painCoefficient_Description";
|
||||
typeName = "NUMBER";
|
||||
defaultValue = 1;
|
||||
};
|
||||
class keepLocalSettingsSynced {
|
||||
displayName = "Sync status";
|
||||
description = "Keep unit status synced. Recommended on.";
|
||||
displayName = "$STR_ACE_MedicalSettings_keepLocalSettingsSynced_DisplayName";
|
||||
description = "$STR_ACE_MedicalSettings_keepLocalSettingsSynced_Description";
|
||||
typeName = "BOOL";
|
||||
defaultValue = 1;
|
||||
};
|
||||
};
|
||||
class ModuleDescription {
|
||||
description = "Provides a medical system for both players and AI.";
|
||||
description = "$STR_ACE_MedicalSettings_Module_Description";
|
||||
sync[] = {};
|
||||
};
|
||||
};
|
||||
|
||||
class ACE_moduleAdvancedMedicalSettings: ACE_Module {
|
||||
scope = 2;
|
||||
displayName = "Advanced Medical Settings [ACE]";
|
||||
displayName = "$STR_ACE_AdvancedMedicalSettings_Module_DisplayName";
|
||||
icon = QUOTE(PATHTOF(UI\Icon_Module_Medical_ca.paa));
|
||||
category = "ACE_medical";
|
||||
function = QUOTE(FUNC(moduleAdvancedMedicalSettings));
|
||||
@ -151,80 +150,81 @@ class CfgVehicles {
|
||||
author = "$STR_ACE_Common_ACETeam";
|
||||
class Arguments {
|
||||
class enableFor {
|
||||
displayName = "Enabled for";
|
||||
description = "Select what units the advanced medical system will be enabled for";
|
||||
displayName = "$STR_ACE_AdvancedMedicalSettings_enableFor_DisplayName";
|
||||
description = "$STR_ACE_AdvancedMedicalSettings_enableFor_Description";
|
||||
typeName = "NUMBER";
|
||||
class values {
|
||||
class playableUnits {
|
||||
name = "Players only.";
|
||||
name = "$STR_ACE_Medical_playeronly";
|
||||
value = 0;
|
||||
default = 1;
|
||||
};
|
||||
class playableUnitsAndAI {
|
||||
name = "Players and AI";
|
||||
name = "$STR_ACE_Medical_playersandai";
|
||||
value = 1;
|
||||
};
|
||||
};
|
||||
};
|
||||
class enableAdvancedWounds {
|
||||
displayName = "Enable Advanced wounds";
|
||||
description = "Allow reopening of bandaged wounds?";
|
||||
displayName = "$STR_ACE_AdvancedMedicalSettings_enableAdvancedWounds_DisplayName";
|
||||
description = "$STR_ACE_AdvancedMedicalSettings_enableAdvancedWounds_Description";
|
||||
typeName = "BOOL";
|
||||
defaultValue = 0;
|
||||
};
|
||||
class enableVehicleCrashes {
|
||||
displayName = "Vehicle Crashes";
|
||||
description = "Do units take damage from a vehicle crash?";
|
||||
displayName = "$STR_ACE_AdvancedMedicalSettings_enableVehicleCrashes_DisplayName";
|
||||
description = "$STR_ACE_AdvancedMedicalSettings_enableVehicleCrashes_Description";
|
||||
typeName = "BOOL";
|
||||
defaultValue = 1;
|
||||
};
|
||||
class medicSetting_PAK {
|
||||
displayName = "Allow PAK";
|
||||
description = "Who can use the PAK for full heal?";
|
||||
displayName = "$STR_ACE_AdvancedMedicalSettings_medicSetting_PAK_DisplayName";
|
||||
description = "$STR_ACE_AdvancedMedicalSettings_medicSetting_PAK_Description";
|
||||
typeName = "NUMBER";
|
||||
class values {
|
||||
class anyone { name = "Anyone"; value = 0; };
|
||||
class Medic { name = "Medics only"; value = 1; default = 1; };
|
||||
class Special { name = "Doctors only"; value = 2; };
|
||||
class anyone { name = "$STR_ACE_AdvancedMedicalSettings_anyone"; value = 0; };
|
||||
class Medic { name = "$STR_ACE_AdvancedMedicalSettings_Medic"; value = 1; default = 1; };
|
||||
class Special { name = "$STR_ACE_AdvancedMedicalSettings_Special"; value = 2; };
|
||||
};
|
||||
};
|
||||
class consumeItem_PAK {
|
||||
displayName = "Remove PAK on use";
|
||||
description = "Should PAK be removed on usage?";
|
||||
displayName = "$STR_ACE_AdvancedMedicalSettings_consumeItem_PAK_DisplayName";
|
||||
description = "$STR_ACE_AdvancedMedicalSettings_consumeItem_PAK_Description";
|
||||
|
||||
typeName = "NUMBER";
|
||||
class values {
|
||||
class keep { name = "No"; value = 0; };
|
||||
class remove { name = "Yes"; value = 1; default = 1; };
|
||||
class keep { name = "$STR_ACE_Medical_No"; value = 0; };
|
||||
class remove { name = "$STR_ACE_Medical_Yes"; value = 1; default = 1; };
|
||||
};
|
||||
};
|
||||
class useLocation_PAK {
|
||||
displayName = "Locations PAK";
|
||||
description = "Where can the personal aid kit be used?";
|
||||
displayName = "$STR_ACE_AdvancedMedicalSettings_useLocation_PAK_DisplayName";
|
||||
description = "$STR_ACE_AdvancedMedicalSettings_useLocation_PAK_Description";
|
||||
typeName = "NUMBER";
|
||||
class values {
|
||||
class anywhere { name = "Anywhere"; value = 0; };
|
||||
class vehicle { name = "Medical Vehicles"; value = 1; };
|
||||
class facility { name = "Medical facility"; value = 2; };
|
||||
class vehicleAndFacility { name = "Vehicles & facility"; value = 3; default = 1; };
|
||||
class disabled { name = "Disabled"; value = 4;};
|
||||
class anywhere { name = "$STR_ACE_AdvancedMedicalSettings_anywhere"; value = 0; };
|
||||
class vehicle { name = "$STR_ACE_AdvancedMedicalSettings_vehicle"; value = 1; };
|
||||
class facility { name = "$STR_ACE_AdvancedMedicalSettings_facility"; value = 2; };
|
||||
class vehicleAndFacility { name = "$STR_ACE_AdvancedMedicalSettings_vehicleAndFacility"; value = 3; default = 1; };
|
||||
class disabled { name = "$STR_ACE_AdvancedMedicalSettings_disabled"; value = 4;};
|
||||
};
|
||||
};
|
||||
class medicSetting_SurgicalKit: medicSetting_PAK {
|
||||
displayName = "Allow Surgical kit (Adv)";
|
||||
description = "Who can use the surgical kit?";
|
||||
displayName = "$STR_ACE_AdvancedMedicalSettings_medicSetting_SurgicalKit_DisplayName";
|
||||
description = "$STR_ACE_AdvancedMedicalSettings_medicSetting_SurgicalKit_Description";
|
||||
};
|
||||
class consumeItem_SurgicalKit: consumeItem_PAK {
|
||||
displayName = "Remove Surgical kit (Adv)";
|
||||
description = "Should Surgical kit be removed on usage?";
|
||||
displayName = "$STR_ACE_AdvancedMedicalSettings_consumeItem_SurgicalKit_DisplayName";
|
||||
description = "$STR_ACE_AdvancedMedicalSettings_consumeItem_SurgicalKit_Description";
|
||||
};
|
||||
class useLocation_SurgicalKit: useLocation_PAK {
|
||||
displayName = "Locations Surgical kit (Adv)";
|
||||
description = "Where can the Surgical kit be used?";
|
||||
displayName = "$STR_ACE_AdvancedMedicalSettings_useLocation_SurgicalKit_DisplayName";
|
||||
description = "$STR_ACE_AdvancedMedicalSettings_useLocation_SurgicalKit_Description";
|
||||
};
|
||||
|
||||
};
|
||||
class ModuleDescription {
|
||||
description = "Configure the treatment settings from ACE Medical";
|
||||
description = "$STR_ACE_AdvancedMedicalSettings_Module_Description";
|
||||
sync[] = {};
|
||||
};
|
||||
};
|
||||
@ -232,7 +232,7 @@ class CfgVehicles {
|
||||
|
||||
class ACE_moduleReviveSettings: ACE_Module {
|
||||
scope = 2;
|
||||
displayName = "Revive Settings [ACE]";
|
||||
displayName = "$STR_ACE_ReviveSettings_Module_DisplayName";
|
||||
icon = QUOTE(PATHTOF(UI\Icon_Module_Medical_ca.paa));
|
||||
category = "ACE_medical";
|
||||
function = QUOTE(DFUNC(moduleReviveSettings));
|
||||
@ -242,37 +242,37 @@ class CfgVehicles {
|
||||
author = "$STR_ACE_Common_ACETeam";
|
||||
class Arguments {
|
||||
class enableRevive {
|
||||
displayName = "Enable Revive";
|
||||
description = "Enable a basic revive system";
|
||||
displayName = "$STR_ACE_ReviveSettings_enableRevive_DisplayName";
|
||||
description = "$STR_ACE_ReviveSettings_enableRevive_Description";
|
||||
typeName = "NUMBER";
|
||||
defaultValue = 0;
|
||||
class values {
|
||||
class disable { name = "Disabled"; value = 0; default = 1;};
|
||||
class playerOnly { name = "Player only"; value = 1; };
|
||||
class playerAndAI { name = "Player & AI"; value = 2; };
|
||||
class disable { name = "$STR_ACE_Medical_disabled"; value = 0; default = 1;};
|
||||
class playerOnly { name = "$STR_ACE_Medical_playeronly"; value = 1; };
|
||||
class playerAndAI { name = "$STR_ACE_Medical_playersandai"; value = 2; };
|
||||
};
|
||||
};
|
||||
class maxReviveTime {
|
||||
displayName = "Max Revive time";
|
||||
description = "Max amount of seconds a unit can spend in revive state";
|
||||
displayName = "$STR_ACE_ReviveSettings_maxReviveTime_DisplayName";
|
||||
description = "$STR_ACE_ReviveSettings_maxReviveTime_Description";
|
||||
typeName = "NUMBER";
|
||||
defaultValue = 120;
|
||||
};
|
||||
class amountOfReviveLives {
|
||||
displayName = "Max Revive lives";
|
||||
description = "Max amount of lives a unit. 0 or -1 is disabled.";
|
||||
displayName = "$STR_ACE_ReviveSettings_amountOfReviveLives_DisplayName";
|
||||
description = "$STR_ACE_ReviveSettings_amountOfReviveLives_Description";
|
||||
typeName = "NUMBER";
|
||||
defaultValue = -1;
|
||||
};
|
||||
};
|
||||
class ModuleDescription {
|
||||
description = "Provides a medical system for both players and AI.";
|
||||
description = "$STR_ACE_ReviveSettings_Module_Description";
|
||||
sync[] = {};
|
||||
};
|
||||
};
|
||||
class ACE_moduleAssignMedicRoles: Module_F {
|
||||
scope = 2;
|
||||
displayName = "Set Medic Class [ACE]";
|
||||
displayName = "$STR_ACE_AssignMedicRoles_Module_DisplayName";
|
||||
icon = QUOTE(PATHTOF(UI\Icon_Module_Medical_ca.paa));
|
||||
category = "ACE_medical";
|
||||
function = QUOTE(FUNC(moduleAssignMedicRoles));
|
||||
@ -283,41 +283,41 @@ class CfgVehicles {
|
||||
author = "$STR_ACE_Common_ACETeam";
|
||||
class Arguments {
|
||||
class EnableList {
|
||||
displayName = "List";
|
||||
description = "List of unit names that will be classified as medic, separated by commas.";
|
||||
displayName = "$STR_ACE_AssignMedicRoles_EnableList_DisplayName";
|
||||
description = "$STR_ACE_AssignMedicRoles_EnableList_Description";
|
||||
defaultValue = "";
|
||||
typeName = "STRING";
|
||||
};
|
||||
class role {
|
||||
displayName = "Is Medic";
|
||||
description = "Medics allow for more advanced treatment in case of Advanced Medic roles enabled";
|
||||
displayName = "$STR_ACE_AssignMedicRoles_role_DisplayName";
|
||||
description = "$STR_ACE_AssignMedicRoles_role_Description";
|
||||
typeName = "NUMBER";
|
||||
class values {
|
||||
class none {
|
||||
name = "None";
|
||||
name = "$STR_ACE_AssignMedicRoles_role_none";
|
||||
value = 0;
|
||||
};
|
||||
class medic {
|
||||
name = "Regular medic";
|
||||
name = "$STR_ACE_AssignMedicRoles_role_medic";
|
||||
value = 1;
|
||||
default = 1;
|
||||
};
|
||||
class doctor {
|
||||
name = "Doctor (Only Advanced Medics)";
|
||||
name = "$STR_ACE_AssignMedicRoles_role_doctor";
|
||||
value = 2;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
class ModuleDescription {
|
||||
description = "Assigns the ACE medic class to a unit";
|
||||
description = "$STR_ACE_AssignMedicRoles_Module_Description";
|
||||
sync[] = {};
|
||||
};
|
||||
};
|
||||
|
||||
class ACE_moduleAssignMedicVehicle: Module_F {
|
||||
scope = 2;
|
||||
displayName = "Set Medical Vehicle [ACE]";
|
||||
displayName = "$STR_ACE_AssignMedicVehicle_Module_DisplayName";
|
||||
icon = QUOTE(PATHTOF(UI\Icon_Module_Medical_ca.paa));
|
||||
category = "ACE_medical";
|
||||
function = QUOTE(FUNC(moduleAssignMedicalVehicle));
|
||||
@ -328,22 +328,23 @@ class CfgVehicles {
|
||||
author = "$STR_ACE_Common_ACETeam";
|
||||
class Arguments {
|
||||
class EnableList {
|
||||
displayName = "List";
|
||||
description = "List of vehicles that will be classified as medical vehicle, separated by commas.";
|
||||
displayName = "$STR_ACE_AssignMedicVehicle_EnableList_DisplayName";
|
||||
description = "$STR_ACE_AssignMedicVehicle_EnableList_Description";
|
||||
defaultValue = "";
|
||||
typeName = "STRING";
|
||||
};
|
||||
class enabled {
|
||||
displayName = "Is Medical Vehicle";
|
||||
description = "Whatever or not the objects in the list will be a medical vehicle.";
|
||||
displayName = "$STR_ACE_AssignMedicVehicle_enabled_DisplayName";
|
||||
description = "$STR_ACE_AssignMedicVehicle_enabled_Description";
|
||||
|
||||
typeName = "NUMBER";
|
||||
class values {
|
||||
class none {
|
||||
name = "No";
|
||||
name = "$STR_ACE_Medical_No";
|
||||
value = 0;
|
||||
};
|
||||
class medic {
|
||||
name = "Yes";
|
||||
name = "$STR_ACE_Medical_Yes";
|
||||
value = 1;
|
||||
default = 1;
|
||||
};
|
||||
@ -351,13 +352,13 @@ class CfgVehicles {
|
||||
};
|
||||
};
|
||||
class ModuleDescription {
|
||||
description = "Assigns the ACE medic class to a unit";
|
||||
description = "$STR_ACE_AssignMedicVehicle_Module_Description";
|
||||
sync[] = {};
|
||||
};
|
||||
};
|
||||
class ACE_moduleAssignMedicalFacility: Module_F {
|
||||
scope = 2;
|
||||
displayName = "Set Medical Facility [ACE]";
|
||||
displayName = "$STR_ACE_AssignMedicalFacility_Module_DisplayName";
|
||||
icon = QUOTE(PATHTOF(UI\Icon_Module_Medical_ca.paa));
|
||||
category = "ACE_medical";
|
||||
function = QUOTE(FUNC(moduleAssignMedicalFacility));
|
||||
@ -368,13 +369,13 @@ class CfgVehicles {
|
||||
author = "$STR_ACE_Common_ACETeam";
|
||||
class Arguments {
|
||||
class enabled {
|
||||
displayName = "Is Medical Facility";
|
||||
description = "Registers an object as a medical facility for CMS";
|
||||
displayName = "$STR_ACE_AssignMedicalFacility_enabled_DisplayName";
|
||||
description = "$STR_ACE_AssignMedicalFacility_enabled_Description";
|
||||
typeName = "BOOL";
|
||||
};
|
||||
};
|
||||
class ModuleDescription {
|
||||
description = "Defines an object as a medical facility for CMS. This allows for more advanced treatments. Can be used on buildings and vehicles. ";
|
||||
description = "$STR_ACE_AssignMedicalFacility_Module_Description";
|
||||
sync[] = {};
|
||||
};
|
||||
};
|
||||
@ -897,7 +898,7 @@ class CfgVehicles {
|
||||
class ACE_medicalSupplyCrate: NATO_Box_Base {
|
||||
scope = 2;
|
||||
accuracy = 1000;
|
||||
displayName = "[ACE] Medical Supply Crate (Basic)";
|
||||
displayName = "$STR_ACE_medicalSupplyCrate";
|
||||
model = PATHTOF(data\ace_medcrate.p3d);
|
||||
author = "$STR_ACE_Common_ACETeam";
|
||||
class TransportItems {
|
||||
@ -932,7 +933,7 @@ class CfgVehicles {
|
||||
};
|
||||
};
|
||||
class ACE_medicalSupplyCrate_advanced: ACE_medicalSupplyCrate {
|
||||
displayName = "[ACE] Medical Supply Crate (Advanced)";
|
||||
displayName = "$STR_ACE_medicalSupplyCrate_advanced";
|
||||
class TransportItems {
|
||||
class ACE_fieldDressing {
|
||||
name = "ACE_fieldDressing";
|
||||
|
@ -6,7 +6,7 @@ class CfgPatches {
|
||||
weapons[] = {"ACE_fieldDressing", "ACE_packingBandage", "ACE_elasticBandage", "ACE_tourniquet", "ACE_morphine", "ACE_atropine", "ACE_epinephrine", "ACE_plasmaIV", "ACE_plasmaIV_500", "ACE_plasmaIV_250", "ACE_bloodIV", "ACE_bloodIV_500", "ACE_bloodIV_250", "ACE_salineIV", "ACE_salineIV_500", "ACE_salineIV_250", "ACE_quikclot", "ACE_personalAidKit", "ACE_surgicalKit", "ACE_bodyBag"};
|
||||
requiredVersion = REQUIRED_VERSION;
|
||||
requiredAddons[] = {"ace_interaction","ace_modules", "ace_apl"};
|
||||
author[] = {"Glowbal", "KoffienFlummi"};
|
||||
author[] = {"Glowbal", "KoffeinFlummi"};
|
||||
authorUrl = "";
|
||||
VERSION_CONFIG;
|
||||
};
|
||||
|
@ -24,7 +24,7 @@ if (!alive _unit) then {
|
||||
_heartRate = 0;
|
||||
};
|
||||
_heartRateOutput = "STR_ACE_Medical_Check_Pulse_Output_5";
|
||||
_logOutPut = "No heart rate";
|
||||
_logOutPut = localize "STR_ACE_Medical_Check_Pulse_None";
|
||||
|
||||
if (_heartRate > 1.0) then {
|
||||
if ([_caller] call FUNC(isMedic)) then {
|
||||
|
@ -38,12 +38,18 @@ _litter = getArray (_config >> "litter");
|
||||
|
||||
_createLitter = {
|
||||
private["_position", "_litterClass", "_direction"];
|
||||
_position = getPos (_this select 0);
|
||||
|
||||
// @TODO: handle carriers over water
|
||||
// For now, don't spawn litter if we are over water to avoid floating litter
|
||||
if(surfaceIsWater (getPos (_this select 0))) exitWith { false };
|
||||
|
||||
_position = getPosATL (_this select 0);
|
||||
_position = [_position select 0, _position select 1, 0];
|
||||
_litterClass = _this select 1;
|
||||
if (random(1) >= 0.5) then {
|
||||
_position = [(_position select 0) + random 2, (_position select 1) + random 2, _position select 2];
|
||||
_position = [(_position select 0) + random 1, (_position select 1) + random 1, _position select 2];
|
||||
} else {
|
||||
_position = [(_position select 0) - random 2, (_position select 1) - random 2, _position select 2];
|
||||
_position = [(_position select 0) - random 1, (_position select 1) - random 1, _position select 2];
|
||||
};
|
||||
_direction = (random 360);
|
||||
|
||||
|
@ -14,7 +14,10 @@ if (isNil QGVAR(allCreatedLitter)) then {
|
||||
|
||||
_litterObject = _litterClass createVehicleLocal _position;
|
||||
_litterObject setDir _direction;
|
||||
|
||||
_litterObject setPosATL _position;
|
||||
// Move the litter next frame to get rid of HORRIBLE spacing, fixes #1112
|
||||
[{ (_this select 0) setPosATL (_this select 1); }, [_litterObject, _position]] call EFUNC(common,execNextFrame);
|
||||
|
||||
_maxLitterCount = getArray (configFile >> "ACE_Settings" >> QGVAR(litterSimulationDetail) >> "_values") select GVAR(litterSimulationDetail);
|
||||
if((count GVAR(allCreatedLitter)) > _maxLitterCount ) then {
|
||||
// gank the first litter object, and spawn ours.
|
||||
|
@ -1144,7 +1144,7 @@
|
||||
<Key ID="STR_ACE_Medical_Saline_IV">
|
||||
<English>Saline IV (1000ml)</English>
|
||||
<Russian>Физраствор для в/в вливания (1000 мл)</Russian>
|
||||
<Spanish>Solución Salina IV (1000ml)</Spanish>
|
||||
<Spanish>Salino IV (1000ml)</Spanish>
|
||||
<French>Solution saline 0.9% IV (1000ml)</French>
|
||||
<Polish>Sól fizjologiczna IV (1000ml)</Polish>
|
||||
<German>Kochsalzlösung (1000ml)</German>
|
||||
@ -2701,5 +2701,369 @@
|
||||
<Russian>Снятие жгута ...</Russian>
|
||||
<Italian>Togliendo il laccio emostatico ...</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Category_DisplayName">
|
||||
<English>ACE Medical</English>
|
||||
<Polish>ACE Opcje medyczne</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MedicalSettings_Module_DisplayName">
|
||||
<English>Medical Settings [ACE]</English>
|
||||
<Polish>Ustawienia medyczne [ACE]</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MedicalSettings_level_DisplayName">
|
||||
<English>Medical Level</English>
|
||||
<Polish>Poziom medyczny</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MedicalSettings_level_Description">
|
||||
<English>What is the medical simulation level?</English>
|
||||
<Polish>Jaki jest poziom symulacji medycznej?</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MedicalSettings_basic">
|
||||
<English>Basic</English>
|
||||
<Polish>Podstawowy</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MedicalSettings_advanced">
|
||||
<English>Advanced</English>
|
||||
<Polish>Zaawansowany</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MedicalSettings_medicSetting_DisplayName">
|
||||
<English>Medics setting</English>
|
||||
<Polish>Poziom medyków</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MedicalSettings_medicSetting_Description">
|
||||
<English>What is the level of detail prefered for medics?</English>
|
||||
<Polish>Jaki jest poziom detali medycznych wyświetlanych dla medyków?</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MedicalSettings_medicSetting_disable">
|
||||
<English>Disable medics</English>
|
||||
<Polish>Wyłącz medyków</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MedicalSettings_allowLitterCreation_DisplayName">
|
||||
<English>Enable Litter</English>
|
||||
<Polish>Aktywuj odpadki</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MedicalSettings_allowLitterCreation_Description">
|
||||
<English>Enable litter being created upon treatment</English>
|
||||
<Polish>Twórz odpadki medyczne podczas leczenia</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MedicalSettings_litterCleanUpDelay_DisplayName">
|
||||
<English>Life time of litter objects</English>
|
||||
<Polish>Długość życia odpadków</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MedicalSettings_litterCleanUpDelay_Description">
|
||||
<English>How long should litter objects stay? In seconds. -1 is forever.</English>
|
||||
<Polish>Ile czasu musi upłynąć, aby odpadki zaczęły znikać? W sekundach. -1 dla nieskończoności.</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MedicalSettings_enableScreams_DisplayName">
|
||||
<English>Enable Screams</English>
|
||||
<Polish>Aktywuj wrzaski</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MedicalSettings_enableScreams_Description">
|
||||
<English>Enable screaming by injuried units</English>
|
||||
<Polish>Aktywuj wrzeszczenie z bólu przez ranne jednostki</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MedicalSettings_playerDamageThreshold_DisplayName">
|
||||
<English>Player Damage</English>
|
||||
<Polish>Próg obrażeń graczy</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MedicalSettings_playerDamageThreshold_Description">
|
||||
<English>What is the damage a player can take before being killed?</English>
|
||||
<Polish>Jaki jest próg obrażeń, jakie gracz może otrzymać zanim zostanie zabity?</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MedicalSettings_AIDamageThreshold_DisplayName">
|
||||
<English>AI Damage</English>
|
||||
<Polish>Próg obrażeń AI</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MedicalSettings_AIDamageThreshold_Description">
|
||||
<English>What is the damage an AI can take before being killed?</English>
|
||||
<Polish>Jaki jest próg obrażeń, jakie AI może otrzymać zanim zostanie zabite?</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MedicalSettings_enableUnconsciousnessAI_DisplayName">
|
||||
<English>AI Unconsciousness</English>
|
||||
<Polish>Nieprzytomność AI</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MedicalSettings_enableUnconsciousnessAI_Description">
|
||||
<English>Allow AI to go unconscious</English>
|
||||
<Polish>Czy AI może być nieprzytomne od odniesionych obrażeń?</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_disabled">
|
||||
<English>Disabled</English>
|
||||
<Polish>Wyłączone</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_enabled">
|
||||
<English>Enabled</English>
|
||||
<Polish>Włączone</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MedicalSettings_preventInstaDeath_DisplayName">
|
||||
<English>Prevent instant death</English>
|
||||
<Polish>Wył. natychmiast. śmierć</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MedicalSettings_preventInstaDeath_Description">
|
||||
<English>Have a unit move to unconscious instead of death</English>
|
||||
<Polish>Spraw, aby jednostka została przeniesiona do stanu nieprzytomności zamiast ginąć na miejscu od śmiertelnych obrażeń</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MedicalSettings_bleedingCoefficient_DisplayName">
|
||||
<English>Bleeding coefficient</English>
|
||||
<Polish>Mnożnik krwawienia</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MedicalSettings_bleedingCoefficient_Description">
|
||||
<English>Coefficient to modify the bleeding speed</English>
|
||||
<Polish>Mnożnik modyfikujący prędkość wykrwawiania się</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MedicalSettings_painCoefficient_DisplayName">
|
||||
<English>Pain coefficient</English>
|
||||
<Polish>Mnożnik bólu</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MedicalSettings_painCoefficient_Description">
|
||||
<English>Coefficient to modify the pain intensity</English>
|
||||
<Polish>Mnożnik modyfikujący intensywność bólu</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MedicalSettings_keepLocalSettingsSynced_DisplayName">
|
||||
<English>Sync status</English>
|
||||
<Polish>Synchronizuj status</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MedicalSettings_keepLocalSettingsSynced_Description">
|
||||
<English>Keep unit status synced. Recommended on.</English>
|
||||
<Polish>Utrzymuj synchronizację statusu jednostek. Zalecane zostawienie tej opcji włączonej.</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MedicalSettings_Module_Description">
|
||||
<English>Provides a medical system for both players and AI.</English>
|
||||
<Polish>Moduł ten dostarcza system medyczny dla graczy oraz AI.</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AdvancedMedicalSettings_Module_DisplayName">
|
||||
<English>Advanced Medical Settings [ACE]</English>
|
||||
<Polish>Zaawansowane ustawienia medyczne [ACE]</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AdvancedMedicalSettings_enableFor_DisplayName">
|
||||
<English>Enabled for</English>
|
||||
<Polish>Aktywne dla</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AdvancedMedicalSettings_enableFor_Description">
|
||||
<English>Select what units the advanced medical system will be enabled for</English>
|
||||
<Polish>Wybierz dla kogo zaawansowany system medyczny będzie aktywny</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_playeronly">
|
||||
<English>Players only</English>
|
||||
<Polish>Tylko dla graczy</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_playersandai">
|
||||
<English>Players and AI</English>
|
||||
<Polish>Gracze oraz AI</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AdvancedMedicalSettings_enableAdvancedWounds_DisplayName">
|
||||
<English>Enable Advanced wounds</English>
|
||||
<Polish>Akt. zaawansowane rany</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AdvancedMedicalSettings_enableAdvancedWounds_Description">
|
||||
<English>Allow reopening of bandaged wounds?</English>
|
||||
<Polish>Pozwól na otwieranie się zabandażowanych ran?</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AdvancedMedicalSettings_enableVehicleCrashes_DisplayName">
|
||||
<English>Vehicle Crashes</English>
|
||||
<Polish>Obrażenia od kolizji</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AdvancedMedicalSettings_enableVehicleCrashes_Description">
|
||||
<English>Do units take damage from a vehicle crash?</English>
|
||||
<Polish>Czy jednostki otrzymują obrażenia w wyniku kolizji pojazdów?</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AdvancedMedicalSettings_medicSetting_PAK_DisplayName">
|
||||
<English>Allow PAK</English>
|
||||
<Polish>Ust. apteczek osobistych</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AdvancedMedicalSettings_medicSetting_PAK_Description">
|
||||
<English>Who can use the PAK for full heal?</English>
|
||||
<Polish>Kto może skorzystać z apteczki osobistej w celu pełnego uleczenia?</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AdvancedMedicalSettings_anyone">
|
||||
<English>Anyone</English>
|
||||
<Polish>Wszyscy</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AdvancedMedicalSettings_Medic">
|
||||
<English>Medics only</English>
|
||||
<Polish>Tylko medycy</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AdvancedMedicalSettings_Special">
|
||||
<English>Doctors only</English>
|
||||
<Polish>Tylko doktorzy</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AdvancedMedicalSettings_consumeItem_PAK_DisplayName">
|
||||
<English>Remove PAK on use</English>
|
||||
<Polish>Usuń apteczkę po użyciu</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AdvancedMedicalSettings_consumeItem_PAK_Description">
|
||||
<English>Should PAK be removed on usage?</English>
|
||||
<Polish>Czy apteczka osobista powinna zniknąć z ekwipunku po jej użyciu?</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AdvancedMedicalSettings_useLocation_PAK_DisplayName">
|
||||
<English>Locations PAK</English>
|
||||
<Polish>Ogr. apteczek osobistych</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AdvancedMedicalSettings_useLocation_PAK_Description">
|
||||
<English>Where can the personal aid kit be used?</English>
|
||||
<Polish>Gdzie można korzystać z apteczek osobistych?</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AdvancedMedicalSettings_anywhere">
|
||||
<English>Anywhere</English>
|
||||
<Polish>Wszędzie</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AdvancedMedicalSettings_vehicle">
|
||||
<English>Medical vehicles</English>
|
||||
<Polish>Pojazdy medyczne</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AdvancedMedicalSettings_facility">
|
||||
<English>Medical facility</English>
|
||||
<Polish>Budynki medyczne</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AdvancedMedicalSettings_vehicleAndFacility">
|
||||
<English>Vehicles & facility</English>
|
||||
<Polish>Pojazdy i budynki medyczne</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AdvancedMedicalSettings_disabled">
|
||||
<English>Disabled</English>
|
||||
<Polish>Wyłączone</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AdvancedMedicalSettings_medicSetting_SurgicalKit_DisplayName">
|
||||
<English>Allow Surgical kit (Adv)</English>
|
||||
<Polish>Ust. zestawu chirurg.</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AdvancedMedicalSettings_medicSetting_SurgicalKit_Description">
|
||||
<English>Who can use the surgical kit?</English>
|
||||
<Polish>Kto może skorzystać z zestawu chirurgicznego w celu zszycia ran?</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AdvancedMedicalSettings_consumeItem_SurgicalKit_DisplayName">
|
||||
<English>Remove Surgical kit (Adv)</English>
|
||||
<Polish>Usuń zest. chir. po użyciu</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AdvancedMedicalSettings_consumeItem_SurgicalKit_Description">
|
||||
<English>Should Surgical kit be removed on usage?</English>
|
||||
<Polish>Czy zestaw chirurgiczny powinien zniknąć z ekwipunku po jego użyciu?</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AdvancedMedicalSettings_useLocation_SurgicalKit_DisplayName">
|
||||
<English>Locations Surgical kit (Adv)</English>
|
||||
<Polish>Ogr. zestawu chirurg.</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AdvancedMedicalSettings_useLocation_SurgicalKit_Description">
|
||||
<English>Where can the Surgical kit be used?</English>
|
||||
<Polish>Gdzie można korzystać z zestawu chirurgicznego?</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AdvancedMedicalSettings_Module_Description">
|
||||
<English>Configure the treatment settings from ACE Medical</English>
|
||||
<Polish>Skonfiguruj zaawansowane ustawienia leczenia systemu medycznego ACE</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_ReviveSettings_Module_DisplayName">
|
||||
<English>Revive Settings [ACE]</English>
|
||||
<Polish>Ustawienia wskrzeszania [ACE]</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_ReviveSettings_enableRevive_DisplayName">
|
||||
<English>Enable Revive</English>
|
||||
<Polish>Aktywuj wskrzeszanie</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_ReviveSettings_enableRevive_Description">
|
||||
<English>Enable a basic revive system</English>
|
||||
<Polish>Aktywuj podstawowy system wskrzeszania</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_ReviveSettings_maxReviveTime_DisplayName">
|
||||
<English>Max Revive time</English>
|
||||
<Polish>Maks. czas agonii</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_ReviveSettings_maxReviveTime_Description">
|
||||
<English>Max amount of seconds a unit can spend in revive state</English>
|
||||
<Polish>Maksymalna długość agonii w sekundach (czas na wskrzeszenie)</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_ReviveSettings_amountOfReviveLives_DisplayName">
|
||||
<English>Max Revive lives</English>
|
||||
<Polish>Maks. ilość wskrzeszeń</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_ReviveSettings_amountOfReviveLives_Description">
|
||||
<English>Max amount of lives a unit. 0 or -1 is disabled.</English>
|
||||
<Polish>Maksymalna ilość wskrzeszeń. Wpisz 0 lub -1 aby wyłączyć.</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_ReviveSettings_Module_Description">
|
||||
<English>Provides a medical system for both players and AI.</English>
|
||||
<Polish>Moduł ten aktywuje podstawowy system wskrzeszania. Jednostka po otrzymaniu śmiertelnych obrażeń przechodzi do stanu agonii, która trwa określoną długość czasu. W tym czasie aby wskrzesić i jednocześnie odratować jednostkę należy opatrzeć jej rany i wykonać RKO.</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AssignMedicRoles_Module_DisplayName">
|
||||
<English>Set Medic Class [ACE]</English>
|
||||
<Polish>Ustaw klasę medyka [ACE]</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AssignMedicRoles_EnableList_DisplayName">
|
||||
<English>List</English>
|
||||
<Polish>Lista</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AssignMedicRoles_EnableList_Description">
|
||||
<English>List of unit names that will be classified as medic, separated by commas.</English>
|
||||
<Polish>Lista nazw jednostek, które są sklasyfikowane jako medycy, oddzielone przecinkami.</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AssignMedicRoles_role_DisplayName">
|
||||
<English>Is Medic</English>
|
||||
<Polish>Klasa medyczna</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AssignMedicRoles_role_Description">
|
||||
<English></English>
|
||||
<Polish></Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AssignMedicRoles_role_none">
|
||||
<English>None</English>
|
||||
<Polish>Żadna</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AssignMedicRoles_role_medic">
|
||||
<English>Regular medic</English>
|
||||
<Polish>Zwykły medyk</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AssignMedicRoles_role_doctor">
|
||||
<English>Doctor (Only Advanced Medics)</English>
|
||||
<Polish>Doktor (tylko zaawansowani medycy)</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AssignMedicRoles_Module_Description">
|
||||
<English>Assigns the ACE medic class to a unit</English>
|
||||
<Polish>Moduł ten przypisuje klasę medyka ACE do jednostek.</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AssignMedicVehicle_Module_DisplayName">
|
||||
<English>Set Medical Vehicle [ACE]</English>
|
||||
<Polish>Ustaw pojazd medyczny [ACE]</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AssignMedicVehicle_EnableList_DisplayName">
|
||||
<English>List</English>
|
||||
<Polish>Lista</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AssignMedicVehicle_EnableList_Description">
|
||||
<English>List of vehicles that will be classified as medical vehicle, separated by commas.</English>
|
||||
<Polish>Lista nazw pojazdów, które są sklasyfikowane jako pojazdy medyczne, oddzielone przecinkami.</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AssignMedicVehicle_enabled_DisplayName">
|
||||
<English>Is Medical Vehicle</English>
|
||||
<Polish>Jest pojazdem med.</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AssignMedicVehicle_enabled_Description">
|
||||
<English>Whatever or not the objects in the list will be a medical vehicle.</English>
|
||||
<Polish>Czy pojazdy z tej listy są pojazdami medycznymi.</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AssignMedicVehicle_Module_Description">
|
||||
<English>Assigns the ACE medic class to a unit</English>
|
||||
<Polish>Moduł ten pozwala na przypisanie danym pojazdom statusu pojazdów medycznych. Wewnątrz takiego pojazdu można wykonywać zaawansowane zabiegi medyczne.</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AssignMedicalFacility_Module_DisplayName">
|
||||
<English>Set Medical Facility [ACE]</English>
|
||||
<Polish>Ustaw budynek medyczny [ACE]</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AssignMedicalFacility_enabled_DisplayName">
|
||||
<English>Is Medical Facility</English>
|
||||
<Polish>Jest budynkiem med.</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AssignMedicalFacility_enabled_Description">
|
||||
<English>Registers an object as a medical facility</English>
|
||||
<Polish>Przypisuje danemu obiektowi status budynku medycznego</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AssignMedicalFacility_Module_Description">
|
||||
<English>Defines an object as a medical facility. This allows for more advanced treatments. Can be used on buildings and vehicles.</English>
|
||||
<Polish>Moduł ten pozwala przypisać status budynku medycznego danemu obiektowi. Budynek taki pozwala na wykonywanie zaawansowanych zabiegów medycznych. Może być użyte na pojazdach i budynkach.</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_medicalSupplyCrate">
|
||||
<English>[ACE] Medical Supply Crate (Basic)</English>
|
||||
<Polish>[ACE] Skrzynka z zapasami medycznymi (podstawowa)</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_medicalSupplyCrate_advanced">
|
||||
<English>[ACE] Medical Supply Crate (Advanced)</English>
|
||||
<Polish>[ACE] Skrzynka z zapasami medycznymi (zaawansowana)</Polish>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
@ -44,7 +44,7 @@ class CfgVehicles {
|
||||
class GVAR(dagrModule): Module_F {
|
||||
author = "$STR_ACE_Common_ACETeam";
|
||||
category = "ACE";
|
||||
displayName = "MicroDAGR Map Fill";
|
||||
displayName = "$STR_ACE_Dagr_Module_DisplayName";
|
||||
function = QFUNC(moduleMapFill);
|
||||
scope = 2;
|
||||
isGlobal = 1;
|
||||
@ -52,18 +52,18 @@ class CfgVehicles {
|
||||
functionPriority = 0;
|
||||
class Arguments {
|
||||
class MapDataAvailable {
|
||||
displayName = "MicroDAGR Map Fill"; // Argument label
|
||||
description = "How much map data is filled on MicroDAGR's "; // Tooltip description
|
||||
typeName = "NUMBER"; // Value type, can be "NUMBER", "STRING" or "BOOL"
|
||||
displayName = "$STR_ACE_Dagr_MapDataAvailable_DisplayName";
|
||||
description = "$STR_ACE_Dagr_MapDataAvailable_Description";
|
||||
typeName = "NUMBER";
|
||||
class values {
|
||||
class None {name = "Full Satellite + Buildings"; value = MAP_DETAIL_SAT; default = 1;};
|
||||
class Side {name = "Topographical + Roads"; value = MAP_DETAIL_TOPOROADS;};
|
||||
class Unique {name = "None (Cannot use map view)"; value = MAP_DETAIL_NONE;};
|
||||
class None {name = "$STR_ACE_Dagr_None"; value = MAP_DETAIL_SAT; default = 1;};
|
||||
class Side {name = "$STR_ACE_Dagr_Side"; value = MAP_DETAIL_TOPOROADS;};
|
||||
class Unique {name = "$STR_ACE_Dagr_Unique"; value = MAP_DETAIL_NONE;};
|
||||
};
|
||||
};
|
||||
};
|
||||
class ModuleDescription: ModuleDescription {
|
||||
description = "Controls how much data is filled on the microDAGR items. Less data restricts the map view to show less on the minimap.<br/>Source: microDAGR.pbo";
|
||||
description = "$STR_ACE_Dagr_Module_Description";
|
||||
};
|
||||
};
|
||||
|
||||
@ -73,4 +73,4 @@ class CfgVehicles {
|
||||
MACRO_ADDITEM(ACE_microDAGR,10);
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
@ -220,7 +220,7 @@
|
||||
<Key ID="STR_ACE_microdagr_waypointsSet">
|
||||
<English>SetWP</English>
|
||||
<German>WP setzen</German>
|
||||
<Spanish>Establecer PR</Spanish>
|
||||
<Spanish>Fijar PR</Spanish>
|
||||
<Russian>Установить МТ</Russian>
|
||||
<Czech>Nastavit WP</Czech>
|
||||
<Polish>UstawPT</Polish>
|
||||
@ -301,5 +301,33 @@
|
||||
<Italian>Chiudi MicroDAGR</Italian>
|
||||
<Portuguese>Fechar MicroDAGR</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Dagr_Module_DisplayName">
|
||||
<English>MicroDAGR Map Fill</English>
|
||||
<Polish>Wypełnienie mapy MicroDAGR</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Dagr_MapDataAvailable_DisplayName">
|
||||
<English>MicroDAGR Map Fill</English>
|
||||
<Polish>Wypełnienie mapy MicroDAGR</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Dagr_MapDataAvailable_Description">
|
||||
<English>How much map data is filled on MicroDAGR's</English>
|
||||
<Polish>Jak duża część informacji mapy jest załadowana do MicroDAGR?</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Dagr_None">
|
||||
<English>Full Satellite + Buildings</English>
|
||||
<Polish>Pełna satelitarna + budynki</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Dagr_Side">
|
||||
<English>Topographical + Roads</English>
|
||||
<Polish>Topograficzna + drogi</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Dagr_Unique">
|
||||
<English>None (Cannot use map view)</English>
|
||||
<Polish>Żadna (wyłącza ekran mapy)</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Dagr_Module_Description">
|
||||
<English>Controls how much data is filled on the microDAGR items. Less data restricts the map view to show less on the minimap.<br />Source: microDAGR.pbo</English>
|
||||
<Polish>Moduł ten pozwala kontrolować jak duża ilość informacji jest załadowana do przedmiotów MicroDAGR. Mniejsza ilość danych ogranicza widok mapy pokazując mniej rzeczy na minimapie.<br />Źródło: microDAGR.pbo</Polish>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
@ -5,6 +5,6 @@ class ACE_Settings {
|
||||
isClientSettable = 1;
|
||||
displayName = "$STR_ACE_MissileGuidance";
|
||||
description = "$STR_ACE_MissileGuidance_Desc";
|
||||
values[] = {"Off", "Player Only", "Player and AI"};
|
||||
values[] = {"$STR_ACE_MissileGuidance_Off", "$STR_ACE_MissileGuidance_PlayerOnly", "$STR_ACE_MissileGuidance_PlayerAndAi"};
|
||||
};
|
||||
};
|
@ -18,7 +18,7 @@
|
||||
<Polish>Zaawansowane namierzanie rakiet, lub ZNR, dostarcza wiele poprawek do systemu namierzania rakiet oraz dodaje nowe tryby strzału. Jest to wymagana opcja dla broni rakietowych.</Polish>
|
||||
<Italian>Guida dei missili avanzata, o AMG, offre diversi miglioramenti alla teleguida di missili. E' anche un sistema necessario per i tipi di armi missile.</Italian>
|
||||
<Russian>Продвинутое наведение ракет, или ПНР, обеспечивает множество усовершествований для наведения и стрельбы ракет. Также, это система, необходимая для всех ракетных типов оружия.</Russian>
|
||||
<Spanish>Guiado Avanzado de Misiles, o AMG en sus siglas en inglés, ofrece múltiples mejoras en el fijado y disparo de misiles. Es también un sistema requerido para armas de tipo misil.</Spanish>
|
||||
<Spanish>El guiado avanzado de misiles, o AMG en sus siglas en inglés, ofrece múltiples mejoras en el fijado y disparo de misiles. Es también un sistema requerido para armas de tipo misil.</Spanish>
|
||||
<German>Das Erweiterte Raketenlenksystem, auch ERls genannt, bietet viele Verbesserungen zum Aufschalten und Feuern mittels gelenkten Raketen. </German>
|
||||
<French>Le guidage avancé de missile, ou AMG en anglais, apporte de multiple améliorations au verouillage et au tir de missiles. C'est aussi un framework requis pour tout arme de type missile.</French>
|
||||
<Hungarian>A fejlett rakétairányító (vagy AMG) többféle módosítást tartalmaz a rakéták célkövetéséhez és tüzeléséhez. Ez egy szükséges keresztrendszer a rakéta-alapú fegyverekhez.</Hungarian>
|
||||
@ -97,5 +97,17 @@
|
||||
<Hungarian>Hellfire II AGM-114K lézer-irányított rakéta</Hungarian>
|
||||
<Russian>Управляемая ракета лазерного наведения Hellfire II AGM-114K</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MissileGuidance_Off">
|
||||
<English>Off</English>
|
||||
<Polish>Wyłącz</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MissileGuidance_PlayerOnly">
|
||||
<English>Player Only</English>
|
||||
<Polish>Tylko gracz</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MissileGuidance_PlayerAndAi">
|
||||
<English>Player and AI</English>
|
||||
<Polish>Gracz oraz AI</Polish>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
@ -1,6 +1,6 @@
|
||||
class CfgFactionClasses {
|
||||
class NO_CATEGORY;
|
||||
class ACE_missionModules: NO_CATEGORY {
|
||||
displayName = "ACE Mission Modules";
|
||||
displayName = "$STR_ACE_MissionModules_Category_DisplayName";
|
||||
};
|
||||
};
|
@ -8,7 +8,7 @@ class CfgVehicles {
|
||||
// TODO make a curator variant for this
|
||||
class ACE_moduleAmbianceSound: Module_F {
|
||||
scope = 2;
|
||||
displayName = "Ambiance Sounds [ACE]";
|
||||
displayName = "$STR_ACE_MissionModules_AmbianceSounds_DisplayName";
|
||||
icon = QUOTE(PATHTOF(UI\Icon_Module_Ambient_Sounds_ca.paa));
|
||||
category = "ACE_missionModules";
|
||||
function = QUOTE(FUNC(moduleAmbianceSound));
|
||||
@ -18,51 +18,51 @@ class CfgVehicles {
|
||||
author = "$STR_ACE_Common_ACETeam";
|
||||
class Arguments {
|
||||
class soundFiles {
|
||||
displayName = "Sounds";
|
||||
description = "Class names of the ambiance sounds to be played. Seperated by ','";
|
||||
displayName = "$STR_ACE_MissionModules_AmbianceSounds_soundFiles_DisplayName";
|
||||
description = "$STR_ACE_MissionModules_AmbianceSounds_soundFiles_Description";
|
||||
typeName = "STRING";
|
||||
defaultValue = "";
|
||||
};
|
||||
class minimalDistance {
|
||||
displayName = "Minimal Distance";
|
||||
description = "Used for calculating a random position and sets the minimal distance between the players and the played sound file(s)";
|
||||
displayName = "$STR_ACE_MissionModules_AmbianceSounds_minimalDistance_DisplayName";
|
||||
description = "$STR_ACE_MissionModules_AmbianceSounds_minimalDistance_Description";
|
||||
typeName = "NUMBER";
|
||||
defaultValue = 400;
|
||||
};
|
||||
class maximalDistance {
|
||||
displayName = "Maximum Distance";
|
||||
description = "Used for calculating a random position and sets the maximum distance between the players and the played sound file(s)";
|
||||
displayName = "$STR_ACE_MissionModules_AmbianceSounds_maximalDistance_DisplayName";
|
||||
description = "$STR_ACE_MissionModules_AmbianceSounds_maximalDistance_Description";
|
||||
typeName = "NUMBER";
|
||||
defaultValue = 900;
|
||||
};
|
||||
class minimalDelay {
|
||||
displayName = "Minimal Delay";
|
||||
description = "Minimal delay between sounds played";
|
||||
displayName = "$STR_ACE_MissionModules_AmbianceSounds_minimalDelay_DisplayName";
|
||||
description = "$STR_ACE_MissionModules_AmbianceSounds_minimalDelay_Description";
|
||||
typeName = "NUMBER";
|
||||
defaultValue = 10;
|
||||
};
|
||||
class maximalDelay {
|
||||
displayName = "Maximum Delay";
|
||||
description = "Maximum delay between sounds played";
|
||||
displayName = "$STR_ACE_MissionModules_AmbianceSounds_maximalDelay_DisplayName";
|
||||
description = "$STR_ACE_MissionModules_AmbianceSounds_maximalDelay_Description";
|
||||
typeName = "NUMBER";
|
||||
defaultValue = 170;
|
||||
};
|
||||
class followPlayers {
|
||||
displayName = "Follow Players";
|
||||
description = "Follow players. If set to false, loop will play sounds only nearby logic position.";
|
||||
displayName = "$STR_ACE_MissionModules_AmbianceSounds_followPlayers_DisplayName";
|
||||
description = "$STR_ACE_MissionModules_AmbianceSounds_followPlayers_Description";
|
||||
typeName = "BOOL";
|
||||
defaultValue = 0;
|
||||
};
|
||||
class soundVolume {
|
||||
displayName = "Volume";
|
||||
description = "The volume of the sounds played";
|
||||
displayName = "$STR_ACE_MissionModules_AmbianceSounds_soundVolume_DisplayName";
|
||||
description = "$STR_ACE_MissionModules_AmbianceSounds_soundVolume_Description";
|
||||
typeName = "NUMBER";
|
||||
defaultValue = 1;
|
||||
};
|
||||
};
|
||||
class ModuleDescription {
|
||||
description = "Ambiance sounds loop (synced across MP)";
|
||||
description = "$STR_ACE_MissionModules_AmbianceSounds_Description";
|
||||
sync[] = {};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user