mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
manual merge
This commit is contained in:
commit
a83267b2ff
@ -11,7 +11,7 @@ stages:
|
|||||||
- marked for cleanup
|
- marked for cleanup
|
||||||
comment:
|
comment:
|
||||||
- 'Hello @{author}! There has been no activity on this ticket for over a period of {days} days. I am automatically replying to let you know we will close this ticket within 1 week due to inactivity and consider this resolved.'
|
- 'Hello @{author}! There has been no activity on this ticket for over a period of {days} days. I am automatically replying to let you know we will close this ticket within 1 week due to inactivity and consider this resolved.'
|
||||||
- 'If you believe this in error, please reply with the requested information.'
|
- 'If you believe this is in error, please reply with the requested information.'
|
||||||
- 'Thank you. :robot:'
|
- 'Thank you. :robot:'
|
||||||
action:
|
action:
|
||||||
close: false
|
close: false
|
||||||
@ -35,7 +35,7 @@ stages:
|
|||||||
remove_label:
|
remove_label:
|
||||||
- marked for cleanup
|
- marked for cleanup
|
||||||
remind_about_old_ticket:
|
remind_about_old_ticket:
|
||||||
days: 130
|
days: 160
|
||||||
labels:
|
labels:
|
||||||
- bug
|
- bug
|
||||||
- critical bug
|
- critical bug
|
||||||
|
22
.github_changelog_generator
Normal file
22
.github_changelog_generator
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
# No issues and PRs without labels
|
||||||
|
issues=false
|
||||||
|
pr-wo-labels=false
|
||||||
|
|
||||||
|
# Issues are disabled, don't fetch them
|
||||||
|
max-issues=0
|
||||||
|
|
||||||
|
# Label filters
|
||||||
|
exclude-labels=by design,can't reproduce,duplicate,question,invalid,wontfix,translation,ignore changelog
|
||||||
|
bug-labels=conflict,bug,critical bug
|
||||||
|
enhancement-labels=enhancement,feature request,Focus Feature
|
||||||
|
|
||||||
|
# Tag is created before generating changelog for release candidates
|
||||||
|
unreleased=false
|
||||||
|
|
||||||
|
# No section labels, we only want a list of merged PRs (label separation only works for Issues)
|
||||||
|
simple-list=true
|
||||||
|
|
||||||
|
# Misc
|
||||||
|
author=false
|
||||||
|
compare-link=false
|
||||||
|
header-label=## Change Log Summary
|
1
.gitignore
vendored
1
.gitignore
vendored
@ -7,3 +7,4 @@ texHeaders.bin
|
|||||||
*.swo
|
*.swo
|
||||||
*.biprivatekey
|
*.biprivatekey
|
||||||
Thumbs.db
|
Thumbs.db
|
||||||
|
CHANGELOG.md
|
||||||
|
@ -29,6 +29,7 @@ Walter Pearce <jaynus@gmail.com>
|
|||||||
# CONTRIBUTORS
|
# CONTRIBUTORS
|
||||||
[BIG]Bull
|
[BIG]Bull
|
||||||
11RDP-LoupVert <loupvert@11rdp.fr>
|
11RDP-LoupVert <loupvert@11rdp.fr>
|
||||||
|
654wak654 <ozanegitmen@gmail.com>
|
||||||
ACCtomeek <tomeek99@gmail.com>
|
ACCtomeek <tomeek99@gmail.com>
|
||||||
adam3adam <br.ada@seznam.cz>
|
adam3adam <br.ada@seznam.cz>
|
||||||
Adanteh
|
Adanteh
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<a href="https://github.com/acemod/ACE3/releases/latest">
|
<a href="https://github.com/acemod/ACE3/releases/latest">
|
||||||
<img src="https://img.shields.io/badge/Version-3.8.0-blue.svg?style=flat-square" alt="ACE3 Version">
|
<img src="https://img.shields.io/badge/Version-3.8.2-blue.svg?style=flat-square" alt="ACE3 Version">
|
||||||
</a>
|
</a>
|
||||||
<a href="https://github.com/acemod/ACE3/issues">
|
<a href="https://github.com/acemod/ACE3/issues">
|
||||||
<img src="https://img.shields.io/github/issues-raw/acemod/ACE3.svg?style=flat-square&label=Issues" alt="ACE3 Issues">
|
<img src="https://img.shields.io/github/issues-raw/acemod/ACE3.svg?style=flat-square&label=Issues" alt="ACE3 Issues">
|
||||||
|
Binary file not shown.
@ -69,7 +69,7 @@ class ACE_Settings {
|
|||||||
displayName = CSTRING(simulationInterval_DisplayName);
|
displayName = CSTRING(simulationInterval_DisplayName);
|
||||||
description = CSTRING(simulationInterval_Description);
|
description = CSTRING(simulationInterval_Description);
|
||||||
typeName = "SCALAR";
|
typeName = "SCALAR";
|
||||||
value = 0.0;
|
value = 0.05;
|
||||||
};
|
};
|
||||||
class GVAR(simulationRadius) {
|
class GVAR(simulationRadius) {
|
||||||
category = CSTRING(DisplayName);
|
category = CSTRING(DisplayName);
|
||||||
|
@ -71,7 +71,7 @@ class CfgVehicles {
|
|||||||
displayName = CSTRING(simulationInterval_DisplayName);
|
displayName = CSTRING(simulationInterval_DisplayName);
|
||||||
description = CSTRING(simulationInterval_Description);
|
description = CSTRING(simulationInterval_Description);
|
||||||
typeName = "NUMBER";
|
typeName = "NUMBER";
|
||||||
defaultValue = 0.0;
|
defaultValue = 0.05;
|
||||||
};
|
};
|
||||||
class simulationRadius {
|
class simulationRadius {
|
||||||
displayName = CSTRING(simulationRadius_DisplayName);
|
displayName = CSTRING(simulationRadius_DisplayName);
|
||||||
|
@ -2,6 +2,8 @@
|
|||||||
|
|
||||||
ADDON = false;
|
ADDON = false;
|
||||||
|
|
||||||
|
PREP_RECOMPILE_START;
|
||||||
#include "XEH_PREP.hpp"
|
#include "XEH_PREP.hpp"
|
||||||
|
PREP_RECOMPILE_END;
|
||||||
|
|
||||||
ADDON = true;
|
ADDON = true;
|
||||||
|
@ -42,12 +42,6 @@ if (!GVAR(simulateForEveryone) && !(local _unit)) then {
|
|||||||
//if (!GVAR(vehicleGunnerEnabled) && !(_unit isKindOf "Man")) then { _abort = true; }; // We currently do not have firedEHs on vehicles
|
//if (!GVAR(vehicleGunnerEnabled) && !(_unit isKindOf "Man")) then { _abort = true; }; // We currently do not have firedEHs on vehicles
|
||||||
if (GVAR(disabledInFullAutoMode) && getNumber(configFile >> "CfgWeapons" >> _weapon >> _mode >> "autoFire") == 1) then { _abort = true; };
|
if (GVAR(disabledInFullAutoMode) && getNumber(configFile >> "CfgWeapons" >> _weapon >> _mode >> "autoFire") == 1) then { _abort = true; };
|
||||||
|
|
||||||
if (_abort || !(GVAR(extensionAvailable))) exitWith {
|
|
||||||
if (missionNamespace getVariable [QEGVAR(windDeflection,enabled), false]) then {
|
|
||||||
EGVAR(windDeflection,trackedBullets) pushBack [_projectile, getNumber(configFile >> "CfgAmmo" >> _ammo >> "airFriction")];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
// Get Weapon and Ammo Configurations
|
// Get Weapon and Ammo Configurations
|
||||||
_AmmoCacheEntry = uiNamespace getVariable format[QGVAR(%1), _ammo];
|
_AmmoCacheEntry = uiNamespace getVariable format[QGVAR(%1), _ammo];
|
||||||
if (isNil "_AmmoCacheEntry") then {
|
if (isNil "_AmmoCacheEntry") then {
|
||||||
@ -86,6 +80,12 @@ if (GVAR(ammoTemperatureEnabled) || GVAR(barrelLengthInfluenceEnabled)) then {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
if (_abort || !(GVAR(extensionAvailable))) exitWith {
|
||||||
|
if (missionNamespace getVariable [QEGVAR(windDeflection,enabled), false]) then {
|
||||||
|
EGVAR(windDeflection,trackedBullets) pushBack [_projectile, getNumber(configFile >> "CfgAmmo" >> _ammo >> "airFriction")];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
_bulletTraceVisible = false;
|
_bulletTraceVisible = false;
|
||||||
if (GVAR(bulletTraceEnabled) && cameraView == "GUNNER") then {
|
if (GVAR(bulletTraceEnabled) && cameraView == "GUNNER") then {
|
||||||
if (currentWeapon ACE_player == binocular ACE_player) then {
|
if (currentWeapon ACE_player == binocular ACE_player) then {
|
||||||
|
@ -30,10 +30,14 @@ if (!hasInterface) exitWith {};
|
|||||||
GVAR(ppeBlackout) ppEffectCommit 0.4;
|
GVAR(ppeBlackout) ppEffectCommit 0.4;
|
||||||
|
|
||||||
// - GVAR updating and initialization -----------------------------------------
|
// - GVAR updating and initialization -----------------------------------------
|
||||||
if !(isNull ACE_player) then {
|
["unit", FUNC(handlePlayerChanged), true] call CBA_fnc_addPlayerEventHandler;
|
||||||
[ACE_player, objNull] call FUNC(handlePlayerChanged);
|
|
||||||
|
private _fnc_showStaminaBar = {
|
||||||
|
private _staminaBarContainer = uiNamespace getVariable [QGVAR(staminaBarContainer), controlNull];
|
||||||
|
_staminaBarContainer ctrlShow ((!visibleMap) && {(vehicle ACE_player) == ACE_player});
|
||||||
};
|
};
|
||||||
["unit", FUNC(handlePlayerChanged)] call CBA_fnc_addPlayerEventHandler;
|
["visibleMap", _fnc_showStaminaBar, true] call CBA_fnc_addPlayerEventHandler;
|
||||||
|
["vehicle", _fnc_showStaminaBar, true] call CBA_fnc_addPlayerEventHandler;
|
||||||
|
|
||||||
// - Duty factors -------------------------------------------------------------
|
// - Duty factors -------------------------------------------------------------
|
||||||
if (["ACE_Medical"] call EFUNC(common,isModLoaded)) then {
|
if (["ACE_Medical"] call EFUNC(common,isModLoaded)) then {
|
||||||
|
@ -2,7 +2,9 @@
|
|||||||
|
|
||||||
ADDON = false;
|
ADDON = false;
|
||||||
|
|
||||||
|
PREP_RECOMPILE_START;
|
||||||
#include "XEH_PREP.hpp"
|
#include "XEH_PREP.hpp"
|
||||||
|
PREP_RECOMPILE_END;
|
||||||
//#include "initSettings.sqf"
|
//#include "initSettings.sqf"
|
||||||
|
|
||||||
GVAR(staminaBarWidth) = 10 * (((safezoneW / safezoneH) min 1.2) / 40);
|
GVAR(staminaBarWidth) = 10 * (((safezoneW / safezoneH) min 1.2) / 40);
|
||||||
|
@ -22,13 +22,13 @@ private _animType = _animName select [1, 3];
|
|||||||
|
|
||||||
GVAR(isSwimming) = false;
|
GVAR(isSwimming) = false;
|
||||||
|
|
||||||
if (_animType in ["idl", "mov"]) then {
|
if (_animType in ["idl", "mov", "adj"]) then {
|
||||||
switch (_animName select [5, 3]) do {
|
switch (_animName select [5, 3]) do {
|
||||||
case ("knl"): {
|
case ("knl"): {
|
||||||
_duty = 1.5;
|
_duty = 1.5;
|
||||||
};
|
};
|
||||||
case ("pne"): {
|
case ("pne"): {
|
||||||
_duty = 12;
|
_duty = 10;
|
||||||
};
|
};
|
||||||
default {
|
default {
|
||||||
_duty = 1;
|
_duty = 1;
|
||||||
@ -47,9 +47,15 @@ if (_animType in ["idl", "mov"]) then {
|
|||||||
};
|
};
|
||||||
} else {
|
} else {
|
||||||
// swimming and diving
|
// swimming and diving
|
||||||
if (_animType in ["swm", "ssw", "bsw", "dve", "sdv", "bdv"]) then {
|
switch (true) do {
|
||||||
_duty = 5;
|
case (_animType in ["swm", "ssw", "bsw"]): {
|
||||||
GVAR(isSwimming) = true;
|
_duty = 6.5;
|
||||||
|
GVAR(isSwimming) = true;
|
||||||
|
};
|
||||||
|
case (_animType in ["dve", "sdv", "bdv"]): {
|
||||||
|
_duty = 2.5;
|
||||||
|
GVAR(isSwimming) = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -58,7 +58,15 @@ if (GVAR(ppeBlackoutLast) == 1) then {
|
|||||||
|
|
||||||
// - Physical effects ---------------------------------------------------------
|
// - Physical effects ---------------------------------------------------------
|
||||||
if (GVAR(isSwimming)) exitWith {
|
if (GVAR(isSwimming)) exitWith {
|
||||||
_unit setAnimSpeedCoef (1 - _fatigue / 3);
|
_unit setAnimSpeedCoef linearConversion [0.7, 0.9, _fatigue, 1, 0.5, true];
|
||||||
|
|
||||||
|
if ((isSprintAllowed _unit) && {_fatigue > 0.7}) then {
|
||||||
|
[_unit, "blockSprint", QUOTE(ADDON), true] call EFUNC(common,statusEffect_set);
|
||||||
|
} else {
|
||||||
|
if ((!isSprintAllowed _unit) && {_fatigue < 0.7}) then {
|
||||||
|
[_unit, "blockSprint", QUOTE(ADDON), false] call EFUNC(common,statusEffect_set);
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
if ((getAnimSpeedCoef _unit) != 1) then {
|
if ((getAnimSpeedCoef _unit) != 1) then {
|
||||||
_unit setAnimSpeedCoef 1;
|
_unit setAnimSpeedCoef 1;
|
||||||
|
@ -11,10 +11,13 @@
|
|||||||
*/
|
*/
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
params ["_newUnit", "_oldUnit"];
|
params ["_newUnit", "_oldUnit"];
|
||||||
|
TRACE_2("unit changed",_newUnit,_oldUnit);
|
||||||
|
|
||||||
if !(isNull _oldUnit) then {
|
if !(isNull _oldUnit) then {
|
||||||
_oldUnit enableStamina true;
|
_oldUnit enableStamina true;
|
||||||
_oldUnit removeEventHandler ["AnimChanged", _oldUnit getVariable [QGVAR(animHandler), -1]];
|
_oldUnit removeEventHandler ["AnimChanged", _oldUnit getVariable [QGVAR(animHandler), -1]];
|
||||||
|
_oldUnit setVariable [QGVAR(animHandler), nil];
|
||||||
|
TRACE_1("remove old",_oldUnit getVariable QGVAR(animHandler));
|
||||||
|
|
||||||
_oldUnit setVariable [QGVAR(ae1Reserve), GVAR(ae1Reserve)];
|
_oldUnit setVariable [QGVAR(ae1Reserve), GVAR(ae1Reserve)];
|
||||||
_oldUnit setVariable [QGVAR(ae2Reserve), GVAR(ae2Reserve)];
|
_oldUnit setVariable [QGVAR(ae2Reserve), GVAR(ae2Reserve)];
|
||||||
@ -30,6 +33,7 @@ if (_newUnit getVariable [QGVAR(animHandler), -1] == -1) then {
|
|||||||
private _animHandler = _newUnit addEventHandler ["AnimChanged", {
|
private _animHandler = _newUnit addEventHandler ["AnimChanged", {
|
||||||
GVAR(animDuty) = _this call FUNC(getAnimDuty);
|
GVAR(animDuty) = _this call FUNC(getAnimDuty);
|
||||||
}];
|
}];
|
||||||
|
TRACE_1("add new",_animHandler);
|
||||||
_newUnit setVariable [QGVAR(animHandler), _animHandler];
|
_newUnit setVariable [QGVAR(animHandler), _animHandler];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -11,6 +11,9 @@
|
|||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
if (!alive ACE_player) exitWith { // Dead people don't breath, Will also handle null (Map intros)
|
if (!alive ACE_player) exitWith { // Dead people don't breath, Will also handle null (Map intros)
|
||||||
[FUNC(mainLoop), [], 1] call CBA_fnc_waitAndExecute;
|
[FUNC(mainLoop), [], 1] call CBA_fnc_waitAndExecute;
|
||||||
|
private _staminaBarContainer = uiNamespace getVariable [QGVAR(staminaBarContainer), controlNull];
|
||||||
|
_staminaBarContainer ctrlSetFade 1;
|
||||||
|
_staminaBarContainer ctrlCommit 1;
|
||||||
};
|
};
|
||||||
|
|
||||||
private _currentWork = REE;
|
private _currentWork = REE;
|
||||||
|
@ -11,7 +11,7 @@ GVAR(ammoMagLookup) = call CBA_fnc_createNamespace;
|
|||||||
{
|
{
|
||||||
{
|
{
|
||||||
private _ammo = getText (configFile >> "CfgMagazines" >> _x >> "ammo");
|
private _ammo = getText (configFile >> "CfgMagazines" >> _x >> "ammo");
|
||||||
GVAR(ammoMagLookup) setVariable [_ammo, _x];
|
if (_ammo != "") then { GVAR(ammoMagLookup) setVariable [_ammo, _x]; };
|
||||||
} count (getArray (configFile >> "CfgWeapons" >> "Throw" >> _x >> "magazines"));
|
} count (getArray (configFile >> "CfgWeapons" >> "Throw" >> _x >> "magazines"));
|
||||||
nil
|
nil
|
||||||
} count getArray (configFile >> "CfgWeapons" >> "Throw" >> "muzzles");
|
} count getArray (configFile >> "CfgWeapons" >> "Throw" >> "muzzles");
|
||||||
|
@ -2,6 +2,8 @@
|
|||||||
|
|
||||||
ADDON = false;
|
ADDON = false;
|
||||||
|
|
||||||
|
PREP_RECOMPILE_START;
|
||||||
#include "XEH_PREP.hpp"
|
#include "XEH_PREP.hpp"
|
||||||
|
PREP_RECOMPILE_END;
|
||||||
|
|
||||||
ADDON = true;
|
ADDON = true;
|
||||||
|
@ -6,126 +6,147 @@
|
|||||||
<Russian>Улучшенный бросок гранат</Russian>
|
<Russian>Улучшенный бросок гранат</Russian>
|
||||||
<Japanese>アドバンスド投てき</Japanese>
|
<Japanese>アドバンスド投てき</Japanese>
|
||||||
<Polish>Zaawansowane rzucanie</Polish>
|
<Polish>Zaawansowane rzucanie</Polish>
|
||||||
|
<German>Erweitertes Wurfsystem</German>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Advanced_Throwing_Module_Description">
|
<Key ID="STR_ACE_Advanced_Throwing_Module_Description">
|
||||||
<English>Allows changing advanced throwing behaviour.</English>
|
<English>Allows changing advanced throwing behaviour.</English>
|
||||||
<Russian>Позволяет настраивать поведение улучшенного броска гранат.</Russian>
|
<Russian>Позволяет настраивать поведение улучшенного броска гранат.</Russian>
|
||||||
<Japanese>アドバンスド投てきの挙動変更を許可します。</Japanese>
|
<Japanese>アドバンスド投てきの挙動変更を許可します。</Japanese>
|
||||||
<Polish>Zezwala na zmianę zachowania zaawansowanego trybu rzucania.</Polish>
|
<Polish>Zezwala na zmianę zachowania zaawansowanego trybu rzucania.</Polish>
|
||||||
|
<German>Erlaubt es, das Verhalten des erweiterten Wurfsystems zu ändern.</German>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Advanced_Throwing_Enable_DisplayName">
|
<Key ID="STR_ACE_Advanced_Throwing_Enable_DisplayName">
|
||||||
<English>Enable Advanced Throwing</English>
|
<English>Enable Advanced Throwing</English>
|
||||||
<Russian>Включить улучшенный бросок</Russian>
|
<Russian>Включить улучшенный бросок</Russian>
|
||||||
<Japanese>アドバンスド投てきを有効化</Japanese>
|
<Japanese>アドバンスド投てきを有効化</Japanese>
|
||||||
<Polish>Aktywuj zaawansowane rzucanie</Polish>
|
<Polish>Aktywuj zaawansowane rzucanie</Polish>
|
||||||
|
<German>Aktiviere erweitertes Wurfsystem</German>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Advanced_Throwing_Enable_Description">
|
<Key ID="STR_ACE_Advanced_Throwing_Enable_Description">
|
||||||
<English>Enables advanced throwing system.</English>
|
<English>Enables advanced throwing system.</English>
|
||||||
<Russian>Включает систему улучшенного броска.</Russian>
|
<Russian>Включает систему улучшенного броска.</Russian>
|
||||||
<Japanese>アドバンスド投てきシステムを有効化</Japanese>
|
<Japanese>アドバンスド投てきシステムを有効化</Japanese>
|
||||||
<Polish>Aktywuje system zaawansowanego rzucania.</Polish>
|
<Polish>Aktywuje system zaawansowanego rzucania.</Polish>
|
||||||
|
<German>Aktiviert das erweiterte Wurfsystem.</German>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Advanced_Throwing_ShowThrowArc_DisplayName">
|
<Key ID="STR_ACE_Advanced_Throwing_ShowThrowArc_DisplayName">
|
||||||
<English>Show Throw Arc</English>
|
<English>Show Throw Arc</English>
|
||||||
<Russian>Показать траекторию броска</Russian>
|
<Russian>Показать траекторию броска</Russian>
|
||||||
<Japanese>軌道を表示</Japanese>
|
<Japanese>軌道を表示</Japanese>
|
||||||
<Polish>Pokaż trasę lotu</Polish>
|
<Polish>Pokaż trasę lotu</Polish>
|
||||||
|
<German>Zeige Wurfbogen</German>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Advanced_Throwing_ShowThrowArc_Description">
|
<Key ID="STR_ACE_Advanced_Throwing_ShowThrowArc_Description">
|
||||||
<English>Enables visualization of the throw arc (where throwable will fly).</English>
|
<English>Enables visualization of the throw arc (where throwable will fly).</English>
|
||||||
<Russian>Включает визуализацию траектории броска (как полетит граната).</Russian>
|
<Russian>Включает визуализацию траектории броска (как полетит граната).</Russian>
|
||||||
<Japanese>投てき物の予測軌道の表示を有効化します。</Japanese>
|
<Japanese>投てき物の予測軌道の表示を有効化します。</Japanese>
|
||||||
<Polish>Wyświetla wizualizację trasy przelotu granatu.</Polish>
|
<Polish>Wyświetla wizualizację trasy przelotu granatu.</Polish>
|
||||||
|
<German>Aktiviert die Visualisierung des Wurfbogens (wohin das Objekt geworfen werden wird).</German>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Advanced_Throwing_ShowMouseControls_DisplayName">
|
<Key ID="STR_ACE_Advanced_Throwing_ShowMouseControls_DisplayName">
|
||||||
<English>Show Throwing Mouse Controls</English>
|
<English>Show Throwing Mouse Controls</English>
|
||||||
<Russian>Показывать управление мышью</Russian>
|
<Russian>Показывать управление мышью</Russian>
|
||||||
<Japanese>投てきのマウス操作を表示</Japanese>
|
<Japanese>投てきのマウス操作を表示</Japanese>
|
||||||
<Polish>Pokaż podpowiedzi sterowania myszą</Polish>
|
<Polish>Pokaż podpowiedzi sterowania myszą</Polish>
|
||||||
|
<German>Zeige Maussteuerung beim Werfen</German>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Advanced_Throwing_ShowMouseControls_Description">
|
<Key ID="STR_ACE_Advanced_Throwing_ShowMouseControls_Description">
|
||||||
<English>Enables visual cues for mouse controls when throwable is prepared.</English>
|
<English>Enables visual cues for mouse controls when throwable is prepared.</English>
|
||||||
<Russian>Включает отображение подсказок по управлению мышью, когда граната подготовлена.</Russian>
|
<Russian>Включает отображение подсказок по управлению мышью, когда граната подготовлена.</Russian>
|
||||||
<Japanese>投てき物を投げるとき、マウス操作の説明表示を有効化します。</Japanese>
|
<Japanese>投てき物を投げるとき、マウス操作の説明表示を有効化します。</Japanese>
|
||||||
<Polish>Wyświetla podpowiedzi sterowania myszą kiedy obiekt miotany jest w ręku.</Polish>
|
<Polish>Wyświetla podpowiedzi sterowania myszą kiedy obiekt miotany jest w ręku.</Polish>
|
||||||
|
<German>Aktiviert visuelle Hinweise zur Maussteuerung, wenn ein Objekt zum Werfen vorbereitet wird.</German>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Advanced_Throwing_EnablePickUp_DisplayName">
|
<Key ID="STR_ACE_Advanced_Throwing_EnablePickUp_DisplayName">
|
||||||
<English>Enable Throwables Pick Up</English>
|
<English>Enable Throwables Pick Up</English>
|
||||||
<Russian>Включить подбор гранат</Russian>
|
<Russian>Включить подбор гранат</Russian>
|
||||||
<Japanese>投てき物の拾い上げを有効化</Japanese>
|
<Japanese>投てき物の拾い上げを有効化</Japanese>
|
||||||
<Polish>Zezwól na podnoszenie obiektów miotanych</Polish>
|
<Polish>Zezwól na podnoszenie obiektów miotanych</Polish>
|
||||||
|
<German>Aktiviere Aufheben von Wurfobjekten</German>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Advanced_Throwing_EnablePickUp_Description">
|
<Key ID="STR_ACE_Advanced_Throwing_EnablePickUp_Description">
|
||||||
<English>Enables ability to pick up throwables from the ground.</English>
|
<English>Enables ability to pick up throwables from the ground.</English>
|
||||||
<Russian>Включает возможность подбирать гранаты с земли.</Russian>
|
<Russian>Включает возможность подбирать гранаты с земли.</Russian>
|
||||||
<Japanese>地面に落ちている投てき物の拾い上げ動作を有効化します。</Japanese>
|
<Japanese>地面に落ちている投てき物の拾い上げ動作を有効化します。</Japanese>
|
||||||
<Polish>Umożliwia podnoszenie obiektów miotanych z ziemi.</Polish>
|
<Polish>Umożliwia podnoszenie obiektów miotanych z ziemi.</Polish>
|
||||||
|
<German>Aktiviert die Möglichkeit, geworfene Objekte wieder vom Boden aufzuheben.</German>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Advanced_Throwing_EnablePickUpAttached_DisplayName">
|
<Key ID="STR_ACE_Advanced_Throwing_EnablePickUpAttached_DisplayName">
|
||||||
<English>Enable Attached Throwables Pick Up</English>
|
<English>Enable Attached Throwables Pick Up</English>
|
||||||
<Russian>Включить подбор прикрепленных гранат</Russian>
|
<Russian>Включить подбор прикрепленных гранат</Russian>
|
||||||
<Japanese>拾い上げた投てき物の取り付けを有効化</Japanese>
|
<Japanese>拾い上げた投てき物の取り付けを有効化</Japanese>
|
||||||
<Polish>Zezwól na podnoszenie przyczepionych obiektów miotanych</Polish>
|
<Polish>Zezwól na podnoszenie przyczepionych obiektów miotanych</Polish>
|
||||||
|
<German>Aktiviere erneute Aufnahme befestigter Wurfobjekte</German>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Advanced_Throwing_EnablePickUpAttached_Description">
|
<Key ID="STR_ACE_Advanced_Throwing_EnablePickUpAttached_Description">
|
||||||
<English>Enables ability to pick up throwables from attached objects.</English>
|
<English>Enables ability to pick up throwables from attached objects.</English>
|
||||||
<Russian>Включает возможность подбирать гранаты, прикрепленные к объектам.</Russian>
|
<Russian>Включает возможность подбирать гранаты, прикрепленные к объектам.</Russian>
|
||||||
<Japanese>オブジェクトに取り付けられていた投てき物を拾い上げられるようにします。</Japanese>
|
<Japanese>オブジェクトに取り付けられていた投てき物を拾い上げられるようにします。</Japanese>
|
||||||
<Polish>Umożliwia podnoszenie obiektów miotanych przyczepionych do innych obiektów.</Polish>
|
<Polish>Umożliwia podnoszenie obiektów miotanych przyczepionych do innych obiektów.</Polish>
|
||||||
|
<German>Aktiviert die Möglichkeit, befestigte Wurfobjekte erneut aufzunehmen.</German>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Advanced_Throwing_Prepare">
|
<Key ID="STR_ACE_Advanced_Throwing_Prepare">
|
||||||
<English>Prepare/Change Throwable</English>
|
<English>Prepare/Change Throwable</English>
|
||||||
<Russian>Подготовить/заменить гранату</Russian>
|
<Russian>Подготовить/заменить гранату</Russian>
|
||||||
<Japanese>機能の起動/変更</Japanese>
|
<Japanese>機能の起動/変更</Japanese>
|
||||||
<Polish>Przygotuj/zmień ob. miotany</Polish>
|
<Polish>Przygotuj/zmień ob. miotany</Polish>
|
||||||
|
<German>Wurfobjekt vorbereiten/wechseln</German>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Advanced_Throwing_dropModeHold">
|
<Key ID="STR_ACE_Advanced_Throwing_dropModeHold">
|
||||||
<English>Throwable Drop Mode (Hold)</English>
|
<English>Throwable Drop Mode (Hold)</English>
|
||||||
<Russian>Режим броска гранаты (удерживать)</Russian>
|
<Russian>Режим броска гранаты (удерживать)</Russian>
|
||||||
<Japanese>投てきモード (押しっぱ)</Japanese>
|
<Japanese>投てきモード (押しっぱ)</Japanese>
|
||||||
<Polish>Tryb upuszczania ob. miotanego (przytrzymaj)</Polish>
|
<Polish>Tryb upuszczania ob. miotanego (przytrzymaj)</Polish>
|
||||||
|
<German>Wurfobjekt Fallmodus (halten)</German>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Advanced_Throwing_DropModeToggle">
|
<Key ID="STR_ACE_Advanced_Throwing_DropModeToggle">
|
||||||
<English>Throwable Drop Mode (Toggle)</English>
|
<English>Throwable Drop Mode (Toggle)</English>
|
||||||
<Russian>Режим броска гранаты (переключить)</Russian>
|
<Russian>Режим броска гранаты (переключить)</Russian>
|
||||||
<Japanese>投てきモード (トグル)</Japanese>
|
<Japanese>投てきモード (トグル)</Japanese>
|
||||||
<Polish>Tryb upuszczania ob. miotanego (przełącz)</Polish>
|
<Polish>Tryb upuszczania ob. miotanego (przełącz)</Polish>
|
||||||
|
<German>Wurfobjekt Fallmodus (umschalten)</German>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Advanced_Throwing_Primed">
|
<Key ID="STR_ACE_Advanced_Throwing_Primed">
|
||||||
<English>Primed</English>
|
<English>Primed</English>
|
||||||
<Russian>Подготовлена</Russian>
|
<Russian>Подготовлена</Russian>
|
||||||
<Japanese>起動した</Japanese>
|
<Japanese>起動した</Japanese>
|
||||||
<Polish>Odbezpieczony</Polish>
|
<Polish>Odbezpieczony</Polish>
|
||||||
|
<German>Scharf gemacht</German>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Advanced_Throwing_Throw">
|
<Key ID="STR_ACE_Advanced_Throwing_Throw">
|
||||||
<English>Throw</English>
|
<English>Throw</English>
|
||||||
<Russian>Бросить</Russian>
|
<Russian>Бросить</Russian>
|
||||||
<Japanese>投げる</Japanese>
|
<Japanese>投げる</Japanese>
|
||||||
<Polish>Rzuć</Polish>
|
<Polish>Rzuć</Polish>
|
||||||
|
<German>Werfen</German>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Advanced_Throwing_ChangeMode">
|
<Key ID="STR_ACE_Advanced_Throwing_ChangeMode">
|
||||||
<English>(Scroll) Change Mode</English>
|
<English>(Scroll) Change Mode</English>
|
||||||
<Russian>(Скролл) Изменить режим</Russian>
|
<Russian>(Скролл) Изменить режим</Russian>
|
||||||
<Japanese>(スクロール) モード変更</Japanese>
|
<Japanese>(スクロール) モード変更</Japanese>
|
||||||
<Polish>(Kółko m.) zmień tryb</Polish>
|
<Polish>(Kółko m.) zmień tryb</Polish>
|
||||||
|
<German>(Scrollen) Modus wechseln</German>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Advanced_Throwing_Extend">
|
<Key ID="STR_ACE_Advanced_Throwing_Extend">
|
||||||
<English>(Scroll) Extend</English>
|
<English>(Scroll) Extend</English>
|
||||||
<Russian>(Скролл) Увеличить</Russian>
|
<Russian>(Скролл) Увеличить</Russian>
|
||||||
<Japanese>(スクロール) 遠くに</Japanese>
|
<Japanese>(スクロール) 遠くに</Japanese>
|
||||||
<Polish>(Kółko m.) przedłuż</Polish>
|
<Polish>(Kółko m.) przedłuż</Polish>
|
||||||
|
<German>(Scrollen) Erweitern</German>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Advanced_Throwing_Cook">
|
<Key ID="STR_ACE_Advanced_Throwing_Cook">
|
||||||
<English>(Click) Cook</English>
|
<English>(Click) Cook</English>
|
||||||
<Russian>(Клик) Подготовить</Russian>
|
<Russian>(Клик) Подготовить</Russian>
|
||||||
<Japanese>(クリック) 起爆</Japanese>
|
<Japanese>(クリック) 起爆</Japanese>
|
||||||
<Polish>(Kliknięcie) Odbezpiecz</Polish>
|
<Polish>(Kliknięcie) Odbezpiecz</Polish>
|
||||||
|
<German>(Klicken) Abkochen</German>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Advanced_Throwing_PickUp">
|
<Key ID="STR_ACE_Advanced_Throwing_PickUp">
|
||||||
<English>Pick Up</English>
|
<English>Pick Up</English>
|
||||||
<Russian>Подобрать</Russian>
|
<Russian>Подобрать</Russian>
|
||||||
<Japanese>拾い上げる</Japanese>
|
<Japanese>拾い上げる</Japanese>
|
||||||
<Polish>Podnieś</Polish>
|
<Polish>Podnieś</Polish>
|
||||||
|
<German>Aufheben</German>
|
||||||
</Key>
|
</Key>
|
||||||
</Package>
|
</Package>
|
||||||
</Project>
|
</Project>
|
@ -467,7 +467,7 @@ class CfgWeapons {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// Scorpion EVO
|
// Scorpion EVO
|
||||||
class SMG_02_base_F: Rifle_Base_F {
|
class SMG_02_base_F: Rifle_Short_Base_F {
|
||||||
|
|
||||||
class Single: Mode_SemiAuto {
|
class Single: Mode_SemiAuto {
|
||||||
minRange = 50; //2;
|
minRange = 50; //2;
|
||||||
|
@ -2,6 +2,10 @@
|
|||||||
#define ST_RIGHT 1
|
#define ST_RIGHT 1
|
||||||
#define ST_CENTER 2
|
#define ST_CENTER 2
|
||||||
|
|
||||||
|
#define ST_WITH_RECT 160
|
||||||
|
|
||||||
|
#define LB_TEXTURES 0x10
|
||||||
|
|
||||||
class ATragMX_RscText {
|
class ATragMX_RscText {
|
||||||
idc=-1;
|
idc=-1;
|
||||||
type=0;
|
type=0;
|
||||||
@ -93,7 +97,7 @@ class ATragMX_RscToolbox {
|
|||||||
class ATragMX_RscListBox {
|
class ATragMX_RscListBox {
|
||||||
idc=-1;
|
idc=-1;
|
||||||
type=5;
|
type=5;
|
||||||
style=0;
|
style=LB_TEXTURES;
|
||||||
font="TahomaB";
|
font="TahomaB";
|
||||||
sizeEx=0.028;
|
sizeEx=0.028;
|
||||||
rowHeight=0.03;
|
rowHeight=0.03;
|
||||||
@ -113,13 +117,14 @@ class ATragMX_RscListBox {
|
|||||||
soundSelect[]={"",0.09,1};
|
soundSelect[]={"",0.09,1};
|
||||||
|
|
||||||
class ScrollBar {
|
class ScrollBar {
|
||||||
color[]={1,1,1,0.6};
|
width=0.05;
|
||||||
colorActive[]={1,1,1,1};
|
color[]={0.15,0.21,0.23,0.3};
|
||||||
colorDisabled[]={1,1,1,0.3};
|
colorActive[]={0.15,0.21,0.23,0.3};
|
||||||
//thumb="\ca\ui\data\igui_scrollbar_thumb_ca.paa";
|
colorDisabled[]={0.15,0.21,0.23,0.3};
|
||||||
//arrowFull="\ca\ui\data\igui_arrow_top_active_ca.paa";
|
arrowEmpty="\A3\ui_f\data\gui\cfg\scrollbar\arrowEmpty_ca.paa";
|
||||||
//arrowEmpty="\ca\ui\data\igui_arrow_top_ca.paa";
|
arrowFull="\A3\ui_f\data\gui\cfg\scrollbar\arrowFull_ca.paa";
|
||||||
//border="\ca\ui\data\igui_border_scroll_ca.paa";
|
border="\A3\ui_f\data\gui\cfg\scrollbar\border_ca.paa";
|
||||||
|
thumb="\A3\ui_f\data\gui\cfg\scrollbar\thumb_ca.paa";
|
||||||
};
|
};
|
||||||
|
|
||||||
class ListScrollBar : ScrollBar {
|
class ListScrollBar : ScrollBar {
|
||||||
@ -128,7 +133,6 @@ class ATragMX_RscListBox {
|
|||||||
class ATragMX_RscListNBox: ATragMX_RscListBox {
|
class ATragMX_RscListNBox: ATragMX_RscListBox {
|
||||||
idc=-1;
|
idc=-1;
|
||||||
type=102;
|
type=102;
|
||||||
columns[]={0.0, 0.225, 0.475, 0.7};
|
|
||||||
drawSideArrows=0;
|
drawSideArrows=0;
|
||||||
idcLeft=-1;
|
idcLeft=-1;
|
||||||
idcRight=-1;
|
idcRight=-1;
|
||||||
@ -350,6 +354,7 @@ class ATragMX_Display {
|
|||||||
colorBackground[]={0.15,0.21,0.23,0.3};
|
colorBackground[]={0.15,0.21,0.23,0.3};
|
||||||
colorFocused[]={0.15,0.21,0.23,0.2};
|
colorFocused[]={0.15,0.21,0.23,0.2};
|
||||||
text="MV";
|
text="MV";
|
||||||
|
action=QUOTE(0 call FUNC(toggle_muzzle_velocity_data));
|
||||||
};
|
};
|
||||||
class TEXT_MUZZLE_VELOCITY_OUTPUT: TEXT_BORE_HEIGHT_OUTPUT {
|
class TEXT_MUZZLE_VELOCITY_OUTPUT: TEXT_BORE_HEIGHT_OUTPUT {
|
||||||
idc=130;
|
idc=130;
|
||||||
@ -383,18 +388,18 @@ class ATragMX_Display {
|
|||||||
y=0.265*safezoneH+safezoneY+0.320;
|
y=0.265*safezoneH+safezoneY+0.320;
|
||||||
text="";
|
text="";
|
||||||
};
|
};
|
||||||
class TEXT_BAROMETRIC_PRESSURE: TEXT_AIR_FRICTION {
|
class TEXT_BAROMETRIC_PRESSURE: TEXT_TEMPERATURE {
|
||||||
idc=21;
|
idc=21;
|
||||||
x=0.550*safezoneW+safezoneX+0.20;
|
x=0.550*safezoneW+safezoneX+0.20;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.355;
|
||||||
text="BP";
|
text="BP";
|
||||||
};
|
};
|
||||||
class TEXT_BAROMETRIC_PRESSURE_OUTPUT: TEXT_TEMPERATURE_OUTPUT {
|
class TEXT_BAROMETRIC_PRESSURE_OUTPUT: TEXT_TEMPERATURE_OUTPUT {
|
||||||
idc=210;
|
idc=210;
|
||||||
y=0.265*safezoneH+safezoneY+0.355;
|
y=0.265*safezoneH+safezoneY+0.355;
|
||||||
};
|
};
|
||||||
class TEXT_RELATIVE_HUMIDITY: TEXT_AIR_FRICTION {
|
class TEXT_RELATIVE_HUMIDITY: TEXT_BAROMETRIC_PRESSURE {
|
||||||
idc=22;
|
idc=22;
|
||||||
x=0.550*safezoneW+safezoneX+0.20;
|
|
||||||
y=0.265*safezoneH+safezoneY+0.390;
|
y=0.265*safezoneH+safezoneY+0.390;
|
||||||
text="RH";
|
text="RH";
|
||||||
};
|
};
|
||||||
@ -526,7 +531,7 @@ class ATragMX_Display {
|
|||||||
};
|
};
|
||||||
class TEXT_ELEVATION_OUTPUT_ABSOLUTE: ATragMX_RscText {
|
class TEXT_ELEVATION_OUTPUT_ABSOLUTE: ATragMX_RscText {
|
||||||
idc=400;
|
idc=400;
|
||||||
style=160;
|
style=ST_WITH_RECT+ST_RIGHT;
|
||||||
sizeEx=0.025;
|
sizeEx=0.025;
|
||||||
w=0.065;
|
w=0.065;
|
||||||
h=0.032;
|
h=0.032;
|
||||||
@ -606,17 +611,40 @@ class ATragMX_Display {
|
|||||||
class TEXT_SCOPE_CLICK_NUMBER: TEXT_GUN_LIST {
|
class TEXT_SCOPE_CLICK_NUMBER: TEXT_GUN_LIST {
|
||||||
idc=2001;
|
idc=2001;
|
||||||
style=ST_CENTER;
|
style=ST_CENTER;
|
||||||
w=0.03;
|
w=0.025;
|
||||||
x=0.550*safezoneW+safezoneX+0.27;
|
x=0.550*safezoneW+safezoneX+0.27;
|
||||||
text="4";
|
text="4";
|
||||||
action=QUOTE(call FUNC(toggle_solution_setup));
|
action=QUOTE(call FUNC(toggle_solution_setup));
|
||||||
};
|
};
|
||||||
class TEXT_CALCULATE: TEXT_SCOPE_UNIT {
|
class TEXT_OPTIONS: TEXT_GUN_LIST {
|
||||||
idc=3000;
|
idc=3000;
|
||||||
style=ST_RIGHT;
|
style=ST_RIGHT;
|
||||||
x=0.550*safezoneW+safezoneX+0.3;
|
x=0.550*safezoneW+safezoneX+0.3;
|
||||||
text="Calc";
|
text="Options";
|
||||||
action=QUOTE(call FUNC(calculate_target_solution));
|
action=QUOTE(false call FUNC(toggle_option_menu));
|
||||||
|
};
|
||||||
|
class TEXT_OPTIONS_BACKGROUND: ATragMX_RscButton {
|
||||||
|
idc=3001;
|
||||||
|
colorBackground[]={0.15,0.21,0.23,0.2};
|
||||||
|
colorBackgroundActive[]={0.15,0.21,0.23,0.2};
|
||||||
|
colorFocused[]={0.15,0.21,0.23,0.2};
|
||||||
|
x=0.550*safezoneW+safezoneX+0.105;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.17;
|
||||||
|
w=0.3;
|
||||||
|
h=0.535;
|
||||||
|
offsetPressedX=0.0;
|
||||||
|
offsetPressedY=0.0;
|
||||||
|
action=QUOTE(false call FUNC(toggle_option_menu));
|
||||||
|
};
|
||||||
|
class TEXT_OPTIONS_LIST_OUTPUT: ATragMX_RscListBox {
|
||||||
|
idc=3002;
|
||||||
|
style=0;
|
||||||
|
w=0.17;
|
||||||
|
h=0.28;
|
||||||
|
x=0.550*safezoneW+safezoneX+0.225;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.355;
|
||||||
|
sizeEx=0.025;
|
||||||
|
onMouseButtonClick=QUOTE(true call FUNC(toggle_option_menu));
|
||||||
};
|
};
|
||||||
|
|
||||||
class TEXT_RANGE_CARD_SCOPE_UNIT: TEXT_GUN_PROFILE {
|
class TEXT_RANGE_CARD_SCOPE_UNIT: TEXT_GUN_PROFILE {
|
||||||
@ -666,6 +694,7 @@ class ATragMX_Display {
|
|||||||
};
|
};
|
||||||
class TEXT_RANGE_CARD_OUTPUT: ATragMX_RscListNBox {
|
class TEXT_RANGE_CARD_OUTPUT: ATragMX_RscListNBox {
|
||||||
idc=5007;
|
idc=5007;
|
||||||
|
columns[]={0.0, 0.225, 0.475, 0.7};
|
||||||
idcLeft=50061;
|
idcLeft=50061;
|
||||||
idcRight=50062;
|
idcRight=50062;
|
||||||
w=0.285;
|
w=0.285;
|
||||||
@ -674,16 +703,17 @@ class ATragMX_Display {
|
|||||||
y=0.265*safezoneH+safezoneY+0.27;
|
y=0.265*safezoneH+safezoneY+0.27;
|
||||||
};
|
};
|
||||||
|
|
||||||
class TEXT_GUN_LIST_OUTPUT: ATragMX_RscListBox {
|
class TEXT_GUN_LIST_OUTPUT: ATragMX_RscListNBox {
|
||||||
idc=6000;
|
idc=6000;
|
||||||
|
columns[]={-0.05};
|
||||||
w=0.16;
|
w=0.16;
|
||||||
h=0.45;
|
h=0.45;
|
||||||
x=0.550*safezoneW+safezoneX+0.11;
|
x=0.550*safezoneW+safezoneX+0.11;
|
||||||
y=0.265*safezoneH+safezoneY+0.24;
|
y=0.265*safezoneH+safezoneY+0.24;
|
||||||
sizeEx=0.025;
|
sizeEx=0.018;
|
||||||
colorSelectBackground[]={0.15,0.21,0.23,0.3};
|
colorSelectBackground[]={0.15,0.21,0.23,0.3};
|
||||||
colorSelectBackground2[]={0.15,0.21,0.23,0.3};
|
colorSelectBackground2[]={0.15,0.21,0.23,0.3};
|
||||||
onMouseButtonDblClick=QUOTE(true call FUNC(toggle_gun_list));
|
onLBDblClick=QUOTE(true call FUNC(toggle_gun_list));
|
||||||
};
|
};
|
||||||
class TEXT_GUN_LIST_COLUMN_CAPTION: TEXT_GUN_PROFILE {
|
class TEXT_GUN_LIST_COLUMN_CAPTION: TEXT_GUN_PROFILE {
|
||||||
idc=6001;
|
idc=6001;
|
||||||
@ -766,8 +796,9 @@ class ATragMX_Display {
|
|||||||
class TEXT_TARGET_RANGE_ASSIST_TARGET_SIZE: TEXT_TARGET_RANGE_ASSIST_MEASUREMENT_METHOD {
|
class TEXT_TARGET_RANGE_ASSIST_TARGET_SIZE: TEXT_TARGET_RANGE_ASSIST_MEASUREMENT_METHOD {
|
||||||
idc=7003;
|
idc=7003;
|
||||||
style=ST_RIGHT;
|
style=ST_RIGHT;
|
||||||
x=0.550*safezoneW+safezoneX+0.10;
|
x=0.550*safezoneW+safezoneX+0.092;
|
||||||
y=0.265*safezoneH+safezoneY+0.4;
|
y=0.265*safezoneH+safezoneY+0.4;
|
||||||
|
w=0.128;
|
||||||
text="Target Size";
|
text="Target Size";
|
||||||
};
|
};
|
||||||
class TEXT_TARGET_RANGE_ASSIST_IMAGE_SIZE: TEXT_TARGET_RANGE_ASSIST_TARGET_SIZE {
|
class TEXT_TARGET_RANGE_ASSIST_IMAGE_SIZE: TEXT_TARGET_RANGE_ASSIST_TARGET_SIZE {
|
||||||
@ -874,22 +905,22 @@ class ATragMX_Display {
|
|||||||
|
|
||||||
class TEXT_TARGET_SPEED_ASSIST_TARGET_RANGE: TEXT_TARGET_RANGE_ASSIST_TARGET_SIZE {
|
class TEXT_TARGET_SPEED_ASSIST_TARGET_RANGE: TEXT_TARGET_RANGE_ASSIST_TARGET_SIZE {
|
||||||
idc=8000;
|
idc=8000;
|
||||||
x=0.550*safezoneW+safezoneX+0.13;
|
x=0.550*safezoneW+safezoneX+0.12;
|
||||||
text="Target Range";
|
text="Target Range";
|
||||||
};
|
};
|
||||||
class TEXT_TARGET_SPEED_ASSIST_NUM_TICKS: TEXT_TARGET_RANGE_ASSIST_IMAGE_SIZE {
|
class TEXT_TARGET_SPEED_ASSIST_NUM_TICKS: TEXT_TARGET_RANGE_ASSIST_IMAGE_SIZE {
|
||||||
idc=8001;
|
idc=8001;
|
||||||
x=0.550*safezoneW+safezoneX+0.13;
|
x=0.550*safezoneW+safezoneX+0.12;
|
||||||
text="Num Ticks";
|
text="Num Ticks";
|
||||||
};
|
};
|
||||||
class TEXT_TARGET_SPEED_ASSIST_TIME: TEXT_TARGET_RANGE_ASSIST_ANGLE {
|
class TEXT_TARGET_SPEED_ASSIST_TIME: TEXT_TARGET_RANGE_ASSIST_ANGLE {
|
||||||
idc=8002;
|
idc=8002;
|
||||||
x=0.550*safezoneW+safezoneX+0.13;
|
x=0.550*safezoneW+safezoneX+0.12;
|
||||||
text="Time (secs)";
|
text="Time (secs)";
|
||||||
};
|
};
|
||||||
class TEXT_TARGET_SPEED_ASSIST_TARGET_ESTIMATED_SPEED: TEXT_TARGET_RANGE_ASSIST_ESTIMATED_RANGE {
|
class TEXT_TARGET_SPEED_ASSIST_TARGET_ESTIMATED_SPEED: TEXT_TARGET_RANGE_ASSIST_ESTIMATED_RANGE {
|
||||||
idc=8003;
|
idc=8003;
|
||||||
x=0.550*safezoneW+safezoneX+0.13;
|
x=0.550*safezoneW+safezoneX+0.12;
|
||||||
text="Est Speed";
|
text="Est Speed";
|
||||||
};
|
};
|
||||||
class TEXT_TARGET_SPEED_ASSIST_TARGET_RANGE_INPUT: TEXT_TARGET_RANGE_ASSIST_TARGET_SIZE_INPUT {
|
class TEXT_TARGET_SPEED_ASSIST_TARGET_RANGE_INPUT: TEXT_TARGET_RANGE_ASSIST_TARGET_SIZE_INPUT {
|
||||||
@ -1040,6 +1071,8 @@ class ATragMX_Display {
|
|||||||
x=0.550*safezoneW+safezoneX+0.12;
|
x=0.550*safezoneW+safezoneX+0.12;
|
||||||
y=0.265*safezoneH+safezoneY+0.28;
|
y=0.265*safezoneH+safezoneY+0.28;
|
||||||
text="";
|
text="";
|
||||||
|
onKeyDown=QUOTE(call FUNC(trim_gun_name));
|
||||||
|
onKeyUp=QUOTE(call FUNC(trim_gun_name));
|
||||||
};
|
};
|
||||||
class TEXT_ADD_NEW_GUN_OK: ATragMX_RscButton {
|
class TEXT_ADD_NEW_GUN_OK: ATragMX_RscButton {
|
||||||
idc=11002;
|
idc=11002;
|
||||||
@ -1468,5 +1501,343 @@ class ATragMX_Display {
|
|||||||
y=0.265*safezoneH+safezoneY+0.55;
|
y=0.265*safezoneH+safezoneY+0.55;
|
||||||
action=QUOTE(0 call FUNC(toggle_solution_setup));
|
action=QUOTE(0 call FUNC(toggle_solution_setup));
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class TEXT_MUZZLE_VELOCITY_DATA_TEMPERATURE: TEXT_BORE_HEIGHT {
|
||||||
|
idc=16000;
|
||||||
|
w=0.22;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.25;
|
||||||
|
sizeEx=0.022;
|
||||||
|
text="Temperature";
|
||||||
|
};
|
||||||
|
class TEXT_MUZZLE_VELOCITY_DATA_MUZZLE_VELOCITY: TEXT_MUZZLE_VELOCITY_DATA_TEMPERATURE {
|
||||||
|
idc=16001;
|
||||||
|
x=0.550*safezoneW+safezoneX+0.215;
|
||||||
|
sizeEx=0.022;
|
||||||
|
text="Muzzle velocity";
|
||||||
|
};
|
||||||
|
class TEXT_MUZZLE_VELOCITY_DATA_TEMPERATURE_INPUT_1: ATragMX_RscEdit {
|
||||||
|
idc=160021;
|
||||||
|
w=0.082;
|
||||||
|
h=0.035;
|
||||||
|
x=0.550*safezoneW+safezoneX+0.128;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.29;
|
||||||
|
text="0";
|
||||||
|
};
|
||||||
|
class TEXT_MUZZLE_VELOCITY_DATA_TEMPERATURE_INPUT_2: TEXT_MUZZLE_VELOCITY_DATA_TEMPERATURE_INPUT_1 {
|
||||||
|
idc=160022;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.325;
|
||||||
|
};
|
||||||
|
class TEXT_MUZZLE_VELOCITY_DATA_TEMPERATURE_INPUT_3: TEXT_MUZZLE_VELOCITY_DATA_TEMPERATURE_INPUT_1 {
|
||||||
|
idc=160023;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.360;
|
||||||
|
};
|
||||||
|
class TEXT_MUZZLE_VELOCITY_DATA_TEMPERATURE_INPUT_4: TEXT_MUZZLE_VELOCITY_DATA_TEMPERATURE_INPUT_1 {
|
||||||
|
idc=160024;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.395;
|
||||||
|
};
|
||||||
|
class TEXT_MUZZLE_VELOCITY_DATA_TEMPERATURE_INPUT_5: TEXT_MUZZLE_VELOCITY_DATA_TEMPERATURE_INPUT_1 {
|
||||||
|
idc=160025;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.430;
|
||||||
|
};
|
||||||
|
class TEXT_MUZZLE_VELOCITY_DATA_TEMPERATURE_INPUT_6: TEXT_MUZZLE_VELOCITY_DATA_TEMPERATURE_INPUT_1 {
|
||||||
|
idc=160026;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.465;
|
||||||
|
};
|
||||||
|
class TEXT_MUZZLE_VELOCITY_DATA_TEMPERATURE_INPUT_7: TEXT_MUZZLE_VELOCITY_DATA_TEMPERATURE_INPUT_1 {
|
||||||
|
idc=160027;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.500;
|
||||||
|
};
|
||||||
|
class TEXT_MUZZLE_VELOCITY_DATA_MUZZLE_VELOCITY_INPUT_1: TEXT_MUZZLE_VELOCITY_DATA_TEMPERATURE_INPUT_1 {
|
||||||
|
idc=160031;
|
||||||
|
x=0.550*safezoneW+safezoneX+0.225;
|
||||||
|
};
|
||||||
|
class TEXT_MUZZLE_VELOCITY_DATA_MUZZLE_VELOCITY_INPUT_2: TEXT_MUZZLE_VELOCITY_DATA_TEMPERATURE_INPUT_2 {
|
||||||
|
idc=160032;
|
||||||
|
x=0.550*safezoneW+safezoneX+0.225;
|
||||||
|
};
|
||||||
|
class TEXT_MUZZLE_VELOCITY_DATA_MUZZLE_VELOCITY_INPUT_3: TEXT_MUZZLE_VELOCITY_DATA_TEMPERATURE_INPUT_3 {
|
||||||
|
idc=160033;
|
||||||
|
x=0.550*safezoneW+safezoneX+0.225;
|
||||||
|
};
|
||||||
|
class TEXT_MUZZLE_VELOCITY_DATA_MUZZLE_VELOCITY_INPUT_4: TEXT_MUZZLE_VELOCITY_DATA_TEMPERATURE_INPUT_4 {
|
||||||
|
idc=160034;
|
||||||
|
x=0.550*safezoneW+safezoneX+0.225;
|
||||||
|
};
|
||||||
|
class TEXT_MUZZLE_VELOCITY_DATA_MUZZLE_VELOCITY_INPUT_5: TEXT_MUZZLE_VELOCITY_DATA_TEMPERATURE_INPUT_5 {
|
||||||
|
idc=160035;
|
||||||
|
x=0.550*safezoneW+safezoneX+0.225;
|
||||||
|
};
|
||||||
|
class TEXT_MUZZLE_VELOCITY_DATA_MUZZLE_VELOCITY_INPUT_6: TEXT_MUZZLE_VELOCITY_DATA_TEMPERATURE_INPUT_6 {
|
||||||
|
idc=160036;
|
||||||
|
x=0.550*safezoneW+safezoneX+0.225;
|
||||||
|
};
|
||||||
|
class TEXT_MUZZLE_VELOCITY_DATA_MUZZLE_VELOCITY_INPUT_7: TEXT_MUZZLE_VELOCITY_DATA_TEMPERATURE_INPUT_7 {
|
||||||
|
idc=160037;
|
||||||
|
x=0.550*safezoneW+safezoneX+0.225;
|
||||||
|
};
|
||||||
|
class TEXT_MUZZLE_VELOCITY_DATA_CLEAR: TEXT_TARGET_DATA_NEXT {
|
||||||
|
idc=16004;
|
||||||
|
style=ST_CENTER;
|
||||||
|
h=0.035;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.3625;
|
||||||
|
text="Clear";
|
||||||
|
action=QUOTE(call FUNC(clear_muzzle_velocity_data));
|
||||||
|
};
|
||||||
|
class TEXT_MUZZLE_VELOCITY_DATA_QUESTIONMARK: TEXT_MUZZLE_VELOCITY_DATA_CLEAR {
|
||||||
|
idc=16005;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.430;
|
||||||
|
text="?";
|
||||||
|
action="";
|
||||||
|
};
|
||||||
|
class TEXT_MUZZLE_VELOCITY_DATA_DONE: TEXT_TARGET_DATA_DONE {
|
||||||
|
idc=16006;
|
||||||
|
action=QUOTE(1 call FUNC(toggle_muzzle_velocity_data));
|
||||||
|
};
|
||||||
|
class TEXT_MUZZLE_VELOCITY_DATA_CANCEL: TEXT_TARGET_DATA_CANCEL {
|
||||||
|
idc=16007;
|
||||||
|
action=QUOTE(0 call FUNC(toggle_muzzle_velocity_data));
|
||||||
|
};
|
||||||
|
class TEXT_MUZZLE_VELOCITY_DATA_PREV: TEXT_TARGET_DATA_PREV {
|
||||||
|
idc=16008;
|
||||||
|
};
|
||||||
|
class TEXT_MUZZLE_VELOCITY_DATA_NEXT: TEXT_TARGET_DATA_NEXT {
|
||||||
|
idc=16009;
|
||||||
|
};
|
||||||
|
|
||||||
|
class TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DISTANCE: TEXT_BORE_HEIGHT {
|
||||||
|
idc=17000;
|
||||||
|
w=0.22;
|
||||||
|
x=0.550*safezoneW+safezoneX+0.15;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.25;
|
||||||
|
sizeEx=0.022;
|
||||||
|
text="Meters";
|
||||||
|
};
|
||||||
|
class TEXT_C1_BALLISTIC_COEFFICIENT_DATA_C1_BALLISTIC_COEFFICIENT: TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DISTANCE {
|
||||||
|
idc=17001;
|
||||||
|
x=0.550*safezoneW+safezoneX+0.235;
|
||||||
|
sizeEx=0.022;
|
||||||
|
text="BC-Coef";
|
||||||
|
};
|
||||||
|
class TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DISTANCE_INPUT_1: ATragMX_RscEdit {
|
||||||
|
idc=170021;
|
||||||
|
w=0.082;
|
||||||
|
h=0.035;
|
||||||
|
x=0.550*safezoneW+safezoneX+0.128;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.29;
|
||||||
|
text="0";
|
||||||
|
};
|
||||||
|
class TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DISTANCE_INPUT_2: TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DISTANCE_INPUT_1 {
|
||||||
|
idc=170022;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.325;
|
||||||
|
};
|
||||||
|
class TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DISTANCE_INPUT_3: TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DISTANCE_INPUT_1 {
|
||||||
|
idc=170023;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.360;
|
||||||
|
};
|
||||||
|
class TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DISTANCE_INPUT_4: TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DISTANCE_INPUT_1 {
|
||||||
|
idc=170024;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.395;
|
||||||
|
};
|
||||||
|
class TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DISTANCE_INPUT_5: TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DISTANCE_INPUT_1 {
|
||||||
|
idc=170025;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.430;
|
||||||
|
};
|
||||||
|
class TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DISTANCE_INPUT_6: TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DISTANCE_INPUT_1 {
|
||||||
|
idc=170026;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.465;
|
||||||
|
};
|
||||||
|
class TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DISTANCE_INPUT_7: TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DISTANCE_INPUT_1 {
|
||||||
|
idc=170027;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.500;
|
||||||
|
};
|
||||||
|
class TEXT_C1_BALLISTIC_COEFFICIENT_DATA_C1_BALLISTIC_COEFFICIENT_INPUT_1: TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DISTANCE_INPUT_1 {
|
||||||
|
idc=170031;
|
||||||
|
x=0.550*safezoneW+safezoneX+0.225;
|
||||||
|
};
|
||||||
|
class TEXT_C1_BALLISTIC_COEFFICIENT_DATA_C1_BALLISTIC_COEFFICIENT_INPUT_2: TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DISTANCE_INPUT_2 {
|
||||||
|
idc=170032;
|
||||||
|
x=0.550*safezoneW+safezoneX+0.225;
|
||||||
|
};
|
||||||
|
class TEXT_C1_BALLISTIC_COEFFICIENT_DATA_C1_BALLISTIC_COEFFICIENT_INPUT_3: TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DISTANCE_INPUT_3 {
|
||||||
|
idc=170033;
|
||||||
|
x=0.550*safezoneW+safezoneX+0.225;
|
||||||
|
};
|
||||||
|
class TEXT_C1_BALLISTIC_COEFFICIENT_DATA_C1_BALLISTIC_COEFFICIENT_INPUT_4: TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DISTANCE_INPUT_4 {
|
||||||
|
idc=170034;
|
||||||
|
x=0.550*safezoneW+safezoneX+0.225;
|
||||||
|
};
|
||||||
|
class TEXT_C1_BALLISTIC_COEFFICIENT_DATA_C1_BALLISTIC_COEFFICIENT_INPUT_5: TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DISTANCE_INPUT_5 {
|
||||||
|
idc=170035;
|
||||||
|
x=0.550*safezoneW+safezoneX+0.225;
|
||||||
|
};
|
||||||
|
class TEXT_C1_BALLISTIC_COEFFICIENT_DATA_C1_BALLISTIC_COEFFICIENT_INPUT_6: TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DISTANCE_INPUT_6 {
|
||||||
|
idc=170036;
|
||||||
|
x=0.550*safezoneW+safezoneX+0.225;
|
||||||
|
};
|
||||||
|
class TEXT_C1_BALLISTIC_COEFFICIENT_DATA_C1_BALLISTIC_COEFFICIENT_INPUT_7: TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DISTANCE_INPUT_7 {
|
||||||
|
idc=170037;
|
||||||
|
x=0.550*safezoneW+safezoneX+0.225;
|
||||||
|
};
|
||||||
|
class TEXT_C1_BALLISTIC_COEFFICIENT_DATA_QUESTIONMARK: TEXT_TARGET_DATA_NEXT {
|
||||||
|
idc=17004;
|
||||||
|
style=ST_CENTER;
|
||||||
|
w=0.04;
|
||||||
|
h=0.035;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.35;
|
||||||
|
text="?";
|
||||||
|
action="";
|
||||||
|
};
|
||||||
|
class TEXT_C1_BALLISTIC_COEFFICIENT_DATA_CLEAR: TEXT_C1_BALLISTIC_COEFFICIENT_DATA_QUESTIONMARK {
|
||||||
|
idc=17005;
|
||||||
|
w=0.07;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.4175;
|
||||||
|
text="Clear";
|
||||||
|
action=QUOTE(call FUNC(clear_c1_ballistic_coefficient_data));
|
||||||
|
};
|
||||||
|
class TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DONE: TEXT_TARGET_DATA_DONE {
|
||||||
|
idc=17006;
|
||||||
|
action=QUOTE(1 call FUNC(toggle_c1_ballistic_coefficient_data));
|
||||||
|
};
|
||||||
|
class TEXT_C1_BALLISTIC_COEFFICIENT_DATA_CANCEL: TEXT_TARGET_DATA_CANCEL {
|
||||||
|
idc=17007;
|
||||||
|
action=QUOTE(0 call FUNC(toggle_c1_ballistic_coefficient_data));
|
||||||
|
};
|
||||||
|
class TEXT_C1_BALLISTIC_COEFFICIENT_DATA_PREV: TEXT_TARGET_DATA_PREV {
|
||||||
|
idc=17008;
|
||||||
|
};
|
||||||
|
class TEXT_C1_BALLISTIC_COEFFICIENT_DATA_NEXT: TEXT_TARGET_DATA_NEXT {
|
||||||
|
idc=17009;
|
||||||
|
};
|
||||||
|
|
||||||
|
class TEXT_TRUING_DROP_ZERO_RANGE: ATragMX_RscText {
|
||||||
|
idc=18000;
|
||||||
|
style=ST_LEFT;
|
||||||
|
x=0.550*safezoneW+safezoneX+0.115;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.220;
|
||||||
|
w=0.135;
|
||||||
|
h=0.03;
|
||||||
|
sizeEx=0.025;
|
||||||
|
text="ZR=100meters";
|
||||||
|
};
|
||||||
|
class TEXT_TRUING_DROP_DROP_UNIT: TEXT_TRUING_DROP_ZERO_RANGE {
|
||||||
|
idc=18001;
|
||||||
|
style=ST_LEFT;
|
||||||
|
x=0.550*safezoneW+safezoneX+0.25;
|
||||||
|
text="Drop=mil";
|
||||||
|
};
|
||||||
|
class TEXT_TRUING_DROP_TARGET_RANGE: TEXT_TRUING_DROP_ZERO_RANGE {
|
||||||
|
idc=18002;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.35;
|
||||||
|
sizeEx=0.027;
|
||||||
|
text="Target Range";
|
||||||
|
};
|
||||||
|
class TEXT_TRUING_DROP_DROP: TEXT_TRUING_DROP_TARGET_RANGE {
|
||||||
|
idc=18003;
|
||||||
|
w=0.07;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.40;
|
||||||
|
text="Drop";
|
||||||
|
};
|
||||||
|
class TEXT_TRUING_DROP_MUZZLE_VELOCITY: TEXT_TRUING_DROP_DROP {
|
||||||
|
idc=18004;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.50;
|
||||||
|
text="MV";
|
||||||
|
};
|
||||||
|
class TEXT_TRUING_DROP_C1_BALLISTIC_COEFFICIENT: TEXT_TRUING_DROP_DROP {
|
||||||
|
idc=18005;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.55;
|
||||||
|
text="C1";
|
||||||
|
};
|
||||||
|
class TEXT_TRUING_DROP_DROP_OUTPUT: ATragMX_RscEdit {
|
||||||
|
idc=18006;
|
||||||
|
style=ST_WITH_RECT+ST_RIGHT;
|
||||||
|
colorBackground[]={0.15,0.21,0.23,0.3};
|
||||||
|
colorDisabled[]={0,0,0,1};
|
||||||
|
w=0.06;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.40;
|
||||||
|
x=0.550*safezoneW+safezoneX+0.17;
|
||||||
|
text="";
|
||||||
|
};
|
||||||
|
class TEXT_TRUING_DROP_MUZZLE_VELOCITY_OUTPUT: TEXT_TRUING_DROP_DROP_OUTPUT {
|
||||||
|
idc=18007;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.50;
|
||||||
|
text="";
|
||||||
|
};
|
||||||
|
class TEXT_TRUING_DROP_C1_BALLISTIC_COEFFICIENT_OUTPUT: TEXT_TRUING_DROP_DROP_OUTPUT {
|
||||||
|
idc=18008;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.55;
|
||||||
|
text="";
|
||||||
|
};
|
||||||
|
class TEXT_TRUING_DROP_SUPER: TEXT_TARGET_A {
|
||||||
|
idc=18009;
|
||||||
|
w=0.06;
|
||||||
|
x=0.550*safezoneW+safezoneX+0.25;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.30;
|
||||||
|
text="SUPER";
|
||||||
|
action=QUOTE(GVAR(truingDropMode) = 0; call FUNC(update_truing_drop_selection));
|
||||||
|
};
|
||||||
|
class TEXT_TRUING_DROP_SUB: TEXT_TRUING_DROP_SUPER {
|
||||||
|
idc=18010;
|
||||||
|
x=0.550*safezoneW+safezoneX+0.32;
|
||||||
|
text="SUB";
|
||||||
|
action=QUOTE(GVAR(truingDropMode) = 1; call FUNC(update_truing_drop_selection));
|
||||||
|
};
|
||||||
|
class TEXT_TRUING_DROP_TARGET_RANGE_SUPER_INPUT: ATragMX_RscEdit {
|
||||||
|
idc=18011;
|
||||||
|
style=ST_WITH_RECT+ST_RIGHT;
|
||||||
|
colorDisabled[]={0,0,0,0.6};
|
||||||
|
w=0.06;
|
||||||
|
x=0.550*safezoneW+safezoneX+0.25;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.35;
|
||||||
|
};
|
||||||
|
class TEXT_TRUING_DROP_TARGET_RANGE_SUB_INPUT: TEXT_TRUING_DROP_TARGET_RANGE_SUPER_INPUT {
|
||||||
|
idc=18012;
|
||||||
|
x=0.550*safezoneW+safezoneX+0.32;
|
||||||
|
};
|
||||||
|
class TEXT_TRUING_DROP_DROP_SUPER_INPUT: TEXT_TRUING_DROP_TARGET_RANGE_SUPER_INPUT {
|
||||||
|
idc=18013;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.40;
|
||||||
|
};
|
||||||
|
class TEXT_TRUING_DROP_DROP_SUB_INPUT: TEXT_TRUING_DROP_TARGET_RANGE_SUB_INPUT {
|
||||||
|
idc=18014;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.40;
|
||||||
|
};
|
||||||
|
class TEXT_TRUING_DROP_CALC: TEXT_GUN_LIST {
|
||||||
|
idc=18015;
|
||||||
|
style=ST_CENTER;
|
||||||
|
w=0.11;
|
||||||
|
x=0.550*safezoneW+safezoneX+0.26;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.45;
|
||||||
|
text="Calc";
|
||||||
|
action=QUOTE(true call FUNC(calculate_truing_drop));
|
||||||
|
};
|
||||||
|
class TEXT_TRUING_DROP_MV_INPUT: TEXT_TRUING_DROP_TARGET_RANGE_SUPER_INPUT {
|
||||||
|
idc=18016;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.50;
|
||||||
|
};
|
||||||
|
class TEXT_TRUING_DROP_C1_BALLISTIC_COEFFICIENT_INPUT: TEXT_TRUING_DROP_TARGET_RANGE_SUB_INPUT {
|
||||||
|
idc=18017;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.55;
|
||||||
|
};
|
||||||
|
class TEXT_TRUING_DROP_ACCEPT: TEXT_GUN_LIST {
|
||||||
|
idc=18018;
|
||||||
|
w=0.085;
|
||||||
|
h=0.04;
|
||||||
|
x=0.550*safezoneW+safezoneX+0.125;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.60;
|
||||||
|
text="Accept";
|
||||||
|
action=QUOTE(1 call FUNC(toggle_truing_drop));
|
||||||
|
};
|
||||||
|
class TEXT_TRUING_DROP_CANCEL: TEXT_TRUING_DROP_ACCEPT {
|
||||||
|
idc=18019;
|
||||||
|
x=0.550*safezoneW+safezoneX+0.210;
|
||||||
|
text="Cancel";
|
||||||
|
action=QUOTE(0 call FUNC(toggle_truing_drop));
|
||||||
|
};
|
||||||
|
class TEXT_TRUING_DROP_RESTORE: TEXT_TRUING_DROP_CANCEL {
|
||||||
|
idc=18020;
|
||||||
|
x=0.550*safezoneW+safezoneX+0.29525;
|
||||||
|
text="Restore";
|
||||||
|
action=QUOTE(true call FUNC(restore_truing_drop));
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -1,13 +1,17 @@
|
|||||||
|
|
||||||
PREP(add_new_gun);
|
PREP(add_new_gun);
|
||||||
|
PREP(calculate_distance_at_velocity);
|
||||||
PREP(calculate_range_card);
|
PREP(calculate_range_card);
|
||||||
PREP(calculate_solution);
|
PREP(calculate_solution);
|
||||||
PREP(calculate_target_range_assist);
|
PREP(calculate_target_range_assist);
|
||||||
PREP(calculate_target_solution);
|
PREP(calculate_target_solution);
|
||||||
PREP(calculate_target_speed_assist);
|
PREP(calculate_target_speed_assist);
|
||||||
|
PREP(calculate_truing_drop);
|
||||||
PREP(can_show);
|
PREP(can_show);
|
||||||
PREP(change_gun);
|
PREP(change_gun);
|
||||||
PREP(change_target_slot);
|
PREP(change_target_slot);
|
||||||
|
PREP(clear_c1_ballistic_coefficient_data);
|
||||||
|
PREP(clear_muzzle_velocity_data);
|
||||||
PREP(clear_user_data);
|
PREP(clear_user_data);
|
||||||
PREP(create_dialog);
|
PREP(create_dialog);
|
||||||
PREP(cycle_gun_list);
|
PREP(cycle_gun_list);
|
||||||
@ -18,17 +22,28 @@ PREP(cycle_scope_unit);
|
|||||||
PREP(cycle_target_size_units);
|
PREP(cycle_target_size_units);
|
||||||
PREP(cycle_target_speed_direction);
|
PREP(cycle_target_speed_direction);
|
||||||
PREP(delete_gun);
|
PREP(delete_gun);
|
||||||
|
PREP(evaluate_option_menu_input);
|
||||||
PREP(init);
|
PREP(init);
|
||||||
|
PREP(insert_c1_ballistic_coefficient_data);
|
||||||
|
PREP(insert_muzzle_velocity_data);
|
||||||
PREP(parse_input);
|
PREP(parse_input);
|
||||||
|
PREP(read_gun_list_entries_from_config);
|
||||||
|
PREP(recalculate_c1_ballistic_coefficient);
|
||||||
|
PREP(recalculate_muzzle_velocity);
|
||||||
PREP(reset_relative_click_memory);
|
PREP(reset_relative_click_memory);
|
||||||
PREP(restore_atmo_default);
|
PREP(restore_atmo_default);
|
||||||
|
PREP(restore_truing_drop);
|
||||||
PREP(restore_user_data);
|
PREP(restore_user_data);
|
||||||
PREP(save_gun);
|
PREP(save_gun);
|
||||||
|
PREP(shift_c1_ballistic_coefficient_data);
|
||||||
|
PREP(shift_muzzle_velocity_data);
|
||||||
PREP(show_add_new_gun);
|
PREP(show_add_new_gun);
|
||||||
PREP(show_atmo_env_data);
|
PREP(show_atmo_env_data);
|
||||||
|
PREP(show_c1_ballistic_coefficient_data);
|
||||||
PREP(show_gun_ammo_data);
|
PREP(show_gun_ammo_data);
|
||||||
PREP(show_gun_list);
|
PREP(show_gun_list);
|
||||||
PREP(show_main_page);
|
PREP(show_main_page);
|
||||||
|
PREP(show_muzzle_velocity_data);
|
||||||
PREP(show_range_card);
|
PREP(show_range_card);
|
||||||
PREP(show_range_card_setup);
|
PREP(show_range_card_setup);
|
||||||
PREP(show_solution_setup);
|
PREP(show_solution_setup);
|
||||||
@ -36,24 +51,36 @@ PREP(show_target_data);
|
|||||||
PREP(show_target_range_assist);
|
PREP(show_target_range_assist);
|
||||||
PREP(show_target_speed_assist);
|
PREP(show_target_speed_assist);
|
||||||
PREP(show_target_speed_assist_timer);
|
PREP(show_target_speed_assist_timer);
|
||||||
|
PREP(show_truing_drop);
|
||||||
PREP(sord);
|
PREP(sord);
|
||||||
|
PREP(store_gun_list);
|
||||||
PREP(store_user_data);
|
PREP(store_user_data);
|
||||||
PREP(target_speed_assist_timer);
|
PREP(target_speed_assist_timer);
|
||||||
PREP(toggle_atmo_env_data);
|
PREP(toggle_atmo_env_data);
|
||||||
|
PREP(toggle_c1_ballistic_coefficient_data);
|
||||||
|
PREP(toggle_coriolis);
|
||||||
PREP(toggle_gun_ammo_data);
|
PREP(toggle_gun_ammo_data);
|
||||||
PREP(toggle_gun_list);
|
PREP(toggle_gun_list);
|
||||||
|
PREP(toggle_muzzle_velocity_data);
|
||||||
|
PREP(toggle_option_menu);
|
||||||
PREP(toggle_range_card);
|
PREP(toggle_range_card);
|
||||||
PREP(toggle_range_card_setup);
|
PREP(toggle_range_card_setup);
|
||||||
PREP(toggle_solution_setup);
|
PREP(toggle_solution_setup);
|
||||||
PREP(toggle_target_data);
|
PREP(toggle_target_data);
|
||||||
PREP(toggle_target_range_assist);
|
PREP(toggle_target_range_assist);
|
||||||
PREP(toggle_target_speed_assist);
|
PREP(toggle_target_speed_assist);
|
||||||
|
PREP(toggle_truing_drop);
|
||||||
|
PREP(trim_gun_name);
|
||||||
|
PREP(true_c1_ballistic_coefficient);
|
||||||
|
PREP(true_muzzle_velocity);
|
||||||
PREP(update_atmosphere);
|
PREP(update_atmosphere);
|
||||||
PREP(update_atmo_env_data);
|
PREP(update_atmo_env_data);
|
||||||
PREP(update_atmo_selection);
|
PREP(update_atmo_selection);
|
||||||
|
PREP(update_c1_ballistic_coefficient_data);
|
||||||
PREP(update_gun);
|
PREP(update_gun);
|
||||||
PREP(update_gun_ammo_data);
|
PREP(update_gun_ammo_data);
|
||||||
PREP(update_inclination_angle);
|
PREP(update_inclination_angle);
|
||||||
|
PREP(update_muzzle_velocity_data);
|
||||||
PREP(update_range_card);
|
PREP(update_range_card);
|
||||||
PREP(update_relative_click_memory);
|
PREP(update_relative_click_memory);
|
||||||
PREP(update_result);
|
PREP(update_result);
|
||||||
@ -62,6 +89,8 @@ PREP(update_solution_setup);
|
|||||||
PREP(update_target);
|
PREP(update_target);
|
||||||
PREP(update_target_data);
|
PREP(update_target_data);
|
||||||
PREP(update_target_selection);
|
PREP(update_target_selection);
|
||||||
|
PREP(update_truing_drop_data);
|
||||||
|
PREP(update_truing_drop_selection);
|
||||||
PREP(update_unit_selection);
|
PREP(update_unit_selection);
|
||||||
PREP(update_zero_range);
|
PREP(update_zero_range);
|
||||||
PREP(on_close_dialog);
|
PREP(on_close_dialog);
|
||||||
|
@ -5,44 +5,52 @@
|
|||||||
if ((profileNamespace getVariable ["ACE_ATragMX_profileNamespaceVersion", 0]) == ATRAGMX_PROFILE_NAMESPACE_VERSION && count (profileNamespace getVariable ["ACE_ATragMX_gunList", []]) > 0) then {
|
if ((profileNamespace getVariable ["ACE_ATragMX_profileNamespaceVersion", 0]) == ATRAGMX_PROFILE_NAMESPACE_VERSION && count (profileNamespace getVariable ["ACE_ATragMX_gunList", []]) > 0) then {
|
||||||
GVAR(gunList) = profileNamespace getVariable "ACE_ATragMX_gunList";
|
GVAR(gunList) = profileNamespace getVariable "ACE_ATragMX_gunList";
|
||||||
} else {
|
} else {
|
||||||
// Profile Name, Muzzle Velocity, Zero Range, Scope Base Angle, AirFriction, Bore Height, Scope Unit, Scope Click Unit, Scope Click Number, Maximum Elevation, Dialed Elevation, Dialed Windage, Mass, Bullet Diameter, Rifle Twist, BC, Drag Model, Atmosphere Model
|
// Profile Name, Muzzle Velocity, Zero Range, Scope Base Angle, AirFriction, Bore Height, Scope Unit, Scope Click Unit, Scope Click Number, Maximum Elevation, Dialed Elevation, Dialed Windage, Mass, Bullet Diameter, Rifle Twist, BC, Drag Model, Atmosphere Model, Muzzle Velocity vs. Temperature Interpolation, C1 Ballistic Coefficient vs. Distance Interpolation, Persistent
|
||||||
GVAR(gunList) = [["12.7x108mm" , 820, 100, 0.0657485, -0.00063800, 3.81, 0, 2, 10, 120, 0, 0, 48.28, 12.7, 38.10, 0.630, 1, "ASM" ],
|
GVAR(gunList) = [["12.7x108mm" , 812, 100, 0.0666557, -0.00063800, 3.81, 0, 2, 10, 120, 0, 0, 48.28, 12.7, 38.10, 0.630, 1, "ASM" , [[-15,793],[0,800],[10,807],[15,812],[25,826],[30,835],[35,846]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||||
|
|
||||||
["12.7x99mm AMAX" , 860, 100, 0.0611565, -0.00036645, 3.81, 0, 2, 10, 120, 0, 0, 48.60, 12.7, 38.10, 1.050, 1, "ASM" ],
|
["12.7x99mm AMAX" , 852, 100, 0.0615965, -0.00036645, 3.81, 0, 2, 10, 120, 0, 0, 48.60, 12.7, 38.10, 1.050, 1, "ASM" , [[-15,833],[0,840],[10,847],[15,852],[25,866],[30,875],[35,886]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||||
["12.7x99mm" , 900, 100, 0.0582418, -0.00057503, 3.81, 0, 2, 10, 120, 0, 0, 41.92, 12.7, 38.10, 0.670, 1, "ASM" ],
|
["12.7x99mm" , 892, 100, 0.0588284, -0.00057503, 3.81, 0, 2, 10, 120, 0, 0, 41.92, 12.7, 38.10, 0.670, 1, "ASM" , [[-15,873],[0,880],[10,887],[15,892],[25,906],[30,915],[35,926]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||||
["12.7x99mm API" , 900, 100, 0.0582418, -0.00057503, 3.81, 0, 2, 10, 120, 0, 0, 41.99, 12.9, 38.10, 0.670, 1, "ASM" ],
|
|
||||||
|
|
||||||
["12.7x54mm" , 300, 100, 0.3394630, -0.00019268, 3.81, 0, 2, 10, 120, 0, 0, 48.60, 12.7, 24.13, 1.050, 1, "ASM" ],
|
["12.7x54mm" , 299, 100, 0.3406920, -0.00019268, 3.81, 0, 2, 10, 120, 0, 0, 48.60, 12.7, 24.13, 1.050, 1, "ASM" , [[-15,297],[0,298],[10,299],[15,299],[25,301],[30,302],[35,303]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||||
|
|
||||||
[".408 Chey Tac" , 910, 100, 0.0569400, -0.00038944, 3.81, 0, 2, 10, 120, 0, 0, 26.57, 10.4, 33.02, 0.970, 1, "ASM" ],
|
[".50 Beowulf" , 562, 100, 0.1262000, -0.00202645, 3.81, 0, 2, 10, 120, 0, 0, 21.71, 12.7, 50.80, 0.210, 1, "ASM" , [[-15,560],[0,561],[10,562],[15,562],[25,564],[30,565],[35,566]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||||
|
|
||||||
["9.3×64mm" , 870, 100, 0.0619295, -0.00108571, 3.81, 0, 2, 10, 120, 0, 0, 14.90, 9.30, 35.56, 0.368, 1, "ASM" ],
|
[".408 CheyTac 305gr", 1059, 100, 0.0482146, -0.00063655, 3.81, 0, 2, 10, 120, 0, 0, 19.76, 10.4, 33.02, 0.569, 1, "ICAO", [[-15,1040],[0,1047],[10,1054],[15,1059],[25,1073],[30,1082],[35,1093]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||||
|
[".408 CheyTac 419gr", 859, 100, 0.0611842, -0.00044958, 3.81, 0, 2, 10, 120, 0, 0, 27.15, 10.4, 33.02, 0.866, 1, "ICAO", [[-15,840],[0,847],[10,854],[15,859],[25,873],[30,882],[35,893]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||||
|
|
||||||
[".338LM 250gr" , 880, 100, 0.0598469, -0.00059133, 3.81, 0, 2, 10, 120, 0, 0, 16.20, 8.58, 25.40, 0.322, 7, "ICAO"],
|
["9.3×64mm" , 862, 100, 0.0627652, -0.00108571, 3.81, 0, 2, 10, 120, 0, 0, 14.90, 9.30, 35.56, 0.368, 1, "ASM" , [[-15,843],[0,850],[10,857],[15,862],[25,876],[30,885],[35,896]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||||
[".338LM 300gr" , 800, 100, 0.0677343, -0.00052190, 3.81, 0, 2, 10, 120, 0, 0, 19.44, 8.58, 25.40, 0.381, 7, "ICAO"],
|
|
||||||
[".338LM API526" , 895, 100, 0.0588865, -0.00069611, 3.81, 0, 2, 10, 120, 0, 0, 16.39, 8.58, 25.40, 0.560, 1, "ASM" ],
|
|
||||||
|
|
||||||
[".300WM Mk248 Mod0" , 900, 100, 0.0584442, -0.00070530, 3.81, 0, 2, 10, 120, 0, 0, 12.31, 7.80, 25.40, 0.268, 7, "ICAO"],
|
[".338LM 250gr" , 872, 100, 0.0604821, -0.00059133, 3.81, 0, 2, 10, 120, 0, 0, 16.20, 8.58, 25.40, 0.645, 1, "ICAO", [[-15,853],[0,860],[10,867],[15,872],[25,886],[30,895],[35,906]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||||
[".300WM Mk248 Mod1" , 867, 100, 0.0610738, -0.00061188, 3.81, 0, 2, 10, 120, 0, 0, 14.26, 7.80, 25.40, 0.310, 7, "ICAO"],
|
[".338LM 300gr" , 792, 100, 0.0685883, -0.00052190, 3.81, 0, 2, 10, 120, 0, 0, 19.44, 8.58, 25.40, 0.759, 1, "ICAO", [[-15,773],[0,780],[10,787],[15,792],[25,806],[30,815],[35,826]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||||
[".300WM Berger OTM" , 853, 100, 0.0622179, -0.00053733, 3.81, 0, 2, 10, 120, 0, 0, 14.90, 7.80, 25.40, 0.368, 7, "ICAO"],
|
[".338LM API526" , 872, 100, 0.0602535, -0.00069611, 3.81, 0, 2, 10, 120, 0, 0, 16.39, 8.58, 25.40, 0.760, 1, "ICAO", [[-15,853],[0,860],[10,867],[15,872],[25,886],[30,895],[35,906]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||||
|
|
||||||
["7.62x54mmR" , 800, 100, 0.0691878, -0.00100023, 3.81, 0, 2, 10, 120, 0, 0, 9.849, 7.92, 24.13, 0.400, 1, "ICAO"],
|
[".300WM Mk248 Mod0" , 857, 100, 0.0621425, -0.00070530, 3.81, 0, 2, 10, 120, 0, 0, 12.31, 7.80, 25.40, 0.537, 1, "ICAO", [[-15,838],[0,845],[10,852],[15,857],[25,871],[30,880],[35,891]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||||
|
[".300WM Mk248 Mod1" , 839, 100, 0.0637038, -0.00061188, 3.81, 0, 2, 10, 120, 0, 0, 14.26, 7.80, 25.40, 0.619, 1, "ICAO", [[-15,820],[0,827],[10,834],[15,839],[25,853],[30,862],[35,873]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||||
|
[".300WM Berger OTM" , 792, 100, 0.0686968, -0.00053733, 3.81, 0, 2, 10, 120, 0, 0, 14.90, 7.80, 25.40, 0.715, 1, "ICAO", [[-15,773],[0,780],[10,787],[15,792],[25,806],[30,815],[35,826]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||||
|
|
||||||
["7.62x51mm M80" , 810, 100, 0.0679374, -0.00100957, 3.81, 0, 2, 10, 120, 0, 0, 9.461, 7.82, 25.40, 0.200, 7, "ICAO"],
|
["7.62x54mmR" , 812, 100, 0.0678441, -0.00100023, 3.81, 0, 2, 10, 120, 0, 0, 9.849, 7.92, 24.13, 0.400, 1, "ICAO", [[-15,793],[0,800],[10,807],[15,812],[25,826],[30,835],[35,846]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||||
["7.62x51mm M118LR" , 780, 100, 0.0710319, -0.00082828, 3.81, 0, 2, 10, 120, 0, 0, 11.34, 7.82, 25.40, 0.243, 7, "ICAO"],
|
|
||||||
["7.62x51mm Mk316" , 780, 100, 0.0710319, -0.00082029, 3.81, 0, 2, 10, 120, 0, 0, 11.34, 7.82, 25.40, 0.243, 7, "ICAO"],
|
|
||||||
["7.62x51mm Mk319" , 910, 100, 0.0584524, -0.00102338, 3.81, 0, 2, 10, 120, 0, 0, 8.424, 7.82, 25.40, 0.377, 1, "ICAO"],
|
|
||||||
["7.62x51mm M993" , 930, 100, 0.0570316, -0.00107148, 3.81, 0, 2, 10, 120, 0, 0, 8.230, 7.82, 25.40, 0.359, 1, "ICAO"],
|
|
||||||
["7.62x51mm Subsonic", 320, 100, 0.3059680, -0.00049899, 3.81, 0, 2, 10, 120, 0, 0, 12.96, 7.82, 25.40, 0.235, 7, "ICAO"],
|
|
||||||
|
|
||||||
["6.5x39mm" , 800, 100, 0.0683482, -0.00075308, 3.81, 0, 2, 10, 120, 0, 0, 7.970, 6.71, 22.86, 0.263, 7, "ICAO"],
|
["7.62x51mm M80" , 802, 100, 0.0690229, -0.00100957, 3.81, 0, 2, 10, 120, 0, 0, 9.461, 7.82, 25.40, 0.398, 1, "ICAO", [[-15,783],[0,790],[10,797],[15,802],[25,816],[30,825],[35,836]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||||
["6.5x47mm Lapua" , 800, 100, 0.0682221, -0.00067037, 3.81, 0, 2, 10, 120, 0, 0, 9.007, 6.71, 22.86, 0.290, 7, "ICAO"],
|
["7.62x51mm M118LR" , 757, 100, 0.0739989, -0.00082828, 3.81, 0, 2, 10, 120, 0, 0, 11.34, 7.82, 25.40, 0.482, 1, "ICAO", [[-15,738],[0,745],[10,752],[15,757],[25,771],[30,780],[35,791]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||||
["6.5mm Creedmor" , 840, 100, 0.0636501, -0.00060887, 3.81, 0, 2, 10, 120, 0, 0, 9.072, 6.71, 22.86, 0.317, 7, "ICAO"],
|
["7.62x51mm Mk316" , 781, 100, 0.0709422, -0.00082029, 3.81, 0, 2, 10, 120, 0, 0, 11.34, 7.82, 25.40, 0.483, 1, "ICAO", [[-15,777],[0,778],[10,779],[15,781],[25,783],[30,785],[35,787]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||||
|
["7.62x51mm Mk319" , 900, 100, 0.0593025, -0.00102338, 3.81, 0, 2, 10, 120, 0, 0, 8.424, 7.82, 25.40, 0.377, 1, "ICAO", [[-15,898],[0,899],[10,900],[15,900],[25,902],[30,903],[35,904]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||||
|
["7.62x51mm M993" , 912, 100, 0.0585007, -0.00107148, 3.81, 0, 2, 10, 120, 0, 0, 8.230, 7.82, 25.40, 0.359, 1, "ICAO", [[-15,893],[0,900],[10,907],[15,912],[25,926],[30,935],[35,946]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||||
|
["7.62x51mm Subsonic", 314, 100, 0.3168140, -0.00049899, 3.81, 0, 2, 10, 120, 0, 0, 12.96, 7.82, 25.40, 0.502, 1, "ICAO", [[-15,312],[0,313],[10,314],[15,314],[25,316],[30,317],[35,318]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||||
|
|
||||||
["5.56x45mm M855" , 870, 100, 0.0626386, -0.00126466, 3.81, 0, 2, 10, 120, 0, 0, 4.018, 5.70, 17.78, 0.151, 7, "ASM" ],
|
["7.62x39mm" , 708, 100, 0.0846559, -0.00151621, 3.81, 0, 2, 10, 120, 0, 0, 7.970, 7.82, 25.40, 0.275, 1, "ICAO", [[-15,689],[0,696],[10,703],[15,708],[25,722],[30,731],[35,742]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||||
["5.56x45mm Mk262" , 820, 100, 0.0671481, -0.00109563, 3.81, 0, 2, 10, 120, 0, 0, 4.990, 5.70, 17.78, 0.361, 1, "ASM" ],
|
|
||||||
["5.56x45mm Mk318" , 880, 100, 0.0615937, -0.00123318, 3.81, 0, 2, 10, 120, 0, 0, 4.018, 5.70, 17.78, 0.307, 1, "ASM" ],
|
["6.5x39mm" , 766, 100, 0.0725986, -0.00075308, 3.81, 0, 2, 10, 120, 0, 0, 7.970, 6.71, 22.86, 0.524, 1, "ICAO", [[-15,747],[0,754],[10,761],[15,766],[25,780],[30,789],[35,800]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||||
["5.56x45mm M995" , 869, 100, 0.0626713, -0.00123272, 3.81, 0, 2, 10, 120, 0, 0, 4.536, 5.70, 17.78, 0.310, 1, "ASM" ]];
|
["6.5x47mm Lapua" , 767, 100, 0.0722256, -0.00067037, 3.81, 0, 2, 10, 120, 0, 0, 9.007, 6.71, 22.86, 0.577, 1, "ICAO", [[-15,748],[0,755],[10,762],[15,767],[25,781],[30,790],[35,801]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||||
|
["6.5mm Creedmor" , 822, 100, 0.0655022, -0.00060887, 3.81, 0, 2, 10, 120, 0, 0, 9.072, 6.71, 22.86, 0.632, 1, "ICAO", [[-15,803],[0,810],[10,817],[15,822],[25,836],[30,845],[35,856]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||||
|
|
||||||
|
["5.8x42mm DBP87" , 942, 100, 0.0566639, -0.00117956, 3.81, 0, 2, 10, 120, 0, 0, 4.150, 5.99, 24.40, 0.313, 1, "ICAO", [[-15,923],[0,930],[10,937],[15,942],[25,956],[30,965],[35,976]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||||
|
|
||||||
|
["5.56x45mm M855" , 862, 100, 0.0635456, -0.00126466, 3.81, 0, 2, 10, 120, 0, 0, 4.018, 5.70, 17.78, 0.302, 1, "ASM" , [[-15,843],[0,849],[10,857],[15,862],[25,876],[30,885],[35,898]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||||
|
["5.56x45mm Mk262" , 812, 100, 0.0682606, -0.00109563, 3.81, 0, 2, 10, 120, 0, 0, 4.990, 5.70, 17.78, 0.361, 1, "ASM" , [[-15,793],[0,800],[10,807],[15,812],[25,826],[30,835],[35,846]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||||
|
["5.56x45mm Mk318" , 872, 100, 0.0624569, -0.00123318, 3.81, 0, 2, 10, 120, 0, 0, 4.018, 5.70, 17.78, 0.307, 1, "ASM" , [[-15,853],[0,860],[10,867],[15,872],[25,886],[30,895],[35,906]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||||
|
["5.56x45mm M995" , 861, 100, 0.0635355, -0.00123272, 3.81, 0, 2, 10, 120, 0, 0, 4.536, 5.70, 17.78, 0.310, 1, "ASM" , [[-15,842],[0,849],[10,856],[15,861],[25,875],[30,884],[35,895]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||||
|
|
||||||
|
["5.45x39mm 7N6M" , 727, 100, 0.0801269, -0.00116278, 3.81, 0, 2, 10, 120, 0, 0, 3.428, 5.59, 16.00, 0.336, 1, "ICAO", [[-15,708],[0,715],[10,722],[15,727],[25,741],[30,750],[35,761]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true]];
|
||||||
|
|
||||||
[] call FUNC(clear_user_data);
|
[] call FUNC(clear_user_data);
|
||||||
profileNamespace setVariable ["ACE_ATragMX_gunList", GVAR(gunList)];
|
profileNamespace setVariable ["ACE_ATragMX_gunList", GVAR(gunList)];
|
||||||
@ -50,5 +58,6 @@ if ((profileNamespace getVariable ["ACE_ATragMX_profileNamespaceVersion", 0]) ==
|
|||||||
|
|
||||||
[] call FUNC(init);
|
[] call FUNC(init);
|
||||||
[] call FUNC(restore_user_data);
|
[] call FUNC(restore_user_data);
|
||||||
|
[] call FUNC(read_gun_list_entries_from_config);
|
||||||
|
|
||||||
[QEGVAR(vector,rangefinderData), {_this call FUNC(sord)}] call CBA_fnc_addEventHandler;
|
[QEGVAR(vector,rangefinderData), {_this call FUNC(sord)}] call CBA_fnc_addEventHandler;
|
||||||
|
@ -2,6 +2,8 @@
|
|||||||
|
|
||||||
ADDON = false;
|
ADDON = false;
|
||||||
|
|
||||||
|
PREP_RECOMPILE_START;
|
||||||
#include "XEH_PREP.hpp"
|
#include "XEH_PREP.hpp"
|
||||||
|
PREP_RECOMPILE_END;
|
||||||
|
|
||||||
ADDON = true;
|
ADDON = true;
|
||||||
|
@ -6,7 +6,7 @@ class CfgPatches {
|
|||||||
units[] = {"ACE_Item_ATragMX"};
|
units[] = {"ACE_Item_ATragMX"};
|
||||||
weapons[] = {"ACE_ATragMX"};
|
weapons[] = {"ACE_ATragMX"};
|
||||||
requiredVersion = REQUIRED_VERSION;
|
requiredVersion = REQUIRED_VERSION;
|
||||||
requiredAddons[] = {"ACE_common", "ACE_weather"};
|
requiredAddons[] = {"ACE_Advanced_Ballistics", "ACE_common", "ACE_weather"};
|
||||||
author = ECSTRING(common,ACETeam);
|
author = ECSTRING(common,ACETeam);
|
||||||
authors[] = {"Ruthberg"};
|
authors[] = {"Ruthberg"};
|
||||||
url = ECSTRING(main,URL);
|
url = ECSTRING(main,URL);
|
||||||
|
@ -15,13 +15,16 @@
|
|||||||
*/
|
*/
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
call FUNC(trim_gun_name);
|
||||||
|
|
||||||
private _gunName = ctrlText 11001;
|
private _gunName = ctrlText 11001;
|
||||||
|
|
||||||
if (_gunName != "") then {
|
if (_gunName != "") then {
|
||||||
private _gunProfileEntry = [_gunName, 810, 100, 0.0679, -0.0010350, 3.81, 0, 2, 10, 120, 0, 0, 9.525, 7.82, 25.40, 0.393, 1, "ICAO"],
|
private _gunProfileEntry = [_gunName, 810, 100, 0.0679, -0.0010350, 3.81, 0, 2, 10, 120, 0, 0, 9.525, 7.82, 25.40, 0.393, 1, "ICAO", [[-15,0],[0,0],[10,0],[15,0],[25,0],[30,0],[35,0]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true];
|
||||||
|
|
||||||
GVAR(gunList) = GVAR(gunList) + [_gunProfileEntry];
|
GVAR(gunList) = GVAR(gunList) + [_gunProfileEntry];
|
||||||
|
|
||||||
lbAdd [6000, _gunProfileEntry select 0];
|
lbAdd [6000, _gunName];
|
||||||
|
|
||||||
profileNamespace setVariable ["ACE_ATragMX_gunList", GVAR(gunList)];
|
call FUNC(store_gun_list);
|
||||||
};
|
};
|
||||||
|
@ -0,0 +1,37 @@
|
|||||||
|
/*
|
||||||
|
* Author: Ruthberg
|
||||||
|
* Calculates distance at which the bullet velocity drops below the threshold velocity
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* theshold velocity <number>
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* distance <number
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* 403 call ace_atragmx_fnc_calculate_distance_at_velocity
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
#define __DELTA_T 0.001
|
||||||
|
|
||||||
|
if (isNil QGVAR(targetSolutionInput)) exitWith { 0 };
|
||||||
|
|
||||||
|
private _thresholdVelocity = _this;
|
||||||
|
private _velocity = GVAR(targetSolutionInput) select 4;
|
||||||
|
|
||||||
|
if (_velocity <= _thresholdVelocity) exitWith { 0 };
|
||||||
|
|
||||||
|
private _distance = 0;
|
||||||
|
|
||||||
|
while {_velocity > _thresholdVelocity} do {
|
||||||
|
private _bc = GVAR(targetSolutionInput) select 14;
|
||||||
|
private _dragModel = GVAR(targetSolutionInput) select 15;
|
||||||
|
private _drag = parseNumber(("ace_advanced_ballistics" callExtension format["retard:%1:%2:%3", _dragModel, _bc, _velocity]));
|
||||||
|
_distance = _distance + _velocity * __DELTA_T;
|
||||||
|
_velocity = _velocity - (_drag * __DELTA_T);
|
||||||
|
};
|
||||||
|
|
||||||
|
_distance
|
@ -15,61 +15,16 @@
|
|||||||
*/
|
*/
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
[] call FUNC(parse_input);
|
GVAR(rangeCardData) = [];
|
||||||
|
|
||||||
GVAR(workingMemory) params ["",
|
|
||||||
"_muzzleVelocity", "",
|
|
||||||
"_scopeBaseAngle",
|
|
||||||
"_airFriction",
|
|
||||||
"_boreHeight", "", "", "", "", "", "",
|
|
||||||
"_bulletMass",
|
|
||||||
"_bulletDiameter",
|
|
||||||
"_barrelTwist",
|
|
||||||
"_bc",
|
|
||||||
"_dragModel",
|
|
||||||
"_atmosphereModel"
|
|
||||||
];
|
|
||||||
|
|
||||||
private _twistDirection = 0;
|
|
||||||
if (_barrelTwist > 0) then {
|
|
||||||
_twistDirection = 1;
|
|
||||||
} else {
|
|
||||||
if (_barrelTwist < 0) then {
|
|
||||||
_twistDirection = -1;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
_barrelTwist = abs _barrelTwist;
|
|
||||||
|
|
||||||
private _altitude = GVAR(altitude);
|
|
||||||
private _temperature = GVAR(temperature);
|
|
||||||
private _barometricPressure = GVAR(barometricPressure);
|
|
||||||
private _relativeHumidity = GVAR(relativeHumidity);
|
|
||||||
if (!GVAR(atmosphereModeTBH)) then {
|
|
||||||
_barometricPressure = 1013.25 * (1 - (0.0065 * _altitude) / (273.15 + _temperature + 0.0065 * _altitude)) ^ 5.255754495;
|
|
||||||
_relativeHumidity = 50;
|
|
||||||
};
|
|
||||||
|
|
||||||
private _bulletLength = 45.72;
|
|
||||||
private _stabilityFactor = 1.5;
|
|
||||||
if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then {
|
|
||||||
if (_bulletDiameter > 0 && _bulletLength > 0 && _bulletMass > 0 && _barrelTwist > 0) then {
|
|
||||||
_stabilityFactor = [_bulletDiameter, _bulletLength, _bulletMass, _barrelTwist * 10, _muzzleVelocity, _temperature, _barometricPressure] call EFUNC(advanced_ballistics,calculateStabilityFactor);
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
private _latitude = GVAR(latitude) select GVAR(currentTarget);
|
|
||||||
private _directionOfFire = GVAR(directionOfFire) select GVAR(currentTarget);
|
|
||||||
private _windSpeed1 = (GVAR(windSpeed1) select GVAR(currentTarget));
|
|
||||||
private _windSpeed2 = (GVAR(windSpeed2) select GVAR(currentTarget));
|
|
||||||
private _windDirection = (GVAR(windDirection) select GVAR(currentTarget));
|
|
||||||
private _inclinationAngle = (GVAR(inclinationAngle) select GVAR(currentTarget));
|
|
||||||
private _targetSpeed = (GVAR(targetSpeed) select GVAR(currentTarget));
|
|
||||||
private _targetRange = GVAR(rangeCardEndRange);
|
private _targetRange = GVAR(rangeCardEndRange);
|
||||||
if (GVAR(currentUnit) == 1) then {
|
if (GVAR(currentUnit) == 1) then {
|
||||||
_targetRange = _targetRange / 1.0936133;
|
_targetRange = _targetRange / 1.0936133;
|
||||||
};
|
};
|
||||||
|
|
||||||
GVAR(rangeCardData) = [];
|
private _solutionInput = +GVAR(targetSolutionInput);
|
||||||
|
_solutionInput set [ 8, round(_solutionInput select 4)];
|
||||||
|
_solutionInput set [13, _targetRange];
|
||||||
|
_solutionInput set [17, true];
|
||||||
|
|
||||||
private _result = [_scopeBaseAngle, _bulletMass, _boreHeight, _airFriction, _muzzleVelocity, _temperature, _barometricPressure, _relativeHumidity, 1000,
|
private _result = _solutionInput call FUNC(calculate_solution);
|
||||||
[_windSpeed1, _windSpeed2], _windDirection, _inclinationAngle, _targetSpeed, _targetRange, _bc, _dragModel, _atmosphereModel, true, _stabilityFactor, _twistDirection, _latitude, _directionOfFire] call FUNC(calculate_solution);
|
|
||||||
|
@ -51,7 +51,10 @@ params [
|
|||||||
];
|
];
|
||||||
_windSpeed params ["_windSpeed1", "_windSpeed2"];
|
_windSpeed params ["_windSpeed1", "_windSpeed2"];
|
||||||
|
|
||||||
private ["_bulletPos", "_bulletVelocity", "_bulletAccel", "_bulletSpeed", "_gravity", "_deltaT"];
|
private ["_tx", "_tz", "_lastBulletPos", "_bulletPos", "_bulletVelocity", "_bulletAccel", "_bulletSpeed", "_gravity", "_deltaT"];
|
||||||
|
_tx = 0;
|
||||||
|
_tz = 0;
|
||||||
|
_lastBulletPos = [0, 0, 0];
|
||||||
_bulletPos = [0, 0, 0];
|
_bulletPos = [0, 0, 0];
|
||||||
_bulletVelocity = [0, 0, 0];
|
_bulletVelocity = [0, 0, 0];
|
||||||
_bulletAccel = [0, 0, 0];
|
_bulletAccel = [0, 0, 0];
|
||||||
@ -74,9 +77,10 @@ _horizontalDeflection = 0;
|
|||||||
_spinDrift = 0;
|
_spinDrift = 0;
|
||||||
_spinDeflection = 0;
|
_spinDeflection = 0;
|
||||||
|
|
||||||
private ["_n", "_range", "_rangeFactor"];
|
private ["_n", "_range", "_trueRange", "_rangeFactor"];
|
||||||
_n = 0;
|
_n = 0;
|
||||||
_range = 0;
|
_range = 0;
|
||||||
|
_trueRange = 0;
|
||||||
_rangeFactor = 1;
|
_rangeFactor = 1;
|
||||||
if (_storeRangeCardData) then {
|
if (_storeRangeCardData) then {
|
||||||
if (GVAR(currentUnit) == 1) then {
|
if (GVAR(currentUnit) == 1) then {
|
||||||
@ -90,22 +94,15 @@ _wind1 = [cos(270 - _windDirection * 30) * _windSpeed1, sin(270 - _windDirection
|
|||||||
_wind2 = [cos(270 - _windDirection * 30) * _windSpeed2, sin(270 - _windDirection * 30) * _windSpeed2, 0];
|
_wind2 = [cos(270 - _windDirection * 30) * _windSpeed2, sin(270 - _windDirection * 30) * _windSpeed2, 0];
|
||||||
_windDrift = 0;
|
_windDrift = 0;
|
||||||
if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then {
|
if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then {
|
||||||
_bc = [_bc, _temperature, _barometricPressure, _relativeHumidity, _atmosphereModel] call EFUNC(advanced_ballistics,calculateAtmosphericCorrection);
|
_bc = parseNumber(("ace_advanced_ballistics" callExtension format["atmosphericCorrection:%1:%2:%3:%4:%5", _bc, _temperature, _barometricPressure, _relativeHumidity, _atmosphereModel]));
|
||||||
};
|
};
|
||||||
|
|
||||||
private ["_speedTotal", "_stepsTotal", "_speedAverage"];
|
|
||||||
_speedTotal = 0;
|
|
||||||
_stepsTotal = 0;
|
|
||||||
_speedAverage = 0;
|
|
||||||
|
|
||||||
private ["_eoetvoesMultiplier"];
|
private ["_eoetvoesMultiplier"];
|
||||||
_eoetvoesMultiplier = 0;
|
_eoetvoesMultiplier = 0;
|
||||||
if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then {
|
if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then {
|
||||||
_eoetvoesMultiplier = 2 * (0.0000729 * _muzzleVelocity / -9.80665) * cos(_latitude) * sin(_directionOfFire);
|
_eoetvoesMultiplier = 2 * (0.0000729 * _muzzleVelocity / -9.80665) * cos(_latitude) * sin(_directionOfFire);
|
||||||
};
|
};
|
||||||
|
|
||||||
_TOF = 0;
|
|
||||||
|
|
||||||
_bulletPos set [0, 0];
|
_bulletPos set [0, 0];
|
||||||
_bulletPos set [1, 0];
|
_bulletPos set [1, 0];
|
||||||
_bulletPos set [2, -(_boreHeight / 100)];
|
_bulletPos set [2, -(_boreHeight / 100)];
|
||||||
@ -117,19 +114,11 @@ _bulletVelocity set [2, Sin(_scopeBaseAngle) * _muzzleVelocity];
|
|||||||
while {_TOF < 15 && (_bulletPos select 1) < _targetRange} do {
|
while {_TOF < 15 && (_bulletPos select 1) < _targetRange} do {
|
||||||
_bulletSpeed = vectorMagnitude _bulletVelocity;
|
_bulletSpeed = vectorMagnitude _bulletVelocity;
|
||||||
|
|
||||||
_speedTotal = _speedTotal + _bulletSpeed;
|
|
||||||
_stepsTotal = _stepsTotal + 1;
|
|
||||||
_speedAverage = (_speedTotal / _stepsTotal);
|
|
||||||
|
|
||||||
_trueVelocity = _bulletVelocity vectorDiff _wind1;
|
_trueVelocity = _bulletVelocity vectorDiff _wind1;
|
||||||
_trueSpeed = vectorMagnitude _trueVelocity;
|
_trueSpeed = vectorMagnitude _trueVelocity;
|
||||||
|
|
||||||
if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then {
|
if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then {
|
||||||
private _drag = if (missionNamespace getVariable [QEGVAR(advanced_ballistics,extensionAvailable), false]) then {
|
private _drag = parseNumber(("ace_advanced_ballistics" callExtension format["retard:%1:%2:%3", _dragModel, _bc, _trueSpeed]));
|
||||||
parseNumber(("ace_advanced_ballistics" callExtension format["retard:%1:%2:%3", _dragModel, _bc, _trueSpeed]))
|
|
||||||
} else {
|
|
||||||
([_dragModel, _bc, _trueSpeed] call EFUNC(advanced_ballistics,calculateRetardation))
|
|
||||||
};
|
|
||||||
_bulletAccel = (vectorNormalized _trueVelocity) vectorMultiply (-1 * _drag);
|
_bulletAccel = (vectorNormalized _trueVelocity) vectorMultiply (-1 * _drag);
|
||||||
} else {
|
} else {
|
||||||
_bulletAccel = _trueVelocity vectorMultiply (_trueSpeed * _airFriction);
|
_bulletAccel = _trueVelocity vectorMultiply (_trueSpeed * _airFriction);
|
||||||
@ -137,29 +126,32 @@ while {_TOF < 15 && (_bulletPos select 1) < _targetRange} do {
|
|||||||
|
|
||||||
_bulletAccel = _bulletAccel vectorAdd _gravity;
|
_bulletAccel = _bulletAccel vectorAdd _gravity;
|
||||||
|
|
||||||
|
_lastBulletPos = _bulletPos;
|
||||||
|
_bulletPos = _bulletPos vectorAdd (_bulletVelocity vectorMultiply (_deltaT * 0.5));
|
||||||
_bulletVelocity = _bulletVelocity vectorAdd (_bulletAccel vectorMultiply _deltaT);
|
_bulletVelocity = _bulletVelocity vectorAdd (_bulletAccel vectorMultiply _deltaT);
|
||||||
_bulletPos = _bulletPos vectorAdd (_bulletVelocity vectorMultiply _deltaT);
|
_bulletPos = _bulletPos vectorAdd (_bulletVelocity vectorMultiply (_deltaT * 0.5));
|
||||||
|
|
||||||
_TOF = _TOF + _deltaT;
|
_TOF = _TOF + _deltaT;
|
||||||
|
|
||||||
if (_storeRangeCardData) then {
|
if (_storeRangeCardData) then {
|
||||||
_range = GVAR(rangeCardStartRange) + _n * GVAR(rangeCardIncrement);
|
_range = GVAR(rangeCardStartRange) + _n * GVAR(rangeCardIncrement);
|
||||||
if ((_bulletPos select 1) * _rangeFactor >= _range && _range <= GVAR(rangeCardEndRange)) then {
|
if ((_bulletPos select 1) * _rangeFactor >= _range && _range <= GVAR(rangeCardEndRange)) then {
|
||||||
if ((_bulletPos select 1) > 0) then {
|
_trueRange = _range / _rangeFactor;
|
||||||
_elevation = - atan((_bulletPos select 2) / (_bulletPos select 1));
|
if (_trueRange != 0) then {
|
||||||
_windage1 = - atan((_bulletPos select 0) / (_bulletPos select 1));
|
_tx = (_lastBulletPos select 0) + (_trueRange - (_lastBulletPos select 1)) * ((_bulletPos select 0) - (_lastBulletPos select 0)) / ((_bulletPos select 1) - (_lastBulletPos select 1));
|
||||||
_windDrift = (_wind2 select 0) * (_TOF - (_range / _rangeFactor) / _muzzleVelocity);
|
_tz = (_lastBulletPos select 2) + (_trueRange - (_lastBulletPos select 1)) * ((_bulletPos select 2) - (_lastBulletPos select 2)) / ((_bulletPos select 1) - (_lastBulletPos select 1));
|
||||||
_windage2 = - atan(_windDrift / (_bulletPos select 1));
|
_elevation = - atan(_tz / _trueRange);
|
||||||
};
|
_windage1 = - atan(_tx / _trueRange);
|
||||||
if (_range != 0) then {
|
_windDrift = (_wind2 select 0) * (_TOF - _trueRange / _muzzleVelocity);
|
||||||
_lead = (_targetSpeed * _TOF) / (Tan(3.38 / 60) * _range);
|
_windage2 = - atan(_windDrift / _trueRange);
|
||||||
|
_lead = (_targetSpeed * _TOF) / (Tan(3.38 / 60) * _trueRange);
|
||||||
};
|
};
|
||||||
_kineticEnergy = 0.5 * (_bulletMass / 1000 * (_bulletSpeed ^ 2));
|
_kineticEnergy = 0.5 * (_bulletMass / 1000 * (_bulletSpeed ^ 2));
|
||||||
_kineticEnergy = _kineticEnergy * 0.737562149;
|
_kineticEnergy = _kineticEnergy * 0.737562149;
|
||||||
|
|
||||||
if ((missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) && (_bulletPos select 1) > 0) then {
|
if ((missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) && (_bulletPos select 1) > 0) then {
|
||||||
// Coriolis
|
// Coriolis
|
||||||
_horizontalDeflection = 0.0000729 * ((_bulletPos select 1) ^ 2) * sin(_latitude) / _speedAverage;
|
_horizontalDeflection = 0.0000729 * (_bulletPos select 1) * _TOF * sin(_latitude);
|
||||||
_horizontalCoriolis = - atan(_horizontalDeflection / (_bulletPos select 1));
|
_horizontalCoriolis = - atan(_horizontalDeflection / (_bulletPos select 1));
|
||||||
_windage1 = _windage1 + _horizontalCoriolis;
|
_windage1 = _windage1 + _horizontalCoriolis;
|
||||||
_windage2 = _windage2 + _horizontalCoriolis;
|
_windage2 = _windage2 + _horizontalCoriolis;
|
||||||
@ -180,14 +172,13 @@ while {_TOF < 15 && (_bulletPos select 1) < _targetRange} do {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
if ((_bulletPos select 1) > 0) then {
|
|
||||||
_elevation = - atan((_bulletPos select 2) / (_bulletPos select 1));
|
|
||||||
_windage1 = - atan((_bulletPos select 0) / (_bulletPos select 1));
|
|
||||||
_windDrift = (_wind2 select 0) * (_TOF - _targetRange / _muzzleVelocity);
|
|
||||||
_windage2 = - atan(_windDrift / (_bulletPos select 1));
|
|
||||||
};
|
|
||||||
|
|
||||||
if (_targetRange != 0) then {
|
if (_targetRange != 0) then {
|
||||||
|
_tx = (_lastBulletPos select 0) + (_targetRange - (_lastBulletPos select 1)) * ((_bulletPos select 0) - (_lastBulletPos select 0)) / ((_bulletPos select 1) - (_lastBulletPos select 1));
|
||||||
|
_tz = (_lastBulletPos select 2) + (_targetRange - (_lastBulletPos select 1)) * ((_bulletPos select 2) - (_lastBulletPos select 2)) / ((_bulletPos select 1) - (_lastBulletPos select 1));
|
||||||
|
_elevation = - atan(_tz / _targetRange);
|
||||||
|
_windage1 = - atan(_tx / _targetRange);
|
||||||
|
_windDrift = (_wind2 select 0) * (_TOF - _targetRange / _muzzleVelocity);
|
||||||
|
_windage2 = - atan(_windDrift / _targetRange);
|
||||||
_lead = (_targetSpeed * _TOF) / (Tan(3.38 / 60) * _targetRange);
|
_lead = (_targetSpeed * _TOF) / (Tan(3.38 / 60) * _targetRange);
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -196,7 +187,7 @@ _kineticEnergy = _kineticEnergy * 0.737562149;
|
|||||||
|
|
||||||
if ((missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) && (_bulletPos select 1) > 0) then {
|
if ((missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) && (_bulletPos select 1) > 0) then {
|
||||||
// Coriolis
|
// Coriolis
|
||||||
_horizontalDeflection = 0.0000729 * ((_bulletPos select 1) ^ 2) * sin(_latitude) / _speedAverage;
|
_horizontalDeflection = 0.0000729 * (_bulletPos select 1) * _TOF * sin(_latitude);
|
||||||
_horizontalCoriolis = - atan(_horizontalDeflection / (_bulletPos select 1));
|
_horizontalCoriolis = - atan(_horizontalDeflection / (_bulletPos select 1));
|
||||||
_windage1 = _windage1 + _horizontalCoriolis;
|
_windage1 = _windage1 + _horizontalCoriolis;
|
||||||
_windage2 = _windage2 + _horizontalCoriolis;
|
_windage2 = _windage2 + _horizontalCoriolis;
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
private _angle = parseNumber(ctrlText 7012);
|
private _angle = parseNumber(ctrlText 7012);
|
||||||
private _targetSize = parseNumber(ctrlText 7010);
|
private _targetSize = abs(parseNumber(ctrlText 7010));
|
||||||
if (GVAR(rangeAssistUseTargetHeight)) then {
|
if (GVAR(rangeAssistUseTargetHeight)) then {
|
||||||
_targetSize = _targetSize * cos(_angle);
|
_targetSize = _targetSize * cos(_angle);
|
||||||
};
|
};
|
||||||
@ -43,7 +43,7 @@ switch (GVAR(rangeAssistImageSizeUnit)) do {
|
|||||||
_imageSize = _imageSize / 60 / 1.047;
|
_imageSize = _imageSize / 60 / 1.047;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
private _estRange = parseNumber(ctrlText 7013);
|
private _estRange = abs(parseNumber(ctrlText 7013));
|
||||||
if (GVAR(currentUnit) == 1) then {
|
if (GVAR(currentUnit) == 1) then {
|
||||||
_estRange = _estRange / 1.0936133;
|
_estRange = _estRange / 1.0936133;
|
||||||
};
|
};
|
||||||
@ -52,7 +52,7 @@ switch (_this) do {
|
|||||||
case 0: {
|
case 0: {
|
||||||
_targetSize = tan(_imageSize) * _estRange;
|
_targetSize = tan(_imageSize) * _estRange;
|
||||||
|
|
||||||
if (GVAR(rangeAssistUseTargetHeight)) then {
|
if (GVAR(rangeAssistUseTargetHeight) && cos(_angle) != 0) then {
|
||||||
_targetSize = _targetSize / cos(_angle);
|
_targetSize = _targetSize / cos(_angle);
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -71,8 +71,10 @@ switch (_this) do {
|
|||||||
ctrlSetText [7010, Str(Round(_targetSize * 100) / 100)];
|
ctrlSetText [7010, Str(Round(_targetSize * 100) / 100)];
|
||||||
};
|
};
|
||||||
case 1: {
|
case 1: {
|
||||||
_imageSize = atan(_targetSize / _estRange);
|
if (_estRange > 0) then {
|
||||||
|
_imageSize = atan(_targetSize / _estRange);
|
||||||
|
};
|
||||||
|
|
||||||
switch (GVAR(rangeAssistImageSizeUnit)) do {
|
switch (GVAR(rangeAssistImageSizeUnit)) do {
|
||||||
case 0: {
|
case 0: {
|
||||||
_imageSize = _imageSize * 6400 / 360;
|
_imageSize = _imageSize * 6400 / 360;
|
||||||
@ -88,8 +90,10 @@ switch (_this) do {
|
|||||||
ctrlSetText [7011, Str(Round(_imageSize * 100) / 100)];
|
ctrlSetText [7011, Str(Round(_imageSize * 100) / 100)];
|
||||||
};
|
};
|
||||||
case 2: {
|
case 2: {
|
||||||
_estRange = _targetSize / tan(_imageSize);
|
if (tan(_imageSize) != 0) then {
|
||||||
|
_estRange = _targetSize / tan(_imageSize);
|
||||||
|
};
|
||||||
|
|
||||||
ctrlSetText [7013, Str(Round(_estRange))];
|
ctrlSetText [7013, Str(Round(_estRange))];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -52,7 +52,7 @@ if (!GVAR(atmosphereModeTBH)) then {
|
|||||||
};
|
};
|
||||||
|
|
||||||
private ["_bulletLength", "_stabilityFactor"];
|
private ["_bulletLength", "_stabilityFactor"];
|
||||||
_bulletLength = 45.72;
|
_bulletLength = 50 * _bulletMass / ((_bulletDiameter/2)^2);
|
||||||
_stabilityFactor = 1.5;
|
_stabilityFactor = 1.5;
|
||||||
if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then {
|
if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then {
|
||||||
if (_bulletDiameter > 0 && _bulletLength > 0 && _bulletMass > 0 && _barrelTwist > 0) then {
|
if (_bulletDiameter > 0 && _bulletLength > 0 && _bulletMass > 0 && _barrelTwist > 0) then {
|
||||||
@ -70,9 +70,10 @@ _inclinationAngle = GVAR(inclinationAngle) select GVAR(currentTarget);
|
|||||||
_targetSpeed = GVAR(targetSpeed) select GVAR(currentTarget);
|
_targetSpeed = GVAR(targetSpeed) select GVAR(currentTarget);
|
||||||
_targetRange = GVAR(targetRange) select GVAR(currentTarget);
|
_targetRange = GVAR(targetRange) select GVAR(currentTarget);
|
||||||
|
|
||||||
private ["_result"];
|
GVAR(targetSolutionInput) = [_scopeBaseAngle, _bulletMass, _boreHeight, _airFriction, _muzzleVelocity, _temperature, _barometricPressure, _relativeHumidity, round(_muzzleVelocity),
|
||||||
_result = [_scopeBaseAngle, _bulletMass, _boreHeight, _airFriction, _muzzleVelocity, _temperature, _barometricPressure, _relativeHumidity, 1000,
|
[_windSpeed1, _windSpeed2], _windDirection, _inclinationAngle, _targetSpeed, _targetRange, _bc, _dragModel, _atmosphereModel, false, _stabilityFactor, _twistDirection, _latitude, _directionOfFire];
|
||||||
[_windSpeed1, _windSpeed2], _windDirection, _inclinationAngle, _targetSpeed, _targetRange, _bc, _dragModel, _atmosphereModel, false, _stabilityFactor, _twistDirection, _latitude, _directionOfFire] call FUNC(calculate_solution);
|
|
||||||
|
private _result = GVAR(targetSolutionInput) call FUNC(calculate_solution);
|
||||||
|
|
||||||
GVAR(elevationOutput) set [GVAR(currentTarget), _result select 0];
|
GVAR(elevationOutput) set [GVAR(currentTarget), _result select 0];
|
||||||
GVAR(windage1Output) set [GVAR(currentTarget), (_result select 1) select 0];
|
GVAR(windage1Output) set [GVAR(currentTarget), (_result select 1) select 0];
|
||||||
@ -80,5 +81,8 @@ GVAR(windage2Output) set [GVAR(currentTarget), (_result select 1) select 1];
|
|||||||
GVAR(leadOutput) set [GVAR(currentTarget), _result select 2];
|
GVAR(leadOutput) set [GVAR(currentTarget), _result select 2];
|
||||||
GVAR(tofOutput) set [GVAR(currentTarget), _result select 3];
|
GVAR(tofOutput) set [GVAR(currentTarget), _result select 3];
|
||||||
GVAR(velocityOutput) set [GVAR(currentTarget), _result select 4];
|
GVAR(velocityOutput) set [GVAR(currentTarget), _result select 4];
|
||||||
|
GVAR(verticalCoriolisOutput) set [GVAR(currentTarget), _result select 6];
|
||||||
|
GVAR(horizontalCoriolisOutput) set [GVAR(currentTarget), _result select 7];
|
||||||
|
GVAR(spinDriftOutput) set [GVAR(currentTarget), _result select 8];
|
||||||
|
|
||||||
[] call FUNC(update_result);
|
[] call FUNC(update_result);
|
||||||
|
107
addons/atragmx/functions/fnc_calculate_truing_drop.sqf
Normal file
107
addons/atragmx/functions/fnc_calculate_truing_drop.sqf
Normal file
@ -0,0 +1,107 @@
|
|||||||
|
/*
|
||||||
|
* Author: Ruthberg
|
||||||
|
* Calculates the truing drop and updates the output fields
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* parse input <BOOL>
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* call ace_atragmx_fnc_calculate_truing_drop
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
private _parseInput = _this;
|
||||||
|
|
||||||
|
private _transonicRange = GVAR(truingDropRangeData) select 0;
|
||||||
|
private _subsonicRange = GVAR(truingDropRangeData) select 1;
|
||||||
|
private _transonicDrop = GVAR(truingDropDropData) select 1;
|
||||||
|
private _subsonicDrop = GVAR(truingDropDropData) select 2;
|
||||||
|
|
||||||
|
if (_parseInput) then {
|
||||||
|
_transonicRange = 0 max abs(parseNumber(ctrlText 18011)) min 4000;
|
||||||
|
_subsonicRange = 0 max abs(parseNumber(ctrlText 18012)) min 4000;
|
||||||
|
if (GVAR(currentUnit) != 2) then {
|
||||||
|
_transonicRange = _transonicRange * 0.9144;
|
||||||
|
_subsonicRange = _subsonicRange * 0.9144;
|
||||||
|
};
|
||||||
|
_transonicRange = Round(_transonicRange);
|
||||||
|
_subsonicRange = Round(_subsonicRange);
|
||||||
|
|
||||||
|
_subsonicRange = _transonicRange max _subsonicRange;
|
||||||
|
|
||||||
|
_transonicDrop = -100 max parseNumber(ctrlText 18013) min 100;
|
||||||
|
_subsonicDrop = -100 max parseNumber(ctrlText 18014) min 100;
|
||||||
|
private _dropUnit = GVAR(currentScopeUnit);
|
||||||
|
if (_dropUnit == 3) then {
|
||||||
|
switch (GVAR(currentScopeClickUnit)) do {
|
||||||
|
case 0: { _dropUnit = 1; };
|
||||||
|
case 1: { _dropUnit = 2; };
|
||||||
|
case 2: { _dropUnit = 0; };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
switch (_dropUnit) do {
|
||||||
|
case 0: {
|
||||||
|
_transonicDrop = _transonicDrop * 3.38;
|
||||||
|
_subsonicDrop = _subsonicDrop * 3.38;
|
||||||
|
};
|
||||||
|
case 2: {
|
||||||
|
_transonicDrop = _transonicDrop / 1.047;
|
||||||
|
_subsonicDrop = _subsonicDrop / 1.047;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
_transonicDrop = Round(_transonicDrop * 100) / 100;
|
||||||
|
_subsonicDrop = Round(_subsonicDrop * 100) / 100;
|
||||||
|
|
||||||
|
_subsonicDrop = _transonicDrop max _subsonicDrop;
|
||||||
|
};
|
||||||
|
|
||||||
|
if ((GVAR(truingDropDropData) select 0) == 0 || {!([_transonicRange, _subsonicRange] isEqualTo GVAR(truingDropRangeData))}) then {
|
||||||
|
if (isNil QGVAR(targetSolutionInput)) then {
|
||||||
|
call FUNC(calculate_target_solution);
|
||||||
|
};
|
||||||
|
private _solutionInput = +GVAR(targetSolutionInput);
|
||||||
|
|
||||||
|
if (_transonicRange == 0) then {
|
||||||
|
_transonicRange = Round(403 call FUNC(calculate_distance_at_velocity));
|
||||||
|
};
|
||||||
|
_solutionInput set [13, _transonicRange];
|
||||||
|
private _result1 = _solutionInput call FUNC(calculate_solution);
|
||||||
|
_transonicDrop = Round((_result1 select 0) * 100) / 100;
|
||||||
|
GVAR(truingDropRangeData) set [0, _transonicRange];
|
||||||
|
GVAR(truingDropDropData) set [1, _transonicDrop];
|
||||||
|
GVAR(truingDropReferenceDropData) set [0, _transonicDrop];
|
||||||
|
|
||||||
|
private _speedOfSound = (_solutionInput select 5) call EFUNC(weather,calculateSpeedOfSound);
|
||||||
|
if (_subsonicRange == 0) then {
|
||||||
|
_subsonicRange = _speedOfSound call FUNC(calculate_distance_at_velocity);
|
||||||
|
if (GVAR(currentUnit) == 2) then {
|
||||||
|
_subsonicRange = _subsonicRange + 200;
|
||||||
|
} else {
|
||||||
|
_subsonicRange = _subsonicRange + 200 * 1.0936133;
|
||||||
|
};
|
||||||
|
_subsonicRange = Round(_subsonicRange);
|
||||||
|
};
|
||||||
|
_solutionInput set [13, _subsonicRange];
|
||||||
|
private _result2 = _solutionInput call FUNC(calculate_solution);
|
||||||
|
_subsonicDrop = Round((_result2 select 0) * 100) / 100;
|
||||||
|
GVAR(truingDropRangeData) set [1, _subsonicRange];
|
||||||
|
GVAR(truingDropDropData) set [2, _subsonicDrop];
|
||||||
|
GVAR(truingDropReferenceDropData) set [1, _subsonicDrop];
|
||||||
|
} else {
|
||||||
|
if (_transonicDrop != GVAR(truingDropDropData) select 1 || _subsonicDrop != GVAR(truingDropDropData) select 2) then {
|
||||||
|
GVAR(truingDropDropData) set [1, _transonicDrop];
|
||||||
|
GVAR(truingDropDropData) set [2, _subsonicDrop];
|
||||||
|
if (GVAR(truingDropMode) == 0) then {
|
||||||
|
call FUNC(true_muzzle_velocity);
|
||||||
|
} else {
|
||||||
|
call FUNC(true_c1_ballistic_coefficient);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
call FUNC(update_truing_drop_data);
|
@ -26,6 +26,12 @@ if (_restoreMemory) then {
|
|||||||
};
|
};
|
||||||
GVAR(currentGun) = _gunID;
|
GVAR(currentGun) = _gunID;
|
||||||
|
|
||||||
|
[false, false] call FUNC(recalculate_muzzle_velocity);
|
||||||
|
if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then {
|
||||||
|
false call FUNC(restore_truing_drop);
|
||||||
|
[false, false] call FUNC(recalculate_c1_ballistic_coefficient);
|
||||||
|
};
|
||||||
|
|
||||||
if (_updateDisplay) then {
|
if (_updateDisplay) then {
|
||||||
lbSetCurSel [6000, GVAR(currentGun)];
|
lbSetCurSel [6000, GVAR(currentGun)];
|
||||||
};
|
};
|
||||||
@ -37,6 +43,8 @@ GVAR(currentScopeClickNumber) = 1 max (GVAR(workingMemory) select 8) min 10;
|
|||||||
if (_updateDisplay) then {
|
if (_updateDisplay) then {
|
||||||
[] call FUNC(update_gun);
|
[] call FUNC(update_gun);
|
||||||
[] call FUNC(update_gun_ammo_data);
|
[] call FUNC(update_gun_ammo_data);
|
||||||
|
[] call FUNC(update_muzzle_velocity_data);
|
||||||
|
[] call FUNC(update_c1_ballistic_coefficient_data);
|
||||||
};
|
};
|
||||||
|
|
||||||
GVAR(elevationOutput) set [GVAR(currentTarget), 0];
|
GVAR(elevationOutput) set [GVAR(currentTarget), 0];
|
||||||
@ -45,6 +53,9 @@ GVAR(windage2Output) set [GVAR(currentTarget), 0];
|
|||||||
GVAR(leadOutput) set [GVAR(currentTarget), 0];
|
GVAR(leadOutput) set [GVAR(currentTarget), 0];
|
||||||
GVAR(tofOutput) set [GVAR(currentTarget), 0];
|
GVAR(tofOutput) set [GVAR(currentTarget), 0];
|
||||||
GVAR(velocityOutput) set [GVAR(currentTarget), 0];
|
GVAR(velocityOutput) set [GVAR(currentTarget), 0];
|
||||||
|
GVAR(verticalCoriolisOutput) set [GVAR(currentTarget), 0];
|
||||||
|
GVAR(horizontalCoriolisOutput) set [GVAR(currentTarget), 0];
|
||||||
|
GVAR(spinDriftOutput) set [GVAR(currentTarget), 0];
|
||||||
|
|
||||||
if (_updateDisplay) then {
|
if (_updateDisplay) then {
|
||||||
[] call FUNC(calculate_target_solution);
|
[] call FUNC(calculate_target_solution);
|
||||||
|
@ -17,9 +17,8 @@
|
|||||||
|
|
||||||
private _target = 0 max _this min 3;
|
private _target = 0 max _this min 3;
|
||||||
|
|
||||||
call FUNC(parse_input);
|
[] call FUNC(parse_input);
|
||||||
|
|
||||||
GVAR(currentTarget) = _target;
|
GVAR(currentTarget) = _target;
|
||||||
call FUNC(update_target_selection);
|
call FUNC(update_target_selection);
|
||||||
|
call FUNC(calculate_target_solution);
|
||||||
[] call FUNC(calculate_target_solution);
|
|
||||||
|
@ -0,0 +1,21 @@
|
|||||||
|
/*
|
||||||
|
* Author: Ruthberg
|
||||||
|
* Clears the c1 ballistic coefficient data fields
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* call ace_atragmx_fnc_clear_c1_ballistic_coefficient_data
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
// Distances
|
||||||
|
{ctrlSetText [_x, "0"]} forEach [170021, 170022, 170023, 170024, 170025, 170026, 170027];
|
||||||
|
// Ballistic Coefficients
|
||||||
|
{ctrlSetText [_x, "0"]} forEach [170031, 170032, 170033, 170034, 170035, 170036, 170037];
|
21
addons/atragmx/functions/fnc_clear_muzzle_velocity_data.sqf
Normal file
21
addons/atragmx/functions/fnc_clear_muzzle_velocity_data.sqf
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
/*
|
||||||
|
* Author: Ruthberg
|
||||||
|
* Clears the muzzle velocity data fields
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* call ace_atragmx_fnc_clear_muzzle_velocity_data
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
// Temperatures
|
||||||
|
{ctrlSetText [_x, "0"]} forEach [160021, 160022, 160023, 160024, 160025, 160026, 160027];
|
||||||
|
// Muzzle velocities
|
||||||
|
{ctrlSetText [_x, "0"]} forEach [160031, 160032, 160033, 160034, 160035, 160036, 160037];
|
@ -28,6 +28,7 @@ profileNamespace setVariable ["ACE_ATragMX_temperature", nil];
|
|||||||
profileNamespace setVariable ["ACE_ATragMX_barometricPressure", nil];
|
profileNamespace setVariable ["ACE_ATragMX_barometricPressure", nil];
|
||||||
profileNamespace setVariable ["ACE_ATragMX_relativeHumidity", nil];
|
profileNamespace setVariable ["ACE_ATragMX_relativeHumidity", nil];
|
||||||
|
|
||||||
|
profileNamespace setVariable ["ACE_ATragMX_showCoriolis", nil];
|
||||||
profileNamespace setVariable ["ACE_ATragMX_showWind2", nil];
|
profileNamespace setVariable ["ACE_ATragMX_showWind2", nil];
|
||||||
profileNamespace setVariable ["ACE_ATragMX_latitude", nil];
|
profileNamespace setVariable ["ACE_ATragMX_latitude", nil];
|
||||||
profileNamespace setVariable ["ACE_ATragMX_directionOfFire", nil];
|
profileNamespace setVariable ["ACE_ATragMX_directionOfFire", nil];
|
||||||
|
@ -30,8 +30,10 @@ GVAR(showMainPage) call FUNC(show_main_page);
|
|||||||
|
|
||||||
GVAR(showAddNewGun) call FUNC(show_add_new_gun);
|
GVAR(showAddNewGun) call FUNC(show_add_new_gun);
|
||||||
GVAR(showAtmoEnvData) call FUNC(show_atmo_env_data);
|
GVAR(showAtmoEnvData) call FUNC(show_atmo_env_data);
|
||||||
|
GVAR(showC1BallisticCoefficientData) call FUNC(show_c1_ballistic_coefficient_data);
|
||||||
GVAR(showGunAmmoData) call FUNC(show_gun_ammo_data);
|
GVAR(showGunAmmoData) call FUNC(show_gun_ammo_data);
|
||||||
GVAR(showGunList) call FUNC(show_gun_list);
|
GVAR(showGunList) call FUNC(show_gun_list);
|
||||||
|
GVAR(showMuzzleVelocityData) call FUNC(show_muzzle_velocity_data);
|
||||||
GVAR(showRangeCard) call FUNC(show_range_card);
|
GVAR(showRangeCard) call FUNC(show_range_card);
|
||||||
if (GVAR(showRangeCard)) then {
|
if (GVAR(showRangeCard)) then {
|
||||||
ctrlSetFocus ((uiNamespace getVariable "ATragMX_Display") displayCtrl 5001);
|
ctrlSetFocus ((uiNamespace getVariable "ATragMX_Display") displayCtrl 5001);
|
||||||
@ -43,6 +45,7 @@ GVAR(showTargetData) call FUNC(show_target_data);
|
|||||||
GVAR(showTargetRangeAssist) call FUNC(show_target_range_assist);
|
GVAR(showTargetRangeAssist) call FUNC(show_target_range_assist);
|
||||||
GVAR(showTargetSpeedAssist) call FUNC(show_target_speed_assist);
|
GVAR(showTargetSpeedAssist) call FUNC(show_target_speed_assist);
|
||||||
GVAR(showTargetSpeedAssistTimer) call FUNC(show_target_speed_assist_timer);
|
GVAR(showTargetSpeedAssistTimer) call FUNC(show_target_speed_assist_timer);
|
||||||
|
GVAR(showTruingDrop) call FUNC(show_truing_drop);
|
||||||
|
|
||||||
[GVAR(currentGun), false, true] call FUNC(change_gun);
|
[GVAR(currentGun), false, true] call FUNC(change_gun);
|
||||||
|
|
||||||
@ -50,6 +53,13 @@ GVAR(showTargetSpeedAssistTimer) call FUNC(show_target_speed_assist_timer);
|
|||||||
lbAdd [6000, _x select 0];
|
lbAdd [6000, _x select 0];
|
||||||
} forEach GVAR(gunList);
|
} forEach GVAR(gunList);
|
||||||
|
|
||||||
|
ctrlShow [3001, false];
|
||||||
|
ctrlShow [3002, false];
|
||||||
|
|
||||||
|
{
|
||||||
|
(__dsp displayCtrl _x) ctrlEnable false;
|
||||||
|
} forEach [18006, 18007, 18008];
|
||||||
|
|
||||||
GVAR(active) = true;
|
GVAR(active) = true;
|
||||||
|
|
||||||
GVAR(DialogPFH) = [{
|
GVAR(DialogPFH) = [{
|
||||||
|
@ -15,10 +15,10 @@
|
|||||||
*/
|
*/
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
[] call FUNC(parse_input);
|
|
||||||
|
|
||||||
GVAR(currentScopeUnit) = (GVAR(currentScopeUnit) + 1) % (count GVAR(scopeUnits));
|
GVAR(currentScopeUnit) = (GVAR(currentScopeUnit) + 1) % (count GVAR(scopeUnits));
|
||||||
GVAR(workingMemory) set [6, GVAR(currentScopeUnit)];
|
GVAR(workingMemory) set [6, GVAR(currentScopeUnit)];
|
||||||
|
|
||||||
|
true call FUNC(show_main_page);
|
||||||
|
|
||||||
[] call FUNC(update_scope_unit);
|
[] call FUNC(update_scope_unit);
|
||||||
[] call FUNC(update_result);
|
[] call FUNC(update_result);
|
||||||
|
@ -28,4 +28,4 @@ GVAR(gunList) = GVAR(gunList) - [0];
|
|||||||
|
|
||||||
lbDelete [6000, _index];
|
lbDelete [6000, _index];
|
||||||
|
|
||||||
profileNamespace setVariable ["ACE_ATragMX_gunList", GVAR(gunList)];
|
call FUNC(store_gun_list);
|
||||||
|
30
addons/atragmx/functions/fnc_evaluate_option_menu_input.sqf
Normal file
30
addons/atragmx/functions/fnc_evaluate_option_menu_input.sqf
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
/*
|
||||||
|
* Author: Ruthberg
|
||||||
|
* Evalutes input from the option menu
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* option menu id <number>
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* 1 call ace_atragmx_fnc_evaluate_option_menu_input
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
params ["_optionID"];
|
||||||
|
|
||||||
|
switch (_optionID) do {
|
||||||
|
case 0: {}; // Accuracy 1st
|
||||||
|
case 1: { 0 call FUNC(toggle_muzzle_velocity_data); }; // MuzVel Table
|
||||||
|
case 2: { 0 call FUNC(toggle_c1_ballistic_coefficient_data); }; // Bal Coef Table
|
||||||
|
case 3: { 0 call FUNC(toggle_target_speed_assist); }; // Target Speed Est
|
||||||
|
case 4: { 0 call FUNC(toggle_target_range_assist); }; // Target Range Est
|
||||||
|
case 5: { 0 call FUNC(toggle_truing_drop); }; // Truing Drop
|
||||||
|
case 6: { 0 call FUNC(toggle_coriolis); }; // Show Coriolis
|
||||||
|
case 7: { 0 call FUNC(toggle_solution_setup); }; // Set Clicks
|
||||||
|
case 8: {}; // Gun Note
|
||||||
|
};
|
@ -65,18 +65,33 @@ GVAR(targetSpeedDirection) = [1, 1, 1, 1];
|
|||||||
GVAR(targetRange) = [0, 0, 0, 0];
|
GVAR(targetRange) = [0, 0, 0, 0];
|
||||||
|
|
||||||
GVAR(showWind2) = false;
|
GVAR(showWind2) = false;
|
||||||
|
GVAR(showCoriolis) = false;
|
||||||
GVAR(elevationOutput) = [0, 0, 0, 0];
|
GVAR(elevationOutput) = [0, 0, 0, 0];
|
||||||
GVAR(windage1Output) = [0, 0, 0, 0];
|
GVAR(windage1Output) = [0, 0, 0, 0];
|
||||||
GVAR(windage2Output) = [0, 0, 0, 0];
|
GVAR(windage2Output) = [0, 0, 0, 0];
|
||||||
GVAR(leadOutput) = [0, 0, 0, 0];
|
GVAR(leadOutput) = [0, 0, 0, 0];
|
||||||
GVAR(tofOutput) = [0, 0, 0, 0];
|
GVAR(tofOutput) = [0, 0, 0, 0];
|
||||||
GVAR(velocityOutput) = [0, 0, 0, 0];
|
GVAR(velocityOutput) = [0, 0, 0, 0];
|
||||||
|
GVAR(verticalCoriolisOutput) = [0, 0, 0, 0];
|
||||||
|
GVAR(horizontalCoriolisOutput) = [0, 0, 0, 0];
|
||||||
|
GVAR(spinDriftOutput) = [0, 0, 0, 0];
|
||||||
|
|
||||||
|
GVAR(truingDropMode) = 0;
|
||||||
|
GVAR(truingDropRangeData) = [0, 0];
|
||||||
|
GVAR(truingDropDropData) = [0, 0, 0];
|
||||||
|
GVAR(truingDropReferenceDropData) = [0, 0, 0];
|
||||||
|
GVAR(truingDropC1) = 0;
|
||||||
|
GVAR(truingDropMuzzleVelocity) = 0;
|
||||||
|
|
||||||
|
GVAR(targetSolutionInput) = nil;
|
||||||
|
|
||||||
GVAR(showMainPage) = true;
|
GVAR(showMainPage) = true;
|
||||||
GVAR(showAddNewGun) = false;
|
GVAR(showAddNewGun) = false;
|
||||||
GVAR(showAtmoEnvData) = false;
|
GVAR(showAtmoEnvData) = false;
|
||||||
|
GVAR(showC1BallisticCoefficientData) = false;
|
||||||
GVAR(showGunAmmoData) = false;
|
GVAR(showGunAmmoData) = false;
|
||||||
GVAR(showGunList) = false;
|
GVAR(showGunList) = false;
|
||||||
|
GVAR(showMuzzleVelocityData) = false;
|
||||||
GVAR(showRangeCard) = false;
|
GVAR(showRangeCard) = false;
|
||||||
GVAR(showRangeCardSetup) = false;
|
GVAR(showRangeCardSetup) = false;
|
||||||
GVAR(showSolutionSetup) = false;
|
GVAR(showSolutionSetup) = false;
|
||||||
@ -84,3 +99,4 @@ GVAR(showTargetData) = false;
|
|||||||
GVAR(showTargetRangeAssist) = false;
|
GVAR(showTargetRangeAssist) = false;
|
||||||
GVAR(showTargetSpeedAssist) = false;
|
GVAR(showTargetSpeedAssist) = false;
|
||||||
GVAR(showTargetSpeedAssistTimer) = false;
|
GVAR(showTargetSpeedAssistTimer) = false;
|
||||||
|
GVAR(showTruingDrop) = false;
|
||||||
|
@ -0,0 +1,55 @@
|
|||||||
|
/*
|
||||||
|
* Author: Ruthberg
|
||||||
|
* Inserts entry in the c1 ballistic coefficient vs. distance interpolation table
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* transonic range - <NUMBER>
|
||||||
|
* subsonic range - <NUMBER>
|
||||||
|
* c1 ballistic coefficient - <NUMBER>
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* [800, 0.485] call ace_atragmx_fnc_insert_c1_ballistic_coefficient_data
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
params ["_transonicRange", "_subsonicRange", "_c1"];
|
||||||
|
|
||||||
|
private _entries = {(_x select 1) > 0} count (GVAR(workingMemory) select 19);
|
||||||
|
|
||||||
|
if (_entries > 0) then {
|
||||||
|
// Insert
|
||||||
|
private _insertIndex = 0;
|
||||||
|
private _minDiff = 10000;
|
||||||
|
{
|
||||||
|
if (_minDiff > 0 && {(((GVAR(workingMemory) select 19) select _forEachIndex) select 1) == 0}) then {
|
||||||
|
_insertIndex = _forEachIndex;
|
||||||
|
_minDiff = 0;
|
||||||
|
};
|
||||||
|
private _tr = ((GVAR(workingMemory) select 19) select _forEachIndex) select 0;
|
||||||
|
private _diff = abs(_subsonicRange - _tr);
|
||||||
|
if (_diff == 0) exitWith {
|
||||||
|
_insertIndex = _forEachIndex;
|
||||||
|
};
|
||||||
|
if (_diff < _minDiff) then {
|
||||||
|
_insertIndex = _forEachIndex;
|
||||||
|
_minDiff = _diff;
|
||||||
|
};
|
||||||
|
} forEach (GVAR(workingMemory) select 19);
|
||||||
|
|
||||||
|
(GVAR(workingMemory) select 19) set [_insertIndex, [_subsonicRange, 0.1 max _c1 min 2.0]];
|
||||||
|
} else {
|
||||||
|
// Reset
|
||||||
|
private _zeroRange = GVAR(workingMemory) select 2;
|
||||||
|
private _bc = GVAR(workingMemory) select 15;
|
||||||
|
GVAR(workingMemory) set [19, [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]];
|
||||||
|
(GVAR(workingMemory) select 19) set [0, [_zeroRange, _bc]];
|
||||||
|
(GVAR(workingMemory) select 19) set [1, [_transonicRange + (_subsonicRange - _transonicRange) * 0.75, _bc]];
|
||||||
|
(GVAR(workingMemory) select 19) set [2, [_subsonicRange, 0.1 max _c1 min 2.0]];
|
||||||
|
};
|
||||||
|
|
||||||
|
call FUNC(update_c1_ballistic_coefficient_data);
|
41
addons/atragmx/functions/fnc_insert_muzzle_velocity_data.sqf
Normal file
41
addons/atragmx/functions/fnc_insert_muzzle_velocity_data.sqf
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
/*
|
||||||
|
* Author: Ruthberg
|
||||||
|
* Inserts entry in the muzzle velocity vs. temperature interpolation table
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* temperature - <NUMBER>
|
||||||
|
* muzzle velocity - <NUMBER>
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* [10, 800] call ace_atragmx_fnc_insert_muzzle_velocity_data
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
params ["_temperature", "_muzzleVelocity"];
|
||||||
|
|
||||||
|
private _insertIndex = 0;
|
||||||
|
private _minDiff = 1000;
|
||||||
|
{
|
||||||
|
if (_minDiff > 0 && {(((GVAR(workingMemory) select 18) select _forEachIndex) select 1) == 0}) then {
|
||||||
|
_insertIndex = _forEachIndex;
|
||||||
|
_minDiff = 0;
|
||||||
|
};
|
||||||
|
private _t = ((GVAR(workingMemory) select 18) select _forEachIndex) select 0;
|
||||||
|
private _diff = abs(_temperature - _t);
|
||||||
|
if (_diff == 0) exitWith {
|
||||||
|
_insertIndex = _forEachIndex;
|
||||||
|
};
|
||||||
|
if (_diff < _minDiff) then {
|
||||||
|
_insertIndex = _forEachIndex;
|
||||||
|
_minDiff = _diff;
|
||||||
|
};
|
||||||
|
} forEach (GVAR(workingMemory) select 18);
|
||||||
|
|
||||||
|
(GVAR(workingMemory) select 18) set [_insertIndex, [_temperature, 0 max _muzzleVelocity min 1400]];
|
||||||
|
|
||||||
|
call FUNC(update_muzzle_velocity_data);
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Author: Ruthberg
|
* Author: Ruthberg
|
||||||
* Parses all input fields in the gun, atmosphere and target column and the result input fields
|
* Parses all input fields in the gun-, atmosphere- and target column, the result input fields and the muzzle velocity data input fields
|
||||||
*
|
*
|
||||||
* Arguments:
|
* Arguments:
|
||||||
* Nothing
|
* Nothing
|
||||||
@ -15,22 +15,98 @@
|
|||||||
*/
|
*/
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
GVAR(altitude) = -1000 max parseNumber(ctrlText 130030) min 20000;
|
// Muzzle velocity vs. temperature interpolation data
|
||||||
GVAR(temperature) = -50 max parseNumber(ctrlText 130040) min 160;
|
{
|
||||||
GVAR(barometricPressure) = 10 max parseNumber(ctrlText 130050) min 1350;
|
private _temperature = parseNumber(ctrlText _x);
|
||||||
GVAR(relativeHumidity) = (0 max parseNumber(ctrlText 130060) min 100) / 100;
|
if (GVAR(currentUnit) != 2) then {
|
||||||
|
_temperature = -50 max _temperature min 160;
|
||||||
|
_temperature = (_temperature - 32) / 1.8;
|
||||||
|
} else {
|
||||||
|
_temperature = -50 max _temperature min 71;
|
||||||
|
};
|
||||||
|
((GVAR(workingMemory) select 18) select _forEachIndex) set [0, _temperature];
|
||||||
|
} forEach [160021, 160022, 160023, 160024, 160025, 160026, 160027];
|
||||||
|
{
|
||||||
|
private _muzzleVelocity = abs(parseNumber(ctrlText _x));
|
||||||
|
if (_muzzleVelocity > 0) then {
|
||||||
|
if (GVAR(currentUnit) != 2) then {
|
||||||
|
_muzzleVelocity = 300 max _muzzleVelocity min 4500;
|
||||||
|
_muzzleVelocity = _muzzleVelocity * 0.3048;
|
||||||
|
} else {
|
||||||
|
_muzzleVelocity = 100 max _muzzleVelocity min 1400;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
((GVAR(workingMemory) select 18) select _forEachIndex) set [1, _muzzleVelocity];
|
||||||
|
} forEach [160031, 160032, 160033, 160034, 160035, 160036, 160037];
|
||||||
|
|
||||||
|
// C1 coefficient vs. distance interpolation data
|
||||||
|
{
|
||||||
|
private _distance = abs(parseNumber(ctrlText _x));
|
||||||
|
if (_distance > 0) then {
|
||||||
|
if (GVAR(currentUnit) == 1) then {
|
||||||
|
_distance = 25 max _distance min 4000;
|
||||||
|
_distance = _distance * 0.9144;
|
||||||
|
} else {
|
||||||
|
_distance = 25 max _distance min 3700;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
((GVAR(workingMemory) select 19) select _forEachIndex) set [0, _distance];
|
||||||
|
} forEach [170021, 170022, 170023, 170024, 170025, 170026, 170027];
|
||||||
|
{
|
||||||
|
private _c1 = abs(parseNumber(ctrlText _x));
|
||||||
|
if (_c1 > 0) then {
|
||||||
|
_c1 = 0.1 max _c1 min 2.0;
|
||||||
|
};
|
||||||
|
((GVAR(workingMemory) select 19) select _forEachIndex) set [1, _c1];
|
||||||
|
} forEach [170031, 170032, 170033, 170034, 170035, 170036, 170037];
|
||||||
|
|
||||||
|
GVAR(altitude) = parseNumber(ctrlText 130030);
|
||||||
|
GVAR(temperature) = parseNumber(ctrlText 130040);
|
||||||
|
GVAR(barometricPressure) = parseNumber(ctrlText 130050);
|
||||||
|
GVAR(relativeHumidity) = parseNumber(ctrlText 130060) / 100;
|
||||||
if (GVAR(currentUnit) != 2) then {
|
if (GVAR(currentUnit) != 2) then {
|
||||||
|
GVAR(altitude) = -1000 max GVAR(altitude) min 20000;
|
||||||
|
GVAR(temperature) = -50 max GVAR(temperature) min 160;
|
||||||
|
GVAR(barometricPressure) = 10 max GVAR(barometricPressure) min 40;
|
||||||
GVAR(altitude) = GVAR(altitude) * 0.3048;
|
GVAR(altitude) = GVAR(altitude) * 0.3048;
|
||||||
GVAR(temperature) = (GVAR(temperature) - 32) / 1.8;
|
GVAR(temperature) = (GVAR(temperature) - 32) / 1.8;
|
||||||
GVAR(barometricPressure) = GVAR(barometricPressure) * 33.86389;
|
GVAR(barometricPressure) = GVAR(barometricPressure) * 33.86389;
|
||||||
|
} else {
|
||||||
|
GVAR(altitude) = -300 max GVAR(altitude) min 6100;
|
||||||
|
GVAR(temperature) = -50 max GVAR(temperature) min 71;
|
||||||
|
GVAR(barometricPressure) = 340 max GVAR(barometricPressure) min 1350;
|
||||||
};
|
};
|
||||||
|
|
||||||
private ["_inclinationAngleCosine", "_inclinationAngleDegree"];
|
private ["_windSpeed1", "_windSpeed2", "_targetSpeed", "_targetRange", "_inclinationAngleCosine", "_inclinationAngleDegree"];
|
||||||
|
_windSpeed1 = parseNumber(ctrlText 140020);
|
||||||
|
_windSpeed2 = parseNumber(ctrlText 140021);
|
||||||
|
_targetSpeed = parseNumber(ctrlText 140050);
|
||||||
|
_targetRange = parseNumber(ctrlText 140060);
|
||||||
|
if (GVAR(currentUnit) != 2) then {
|
||||||
|
_windSpeed1 = 0 max _windSpeed1 min 50;
|
||||||
|
_windSpeed2 = 0 max _windSpeed2 min 50;
|
||||||
|
_targetSpeed = 0 max _targetSpeed min 50;
|
||||||
|
_windSpeed1 = _windSpeed1 * 0.44704;
|
||||||
|
_windSpeed2 = _windSpeed2 * 0.44704;
|
||||||
|
_targetSpeed = _targetSpeed * 0.44704;
|
||||||
|
} else {
|
||||||
|
_windSpeed1 = 0 max _windSpeed1 min 25;
|
||||||
|
_windSpeed2 = 0 max _windSpeed2 min 25;
|
||||||
|
_targetSpeed = 0 max _targetSpeed min 25;
|
||||||
|
};
|
||||||
|
if (GVAR(currentUnit) == 1) then {
|
||||||
|
_targetRange = 25 max _targetRange min 4000;
|
||||||
|
_targetRange = _targetRange * 0.9144;
|
||||||
|
} else {
|
||||||
|
_targetRange = 25 max _targetRange min 3700;
|
||||||
|
};
|
||||||
GVAR(latitude) set [GVAR(currentTarget), -90 max Round(parseNumber(ctrlText 140000)) min 90];
|
GVAR(latitude) set [GVAR(currentTarget), -90 max Round(parseNumber(ctrlText 140000)) min 90];
|
||||||
GVAR(directionOfFire) set [GVAR(currentTarget), 0 max abs(Round(parseNumber(ctrlText 140010))) min 359];
|
GVAR(directionOfFire) set [GVAR(currentTarget), 0 max abs(Round(parseNumber(ctrlText 140010))) min 359];
|
||||||
GVAR(windSpeed1) set [GVAR(currentTarget), 0 max abs(parseNumber(ctrlText 140020)) min 50];
|
GVAR(windSpeed1) set [GVAR(currentTarget), _windSpeed1];
|
||||||
GVAR(windSpeed2) set [GVAR(currentTarget), 0 max abs(parseNumber(ctrlText 140021)) min 50];
|
GVAR(windSpeed2) set [GVAR(currentTarget), _windSpeed2];
|
||||||
GVAR(windDirection) set [GVAR(currentTarget), 1 max Round(parseNumber(ctrlText 140030)) min 12];
|
GVAR(windDirection) set [GVAR(currentTarget), 1 max Round(parseNumber(ctrlText 140030)) min 12];
|
||||||
|
GVAR(targetSpeed) set [GVAR(currentTarget), _targetSpeed];
|
||||||
|
GVAR(targetRange) set [GVAR(currentTarget), _targetRange];
|
||||||
_inclinationAngleCosine = 0.5 max parseNumber(ctrlText 140041) min 1;
|
_inclinationAngleCosine = 0.5 max parseNumber(ctrlText 140041) min 1;
|
||||||
_inclinationAngleDegree = -60 max round(parseNumber(ctrlText 140040)) min 60;
|
_inclinationAngleDegree = -60 max round(parseNumber(ctrlText 140040)) min 60;
|
||||||
if (_inclinationAngleDegree != GVAR(inclinationAngle) select GVAR(currentTarget)) then {
|
if (_inclinationAngleDegree != GVAR(inclinationAngle) select GVAR(currentTarget)) then {
|
||||||
@ -40,58 +116,62 @@ if (_inclinationAngleDegree != GVAR(inclinationAngle) select GVAR(currentTarget)
|
|||||||
GVAR(inclinationAngle) set [GVAR(currentTarget), round(acos(_inclinationAngleCosine))];
|
GVAR(inclinationAngle) set [GVAR(currentTarget), round(acos(_inclinationAngleCosine))];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
GVAR(targetSpeed) set [GVAR(currentTarget), 0 max abs(parseNumber(ctrlText 140050)) min 50];
|
|
||||||
if ((ctrlText 140051) == ">") then {
|
if ((ctrlText 140051) == ">") then {
|
||||||
GVAR(targetSpeedDirection) set [GVAR(currentTarget), +1];
|
GVAR(targetSpeedDirection) set [GVAR(currentTarget), +1];
|
||||||
} else {
|
} else {
|
||||||
GVAR(targetSpeedDirection) set [GVAR(currentTarget), -1];
|
GVAR(targetSpeedDirection) set [GVAR(currentTarget), -1];
|
||||||
};
|
};
|
||||||
GVAR(targetRange) set [GVAR(currentTarget), 0 max abs(parseNumber(ctrlText 140060)) min 4000];
|
|
||||||
if (GVAR(currentUnit) != 2) then {
|
|
||||||
GVAR(windSpeed1) set [GVAR(currentTarget), (GVAR(windSpeed1) select GVAR(currentTarget)) * 0.44704];
|
|
||||||
GVAR(windSpeed2) set [GVAR(currentTarget), (GVAR(windSpeed2) select GVAR(currentTarget)) * 0.44704];
|
|
||||||
GVAR(targetSpeed) set [GVAR(currentTarget), (GVAR(targetSpeed) select GVAR(currentTarget)) * 0.44704];
|
|
||||||
};
|
|
||||||
if (GVAR(currentUnit) == 1) then {
|
|
||||||
GVAR(targetRange) set [GVAR(currentTarget), (GVAR(targetRange) select GVAR(currentTarget)) * 0.9144];
|
|
||||||
};
|
|
||||||
|
|
||||||
private ["_boreHeight", "_bulletMass", "_bulletDiameter", "_airFriction", "_rifleTwist", "_muzzleVelocity", "_zeroRange"];
|
private ["_boreHeight", "_bulletMass", "_bulletDiameter", "_airFriction", "_rifleTwist", "_muzzleVelocity", "_zeroRange"];
|
||||||
_boreHeight = parseNumber(ctrlText 120000);
|
_boreHeight = parseNumber(ctrlText 120000);
|
||||||
_bulletMass = parseNumber(ctrlText 120010);
|
_bulletMass = parseNumber(ctrlText 120010);
|
||||||
_bulletDiameter = parseNumber(ctrlText 120020) * 10;
|
_bulletDiameter = parseNumber(ctrlText 120020);
|
||||||
|
_airFriction = parseNumber(ctrlText 120030);
|
||||||
if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then {
|
if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then {
|
||||||
_airFriction = 0.1 max parseNumber(ctrlText 120030) min 2;
|
_airFriction = 0.1 max _airFriction min 2;
|
||||||
} else {
|
} else {
|
||||||
_airFriction = parseNumber(ctrlText 120030) / -1000;
|
_airFriction = _airFriction / -1000;
|
||||||
};
|
};
|
||||||
_rifleTwist = parseNumber(ctrlText 120040);
|
_rifleTwist = parseNumber(ctrlText 120040);
|
||||||
_muzzleVelocity = parseNumber(ctrlText 120050);
|
_muzzleVelocity = parseNumber(ctrlText 120050);
|
||||||
_zeroRange = parseNumber (ctrlText 120060);
|
_zeroRange = parseNumber(ctrlText 120060);
|
||||||
if (GVAR(currentUnit) != 2) then {
|
if (GVAR(currentUnit) != 2) then {
|
||||||
|
_boreHeight = 0.1 max _boreHeight min 5;
|
||||||
|
_bulletMass = 1 max _bulletMass min 1500;
|
||||||
|
_bulletDiameter = 0.1 max _bulletDiameter min 1.0;
|
||||||
|
_rifleTwist = 1 max _rifleTwist min 36;
|
||||||
|
_muzzleVelocity = 300 max _muzzleVelocity min 4500;
|
||||||
_boreHeight = _boreHeight * 2.54;
|
_boreHeight = _boreHeight * 2.54;
|
||||||
_bulletMass = _bulletMass * 0.06479891;
|
_bulletMass = _bulletMass * 0.06479891;
|
||||||
_bulletDiameter = _bulletDiameter * 2.54;
|
_bulletDiameter = _bulletDiameter * 2.54;
|
||||||
_rifleTwist = _rifleTwist * 2.54;
|
_rifleTwist = _rifleTwist * 2.54;
|
||||||
_muzzleVelocity = _muzzleVelocity / 3.2808399;
|
_muzzleVelocity = _muzzleVelocity * 0.3048;
|
||||||
|
} else {
|
||||||
|
_boreHeight = 0.1 max _boreHeight min 10;
|
||||||
|
_bulletMass = 1 max _bulletMass min 100;
|
||||||
|
_bulletDiameter = 0.1 max _bulletDiameter min 2.5;
|
||||||
|
_rifleTwist = 1 max _rifleTwist min 75;
|
||||||
|
_muzzleVelocity = 100 max _muzzleVelocity min 1400;
|
||||||
};
|
};
|
||||||
|
_zeroRange = 25 max _zeroRange min 1000;
|
||||||
if (GVAR(currentUnit) == 1) then {
|
if (GVAR(currentUnit) == 1) then {
|
||||||
_zeroRange = _zeroRange / 1.0936133;
|
_zeroRange = _zeroRange * 0.9144;
|
||||||
};
|
};
|
||||||
_boreHeight = 0.1 max _boreHeight min 10;
|
|
||||||
_bulletMass = 1 max _bulletMass min 100;
|
|
||||||
_bulletDiameter = 1 max _bulletDiameter min 25;
|
|
||||||
_muzzleVelocity = 100 max _muzzleVelocity min 1400;
|
|
||||||
_zeroRange = 0 max _zeroRange min 1000;
|
|
||||||
GVAR(workingMemory) set [5, _boreHeight];
|
GVAR(workingMemory) set [5, _boreHeight];
|
||||||
GVAR(workingMemory) set [12, _bulletMass];
|
GVAR(workingMemory) set [12, _bulletMass];
|
||||||
GVAR(workingMemory) set [13, _bulletDiameter];
|
GVAR(workingMemory) set [13, _bulletDiameter * 10];
|
||||||
GVAR(workingMemory) set [14, _rifleTwist];
|
GVAR(workingMemory) set [14, _rifleTwist];
|
||||||
if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then {
|
if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then {
|
||||||
|
if (_airFriction != GVAR(workingMemory) select 15) then {
|
||||||
|
(_airFriction - (GVAR(workingMemory) select 15)) call FUNC(shift_c1_ballistic_coefficient_data);
|
||||||
|
};
|
||||||
GVAR(workingMemory) set [15, _airFriction];
|
GVAR(workingMemory) set [15, _airFriction];
|
||||||
} else {
|
} else {
|
||||||
GVAR(workingMemory) set [4, _airFriction];
|
GVAR(workingMemory) set [4, _airFriction];
|
||||||
};
|
};
|
||||||
|
if (_muzzleVelocity != GVAR(workingMemory) select 1) then {
|
||||||
|
(_muzzleVelocity - (GVAR(workingMemory) select 1)) call FUNC(shift_muzzle_velocity_data);
|
||||||
|
};
|
||||||
GVAR(workingMemory) set [1, _muzzleVelocity];
|
GVAR(workingMemory) set [1, _muzzleVelocity];
|
||||||
GVAR(workingMemory) set [2, _zeroRange];
|
GVAR(workingMemory) set [2, _zeroRange];
|
||||||
|
|
||||||
@ -101,5 +181,7 @@ GVAR(workingMemory) set [2, _zeroRange];
|
|||||||
[] call FUNC(update_atmo_env_data);
|
[] call FUNC(update_atmo_env_data);
|
||||||
[] call FUNC(update_target);
|
[] call FUNC(update_target);
|
||||||
[] call FUNC(update_target_data);
|
[] call FUNC(update_target_data);
|
||||||
|
[] call FUNC(update_muzzle_velocity_data);
|
||||||
|
[] call FUNC(update_c1_ballistic_coefficient_data);
|
||||||
|
|
||||||
[] call FUNC(store_user_data);
|
[] call FUNC(store_user_data);
|
||||||
|
@ -0,0 +1,123 @@
|
|||||||
|
/*
|
||||||
|
* Author: Ruthberg
|
||||||
|
* Reads gun list entries from the config and appends them to the gun list
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* call ace_atragmx_fnc_read_gun_list_entries_from_config
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
private _validate_preset = {
|
||||||
|
private _valid = true;
|
||||||
|
if (count _this != 20) then {
|
||||||
|
private _errorMsg = format ["Invalid preset array size: %1", count _this];
|
||||||
|
ERROR(_errorMsg);
|
||||||
|
_valid = false;
|
||||||
|
};
|
||||||
|
if (_this select 0 == "") then {
|
||||||
|
ERROR("Invalid gun profile name");
|
||||||
|
_valid = false;
|
||||||
|
};
|
||||||
|
if (count (_this select 0) > 14) then {
|
||||||
|
WARNING("Gun profile name too long (max. allowed 14 characters)");
|
||||||
|
};
|
||||||
|
if (_this select 1 < 0 || _this select 1 > 1400) then {
|
||||||
|
private _errorMsg = format ["Invalid muzzle velocity: %1", _this select 1];
|
||||||
|
ERROR(_errorMsg);
|
||||||
|
_valid = false;
|
||||||
|
};
|
||||||
|
if (_this select 2 < 25 || _this select 2 > 1000) then {
|
||||||
|
private _errorMsg = format ["Invalid zero range: %1", _this select 2];
|
||||||
|
ERROR(_errorMsg);
|
||||||
|
_valid = false;
|
||||||
|
};
|
||||||
|
if (_this select 4 > 0) then {
|
||||||
|
private _errorMsg = format ["Invalid airFriction value: %1", _this select 4];
|
||||||
|
ERROR(_errorMsg);
|
||||||
|
_valid = false;
|
||||||
|
};
|
||||||
|
if (_this select 5 < 0.1 || _this select 5 > 10) then {
|
||||||
|
private _errorMsg = format ["Invalid bore height value: %1", _this select 4];
|
||||||
|
ERROR(_errorMsg);
|
||||||
|
_valid = false;
|
||||||
|
};
|
||||||
|
if (_this select 12 < 1 || _this select 12 > 100) then {
|
||||||
|
private _errorMsg = format ["Invalid bullet weight: %1", _this select 12];
|
||||||
|
ERROR(_errorMsg);
|
||||||
|
_valid = false;
|
||||||
|
};
|
||||||
|
if (_this select 13 < 1 || _this select 13 > 25) then {
|
||||||
|
private _errorMsg = format ["Invalid bullet diameter: %1", _this select 13];
|
||||||
|
ERROR(_errorMsg);
|
||||||
|
_valid = false;
|
||||||
|
};
|
||||||
|
if (_this select 14 < 1 || _this select 14 > 75) then {
|
||||||
|
private _errorMsg = format ["Invalid rifle twist: %1", _this select 14];
|
||||||
|
ERROR(_errorMsg);
|
||||||
|
_valid = false;
|
||||||
|
};
|
||||||
|
if (_this select 15 < 0.1 || _this select 15 > 2.0) then {
|
||||||
|
private _errorMsg = format ["Invalid ballistic coefficient: %1", _this select 15];
|
||||||
|
ERROR(_errorMsg);
|
||||||
|
_valid = false;
|
||||||
|
};
|
||||||
|
if (_this select 16 != 1) then {
|
||||||
|
private _errorMsg = format ["Invalid drag model: %1", _this select 16];
|
||||||
|
ERROR(_errorMsg);
|
||||||
|
_valid = false;
|
||||||
|
};
|
||||||
|
if (!((_this select 17) in ["ASM", "ICAO"])) then {
|
||||||
|
private _errorMsg = format ["Invalid atmosphere model: %1", _this select 17];
|
||||||
|
ERROR(_errorMsg);
|
||||||
|
_valid = false;
|
||||||
|
};
|
||||||
|
if (count (_this select 18) != 7) then {
|
||||||
|
private _errorMsg = format ["Invalid muzzle velocity table array size: %1", count (_this select 18)];
|
||||||
|
ERROR(_errorMsg);
|
||||||
|
_valid = false;
|
||||||
|
} else {
|
||||||
|
{
|
||||||
|
if (count _x != 2) exitWith {
|
||||||
|
private _errorMsg = format ["Invalid muzzle velocity table subarray size: %1", count _x];
|
||||||
|
ERROR(_errorMsg);
|
||||||
|
_valid = false;
|
||||||
|
};
|
||||||
|
} forEach (_this select 18);
|
||||||
|
};
|
||||||
|
if (count (_this select 19) != 7) then {
|
||||||
|
private _errorMsg = format ["Invalid drag coefficient table array size: %1", count (_this select 19)];
|
||||||
|
ERROR(_errorMsg);
|
||||||
|
_valid = false;
|
||||||
|
} else {
|
||||||
|
{
|
||||||
|
if (count _x != 2) exitWith {
|
||||||
|
private _errorMsg = format ["Invalid drag coefficient table subarray size: %1", count _x];
|
||||||
|
ERROR(_errorMsg);
|
||||||
|
_valid = false;
|
||||||
|
};
|
||||||
|
} forEach (_this select 19);
|
||||||
|
};
|
||||||
|
_valid
|
||||||
|
};
|
||||||
|
|
||||||
|
{
|
||||||
|
private _preset = _x >> "preset";
|
||||||
|
|
||||||
|
if (isArray(_preset)) then {
|
||||||
|
private _gun = getArray _preset;
|
||||||
|
|
||||||
|
if (_gun call _validate_preset) then {
|
||||||
|
_gun set [0, (_gun select 0) select [0, 14]];
|
||||||
|
_gun set [20, false];
|
||||||
|
GVAR(gunList) = GVAR(gunList) + [_gun];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
} forEach ("true" configClasses (configFile >> "ACE_ATragMX_Presets"));
|
@ -0,0 +1,61 @@
|
|||||||
|
/*
|
||||||
|
* Author: Ruthberg
|
||||||
|
* Recalculates the c1 ballistic coefficient based on the c1 ballistic coefficient vs. distance interpolation input
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* parse input <BOOL>
|
||||||
|
* update display <BOOL>
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* call ace_atragmx_fnc_recalculate_c1_ballistic_coefficient
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
params ["_parseInput", "_updateDisplay"];
|
||||||
|
|
||||||
|
if (_parseInput) then {
|
||||||
|
[] call FUNC(parse_input);
|
||||||
|
};
|
||||||
|
|
||||||
|
private _lookupTable = [];
|
||||||
|
{
|
||||||
|
if ((_x select 1) > 0) then {
|
||||||
|
_lookupTable pushBack _x;
|
||||||
|
};
|
||||||
|
} forEach (GVAR(workingMemory) select 19);
|
||||||
|
|
||||||
|
private _lookupTableSize = count _lookupTable;
|
||||||
|
if (_lookupTableSize < 2) exitWith {};
|
||||||
|
_lookupTable sort true;
|
||||||
|
|
||||||
|
private ["_lowerIndex", "_upperIndex"];
|
||||||
|
for "_index" from 1 to (_lookupTableSize - 1) do {
|
||||||
|
_upperIndex = _index;
|
||||||
|
_lowerIndex = _upperIndex - 1;
|
||||||
|
if (((_lookupTable select _index) select 0) >= (GVAR(targetRange) select GVAR(currentTarget))) exitWith {};
|
||||||
|
};
|
||||||
|
|
||||||
|
private ["_lowerDistance", "_upperDistance", "_lowerC1", "_upperC1", "_c1"];
|
||||||
|
_lowerDistance = (_lookupTable select _lowerIndex) select 0;
|
||||||
|
_upperDistance = (_lookupTable select _upperIndex) select 0;
|
||||||
|
_lowerC1 = (_lookupTable select _lowerIndex) select 1;
|
||||||
|
_upperC1 = (_lookupTable select _upperIndex) select 1;
|
||||||
|
_c1 = _lowerC1;
|
||||||
|
if (_lowerDistance != _upperDistance) then {
|
||||||
|
private _slope = (_upperC1 - _lowerC1) / (_upperDistance - _lowerDistance);
|
||||||
|
_c1 = _lowerC1 + ((GVAR(targetRange) select GVAR(currentTarget)) - _lowerDistance) * _slope;
|
||||||
|
};
|
||||||
|
_c1 = 0.1 max _c1 min 2.0;
|
||||||
|
|
||||||
|
if (_c1 != GVAR(workingMemory) select 15) then {
|
||||||
|
GVAR(workingMemory) set [15, _c1];
|
||||||
|
if (_updateDisplay) then {
|
||||||
|
call FUNC(update_gun);
|
||||||
|
call FUNC(update_gun_ammo_data);
|
||||||
|
};
|
||||||
|
};
|
61
addons/atragmx/functions/fnc_recalculate_muzzle_velocity.sqf
Normal file
61
addons/atragmx/functions/fnc_recalculate_muzzle_velocity.sqf
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
/*
|
||||||
|
* Author: Ruthberg
|
||||||
|
* Recalculates the muzzle velocity based on the muzzle velocity vs. temperature interpolation input
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* parse input <BOOL>
|
||||||
|
* update display <BOOL>
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* call ace_atragmx_fnc_recalculate_muzzle_velocity
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
params ["_parseInput", "_updateDisplay"];
|
||||||
|
|
||||||
|
if (_parseInput) then {
|
||||||
|
[] call FUNC(parse_input);
|
||||||
|
};
|
||||||
|
|
||||||
|
private _lookupTable = [];
|
||||||
|
{
|
||||||
|
if ((_x select 1) > 0) then {
|
||||||
|
_lookupTable pushBack _x;
|
||||||
|
};
|
||||||
|
} forEach (GVAR(workingMemory) select 18);
|
||||||
|
|
||||||
|
private _lookupTableSize = count _lookupTable;
|
||||||
|
if (_lookupTableSize < 2) exitWith {};
|
||||||
|
_lookupTable sort true;
|
||||||
|
|
||||||
|
private ["_lowerIndex", "_upperIndex"];
|
||||||
|
for "_index" from 1 to (_lookupTableSize - 1) do {
|
||||||
|
_upperIndex = _index;
|
||||||
|
_lowerIndex = _upperIndex - 1;
|
||||||
|
if (((_lookupTable select _index) select 0) >= GVAR(temperature)) exitWith {};
|
||||||
|
};
|
||||||
|
|
||||||
|
private ["_lowerTemperature", "_upperTemperature", "_lowerMuzzleVelocity", "_upperMuzzleVelocity", "_muzzleVelocity"];
|
||||||
|
_lowerTemperature = (_lookupTable select _lowerIndex) select 0;
|
||||||
|
_upperTemperature = (_lookupTable select _upperIndex) select 0;
|
||||||
|
_lowerMuzzleVelocity = (_lookupTable select _lowerIndex) select 1;
|
||||||
|
_upperMuzzleVelocity = (_lookupTable select _upperIndex) select 1;
|
||||||
|
_muzzleVelocity = _lowerMuzzleVelocity;
|
||||||
|
if (_lowerTemperature != _upperTemperature) then {
|
||||||
|
private _slope = (_upperMuzzleVelocity - _lowerMuzzleVelocity) / (_upperTemperature - _lowerTemperature);
|
||||||
|
_muzzleVelocity = _lowerMuzzleVelocity + (GVAR(temperature) - _lowerTemperature) * _slope;
|
||||||
|
};
|
||||||
|
_muzzleVelocity = 100 max _muzzleVelocity min 1400;
|
||||||
|
|
||||||
|
if (_muzzleVelocity != GVAR(workingMemory) select 1) then {
|
||||||
|
GVAR(workingMemory) set [1, _muzzleVelocity];
|
||||||
|
if (_updateDisplay) then {
|
||||||
|
call FUNC(update_gun);
|
||||||
|
call FUNC(update_gun_ammo_data);
|
||||||
|
};
|
||||||
|
};
|
33
addons/atragmx/functions/fnc_restore_truing_drop.sqf
Normal file
33
addons/atragmx/functions/fnc_restore_truing_drop.sqf
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
/*
|
||||||
|
* Author: Ruthberg
|
||||||
|
* Restores the truing drop defaults
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* update display <BOOL>
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* call ace_atragmx_fnc_restore_truing_drop
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
private _updateDisplay = _this;
|
||||||
|
|
||||||
|
GVAR(truingDropMode) = 0;
|
||||||
|
GVAR(truingDropRangeData) = [0, 0];
|
||||||
|
GVAR(truingDropDropData) = [0, 0, 0];
|
||||||
|
GVAR(truingDropReferenceDropData) = [0, 0, 0];
|
||||||
|
GVAR(truingDropC1) = 0;
|
||||||
|
GVAR(truingDropMuzzleVelocity) = 0;
|
||||||
|
|
||||||
|
// Resets input fields
|
||||||
|
call FUNC(update_truing_drop_selection);
|
||||||
|
|
||||||
|
if (_updateDisplay) then {
|
||||||
|
// Repopulates input fields
|
||||||
|
false call FUNC(calculate_truing_drop);
|
||||||
|
};
|
@ -26,6 +26,7 @@ GVAR(barometricPressure) = 340 max (profileNamespace getVariable ["ACE_ATragMX_b
|
|||||||
GVAR(relativeHumidity) = 0 max (profileNamespace getVariable ["ACE_ATragMX_relativeHumidity", 0.5]) min 1;
|
GVAR(relativeHumidity) = 0 max (profileNamespace getVariable ["ACE_ATragMX_relativeHumidity", 0.5]) min 1;
|
||||||
|
|
||||||
GVAR(showWind2) = profileNamespace getVariable ["ACE_ATragMX_showWind2", false];
|
GVAR(showWind2) = profileNamespace getVariable ["ACE_ATragMX_showWind2", false];
|
||||||
|
GVAR(showCoriolis) = profileNamespace getVariable ["ACE_ATragMX_showCoriolis", true];
|
||||||
GVAR(latitude) = profileNamespace getVariable ["ACE_ATragMX_latitude", [38, 38, 38, 38]];
|
GVAR(latitude) = profileNamespace getVariable ["ACE_ATragMX_latitude", [38, 38, 38, 38]];
|
||||||
GVAR(directionOfFire) = profileNamespace getVariable ["ACE_ATragMX_directionOfFire", [0, 0, 0, 0]];
|
GVAR(directionOfFire) = profileNamespace getVariable ["ACE_ATragMX_directionOfFire", [0, 0, 0, 0]];
|
||||||
GVAR(windSpeed1) = profileNamespace getVariable ["ACE_ATragMX_windSpeed1", [0, 0, 0, 0]];
|
GVAR(windSpeed1) = profileNamespace getVariable ["ACE_ATragMX_windSpeed1", [0, 0, 0, 0]];
|
||||||
|
@ -25,4 +25,4 @@ lbClear 6000;
|
|||||||
lbAdd [6000, _x select 0];
|
lbAdd [6000, _x select 0];
|
||||||
} forEach GVAR(gunList);
|
} forEach GVAR(gunList);
|
||||||
|
|
||||||
profileNamespace setVariable ["ACE_ATragMX_gunList", GVAR(gunList)];
|
call FUNC(store_gun_list);
|
||||||
|
@ -0,0 +1,25 @@
|
|||||||
|
/*
|
||||||
|
* Author: Ruthberg
|
||||||
|
* Shifts all c1 ballistic coefficient entries in the c1 ballistic coefficient vs. distance interpolation table
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* ballistic coefficient - <NUMBER>
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* 10 call ace_atragmx_fnc_shift_c1_ballistic_coefficient_data
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
if (_this == 0) exitWith {};
|
||||||
|
|
||||||
|
{
|
||||||
|
private _c1 = _x select 1;
|
||||||
|
if (_c1 > 0) then {
|
||||||
|
((GVAR(workingMemory) select 19) select _forEachIndex) set [1, 0.1 max (_c1 + _this) min 2];
|
||||||
|
}
|
||||||
|
} forEach (GVAR(workingMemory) select 19);
|
25
addons/atragmx/functions/fnc_shift_muzzle_velocity_data.sqf
Normal file
25
addons/atragmx/functions/fnc_shift_muzzle_velocity_data.sqf
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
/*
|
||||||
|
* Author: Ruthberg
|
||||||
|
* Shifts all muzzle velocity entries in the muzzle velocity vs. temperature interpolation table
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* velocity - <NUMBER>
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* 10 call ace_atragmx_fnc_shift_muzzle_velocity_data
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
if (_this == 0) exitWith {};
|
||||||
|
|
||||||
|
{
|
||||||
|
private _velocity = _x select 1;
|
||||||
|
if (_velocity > 0) then {
|
||||||
|
((GVAR(workingMemory) select 18) select _forEachIndex) set [1, 0 max (_velocity + _this) min 1400];
|
||||||
|
}
|
||||||
|
} forEach (GVAR(workingMemory) select 18);
|
@ -0,0 +1,30 @@
|
|||||||
|
/*
|
||||||
|
* Author: Ruthberg
|
||||||
|
* Shows/Hides the c1 ballistic coefficient data controls
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* visible - <BOOL>
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* false call ace_atragmx_fnc_show_c1_ballistic_coefficient_data
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
GVAR(showC1BallisticCoefficientData) = _this;
|
||||||
|
|
||||||
|
{ctrlShow [_x, _this]} forEach [17000, 17001, 170021, 170022, 170023, 170024, 170025, 170026, 170027, 170031, 170032, 170033, 170034, 170035, 170036, 170037, 17004, 17005, 17006, 17007, 17008, 17009];
|
||||||
|
|
||||||
|
if (_this) then {
|
||||||
|
if (GVAR(currentUnit) != 1) then {
|
||||||
|
ctrlSetText [17000, "Meters"];
|
||||||
|
} else {
|
||||||
|
ctrlSetText [17000, "Yards"];
|
||||||
|
};
|
||||||
|
ctrlSetFocus ((uiNamespace getVariable "ATragMX_Display") displayCtrl 170031);
|
||||||
|
[] call FUNC(update_c1_ballistic_coefficient_data);
|
||||||
|
};
|
@ -21,6 +21,18 @@ GVAR(showMainPage) = _this;
|
|||||||
500, 501, 502, 503, 600, 601, 602, 603, 1000, 1001, 1002, 1003, 1004, 2000, 2001, 3000, 4000, 4001, 4002, 4003, 4004, 4005, 4006, 4007, 4008];
|
500, 501, 502, 503, 600, 601, 602, 603, 1000, 1001, 1002, 1003, 1004, 2000, 2001, 3000, 4000, 4001, 4002, 4003, 4004, 4005, 4006, 4007, 4008];
|
||||||
|
|
||||||
if (_this) then {
|
if (_this) then {
|
||||||
|
if (GVAR(showCoriolis)) then {
|
||||||
|
ctrlSetText [4003, "Hold"];
|
||||||
|
ctrlSetText [4004, "Cor"];
|
||||||
|
ctrlSetText [4005, "Spin"];
|
||||||
|
{ctrlShow [_x, false]} forEach [402, 4006, 4007];
|
||||||
|
} else {
|
||||||
|
ctrlSetText [4003, "Abs"];
|
||||||
|
ctrlSetText [4004, "Rel"];
|
||||||
|
ctrlSetText [4005, "Cur"];
|
||||||
|
private _visible = (GVAR(currentScopeUnit) == 3);
|
||||||
|
{ctrlShow [_x, _visible]} forEach [401, 402, 411, 412, 4004, 4005, 4006, 4007];
|
||||||
|
};
|
||||||
if (GVAR(atmosphereModeTBH)) then {
|
if (GVAR(atmosphereModeTBH)) then {
|
||||||
{ctrlShow [_x, false]} forEach [23, 230];
|
{ctrlShow [_x, false]} forEach [23, 230];
|
||||||
} else {
|
} else {
|
||||||
|
25
addons/atragmx/functions/fnc_show_muzzle_velocity_data.sqf
Normal file
25
addons/atragmx/functions/fnc_show_muzzle_velocity_data.sqf
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
/*
|
||||||
|
* Author: Ruthberg
|
||||||
|
* Shows/Hides the muzzle velocity data controls
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* visible - <BOOL>
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* false call ace_atragmx_fnc_show_muzzle_velocity_data
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
GVAR(showMuzzleVelocityData) = _this;
|
||||||
|
|
||||||
|
{ctrlShow [_x, _this]} forEach [16000, 16001, 160021, 160022, 160023, 160024, 160025, 160026, 160027, 160031, 160032, 160033, 160034, 160035, 160036, 160037, 16004, 16005, 16006, 16007, 16008, 16009];
|
||||||
|
|
||||||
|
if (_this) then {
|
||||||
|
ctrlSetFocus ((uiNamespace getVariable "ATragMX_Display") displayCtrl 160031);
|
||||||
|
[] call FUNC(update_muzzle_velocity_data);
|
||||||
|
};
|
43
addons/atragmx/functions/fnc_show_truing_drop.sqf
Normal file
43
addons/atragmx/functions/fnc_show_truing_drop.sqf
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
/*
|
||||||
|
* Author: Ruthberg
|
||||||
|
* Shows/Hides the truing drop controls
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* visible - <BOOL>
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* call ace_atragmx_fnc_show_truing_drop
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
GVAR(showTruingDrop) = _this;
|
||||||
|
|
||||||
|
{ctrlShow [_x, _this]} forEach [18000, 18001, 18002, 18003, 18004, 18005, 18006, 18007, 18008, 18009, 18010, 18011, 18012, 18013, 18014, 18015, 18016, 18017, 18018, 18019, 18020];
|
||||||
|
|
||||||
|
if (_this) then {
|
||||||
|
if (GVAR(currentUnit) == 2) then {
|
||||||
|
ctrlSetText [18000, format["ZR=%1meters", Round(GVAR(workingMemory) select 2)]];
|
||||||
|
} else {
|
||||||
|
ctrlSetText [18000, format["ZR=%1yards", Round((GVAR(workingMemory) select 2) * 1.0936133)]];
|
||||||
|
};
|
||||||
|
private _dropUnit = GVAR(currentScopeUnit);
|
||||||
|
if (_dropUnit == 3) then {
|
||||||
|
switch (GVAR(currentScopeClickUnit)) do {
|
||||||
|
case 0: { _dropUnit = 1; };
|
||||||
|
case 1: { _dropUnit = 2; };
|
||||||
|
case 2: { _dropUnit = 0; };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
switch (_dropUnit) do {
|
||||||
|
case 0: { ctrlSetText [18001, "Drop=mils"]; };
|
||||||
|
case 1: { ctrlSetText [18001, "Drop=tmoa"]; };
|
||||||
|
case 2: { ctrlSetText [18001, "Drop=smoa"]; };
|
||||||
|
};
|
||||||
|
false call FUNC(calculate_truing_drop);
|
||||||
|
call FUNC(update_truing_drop_selection);
|
||||||
|
};
|
25
addons/atragmx/functions/fnc_store_gun_list.sqf
Normal file
25
addons/atragmx/functions/fnc_store_gun_list.sqf
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
/*
|
||||||
|
* Author: Ruthberg
|
||||||
|
* Saves the persistent gun list entries into profileNamespace
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* call ace_atragmx_fnc_store_user_data
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
private _gunList = [];
|
||||||
|
{
|
||||||
|
if (_x select 20) then {
|
||||||
|
_gunList pushBack _x;
|
||||||
|
};
|
||||||
|
} forEach GVAR(gunList);
|
||||||
|
|
||||||
|
profileNamespace setVariable ["ACE_ATragMX_gunList", _gunList];
|
@ -28,6 +28,7 @@ profileNamespace setVariable ["ACE_ATragMX_barometricPressure", GVAR(barometricP
|
|||||||
profileNamespace setVariable ["ACE_ATragMX_relativeHumidity", GVAR(relativeHumidity)];
|
profileNamespace setVariable ["ACE_ATragMX_relativeHumidity", GVAR(relativeHumidity)];
|
||||||
|
|
||||||
profileNamespace setVariable ["ACE_ATragMX_showWind2", GVAR(showWind2)];
|
profileNamespace setVariable ["ACE_ATragMX_showWind2", GVAR(showWind2)];
|
||||||
|
profileNamespace setVariable ["ACE_ATragMX_showCoriolis", GVAR(showCoriolis)];
|
||||||
profileNamespace setVariable ["ACE_ATragMX_latitude", GVAR(latitude)];
|
profileNamespace setVariable ["ACE_ATragMX_latitude", GVAR(latitude)];
|
||||||
profileNamespace setVariable ["ACE_ATragMX_directionOfFire", GVAR(directionOfFire)];
|
profileNamespace setVariable ["ACE_ATragMX_directionOfFire", GVAR(directionOfFire)];
|
||||||
profileNamespace setVariable ["ACE_ATragMX_windSpeed1", GVAR(windSpeed1)];
|
profileNamespace setVariable ["ACE_ATragMX_windSpeed1", GVAR(windSpeed1)];
|
||||||
|
@ -20,7 +20,11 @@ if (ctrlVisible 13000) then {
|
|||||||
true call FUNC(show_main_page);
|
true call FUNC(show_main_page);
|
||||||
|
|
||||||
if (_this == 1) then {
|
if (_this == 1) then {
|
||||||
|
GVAR(truingDropDropData) set [0, 0];
|
||||||
|
[true, true] call FUNC(recalculate_muzzle_velocity);
|
||||||
call FUNC(calculate_target_solution);
|
call FUNC(calculate_target_solution);
|
||||||
|
} else {
|
||||||
|
call FUNC(update_atmo_env_data);
|
||||||
};
|
};
|
||||||
} else {
|
} else {
|
||||||
true call FUNC(show_atmo_env_data);
|
true call FUNC(show_atmo_env_data);
|
||||||
|
@ -0,0 +1,33 @@
|
|||||||
|
/*
|
||||||
|
* Author: Ruthberg
|
||||||
|
* Toggles the c1 ballistic coefficient data screen on/off
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* Apply new data? <NUMBER>
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* 1 call ace_atragmx_fnc_toggle_c1_ballistic_coefficient_data
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
if (!(missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false])) exitWith {};
|
||||||
|
|
||||||
|
if (ctrlVisible 17000) then {
|
||||||
|
false call FUNC(show_c1_ballistic_coefficient_data);
|
||||||
|
true call FUNC(show_main_page);
|
||||||
|
|
||||||
|
if (_this == 1) then {
|
||||||
|
[true, true] call FUNC(recalculate_c1_ballistic_coefficient);
|
||||||
|
call FUNC(calculate_target_solution);
|
||||||
|
} else {
|
||||||
|
call FUNC(update_c1_ballistic_coefficient_data);
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
true call FUNC(show_c1_ballistic_coefficient_data);
|
||||||
|
false call FUNC(show_main_page);
|
||||||
|
};
|
19
addons/atragmx/functions/fnc_toggle_coriolis.sqf
Normal file
19
addons/atragmx/functions/fnc_toggle_coriolis.sqf
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
/*
|
||||||
|
* Author: Ruthberg
|
||||||
|
* Toggles the coriolis and spin drift output on/off
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* call ace_atragmx_fnc_toggle_coriolis
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
GVAR(showCoriolis) = !GVAR(showCoriolis);
|
||||||
|
true call FUNC(show_main_page);
|
@ -20,8 +20,11 @@ if (ctrlVisible 12000) then {
|
|||||||
true call FUNC(show_main_page);
|
true call FUNC(show_main_page);
|
||||||
|
|
||||||
if (_this == 1) then {
|
if (_this == 1) then {
|
||||||
|
GVAR(truingDropDropData) set [0, 0];
|
||||||
call FUNC(update_zero_range);
|
call FUNC(update_zero_range);
|
||||||
call FUNC(calculate_target_solution);
|
call FUNC(calculate_target_solution);
|
||||||
|
} else {
|
||||||
|
call FUNC(update_gun_ammo_data);
|
||||||
};
|
};
|
||||||
} else {
|
} else {
|
||||||
true call FUNC(show_gun_ammo_data);
|
true call FUNC(show_gun_ammo_data);
|
||||||
|
33
addons/atragmx/functions/fnc_toggle_muzzle_velocity_data.sqf
Normal file
33
addons/atragmx/functions/fnc_toggle_muzzle_velocity_data.sqf
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
/*
|
||||||
|
* Author: Ruthberg
|
||||||
|
* Toggles the muzzle velocity data screen on/off
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* Apply new data? <NUMBER>
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* 1 call ace_atragmx_fnc_toggle_muzzle_velocity_data
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
if (!(missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false])) exitWith {};
|
||||||
|
|
||||||
|
if (ctrlVisible 16000) then {
|
||||||
|
false call FUNC(show_muzzle_velocity_data);
|
||||||
|
true call FUNC(show_main_page);
|
||||||
|
|
||||||
|
if (_this == 1) then {
|
||||||
|
[true, true] call FUNC(recalculate_muzzle_velocity);
|
||||||
|
call FUNC(calculate_target_solution);
|
||||||
|
} else {
|
||||||
|
call FUNC(update_muzzle_velocity_data);
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
true call FUNC(show_muzzle_velocity_data);
|
||||||
|
false call FUNC(show_main_page);
|
||||||
|
};
|
51
addons/atragmx/functions/fnc_toggle_option_menu.sqf
Normal file
51
addons/atragmx/functions/fnc_toggle_option_menu.sqf
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
/*
|
||||||
|
* Author: Ruthberg
|
||||||
|
* Toggles the option menu on/off
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* open menu item <BOOL>
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* 1 call ace_atragmx_fnc_toggle_option_menu
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
if (ctrlVisible 3001) then {
|
||||||
|
if (_this) then {
|
||||||
|
private _optionID = lbCurSel 3002;
|
||||||
|
if (_optionID > 0) then {
|
||||||
|
ctrlShow [3001, false];
|
||||||
|
ctrlShow [3002, false];
|
||||||
|
[_optionID] call FUNC(evaluate_option_menu_input);
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
ctrlShow [3001, false];
|
||||||
|
ctrlShow [3002, false];
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
lbClear 3002;
|
||||||
|
|
||||||
|
lbAdd [3002, "Accuracy 1st"];
|
||||||
|
lbAdd [3002, "Muz Vel Table"];
|
||||||
|
lbAdd [3002, "Drag Coef Table"];
|
||||||
|
lbAdd [3002, "Target Speed Est"];
|
||||||
|
lbAdd [3002, "Target Range Est"];
|
||||||
|
lbAdd [3002, "Truing Drop"];
|
||||||
|
if (GVAR(showCoriolis)) then {
|
||||||
|
lbAdd [3002, "Show Coriolis *"];
|
||||||
|
} else {
|
||||||
|
lbAdd [3002, "Show Coriolis"];
|
||||||
|
};
|
||||||
|
lbAdd [3002, "Set Clicks"];
|
||||||
|
lbAdd [3002, "Gun Note"];
|
||||||
|
|
||||||
|
lbSetCurSel [3002, 0];
|
||||||
|
|
||||||
|
ctrlShow [3001, true];
|
||||||
|
ctrlShow [3002, true];
|
||||||
|
};
|
@ -21,6 +21,8 @@ if (ctrlVisible 14000) then {
|
|||||||
|
|
||||||
if (_this == 1) then {
|
if (_this == 1) then {
|
||||||
call FUNC(calculate_target_solution);
|
call FUNC(calculate_target_solution);
|
||||||
|
} else {
|
||||||
|
call FUNC(update_target_data);
|
||||||
};
|
};
|
||||||
} else {
|
} else {
|
||||||
true call FUNC(show_target_data);
|
true call FUNC(show_target_data);
|
||||||
|
39
addons/atragmx/functions/fnc_toggle_truing_drop.sqf
Normal file
39
addons/atragmx/functions/fnc_toggle_truing_drop.sqf
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
/*
|
||||||
|
* Author: Ruthberg
|
||||||
|
* Toggles the truing drop screen on/off
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* Apply new data? <NUMBER>
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* 1 call ace_atragmx_fnc_toggle_truing_drop
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
if (!(missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false])) exitWith {};
|
||||||
|
|
||||||
|
if (ctrlVisible 18000) then {
|
||||||
|
false call FUNC(show_truing_drop);
|
||||||
|
true call FUNC(show_main_page);
|
||||||
|
|
||||||
|
if (_this == 1) then {
|
||||||
|
if (GVAR(truingDropMode) == 0) then {
|
||||||
|
[GVAR(temperature), GVAR(truingDropMuzzleVelocity)] call FUNC(insert_muzzle_velocity_data);
|
||||||
|
[false, true] call FUNC(recalculate_muzzle_velocity);
|
||||||
|
} else {
|
||||||
|
[GVAR(truingDropRangeData) select 0, GVAR(truingDropRangeData) select 1, GVAR(truingDropC1)] call FUNC(insert_c1_ballistic_coefficient_data);
|
||||||
|
[false, true] call FUNC(recalculate_c1_ballistic_coefficient);
|
||||||
|
};
|
||||||
|
call FUNC(calculate_target_solution);
|
||||||
|
} else {
|
||||||
|
call FUNC(update_truing_drop_data);
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
false call FUNC(show_main_page);
|
||||||
|
true call FUNC(show_truing_drop);
|
||||||
|
};
|
18
addons/atragmx/functions/fnc_trim_gun_name.sqf
Normal file
18
addons/atragmx/functions/fnc_trim_gun_name.sqf
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Author: Ruthberg
|
||||||
|
* Trims the gun name input field
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* call ace_atragmx_fnc_trim_gun_name
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
ctrlSetText [11001, (ctrlText 11001) select [0, 14]];
|
@ -0,0 +1,43 @@
|
|||||||
|
/*
|
||||||
|
* Author: Ruthberg
|
||||||
|
* Trues the c1 ballistic coefficient
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* call ace_atragmx_fnc_true_c1_ballistic_coefficient
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
private _referenceDrop = GVAR(truingDropDropData) select 0;
|
||||||
|
private _actualDrop = GVAR(truingDropDropData) select 2;
|
||||||
|
|
||||||
|
if (Round(_actualDrop * 10) / 10 == Round(_referenceDrop * 10) / 10) exitWith {};
|
||||||
|
|
||||||
|
private _step = 0.01;
|
||||||
|
if (_actualDrop > _referenceDrop) then {
|
||||||
|
_step = -0.01;
|
||||||
|
};
|
||||||
|
|
||||||
|
private _solutionInput = +GVAR(targetSolutionInput);
|
||||||
|
_solutionInput set [ 8, 200];
|
||||||
|
_solutionInput set [13, GVAR(truingDropRangeData) select 1];
|
||||||
|
private _c1 = _solutionInput select 14;
|
||||||
|
|
||||||
|
{
|
||||||
|
_step = _step * _x;
|
||||||
|
while { _actualDrop * _step < _referenceDrop * _step } do {
|
||||||
|
_c1 = _c1 + _step;
|
||||||
|
_solutionInput set [14, _c1];
|
||||||
|
private _result = _solutionInput call FUNC(calculate_solution);
|
||||||
|
_referenceDrop = (_result select 0);
|
||||||
|
};
|
||||||
|
} forEach [1, -0.1];
|
||||||
|
|
||||||
|
GVAR(truingDropC1) = _c1;
|
43
addons/atragmx/functions/fnc_true_muzzle_velocity.sqf
Normal file
43
addons/atragmx/functions/fnc_true_muzzle_velocity.sqf
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
/*
|
||||||
|
* Author: Ruthberg
|
||||||
|
* Trues the muzzle velocity
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* call ace_atragmx_fnc_true_muzzle_velocity
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
private _referenceDrop = GVAR(truingDropDropData) select 0;
|
||||||
|
private _actualDrop = GVAR(truingDropDropData) select 1;
|
||||||
|
|
||||||
|
if (Round(_actualDrop * 10) / 10 == Round(_referenceDrop * 10) / 10) exitWith {};
|
||||||
|
|
||||||
|
private _step = 10;
|
||||||
|
if (_actualDrop > _referenceDrop) then {
|
||||||
|
_step = -10;
|
||||||
|
};
|
||||||
|
|
||||||
|
private _solutionInput = +GVAR(targetSolutionInput);
|
||||||
|
_solutionInput set [ 8, 200];
|
||||||
|
_solutionInput set [13, GVAR(truingDropRangeData) select 0];
|
||||||
|
private _muzzleVelocity = _solutionInput select 4;
|
||||||
|
|
||||||
|
{
|
||||||
|
_step = _step * _x;
|
||||||
|
while { _actualDrop * _step < _referenceDrop * _step } do {
|
||||||
|
_muzzleVelocity = _muzzleVelocity + _step;
|
||||||
|
_solutionInput set [4, _muzzleVelocity];
|
||||||
|
private _result = _solutionInput call FUNC(calculate_solution);
|
||||||
|
_referenceDrop = (_result select 0);
|
||||||
|
};
|
||||||
|
} forEach [1, -0.1];
|
||||||
|
|
||||||
|
GVAR(truingDropMuzzleVelocity) = _muzzleVelocity;
|
@ -0,0 +1,25 @@
|
|||||||
|
/*
|
||||||
|
* Author: Ruthberg
|
||||||
|
* Updates the c1 ballistic coefficient data fields
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* call ace_atragmx_fnc_update_c1_ballistic_coefficient_data
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
// Distances
|
||||||
|
if (GVAR(currentUnit) != 1) then {
|
||||||
|
{ctrlSetText [_x, Str(Round(((GVAR(workingMemory) select 19) select _forEachIndex) select 0))]} forEach [170021, 170022, 170023, 170024, 170025, 170026, 170027];
|
||||||
|
} else {
|
||||||
|
{ctrlSetText [_x, Str(Round((((GVAR(workingMemory) select 19) select _forEachIndex) select 0) * 1.0936133))]} forEach [170021, 170022, 170023, 170024, 170025, 170026, 170027];
|
||||||
|
};
|
||||||
|
// Ballistic coefficients
|
||||||
|
{ctrlSetText [_x, Str(Round((((GVAR(workingMemory) select 19) select _forEachIndex) select 1) * 1000) / 1000)]} forEach [170031, 170032, 170033, 170034, 170035, 170036, 170037];
|
@ -68,7 +68,7 @@ if (GVAR(currentUnit) == 2) then {
|
|||||||
ctrlSetText [12000, "Bore (inches)"];
|
ctrlSetText [12000, "Bore (inches)"];
|
||||||
ctrlSetText [12001, "Bullet Weight (grains)"];
|
ctrlSetText [12001, "Bullet Weight (grains)"];
|
||||||
ctrlSetText [12002, "Bullet Diam (inches)"];
|
ctrlSetText [12002, "Bullet Diam (inches)"];
|
||||||
ctrlSetText [12004, "Rifle Twist (inches/trn)"];
|
ctrlSetText [12004, "Rifle Twist (in/trn)"];
|
||||||
ctrlSetText [12005, "Muzzle Velocity (feet/sec)"];
|
ctrlSetText [12005, "Muzzle Velocity (feet/sec)"];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
28
addons/atragmx/functions/fnc_update_muzzle_velocity_data.sqf
Normal file
28
addons/atragmx/functions/fnc_update_muzzle_velocity_data.sqf
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
/*
|
||||||
|
* Author: Ruthberg
|
||||||
|
* Updates the muzzle velocity data fields
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* call ace_atragmx_fnc_update_muzzle_velocity_data
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
if (GVAR(currentUnit) == 2) then {
|
||||||
|
// Temperatures
|
||||||
|
{ctrlSetText [_x, Str(Round((((GVAR(workingMemory) select 18) select _forEachIndex) select 0) * 10) / 10)]} forEach [160021, 160022, 160023, 160024, 160025, 160026, 160027];
|
||||||
|
// Muzzle velocities
|
||||||
|
{ctrlSetText [_x, Str(Round(((GVAR(workingMemory) select 18) select _forEachIndex) select 1))]} forEach [160031, 160032, 160033, 160034, 160035, 160036, 160037];
|
||||||
|
} else {
|
||||||
|
// Temperatures
|
||||||
|
{ctrlSetText [_x, Str(Round(((((GVAR(workingMemory) select 18) select _forEachIndex) select 0) * 1.8 + 32) * 10) / 10)]} forEach [160021, 160022, 160023, 160024, 160025, 160026, 160027];
|
||||||
|
// Muzzle velocities
|
||||||
|
{ctrlSetText [_x, Str(Round((((GVAR(workingMemory) select 18) select _forEachIndex) select 1) * 3.2808399))]} forEach [160031, 160032, 160033, 160034, 160035, 160036, 160037];
|
||||||
|
};
|
@ -15,17 +15,28 @@
|
|||||||
*/
|
*/
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
private ["_elevationAbs", "_elevationRel", "_elevationCur", "_windageAbs", "_wind2", "_windageRel", "_windageCur", "_lead", "_clickSize", "_clickNumber", "_clickInterval"];
|
private ["_elevationAbs", "_elevationRel", "_elevationCur", "_windageAbs", "_windageRel", "_windageCur", "_wind2", "_lead", "_clickSize", "_clickNumber", "_clickInterval"];
|
||||||
_elevationAbs = GVAR(elevationOutput) select GVAR(currentTarget);
|
_elevationAbs = GVAR(elevationOutput) select GVAR(currentTarget);
|
||||||
|
_elevationRel = 0;
|
||||||
|
_elevationCur = 0;
|
||||||
_windageAbs = GVAR(windage1Output) select GVAR(currentTarget);
|
_windageAbs = GVAR(windage1Output) select GVAR(currentTarget);
|
||||||
|
_windageRel = 0;
|
||||||
|
_windageCur = 0;
|
||||||
|
|
||||||
_wind2 = GVAR(windage2Output) select GVAR(currentTarget);
|
_wind2 = GVAR(windage2Output) select GVAR(currentTarget);
|
||||||
|
|
||||||
_elevationCur = GVAR(workingMemory) select 10;
|
if (GVAR(showCoriolis)) then {
|
||||||
_windageCur = GVAR(workingMemory) select 11;
|
_elevationRel = GVAR(verticalCoriolisOutput) select GVAR(currentTarget);
|
||||||
|
_windageRel = GVAR(horizontalCoriolisOutput) select GVAR(currentTarget);
|
||||||
|
|
||||||
|
_windageCur = GVAR(spinDriftOutput) select GVAR(currentTarget);
|
||||||
|
} else {
|
||||||
|
_elevationCur = GVAR(workingMemory) select 10;
|
||||||
|
_windageCur = GVAR(workingMemory) select 11;
|
||||||
|
|
||||||
_elevationRel = _elevationAbs - _elevationCur;
|
_elevationRel = _elevationAbs - _elevationCur;
|
||||||
_windageRel = _windageAbs - _windageCur;
|
_windageRel = _windageAbs - _windageCur;
|
||||||
|
};
|
||||||
|
|
||||||
_lead = GVAR(leadOutput) select GVAR(currentTarget);
|
_lead = GVAR(leadOutput) select GVAR(currentTarget);
|
||||||
|
|
||||||
|
77
addons/atragmx/functions/fnc_update_truing_drop_data.sqf
Normal file
77
addons/atragmx/functions/fnc_update_truing_drop_data.sqf
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
/*
|
||||||
|
* Author: Ruthberg
|
||||||
|
* Updates the truing drop data fields
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* call ace_atragmx_fnc_update_truing_drop_data
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
if (GVAR(currentUnit) == 2) then {
|
||||||
|
ctrlSetText [18011, Str(Round(GVAR(truingDropRangeData) select 0))];
|
||||||
|
ctrlSetText [18012, Str(Round(GVAR(truingDropRangeData) select 1))];
|
||||||
|
} else {
|
||||||
|
ctrlSetText [18011, Str(Round((GVAR(truingDropRangeData) select 0) * 1.0936133))];
|
||||||
|
ctrlSetText [18012, Str(Round((GVAR(truingDropRangeData) select 1) * 1.0936133))];
|
||||||
|
};
|
||||||
|
|
||||||
|
if (GVAR(truingDropMode) == 0) then {
|
||||||
|
GVAR(truingDropDropData) set [0, GVAR(truingDropReferenceDropData) select 0];
|
||||||
|
} else {
|
||||||
|
GVAR(truingDropDropData) set [0, GVAR(truingDropReferenceDropData) select 1];
|
||||||
|
};
|
||||||
|
|
||||||
|
private _dropUnit = GVAR(currentScopeUnit);
|
||||||
|
if (_dropUnit == 3) then {
|
||||||
|
switch (GVAR(currentScopeClickUnit)) do {
|
||||||
|
case 0: { _dropUnit = 1; };
|
||||||
|
case 1: { _dropUnit = 2; };
|
||||||
|
case 2: { _dropUnit = 0; };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
private _dropData = +GVAR(truingDropDropData);
|
||||||
|
|
||||||
|
switch (_dropUnit) do {
|
||||||
|
case 0: {
|
||||||
|
_dropData set [0, (_dropData select 0) / 3.38];
|
||||||
|
_dropData set [1, (_dropData select 1) / 3.38];
|
||||||
|
_dropData set [2, (_dropData select 2) / 3.38];
|
||||||
|
};
|
||||||
|
case 2: {
|
||||||
|
_dropData set [0, (_dropData select 0) * 1.047];
|
||||||
|
_dropData set [1, (_dropData select 1) * 1.047];
|
||||||
|
_dropData set [2, (_dropData select 2) * 1.047];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
ctrlSetText [18006, Str(Round((_dropData select 0) * 100) / 100)];
|
||||||
|
ctrlSetText [18013, Str(Round((_dropData select 1) * 100) / 100)];
|
||||||
|
ctrlSetText [18014, Str(Round((_dropData select 2) * 100) / 100)];
|
||||||
|
|
||||||
|
if (GVAR(currentUnit) != 2) then {
|
||||||
|
ctrlSetText [18007, Str(Round((GVAR(workingMemory) select 1) * 3.2808399))];
|
||||||
|
ctrlSetText [18016, Str(Round((GVAR(workingMemory) select 1) * 3.2808399))];
|
||||||
|
if (GVAR(truingDropMuzzleVelocity) > 0) then {
|
||||||
|
ctrlSetText [18016, Str(Round(GVAR(truingDropMuzzleVelocity) * 3.2808399))];
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
ctrlSetText [18007, Str(Round(GVAR(workingMemory) select 1))];
|
||||||
|
ctrlSetText [18016, Str(Round(GVAR(workingMemory) select 1))];
|
||||||
|
if (GVAR(truingDropMuzzleVelocity) > 0) then {
|
||||||
|
ctrlSetText [18016, Str(Round(GVAR(truingDropMuzzleVelocity)))];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
ctrlSetText [18008, Str(Round((GVAR(workingMemory) select 15) * 1000) / 1000)];
|
||||||
|
ctrlSetText [18017, Str(Round((GVAR(workingMemory) select 15) * 1000) / 1000)];
|
||||||
|
if (GVAR(truingDropC1) > 0) then {
|
||||||
|
ctrlSetText [18017, Str(Round(GVAR(truingDropC1) * 1000) / 1000)];
|
||||||
|
};
|
@ -0,0 +1,43 @@
|
|||||||
|
/*
|
||||||
|
* Author: Ruthberg
|
||||||
|
* Updates the truing drop input method
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* call ace_atragmx_fnc_update_truing_drop_selection
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
#define __dsp (uiNamespace getVariable "ATragMX_Display")
|
||||||
|
|
||||||
|
(__dsp displayCtrl 18009) ctrlEnable true;
|
||||||
|
(__dsp displayCtrl 18010) ctrlEnable true;
|
||||||
|
|
||||||
|
if (GVAR(truingDropMode) == 0) then {
|
||||||
|
(__dsp displayCtrl 18009) ctrlEnable false;
|
||||||
|
{
|
||||||
|
(__dsp displayCtrl _x) ctrlEnable true;
|
||||||
|
} forEach [18011, 18013, 18016];
|
||||||
|
{
|
||||||
|
(__dsp displayCtrl _x) ctrlEnable false;
|
||||||
|
} forEach [18012, 18014, 18017];
|
||||||
|
ctrlSetFocus (__dsp displayCtrl 18011);
|
||||||
|
} else {
|
||||||
|
(__dsp displayCtrl 18010) ctrlEnable false;
|
||||||
|
{
|
||||||
|
(__dsp displayCtrl _x) ctrlEnable true;
|
||||||
|
} forEach [18012, 18014, 18017];
|
||||||
|
{
|
||||||
|
(__dsp displayCtrl _x) ctrlEnable false;
|
||||||
|
} forEach [18011, 18013, 18016];
|
||||||
|
ctrlSetFocus (__dsp displayCtrl 18012);
|
||||||
|
};
|
||||||
|
|
||||||
|
[] call FUNC(update_truing_drop_data);
|
@ -27,5 +27,7 @@
|
|||||||
[] call FUNC(update_atmo_env_data);
|
[] call FUNC(update_atmo_env_data);
|
||||||
[] call FUNC(update_target);
|
[] call FUNC(update_target);
|
||||||
[] call FUNC(update_target_data);
|
[] call FUNC(update_target_data);
|
||||||
|
[] call FUNC(update_muzzle_velocity_data);
|
||||||
|
[] call FUNC(update_c1_ballistic_coefficient_data);
|
||||||
|
|
||||||
[] call FUNC(update_result);
|
[] call FUNC(update_result);
|
||||||
|
@ -15,8 +15,7 @@
|
|||||||
*/
|
*/
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
private ["_scopeBaseAngle"];
|
[] call FUNC(parse_input);
|
||||||
_scopeBaseAngle = (GVAR(workingMemory) select 3);
|
|
||||||
|
|
||||||
private ["_bulletMass", "_boreHeight", "_airFriction", "_muzzleVelocity", "_bc", "_dragModel", "_atmosphereModel"];
|
private ["_bulletMass", "_boreHeight", "_airFriction", "_muzzleVelocity", "_bc", "_dragModel", "_atmosphereModel"];
|
||||||
_bulletMass = GVAR(workingMemory) select 12;
|
_bulletMass = GVAR(workingMemory) select 12;
|
||||||
@ -28,23 +27,25 @@ _dragModel = GVAR(workingMemory) select 16;
|
|||||||
_atmosphereModel = GVAR(workingMemory) select 17;
|
_atmosphereModel = GVAR(workingMemory) select 17;
|
||||||
|
|
||||||
private ["_zeroRange"];
|
private ["_zeroRange"];
|
||||||
_zeroRange = Round(parseNumber(ctrlText 120060));
|
_zeroRange = GVAR(workingMemory) select 2;
|
||||||
if (GVAR(currentUnit) == 1) then {
|
|
||||||
_zeroRange = _zeroRange / 1.0936133;
|
|
||||||
};
|
|
||||||
if (_zeroRange < 10) exitWith {
|
|
||||||
GVAR(workingMemory) set [2, _zeroRange];
|
|
||||||
GVAR(workingMemory) set [3, 0];
|
|
||||||
};
|
|
||||||
|
|
||||||
private ["_altitude", "_temperature", "_barometricPressure", "_relativeHumidity"];
|
private ["_altitude", "_temperature", "_barometricPressure", "_relativeHumidity"];
|
||||||
_altitude = GVAR(altitude);
|
_altitude = GVAR(altitude);
|
||||||
_temperature = GVAR(temperature);
|
_temperature = GVAR(temperature);
|
||||||
_barometricPressure = GVAR(barometricPressure);
|
_barometricPressure = GVAR(barometricPressure);
|
||||||
_relativeHumidity = GVAR(relativeHumidity);
|
_relativeHumidity = GVAR(relativeHumidity);
|
||||||
|
if (!GVAR(atmosphereModeTBH)) then {
|
||||||
|
_barometricPressure = 1013.25 * (1 - (0.0065 * _altitude) / (273.15 + _temperature + 0.0065 * _altitude)) ^ 5.255754495;
|
||||||
|
_relativeHumidity = 50;
|
||||||
|
};
|
||||||
|
|
||||||
private ["_result"];
|
private _scopeBaseAngle = if (!(missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false])) then {
|
||||||
_result = [_scopeBaseAngle, _bulletMass, _boreHeight, _airFriction, _muzzleVelocity, _temperature, _barometricPressure, _relativeHumidity, 1000, [0, 0], 0, 0, 0, _zeroRange, _bc, _dragModel, _atmosphereModel, false, 1.5, 0, 0, 0] call FUNC(calculate_solution);
|
private _zeroAngle = "ace_advanced_ballistics" callExtension format ["zeroAngleVanilla:%1:%2:%3:%4", _zeroRange, _muzzleVelocity, _airFriction, _boreHeight];
|
||||||
|
(parseNumber _zeroAngle)
|
||||||
|
} else {
|
||||||
|
private _zeroAngle = "ace_advanced_ballistics" callExtension format ["zeroAngle:%1:%2:%3:%4:%5:%6:%7:%8:%9", _zeroRange, _muzzleVelocity, _boreHeight, _temperature, _barometricPressure, _relativeHumidity, _bc, _dragModel, _atmosphereModel];
|
||||||
|
(parseNumber _zeroAngle)
|
||||||
|
};
|
||||||
|
|
||||||
GVAR(workingMemory) set [2, _zeroRange];
|
GVAR(workingMemory) set [2, _zeroRange];
|
||||||
GVAR(workingMemory) set [3, _scopeBaseAngle + (_result select 0) / 60];
|
GVAR(workingMemory) set [3, _scopeBaseAngle];
|
||||||
|
@ -16,4 +16,4 @@
|
|||||||
|
|
||||||
#include "\z\ace\addons\main\script_macros.hpp"
|
#include "\z\ace\addons\main\script_macros.hpp"
|
||||||
|
|
||||||
#define ATRAGMX_PROFILE_NAMESPACE_VERSION 1.7
|
#define ATRAGMX_PROFILE_NAMESPACE_VERSION 2.0
|
||||||
|
@ -2,6 +2,8 @@
|
|||||||
|
|
||||||
ADDON = false;
|
ADDON = false;
|
||||||
|
|
||||||
|
PREP_RECOMPILE_START;
|
||||||
#include "XEH_PREP.hpp"
|
#include "XEH_PREP.hpp"
|
||||||
|
PREP_RECOMPILE_END;
|
||||||
|
|
||||||
ADDON = true;
|
ADDON = true;
|
||||||
|
@ -2,6 +2,8 @@
|
|||||||
|
|
||||||
ADDON = false;
|
ADDON = false;
|
||||||
|
|
||||||
|
PREP_RECOMPILE_START;
|
||||||
#include "XEH_PREP.hpp"
|
#include "XEH_PREP.hpp"
|
||||||
|
PREP_RECOMPILE_END;
|
||||||
|
|
||||||
ADDON = true;
|
ADDON = true;
|
||||||
|
@ -8,8 +8,6 @@ class CfgAmmo {
|
|||||||
|
|
||||||
class B_556x45_Ball : BulletBase {
|
class B_556x45_Ball : BulletBase {
|
||||||
airFriction=-0.00126466;
|
airFriction=-0.00126466;
|
||||||
hit=8;
|
|
||||||
typicalSpeed=750;
|
|
||||||
tracerScale = 1;
|
tracerScale = 1;
|
||||||
tracerStartTime=0.073; // M856 tracer burns out to 800m
|
tracerStartTime=0.073; // M856 tracer burns out to 800m
|
||||||
tracerEndTime=1.57123; // Time in seconds calculated with ballistics calculator
|
tracerEndTime=1.57123; // Time in seconds calculated with ballistics calculator
|
||||||
@ -26,10 +24,6 @@ class CfgAmmo {
|
|||||||
};
|
};
|
||||||
class ACE_556x45_Ball_Mk262 : B_556x45_Ball {
|
class ACE_556x45_Ball_Mk262 : B_556x45_Ball {
|
||||||
airFriction=-0.00109563;
|
airFriction=-0.00109563;
|
||||||
caliber=0.8;
|
|
||||||
deflecting=18;
|
|
||||||
hit=11;
|
|
||||||
typicalSpeed=836;
|
|
||||||
ACE_caliber=5.69;
|
ACE_caliber=5.69;
|
||||||
ACE_bulletLength=23.012;
|
ACE_bulletLength=23.012;
|
||||||
ACE_bulletMass=4.9896;
|
ACE_bulletMass=4.9896;
|
||||||
@ -43,10 +37,6 @@ class CfgAmmo {
|
|||||||
};
|
};
|
||||||
class ACE_556x45_Ball_Mk318 : B_556x45_Ball {
|
class ACE_556x45_Ball_Mk318 : B_556x45_Ball {
|
||||||
airFriction=-0.00123318;
|
airFriction=-0.00123318;
|
||||||
caliber=0.8;
|
|
||||||
deflecting=18;
|
|
||||||
hit=9;
|
|
||||||
typicalSpeed=886;
|
|
||||||
ACE_caliber=5.69;
|
ACE_caliber=5.69;
|
||||||
ACE_bulletLength=23.012;
|
ACE_bulletLength=23.012;
|
||||||
ACE_bulletMass=4.0176;
|
ACE_bulletMass=4.0176;
|
||||||
@ -61,9 +51,6 @@ class CfgAmmo {
|
|||||||
class ACE_556x45_Ball_M995_AP : B_556x45_Ball {
|
class ACE_556x45_Ball_M995_AP : B_556x45_Ball {
|
||||||
airFriction=-0.00123272;
|
airFriction=-0.00123272;
|
||||||
caliber=1.6;
|
caliber=1.6;
|
||||||
deflecting=18;
|
|
||||||
hit=6;
|
|
||||||
typicalSpeed=869;
|
|
||||||
ACE_caliber=5.69;
|
ACE_caliber=5.69;
|
||||||
ACE_bulletLength=23.012;
|
ACE_bulletLength=23.012;
|
||||||
ACE_bulletMass=4.5359237;
|
ACE_bulletMass=4.5359237;
|
||||||
@ -79,12 +66,8 @@ class CfgAmmo {
|
|||||||
class ACE_B_556x45_Ball_Tracer_Dim: B_556x45_Ball_Tracer_Red {
|
class ACE_B_556x45_Ball_Tracer_Dim: B_556x45_Ball_Tracer_Red {
|
||||||
nvgOnly = 1;
|
nvgOnly = 1;
|
||||||
};
|
};
|
||||||
class ACE_545x39_Ball_7N6M : B_556x45_Ball {
|
class B_545x39_Ball_F : BulletBase {
|
||||||
airFriction=-0.00114744;
|
airFriction=-0.00116278;
|
||||||
caliber=0.6;
|
|
||||||
deflecting=18;
|
|
||||||
hit=7;
|
|
||||||
typicalSpeed=880;
|
|
||||||
ACE_caliber=5.588;
|
ACE_caliber=5.588;
|
||||||
ACE_bulletLength=21.59;
|
ACE_bulletLength=21.59;
|
||||||
ACE_bulletMass=3.42792;
|
ACE_bulletMass=3.42792;
|
||||||
@ -93,35 +76,27 @@ class CfgAmmo {
|
|||||||
ACE_velocityBoundaries[]={};
|
ACE_velocityBoundaries[]={};
|
||||||
ACE_standardAtmosphere="ICAO";
|
ACE_standardAtmosphere="ICAO";
|
||||||
ACE_dragModel=7;
|
ACE_dragModel=7;
|
||||||
ACE_muzzleVelocities[]={780, 880, 920};
|
ACE_muzzleVelocities[]={735, 883, 892};
|
||||||
ACE_barrelLengths[]={254.0, 414.02, 508.0};
|
ACE_barrelLengths[]={206.5, 414.02, 508.0};
|
||||||
};
|
|
||||||
class B_556x45_Ball_Tracer_Green;
|
|
||||||
class ACE_545x39_Ball_7T3M : B_556x45_Ball_Tracer_Green {
|
|
||||||
airFriction=-0.00114744;
|
|
||||||
caliber=0.6;
|
|
||||||
deflecting=18;
|
|
||||||
hit=7;
|
|
||||||
typicalSpeed=883;
|
|
||||||
tracerStartTime=0.073; // 7T3M tracer burns out to 850m
|
|
||||||
tracerEndTime=1.70236; // Time in seconds calculated with ballistics calculator
|
|
||||||
ACE_caliber=5.588;
|
|
||||||
ACE_bulletLength=21.59;
|
|
||||||
ACE_bulletMass=3.22704;
|
|
||||||
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
|
|
||||||
ACE_ballisticCoefficients[]={0.168};
|
|
||||||
ACE_velocityBoundaries[]={};
|
|
||||||
ACE_standardAtmosphere="ICAO";
|
|
||||||
ACE_dragModel=7;
|
|
||||||
ACE_muzzleVelocities[]={785, 883, 925};
|
|
||||||
ACE_barrelLengths[]={254.0, 414.02, 508.0};
|
|
||||||
};
|
};
|
||||||
class B_56x15_dual: BulletBase {
|
class B_56x15_dual: BulletBase {
|
||||||
tracerScale = 0.5;
|
tracerScale = 0.5;
|
||||||
};
|
};
|
||||||
|
class B_580x42_Ball_F: BulletBase {
|
||||||
|
airFriction=-0.00117956;
|
||||||
|
ACE_caliber=5.9944;
|
||||||
|
ACE_bulletLength=24.2;
|
||||||
|
ACE_bulletMass=4.15;
|
||||||
|
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
|
||||||
|
ACE_ballisticCoefficients[]={0.156};
|
||||||
|
ACE_velocityBoundaries[]={};
|
||||||
|
ACE_standardAtmosphere="ICAO";
|
||||||
|
ACE_dragModel=7;
|
||||||
|
ACE_muzzleVelocities[]={790, 930, 950};
|
||||||
|
ACE_barrelLengths[]={369.0, 463.0, 600.0};
|
||||||
|
};
|
||||||
class B_65x39_Caseless : BulletBase {
|
class B_65x39_Caseless : BulletBase {
|
||||||
airFriction=-0.00075308;
|
airFriction=-0.00075308;
|
||||||
typicalSpeed=800;
|
|
||||||
tracerScale = 1.1; //1.0;
|
tracerScale = 1.1; //1.0;
|
||||||
ACE_caliber=6.706;
|
ACE_caliber=6.706;
|
||||||
ACE_bulletLength=32.893;
|
ACE_bulletLength=32.893;
|
||||||
@ -144,7 +119,6 @@ class CfgAmmo {
|
|||||||
};
|
};
|
||||||
class ACE_65x47_Ball_Scenar: B_65x39_Caseless {
|
class ACE_65x47_Ball_Scenar: B_65x39_Caseless {
|
||||||
airFriction=-0.00067037;
|
airFriction=-0.00067037;
|
||||||
typicalSpeed=820 ;
|
|
||||||
caliber=0.9;
|
caliber=0.9;
|
||||||
ACE_caliber=6.706;
|
ACE_caliber=6.706;
|
||||||
ACE_bulletLength=34.646;
|
ACE_bulletLength=34.646;
|
||||||
@ -159,7 +133,6 @@ class CfgAmmo {
|
|||||||
};
|
};
|
||||||
class ACE_65_Creedmor_Ball: B_65x39_Caseless {
|
class ACE_65_Creedmor_Ball: B_65x39_Caseless {
|
||||||
airFriction=-0.00060887;
|
airFriction=-0.00060887;
|
||||||
typicalSpeed=860 ;
|
|
||||||
caliber=1.1;
|
caliber=1.1;
|
||||||
ACE_caliber=6.706;
|
ACE_caliber=6.706;
|
||||||
ACE_bulletLength=36.22;
|
ACE_bulletLength=36.22;
|
||||||
@ -178,8 +151,6 @@ class CfgAmmo {
|
|||||||
};
|
};
|
||||||
class B_762x51_Ball : BulletBase {
|
class B_762x51_Ball : BulletBase {
|
||||||
airFriction=-0.00100957;
|
airFriction=-0.00100957;
|
||||||
typicalSpeed=833;
|
|
||||||
hit=9;
|
|
||||||
tracerScale = 1.2; //0.6;
|
tracerScale = 1.2; //0.6;
|
||||||
tracerStartTime=0.073; // Based on the British L5A1 which burns out to 1000m
|
tracerStartTime=0.073; // Based on the British L5A1 which burns out to 1000m
|
||||||
tracerEndTime=2.15957; // Time in seconds calculated with ballistics calculator
|
tracerEndTime=2.15957; // Time in seconds calculated with ballistics calculator
|
||||||
@ -278,54 +249,6 @@ class CfgAmmo {
|
|||||||
ACE_muzzleVelocities[]={305, 325, 335, 340};
|
ACE_muzzleVelocities[]={305, 325, 335, 340};
|
||||||
ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4};
|
ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4};
|
||||||
};
|
};
|
||||||
class ACE_30_06_M1_Ball : B_762x51_Ball {
|
|
||||||
airFriction=-0.00080900;
|
|
||||||
typicalSpeed=800;
|
|
||||||
caliber=2.0;
|
|
||||||
hit=10;
|
|
||||||
ACE_caliber=7.823;
|
|
||||||
ACE_bulletLength=30.734;
|
|
||||||
ACE_bulletMass=11.2752;
|
|
||||||
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
|
|
||||||
ACE_ballisticCoefficients[]={0.494};
|
|
||||||
ACE_velocityBoundaries[]={};
|
|
||||||
ACE_standardAtmosphere="ASM";
|
|
||||||
ACE_dragModel=1;
|
|
||||||
ACE_muzzleVelocities[]={700, 785, 800, 830, 840};
|
|
||||||
ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4};
|
|
||||||
};
|
|
||||||
class ACE_7_Remington_Magnum_Ball : B_762x51_Ball {
|
|
||||||
airFriction=-0.00056738;
|
|
||||||
typicalSpeed=820;
|
|
||||||
caliber=2.1;
|
|
||||||
hit=8;
|
|
||||||
ACE_caliber=7.214;
|
|
||||||
ACE_bulletLength=38.837;
|
|
||||||
ACE_bulletMass=11.664;
|
|
||||||
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
|
|
||||||
ACE_ballisticCoefficients[]={0.345};
|
|
||||||
ACE_velocityBoundaries[]={};
|
|
||||||
ACE_standardAtmosphere="ICAO";
|
|
||||||
ACE_dragModel=7;
|
|
||||||
ACE_muzzleVelocities[]={720, 780, 812, 822, 830};
|
|
||||||
ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4};
|
|
||||||
};
|
|
||||||
class ACE_243_Winchester_Ball : B_762x51_Ball {
|
|
||||||
airFriction=-0.00067875;
|
|
||||||
typicalSpeed=915;
|
|
||||||
caliber=2.3;
|
|
||||||
hit=6;
|
|
||||||
ACE_caliber=6.172;
|
|
||||||
ACE_bulletLength=32.563;
|
|
||||||
ACE_bulletMass=11.664;
|
|
||||||
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
|
|
||||||
ACE_ballisticCoefficients[]={0.278};
|
|
||||||
ACE_velocityBoundaries[]={};
|
|
||||||
ACE_standardAtmosphere="ICAO";
|
|
||||||
ACE_dragModel=7;
|
|
||||||
ACE_muzzleVelocities[]={830, 875, 900, 915, 920};
|
|
||||||
ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4};
|
|
||||||
};
|
|
||||||
class ACE_762x67_Ball_Mk248_Mod_0 : B_762x51_Ball {
|
class ACE_762x67_Ball_Mk248_Mod_0 : B_762x51_Ball {
|
||||||
airFriction=-0.00070530;
|
airFriction=-0.00070530;
|
||||||
caliber=1.8;
|
caliber=1.8;
|
||||||
@ -376,23 +299,6 @@ class CfgAmmo {
|
|||||||
};
|
};
|
||||||
class B_762x54_Ball: B_762x51_Ball {
|
class B_762x54_Ball: B_762x51_Ball {
|
||||||
airFriction=-0.00100023;
|
airFriction=-0.00100023;
|
||||||
typicalSpeed=820;
|
|
||||||
ACE_caliber=7.925;
|
|
||||||
ACE_bulletLength=28.956;
|
|
||||||
ACE_bulletMass=9.8496;
|
|
||||||
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
|
|
||||||
ACE_ballisticCoefficients[]={0.4};
|
|
||||||
ACE_velocityBoundaries[]={};
|
|
||||||
ACE_standardAtmosphere="ICAO";
|
|
||||||
ACE_dragModel=1;
|
|
||||||
ACE_muzzleVelocities[]={700, 800, 820, 833};
|
|
||||||
ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4};
|
|
||||||
};
|
|
||||||
class ACE_762x54_Ball_7N14 : B_762x51_Ball {
|
|
||||||
airFriction=-0.00100023;
|
|
||||||
caliber=1.5;
|
|
||||||
hit=15;
|
|
||||||
typicalSpeed=820;
|
|
||||||
ACE_caliber=7.925;
|
ACE_caliber=7.925;
|
||||||
ACE_bulletLength=28.956;
|
ACE_bulletLength=28.956;
|
||||||
ACE_bulletMass=9.8496;
|
ACE_bulletMass=9.8496;
|
||||||
@ -407,8 +313,6 @@ class CfgAmmo {
|
|||||||
class B_762x54_Tracer_Green;
|
class B_762x54_Tracer_Green;
|
||||||
class ACE_762x54_Ball_7T2 : B_762x54_Tracer_Green {
|
class ACE_762x54_Ball_7T2 : B_762x54_Tracer_Green {
|
||||||
airFriction=-0.00103989;
|
airFriction=-0.00103989;
|
||||||
caliber=1.5;
|
|
||||||
hit=15;
|
|
||||||
typicalSpeed=800;
|
typicalSpeed=800;
|
||||||
tracerStartTime=0.073; // Based on the 7T2 which burns three seconds
|
tracerStartTime=0.073; // Based on the 7T2 which burns three seconds
|
||||||
tracerEndTime=3;
|
tracerEndTime=3;
|
||||||
@ -423,27 +327,8 @@ class CfgAmmo {
|
|||||||
ACE_muzzleVelocities[]={680, 750, 798, 800};
|
ACE_muzzleVelocities[]={680, 750, 798, 800};
|
||||||
ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4};
|
ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4};
|
||||||
};
|
};
|
||||||
class ACE_762x35_Ball : B_762x51_Ball {
|
class B_762x39_Ball_F : BulletBase {
|
||||||
airFriction=-0.00128942;
|
|
||||||
caliber=1.5;
|
|
||||||
hit=11;
|
|
||||||
typicalSpeed=790;
|
|
||||||
ACE_caliber=7.823;
|
|
||||||
ACE_bulletLength=29.286;
|
|
||||||
ACE_bulletMass=8.1;
|
|
||||||
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
|
|
||||||
ACE_ballisticCoefficients[]={0.349, 0.338, 0.330, 0.310};
|
|
||||||
ACE_velocityBoundaries[]={792, 610, 488};
|
|
||||||
ACE_standardAtmosphere="ICAO";
|
|
||||||
ACE_dragModel=1;
|
|
||||||
ACE_muzzleVelocities[]={620, 655, 675};
|
|
||||||
ACE_barrelLengths[]={228.6, 406.4, 508.0};
|
|
||||||
};
|
|
||||||
class ACE_762x39_Ball : B_762x51_Ball {
|
|
||||||
airFriction=-0.00151621;
|
airFriction=-0.00151621;
|
||||||
hit=12;
|
|
||||||
caliber=1.5;
|
|
||||||
typicalSpeed=716;
|
|
||||||
ACE_caliber=7.823;
|
ACE_caliber=7.823;
|
||||||
ACE_bulletLength=28.956;
|
ACE_bulletLength=28.956;
|
||||||
ACE_bulletMass=7.9704;
|
ACE_bulletMass=7.9704;
|
||||||
@ -455,29 +340,9 @@ class CfgAmmo {
|
|||||||
ACE_muzzleVelocities[]={650, 716, 750};
|
ACE_muzzleVelocities[]={650, 716, 750};
|
||||||
ACE_barrelLengths[]={254.0, 414.02, 508.0};
|
ACE_barrelLengths[]={254.0, 414.02, 508.0};
|
||||||
};
|
};
|
||||||
class ACE_762x39_Ball_57N231P : B_762x54_Tracer_Green {
|
|
||||||
airFriction=-0.00151621;
|
|
||||||
hit=12;
|
|
||||||
caliber=1.5;
|
|
||||||
typicalSpeed=716;
|
|
||||||
tracerStartTime = 0.073; //57N231P tracer burns out to 800m
|
|
||||||
tracerEndTime = 2.082; //Time in seconds calculated with ballistics calculator
|
|
||||||
ACE_caliber=7.823;
|
|
||||||
ACE_bulletLength=28.956;
|
|
||||||
ACE_bulletMass=7.5816;
|
|
||||||
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
|
|
||||||
ACE_ballisticCoefficients[]={0.275};
|
|
||||||
ACE_velocityBoundaries[]={};
|
|
||||||
ACE_standardAtmosphere="ICAO";
|
|
||||||
ACE_dragModel=1;
|
|
||||||
ACE_muzzleVelocities[]={650, 716, 750};
|
|
||||||
ACE_barrelLengths[]={254.0, 414.02, 508.0};
|
|
||||||
};
|
|
||||||
class B_9x21_Ball : BulletBase {
|
class B_9x21_Ball : BulletBase {
|
||||||
airFriction=-0.00226847;
|
airFriction=-0.00208292;
|
||||||
typicalSpeed=390;
|
|
||||||
tracerScale = 0.5;
|
tracerScale = 0.5;
|
||||||
hit=6;
|
|
||||||
ACE_caliber=9.042;
|
ACE_caliber=9.042;
|
||||||
ACE_bulletLength=15.494;
|
ACE_bulletLength=15.494;
|
||||||
ACE_bulletMass=7.452;
|
ACE_bulletMass=7.452;
|
||||||
@ -486,31 +351,14 @@ class CfgAmmo {
|
|||||||
ACE_velocityBoundaries[]={};
|
ACE_velocityBoundaries[]={};
|
||||||
ACE_standardAtmosphere="ICAO";
|
ACE_standardAtmosphere="ICAO";
|
||||||
ACE_dragModel=1;
|
ACE_dragModel=1;
|
||||||
ACE_muzzleVelocities[]={440, 460, 480};
|
ACE_muzzleVelocities[]={380, 390, 420, 435};
|
||||||
ACE_barrelLengths[]={101.6, 127.0, 228.6};
|
ACE_barrelLengths[]={93.5, 101.6, 127.0, 228.6};
|
||||||
};
|
};
|
||||||
class B_9x21_Ball_Tracer_Green: B_9x21_Ball {
|
class B_9x21_Ball_Tracer_Green: B_9x21_Ball {
|
||||||
tracerScale = 0.5;
|
tracerScale = 0.5;
|
||||||
};
|
};
|
||||||
class ACE_9x18_Ball_57N181S : B_9x21_Ball {
|
|
||||||
hit=5;
|
|
||||||
airFriction=-0.00190333;
|
|
||||||
typicalSpeed=298;
|
|
||||||
ACE_caliber=9.271;
|
|
||||||
ACE_bulletLength=15.494;
|
|
||||||
ACE_bulletMass=6.00048;
|
|
||||||
ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
|
|
||||||
ACE_ballisticCoefficients[]={0.125};
|
|
||||||
ACE_velocityBoundaries[]={};
|
|
||||||
ACE_standardAtmosphere="ICAO";
|
|
||||||
ACE_dragModel=1;
|
|
||||||
ACE_muzzleVelocities[]={298, 330, 350};
|
|
||||||
ACE_barrelLengths[]={96.52, 127.0, 228.6};
|
|
||||||
};
|
|
||||||
class ACE_9x19_Ball : B_9x21_Ball {
|
class ACE_9x19_Ball : B_9x21_Ball {
|
||||||
airFriction=-0.0018577;
|
airFriction=-0.0019835;
|
||||||
typicalSpeed=370;
|
|
||||||
hit=6;
|
|
||||||
ACE_caliber=9.017;
|
ACE_caliber=9.017;
|
||||||
ACE_bulletLength=15.494;
|
ACE_bulletLength=15.494;
|
||||||
ACE_bulletMass=8.0352;
|
ACE_bulletMass=8.0352;
|
||||||
@ -522,54 +370,8 @@ class CfgAmmo {
|
|||||||
ACE_muzzleVelocities[]={340, 370, 400};
|
ACE_muzzleVelocities[]={340, 370, 400};
|
||||||
ACE_barrelLengths[]={101.6, 127.0, 228.6};
|
ACE_barrelLengths[]={101.6, 127.0, 228.6};
|
||||||
};
|
};
|
||||||
class ACE_10x25_Ball : B_9x21_Ball {
|
|
||||||
airFriction=-0.00181928;
|
|
||||||
typicalSpeed=425;
|
|
||||||
hit=7;
|
|
||||||
ACE_caliber=12.7;
|
|
||||||
ACE_bulletLength=19.406;
|
|
||||||
ACE_bulletMass=10.692;
|
|
||||||
ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
|
|
||||||
ACE_ballisticCoefficients[]={0.189};
|
|
||||||
ACE_velocityBoundaries[]={};
|
|
||||||
ACE_standardAtmosphere="ICAO";
|
|
||||||
ACE_dragModel=1;
|
|
||||||
ACE_muzzleVelocities[]={360, 400, 430};
|
|
||||||
ACE_barrelLengths[]={101.6, 117.094, 228.6};
|
|
||||||
};
|
|
||||||
class ACE_765x17_Ball: B_9x21_Ball {
|
|
||||||
airFriction=-0.00163356;
|
|
||||||
typicalSpeed=282;
|
|
||||||
hit=7;
|
|
||||||
ACE_caliber=7.938;
|
|
||||||
ACE_bulletLength=15.494;
|
|
||||||
ACE_bulletMass=4.212;
|
|
||||||
ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
|
|
||||||
ACE_ballisticCoefficients[]={0.118};
|
|
||||||
ACE_velocityBoundaries[]={};
|
|
||||||
ACE_standardAtmosphere="ASM";
|
|
||||||
ACE_dragModel=1;
|
|
||||||
ACE_muzzleVelocities[]={282, 300, 320};
|
|
||||||
ACE_barrelLengths[]={101.6, 127.0, 228.6};
|
|
||||||
};
|
|
||||||
class ACE_303_Ball : ACE_762x51_Ball_M118LR {
|
|
||||||
airFriction=-0.0008349;
|
|
||||||
typicalSpeed=761;
|
|
||||||
caliber=2.0;
|
|
||||||
ACE_caliber=7.899;
|
|
||||||
ACE_bulletLength=31.166;
|
|
||||||
ACE_bulletMass=11.2752;
|
|
||||||
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
|
|
||||||
ACE_ballisticCoefficients[]={0.499, 0.493, 0.48};
|
|
||||||
ACE_velocityBoundaries[]={671, 549};
|
|
||||||
ACE_standardAtmosphere="ASM";
|
|
||||||
ACE_dragModel=1;
|
|
||||||
ACE_muzzleVelocities[]={748, 761, 765};
|
|
||||||
ACE_barrelLengths[]={508.0, 609.6, 660.4};
|
|
||||||
};
|
|
||||||
class B_93x64_Ball : BulletBase {
|
class B_93x64_Ball : BulletBase {
|
||||||
airFriction=-0.00108571;
|
airFriction=-0.00108571;
|
||||||
typicalSpeed=880;
|
|
||||||
ACE_caliber=9.296;
|
ACE_caliber=9.296;
|
||||||
ACE_bulletLength=34.29;
|
ACE_bulletLength=34.29;
|
||||||
ACE_bulletMass=14.904;
|
ACE_bulletMass=14.904;
|
||||||
@ -583,39 +385,40 @@ class CfgAmmo {
|
|||||||
};
|
};
|
||||||
class B_408_Ball : BulletBase {
|
class B_408_Ball : BulletBase {
|
||||||
timeToLive=10;
|
timeToLive=10;
|
||||||
airFriction=-0.00038944;
|
airFriction=-0.00044958;
|
||||||
typicalSpeed=910;
|
tracerScale = 1.3;
|
||||||
tracerScale = 1.3; //1.2;
|
|
||||||
ACE_caliber=10.363;
|
ACE_caliber=10.363;
|
||||||
ACE_bulletLength=54.0;
|
ACE_bulletLength=55.1942;
|
||||||
ACE_bulletMass=26.568;
|
ACE_bulletMass=27.1507; // 419 gr
|
||||||
ACE_transonicStabilityCoef=1;
|
ACE_transonicStabilityCoef=1;
|
||||||
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
|
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
|
||||||
ACE_ballisticCoefficients[]={0.97};
|
ACE_ballisticCoefficients[]={0.434};
|
||||||
ACE_velocityBoundaries[]={};
|
ACE_velocityBoundaries[]={};
|
||||||
ACE_standardAtmosphere="ASM";
|
ACE_standardAtmosphere="ICAO";
|
||||||
ACE_dragModel=1;
|
ACE_dragModel=7;
|
||||||
ACE_muzzleVelocities[]={910};
|
ACE_muzzleVelocities[]={867};
|
||||||
ACE_barrelLengths[]={736.6};
|
ACE_barrelLengths[]={736.6};
|
||||||
};
|
};
|
||||||
class ACE_106x83mm_Ball : B_408_Ball {
|
class ACE_408_Ball : BulletBase {
|
||||||
timeToLive=10;
|
timeToLive=10;
|
||||||
airFriction=-0.00052047;
|
airFriction=-0.00063655;
|
||||||
ACE_caliber=10.566;
|
typicalSpeed=1067;
|
||||||
ACE_bulletLength=53.061;
|
tracerScale = 1.3;
|
||||||
ACE_bulletMass=25.7904;
|
ACE_caliber=10.363;
|
||||||
|
ACE_bulletLength=41.4528;
|
||||||
|
ACE_bulletMass=19.7637; // 305 gr
|
||||||
|
ACE_transonicStabilityCoef=1;
|
||||||
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
|
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
|
||||||
ACE_ballisticCoefficients[]={0.72};
|
ACE_ballisticCoefficients[]={0.279};
|
||||||
ACE_velocityBoundaries[]={};
|
ACE_velocityBoundaries[]={};
|
||||||
ACE_standardAtmosphere="ASM";
|
ACE_standardAtmosphere="ICAO";
|
||||||
ACE_dragModel=1;
|
ACE_dragModel=7;
|
||||||
ACE_muzzleVelocities[]={960};
|
ACE_muzzleVelocities[]={1067};
|
||||||
ACE_barrelLengths[]={736.6};
|
ACE_barrelLengths[]={736.6};
|
||||||
};
|
};
|
||||||
class B_338_Ball : BulletBase {
|
class B_338_Ball : BulletBase {
|
||||||
timeToLive=10;
|
timeToLive=10;
|
||||||
airFriction=-0.00059133;
|
airFriction=-0.00059133;
|
||||||
typicalSpeed=915;
|
|
||||||
ACE_caliber=8.585;
|
ACE_caliber=8.585;
|
||||||
ACE_bulletLength=39.573;
|
ACE_bulletLength=39.573;
|
||||||
ACE_bulletMass=16.2;
|
ACE_bulletMass=16.2;
|
||||||
@ -629,7 +432,6 @@ class CfgAmmo {
|
|||||||
};
|
};
|
||||||
class B_338_NM_Ball : BulletBase {
|
class B_338_NM_Ball : BulletBase {
|
||||||
airFriction=-0.00052201;
|
airFriction=-0.00052201;
|
||||||
typicalSpeed=820;
|
|
||||||
ACE_caliber=8.585;
|
ACE_caliber=8.585;
|
||||||
ACE_bulletLength=43.18;
|
ACE_bulletLength=43.18;
|
||||||
ACE_bulletMass=19.44;
|
ACE_bulletMass=19.44;
|
||||||
@ -649,7 +451,7 @@ class CfgAmmo {
|
|||||||
ACE_bulletLength=43.18;
|
ACE_bulletLength=43.18;
|
||||||
ACE_bulletMass=19.44;
|
ACE_bulletMass=19.44;
|
||||||
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
|
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
|
||||||
ACE_ballisticCoefficients[]={0.381};
|
ACE_ballisticCoefficients[]={0.368};
|
||||||
ACE_velocityBoundaries[]={};
|
ACE_velocityBoundaries[]={};
|
||||||
ACE_standardAtmosphere="ICAO";
|
ACE_standardAtmosphere="ICAO";
|
||||||
ACE_dragModel=7;
|
ACE_dragModel=7;
|
||||||
@ -665,19 +467,18 @@ class CfgAmmo {
|
|||||||
ACE_bulletLength=38.989;
|
ACE_bulletLength=38.989;
|
||||||
ACE_bulletMass=16.3941242;
|
ACE_bulletMass=16.3941242;
|
||||||
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
|
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
|
||||||
ACE_ballisticCoefficients[]={0.560};
|
ACE_ballisticCoefficients[]={0.290};
|
||||||
ACE_velocityBoundaries[]={};
|
ACE_velocityBoundaries[]={};
|
||||||
ACE_standardAtmosphere="ICAO";
|
ACE_standardAtmosphere="ICAO";
|
||||||
ACE_dragModel=1;
|
ACE_dragModel=7;
|
||||||
ACE_muzzleVelocities[]={880, 915, 925};
|
ACE_muzzleVelocities[]={880, 895, 900};
|
||||||
ACE_barrelLengths[]={508.0, 660.4, 711.2};
|
ACE_barrelLengths[]={508.0, 685.8, 711.2};
|
||||||
};
|
};
|
||||||
class B_127x33_Ball: BulletBase {
|
class B_127x33_Ball: BulletBase {
|
||||||
tracerScale = 1.3; //1.2;
|
tracerScale = 1.3; //1.2;
|
||||||
};
|
};
|
||||||
class B_127x54_Ball : BulletBase {
|
class B_127x54_Ball : BulletBase {
|
||||||
airFriction=-0.00019268;
|
airFriction=-0.00019268;
|
||||||
typicalSpeed=300;
|
|
||||||
tracerScale = 1.3;//
|
tracerScale = 1.3;//
|
||||||
ACE_caliber=12.954;
|
ACE_caliber=12.954;
|
||||||
ACE_bulletLength=64.516;
|
ACE_bulletLength=64.516;
|
||||||
@ -693,7 +494,6 @@ class CfgAmmo {
|
|||||||
class B_127x99_Ball : BulletBase {
|
class B_127x99_Ball : BulletBase {
|
||||||
timeToLive=10;
|
timeToLive=10;
|
||||||
airFriction=-0.00057503;
|
airFriction=-0.00057503;
|
||||||
typicalSpeed=900;
|
|
||||||
tracerScale = 1.3; //1.2;
|
tracerScale = 1.3; //1.2;
|
||||||
ACE_caliber=12.954;
|
ACE_caliber=12.954;
|
||||||
ACE_bulletLength=58.674;
|
ACE_bulletLength=58.674;
|
||||||
@ -706,10 +506,9 @@ class CfgAmmo {
|
|||||||
ACE_muzzleVelocities[]={900};
|
ACE_muzzleVelocities[]={900};
|
||||||
ACE_barrelLengths[]={736.6};
|
ACE_barrelLengths[]={736.6};
|
||||||
};
|
};
|
||||||
class ACE_127x99_API : BulletBase {
|
class ACE_127x99_API : B_127x99_Ball {
|
||||||
timeToLive=10;
|
timeToLive=10;
|
||||||
airFriction=-0.00057503;
|
airFriction=-0.00057503;
|
||||||
typicalSpeed=900;
|
|
||||||
tracerScale = 1.3;//
|
tracerScale = 1.3;//
|
||||||
hit=25;
|
hit=25;
|
||||||
caliber=4.0;
|
caliber=4.0;
|
||||||
@ -727,7 +526,6 @@ class CfgAmmo {
|
|||||||
class ACE_127x99_Ball_AMAX : B_127x99_Ball {
|
class ACE_127x99_Ball_AMAX : B_127x99_Ball {
|
||||||
timeToLive=10;
|
timeToLive=10;
|
||||||
airFriction=-0.00036645;
|
airFriction=-0.00036645;
|
||||||
typicalSpeed=860;
|
|
||||||
caliber=3.0;
|
caliber=3.0;
|
||||||
ACE_caliber=12.954;
|
ACE_caliber=12.954;
|
||||||
ACE_bulletLength=64.516;
|
ACE_bulletLength=64.516;
|
||||||
@ -743,7 +541,6 @@ class CfgAmmo {
|
|||||||
class B_127x108_Ball : BulletBase {
|
class B_127x108_Ball : BulletBase {
|
||||||
timeToLive=10;
|
timeToLive=10;
|
||||||
airFriction=-0.00063800;
|
airFriction=-0.00063800;
|
||||||
typicalSpeed=820;
|
|
||||||
tracerScale = 1.3; //1.5;
|
tracerScale = 1.3; //1.5;
|
||||||
ACE_caliber=12.979;
|
ACE_caliber=12.979;
|
||||||
ACE_bulletLength=64.008;
|
ACE_bulletLength=64.008;
|
||||||
@ -758,7 +555,6 @@ class CfgAmmo {
|
|||||||
};
|
};
|
||||||
class B_45ACP_Ball : BulletBase {
|
class B_45ACP_Ball : BulletBase {
|
||||||
airFriction=-0.00081221;
|
airFriction=-0.00081221;
|
||||||
typicalSpeed=250;
|
|
||||||
tracerScale = 0.6;
|
tracerScale = 0.6;
|
||||||
ACE_caliber=11.481;
|
ACE_caliber=11.481;
|
||||||
ACE_bulletLength=17.272;
|
ACE_bulletLength=17.272;
|
||||||
@ -771,6 +567,19 @@ class CfgAmmo {
|
|||||||
ACE_muzzleVelocities[]={230, 250, 285};
|
ACE_muzzleVelocities[]={230, 250, 285};
|
||||||
ACE_barrelLengths[]={101.6, 127.0, 228.6};
|
ACE_barrelLengths[]={101.6, 127.0, 228.6};
|
||||||
};
|
};
|
||||||
|
class B_50BW_Ball_F : BulletBase {
|
||||||
|
airFriction=-0.00202645;
|
||||||
|
ACE_caliber=12.7;
|
||||||
|
ACE_bulletLength=24.13;
|
||||||
|
ACE_bulletMass=21.7076;
|
||||||
|
ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
|
||||||
|
ACE_ballisticCoefficients[]={0.21};
|
||||||
|
ACE_velocityBoundaries[]={};
|
||||||
|
ACE_standardAtmosphere="ASM";
|
||||||
|
ACE_dragModel=1;
|
||||||
|
ACE_muzzleVelocities[]={510, 550, 596};
|
||||||
|
ACE_barrelLengths[]={304.8, 406.4, 609.6};
|
||||||
|
};
|
||||||
class B_19mm_HE: BulletBase {
|
class B_19mm_HE: BulletBase {
|
||||||
tracerScale = 1;
|
tracerScale = 1;
|
||||||
};
|
};
|
||||||
|
@ -2,6 +2,15 @@
|
|||||||
class CfgMagazines {
|
class CfgMagazines {
|
||||||
|
|
||||||
class CA_Magazine;
|
class CA_Magazine;
|
||||||
|
class 30Rnd_580x42_Mag_F: CA_Magazine {
|
||||||
|
initSpeed = 930;
|
||||||
|
};
|
||||||
|
class 100Rnd_580x42_Mag_F: 30Rnd_580x42_Mag_F {
|
||||||
|
initSpeed = 930;
|
||||||
|
};
|
||||||
|
class 20Rnd_650x39_Cased_Mag_F: CA_Magazine {
|
||||||
|
initSpeed = 760;
|
||||||
|
};
|
||||||
class 30Rnd_65x39_caseless_mag: CA_Magazine {
|
class 30Rnd_65x39_caseless_mag: CA_Magazine {
|
||||||
initSpeed = 760;
|
initSpeed = 760;
|
||||||
};
|
};
|
||||||
@ -47,6 +56,10 @@ class CfgMagazines {
|
|||||||
descriptionShort = CSTRING(30Rnd_65x39_caseless_green_mag_Tracer_DimDescription);
|
descriptionShort = CSTRING(30Rnd_65x39_caseless_green_mag_Tracer_DimDescription);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class 30Rnd_545x39_Mag_F: CA_Magazine {
|
||||||
|
initSpeed = 735;
|
||||||
|
};
|
||||||
|
|
||||||
class 30Rnd_556x45_Stanag: CA_Magazine {
|
class 30Rnd_556x45_Stanag: CA_Magazine {
|
||||||
};
|
};
|
||||||
class ACE_30Rnd_556x45_Stanag_M995_AP_mag: 30Rnd_556x45_Stanag {
|
class ACE_30Rnd_556x45_Stanag_M995_AP_mag: 30Rnd_556x45_Stanag {
|
||||||
@ -84,6 +97,14 @@ class CfgMagazines {
|
|||||||
picture = "\A3\weapons_f\data\ui\m_20stanag_red_ca.paa";
|
picture = "\A3\weapons_f\data\ui\m_20stanag_red_ca.paa";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class 200Rnd_556x45_Box_F: CA_Magazine {
|
||||||
|
initSpeed = 872;
|
||||||
|
};
|
||||||
|
|
||||||
|
class 30Rnd_762x39_Mag_F: CA_Magazine {
|
||||||
|
initSpeed = 715;
|
||||||
|
};
|
||||||
|
|
||||||
class 20Rnd_762x51_Mag: CA_Magazine {
|
class 20Rnd_762x51_Mag: CA_Magazine {
|
||||||
initSpeed = 833;
|
initSpeed = 833;
|
||||||
};
|
};
|
||||||
@ -219,17 +240,35 @@ class CfgMagazines {
|
|||||||
class ACE_30Rnd_65x47_Scenar_mag: 30Rnd_65x39_caseless_mag {
|
class ACE_30Rnd_65x47_Scenar_mag: 30Rnd_65x39_caseless_mag {
|
||||||
author = ECSTRING(common,ACETeam);
|
author = ECSTRING(common,ACETeam);
|
||||||
ammo = "ACE_65x47_Ball_Scenar";
|
ammo = "ACE_65x47_Ball_Scenar";
|
||||||
|
initSpeed = 761;
|
||||||
displayName = CSTRING(30Rnd_65x47_Scenar_mag_Name);
|
displayName = CSTRING(30Rnd_65x47_Scenar_mag_Name);
|
||||||
displayNameShort = CSTRING(30Rnd_65x47_Scenar_mag_NameShort);
|
displayNameShort = CSTRING(30Rnd_65x47_Scenar_mag_NameShort);
|
||||||
descriptionShort = CSTRING(30Rnd_65x47_Scenar_mag_Description);
|
descriptionShort = CSTRING(30Rnd_65x47_Scenar_mag_Description);
|
||||||
};
|
};
|
||||||
|
class ACE_20Rnd_65x47_Scenar_mag: 20Rnd_650x39_Cased_Mag_F {
|
||||||
|
author = ECSTRING(common,ACETeam);
|
||||||
|
ammo = "ACE_65x47_Ball_Scenar";
|
||||||
|
initSpeed = 779;
|
||||||
|
displayName = CSTRING(20Rnd_65x47_Scenar_mag_Name);
|
||||||
|
displayNameShort = CSTRING(20Rnd_65x47_Scenar_mag_NameShort);
|
||||||
|
descriptionShort = CSTRING(20Rnd_65x47_Scenar_mag_Description);
|
||||||
|
};
|
||||||
class ACE_30Rnd_65_Creedmor_mag: 30Rnd_65x39_caseless_mag {
|
class ACE_30Rnd_65_Creedmor_mag: 30Rnd_65x39_caseless_mag {
|
||||||
author = ECSTRING(common,ACETeam);
|
author = ECSTRING(common,ACETeam);
|
||||||
ammo = "ACE_65_Creedmor_Ball";
|
ammo = "ACE_65_Creedmor_Ball";
|
||||||
|
initSpeed = 815;
|
||||||
displayName = CSTRING(30Rnd_65_Creedmor_mag_Name);
|
displayName = CSTRING(30Rnd_65_Creedmor_mag_Name);
|
||||||
displayNameShort = CSTRING(30Rnd_65_Creedmor_mag_NameShort);
|
displayNameShort = CSTRING(30Rnd_65_Creedmor_mag_NameShort);
|
||||||
descriptionShort = CSTRING(30Rnd_65_Creedmor_mag_Description);
|
descriptionShort = CSTRING(30Rnd_65_Creedmor_mag_Description);
|
||||||
};
|
};
|
||||||
|
class ACE_20Rnd_65_Creedmor_mag: 20Rnd_650x39_Cased_Mag_F {
|
||||||
|
author = ECSTRING(common,ACETeam);
|
||||||
|
ammo = "ACE_65_Creedmor_Ball";
|
||||||
|
initSpeed = 808;
|
||||||
|
displayName = CSTRING(20Rnd_65_Creedmor_mag_Name);
|
||||||
|
displayNameShort = CSTRING(20Rnd_65_Creedmor_mag_NameShort);
|
||||||
|
descriptionShort = CSTRING(20Rnd_65_Creedmor_mag_Description);
|
||||||
|
};
|
||||||
class 10Rnd_338_Mag;
|
class 10Rnd_338_Mag;
|
||||||
class ACE_10Rnd_338_300gr_HPBT_Mag: 10Rnd_338_Mag {
|
class ACE_10Rnd_338_300gr_HPBT_Mag: 10Rnd_338_Mag {
|
||||||
author = ECSTRING(common,ACETeam);
|
author = ECSTRING(common,ACETeam);
|
||||||
@ -247,6 +286,18 @@ class CfgMagazines {
|
|||||||
descriptionShort = CSTRING(10Rnd_338_API526_Mag_Description);
|
descriptionShort = CSTRING(10Rnd_338_API526_Mag_Description);
|
||||||
initSpeed = 880;
|
initSpeed = 880;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class 7Rnd_408_Mag: CA_Magazine {
|
||||||
|
initSpeed = 867;
|
||||||
|
};
|
||||||
|
class ACE_7Rnd_408_305gr_Mag: 7Rnd_408_Mag {
|
||||||
|
author = ECSTRING(common,ACETeam);
|
||||||
|
ammo = "ACE_408_Ball";
|
||||||
|
displayName = CSTRING(7Rnd_408_305gr_Mag_Name);
|
||||||
|
displayNameShort = CSTRING(7Rnd_408_305gr_Mag_NameShort);
|
||||||
|
descriptionShort = CSTRING(7Rnd_408_305gr_Mag_Description);
|
||||||
|
initSpeed = 1067;
|
||||||
|
};
|
||||||
|
|
||||||
class 5Rnd_127x108_Mag;
|
class 5Rnd_127x108_Mag;
|
||||||
class ACE_5Rnd_127x99_Mag: 5Rnd_127x108_Mag {
|
class ACE_5Rnd_127x99_Mag: 5Rnd_127x108_Mag {
|
||||||
@ -276,7 +327,7 @@ class CfgMagazines {
|
|||||||
|
|
||||||
|
|
||||||
class 30Rnd_9x21_Mag: CA_Magazine {
|
class 30Rnd_9x21_Mag: CA_Magazine {
|
||||||
initSpeed = 450;
|
initSpeed = 390;
|
||||||
};
|
};
|
||||||
class ACE_30Rnd_9x19_mag: 30Rnd_9x21_Mag {
|
class ACE_30Rnd_9x19_mag: 30Rnd_9x21_Mag {
|
||||||
author = ECSTRING(common,ACETeam);
|
author = ECSTRING(common,ACETeam);
|
||||||
@ -287,6 +338,10 @@ class CfgMagazines {
|
|||||||
initSpeed = 370;
|
initSpeed = 370;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class 10Rnd_50BW_Mag_F: CA_Magazine {
|
||||||
|
initSpeed = 552;
|
||||||
|
};
|
||||||
|
|
||||||
class 11Rnd_45ACP_Mag: CA_Magazine {
|
class 11Rnd_45ACP_Mag: CA_Magazine {
|
||||||
initSpeed = 250;
|
initSpeed = 250;
|
||||||
};
|
};
|
||||||
@ -308,7 +363,10 @@ class CfgMagazines {
|
|||||||
};
|
};
|
||||||
|
|
||||||
class 16Rnd_9x21_Mag: 30Rnd_9x21_Mag {
|
class 16Rnd_9x21_Mag: 30Rnd_9x21_Mag {
|
||||||
initSpeed = 450;
|
initSpeed = 390;
|
||||||
|
};
|
||||||
|
class 10Rnd_9x21_Mag: 16Rnd_9x21_Mag {
|
||||||
|
initSpeed = 390;
|
||||||
};
|
};
|
||||||
class ACE_16Rnd_9x19_mag: 16Rnd_9x21_Mag {
|
class ACE_16Rnd_9x19_mag: 16Rnd_9x21_Mag {
|
||||||
author = ECSTRING(common,ACETeam);
|
author = ECSTRING(common,ACETeam);
|
||||||
|
@ -13,7 +13,9 @@ class CfgVehicles {
|
|||||||
class NATO_Box_Base;
|
class NATO_Box_Base;
|
||||||
class Box_NATO_Wps_F: NATO_Box_Base {
|
class Box_NATO_Wps_F: NATO_Box_Base {
|
||||||
class TransportMagazines {
|
class TransportMagazines {
|
||||||
|
MACRO_ADDMAGAZINE(ACE_20Rnd_65x47_Scenar_mag,4);
|
||||||
MACRO_ADDMAGAZINE(ACE_30Rnd_65x47_Scenar_mag,4);
|
MACRO_ADDMAGAZINE(ACE_30Rnd_65x47_Scenar_mag,4);
|
||||||
|
MACRO_ADDMAGAZINE(ACE_20Rnd_65_Creedmor_mag,4);
|
||||||
MACRO_ADDMAGAZINE(ACE_30Rnd_65_Creedmor_mag,4);
|
MACRO_ADDMAGAZINE(ACE_30Rnd_65_Creedmor_mag,4);
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@ -26,6 +28,7 @@ class CfgVehicles {
|
|||||||
MACRO_ADDMAGAZINE(ACE_30Rnd_556x45_Stanag_Tracer_Dim,1);
|
MACRO_ADDMAGAZINE(ACE_30Rnd_556x45_Stanag_Tracer_Dim,1);
|
||||||
MACRO_ADDMAGAZINE(ACE_10Rnd_338_300gr_HPBT_Mag,4);
|
MACRO_ADDMAGAZINE(ACE_10Rnd_338_300gr_HPBT_Mag,4);
|
||||||
MACRO_ADDMAGAZINE(ACE_10Rnd_338_API526_Mag,4);
|
MACRO_ADDMAGAZINE(ACE_10Rnd_338_API526_Mag,4);
|
||||||
|
MACRO_ADDMAGAZINE(ACE_7Rnd_408_305gr_Mag,4);
|
||||||
MACRO_ADDMAGAZINE(ACE_5Rnd_127x99_Mag,4);
|
MACRO_ADDMAGAZINE(ACE_5Rnd_127x99_Mag,4);
|
||||||
MACRO_ADDMAGAZINE(ACE_5Rnd_127x99_API_Mag,4);
|
MACRO_ADDMAGAZINE(ACE_5Rnd_127x99_API_Mag,4);
|
||||||
MACRO_ADDMAGAZINE(ACE_5Rnd_127x99_AMAX_Mag,4);
|
MACRO_ADDMAGAZINE(ACE_5Rnd_127x99_AMAX_Mag,4);
|
||||||
@ -34,7 +37,9 @@ class CfgVehicles {
|
|||||||
|
|
||||||
class Box_NATO_Ammo_F: NATO_Box_Base {
|
class Box_NATO_Ammo_F: NATO_Box_Base {
|
||||||
class TransportMagazines {
|
class TransportMagazines {
|
||||||
|
MACRO_ADDMAGAZINE(ACE_20Rnd_65x47_Scenar_mag,4);
|
||||||
MACRO_ADDMAGAZINE(ACE_30Rnd_65x47_Scenar_mag,4);
|
MACRO_ADDMAGAZINE(ACE_30Rnd_65x47_Scenar_mag,4);
|
||||||
|
MACRO_ADDMAGAZINE(ACE_20Rnd_65_Creedmor_mag,4);
|
||||||
MACRO_ADDMAGAZINE(ACE_30Rnd_65_Creedmor_mag,4);
|
MACRO_ADDMAGAZINE(ACE_30Rnd_65_Creedmor_mag,4);
|
||||||
MACRO_ADDMAGAZINE(ACE_10Rnd_762x51_M118LR_Mag,4);
|
MACRO_ADDMAGAZINE(ACE_10Rnd_762x51_M118LR_Mag,4);
|
||||||
MACRO_ADDMAGAZINE(ACE_20Rnd_762x51_M118LR_Mag,4);
|
MACRO_ADDMAGAZINE(ACE_20Rnd_762x51_M118LR_Mag,4);
|
||||||
@ -46,6 +51,7 @@ class CfgVehicles {
|
|||||||
MACRO_ADDMAGAZINE(ACE_20Rnd_762x51_Mag_Tracer_Dim,4);
|
MACRO_ADDMAGAZINE(ACE_20Rnd_762x51_Mag_Tracer_Dim,4);
|
||||||
MACRO_ADDMAGAZINE(ACE_10Rnd_338_300gr_HPBT_Mag,4);
|
MACRO_ADDMAGAZINE(ACE_10Rnd_338_300gr_HPBT_Mag,4);
|
||||||
MACRO_ADDMAGAZINE(ACE_10Rnd_338_API526_Mag,4);
|
MACRO_ADDMAGAZINE(ACE_10Rnd_338_API526_Mag,4);
|
||||||
|
MACRO_ADDMAGAZINE(ACE_7Rnd_408_305gr_Mag,4);
|
||||||
MACRO_ADDMAGAZINE(ACE_5Rnd_127x99_Mag,4);
|
MACRO_ADDMAGAZINE(ACE_5Rnd_127x99_Mag,4);
|
||||||
MACRO_ADDMAGAZINE(ACE_5Rnd_127x99_API_Mag,4);
|
MACRO_ADDMAGAZINE(ACE_5Rnd_127x99_API_Mag,4);
|
||||||
MACRO_ADDMAGAZINE(ACE_5Rnd_127x99_AMAX_Mag,4);
|
MACRO_ADDMAGAZINE(ACE_5Rnd_127x99_AMAX_Mag,4);
|
||||||
@ -67,6 +73,7 @@ class CfgVehicles {
|
|||||||
MACRO_ADDMAGAZINE(ACE_20Rnd_762x51_M993_AP_Mag,4);
|
MACRO_ADDMAGAZINE(ACE_20Rnd_762x51_M993_AP_Mag,4);
|
||||||
MACRO_ADDMAGAZINE(ACE_10Rnd_338_300gr_HPBT_Mag,4);
|
MACRO_ADDMAGAZINE(ACE_10Rnd_338_300gr_HPBT_Mag,4);
|
||||||
MACRO_ADDMAGAZINE(ACE_10Rnd_338_API526_Mag,4);
|
MACRO_ADDMAGAZINE(ACE_10Rnd_338_API526_Mag,4);
|
||||||
|
MACRO_ADDMAGAZINE(ACE_7Rnd_408_305gr_Mag,4);
|
||||||
MACRO_ADDMAGAZINE(ACE_5Rnd_127x99_Mag,4);
|
MACRO_ADDMAGAZINE(ACE_5Rnd_127x99_Mag,4);
|
||||||
MACRO_ADDMAGAZINE(ACE_5Rnd_127x99_API_Mag,4);
|
MACRO_ADDMAGAZINE(ACE_5Rnd_127x99_API_Mag,4);
|
||||||
MACRO_ADDMAGAZINE(ACE_5Rnd_127x99_AMAX_Mag,4);
|
MACRO_ADDMAGAZINE(ACE_5Rnd_127x99_AMAX_Mag,4);
|
||||||
@ -76,7 +83,9 @@ class CfgVehicles {
|
|||||||
class ReammoBox_F;
|
class ReammoBox_F;
|
||||||
class B_supplyCrate_F: ReammoBox_F {
|
class B_supplyCrate_F: ReammoBox_F {
|
||||||
class TransportMagazines {
|
class TransportMagazines {
|
||||||
|
MACRO_ADDMAGAZINE(ACE_20Rnd_65x47_Scenar_mag,4);
|
||||||
MACRO_ADDMAGAZINE(ACE_30Rnd_65x47_Scenar_mag,4);
|
MACRO_ADDMAGAZINE(ACE_30Rnd_65x47_Scenar_mag,4);
|
||||||
|
MACRO_ADDMAGAZINE(ACE_20Rnd_65_Creedmor_mag,4);
|
||||||
MACRO_ADDMAGAZINE(ACE_30Rnd_65_Creedmor_mag,4);
|
MACRO_ADDMAGAZINE(ACE_30Rnd_65_Creedmor_mag,4);
|
||||||
MACRO_ADDMAGAZINE(ACE_10Rnd_762x51_M118LR_Mag,4);
|
MACRO_ADDMAGAZINE(ACE_10Rnd_762x51_M118LR_Mag,4);
|
||||||
MACRO_ADDMAGAZINE(ACE_20Rnd_762x51_M118LR_Mag,4);
|
MACRO_ADDMAGAZINE(ACE_20Rnd_762x51_M118LR_Mag,4);
|
||||||
@ -92,7 +101,9 @@ class CfgVehicles {
|
|||||||
class EAST_Box_Base;
|
class EAST_Box_Base;
|
||||||
class Box_East_Wps_F: EAST_Box_Base {
|
class Box_East_Wps_F: EAST_Box_Base {
|
||||||
class TransportMagazines {
|
class TransportMagazines {
|
||||||
|
MACRO_ADDMAGAZINE(ACE_20Rnd_65x47_Scenar_mag,4);
|
||||||
MACRO_ADDMAGAZINE(ACE_30Rnd_65x47_Scenar_mag,4);
|
MACRO_ADDMAGAZINE(ACE_30Rnd_65x47_Scenar_mag,4);
|
||||||
|
MACRO_ADDMAGAZINE(ACE_20Rnd_65_Creedmor_mag,4);
|
||||||
MACRO_ADDMAGAZINE(ACE_30Rnd_65_Creedmor_mag,4);
|
MACRO_ADDMAGAZINE(ACE_30Rnd_65_Creedmor_mag,4);
|
||||||
MACRO_ADDMAGAZINE(ACE_10Rnd_762x54_Tracer_mag,4);
|
MACRO_ADDMAGAZINE(ACE_10Rnd_762x54_Tracer_mag,4);
|
||||||
};
|
};
|
||||||
@ -102,7 +113,9 @@ class CfgVehicles {
|
|||||||
class TransportMagazines {
|
class TransportMagazines {
|
||||||
MACRO_ADDMAGAZINE(ACE_30Rnd_556x45_Stanag_Tracer_Dim,1);
|
MACRO_ADDMAGAZINE(ACE_30Rnd_556x45_Stanag_Tracer_Dim,1);
|
||||||
MACRO_ADDMAGAZINE(ACE_30Rnd_65x39_caseless_green_mag_Tracer_Dim,4);
|
MACRO_ADDMAGAZINE(ACE_30Rnd_65x39_caseless_green_mag_Tracer_Dim,4);
|
||||||
|
MACRO_ADDMAGAZINE(ACE_20Rnd_65x47_Scenar_mag,4);
|
||||||
MACRO_ADDMAGAZINE(ACE_30Rnd_65x47_Scenar_mag,4);
|
MACRO_ADDMAGAZINE(ACE_30Rnd_65x47_Scenar_mag,4);
|
||||||
|
MACRO_ADDMAGAZINE(ACE_20Rnd_65_Creedmor_mag,4);
|
||||||
MACRO_ADDMAGAZINE(ACE_30Rnd_65_Creedmor_mag,4);
|
MACRO_ADDMAGAZINE(ACE_30Rnd_65_Creedmor_mag,4);
|
||||||
MACRO_ADDMAGAZINE(ACE_10Rnd_762x54_Tracer_mag,4);
|
MACRO_ADDMAGAZINE(ACE_10Rnd_762x54_Tracer_mag,4);
|
||||||
};
|
};
|
||||||
@ -110,7 +123,9 @@ class CfgVehicles {
|
|||||||
|
|
||||||
class Box_East_Ammo_F: EAST_Box_Base {
|
class Box_East_Ammo_F: EAST_Box_Base {
|
||||||
class TransportMagazines {
|
class TransportMagazines {
|
||||||
|
MACRO_ADDMAGAZINE(ACE_20Rnd_65x47_Scenar_mag,4);
|
||||||
MACRO_ADDMAGAZINE(ACE_30Rnd_65x47_Scenar_mag,4);
|
MACRO_ADDMAGAZINE(ACE_30Rnd_65x47_Scenar_mag,4);
|
||||||
|
MACRO_ADDMAGAZINE(ACE_20Rnd_65_Creedmor_mag,4);
|
||||||
MACRO_ADDMAGAZINE(ACE_30Rnd_65_Creedmor_mag,4);
|
MACRO_ADDMAGAZINE(ACE_30Rnd_65_Creedmor_mag,4);
|
||||||
MACRO_ADDMAGAZINE(ACE_10Rnd_762x54_Tracer_mag,4);
|
MACRO_ADDMAGAZINE(ACE_10Rnd_762x54_Tracer_mag,4);
|
||||||
};
|
};
|
||||||
@ -118,7 +133,9 @@ class CfgVehicles {
|
|||||||
|
|
||||||
class Box_East_Support_F: EAST_Box_Base {
|
class Box_East_Support_F: EAST_Box_Base {
|
||||||
class TransportMagazines {
|
class TransportMagazines {
|
||||||
MACRO_ADDMAGAZINE(ACE_30Rnd_65x47_Scenar_mag,6);
|
MACRO_ADDMAGAZINE(ACE_20Rnd_65x47_Scenar_mag,4);
|
||||||
|
MACRO_ADDMAGAZINE(ACE_30Rnd_65x47_Scenar_mag,4);
|
||||||
|
MACRO_ADDMAGAZINE(ACE_20Rnd_65_Creedmor_mag,4);
|
||||||
MACRO_ADDMAGAZINE(ACE_30Rnd_65_Creedmor_mag,4);
|
MACRO_ADDMAGAZINE(ACE_30Rnd_65_Creedmor_mag,4);
|
||||||
MACRO_ADDMAGAZINE(ACE_10Rnd_762x54_Tracer_mag,4);
|
MACRO_ADDMAGAZINE(ACE_10Rnd_762x54_Tracer_mag,4);
|
||||||
};
|
};
|
||||||
@ -182,7 +199,9 @@ class CfgVehicles {
|
|||||||
|
|
||||||
class C_supplyCrate_F: ReammoBox_F {
|
class C_supplyCrate_F: ReammoBox_F {
|
||||||
class TransportMagazines {
|
class TransportMagazines {
|
||||||
|
MACRO_ADDMAGAZINE(ACE_20Rnd_65x47_Scenar_mag,4);
|
||||||
MACRO_ADDMAGAZINE(ACE_30Rnd_65x47_Scenar_mag,4);
|
MACRO_ADDMAGAZINE(ACE_30Rnd_65x47_Scenar_mag,4);
|
||||||
|
MACRO_ADDMAGAZINE(ACE_20Rnd_65_Creedmor_mag,4);
|
||||||
MACRO_ADDMAGAZINE(ACE_30Rnd_65_Creedmor_mag,4);
|
MACRO_ADDMAGAZINE(ACE_30Rnd_65_Creedmor_mag,4);
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@ -217,10 +236,13 @@ class CfgVehicles {
|
|||||||
MACRO_ADDMAGAZINE(ACE_30Rnd_65x39_caseless_green_mag_Tracer_Dim,4);
|
MACRO_ADDMAGAZINE(ACE_30Rnd_65x39_caseless_green_mag_Tracer_Dim,4);
|
||||||
MACRO_ADDMAGAZINE(ACE_100Rnd_65x39_caseless_mag_Tracer_Dim,4);
|
MACRO_ADDMAGAZINE(ACE_100Rnd_65x39_caseless_mag_Tracer_Dim,4);
|
||||||
MACRO_ADDMAGAZINE(ACE_200Rnd_65x39_cased_Box_Tracer_Dim,4);
|
MACRO_ADDMAGAZINE(ACE_200Rnd_65x39_cased_Box_Tracer_Dim,4);
|
||||||
|
MACRO_ADDMAGAZINE(ACE_20Rnd_65x47_Scenar_mag,4);
|
||||||
MACRO_ADDMAGAZINE(ACE_30Rnd_65x47_Scenar_mag,4);
|
MACRO_ADDMAGAZINE(ACE_30Rnd_65x47_Scenar_mag,4);
|
||||||
|
MACRO_ADDMAGAZINE(ACE_20Rnd_65_Creedmor_mag,4);
|
||||||
MACRO_ADDMAGAZINE(ACE_30Rnd_65_Creedmor_mag,4);
|
MACRO_ADDMAGAZINE(ACE_30Rnd_65_Creedmor_mag,4);
|
||||||
MACRO_ADDMAGAZINE(ACE_10Rnd_338_300gr_HPBT_Mag,4);
|
MACRO_ADDMAGAZINE(ACE_10Rnd_338_300gr_HPBT_Mag,4);
|
||||||
MACRO_ADDMAGAZINE(ACE_10Rnd_338_API526_Mag,4);
|
MACRO_ADDMAGAZINE(ACE_10Rnd_338_API526_Mag,4);
|
||||||
|
MACRO_ADDMAGAZINE(ACE_7Rnd_408_305gr_Mag,4);
|
||||||
MACRO_ADDMAGAZINE(ACE_5Rnd_127x99_Mag,4);
|
MACRO_ADDMAGAZINE(ACE_5Rnd_127x99_Mag,4);
|
||||||
MACRO_ADDMAGAZINE(ACE_5Rnd_127x99_API_Mag,4);
|
MACRO_ADDMAGAZINE(ACE_5Rnd_127x99_API_Mag,4);
|
||||||
MACRO_ADDMAGAZINE(ACE_5Rnd_127x99_AMAX_Mag,4);
|
MACRO_ADDMAGAZINE(ACE_5Rnd_127x99_AMAX_Mag,4);
|
||||||
|
@ -27,6 +27,17 @@ class CfgWeapons {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class DMR_07_base_F: Rifle_Long_Base_F {
|
||||||
|
initSpeed = -1.06051;
|
||||||
|
ACE_barrelTwist = 228.6;
|
||||||
|
ACE_barrelLength = 640.0;
|
||||||
|
magazines[] = {
|
||||||
|
"20Rnd_650x39_Cased_Mag_F",
|
||||||
|
"ACE_20Rnd_65x47_Scenar_mag",
|
||||||
|
"ACE_20Rnd_65_Creedmor_mag"
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
class DMR_06_base_F: Rifle_Long_Base_F {
|
class DMR_06_base_F: Rifle_Long_Base_F {
|
||||||
class Single: Mode_SemiAuto {
|
class Single: Mode_SemiAuto {
|
||||||
dispersion = 0.00029; // radians. Equal to 1.00 MOA.
|
dispersion = 0.00029; // radians. Equal to 1.00 MOA.
|
||||||
@ -112,7 +123,7 @@ class CfgWeapons {
|
|||||||
"ACE_30Rnd_65x47_Scenar_mag",
|
"ACE_30Rnd_65x47_Scenar_mag",
|
||||||
"ACE_30Rnd_65_Creedmor_mag"
|
"ACE_30Rnd_65_Creedmor_mag"
|
||||||
};
|
};
|
||||||
initSpeed = -1.018;
|
initSpeed = -1.01842;
|
||||||
ACE_barrelTwist=228.6;
|
ACE_barrelTwist=228.6;
|
||||||
ACE_barrelLength=457.2;
|
ACE_barrelLength=457.2;
|
||||||
class Single: Single {
|
class Single: Single {
|
||||||
@ -142,6 +153,14 @@ class CfgWeapons {
|
|||||||
"ACE_30Rnd_556x45_Stanag_Mk318_mag",
|
"ACE_30Rnd_556x45_Stanag_Mk318_mag",
|
||||||
"ACE_30Rnd_556x45_Stanag_Tracer_Dim"
|
"ACE_30Rnd_556x45_Stanag_Tracer_Dim"
|
||||||
};
|
};
|
||||||
|
initSpeed = -0.859238;
|
||||||
|
ACE_barrelTwist=177.8;
|
||||||
|
ACE_barrelLength=264.0;
|
||||||
|
};
|
||||||
|
class arifle_SPAR_02_base_F: Rifle_Base_F {
|
||||||
|
initSpeed = -0.934282;
|
||||||
|
ACE_barrelTwist=177.8;
|
||||||
|
ACE_barrelLength=368.0;
|
||||||
};
|
};
|
||||||
class arifle_SPAR_03_base_F: Rifle_Base_F {
|
class arifle_SPAR_03_base_F: Rifle_Base_F {
|
||||||
magazines[] = {
|
magazines[] = {
|
||||||
@ -154,6 +173,9 @@ class CfgWeapons {
|
|||||||
"ACE_20Rnd_762x51_M993_AP_Mag",
|
"ACE_20Rnd_762x51_M993_AP_Mag",
|
||||||
"ACE_20Rnd_762x51_Mag_SD"
|
"ACE_20Rnd_762x51_Mag_SD"
|
||||||
};
|
};
|
||||||
|
initSpeed = -0.984394;
|
||||||
|
ACE_barrelTwist=279.4;
|
||||||
|
ACE_barrelLength=508.0;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Other */
|
/* Other */
|
||||||
@ -163,21 +185,26 @@ class CfgWeapons {
|
|||||||
"200Rnd_65x39_cased_Box_Tracer",
|
"200Rnd_65x39_cased_Box_Tracer",
|
||||||
"ACE_200Rnd_65x39_cased_Box_Tracer_Dim"
|
"ACE_200Rnd_65x39_cased_Box_Tracer_Dim"
|
||||||
};
|
};
|
||||||
initSpeed = -0.9763;
|
initSpeed = -0.976974;
|
||||||
ACE_barrelTwist=177.8;
|
ACE_barrelTwist=177.8;
|
||||||
ACE_barrelLength=317.5;
|
ACE_barrelLength=317.5;
|
||||||
};
|
};
|
||||||
class LMG_Zafir_F: Rifle_Long_Base_F {
|
class LMG_Zafir_F: Rifle_Long_Base_F {
|
||||||
initSpeed = -1.0;
|
initSpeed = -1.00333;
|
||||||
ACE_barrelTwist=304.8;
|
ACE_barrelTwist=304.8;
|
||||||
ACE_barrelLength=459.74;
|
ACE_barrelLength=459.74;
|
||||||
};
|
};
|
||||||
|
class LMG_03_base_F: Rifle_Long_Base_F {
|
||||||
|
initSpeed = -1.02002;
|
||||||
|
ACE_barrelTwist=177.8;
|
||||||
|
ACE_barrelLength=414.02;
|
||||||
|
};
|
||||||
class Tavor_base_F: Rifle_Base_F {};
|
class Tavor_base_F: Rifle_Base_F {};
|
||||||
class mk20_base_F: Rifle_Base_F {};
|
class mk20_base_F: Rifle_Base_F {};
|
||||||
|
|
||||||
/* SMGs */
|
/* SMGs */
|
||||||
class SDAR_base_F: Rifle_Base_F {
|
class SDAR_base_F: Rifle_Base_F {
|
||||||
initSpeed = -0.989;
|
initSpeed = -1.211;
|
||||||
class Single: Mode_SemiAuto {
|
class Single: Mode_SemiAuto {
|
||||||
dispersion = 0.0008727; // radians. Equal to 3 MOA.
|
dispersion = 0.0008727; // radians. Equal to 3 MOA.
|
||||||
};
|
};
|
||||||
@ -190,9 +217,6 @@ class CfgWeapons {
|
|||||||
dispersion = 0.0008727; // radians. Equal to 3 MOA.
|
dispersion = 0.0008727; // radians. Equal to 3 MOA.
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
class pdw2000_base_F: Rifle_Short_Base_F {};
|
|
||||||
class SMG_01_Base: Rifle_Short_Base_F {};
|
|
||||||
class SMG_02_base_F: Rifle_Base_F {};
|
|
||||||
|
|
||||||
/* Pistols */
|
/* Pistols */
|
||||||
|
|
||||||
@ -200,13 +224,13 @@ class CfgWeapons {
|
|||||||
class Pistol_Base_F: Pistol {};
|
class Pistol_Base_F: Pistol {};
|
||||||
|
|
||||||
class hgun_P07_F: Pistol_Base_F {
|
class hgun_P07_F: Pistol_Base_F {
|
||||||
initSpeed = -0.9778;
|
initSpeed = -1.0;
|
||||||
ACE_barrelTwist=254.0;
|
ACE_barrelTwist=254.0;
|
||||||
ACE_barrelLength=101.6;
|
ACE_barrelLength=101.6;
|
||||||
};
|
};
|
||||||
|
|
||||||
class hgun_Rook40_F: Pistol_Base_F {
|
class hgun_Rook40_F: Pistol_Base_F {
|
||||||
initSpeed = -1.0;
|
initSpeed = -1.03077;
|
||||||
ACE_barrelTwist=254.0;
|
ACE_barrelTwist=254.0;
|
||||||
ACE_barrelLength=111.76;
|
ACE_barrelLength=111.76;
|
||||||
};
|
};
|
||||||
@ -228,18 +252,57 @@ class CfgWeapons {
|
|||||||
ACE_barrelTwist=406.4;
|
ACE_barrelTwist=406.4;
|
||||||
ACE_barrelLength=76.2;
|
ACE_barrelLength=76.2;
|
||||||
};
|
};
|
||||||
class hgun_PDW2000_F: pdw2000_base_F {
|
|
||||||
initSpeed = -1.157;
|
class hgun_Pistol_01_F: Pistol_Base_F {
|
||||||
|
initSpeed = -0.974359;
|
||||||
|
ACE_barrelTwist=254.0;
|
||||||
|
ACE_barrelLength=93.5;
|
||||||
|
};
|
||||||
|
|
||||||
|
class pdw2000_base_F: Rifle_Short_Base_F {
|
||||||
|
initSpeed = -1.09615;
|
||||||
ACE_barrelTwist=228.6;
|
ACE_barrelTwist=228.6;
|
||||||
ACE_barrelLength=177.8;
|
ACE_barrelLength=177.8;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* Rifles */
|
||||||
|
class arifle_AKS_base_F: Rifle_Base_F {
|
||||||
|
initSpeed = -1.0;
|
||||||
|
ACE_barrelTwist=160.02;
|
||||||
|
ACE_barrelLength=206.5;
|
||||||
|
};
|
||||||
|
class arifle_AKM_base_F: Rifle_Base_F {
|
||||||
|
initSpeed = -1.0014;
|
||||||
|
ACE_barrelTwist = 199.898;
|
||||||
|
ACE_barrelLength = 414.02;
|
||||||
|
};
|
||||||
|
class arifle_AK12_base_F: Rifle_Base_F {
|
||||||
|
initSpeed = -1.0014;
|
||||||
|
ACE_barrelTwist = 199.898;
|
||||||
|
ACE_barrelLength = 414.02;
|
||||||
|
};
|
||||||
|
class arifle_CTAR_base_F: Rifle_Base_F {
|
||||||
|
initSpeed = -1.0;
|
||||||
|
ACE_barrelTwist = 244.0;
|
||||||
|
ACE_barrelLength = 463.0;
|
||||||
|
};
|
||||||
|
class arifle_CTARS_base_F: Rifle_Base_F {
|
||||||
|
initSpeed = -1.04301;
|
||||||
|
ACE_barrelTwist = 244.0;
|
||||||
|
ACE_barrelLength = 600.0;
|
||||||
|
};
|
||||||
|
class arifle_ARX_base_F: Rifle_Base_F {
|
||||||
|
initSpeed = -1.02052;
|
||||||
|
ACE_barrelTwist = 228.6;
|
||||||
|
ACE_barrelLength = 463.0;
|
||||||
|
};
|
||||||
class arifle_Katiba_F: arifle_katiba_Base_F {
|
class arifle_Katiba_F: arifle_katiba_Base_F {
|
||||||
magazines[] = {
|
magazines[] = {
|
||||||
"30Rnd_65x39_caseless_green",
|
"30Rnd_65x39_caseless_green",
|
||||||
"30Rnd_65x39_caseless_green_mag_Tracer",
|
"30Rnd_65x39_caseless_green_mag_Tracer",
|
||||||
"ACE_30Rnd_65x39_caseless_green_mag_Tracer_Dim"
|
"ACE_30Rnd_65x39_caseless_green_mag_Tracer_Dim"
|
||||||
};
|
};
|
||||||
initSpeed = -1.08;
|
initSpeed = -1.08355;
|
||||||
ACE_barrelTwist=203.2;
|
ACE_barrelTwist=203.2;
|
||||||
ACE_barrelLength=728.98;
|
ACE_barrelLength=728.98;
|
||||||
};
|
};
|
||||||
@ -249,7 +312,7 @@ class CfgWeapons {
|
|||||||
"30Rnd_65x39_caseless_green_mag_Tracer",
|
"30Rnd_65x39_caseless_green_mag_Tracer",
|
||||||
"ACE_30Rnd_65x39_caseless_green_mag_Tracer_Dim"
|
"ACE_30Rnd_65x39_caseless_green_mag_Tracer_Dim"
|
||||||
};
|
};
|
||||||
initSpeed = -1.07;
|
initSpeed = -1.07105;
|
||||||
ACE_barrelTwist=203.2;
|
ACE_barrelTwist=203.2;
|
||||||
ACE_barrelLength=680.72;
|
ACE_barrelLength=680.72;
|
||||||
};
|
};
|
||||||
@ -259,7 +322,7 @@ class CfgWeapons {
|
|||||||
"30Rnd_65x39_caseless_green_mag_Tracer",
|
"30Rnd_65x39_caseless_green_mag_Tracer",
|
||||||
"ACE_30Rnd_65x39_caseless_green_mag_Tracer_Dim"
|
"ACE_30Rnd_65x39_caseless_green_mag_Tracer_Dim"
|
||||||
};
|
};
|
||||||
initSpeed = -1.08;
|
initSpeed = -1.08355;
|
||||||
ACE_barrelTwist=203.2;
|
ACE_barrelTwist=203.2;
|
||||||
ACE_barrelLength=728.98;
|
ACE_barrelLength=728.98;
|
||||||
};
|
};
|
||||||
@ -269,7 +332,7 @@ class CfgWeapons {
|
|||||||
"30Rnd_65x39_caseless_mag_Tracer",
|
"30Rnd_65x39_caseless_mag_Tracer",
|
||||||
"ACE_30Rnd_65x39_caseless_mag_Tracer_Dim"
|
"ACE_30Rnd_65x39_caseless_mag_Tracer_Dim"
|
||||||
};
|
};
|
||||||
initSpeed = -0.99;
|
initSpeed = -0.990132;
|
||||||
ACE_barrelTwist=228.6;
|
ACE_barrelTwist=228.6;
|
||||||
ACE_barrelLength=368.3;
|
ACE_barrelLength=368.3;
|
||||||
};
|
};
|
||||||
@ -295,7 +358,7 @@ class CfgWeapons {
|
|||||||
"30Rnd_65x39_caseless_mag_Tracer",
|
"30Rnd_65x39_caseless_mag_Tracer",
|
||||||
"ACE_30Rnd_65x39_caseless_mag_Tracer_Dim"
|
"ACE_30Rnd_65x39_caseless_mag_Tracer_Dim"
|
||||||
};
|
};
|
||||||
initSpeed = -0.965;
|
initSpeed = -0.963816;
|
||||||
ACE_barrelTwist=203.2;
|
ACE_barrelTwist=203.2;
|
||||||
ACE_barrelLength=266.7;
|
ACE_barrelLength=266.7;
|
||||||
};
|
};
|
||||||
@ -323,11 +386,16 @@ class CfgWeapons {
|
|||||||
ACE_barrelTwist=285.75;
|
ACE_barrelTwist=285.75;
|
||||||
ACE_barrelLength=457.2;
|
ACE_barrelLength=457.2;
|
||||||
};
|
};
|
||||||
class SMG_02_F: SMG_02_base_F {
|
class SMG_02_base_F: Rifle_Short_Base_F {
|
||||||
initSpeed = -1.054;
|
initSpeed = -1.10288;
|
||||||
ACE_barrelTwist=254.0;
|
ACE_barrelTwist=254.0;
|
||||||
ACE_barrelLength=195.58;
|
ACE_barrelLength=195.58;
|
||||||
};
|
};
|
||||||
|
class SMG_05_base_F: Rifle_Short_Base_F {
|
||||||
|
initSpeed = -1.04058;
|
||||||
|
ACE_barrelTwist=254.0;
|
||||||
|
ACE_barrelLength=115.0;
|
||||||
|
};
|
||||||
class arifle_TRG20_F: Tavor_base_F {
|
class arifle_TRG20_F: Tavor_base_F {
|
||||||
magazines[] = {
|
magazines[] = {
|
||||||
"30Rnd_556x45_Stanag",
|
"30Rnd_556x45_Stanag",
|
||||||
@ -358,7 +426,7 @@ class CfgWeapons {
|
|||||||
"ACE_30Rnd_556x45_Stanag_Mk318_mag",
|
"ACE_30Rnd_556x45_Stanag_Mk318_mag",
|
||||||
"ACE_30Rnd_556x45_Stanag_Tracer_Dim"
|
"ACE_30Rnd_556x45_Stanag_Tracer_Dim"
|
||||||
};
|
};
|
||||||
initSpeed = -0.989;
|
initSpeed = -0.988043;
|
||||||
ACE_barrelTwist=177.8;
|
ACE_barrelTwist=177.8;
|
||||||
ACE_barrelLength=459.74;
|
ACE_barrelLength=459.74;
|
||||||
};
|
};
|
||||||
@ -375,7 +443,7 @@ class CfgWeapons {
|
|||||||
"ACE_30Rnd_556x45_Stanag_Mk318_mag",
|
"ACE_30Rnd_556x45_Stanag_Mk318_mag",
|
||||||
"ACE_30Rnd_556x45_Stanag_Tracer_Dim"
|
"ACE_30Rnd_556x45_Stanag_Tracer_Dim"
|
||||||
};
|
};
|
||||||
initSpeed = -0.989;
|
initSpeed = -0.988043;
|
||||||
ACE_barrelTwist=177.8;
|
ACE_barrelTwist=177.8;
|
||||||
ACE_barrelLength=459.74;
|
ACE_barrelLength=459.74;
|
||||||
};
|
};
|
||||||
@ -398,7 +466,7 @@ class CfgWeapons {
|
|||||||
"ACE_30Rnd_556x45_Stanag_Mk318_mag",
|
"ACE_30Rnd_556x45_Stanag_Mk318_mag",
|
||||||
"ACE_30Rnd_556x45_Stanag_Tracer_Dim"
|
"ACE_30Rnd_556x45_Stanag_Tracer_Dim"
|
||||||
};
|
};
|
||||||
initSpeed = -0.98;
|
initSpeed = -0.980978;
|
||||||
ACE_barrelTwist=177.8;
|
ACE_barrelTwist=177.8;
|
||||||
ACE_barrelLength=441.96;
|
ACE_barrelLength=441.96;
|
||||||
};
|
};
|
||||||
@ -415,7 +483,7 @@ class CfgWeapons {
|
|||||||
"ACE_30Rnd_556x45_Stanag_Mk318_mag",
|
"ACE_30Rnd_556x45_Stanag_Mk318_mag",
|
||||||
"ACE_30Rnd_556x45_Stanag_Tracer_Dim"
|
"ACE_30Rnd_556x45_Stanag_Tracer_Dim"
|
||||||
};
|
};
|
||||||
initSpeed = -0.956;
|
initSpeed = -0.962648;
|
||||||
ACE_barrelTwist=177.8;
|
ACE_barrelTwist=177.8;
|
||||||
ACE_barrelLength=406.4;
|
ACE_barrelLength=406.4;
|
||||||
};
|
};
|
||||||
@ -432,12 +500,12 @@ class CfgWeapons {
|
|||||||
"ACE_30Rnd_556x45_Stanag_Mk318_mag",
|
"ACE_30Rnd_556x45_Stanag_Mk318_mag",
|
||||||
"ACE_30Rnd_556x45_Stanag_Tracer_Dim"
|
"ACE_30Rnd_556x45_Stanag_Tracer_Dim"
|
||||||
};
|
};
|
||||||
initSpeed = -0.956;
|
initSpeed = -0.962648;
|
||||||
ACE_barrelTwist=177.8;
|
ACE_barrelTwist=177.8;
|
||||||
ACE_barrelLength=406.4;
|
ACE_barrelLength=406.4;
|
||||||
};
|
};
|
||||||
class SMG_01_F: SMG_01_Base {
|
class SMG_01_Base: Rifle_Short_Base_F {
|
||||||
initSpeed = -1.016;
|
initSpeed = -1.0175;
|
||||||
ACE_barrelTwist=406.4;
|
ACE_barrelTwist=406.4;
|
||||||
ACE_barrelLength=139.7;
|
ACE_barrelLength=139.7;
|
||||||
};
|
};
|
||||||
@ -461,7 +529,7 @@ class CfgWeapons {
|
|||||||
"ACE_20Rnd_762x51_M993_AP_Mag",
|
"ACE_20Rnd_762x51_M993_AP_Mag",
|
||||||
"ACE_20Rnd_762x51_Mag_SD"
|
"ACE_20Rnd_762x51_Mag_SD"
|
||||||
};
|
};
|
||||||
initSpeed = -0.9724;
|
initSpeed = -0.972389;
|
||||||
ACE_barrelTwist=304.8;
|
ACE_barrelTwist=304.8;
|
||||||
ACE_barrelLength=457.2;
|
ACE_barrelLength=457.2;
|
||||||
};
|
};
|
||||||
@ -473,6 +541,10 @@ class CfgWeapons {
|
|||||||
};
|
};
|
||||||
*/
|
*/
|
||||||
class srifle_LRR_F: LRR_base_F {
|
class srifle_LRR_F: LRR_base_F {
|
||||||
|
magazines[] = {
|
||||||
|
"7Rnd_408_Mag",
|
||||||
|
"ACE_7Rnd_408_305gr_Mag"
|
||||||
|
};
|
||||||
initSpeed = -1.0;
|
initSpeed = -1.0;
|
||||||
ACE_barrelTwist=330.2;
|
ACE_barrelTwist=330.2;
|
||||||
ACE_barrelLength=736.6;
|
ACE_barrelLength=736.6;
|
||||||
@ -498,7 +570,7 @@ class CfgWeapons {
|
|||||||
"ACE_20Rnd_762x67_Mk248_Mod_1_Mag",
|
"ACE_20Rnd_762x67_Mk248_Mod_1_Mag",
|
||||||
"ACE_20Rnd_762x67_Berger_Hybrid_OTM_Mag"
|
"ACE_20Rnd_762x67_Berger_Hybrid_OTM_Mag"
|
||||||
};
|
};
|
||||||
initSpeed = -0.962;
|
initSpeed = -0.961749;
|
||||||
ACE_barrelTwist=254.0;
|
ACE_barrelTwist=254.0;
|
||||||
ACE_barrelLength=508.0;
|
ACE_barrelLength=508.0;
|
||||||
};
|
};
|
||||||
@ -513,7 +585,7 @@ class CfgWeapons {
|
|||||||
"ACE_20Rnd_762x51_M993_AP_Mag",
|
"ACE_20Rnd_762x51_M993_AP_Mag",
|
||||||
"ACE_20Rnd_762x51_Mag_SD"
|
"ACE_20Rnd_762x51_Mag_SD"
|
||||||
};
|
};
|
||||||
initSpeed = -0.9843;
|
initSpeed = -0.984394;
|
||||||
ACE_barrelTwist=254.0;
|
ACE_barrelTwist=254.0;
|
||||||
ACE_barrelLength=508.0;
|
ACE_barrelLength=508.0;
|
||||||
};
|
};
|
||||||
@ -538,12 +610,12 @@ class CfgWeapons {
|
|||||||
"ACE_20Rnd_762x51_M993_AP_Mag",
|
"ACE_20Rnd_762x51_M993_AP_Mag",
|
||||||
"ACE_20Rnd_762x51_Mag_SD"
|
"ACE_20Rnd_762x51_Mag_SD"
|
||||||
};
|
};
|
||||||
initSpeed = -0.9916;
|
initSpeed = -0.992197;
|
||||||
ACE_barrelTwist=304.8;
|
ACE_barrelTwist=304.8;
|
||||||
ACE_barrelLength=558.8;
|
ACE_barrelLength=558.8;
|
||||||
};
|
};
|
||||||
class MMG_01_hex_F: MMG_01_base_F {
|
class MMG_01_hex_F: MMG_01_base_F {
|
||||||
initSpeed = -1.0;
|
initSpeed = -0.997073;
|
||||||
ACE_barrelTwist=359.918;
|
ACE_barrelTwist=359.918;
|
||||||
ACE_barrelLength=549.91;
|
ACE_barrelLength=549.91;
|
||||||
};
|
};
|
||||||
|
@ -1,6 +1,85 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Project name="ACE">
|
<Project name="ACE">
|
||||||
<Package name="Ballistics">
|
<Package name="Ballistics">
|
||||||
|
<!-- QBU -->
|
||||||
|
<Key ID="STR_ACE_Ballistics_20Rnd_65x47_Scenar_mag_Name">
|
||||||
|
<English>6.5x47mm 20Rnd Mag (HPBT Scenar)</English>
|
||||||
|
<French>Ch. 6.5x47mm 20Cps (HPBT Scenar)</French>
|
||||||
|
<Spanish>Cargador de 20 balas de 6.5x47mm (HPBT Scenar)</Spanish>
|
||||||
|
<Polish>Magazynek 6,5x47mm 20rd (HPBT Scenar)</Polish>
|
||||||
|
<Russian>Магазин из 20-ти 6,5x47 мм (экспансивные Scenar)</Russian>
|
||||||
|
<German>6,5x47mm 20-Patronen-Magazin (HPBT Scenar)</German>
|
||||||
|
<Italian>6.5x47mm 20Rnd Mag (HPBT Scenar)</Italian>
|
||||||
|
<Czech>6.5x47mm 20náb. Zásobník (HPBT Scenar)</Czech>
|
||||||
|
<Portuguese>Carregador 6.5x47mm com 20 cartuchos (HPBT Scenar)</Portuguese>
|
||||||
|
<Hungarian>6,5x47mm 20-lövedékes tár (HPBT Scenar)</Hungarian>
|
||||||
|
<Japanese>6.5x47mm 20発入り 弾倉 (HPBT Scenar)</Japanese>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_Ballistics_20Rnd_65x47_Scenar_mag_NameShort">
|
||||||
|
<English>6.5mm Lapua</English>
|
||||||
|
<French>6.5mm Lapua</French>
|
||||||
|
<Spanish>6.5mm Lapua</Spanish>
|
||||||
|
<Polish>6,5mm Lapua</Polish>
|
||||||
|
<Russian>6,5 мм Lapua</Russian>
|
||||||
|
<German>6,5mm Lapua</German>
|
||||||
|
<Italian>6.5mm Lapua</Italian>
|
||||||
|
<Czech>6.5mm Lapua</Czech>
|
||||||
|
<Portuguese>6.5mm Lapua</Portuguese>
|
||||||
|
<Hungarian>6,5mm Lapua</Hungarian>
|
||||||
|
<Japanese>6.5mm Lapua</Japanese>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_Ballistics_20Rnd_65x47_Scenar_mag_Description">
|
||||||
|
<English>Caliber: 6.5x47mm (HPBT Scenar)<br />Rounds: 20<br />Used in: QBU-88</English>
|
||||||
|
<French>Calibre: 6.5x47mm (HPBT Scenar)<br />Cartouches: 20</French>
|
||||||
|
<Spanish>Calibre: 6.5x47mm (HPBT Scenar)<br />Balas: 20<br />Se usa en: QBU-88</Spanish>
|
||||||
|
<Polish>Kaliber: 6,5x47mm (HPBT Scenar)<br />Pociski: 20</Polish>
|
||||||
|
<Russian>Калибр: 6,5x47 мм (экспансивные Scenar)<br />Патронов: 20<br />Используются с: QBU-88</Russian>
|
||||||
|
<German>Kaliber: 6,5x47mm (HPBT Scenar)<br />Patronen: 20<br />Eingesetzt von: QBU-88</German>
|
||||||
|
<Italian>Calibro: 6.5x47mm (HPBT Scenar)<br />Munizioni: 20<br />In uso su: QBU-88</Italian>
|
||||||
|
<Czech>Ráže: 6.5x47mm (HPBT Scenar)<br />Nábojů: 20<br />Použití u: QBU-88</Czech>
|
||||||
|
<Portuguese>Calibre: 6.5x47mm (HPBT Scenar)<br/>Cartuchos: 20<br/>Usado em: QBU-88</Portuguese>
|
||||||
|
<Hungarian>Kaliber: 6,5x47mm (HPBT Scenar)<br />Lövedékek: 20<br />Használható: QBU-88</Hungarian>
|
||||||
|
<Japanese>口径: 6.5x47mm (HPBT Scenar)&lt;br /&gt;装填数: 20&lt;br /&gt;次で使用: QBU-88</Japanese>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_Ballistics_20Rnd_65_Creedmor_mag_Name">
|
||||||
|
<English>6.5mm Creedmor 20Rnd Mag</English>
|
||||||
|
<Polish>Magazynek 6,5mm Creedmor 20rd</Polish>
|
||||||
|
<Italian>6.5mm Creedmor 20Rnd Mag</Italian>
|
||||||
|
<Russian>Магазин из 20-ти 6,5 мм Creedmor</Russian>
|
||||||
|
<German>6,5mm Creedmor 20-Patronen-Magazin</German>
|
||||||
|
<Spanish>Cargador de 20 balas Creedmor de 6.5mm</Spanish>
|
||||||
|
<French>Ch. 6.5mm Creedmor 20Cps</French>
|
||||||
|
<Czech>6.5mm Creedmor 20náb. Zásobník</Czech>
|
||||||
|
<Portuguese>Carregador 6.5mm com 20 cartuchos Creedmor</Portuguese>
|
||||||
|
<Hungarian>6,5mm Creedmor 20-lövedékes tár</Hungarian>
|
||||||
|
<Japanese>6.5mm Creedmor 20発入り 弾倉</Japanese>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_Ballistics_20Rnd_65_Creedmor_mag_NameShort">
|
||||||
|
<English>6.5mm CM</English>
|
||||||
|
<French>6.5mm CM</French>
|
||||||
|
<Spanish>6.5mm CM</Spanish>
|
||||||
|
<Polish>6,5mm CM</Polish>
|
||||||
|
<Russian>6,5 мм CM</Russian>
|
||||||
|
<German>6,5mm CM</German>
|
||||||
|
<Italian>6.5mm CM</Italian>
|
||||||
|
<Czech>6.5mm CM</Czech>
|
||||||
|
<Portuguese>6.5mm CM</Portuguese>
|
||||||
|
<Hungarian>6,5mm CM</Hungarian>
|
||||||
|
<Japanese>6.5mm CM</Japanese>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_Ballistics_20Rnd_65_Creedmor_mag_Description">
|
||||||
|
<English>Caliber: 6.5x47mm Creedmor<br />Rounds: 20<br />Used in: QBU-88</English>
|
||||||
|
<Polish>Kaliber: 6,5x47mm Creedmor<br />Pociski: 20<br />Używany w: QBU-88</Polish>
|
||||||
|
<German>Kaliber: 6,5x47mm Creedmor<br />Patronen: 20<br />Eingesetzt von: QBU-88</German>
|
||||||
|
<French>Calibre: 6.5x47mm Creedmor <br />Cartouches: 20<br />Utilisé avec: QBU-88</French>
|
||||||
|
<Italian>Calibro: 6.5mm Creedmor<br />Munizioni: 20<br />In uso su: QBU-88</Italian>
|
||||||
|
<Spanish>Calibre: 6.5mm Creedmor<br />Balas: 20<br />Se usa en: QBU-88</Spanish>
|
||||||
|
<Russian>Калибр: 6,5x47мм Creedmor<br />Патронов: 20<br />Используются c: QBU-88</Russian>
|
||||||
|
<Czech>Ráže: 6.5x47mm Creedmor<br />Nábojů: 20<br />Použití u: QBU-88</Czech>
|
||||||
|
<Portuguese>Calibre: 6.5x47mm Creedmor<br/>Cartuchos: 20<br/>Usado em: QBU-88</Portuguese>
|
||||||
|
<Hungarian>Kaliber: 6,5x47mm Creedmor<br />Lövedékek: 20<br />Használható: QBU-88</Hungarian>
|
||||||
|
<Japanese>口径: 6.5x47mm Creedmor&lt;br /&gt;装填数: 20&lt;br /&gt;次で使用: QBU-88</Japanese>
|
||||||
|
</Key>
|
||||||
<!-- MX -->
|
<!-- MX -->
|
||||||
<Key ID="STR_ACE_Ballistics_30Rnd_65x39_caseless_mag_Tracer_DimName">
|
<Key ID="STR_ACE_Ballistics_30Rnd_65x39_caseless_mag_Tracer_DimName">
|
||||||
<English>6.5mm 30Rnd Tracer IR-DIM Mag</English>
|
<English>6.5mm 30Rnd Tracer IR-DIM Mag</English>
|
||||||
@ -1607,6 +1686,45 @@
|
|||||||
<Hungarian>Kaliber: 8,6x70mm (API526)<br />Lövedékek: 10</Hungarian>
|
<Hungarian>Kaliber: 8,6x70mm (API526)<br />Lövedékek: 10</Hungarian>
|
||||||
<Japanese>口径: 8.6x70mm (API526)&lt;br /&gt;装填数: 10</Japanese>
|
<Japanese>口径: 8.6x70mm (API526)&lt;br /&gt;装填数: 10</Japanese>
|
||||||
</Key>
|
</Key>
|
||||||
|
<Key ID="STR_ACE_Ballistics_7Rnd_408_305gr_Mag_Name">
|
||||||
|
<English>.408 7Rnd Mag (305gr)</English>
|
||||||
|
<French>Ch. .408 7Cps (305gr)</French>
|
||||||
|
<Spanish>Cargador de 7 balas de .408 (305gr)</Spanish>
|
||||||
|
<Polish>Magazynek .408 7rd (305gr)</Polish>
|
||||||
|
<Russian>Магазин из 7-ти .408 (305gr)</Russian>
|
||||||
|
<German>.408 7-Patronen-Magazin (305gr)</German>
|
||||||
|
<Italian>.408 7Rnd Mag (305gr)</Italian>
|
||||||
|
<Czech>.408 7náb. Zásobník (305gr)</Czech>
|
||||||
|
<Portuguese>Carregador .408 (305gr) com 7 cartuchos </Portuguese>
|
||||||
|
<Hungarian>.408 7-lövedékes tár (305gr)</Hungarian>
|
||||||
|
<Japanese>.408 7発入り 弾倉 (305gr)</Japanese>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_Ballistics_7Rnd_408_305gr_Mag_NameShort">
|
||||||
|
<English>.408</English>
|
||||||
|
<French>.408</French>
|
||||||
|
<Spanish>.408</Spanish>
|
||||||
|
<Polish>.408</Polish>
|
||||||
|
<Russian>.408</Russian>
|
||||||
|
<German>.408</German>
|
||||||
|
<Italian>.408</Italian>
|
||||||
|
<Czech>.408</Czech>
|
||||||
|
<Portuguese>.408</Portuguese>
|
||||||
|
<Hungarian>.408</Hungarian>
|
||||||
|
<Japanese>.408</Japanese>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_Ballistics_7Rnd_408_305gr_Mag_Description">
|
||||||
|
<English>Caliber: .408 CheyTac (305gr)<br />Rounds: 7</English>
|
||||||
|
<French>Calibre: .408 CheyTac (305gr)<br />Cartouches: 7</French>
|
||||||
|
<Spanish>Calibre: .408 CheyTac (305gr)<br />Balas: 7</Spanish>
|
||||||
|
<Polish>Kaliber: .408 CheyTac (305gr)<br />Pociski: 7</Polish>
|
||||||
|
<Russian>Калибр: .408 CheyTac (305gr)<br />Патронов: 7</Russian>
|
||||||
|
<German>Kaliber: .408 CheyTac (305gr)<br />Patronen: 7</German>
|
||||||
|
<Italian>Calibro: .408 CheyTac (305gr)<br />Munizioni: 7</Italian>
|
||||||
|
<Czech>Ráže: .408 CheyTac (305gr)<br />Nábojů: 7</Czech>
|
||||||
|
<Portuguese>Calibre: .408 CheyTac (305gr)<br/>Cartuchos: 7</Portuguese>
|
||||||
|
<Hungarian>Kaliber: .408 CheyTac (305gr)<br />Lövedékek: 7</Hungarian>
|
||||||
|
<Japanese>口径: .408 CheyTac (305gr)&lt;br /&gt;装填数: 7</Japanese>
|
||||||
|
</Key>
|
||||||
<Key ID="STR_ACE_Ballistics_5Rnd_127x99_Mag_Name">
|
<Key ID="STR_ACE_Ballistics_5Rnd_127x99_Mag_Name">
|
||||||
<English>12.7x99mm 5Rnd Mag</English>
|
<English>12.7x99mm 5Rnd Mag</English>
|
||||||
<French>Ch. 12.7x99mm 5Cps</French>
|
<French>Ch. 12.7x99mm 5Cps</French>
|
||||||
|
@ -2,7 +2,9 @@
|
|||||||
|
|
||||||
ADDON = false;
|
ADDON = false;
|
||||||
|
|
||||||
|
PREP_RECOMPILE_START;
|
||||||
#include "XEH_PREP.hpp"
|
#include "XEH_PREP.hpp"
|
||||||
|
PREP_RECOMPILE_END;
|
||||||
|
|
||||||
GVAR(captivityEnabled) = false;
|
GVAR(captivityEnabled) = false;
|
||||||
|
|
||||||
|
@ -259,12 +259,17 @@ class CfgVehicles {
|
|||||||
GVAR(space) = 4;
|
GVAR(space) = 4;
|
||||||
};
|
};
|
||||||
|
|
||||||
// jets
|
// planes (off by default as most are attack jets)
|
||||||
class Plane: Air {
|
class Plane: Air {
|
||||||
GVAR(space) = 0;
|
GVAR(space) = 0;
|
||||||
GVAR(hasCargo) = 0;
|
GVAR(hasCargo) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class Plane_Base_F: Plane {};
|
||||||
|
class Plane_Civil_01_base_F: Plane_Base_F { // Tanoa Civilian Prop Plane
|
||||||
|
GVAR(space) = 2;
|
||||||
|
GVAR(hasCargo) = 1;
|
||||||
|
};
|
||||||
class VTOL_Base_F;
|
class VTOL_Base_F;
|
||||||
class VTOL_01_base_F: VTOL_Base_F {
|
class VTOL_01_base_F: VTOL_Base_F {
|
||||||
GVAR(space) = 4;
|
GVAR(space) = 4;
|
||||||
|
@ -2,7 +2,9 @@
|
|||||||
|
|
||||||
ADDON = false;
|
ADDON = false;
|
||||||
|
|
||||||
|
PREP_RECOMPILE_START;
|
||||||
#include "XEH_PREP.hpp"
|
#include "XEH_PREP.hpp"
|
||||||
|
PREP_RECOMPILE_END;
|
||||||
|
|
||||||
GVAR(initializedItemClasses) = [];
|
GVAR(initializedItemClasses) = [];
|
||||||
GVAR(initializedVehicleClasses) = [];
|
GVAR(initializedVehicleClasses) = [];
|
||||||
|
@ -21,7 +21,7 @@ TRACE_2("params",_player,_object);
|
|||||||
|
|
||||||
if (!([_player, _object, []] call EFUNC(common,canInteractWith))) exitWith {false};
|
if (!([_player, _object, []] call EFUNC(common,canInteractWith))) exitWith {false};
|
||||||
|
|
||||||
private _nearestVehicle = [_player] call FUNC(findNearestVehicle);
|
private _nearestVehicle = [_player, _object] call FUNC(findNearestVehicle);
|
||||||
|
|
||||||
if (_nearestVehicle isKindOf "Cargo_Base_F" || isNull _nearestVehicle) then {
|
if (_nearestVehicle isKindOf "Cargo_Base_F" || isNull _nearestVehicle) then {
|
||||||
{
|
{
|
||||||
|
@ -20,6 +20,11 @@ params [["_item", "", [objNull,""]], "_vehicle"];
|
|||||||
|
|
||||||
if (speed _vehicle > 1 || {((getPos _vehicle) select 2) > 3}) exitWith {TRACE_1("vehicle not stable",_vehicle); false};
|
if (speed _vehicle > 1 || {((getPos _vehicle) select 2) > 3}) exitWith {TRACE_1("vehicle not stable",_vehicle); false};
|
||||||
|
|
||||||
|
if (_item isEqualType objNull && {{alive _x && {getText (configFile >> "CfgVehicles" >> typeOf _x >> "simulation") != "UAVPilot"}} count crew _item > 0}) exitWith {
|
||||||
|
TRACE_1("item is occupied",_item);
|
||||||
|
false
|
||||||
|
};
|
||||||
|
|
||||||
private _itemSize = [_item] call FUNC(getSizeItem);
|
private _itemSize = [_item] call FUNC(getSizeItem);
|
||||||
private _validItem = false;
|
private _validItem = false;
|
||||||
if (_item isEqualType "") then {
|
if (_item isEqualType "") then {
|
||||||
|
@ -1,35 +1,41 @@
|
|||||||
/*
|
/*
|
||||||
* Author: Glowbal
|
* Author: Glowbal
|
||||||
* Get nearest vehicle from unit, priority: Car-Air-Tank-Ship.
|
* Get nearest vehicle from unit that is not excluded, priority: Car-Air-Tank-Ship.
|
||||||
*
|
*
|
||||||
* Arguments:
|
* Arguments:
|
||||||
* 0: Unit <OBJECT>
|
* 0: Unit <OBJECT>
|
||||||
|
* 1: Object to exclude <OBJECT>
|
||||||
*
|
*
|
||||||
* Return Value:
|
* Return Value:
|
||||||
* Vehicle in Distance <OBJECT>
|
* Vehicle in Distance <OBJECT>
|
||||||
*
|
*
|
||||||
* Example:
|
* Example:
|
||||||
* [unit] call ace_cargo_fnc_findNearestVehicle
|
* [unit, object] call ace_cargo_fnc_findNearestVehicle
|
||||||
*
|
*
|
||||||
* Public: No
|
* Public: No
|
||||||
*/
|
*/
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
params ["_unit"];
|
params ["_unit","_object"];
|
||||||
|
|
||||||
private _loadCar = nearestObject [_unit, "car"];
|
private _loadCar = nearestObjects [_unit, ["car"], MAX_LOAD_DISTANCE];
|
||||||
if (_unit distance _loadCar <= MAX_LOAD_DISTANCE) exitWith {_loadCar};
|
_loadCar deleteAt (_loadCar find _object);
|
||||||
|
if !(_loadCar isEqualTo []) exitWith {_loadCar select 0};
|
||||||
|
|
||||||
private _loadHelicopter = nearestObject [_unit, "air"];
|
private _loadHelicopter = nearestObjects [_unit, ["air"], MAX_LOAD_DISTANCE];
|
||||||
if (_unit distance _loadHelicopter <= MAX_LOAD_DISTANCE) exitWith {_loadHelicopter};
|
_loadHelicopter deleteAt (_loadHelicopter find _object);
|
||||||
|
if !(_loadHelicopter isEqualTo []) exitWith {_loadHelicopter select 0};
|
||||||
|
|
||||||
private _loadTank = nearestObject [_unit, "tank"];
|
private _loadTank = nearestObjects [_unit, ["tank"], MAX_LOAD_DISTANCE];
|
||||||
if (_unit distance _loadTank <= MAX_LOAD_DISTANCE) exitWith {_loadTank};
|
_loadTank deleteAt (_loadTank find _object);
|
||||||
|
if !(_loadTank isEqualTo []) exitWith {_loadTank select 0};
|
||||||
|
|
||||||
private _loadShip = nearestObject [_unit, "ship"];
|
private _loadShip = nearestObjects [_unit, ["ship"], MAX_LOAD_DISTANCE];
|
||||||
if (_unit distance _loadShip <= MAX_LOAD_DISTANCE) exitWith {_loadShip};
|
_loadShip deleteAt (_loadShip find _object);;
|
||||||
|
if !(_loadShip isEqualTo []) exitWith {_loadShip select 0};
|
||||||
|
|
||||||
private _loadContainer = nearestObject [_unit,"Cargo_base_F"];
|
private _loadContainer = nearestObjects [_unit, ["Cargo_base_F"], MAX_LOAD_DISTANCE];
|
||||||
if (_unit distance _loadContainer <= MAX_LOAD_DISTANCE) exitWith {_loadContainer};
|
_loadContainer deleteAt (_loadContainer find _object);
|
||||||
|
if !(_loadContainer isEqualTo []) exitWith {_loadContainer select 0};
|
||||||
|
|
||||||
objNull
|
objNull
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
params ["_player", "_object"];
|
params ["_player", "_object"];
|
||||||
TRACE_2("params",_player,_object);
|
TRACE_2("params",_player,_object);
|
||||||
|
|
||||||
private _vehicle = [_player] call FUNC(findNearestVehicle);
|
private _vehicle = [_player, _object] call FUNC(findNearestVehicle);
|
||||||
|
|
||||||
if ((isNull _vehicle) || {_vehicle isKindOf "Cargo_Base_F"}) then {
|
if ((isNull _vehicle) || {_vehicle isKindOf "Cargo_Base_F"}) then {
|
||||||
{
|
{
|
||||||
|
@ -44,7 +44,7 @@ class CfgWeapons {
|
|||||||
descriptionShort = CSTRING(Shield_Empty_DescriptionShort);
|
descriptionShort = CSTRING(Shield_Empty_DescriptionShort);
|
||||||
model = "\A3\weapons_F\ammo\mag_univ.p3d";
|
model = "\A3\weapons_F\ammo\mag_univ.p3d";
|
||||||
picture = QPATHTOF(UI\ace_chemlight_shield_x_ca.paa);
|
picture = QPATHTOF(UI\ace_chemlight_shield_x_ca.paa);
|
||||||
scope = 1;
|
scope = 2;
|
||||||
class ItemInfo: InventoryItem_Base_F {
|
class ItemInfo: InventoryItem_Base_F {
|
||||||
mass = 1;
|
mass = 1;
|
||||||
};
|
};
|
||||||
|
@ -3,6 +3,8 @@
|
|||||||
ADDON = false;
|
ADDON = false;
|
||||||
LOG(MSG_INIT);
|
LOG(MSG_INIT);
|
||||||
|
|
||||||
|
PREP_RECOMPILE_START;
|
||||||
#include "XEH_PREP.hpp"
|
#include "XEH_PREP.hpp"
|
||||||
|
PREP_RECOMPILE_END;
|
||||||
|
|
||||||
ADDON = true;
|
ADDON = true;
|
||||||
|
@ -5,16 +5,19 @@
|
|||||||
<English>Chemlights</English>
|
<English>Chemlights</English>
|
||||||
<Japanese>ケミライト</Japanese>
|
<Japanese>ケミライト</Japanese>
|
||||||
<Polish>Świetliki</Polish>
|
<Polish>Świetliki</Polish>
|
||||||
|
<German>Knicklichter</German>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Chemlights_Action_Prepare">
|
<Key ID="STR_ACE_Chemlights_Action_Prepare">
|
||||||
<English>Prepare %1</English>
|
<English>Prepare %1</English>
|
||||||
<Japanese>%1 をつかう</Japanese>
|
<Japanese>%1 をつかう</Japanese>
|
||||||
<Polish>Przygotuj %1</Polish>
|
<Polish>Przygotuj %1</Polish>
|
||||||
|
<German>%1 vorbereiten</German>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Chemlights_Action_Prepare_Done">
|
<Key ID="STR_ACE_Chemlights_Action_Prepare_Done">
|
||||||
<English>%1<br/>Prepared</English>
|
<English>%1<br/>Prepared</English>
|
||||||
<Japanese>%1&lt;br/&gt; をつかった</Japanese>
|
<Japanese>%1&lt;br/&gt; をつかった</Japanese>
|
||||||
<Polish>%1<br/>Przygotowany</Polish>
|
<Polish>%1<br/>Przygotowany</Polish>
|
||||||
|
<German>%1<br/>vorbereitet</German>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Chemlights_Inventory_Full">
|
<Key ID="STR_ACE_Chemlights_Inventory_Full">
|
||||||
<English>No inventory space</English>
|
<English>No inventory space</English>
|
||||||
@ -33,180 +36,216 @@
|
|||||||
<English>[ACE] Chemlights</English>
|
<English>[ACE] Chemlights</English>
|
||||||
<Japanese>[ACE] ケミライト</Japanese>
|
<Japanese>[ACE] ケミライト</Japanese>
|
||||||
<Polish>[ACE] Świetliki</Polish>
|
<Polish>[ACE] Świetliki</Polish>
|
||||||
|
<German>[ACE] Knicklichter</German>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Chemlights_Orange_DisplayName">
|
<Key ID="STR_ACE_Chemlights_Orange_DisplayName">
|
||||||
<English>Chemlight (Orange)</English>
|
<English>Chemlight (Orange)</English>
|
||||||
<Japanese>ケミライト (オレンジ)</Japanese>
|
<Japanese>ケミライト (オレンジ)</Japanese>
|
||||||
<Polish>Świetlik (pomarańczowy)</Polish>
|
<Polish>Świetlik (pomarańczowy)</Polish>
|
||||||
|
<German>Knicklicht (orange)</German>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Chemlights_Orange_DisplayNameShort">
|
<Key ID="STR_ACE_Chemlights_Orange_DisplayNameShort">
|
||||||
<English>Orange Light</English>
|
<English>Orange Light</English>
|
||||||
<Japanese>オレンジ色</Japanese>
|
<Japanese>オレンジ色</Japanese>
|
||||||
<Polish>Pomarańczowe światło</Polish>
|
<Polish>Pomarańczowe światło</Polish>
|
||||||
|
<German>Oranges Knicklicht</German>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Chemlights_Orange_DescriptionShort">
|
<Key ID="STR_ACE_Chemlights_Orange_DescriptionShort">
|
||||||
<English>Type: Light - Orange<br />Rounds: 1<br />Used in: Hand</English>
|
<English>Type: Light - Orange<br />Rounds: 1<br />Used in: Hand</English>
|
||||||
<Japanese>種類: 照明 - オレンジ&lt;br /&gt;装填数: 1&lt;br /&gt;次で使用: 携帯</Japanese>
|
<Japanese>種類: 照明 - オレンジ&lt;br /&gt;装填数: 1&lt;br /&gt;次で使用: 携帯</Japanese>
|
||||||
<Polish>Typ: Światło - pomarańczowe<br/>Pociski: 1<br/>Używany w: ręce</Polish>
|
<Polish>Typ: Światło - pomarańczowe<br/>Pociski: 1<br/>Używany w: ręce</Polish>
|
||||||
|
<German>Typ: Licht - orange<br />Anzahl: 1<br />Benutzt in: Hand</German>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Chemlights_White_DisplayName">
|
<Key ID="STR_ACE_Chemlights_White_DisplayName">
|
||||||
<English>Chemlight (White)</English>
|
<English>Chemlight (White)</English>
|
||||||
<Japanese>ケミライト (白)</Japanese>
|
<Japanese>ケミライト (白)</Japanese>
|
||||||
<Polish>Świetlik (biały)</Polish>
|
<Polish>Świetlik (biały)</Polish>
|
||||||
|
<German>Knicklicht (weiß)</German>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Chemlights_White_DisplayNameShort">
|
<Key ID="STR_ACE_Chemlights_White_DisplayNameShort">
|
||||||
<English>White Light</English>
|
<English>White Light</English>
|
||||||
<Japanese>白色</Japanese>
|
<Japanese>白色</Japanese>
|
||||||
<Polish>Białe światło</Polish>
|
<Polish>Białe światło</Polish>
|
||||||
|
<German>Weißes Knicklicht</German>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Chemlights_White_DescriptionShort">
|
<Key ID="STR_ACE_Chemlights_White_DescriptionShort">
|
||||||
<English>Type: Light - White<br />Rounds: 1<br />Used in: Hand</English>
|
<English>Type: Light - White<br />Rounds: 1<br />Used in: Hand</English>
|
||||||
<Japanese>種類: 照明 - 白&lt;br /&gt;装填数: 1&lt;br /&gt;次で使用: 携帯</Japanese>
|
<Japanese>種類: 照明 - 白&lt;br /&gt;装填数: 1&lt;br /&gt;次で使用: 携帯</Japanese>
|
||||||
<Polish>Typ: Światło - białe<br/>Pociski: 1<br/>Używany w: ręce</Polish>
|
<Polish>Typ: Światło - białe<br/>Pociski: 1<br/>Używany w: ręce</Polish>
|
||||||
|
<German>Typ: Licht - weiß<br />Anzahl: 1<br />Benutzt in: Hand</German>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Chemlights_HiRed_DisplayName">
|
<Key ID="STR_ACE_Chemlights_HiRed_DisplayName">
|
||||||
<English>Chemlight (Hi Red)</English>
|
<English>Chemlight (Hi Red)</English>
|
||||||
<Japanese>ケミライト (高輝度 赤)</Japanese>
|
<Japanese>ケミライト (高輝度 赤)</Japanese>
|
||||||
<Polish>Świetlik (jaskrawy czerwony)</Polish>
|
<Polish>Świetlik (jaskrawy czerwony)</Polish>
|
||||||
|
<German>Knicklicht (rot, hell)</German>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Chemlights_HiRed_DisplayNameShort">
|
<Key ID="STR_ACE_Chemlights_HiRed_DisplayNameShort">
|
||||||
<English>Red Hi Light</English>
|
<English>Red Hi Light</English>
|
||||||
<Japanese>高輝度の赤色</Japanese>
|
<Japanese>高輝度の赤色</Japanese>
|
||||||
<Polish>Jaskrawe czerwone światło</Polish>
|
<Polish>Jaskrawe czerwone światło</Polish>
|
||||||
|
<German>Helles, rotes Knicklicht</German>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Chemlights_HiRed_DescriptionShort">
|
<Key ID="STR_ACE_Chemlights_HiRed_DescriptionShort">
|
||||||
<English>Type: Light - Red Hi (5 minute)<br />Rounds: 1<br />Used in: Hand</English>
|
<English>Type: Light - Red Hi (5 minute)<br />Rounds: 1<br />Used in: Hand</English>
|
||||||
<Japanese>種類: 照明 - 高輝度 赤 (5分間)&lt;br /&gt;装填数: 1&lt;br /&gt;次で使用: 携帯</Japanese>
|
<Japanese>種類: 照明 - 高輝度 赤 (5分間)&lt;br /&gt;装填数: 1&lt;br /&gt;次で使用: 携帯</Japanese>
|
||||||
<Polish>Typ: Światło - jaskrawe czerwone (5 minut)<br/>Pociski: 1<br/>Używany w: ręce</Polish>
|
<Polish>Typ: Światło - jaskrawe czerwone (5 minut)<br/>Pociski: 1<br/>Używany w: ręce</Polish>
|
||||||
|
<German>Typ: Licht - rot, hell (5 Minuten)<br />Anzahl: 1<br />Benutzt in: Hand</German>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Chemlights_HiYellow_DisplayName">
|
<Key ID="STR_ACE_Chemlights_HiYellow_DisplayName">
|
||||||
<English>Chemlight (Hi Yellow)</English>
|
<English>Chemlight (Hi Yellow)</English>
|
||||||
<Japanese>ケミライト (高輝度 黄)</Japanese>
|
<Japanese>ケミライト (高輝度 黄)</Japanese>
|
||||||
<Polish>Świetlik (jaskrawy żółty)</Polish>
|
<Polish>Świetlik (jaskrawy żółty)</Polish>
|
||||||
|
<German>Knicklicht (gelb, hell)</German>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Chemlights_HiYellow_DisplayNameShort">
|
<Key ID="STR_ACE_Chemlights_HiYellow_DisplayNameShort">
|
||||||
<English>Yellow Hi Light</English>
|
<English>Yellow Hi Light</English>
|
||||||
<Japanese>高輝度の黄色</Japanese>
|
<Japanese>高輝度の黄色</Japanese>
|
||||||
<Polish>Jaskrawe żółte światło</Polish>
|
<Polish>Jaskrawe żółte światło</Polish>
|
||||||
|
<German>Helles, gelbes Knicklicht</German>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Chemlights_HiYellow_DescriptionShort">
|
<Key ID="STR_ACE_Chemlights_HiYellow_DescriptionShort">
|
||||||
<English>Type: Light - Yellow Hi (5 minute)<br />Rounds: 1<br />Used in: Hand</English>
|
<English>Type: Light - Yellow Hi (5 minute)<br />Rounds: 1<br />Used in: Hand</English>
|
||||||
<Japanese>種類: 照明 - 高輝度 黄 (5分間)&lt;br /&gt;装填数: 1&lt;br /&gt;次で使用: 携帯</Japanese>
|
<Japanese>種類: 照明 - 高輝度 黄 (5分間)&lt;br /&gt;装填数: 1&lt;br /&gt;次で使用: 携帯</Japanese>
|
||||||
<Polish>Typ: Światło - jaskrawe żółte (5 minut)<br/>Pociski: 1<br/>Używany w: ręce</Polish>
|
<Polish>Typ: Światło - jaskrawe żółte (5 minut)<br/>Pociski: 1<br/>Używany w: ręce</Polish>
|
||||||
|
<German>Typ: Licht - gelb, hell (5 Minuten)<br />Anzahl: 1<br />Benutzt in: Hand</German>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Chemlights_HiOrange_DisplayName">
|
<Key ID="STR_ACE_Chemlights_HiOrange_DisplayName">
|
||||||
<English>Chemlight (Hi Orange)</English>
|
<English>Chemlight (Hi Orange)</English>
|
||||||
<Japanese>ケミライト (高輝度 オレンジ)</Japanese>
|
<Japanese>ケミライト (高輝度 オレンジ)</Japanese>
|
||||||
<Polish>Świetlik (jaskrawy pomarańczowy)</Polish>
|
<Polish>Świetlik (jaskrawy pomarańczowy)</Polish>
|
||||||
|
<German>Knicklicht (orange, hell)</German>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Chemlights_HiOrange_DisplayNameShort">
|
<Key ID="STR_ACE_Chemlights_HiOrange_DisplayNameShort">
|
||||||
<English>Orange Hi Light</English>
|
<English>Orange Hi Light</English>
|
||||||
<Japanese>高輝度のオレンジ</Japanese>
|
<Japanese>高輝度のオレンジ</Japanese>
|
||||||
<Polish>Jaskrawe pomarańczowe światło</Polish>
|
<Polish>Jaskrawe pomarańczowe światło</Polish>
|
||||||
|
<German>Helles, oranges Knicklicht</German>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Chemlights_HiOrange_DescriptionShort">
|
<Key ID="STR_ACE_Chemlights_HiOrange_DescriptionShort">
|
||||||
<English>Type: Light - Orange Hi (5 minute)<br />Rounds: 1<br />Used in: Hand</English>
|
<English>Type: Light - Orange Hi (5 minute)<br />Rounds: 1<br />Used in: Hand</English>
|
||||||
<Japanese>種類: 照明 - 高輝度 オレンジ (5分間)&lt;br /&gt;装填数: 1&lt;br /&gt;次で使用: 携帯</Japanese>
|
<Japanese>種類: 照明 - 高輝度 オレンジ (5分間)&lt;br /&gt;装填数: 1&lt;br /&gt;次で使用: 携帯</Japanese>
|
||||||
<Polish>Typ: Światło - jaskrawe pomarańczowe (5 minut)<br/>Pociski: 1<br/>Używany w: ręce</Polish>
|
<Polish>Typ: Światło - jaskrawe pomarańczowe (5 minut)<br/>Pociski: 1<br/>Używany w: ręce</Polish>
|
||||||
|
<German>Typ: Licht - orange, hell (5 Minuten)<br />Anzahl: 1<br />Benutzt in: Hand</German>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Chemlights_HiWhite_DisplayName">
|
<Key ID="STR_ACE_Chemlights_HiWhite_DisplayName">
|
||||||
<English>Chemlight (Hi White)</English>
|
<English>Chemlight (Hi White)</English>
|
||||||
<Japanese>ケミライト (高輝度 白)</Japanese>
|
<Japanese>ケミライト (高輝度 白)</Japanese>
|
||||||
<Polish>Świetlik (jaskrawy biały)</Polish>
|
<Polish>Świetlik (jaskrawy biały)</Polish>
|
||||||
|
<German>Knicklicht (weiß, hell)</German>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Chemlights_HiWhite_DisplayNameShort">
|
<Key ID="STR_ACE_Chemlights_HiWhite_DisplayNameShort">
|
||||||
<English>White Hi Light</English>
|
<English>White Hi Light</English>
|
||||||
<Japanese>高輝度の白色</Japanese>
|
<Japanese>高輝度の白色</Japanese>
|
||||||
<Polish>Jaskrawe białe światło</Polish>
|
<Polish>Jaskrawe białe światło</Polish>
|
||||||
|
<German>Helles, weißes Knicklicht</German>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Chemlights_HiWhite_DescriptionShort">
|
<Key ID="STR_ACE_Chemlights_HiWhite_DescriptionShort">
|
||||||
<English>Type: Light - White Hi (5 minute)<br />Rounds: 1<br />Used in: Hand</English>
|
<English>Type: Light - White Hi (5 minute)<br />Rounds: 1<br />Used in: Hand</English>
|
||||||
<Japanese>種類: 照明 - 高輝度 白 (5分間)&lt;br /&gt;装填数: 1&lt;br /&gt;次で使用: 携帯</Japanese>
|
<Japanese>種類: 照明 - 高輝度 白 (5分間)&lt;br /&gt;装填数: 1&lt;br /&gt;次で使用: 携帯</Japanese>
|
||||||
<Polish>Typ: Światło - jaskrawe białe (5 minut)<br/>Pociski: 1<br/>Używany w: ręce</Polish>
|
<Polish>Typ: Światło - jaskrawe białe (5 minut)<br/>Pociski: 1<br/>Używany w: ręce</Polish>
|
||||||
|
<German>Typ: Licht - weiß, hell (5 Minuten)<br />Anzahl: 1<br />Benutzt in: Hand</German>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Chemlights_IR_DisplayName">
|
<Key ID="STR_ACE_Chemlights_IR_DisplayName">
|
||||||
<English>Chemlight (IR)</English>
|
<English>Chemlight (IR)</English>
|
||||||
<Japanese>ケミライト (IR)</Japanese>
|
<Japanese>ケミライト (IR)</Japanese>
|
||||||
<Polish>Świetlik (podczerwony)</Polish>
|
<Polish>Świetlik (podczerwony)</Polish>
|
||||||
|
<German>Knicklicht (IR)</German>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Chemlights_IR_DisplayNameShort">
|
<Key ID="STR_ACE_Chemlights_IR_DisplayNameShort">
|
||||||
<English>IR Light</English>
|
<English>IR Light</English>
|
||||||
<Japanese>赤外線光</Japanese>
|
<Japanese>赤外線光</Japanese>
|
||||||
<Polish>Światło podczerwone</Polish>
|
<Polish>Światło podczerwone</Polish>
|
||||||
|
<German>IR-Knicklicht</German>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Chemlights_IR_DescriptionShort">
|
<Key ID="STR_ACE_Chemlights_IR_DescriptionShort">
|
||||||
<English>Type: Light - Infrared<br />Rounds: 1<br />Used in: Hand</English>
|
<English>Type: Light - Infrared<br />Rounds: 1<br />Used in: Hand</English>
|
||||||
<Japanese>種類: 照明 - 赤外線&lt;br /&gt;装填数: 1&lt;br /&gt;次で使用: 携帯</Japanese>
|
<Japanese>種類: 照明 - 赤外線&lt;br /&gt;装填数: 1&lt;br /&gt;次で使用: 携帯</Japanese>
|
||||||
<Polish>Typ: Światło - podczerwone<br/>Pociski: 1<br/>Używany w: ręce</Polish>
|
<Polish>Typ: Światło - podczerwone<br/>Pociski: 1<br/>Używany w: ręce</Polish>
|
||||||
|
<German>Typ: Licht - infrarot<br />Anzahl: 1<br />Benutzt in: Hand</German>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Chemlights_Shield_Empty_DisplayName">
|
<Key ID="STR_ACE_Chemlights_Shield_Empty_DisplayName">
|
||||||
<English>Chemlight Shield (Empty)</English>
|
<English>Chemlight Shield (Empty)</English>
|
||||||
<Japanese>ケミライト シールド (空)</Japanese>
|
<Japanese>ケミライト シールド (空)</Japanese>
|
||||||
<Polish>Osłona na świetlik (pusta)</Polish>
|
<Polish>Osłona na świetlik (pusta)</Polish>
|
||||||
|
<German>Knicklicht-Abschirmung (leer)</German>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Chemlights_Shield_Empty_DescriptionShort">
|
<Key ID="STR_ACE_Chemlights_Shield_Empty_DescriptionShort">
|
||||||
<English>Shield for chemlights. Combine with chemlight to prepare reading light.</English>
|
<English>Shield for chemlights. Combine with chemlight to prepare reading light.</English>
|
||||||
<Japanese>ケミライトを入れられます。シールドとケミライトを組み合わせることで、照明にもなりえます。</Japanese>
|
<Japanese>ケミライトを入れられます。シールドとケミライトを組み合わせることで、照明にもなりえます。</Japanese>
|
||||||
<Polish>Osłona na świetliki. Połącz ją ze świetlikiem by stworzyć lampkę do czytania.</Polish>
|
<Polish>Osłona na świetliki. Połącz ją ze świetlikiem by stworzyć lampkę do czytania.</Polish>
|
||||||
|
<German>Abschirmung für Knicklichter. Mit Knicklicht kombinieren, um Leselicht zu erhalten.</German>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Chemlights_Shield_Green_DisplayName">
|
<Key ID="STR_ACE_Chemlights_Shield_Green_DisplayName">
|
||||||
<English>Chemlight Shield (Green)</English>
|
<English>Chemlight Shield (Green)</English>
|
||||||
<Japanese>ケミライト シールド (緑)</Japanese>
|
<Japanese>ケミライト シールド (緑)</Japanese>
|
||||||
<Polish>Osłona na świetlik (zielona)</Polish>
|
<Polish>Osłona na świetlik (zielona)</Polish>
|
||||||
|
<German>Knicklicht-Abschirmung (grün)</German>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Chemlights_Shield_Green_DescriptionShort">
|
<Key ID="STR_ACE_Chemlights_Shield_Green_DescriptionShort">
|
||||||
<English>Green reading light.</English>
|
<English>Green reading light.</English>
|
||||||
<Japanese>緑色の照明。</Japanese>
|
<Japanese>緑色の照明。</Japanese>
|
||||||
<Polish>Zielona lampka.</Polish>
|
<Polish>Zielona lampka.</Polish>
|
||||||
|
<German>Grünes Leselicht.</German>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Chemlights_Shield_Red_DisplayName">
|
<Key ID="STR_ACE_Chemlights_Shield_Red_DisplayName">
|
||||||
<English>Chemlight Shield (Red)</English>
|
<English>Chemlight Shield (Red)</English>
|
||||||
<Japanese>ケミライト シールド (赤)</Japanese>
|
<Japanese>ケミライト シールド (赤)</Japanese>
|
||||||
<Polish>Osłona na świetlik (czerwona)</Polish>
|
<Polish>Osłona na świetlik (czerwona)</Polish>
|
||||||
|
<German>Knicklicht-Abschirmung (rot)</German>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Chemlights_Shield_Red_DescriptionShort">
|
<Key ID="STR_ACE_Chemlights_Shield_Red_DescriptionShort">
|
||||||
<English>Red reading light.</English>
|
<English>Red reading light.</English>
|
||||||
<Japanese>赤色の照明。</Japanese>
|
<Japanese>赤色の照明。</Japanese>
|
||||||
<Polish>Czerwona lampka.</Polish>
|
<Polish>Czerwona lampka.</Polish>
|
||||||
|
<German>Rotes Leselicht.</German>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Chemlights_Shield_Blue_DisplayName">
|
<Key ID="STR_ACE_Chemlights_Shield_Blue_DisplayName">
|
||||||
<English>Chemlight Shield (Blue)</English>
|
<English>Chemlight Shield (Blue)</English>
|
||||||
<Japanese>ケミライト シールド (青)</Japanese>
|
<Japanese>ケミライト シールド (青)</Japanese>
|
||||||
<Polish>Osłona na świetlik (niebieska)</Polish>
|
<Polish>Osłona na świetlik (niebieska)</Polish>
|
||||||
|
<German>Knicklicht-Abschirmung (blau)</German>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Chemlights_Shield_Blue_DescriptionShort">
|
<Key ID="STR_ACE_Chemlights_Shield_Blue_DescriptionShort">
|
||||||
<English>Blue reading light.</English>
|
<English>Blue reading light.</English>
|
||||||
<Japanese>青色の照明。</Japanese>
|
<Japanese>青色の照明。</Japanese>
|
||||||
<Polish>Niebieska lampka.</Polish>
|
<Polish>Niebieska lampka.</Polish>
|
||||||
|
<German>Blaues Leselicht.</German>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Chemlights_Shield_Yellow_DisplayName">
|
<Key ID="STR_ACE_Chemlights_Shield_Yellow_DisplayName">
|
||||||
<English>Chemlight Shield (Yellow)</English>
|
<English>Chemlight Shield (Yellow)</English>
|
||||||
<Japanese>ケミライト シールド (黄)</Japanese>
|
<Japanese>ケミライト シールド (黄)</Japanese>
|
||||||
<Polish>Osłona na świetlik (żółta)</Polish>
|
<Polish>Osłona na świetlik (żółta)</Polish>
|
||||||
|
<German>Knicklicht-Abschirmung (gelb)</German>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Chemlights_Shield_Yellow_DescriptionShort">
|
<Key ID="STR_ACE_Chemlights_Shield_Yellow_DescriptionShort">
|
||||||
<English>Yellow reading light.</English>
|
<English>Yellow reading light.</English>
|
||||||
<Japanese>黄色の照明。</Japanese>
|
<Japanese>黄色の照明。</Japanese>
|
||||||
<Polish>Żółta lampka.</Polish>
|
<Polish>Żółta lampka.</Polish>
|
||||||
|
<German>Gelbes Leselicht.</German>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Chemlights_Shield_Orange_DisplayName">
|
<Key ID="STR_ACE_Chemlights_Shield_Orange_DisplayName">
|
||||||
<English>Chemlight Shield (Orange)</English>
|
<English>Chemlight Shield (Orange)</English>
|
||||||
<Japanese>ケミライト シールド (オレンジ)</Japanese>
|
<Japanese>ケミライト シールド (オレンジ)</Japanese>
|
||||||
<Polish>Osłona na świetlik (pomarańczowa)</Polish>
|
<Polish>Osłona na świetlik (pomarańczowa)</Polish>
|
||||||
|
<German>Knicklicht-Abschirmung (orange)</German>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Chemlights_Shield_Orange_DescriptionShort">
|
<Key ID="STR_ACE_Chemlights_Shield_Orange_DescriptionShort">
|
||||||
<English>Orange reading light.</English>
|
<English>Orange reading light.</English>
|
||||||
<Japanese>オレンジの照明。</Japanese>
|
<Japanese>オレンジの照明。</Japanese>
|
||||||
<Polish>Pomarańczowa lampka.</Polish>
|
<Polish>Pomarańczowa lampka.</Polish>
|
||||||
|
<German>Oranges Leselicht.</German>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Chemlights_Shield_White_DisplayName">
|
<Key ID="STR_ACE_Chemlights_Shield_White_DisplayName">
|
||||||
<English>Chemlight Shield (White)</English>
|
<English>Chemlight Shield (White)</English>
|
||||||
<Japanese>ケミライト シールド (白)</Japanese>
|
<Japanese>ケミライト シールド (白)</Japanese>
|
||||||
<Polish>Osłona na świetlik (biała)</Polish>
|
<Polish>Osłona na świetlik (biała)</Polish>
|
||||||
|
<German>Knicklicht-Abschirmung (weiß)</German>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Chemlights_Shield_White_DescriptionShort">
|
<Key ID="STR_ACE_Chemlights_Shield_White_DescriptionShort">
|
||||||
<English>White reading light.</English>
|
<English>White reading light.</English>
|
||||||
<Japanese>白の照明。</Japanese>
|
<Japanese>白の照明。</Japanese>
|
||||||
|
<German>Weißes Leselicht.</German>
|
||||||
</Key>
|
</Key>
|
||||||
</Package>
|
</Package>
|
||||||
</Project>
|
</Project>
|
@ -142,6 +142,7 @@ PREP(setHearingCapability);
|
|||||||
PREP(setName);
|
PREP(setName);
|
||||||
PREP(setParameter);
|
PREP(setParameter);
|
||||||
PREP(setPitchBankYaw);
|
PREP(setPitchBankYaw);
|
||||||
|
PREP(setPlayerOwner);
|
||||||
PREP(setProne);
|
PREP(setProne);
|
||||||
PREP(setSetting);
|
PREP(setSetting);
|
||||||
PREP(setSettingFromConfig);
|
PREP(setSettingFromConfig);
|
||||||
|
@ -3,7 +3,9 @@
|
|||||||
|
|
||||||
ADDON = false;
|
ADDON = false;
|
||||||
|
|
||||||
|
PREP_RECOMPILE_START;
|
||||||
#include "XEH_PREP.hpp"
|
#include "XEH_PREP.hpp"
|
||||||
|
PREP_RECOMPILE_END;
|
||||||
|
|
||||||
GVAR(syncedEvents) = [] call CBA_fnc_hashCreate;
|
GVAR(syncedEvents) = [] call CBA_fnc_hashCreate;
|
||||||
GVAR(showHudHash) = [] call CBA_fnc_hashCreate;
|
GVAR(showHudHash) = [] call CBA_fnc_hashCreate;
|
||||||
|
54
addons/common/functions/fnc_setPlayerOwner.sqf
Normal file
54
addons/common/functions/fnc_setPlayerOwner.sqf
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
/*
|
||||||
|
* Author: PabstMirror
|
||||||
|
* Sets the player's owner id as a variable on his player ojbect.
|
||||||
|
* Should be called on all machines (including server)
|
||||||
|
* Note: Needs to wait for CBA_clientID to be recieved from server.
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* None
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* None
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* [] call ace_common_fnc_setPlayerOwner
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
|
||||||
|
// #define DEBUG_MODE_FULL
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
if (missionNameSpace getVariable [QGVAR(setPlayerOwnerRunning), false]) exitWith {};
|
||||||
|
GVAR(setPlayerOwnerRunning) = true;
|
||||||
|
|
||||||
|
if (isServer) then {
|
||||||
|
addMissionEventHandler ["HandleDisconnect", {
|
||||||
|
params ["_dcPlayer"];
|
||||||
|
TRACE_1("HandleDisconnect eh",_dcPlayer);
|
||||||
|
if (!isNil {_dcPlayer getVariable QGVAR(playerOwner)}) then {
|
||||||
|
_dcPlayer setVariable [QGVAR(playerOwner), nil, true];
|
||||||
|
};
|
||||||
|
}];
|
||||||
|
};
|
||||||
|
|
||||||
|
if (hasInterface) then {
|
||||||
|
[{
|
||||||
|
(!isNil "CBA_clientID") && {CBA_clientID > -1}
|
||||||
|
}, {
|
||||||
|
TRACE_1("CBA_clientID ready",CBA_clientID);
|
||||||
|
|
||||||
|
["unit", {
|
||||||
|
params ["_newUnit", "_oldUnit"];
|
||||||
|
TRACE_2("unit changed",_newUnit,_oldUnit);
|
||||||
|
if ((_oldUnit getVariable [QGVAR(playerOwner), -1]) == CBA_clientID) then {
|
||||||
|
_oldUnit setVariable [QGVAR(playerOwner), nil, true];
|
||||||
|
};
|
||||||
|
if (alive _newUnit) then {
|
||||||
|
_newUnit setVariable [QGVAR(playerOwner), CBA_clientID, true];
|
||||||
|
};
|
||||||
|
}, true] call CBA_fnc_addPlayerEventHandler;
|
||||||
|
|
||||||
|
}, []] call CBA_fnc_waitUntilAndExecute;
|
||||||
|
};
|
||||||
|
|
@ -38,13 +38,13 @@ _bounds params ["_boundsMin", "_boundsMax"];
|
|||||||
_boundsMin params ["_boundsMinX", "_boundsMinY", "_boundsMinZ"];
|
_boundsMin params ["_boundsMinX", "_boundsMinY", "_boundsMinZ"];
|
||||||
_boundsMax params ["_boundsMaxX", "_boundsMaxY", "_boundsMaxZ"];
|
_boundsMax params ["_boundsMaxX", "_boundsMaxY", "_boundsMaxZ"];
|
||||||
|
|
||||||
_boundsMinX = _boundsMinX - _marginsX + _offsetsX;
|
_boundsMinX = ((_boundsMinX - _marginsX) min 0) + _offsetsX;
|
||||||
_boundsMinY = _boundsMinY - _marginsY + _offsetsY;
|
_boundsMinY = ((_boundsMinY - _marginsY) min 0) + _offsetsY;
|
||||||
_boundsMinZ = _boundsMinZ - _marginsZ + _offsetsZ;
|
_boundsMinZ = ((_boundsMinZ - _marginsZ) min 0) + _offsetsZ;
|
||||||
|
|
||||||
_boundsMaxX = _boundsMaxX + _marginsX + _offsetsX;
|
_boundsMaxX = ((_boundsMaxX + _marginsX) max 0) + _offsetsX;
|
||||||
_boundsMaxY = _boundsMaxY + _marginsY + _offsetsY;
|
_boundsMaxY = ((_boundsMaxY + _marginsY) max 0) + _offsetsY;
|
||||||
_boundsMaxZ = _boundsMaxZ + _marginsZ + _offsetsZ;
|
_boundsMaxZ = ((_boundsMaxZ + _marginsZ) max 0) + _offsetsZ;
|
||||||
|
|
||||||
private _boundsCorners = [
|
private _boundsCorners = [
|
||||||
[_boundsMinX, _boundsMinY, _boundsMinZ],
|
[_boundsMinX, _boundsMinY, _boundsMinZ],
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user