mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
6
.github/ISSUE_TEMPLATE.md
vendored
6
.github/ISSUE_TEMPLATE.md
vendored
@ -3,8 +3,10 @@
|
||||
**ACE3 Version:** `3.x.x` (stable / dev + commit hash)
|
||||
|
||||
**Mods:**
|
||||
- `@CBA_A3`
|
||||
- `@ace`
|
||||
```
|
||||
- CBA_A3
|
||||
- ace
|
||||
```
|
||||
|
||||
**Description:**
|
||||
- Add a detailed description of the error. This makes it easier for us to fix the issue.
|
||||
|
@ -6,9 +6,7 @@ pr-wo-labels=false
|
||||
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
|
||||
exclude-labels=by design,can't reproduce,duplicate,question,invalid,wontfix,ignore changelog
|
||||
|
||||
# Tag is created before generating changelog for release candidates
|
||||
unreleased=false
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
<p align="center">
|
||||
<a href="https://github.com/acemod/ACE3/releases/latest">
|
||||
<img src="https://img.shields.io/badge/Version-3.8.3-blue.svg?style=flat-square" alt="ACE3 Version">
|
||||
<img src="https://img.shields.io/badge/Version-3.9.0-blue.svg?style=flat-square" alt="ACE3 Version">
|
||||
</a>
|
||||
<a href="https://github.com/acemod/ACE3/issues">
|
||||
<img src="https://img.shields.io/github/issues-raw/acemod/ACE3.svg?style=flat-square&label=Issues" alt="ACE3 Issues">
|
||||
|
@ -14,12 +14,15 @@ if (!hasInterface) exitWith {};
|
||||
// - GVAR updating and initialization -----------------------------------------
|
||||
["unit", FUNC(handlePlayerChanged), true] call CBA_fnc_addPlayerEventHandler;
|
||||
|
||||
private _fnc_showStaminaBar = {
|
||||
["visibleMap", {
|
||||
params ["", "_visibleMap"]; // command visibleMap is updated one frame later
|
||||
private _staminaBarContainer = uiNamespace getVariable [QGVAR(staminaBarContainer), controlNull];
|
||||
_staminaBarContainer ctrlShow ((!_visibleMap) && {(vehicle ACE_player) == ACE_player});
|
||||
}, true] call CBA_fnc_addPlayerEventHandler;
|
||||
["vehicle", {
|
||||
private _staminaBarContainer = uiNamespace getVariable [QGVAR(staminaBarContainer), controlNull];
|
||||
_staminaBarContainer ctrlShow ((!visibleMap) && {(vehicle ACE_player) == ACE_player});
|
||||
};
|
||||
["visibleMap", _fnc_showStaminaBar, true] call CBA_fnc_addPlayerEventHandler;
|
||||
["vehicle", _fnc_showStaminaBar, true] call CBA_fnc_addPlayerEventHandler;
|
||||
}, true] call CBA_fnc_addPlayerEventHandler;
|
||||
|
||||
// - Duty factors -------------------------------------------------------------
|
||||
if (["ACE_Medical"] call EFUNC(common,isModLoaded)) then {
|
||||
|
@ -21,6 +21,7 @@ private _duty = 1;
|
||||
private _animType = _animName select [1, 3];
|
||||
|
||||
GVAR(isSwimming) = false;
|
||||
GVAR(isProne) = (stance _unit) == "PRONE";
|
||||
|
||||
if (_animType in ["idl", "mov", "adj"]) then {
|
||||
switch (_animName select [5, 3]) do {
|
||||
@ -29,6 +30,7 @@ if (_animType in ["idl", "mov", "adj"]) then {
|
||||
};
|
||||
case ("pne"): {
|
||||
_duty = 10;
|
||||
GVAR(isProne) = true; // #4880 - Unarmed sprint->prone has wrong `stance`
|
||||
};
|
||||
default {
|
||||
_duty = 1;
|
||||
|
@ -18,18 +18,8 @@
|
||||
#include "script_component.hpp"
|
||||
params ["_unit", "_velocity"];
|
||||
|
||||
private _virtualLoad = 0;
|
||||
{
|
||||
_virtualLoad = _virtualLoad + (_x getVariable [QEGVAR(movement,vLoad), 0]);
|
||||
} forEach [
|
||||
_unit,
|
||||
uniformContainer _unit,
|
||||
vestContainer _unit,
|
||||
backpackContainer _unit
|
||||
];
|
||||
private _gearMass = ((_unit getVariable [QEGVAR(movement,totalLoad), loadAbs _unit]) / 22.046) * GVAR(loadFactor);
|
||||
|
||||
private _gearMass = ((loadAbs _unit + _virtualLoad) * 0.1 / 2.2046) * GVAR(loadFactor);
|
||||
private _terrainFactor = 1;
|
||||
private _terrainAngle = asin (1 - ((surfaceNormal getPosASL _unit) select 2));
|
||||
private _terrainGradient = (_terrainAngle / 45 min 1) * 5 * GVAR(terrainGradientFactor);
|
||||
private _duty = GVAR(animDuty);
|
||||
@ -50,12 +40,12 @@ if (_velocity > 2) then {
|
||||
(
|
||||
2.10 * SIM_BODYMASS
|
||||
+ 4 * (SIM_BODYMASS + _gearMass) * ((_gearMass / SIM_BODYMASS) ^ 2)
|
||||
+ _terrainFactor * (SIM_BODYMASS + _gearMass) * (0.90 * (_velocity ^ 2) + 0.66 * _velocity * _terrainGradient)
|
||||
+ (SIM_BODYMASS + _gearMass) * (0.90 * (_velocity ^ 2) + 0.66 * _velocity * _terrainGradient)
|
||||
) * 0.23 * _duty
|
||||
} else {
|
||||
(
|
||||
1.05 * SIM_BODYMASS
|
||||
+ 4 * (SIM_BODYMASS + _gearMass) * ((_gearMass / SIM_BODYMASS) ^ 2)
|
||||
+ _terrainFactor * (SIM_BODYMASS + _gearMass) * (1.15 * (_velocity ^ 2) + 0.66 * _velocity * _terrainGradient)
|
||||
+ (SIM_BODYMASS + _gearMass) * (1.15 * (_velocity ^ 2) + 0.66 * _velocity * _terrainGradient)
|
||||
) * 0.23 * _duty
|
||||
};
|
||||
|
@ -20,7 +20,7 @@ private _currentWork = REE;
|
||||
private _currentSpeed = (vectorMagnitude (velocity ACE_player)) min 6;
|
||||
|
||||
// fix #4481. Diving to the ground is recorded as PRONE stance with running speed velocity. Cap maximum speed to fix.
|
||||
if (stance ACE_player == "PRONE") then {
|
||||
if (GVAR(isProne)) then {
|
||||
_currentSpeed = _currentSpeed min 1.5;
|
||||
};
|
||||
|
||||
@ -32,11 +32,11 @@ if ((vehicle ACE_player == ACE_player) && {_currentSpeed > 0.1} && {isTouchingGr
|
||||
// Calculate muscle damage increase
|
||||
// Note: Muscle damage recovery is ignored as it takes multiple days
|
||||
GVAR(muscleDamage) = GVAR(muscleDamage) + (_currentWork / GVAR(peakPower)) ^ 3.2 * 0.00004;
|
||||
private _muscleIntegrity = 1 - GVAR(muscleDamage);
|
||||
private _muscleIntegritySqrt = sqrt (1 - GVAR(muscleDamage));
|
||||
|
||||
// Calculate available power
|
||||
private _ae1PathwayPowerFatigued = GVAR(ae1PathwayPower) * sqrt (GVAR(ae1Reserve) / AE1_MAXRESERVE) * OXYGEN * sqrt _muscleIntegrity;
|
||||
private _ae2PathwayPowerFatigued = GVAR(ae2PathwayPower) * sqrt (GVAR(ae2Reserve) / AE2_MAXRESERVE) * OXYGEN * sqrt _muscleIntegrity;
|
||||
private _ae1PathwayPowerFatigued = GVAR(ae1PathwayPower) * sqrt (GVAR(ae1Reserve) / AE1_MAXRESERVE) * OXYGEN * _muscleIntegritySqrt;
|
||||
private _ae2PathwayPowerFatigued = GVAR(ae2PathwayPower) * sqrt (GVAR(ae2Reserve) / AE2_MAXRESERVE) * OXYGEN * _muscleIntegritySqrt;
|
||||
|
||||
// Calculate how much power is consumed from each reserve
|
||||
private _ae1Power = _currentWork min _ae1PathwayPowerFatigued;
|
||||
|
@ -7,6 +7,7 @@
|
||||
<Japanese>パフォーマンス要因</Japanese>
|
||||
<Polish>Współczynnik wydolności</Polish>
|
||||
<Korean>성능 요인</Korean>
|
||||
<French>Facteur de performance</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_PerformanceFactor_Description">
|
||||
<English>Influences the overall performance of all players with no custom factor. Higher means better.</English>
|
||||
@ -14,6 +15,7 @@
|
||||
<Japanese>非カスタム要因をもつ全プレイヤーへ全体的に動作を影響させます。高いほど影響がでます。</Japanese>
|
||||
<Polish>Wpływa na ogólną wydolność organizmu u wszystkich graczy bez ustawionego niestandardowego współczynnika. Więcej znaczy lepiej.</Polish>
|
||||
<Korean>모든 성능이 임의로 설정된 값 없이 영향받습니다. 값이 클수록 더 나은 성능을 발휘합니다</Korean>
|
||||
<French>Influence les performances générales de tous les joueurs sans facteurs personalisés. Une valeur plus élevée implique de meilleures performances.</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_PerformanceFactor_EdenDescription">
|
||||
<English>Influences the overall performance of this unit. Higher means better.</English>
|
||||
@ -21,6 +23,7 @@
|
||||
<Japanese>非カスタム要因をもつ全プレイヤーへ全体的に動作を影響させます。高いほど影響がでます。</Japanese>
|
||||
<Polish>Wpływa na ogólną wydolność tej jednostki. Więcej znaczy lepiej.</Polish>
|
||||
<Korean>모든 성능이 이 단위로 영향을 받습니다. 값이 클수록 더 나은 성능을 발휘합니다</Korean>
|
||||
<French>Influence les performances générales de cette unité. Une valeur plus élevée implique de meilleures performances.</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_RecoveryFactor">
|
||||
<English>Recovery Factor</English>
|
||||
@ -28,6 +31,7 @@
|
||||
<Japanese>回復要因</Japanese>
|
||||
<Polish>Współczynnik regeneracji</Polish>
|
||||
<Korean>회복 요인</Korean>
|
||||
<French>Facteur de récupération</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_RecoveryFactor_Description">
|
||||
<English>Changes how fast the player recovers when resting. Higher is faster.</English>
|
||||
@ -35,6 +39,7 @@
|
||||
<Japanese>休憩時は、プレイヤーが早く回復します。高いほど早くなります。</Japanese>
|
||||
<Polish>Wpływa na czas regeneracji podczas postoju. Więcej znaczy szybciej.</Polish>
|
||||
<Korean>얼마나 빨리 회복하는지를 바꿉니다. 값이 클수록 더 나은 성능을 발휘합니다</Korean>
|
||||
<French>Change la vitesse à laquelle les joueurs récupèrent leur endurance lorsqu'ils se reposent. Une valeur plus élevée implique une récupération plus rapide.</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_LoadFactor">
|
||||
<English>Load Factor</English>
|
||||
@ -42,6 +47,7 @@
|
||||
<Japanese>負荷要因</Japanese>
|
||||
<Polish>Współczynnik masy ekwipunku</Polish>
|
||||
<Korean>부담 요인</Korean>
|
||||
<French>Facteur d'encombrement</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_LoadFactor_Description">
|
||||
<English>Increases or decreases how much weight influences the players performance. Zero means equipment weight has no performance influence.</English>
|
||||
@ -49,6 +55,7 @@
|
||||
<Japanese>重量によりプレイヤーの動作への影響下増加したり、低下します。装備を持っていない場合、影響はしません。</Japanese>
|
||||
<Polish>Zmniejsza lub zwiększa wpływ ciężaru ekwipunku na wydolność gracza. Zero oznacza kompletny brak wpływu na wydolność.</Polish>
|
||||
<Korean>플레이어가 무게에 따라 얼마나 영향받는지를 증가시키거나 감소시킵니다. 0의 경우 플레이어가 장비 무게에 영향받지 않습니다.</Korean>
|
||||
<French>Augmente ou réduit l'influence que le poids à sur les performances des joueurs. Zéro implique que le poids de l'équipement n'a pas d'influence sur les performances.</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_TerrainGradientFactor">
|
||||
<English>Terrain Gradient Factor</English>
|
||||
@ -56,6 +63,7 @@
|
||||
<Japanese>地形の勾配による要因</Japanese>
|
||||
<Polish>Współczynnik terenu</Polish>
|
||||
<Korean>지형 경사도 요인</Korean>
|
||||
<French>Facteur d'inclinaison du terrain</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_TerrainGradientFactor_Description">
|
||||
<English>Sets how much steep terrain increases stamina loss. Higher means higher stamina loss.</English>
|
||||
@ -63,6 +71,7 @@
|
||||
<Japanese>地形によって影響する体力の消費量を決定します。高数値ではより体力を消費します。</Japanese>
|
||||
<Polish>Wpływa na to w jakim stopniu stromy teren wpływa na utratę wytrzymałości. Więcej oznacza szybszą utratę wytrzymałości.</Polish>
|
||||
<Korean>경사도에 따라 얼마나 피로해지는지를 정합니다. 값이 클수록 더 많은 피로를 유발합니다.</Korean>
|
||||
<French>Configure l'influence de l'inclinaison du terrain sur la perte d'endurance. Une valeur plus élevée implique une perte d'endurance plus importante.</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_Enabled">
|
||||
<English>Enabled</English>
|
||||
@ -70,6 +79,7 @@
|
||||
<Japanese>有効化</Japanese>
|
||||
<Polish>Włączone</Polish>
|
||||
<Korean>활성화</Korean>
|
||||
<French>Activé</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_Enabled_Description">
|
||||
<English>Enables/disables Advanced Fatigue.</English>
|
||||
@ -77,6 +87,7 @@
|
||||
<Japanese>アドバンスド疲労の有効化と無効化</Japanese>
|
||||
<Polish>Włącza/wyłącza zaawansowaną wytrzymałość</Polish>
|
||||
<Korean>고급 피로도 활성화/비활성화</Korean>
|
||||
<French>Active/désactive la fatigue avancée.</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_EnableStaminaBar">
|
||||
<English>Show stamina bar</English>
|
||||
@ -84,6 +95,7 @@
|
||||
<Japanese>体力バーを表示</Japanese>
|
||||
<Polish>Pokaż pasek wytrzymałości</Polish>
|
||||
<Korean>피로도 막대</Korean>
|
||||
<French>Afficher la barre d'endurance</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_EnableStaminaBar_Description">
|
||||
<English>Shows the stamina bar.</English>
|
||||
@ -91,6 +103,7 @@
|
||||
<Japanese>体力バーを表示します。</Japanese>
|
||||
<Polish>Pokazuje pasek wytrzymałości.</Polish>
|
||||
<Korean>피로도 막대를 보여줍니다.</Korean>
|
||||
<French>Affiche la barre d'endurance.</French>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
@ -67,7 +67,8 @@ GVAR(ammoMagLookup) = call CBA_fnc_createNamespace;
|
||||
}] call CBA_fnc_addPlayerEventhandler;
|
||||
|
||||
["visibleMap", {
|
||||
if (visibleMap && {ACE_player getVariable [QGVAR(inHand), false]}) then {
|
||||
params ["", "_visibleMap"]; // command visibleMap is updated one frame later
|
||||
if (_visibleMap && {ACE_player getVariable [QGVAR(inHand), false]}) then {
|
||||
[ACE_player, "Opened Map"] call FUNC(exitThrowMode);
|
||||
};
|
||||
}] call CBA_fnc_addPlayerEventhandler;
|
||||
|
@ -8,6 +8,7 @@
|
||||
<Polish>Zaawansowane rzucanie</Polish>
|
||||
<German>Erweitertes Wurfsystem</German>
|
||||
<Korean>고급 투척</Korean>
|
||||
<French>Lancé amélioré</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Throwing_Module_Description">
|
||||
<English>Allows changing advanced throwing behaviour.</English>
|
||||
@ -16,6 +17,7 @@
|
||||
<Polish>Zezwala na zmianę zachowania zaawansowanego trybu rzucania.</Polish>
|
||||
<German>Erlaubt es, das Verhalten des erweiterten Wurfsystems zu ändern.</German>
|
||||
<Korean>고급 투척 행위를 허가합니다</Korean>
|
||||
<French>Permet de changer la configuration du lancé amélioré.</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Throwing_Enable_DisplayName">
|
||||
<English>Enable Advanced Throwing</English>
|
||||
@ -24,6 +26,7 @@
|
||||
<Polish>Aktywuj zaawansowane rzucanie</Polish>
|
||||
<German>Aktiviere erweitertes Wurfsystem</German>
|
||||
<Korean>고급 투척 활성화 </Korean>
|
||||
<French>Active le lancé amélioré</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Throwing_Enable_Description">
|
||||
<English>Enables advanced throwing system.</English>
|
||||
@ -32,6 +35,7 @@
|
||||
<Polish>Aktywuje system zaawansowanego rzucania.</Polish>
|
||||
<German>Aktiviert das erweiterte Wurfsystem.</German>
|
||||
<Korean>고급 투척을 활성화 합니다</Korean>
|
||||
<French>Active le système de lancé amélioré.</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Throwing_ShowThrowArc_DisplayName">
|
||||
<English>Show Throw Arc</English>
|
||||
@ -40,6 +44,7 @@
|
||||
<Polish>Pokaż trasę lotu</Polish>
|
||||
<German>Zeige Wurfbogen</German>
|
||||
<Korean>투척 궤적 표시</Korean>
|
||||
<French>Afficher l'arc de lancé</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Throwing_ShowThrowArc_Description">
|
||||
<English>Enables visualization of the throw arc (where throwable will fly).</English>
|
||||
@ -48,6 +53,7 @@
|
||||
<Polish>Wyświetla wizualizację trasy przelotu granatu.</Polish>
|
||||
<German>Aktiviert die Visualisierung des Wurfbogens (wohin das Objekt geworfen werden wird).</German>
|
||||
<Korean>투척 궤도를 시각화 합니다(투척물이 어디로 갈지)</Korean>
|
||||
<French>Active la visualisation de l'arc de lancé (où l'objet lancé va atterrir).</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Throwing_ShowMouseControls_DisplayName">
|
||||
<English>Show Throwing Mouse Controls</English>
|
||||
@ -56,6 +62,7 @@
|
||||
<Polish>Pokaż podpowiedzi sterowania myszą</Polish>
|
||||
<German>Zeige Maussteuerung beim Werfen</German>
|
||||
<Korean>마우스 조작 표시</Korean>
|
||||
<French>Afficher les contrôles à la souris du lancé</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Throwing_ShowMouseControls_Description">
|
||||
<English>Enables visual cues for mouse controls when throwable is prepared.</English>
|
||||
@ -64,6 +71,7 @@
|
||||
<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>
|
||||
<Korean>투척물을 준비시 마우스 조작을 시각화해서 보여줍니다</Korean>
|
||||
<French>Active les aides visuels pour les controles à la souris lorsqu'un lancé est préparé.</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Throwing_EnablePickUp_DisplayName">
|
||||
<English>Enable Throwables Pick Up</English>
|
||||
@ -72,6 +80,7 @@
|
||||
<Polish>Zezwól na podnoszenie obiektów miotanych</Polish>
|
||||
<German>Aktiviere Aufheben von Wurfobjekten</German>
|
||||
<Korean>투척물 줍기 활성화</Korean>
|
||||
<French>Active la récupération des objets lancés</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Throwing_EnablePickUp_Description">
|
||||
<English>Enables ability to pick up throwables from the ground.</English>
|
||||
@ -80,6 +89,7 @@
|
||||
<Polish>Umożliwia podnoszenie obiektów miotanych z ziemi.</Polish>
|
||||
<German>Aktiviert die Möglichkeit, geworfene Objekte wieder vom Boden aufzuheben.</German>
|
||||
<Korean>땅에 떨어진 투척물을 주울 수 있게 해줍니다.</Korean>
|
||||
<French>Active la capacité de récupérer les objets lancés sur le sol.</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Throwing_EnablePickUpAttached_DisplayName">
|
||||
<English>Enable Attached Throwables Pick Up</English>
|
||||
@ -88,6 +98,7 @@
|
||||
<Polish>Zezwól na podnoszenie przyczepionych obiektów miotanych</Polish>
|
||||
<German>Aktiviere erneute Aufnahme befestigter Wurfobjekte</German>
|
||||
<Korean>부착 투척물 줍기 활성화</Korean>
|
||||
<French>Active le ramassage d'objets lançables attachés</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Throwing_EnablePickUpAttached_Description">
|
||||
<English>Enables ability to pick up throwables from attached objects.</English>
|
||||
@ -96,6 +107,7 @@
|
||||
<Polish>Umożliwia podnoszenie obiektów miotanych przyczepionych do innych obiektów.</Polish>
|
||||
<German>Aktiviert die Möglichkeit, befestigte Wurfobjekte erneut aufzunehmen.</German>
|
||||
<Korean>부착된 투척물을 주울 수 있게 해줍니다.</Korean>
|
||||
<French>Active la capacité à ramasser les objets lançables attaché à d'autres objets.</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Throwing_Prepare">
|
||||
<English>Prepare/Change Throwable</English>
|
||||
@ -104,6 +116,7 @@
|
||||
<Polish>Przygotuj/zmień ob. miotany</Polish>
|
||||
<German>Wurfobjekt vorbereiten/wechseln</German>
|
||||
<Korean>투척물 준비/변경</Korean>
|
||||
<French>Préparer/changer d'objet</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Throwing_dropModeHold">
|
||||
<English>Throwable Drop Mode (Hold)</English>
|
||||
@ -112,6 +125,7 @@
|
||||
<Polish>Tryb upuszczania ob. miotanego (przytrzymaj)</Polish>
|
||||
<German>Wurfobjekt Fallmodus (halten)</German>
|
||||
<Korean>투척물 떨어뜨리기 모드(꾹눌러서)</Korean>
|
||||
<French>Mode de lancé de l'objet (Tenir)</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Throwing_DropModeToggle">
|
||||
<English>Throwable Drop Mode (Toggle)</English>
|
||||
@ -120,6 +134,7 @@
|
||||
<Polish>Tryb upuszczania ob. miotanego (przełącz)</Polish>
|
||||
<German>Wurfobjekt Fallmodus (umschalten)</German>
|
||||
<Korean>투척물 떨어뜨리기 모드(토글)</Korean>
|
||||
<French>Mode de lancé de l'objet (Basculer)</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Throwing_Primed">
|
||||
<English>Primed</English>
|
||||
@ -128,6 +143,7 @@
|
||||
<Polish>Odbezpieczony</Polish>
|
||||
<German>Scharf gemacht</German>
|
||||
<Korean>뇌관 작동</Korean>
|
||||
<French>Amorcer</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Throwing_Throw">
|
||||
<English>Throw</English>
|
||||
@ -136,6 +152,7 @@
|
||||
<Polish>Rzuć</Polish>
|
||||
<German>Werfen</German>
|
||||
<Korean>던지기</Korean>
|
||||
<French>Lancer</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Throwing_ChangeMode">
|
||||
<English>(Scroll) Change Mode</English>
|
||||
@ -144,6 +161,7 @@
|
||||
<Polish>(Kółko m.) zmień tryb</Polish>
|
||||
<German>(Scrollen) Modus wechseln</German>
|
||||
<Korean>(마우스 휠) 모드 변경</Korean>
|
||||
<French>(Molette souris) Changer de mode</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Throwing_Extend">
|
||||
<English>(Scroll) Extend</English>
|
||||
@ -152,6 +170,7 @@
|
||||
<Polish>(Kółko m.) przedłuż</Polish>
|
||||
<German>(Scrollen) Erweitern</German>
|
||||
<Korean>(마우스 휠) 연장</Korean>
|
||||
<French>(Molette souris) Etendre</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Throwing_Cook">
|
||||
<English>(Click) Cook</English>
|
||||
@ -160,6 +179,7 @@
|
||||
<Polish>(Kliknięcie) Odbezpiecz</Polish>
|
||||
<German>(Klicken) Abkochen</German>
|
||||
<Korean>(클릭) 예열</Korean>
|
||||
<French>(Clique) Dégoupiller</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Throwing_PickUp">
|
||||
<English>Pick Up</English>
|
||||
@ -168,6 +188,7 @@
|
||||
<Polish>Podnieś</Polish>
|
||||
<German>Aufheben</German>
|
||||
<Korean>줍기</Korean>
|
||||
<French>Ramasser</French>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
@ -1,4 +1,3 @@
|
||||
|
||||
class CfgAmmo {
|
||||
class BulletBase;
|
||||
class B_20mm : BulletBase {
|
||||
@ -11,11 +10,11 @@ class CfgAmmo {
|
||||
explosive = 1.8;
|
||||
tracersEvery = 3;
|
||||
tracerEndTime = 3.5;
|
||||
|
||||
CraterEffects = "ExploAmmoCrater";
|
||||
explosionEffects = "ExploAmmoExplosion";
|
||||
model = "\A3\Weapons_f\Data\bullettracer\tracer_red";
|
||||
};
|
||||
|
||||
class ACE_20mm_HE : B_20mm {};
|
||||
class ACE_20mm_AP : B_20mm {
|
||||
hit = 50;
|
||||
@ -57,7 +56,6 @@ class CfgAmmo {
|
||||
submunitionAmmo = "ACE_Gatling_30mm_HE_Plane_CAS_01_Sub";
|
||||
submunitionConeType[] = {"custom", {{0,0}, {0,0}, {0,0}} };
|
||||
};
|
||||
|
||||
class ACE_Gatling_30mm_HE_Plane_CAS_01_Sub: Gatling_30mm_HE_Plane_CAS_01_F {};
|
||||
|
||||
// adjust damage and splash damage, closer to bluefor gatling with same caliber
|
||||
|
@ -1,4 +1,3 @@
|
||||
|
||||
class CfgMagazines {
|
||||
// shoot helper object to tripple rof
|
||||
class VehicleMagazine;
|
||||
|
@ -1,4 +1,3 @@
|
||||
|
||||
class CfgVehicles {
|
||||
class All {
|
||||
class Turrets;
|
||||
@ -11,7 +10,6 @@ class CfgVehicles {
|
||||
};
|
||||
|
||||
class Air: AllVehicles {};
|
||||
|
||||
class Helicopter: Air {
|
||||
class Turrets {
|
||||
class MainTurret;
|
||||
@ -19,13 +17,11 @@ class CfgVehicles {
|
||||
};
|
||||
|
||||
class Plane: Air {};
|
||||
|
||||
class ParachuteBase: Helicopter {
|
||||
class Turrets;
|
||||
};
|
||||
|
||||
class UAV: Plane {};
|
||||
|
||||
class Helicopter_Base_F: Helicopter {
|
||||
class Turrets: Turrets {
|
||||
class CopilotTurret;
|
||||
@ -54,7 +50,6 @@ class CfgVehicles {
|
||||
};
|
||||
|
||||
class Heli_Light_01_unarmed_base_F: Heli_Light_01_base_F {};
|
||||
|
||||
class B_Heli_Light_01_F: Heli_Light_01_unarmed_base_F {
|
||||
/*class Turrets: Turrets {
|
||||
class CopilotTurret: CopilotTurret {};
|
||||
@ -74,12 +69,11 @@ class CfgVehicles {
|
||||
};
|
||||
|
||||
class B_Heli_Light_01_armed_F: Heli_Light_01_armed_base_F {};
|
||||
|
||||
class Heli_Light_02_base_F: Helicopter_Base_H {
|
||||
driverCanEject = 1;
|
||||
lockDetectionSystem = 12;
|
||||
incomingMissileDetectionSystem = 16;
|
||||
magazines[] = {"2000Rnd_762x51_Belt_T_Green","12Rnd_PG_missiles","168Rnd_CMFlare_Chaff_Magazine"};
|
||||
magazines[] = {"2000Rnd_762x51_Belt_T_Green", "12Rnd_PG_missiles", "168Rnd_CMFlare_Chaff_Magazine"};
|
||||
|
||||
class Turrets: Turrets {
|
||||
class CopilotTurret: CopilotTurret {
|
||||
@ -98,7 +92,6 @@ class CfgVehicles {
|
||||
#include "Heli_Attack_01_base_F.hpp"
|
||||
|
||||
class B_Heli_Attack_01_F: Heli_Attack_01_base_F {};
|
||||
|
||||
class Heli_Attack_02_base_F: Helicopter_Base_F {
|
||||
lockDetectionSystem = 12;
|
||||
incomingMissileDetectionSystem = 16;
|
||||
@ -121,16 +114,17 @@ class CfgVehicles {
|
||||
canEject = 1;
|
||||
showHMD = 1;
|
||||
};
|
||||
|
||||
class MainTurret: MainTurret {
|
||||
magazines[] = {"2000Rnd_762x51_Belt_T_Red"};
|
||||
canEject = 1;
|
||||
};
|
||||
|
||||
class RightDoorGun: MainTurret {
|
||||
magazines[] = {"2000Rnd_762x51_Belt_T_Red"};
|
||||
canEject = 1;
|
||||
};
|
||||
};
|
||||
|
||||
/*class UserActions {
|
||||
class DoorL1_Open {
|
||||
available = 1;
|
||||
@ -159,7 +153,6 @@ class CfgVehicles {
|
||||
showHMD = 1;
|
||||
};
|
||||
};
|
||||
|
||||
/*class UserActions: UserActions {
|
||||
class DoorL1_Open {
|
||||
available = 1;
|
||||
@ -195,44 +188,41 @@ class CfgVehicles {
|
||||
};*/
|
||||
};
|
||||
|
||||
class Heli_light_03_base_F: Helicopter_Base_F {};
|
||||
class I_Heli_light_03_base_F: Heli_light_03_base_F {
|
||||
lockDetectionSystem = 0;
|
||||
incomingMissileDetectionSystem = 16;
|
||||
class Heli_light_03_base_F: Helicopter_Base_F {
|
||||
driverCanEject = 1;
|
||||
weapons[] = {"M134_minigun","missiles_DAR","CMFlareLauncher", "ACE_AIR_SAFETY" };
|
||||
magazines[] = {"5000Rnd_762x51_Yellow_Belt","24Rnd_missiles","168Rnd_CMFlare_Chaff_Magazine"};
|
||||
|
||||
class Turrets: Turrets {
|
||||
class MainTurret: MainTurret {
|
||||
canEject = 1;
|
||||
};
|
||||
};
|
||||
};
|
||||
class I_Heli_light_03_F: Heli_light_03_base_F {
|
||||
lockDetectionSystem = 0;
|
||||
incomingMissileDetectionSystem = 16;
|
||||
weapons[] = {"M134_minigun", "missiles_DAR", "CMFlareLauncher", "ACE_AIR_SAFETY" };
|
||||
magazines[] = {"5000Rnd_762x51_Yellow_Belt", "24Rnd_missiles", "168Rnd_CMFlare_Chaff_Magazine"};
|
||||
|
||||
class Turrets: Turrets {
|
||||
class MainTurret: MainTurret {
|
||||
showHMD = 1;
|
||||
gunBeg = "commanderview";
|
||||
gunEnd = "laserstart";
|
||||
memoryPointGun = "laserstart";
|
||||
stabilizedInAxes = 3;
|
||||
weapons[] = {"Laserdesignator_mounted"};
|
||||
soundServo[] = {"",0.01,1,30};
|
||||
soundServo[] = {"", 0.01, 1, 30};
|
||||
magazines[] = {"Laserbatteries"};
|
||||
inGunnerMayFire = 1;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
class I_Heli_light_03_F: Heli_light_03_base_F {
|
||||
class Turrets: Turrets {
|
||||
class MainTurret: MainTurret {};
|
||||
};
|
||||
};
|
||||
|
||||
class Heli_light_03_unarmed_base_F: Heli_light_03_base_F {};
|
||||
|
||||
class I_Heli_light_03_unarmed_F: Heli_light_03_unarmed_base_F {};
|
||||
|
||||
class Plane_CAS_01_base_F: Plane_Base_F {
|
||||
lockDetectionSystem = 12;
|
||||
incomingMissileDetectionSystem = 16;
|
||||
|
||||
class Turrets;
|
||||
|
||||
#include <flightmodel_thunderbolt.hpp>
|
||||
@ -241,7 +231,6 @@ class CfgVehicles {
|
||||
class Plane_CAS_02_base_F: Plane_Base_F {
|
||||
lockDetectionSystem = 12;
|
||||
incomingMissileDetectionSystem = 16;
|
||||
|
||||
class Turrets;
|
||||
|
||||
#include <flightmodel_yak.hpp>
|
||||
@ -250,7 +239,6 @@ class CfgVehicles {
|
||||
class Plane_Fighter_03_base_F: Plane_Base_F {
|
||||
lockDetectionSystem = 12;
|
||||
incomingMissileDetectionSystem = 16;
|
||||
|
||||
class Turrets;
|
||||
|
||||
#include <flightmodel_alca.hpp>
|
||||
@ -274,35 +262,23 @@ class CfgVehicles {
|
||||
class UAV_02_CAS_base_F: UAV_02_base_F {
|
||||
weapons[] = {};
|
||||
magazines[] = {};
|
||||
|
||||
/*class Turrets: Turrets {
|
||||
class MainTurret: MainTurret {};
|
||||
};*/
|
||||
};
|
||||
|
||||
class Heli_Transport_03_base_F: Helicopter_Base_H {};
|
||||
class B_Heli_Transport_03_base_F: Heli_Transport_03_base_F {
|
||||
lockDetectionSystem = 12;
|
||||
incomingMissileDetectionSystem = 16;
|
||||
class Heli_Transport_03_base_F: Helicopter_Base_H {
|
||||
driverCanEject = 1;
|
||||
|
||||
class Turrets: Turrets {
|
||||
class CopilotTurret: CopilotTurret {
|
||||
canEject = 1;
|
||||
};
|
||||
//class MainTurret: MainTurret {};
|
||||
class RightDoorGun: MainTurret {};
|
||||
};
|
||||
};
|
||||
|
||||
class B_Heli_Transport_03_unarmed_base_F: Heli_Transport_03_base_F {
|
||||
class Turrets: Turrets {
|
||||
class CopilotTurret: CopilotTurret {
|
||||
canEject = 1;
|
||||
};
|
||||
//class MainTurret: MainTurret {};
|
||||
//class RightDoorGun: MainTurret {};
|
||||
};
|
||||
class B_Heli_Transport_03_F: Heli_Transport_03_base_F {
|
||||
lockDetectionSystem = 12;
|
||||
incomingMissileDetectionSystem = 16;
|
||||
};
|
||||
|
||||
class Heli_Transport_04_base_F: Helicopter_Base_H {
|
||||
@ -314,6 +290,7 @@ class CfgVehicles {
|
||||
class CopilotTurret: CopilotTurret {
|
||||
canEject = 1;
|
||||
};
|
||||
|
||||
class LoadmasterTurret: MainTurret {
|
||||
canEject = 1;
|
||||
};
|
||||
@ -325,6 +302,7 @@ class CfgVehicles {
|
||||
class CopilotTurret: CopilotTurret {
|
||||
canEject = 1;
|
||||
};
|
||||
|
||||
class LoadmasterTurret: LoadmasterTurret {
|
||||
canEject = 1;
|
||||
};
|
||||
@ -336,6 +314,7 @@ class CfgVehicles {
|
||||
class CopilotTurret: CopilotTurret {
|
||||
canEject = 1;
|
||||
};
|
||||
|
||||
class LoadmasterTurret: LoadmasterTurret {
|
||||
canEject = 1;
|
||||
};
|
||||
|
@ -1,13 +1,10 @@
|
||||
|
||||
class Mode_SemiAuto;
|
||||
class Mode_Burst;
|
||||
class Mode_FullAuto;
|
||||
|
||||
class CfgWeapons {
|
||||
|
||||
class RocketPods;
|
||||
class ACE_AIR_SAFETY : RocketPods
|
||||
{
|
||||
class ACE_AIR_SAFETY : RocketPods {
|
||||
CanLock = 0;
|
||||
displayName = "SAFE";
|
||||
displayNameMagazine = "SAFE";
|
||||
@ -24,10 +21,12 @@ class CfgWeapons {
|
||||
// Manual Switching Of Flare Mode
|
||||
class SmokeLauncher;
|
||||
class CMFlareLauncher: SmokeLauncher {
|
||||
modes[] = {"Single","Burst","AIBurst"};
|
||||
modes[] = {"Single", "Burst", "AIBurst"};
|
||||
|
||||
class Single: Mode_SemiAuto {
|
||||
reloadTime = 0.1;
|
||||
};
|
||||
|
||||
class Burst: Mode_Burst {
|
||||
displayName = CSTRING(CMFlareLauncher_Burst_Name);
|
||||
};
|
||||
@ -43,6 +42,7 @@ class CfgWeapons {
|
||||
reloadTime = 0.023; //0.04;
|
||||
dispersion = 0.006; //0.0022;
|
||||
};
|
||||
|
||||
class close: manual {};
|
||||
class short: close {};
|
||||
class medium: close {};
|
||||
@ -57,18 +57,22 @@ class CfgWeapons {
|
||||
dispersion = 0.006;
|
||||
displayName = CSTRING(gatling_20mm_Name);
|
||||
};
|
||||
|
||||
class close: close {
|
||||
reloadTime = 0.04;
|
||||
dispersion = 0.006;
|
||||
};
|
||||
|
||||
class short: short {
|
||||
reloadTime = 0.04;
|
||||
dispersion = 0.006;
|
||||
};
|
||||
|
||||
class medium: medium {
|
||||
reloadTime = 0.04;
|
||||
dispersion = 0.006;
|
||||
};
|
||||
|
||||
class far: far {
|
||||
reloadTime = 0.04;
|
||||
dispersion = 0.006;
|
||||
@ -78,14 +82,13 @@ class CfgWeapons {
|
||||
// buff gatling rof
|
||||
class MGunCore;
|
||||
class MGun: MGunCore {};
|
||||
|
||||
class LMG_RCWS: MGun {};
|
||||
|
||||
class LMG_Minigun: LMG_RCWS {
|
||||
class manual: MGun {
|
||||
reloadTime = 0.075; //0.015;
|
||||
dispersion = 0.00093; //0.006;
|
||||
};
|
||||
|
||||
class close: manual {};
|
||||
class short: close {};
|
||||
class medium: close {};
|
||||
@ -94,10 +97,12 @@ class CfgWeapons {
|
||||
|
||||
class LMG_Minigun_heli: LMG_Minigun {
|
||||
showAimCursorInternal = 0;
|
||||
|
||||
class manual: manual {
|
||||
reloadTime = 0.015; //0.033; Note: This is a way to fast ROF (requires over 60 FPS) @todo
|
||||
dispersion = 0.006; //0.0087;
|
||||
};
|
||||
|
||||
class close: manual {};
|
||||
class short: close {};
|
||||
class medium: close {};
|
||||
@ -110,11 +115,13 @@ class CfgWeapons {
|
||||
dispersion = 0.0064; //0.0023;
|
||||
multiplier = 1;
|
||||
};
|
||||
|
||||
class HighROF: LowROF {
|
||||
reloadTime = 0.02; //0.03;
|
||||
dispersion = 0.0064; //0.0023;
|
||||
multiplier = 1;
|
||||
};
|
||||
|
||||
class close: HighROF {};
|
||||
class short: close {};
|
||||
class medium: LowROF {};
|
||||
@ -124,12 +131,14 @@ class CfgWeapons {
|
||||
class Gatling_30mm_Plane_CAS_01_F: CannonCore {
|
||||
autoFire = 1;
|
||||
burst = 1;
|
||||
|
||||
class LowROF: Mode_FullAuto {
|
||||
autoFire = 0;
|
||||
burst = 22; //65;
|
||||
reloadTime = 0.0462; //0.0154; //0.034;
|
||||
multiplier = 3;
|
||||
};
|
||||
|
||||
class close: LowROF {};
|
||||
class near: close {};
|
||||
class short: close {};
|
||||
|
File diff suppressed because one or more lines are too long
@ -10,572 +10,568 @@ class HScrollbar;
|
||||
class RscLadderPicture;
|
||||
class RscControlsGroupNoScrollbars;
|
||||
|
||||
|
||||
class RscInGameUI
|
||||
{
|
||||
class RscInGameUI {
|
||||
class RscUnitInfo;
|
||||
class Rsc_ACE_Helo_UI_Turret: RscUnitInfo
|
||||
{
|
||||
class Rsc_ACE_Helo_UI_Turret: RscUnitInfo {
|
||||
idd = 300;
|
||||
controls[] = {"CA_IGUI_elements_group","CA_VehicleToggles"};
|
||||
controls[] = {"CA_IGUI_elements_group", "CA_VehicleToggles"};
|
||||
|
||||
class VScrollbar;
|
||||
class HScrollbar;
|
||||
class CA_IGUI_elements_group: RscControlsGroup
|
||||
{
|
||||
class CA_IGUI_elements_group: RscControlsGroup {
|
||||
idc = 170;
|
||||
class VScrollbar: VScrollbar
|
||||
{
|
||||
|
||||
class VScrollbar: VScrollbar {
|
||||
width = 0;
|
||||
};
|
||||
class HScrollbar: HScrollbar
|
||||
{
|
||||
|
||||
class HScrollbar: HScrollbar {
|
||||
height = 0;
|
||||
};
|
||||
x = "0 * (0.01875 * SafezoneH) + (SafezoneX + ((SafezoneW - SafezoneH) / 2))";
|
||||
y = "0 * (0.025 * SafezoneH) + (SafezoneY)";
|
||||
w = "53.5 * (0.01875 * SafezoneH)";
|
||||
h = "40 * (0.025 * SafezoneH)";
|
||||
class controls
|
||||
{
|
||||
class CA_Distance: RscText
|
||||
{
|
||||
|
||||
x = "0 * (0.01875 * SafezoneH) + (SafezoneX + ((SafezoneW - SafezoneH) / 2))";
|
||||
y = "0 * (0.025 * SafezoneH) + (SafezoneY)";
|
||||
w = "53.5 * (0.01875 * SafezoneH)";
|
||||
h = "40 * (0.025 * SafezoneH)";
|
||||
|
||||
class controls {
|
||||
class CA_Distance: RscText {
|
||||
idc = 151;
|
||||
style = 2;
|
||||
sizeEx = "0.0295*SafezoneH";
|
||||
sizeEx = "0.0295 * SafezoneH";
|
||||
shadow = 0;
|
||||
font = "EtelkaMonospacePro";
|
||||
x = "24.78 * (0.01875 * SafezoneH)";
|
||||
y = "30.88 * (0.025 * SafezoneH)";
|
||||
w = "4 * (0.01875 * SafezoneH)";
|
||||
h = "1.2 * (0.025 * SafezoneH)";
|
||||
x = "24.78 * (0.01875 * SafezoneH)";
|
||||
y = "30.88 * (0.025 * SafezoneH)";
|
||||
w = "4 * (0.01875 * SafezoneH)";
|
||||
h = "1.2 * (0.025 * SafezoneH)";
|
||||
};
|
||||
class CA_Speed: RangeText
|
||||
{
|
||||
|
||||
class CA_Speed: RangeText {
|
||||
idc = 188;
|
||||
style = 2;
|
||||
sizeEx = "0.0295*SafezoneH";
|
||||
sizeEx = "0.0295 * SafezoneH";
|
||||
shadow = 0;
|
||||
font = "EtelkaMonospacePro";
|
||||
text = "120";
|
||||
x = "14.78 * (0.01875 * SafezoneH)";
|
||||
y = "30.88 * (0.025 * SafezoneH)";
|
||||
w = "4 * (0.01875 * SafezoneH)";
|
||||
h = "1.2 * (0.025 * SafezoneH)";
|
||||
x = "14.78 * (0.01875 * SafezoneH)";
|
||||
y = "30.88 * (0.025 * SafezoneH)";
|
||||
w = "4 * (0.01875 * SafezoneH)";
|
||||
h = "1.2 * (0.025 * SafezoneH)";
|
||||
};
|
||||
class CA_Alt: RangeText
|
||||
{
|
||||
|
||||
class CA_Alt: RangeText {
|
||||
idc = 189;
|
||||
style = 2;
|
||||
sizeEx = "0.0295*SafezoneH";
|
||||
sizeEx = "0.0295 * SafezoneH";
|
||||
shadow = 0;
|
||||
font = "EtelkaMonospacePro";
|
||||
text = "3825";
|
||||
x = "34.78 * (0.01875 * SafezoneH)";
|
||||
y = "30.88 * (0.025 * SafezoneH)";
|
||||
w = "4 * (0.01875 * SafezoneH)";
|
||||
h = "1.2 * (0.025 * SafezoneH)";
|
||||
x = "34.78 * (0.01875 * SafezoneH)";
|
||||
y = "30.88 * (0.025 * SafezoneH)";
|
||||
w = "4 * (0.01875 * SafezoneH)";
|
||||
h = "1.2 * (0.025 * SafezoneH)";
|
||||
};
|
||||
class CA_VisionMode: RscText
|
||||
{
|
||||
|
||||
class CA_VisionMode: RscText {
|
||||
idc = 152;
|
||||
style = 0;
|
||||
sizeEx = "0.0295*SafezoneH";
|
||||
sizeEx = "0.0295 * SafezoneH";
|
||||
shadow = 0;
|
||||
font = "EtelkaMonospacePro";
|
||||
text = "VIS";
|
||||
x = "12.58 * (0.01875 * SafezoneH)";
|
||||
y = "8 * (0.025 * SafezoneH)";
|
||||
w = "4 * (0.01875 * SafezoneH)";
|
||||
h = "1.2 * (0.025 * SafezoneH)";
|
||||
x = "12.58 * (0.01875 * SafezoneH)";
|
||||
y = "8 * (0.025 * SafezoneH)";
|
||||
w = "4 * (0.01875 * SafezoneH)";
|
||||
h = "1.2 * (0.025 * SafezoneH)";
|
||||
};
|
||||
class CA_FlirMode: RscText
|
||||
{
|
||||
|
||||
class CA_FlirMode: RscText {
|
||||
idc = 153;
|
||||
style = 0;
|
||||
sizeEx = "0.0295*SafezoneH";
|
||||
sizeEx = "0.0295 * SafezoneH";
|
||||
shadow = 0;
|
||||
font = "EtelkaMonospacePro";
|
||||
text = "BHOT";
|
||||
x = "15.78 * (0.01875 * SafezoneH)";
|
||||
y = "8 * (0.025 * SafezoneH)";
|
||||
w = "4.5 * (0.01875 * SafezoneH)";
|
||||
h = "1.2 * (0.025 * SafezoneH)";
|
||||
x = "15.78 * (0.01875 * SafezoneH)";
|
||||
y = "8 * (0.025 * SafezoneH)";
|
||||
w = "4.5 * (0.01875 * SafezoneH)";
|
||||
h = "1.2 * (0.025 * SafezoneH)";
|
||||
};
|
||||
class ValueGrid: RangeText
|
||||
{
|
||||
|
||||
class ValueGrid: RangeText {
|
||||
idc = 172;
|
||||
font = "EtelkaMonospacePro";
|
||||
style = 2;
|
||||
sizeEx = "0.0295*SafezoneH";
|
||||
sizeEx = "0.0295 * SafezoneH";
|
||||
shadow = 0;
|
||||
x = "12.20 * (0.01875 * SafezoneH)";
|
||||
y = "3.5 * (0.025 * SafezoneH)";
|
||||
w = "6 * (0.01875 * SafezoneH)";
|
||||
h = "1 * (0.025 * SafezoneH)";
|
||||
x = "12.20 * (0.01875 * SafezoneH)";
|
||||
y = "3.5 * (0.025 * SafezoneH)";
|
||||
w = "6 * (0.01875 * SafezoneH)";
|
||||
h = "1 * (0.025 * SafezoneH)";
|
||||
};
|
||||
class TextTADS: RangeText
|
||||
{
|
||||
|
||||
class TextTADS: RangeText {
|
||||
idc = 1010;
|
||||
text = "TADS";
|
||||
font = "EtelkaMonospacePro";
|
||||
style = 2;
|
||||
shadow = 0;
|
||||
x = "12.30 * (0.01875 * SafezoneH)";
|
||||
y = "5 * (0.025 * SafezoneH)";
|
||||
w = "4 * (0.01875 * SafezoneH)";
|
||||
h = "1.2 * (0.025 * SafezoneH)";
|
||||
x = "12.30 * (0.01875 * SafezoneH)";
|
||||
y = "5 * (0.025 * SafezoneH)";
|
||||
w = "4 * (0.01875 * SafezoneH)";
|
||||
h = "1.2 * (0.025 * SafezoneH)";
|
||||
};
|
||||
class ValueTime: RangeText
|
||||
{
|
||||
|
||||
class ValueTime: RangeText {
|
||||
idc = 190;
|
||||
text = "20:28:35";
|
||||
font = "EtelkaMonospacePro";
|
||||
style = 2;
|
||||
sizeEx = "0.0295*SafezoneH";
|
||||
sizeEx = "0.0295 * SafezoneH";
|
||||
shadow = 0;
|
||||
x = "12.1 * (0.01875 * SafezoneH)";
|
||||
y = "6.5 * (0.025 * SafezoneH)";
|
||||
w = "6 * (0.01875 * SafezoneH)";
|
||||
h = "1 * (0.025 * SafezoneH)";
|
||||
x = "12.1 * (0.01875 * SafezoneH)";
|
||||
y = "6.5 * (0.025 * SafezoneH)";
|
||||
w = "6 * (0.01875 * SafezoneH)";
|
||||
h = "1 * (0.025 * SafezoneH)";
|
||||
};
|
||||
class CA_Laser: RscText
|
||||
{
|
||||
|
||||
class CA_Laser: RscText {
|
||||
idc = 158;
|
||||
style = "0x30 + 0x800";
|
||||
sizeEx = "0.038*SafezoneH";
|
||||
sizeEx = "0.038 * SafezoneH";
|
||||
shadow = 0;
|
||||
font = "EtelkaMonospacePro";
|
||||
text = QPATHTOF(data\Helo_LaserON.paa);
|
||||
x = "20.45 * (0.01875 * SafezoneH)";
|
||||
y = "14.1 * (0.025 * SafezoneH)";
|
||||
w = "12.5 * (0.01875 * SafezoneH)";
|
||||
h = "12 * (0.025 * SafezoneH)";
|
||||
x = "20.45 * (0.01875 * SafezoneH)";
|
||||
y = "14.1 * (0.025 * SafezoneH)";
|
||||
w = "12.5 * (0.01875 * SafezoneH)";
|
||||
h = "12 * (0.025 * SafezoneH)";
|
||||
};
|
||||
class CA_Heading: RscText
|
||||
{
|
||||
|
||||
class CA_Heading: RscText {
|
||||
idc = 156;
|
||||
style = 0;
|
||||
sizeEx = "0.038*SafezoneH";
|
||||
sizeEx = "0.038 * SafezoneH";
|
||||
shadow = 0;
|
||||
font = "EtelkaMonospacePro";
|
||||
text = "023";
|
||||
x = "24.83 * (0.01875 * SafezoneH)";
|
||||
y = "6 * (0.025 * SafezoneH)";
|
||||
w = "4 * (0.01875 * SafezoneH)";
|
||||
h = "1.2 * (0.025 * SafezoneH)";
|
||||
x = "24.83 * (0.01875 * SafezoneH)";
|
||||
y = "6 * (0.025 * SafezoneH)";
|
||||
w = "4 * (0.01875 * SafezoneH)";
|
||||
h = "1.2 * (0.025 * SafezoneH)";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
class Rsc_ACE_Helo_UI_01: RscUnitInfo
|
||||
{
|
||||
controls[] = {"WeaponInfoControlsGroupRight","CA_TextFlaresMode","CA_TextFlares","CA_VehicleToggles","CA_Radar"};
|
||||
|
||||
class Rsc_ACE_Helo_UI_01: RscUnitInfo {
|
||||
controls[] = {"WeaponInfoControlsGroupRight", "CA_TextFlaresMode", "CA_TextFlares", "CA_VehicleToggles", "CA_Radar"};
|
||||
};
|
||||
class Rsc_ACE_Helo_UI_02: RscUnitInfo
|
||||
{
|
||||
controls[] = {"CA_TextFlaresMode","CA_TextFlares","CA_VehicleToggles","CA_Radar"};
|
||||
|
||||
class Rsc_ACE_Helo_UI_02: RscUnitInfo {
|
||||
controls[] = {"CA_TextFlaresMode", "CA_TextFlares", "CA_VehicleToggles", "CA_Radar"};
|
||||
};
|
||||
class Rsc_ACE_Drones_UI_Turret: RscUnitInfo
|
||||
{
|
||||
|
||||
class Rsc_ACE_Drones_UI_Turret: RscUnitInfo {
|
||||
idd = 300;
|
||||
controls[] = {"CA_Zeroing","CA_IGUI_elements_group","CA_VehicleToggles"};
|
||||
class CA_IGUI_elements_group: RscControlsGroup
|
||||
{
|
||||
controls[] = {"CA_Zeroing", "CA_IGUI_elements_group", "CA_VehicleToggles"};
|
||||
|
||||
class CA_IGUI_elements_group: RscControlsGroup {
|
||||
idc = 170;
|
||||
class VScrollbar: VScrollbar
|
||||
{
|
||||
|
||||
class VScrollbar: VScrollbar {
|
||||
width = 0;
|
||||
};
|
||||
class HScrollbar: HScrollbar
|
||||
{
|
||||
|
||||
class HScrollbar: HScrollbar {
|
||||
height = 0;
|
||||
};
|
||||
x = "0 * (0.01875 * SafezoneH) + (SafezoneX + ((SafezoneW - SafezoneH) / 2))";
|
||||
y = "0 * (0.025 * SafezoneH) + (SafezoneY)";
|
||||
w = "53.5 * (0.01875 * SafezoneH)";
|
||||
h = "40 * (0.025 * SafezoneH)";
|
||||
class controls
|
||||
{
|
||||
class CA_Distance: RscText
|
||||
{
|
||||
|
||||
x = "0 * (0.01875 * SafezoneH) + (SafezoneX + ((SafezoneW - SafezoneH) / 2))";
|
||||
y = "0 * (0.025 * SafezoneH) + (SafezoneY)";
|
||||
w = "53.5 * (0.01875 * SafezoneH)";
|
||||
h = "40 * (0.025 * SafezoneH)";
|
||||
|
||||
class controls {
|
||||
class CA_Distance: RscText {
|
||||
idc = 151;
|
||||
style = 2;
|
||||
sizeEx = "0.0295*SafezoneH";
|
||||
sizeEx = "0.0295 * SafezoneH";
|
||||
shadow = 0;
|
||||
font = "EtelkaMonospacePro";
|
||||
x = "24.78 * (0.01875 * SafezoneH)";
|
||||
y = "30.88 * (0.025 * SafezoneH)";
|
||||
w = "4 * (0.01875 * SafezoneH)";
|
||||
h = "1.2 * (0.025 * SafezoneH)";
|
||||
x = "24.78 * (0.01875 * SafezoneH)";
|
||||
y = "30.88 * (0.025 * SafezoneH)";
|
||||
w = "4 * (0.01875 * SafezoneH)";
|
||||
h = "1.2 * (0.025 * SafezoneH)";
|
||||
};
|
||||
class CA_Speed: RangeText
|
||||
{
|
||||
|
||||
class CA_Speed: RangeText {
|
||||
idc = 188;
|
||||
style = 2;
|
||||
sizeEx = "0.0295*SafezoneH";
|
||||
sizeEx = "0.0295 * SafezoneH";
|
||||
shadow = 0;
|
||||
font = "EtelkaMonospacePro";
|
||||
text = "120";
|
||||
x = "14.78 * (0.01875 * SafezoneH)";
|
||||
y = "30.88 * (0.025 * SafezoneH)";
|
||||
w = "4 * (0.01875 * SafezoneH)";
|
||||
h = "1.2 * (0.025 * SafezoneH)";
|
||||
x = "14.78 * (0.01875 * SafezoneH)";
|
||||
y = "30.88 * (0.025 * SafezoneH)";
|
||||
w = "4 * (0.01875 * SafezoneH)";
|
||||
h = "1.2 * (0.025 * SafezoneH)";
|
||||
};
|
||||
class CA_Alt: RangeText
|
||||
{
|
||||
|
||||
class CA_Alt: RangeText {
|
||||
idc = 189;
|
||||
style = 2;
|
||||
sizeEx = "0.0295*SafezoneH";
|
||||
sizeEx = "0.0295 * SafezoneH";
|
||||
shadow = 0;
|
||||
font = "EtelkaMonospacePro";
|
||||
text = "3825";
|
||||
x = "34.78 * (0.01875 * SafezoneH)";
|
||||
y = "30.88 * (0.025 * SafezoneH)";
|
||||
w = "4 * (0.01875 * SafezoneH)";
|
||||
h = "1.2 * (0.025 * SafezoneH)";
|
||||
x = "34.78 * (0.01875 * SafezoneH)";
|
||||
y = "30.88 * (0.025 * SafezoneH)";
|
||||
w = "4 * (0.01875 * SafezoneH)";
|
||||
h = "1.2 * (0.025 * SafezoneH)";
|
||||
};
|
||||
class ValueTime: RangeText
|
||||
{
|
||||
|
||||
class ValueTime: RangeText {
|
||||
idc = 190;
|
||||
text = "20:28:35";
|
||||
font = "EtelkaMonospacePro";
|
||||
style = 2;
|
||||
sizeEx = "0.0295*SafezoneH";
|
||||
sizeEx = "0.0295 * SafezoneH";
|
||||
shadow = 0;
|
||||
x = "1.75 * (0.01875 * SafezoneH)";
|
||||
y = "10.5 * (0.025 * SafezoneH)";
|
||||
w = "6 * (0.01875 * SafezoneH)";
|
||||
h = "1 * (0.025 * SafezoneH)";
|
||||
x = "1.75 * (0.01875 * SafezoneH)";
|
||||
y = "10.5 * (0.025 * SafezoneH)";
|
||||
w = "6 * (0.01875 * SafezoneH)";
|
||||
h = "1 * (0.025 * SafezoneH)";
|
||||
};
|
||||
class CA_VisionMode: RscText
|
||||
{
|
||||
|
||||
class CA_VisionMode: RscText {
|
||||
idc = 152;
|
||||
style = 0;
|
||||
sizeEx = "0.0295*SafezoneH";
|
||||
sizeEx = "0.0295 * SafezoneH";
|
||||
shadow = 0;
|
||||
font = "EtelkaMonospacePro";
|
||||
text = "VIS";
|
||||
align = "right";
|
||||
x = "2.6 * (0.01875 * SafezoneH)";
|
||||
y = "12.0 * (0.025 * SafezoneH)";
|
||||
w = "4 * (0.01875 * SafezoneH)";
|
||||
h = "1.0 * (0.025 * SafezoneH)";
|
||||
x = "2.6 * (0.01875 * SafezoneH)";
|
||||
y = "12.0 * (0.025 * SafezoneH)";
|
||||
w = "4 * (0.01875 * SafezoneH)";
|
||||
h = "1.0 * (0.025 * SafezoneH)";
|
||||
};
|
||||
class CA_FlirMode: RscText
|
||||
{
|
||||
|
||||
class CA_FlirMode: RscText {
|
||||
idc = 153;
|
||||
style = 0;
|
||||
sizeEx = "0.0295*SafezoneH";
|
||||
sizeEx = "0.0295 * SafezoneH";
|
||||
shadow = 0;
|
||||
font = "EtelkaMonospacePro";
|
||||
text = "BHOT";
|
||||
align = "right";
|
||||
x = "6.18 * (0.01875 * SafezoneH)";
|
||||
y = "12.0 * (0.025 * SafezoneH)";
|
||||
w = "4.5 * (0.01875 * SafezoneH)";
|
||||
h = "1.0 * (0.025 * SafezoneH)";
|
||||
x = "6.18 * (0.01875 * SafezoneH)";
|
||||
y = "12.0 * (0.025 * SafezoneH)";
|
||||
w = "4.5 * (0.01875 * SafezoneH)";
|
||||
h = "1.0 * (0.025 * SafezoneH)";
|
||||
};
|
||||
class TgT_Grid_text: RangeText
|
||||
{
|
||||
|
||||
class TgT_Grid_text: RangeText {
|
||||
idc = 1005;
|
||||
text = "TGT:";
|
||||
font = "EtelkaMonospacePro";
|
||||
style = 2;
|
||||
sizeEx = "0.0295*SafezoneH";
|
||||
sizeEx = "0.0295 * SafezoneH";
|
||||
shadow = 0;
|
||||
x = "1.20 * (0.01875 * SafezoneH)";
|
||||
y = "13.5 * (0.025 * SafezoneH)";
|
||||
w = "6 * (0.01875 * SafezoneH)";
|
||||
h = "1 * (0.025 * SafezoneH)";
|
||||
x = "1.20 * (0.01875 * SafezoneH)";
|
||||
y = "13.5 * (0.025 * SafezoneH)";
|
||||
w = "6 * (0.01875 * SafezoneH)";
|
||||
h = "1 * (0.025 * SafezoneH)";
|
||||
};
|
||||
class TGT_ValueGrid: RangeText
|
||||
{
|
||||
|
||||
class TGT_ValueGrid: RangeText {
|
||||
idc = 172;
|
||||
font = "EtelkaMonospacePro";
|
||||
colorText[] = {0.706,0.0745,0.0196,0.8};
|
||||
colorText[] = {0.706, 0.0745, 0.0196, 0.8};
|
||||
style = 2;
|
||||
sizeEx = "0.0295*SafezoneH";
|
||||
shadow = 0;
|
||||
x = "5.20 * (0.01875 * SafezoneH)";
|
||||
y = "13.5 * (0.025 * SafezoneH)";
|
||||
w = "6 * (0.01875 * SafezoneH)";
|
||||
h = "1 * (0.025 * SafezoneH)";
|
||||
x = "5.20 * (0.01875 * SafezoneH)";
|
||||
y = "13.5 * (0.025 * SafezoneH)";
|
||||
w = "6 * (0.01875 * SafezoneH)";
|
||||
h = "1 * (0.025 * SafezoneH)";
|
||||
};
|
||||
class OWN_Grid_text: RangeText
|
||||
{
|
||||
|
||||
class OWN_Grid_text: RangeText {
|
||||
idc = 1005;
|
||||
text = "OWN:";
|
||||
font = "EtelkaMonospacePro";
|
||||
style = 2;
|
||||
sizeEx = "0.0295*SafezoneH";
|
||||
sizeEx = "0.0295 * SafezoneH";
|
||||
shadow = 0;
|
||||
x = "1.20 * (0.01875 * SafezoneH)";
|
||||
y = "15 * (0.025 * SafezoneH)";
|
||||
w = "6 * (0.01875 * SafezoneH)";
|
||||
h = "1 * (0.025 * SafezoneH)";
|
||||
x = "1.20 * (0.01875 * SafezoneH)";
|
||||
y = "15 * (0.025 * SafezoneH)";
|
||||
w = "6 * (0.01875 * SafezoneH)";
|
||||
h = "1 * (0.025 * SafezoneH)";
|
||||
};
|
||||
class OWN_ValueGrid: RangeText
|
||||
{
|
||||
|
||||
class OWN_ValueGrid: RangeText {
|
||||
idc = 171;
|
||||
font = "EtelkaMonospacePro";
|
||||
colorText[] = {0.15,1,0.15,0.8};
|
||||
colorText[] = {0.15, 1, 0.15, 0.8};
|
||||
style = 2;
|
||||
sizeEx = "0.0295*SafezoneH";
|
||||
sizeEx = "0.0295 * SafezoneH";
|
||||
shadow = 0;
|
||||
x = "5.20 * (0.01875 * SafezoneH)";
|
||||
y = "15 * (0.025 * SafezoneH)";
|
||||
w = "6 * (0.01875 * SafezoneH)";
|
||||
h = "1 * (0.025 * SafezoneH)";
|
||||
x = "5.20 * (0.01875 * SafezoneH)";
|
||||
y = "15 * (0.025 * SafezoneH)";
|
||||
w = "6 * (0.01875 * SafezoneH)";
|
||||
h = "1 * (0.025 * SafezoneH)";
|
||||
};
|
||||
class CA_Laser: RscText
|
||||
{
|
||||
|
||||
class CA_Laser: RscText {
|
||||
idc = 158;
|
||||
style = "0x30 + 0x800";
|
||||
sizeEx = "0.038*SafezoneH";
|
||||
sizeEx = "0.038 * SafezoneH";
|
||||
shadow = 0;
|
||||
align = "right";
|
||||
font = "EtelkaMonospacePro";
|
||||
text = QPATHTOF(data\Helo_LaserON.paa);
|
||||
x = "20.45 * (0.01875 * SafezoneH)";
|
||||
y = "14.1 * (0.025 * SafezoneH)";
|
||||
w = "12.5 * (0.01875 * SafezoneH)";
|
||||
h = "12 * (0.025 * SafezoneH)";
|
||||
x = "20.45 * (0.01875 * SafezoneH)";
|
||||
y = "14.1 * (0.025 * SafezoneH)";
|
||||
w = "12.5 * (0.01875 * SafezoneH)";
|
||||
h = "12 * (0.025 * SafezoneH)";
|
||||
};
|
||||
class CA_Heading: RscText
|
||||
{
|
||||
|
||||
class CA_Heading: RscText {
|
||||
idc = 156;
|
||||
style = 0;
|
||||
sizeEx = "0.038*SafezoneH";
|
||||
sizeEx = "0.038 * SafezoneH";
|
||||
shadow = 0;
|
||||
font = "EtelkaMonospacePro";
|
||||
text = "023";
|
||||
align = "right";
|
||||
x = "25 * (0.01875 * SafezoneH)";
|
||||
y = "5 * (0.025 * SafezoneH)";
|
||||
w = "4 * (0.01875 * SafezoneH)";
|
||||
h = "1.2 * (0.025 * SafezoneH)";
|
||||
x = "25 * (0.01875 * SafezoneH)";
|
||||
y = "5 * (0.025 * SafezoneH)";
|
||||
w = "4 * (0.01875 * SafezoneH)";
|
||||
h = "1.2 * (0.025 * SafezoneH)";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
class Rsc_ACE_Drones_UI_Pilots: RscUnitInfo
|
||||
{
|
||||
|
||||
class Rsc_ACE_Drones_UI_Pilots: RscUnitInfo {
|
||||
idd = 300;
|
||||
controls[] = {"WeaponInfoControlsGroupRight","CA_BackgroundVehicle","CA_BackgroundVehicleTitle","CA_BackgroundVehicleTitleDark","CA_BackgroundFuel","CA_Vehicle","CA_VehicleRole","CA_HitZones","CA_SpeedBackground","CA_SpeedUnits","CA_Speed","CA_ValueFuel","CA_AltBackground","CA_AltUnits","CA_Alt","CA_VehicleToggles","CA_Radar","DriverOpticsGroup"};
|
||||
class DriverOpticsGroup: RscControlsGroup
|
||||
{
|
||||
controls[] = {"WeaponInfoControlsGroupRight", "CA_BackgroundVehicle", "CA_BackgroundVehicleTitle", "CA_BackgroundVehicleTitleDark", "CA_BackgroundFuel", "CA_Vehicle", "CA_VehicleRole", "CA_HitZones", "CA_SpeedBackground", "CA_SpeedUnits", "CA_Speed", "CA_ValueFuel", "CA_AltBackground", "CA_AltUnits", "CA_Alt", "CA_VehicleToggles", "CA_Radar", "DriverOpticsGroup"};
|
||||
|
||||
class DriverOpticsGroup: RscControlsGroup {
|
||||
idc = 392;
|
||||
class VScrollbar: VScrollbar
|
||||
{
|
||||
|
||||
class VScrollbar: VScrollbar {
|
||||
width = 0;
|
||||
};
|
||||
class HScrollbar: HScrollbar
|
||||
{
|
||||
|
||||
class HScrollbar: HScrollbar {
|
||||
height = 0;
|
||||
};
|
||||
x = "0 * (0.01875 * SafezoneH) + (SafezoneX + ((SafezoneW - SafezoneH) / 2))";
|
||||
y = "0 * (0.025 * SafezoneH) + (SafezoneY)";
|
||||
w = "53.5 * (0.01875 * SafezoneH)";
|
||||
h = "40 * (0.025 * SafezoneH)";
|
||||
class controls
|
||||
{
|
||||
class TextGrid: RscText
|
||||
{
|
||||
x = "0 * (0.01875 * SafezoneH) + (SafezoneX + ((SafezoneW - SafezoneH) / 2))";
|
||||
y = "0 * (0.025 * SafezoneH) + (SafezoneY)";
|
||||
w = "53.5 * (0.01875 * SafezoneH)";
|
||||
h = "40 * (0.025 * SafezoneH)";
|
||||
|
||||
class controls {
|
||||
class TextGrid: RscText {
|
||||
style = 0;
|
||||
sizeEx = "0.02*SafezoneH";
|
||||
sizeEx = "0.02 * SafezoneH";
|
||||
shadow = 0;
|
||||
font = "EtelkaMonospacePro";
|
||||
idc = 1005;
|
||||
text = "GRID:";
|
||||
x = "5.8 * (0.01875 * SafezoneH)";
|
||||
y = "31.8 * (0.025 * SafezoneH)";
|
||||
w = "5 * (0.01875 * SafezoneH)";
|
||||
h = "1 * (0.025 * SafezoneH)";
|
||||
x = "5.8 * (0.01875 * SafezoneH)";
|
||||
y = "31.8 * (0.025 * SafezoneH)";
|
||||
w = "5 * (0.01875 * SafezoneH)";
|
||||
h = "1 * (0.025 * SafezoneH)";
|
||||
};
|
||||
class ValueGrid: TextGrid
|
||||
{
|
||||
|
||||
class ValueGrid: TextGrid {
|
||||
idc = 189;
|
||||
text = "382546";
|
||||
x = "10.3 * (0.01875 * SafezoneH)";
|
||||
y = "31.8 * (0.025 * SafezoneH)";
|
||||
w = "6 * (0.01875 * SafezoneH)";
|
||||
h = "1 * (0.025 * SafezoneH)";
|
||||
x = "10.3 * (0.01875 * SafezoneH)";
|
||||
y = "31.8 * (0.025 * SafezoneH)";
|
||||
w = "6 * (0.01875 * SafezoneH)";
|
||||
h = "1 * (0.025 * SafezoneH)";
|
||||
};
|
||||
class TextTime: TextGrid
|
||||
{
|
||||
|
||||
class TextTime: TextGrid {
|
||||
idc = 1010;
|
||||
text = "TIME [UTC]:";
|
||||
x = "5.8 * (0.01875 * SafezoneH)";
|
||||
y = "32.6 * (0.025 * SafezoneH)";
|
||||
w = "5 * (0.01875 * SafezoneH)";
|
||||
h = "1 * (0.025 * SafezoneH)";
|
||||
x = "5.8 * (0.01875 * SafezoneH)";
|
||||
y = "32.6 * (0.025 * SafezoneH)";
|
||||
w = "5 * (0.01875 * SafezoneH)";
|
||||
h = "1 * (0.025 * SafezoneH)";
|
||||
};
|
||||
class ValueTime: TextGrid
|
||||
{
|
||||
|
||||
class ValueTime: TextGrid {
|
||||
idc = 101;
|
||||
text = "20:28:35";
|
||||
x = "10 * (0.01875 * SafezoneH)";
|
||||
y = "32.6 * (0.025 * SafezoneH)";
|
||||
w = "6 * (0.01875 * SafezoneH)";
|
||||
h = "1 * (0.025 * SafezoneH)";
|
||||
x = "10 * (0.01875 * SafezoneH)";
|
||||
y = "32.6 * (0.025 * SafezoneH)";
|
||||
w = "6 * (0.01875 * SafezoneH)";
|
||||
h = "1 * (0.025 * SafezoneH)";
|
||||
};
|
||||
class TextMag: TextGrid
|
||||
{
|
||||
|
||||
class TextMag: TextGrid {
|
||||
idc = 1011;
|
||||
text = "CAM MAG:";
|
||||
x = "5.8 * (0.01875 * SafezoneH)";
|
||||
y = "7 * (0.025 * SafezoneH)";
|
||||
w = "5 * (0.01875 * SafezoneH)";
|
||||
h = "1 * (0.025 * SafezoneH)";
|
||||
x = "5.8 * (0.01875 * SafezoneH)";
|
||||
y = "7 * (0.025 * SafezoneH)";
|
||||
w = "5 * (0.01875 * SafezoneH)";
|
||||
h = "1 * (0.025 * SafezoneH)";
|
||||
};
|
||||
class OpticsZoom: TextGrid
|
||||
{
|
||||
|
||||
class OpticsZoom: TextGrid {
|
||||
idc = 192;
|
||||
text = "28x";
|
||||
x = "10.3 * (0.01875 * SafezoneH)";
|
||||
y = "7 * (0.025 * SafezoneH)";
|
||||
w = "6 * (0.01875 * SafezoneH)";
|
||||
h = "1 * (0.025 * SafezoneH)";
|
||||
x = "10.3 * (0.01875 * SafezoneH)";
|
||||
y = "7 * (0.025 * SafezoneH)";
|
||||
w = "6 * (0.01875 * SafezoneH)";
|
||||
h = "1 * (0.025 * SafezoneH)";
|
||||
};
|
||||
class BorderLineSpdTop: RscPicture
|
||||
{
|
||||
|
||||
class BorderLineSpdTop: RscPicture {
|
||||
idc = 1203;
|
||||
text = "\A3\Ui_f\data\IGUI\Cfg\HelicopterHUD\border_line_ca.paa";
|
||||
x = "3.343 * (0.01875 * SafezoneH)";
|
||||
y = "12.4 * (0.025 * SafezoneH)";
|
||||
w = "3 * (0.01875 * SafezoneH)";
|
||||
h = "1 * (0.025 * SafezoneH)";
|
||||
x = "3.343 * (0.01875 * SafezoneH)";
|
||||
y = "12.4 * (0.025 * SafezoneH)";
|
||||
w = "3 * (0.01875 * SafezoneH)";
|
||||
h = "1 * (0.025 * SafezoneH)";
|
||||
};
|
||||
class BorderLineSpdBottom: RscPicture
|
||||
{
|
||||
|
||||
class BorderLineSpdBottom: RscPicture {
|
||||
idc = 1207;
|
||||
text = "\A3\Ui_f\data\IGUI\Cfg\HelicopterHUD\border_line_ca.paa";
|
||||
x = "3.343 * (0.01875 * SafezoneH)";
|
||||
y = "26.5 * (0.025 * SafezoneH)";
|
||||
w = "3 * (0.01875 * SafezoneH)";
|
||||
h = "1 * (0.025 * SafezoneH)";
|
||||
x = "3.343 * (0.01875 * SafezoneH)";
|
||||
y = "26.5 * (0.025 * SafezoneH)";
|
||||
w = "3 * (0.01875 * SafezoneH)";
|
||||
h = "1 * (0.025 * SafezoneH)";
|
||||
};
|
||||
class BorderLineAltTop: RscPicture
|
||||
{
|
||||
|
||||
class BorderLineAltTop: RscPicture {
|
||||
idc = 1205;
|
||||
text = "\A3\Ui_f\data\IGUI\Cfg\HelicopterHUD\border_line_ca.paa";
|
||||
x = "47.16 * (0.01875 * SafezoneH)";
|
||||
y = "12.4 * (0.025 * SafezoneH)";
|
||||
w = "3 * (0.01875 * SafezoneH)";
|
||||
h = "1 * (0.025 * SafezoneH)";
|
||||
x = "47.16 * (0.01875 * SafezoneH)";
|
||||
y = "12.4 * (0.025 * SafezoneH)";
|
||||
w = "3 * (0.01875 * SafezoneH)";
|
||||
h = "1 * (0.025 * SafezoneH)";
|
||||
};
|
||||
class BorderLineAltBottom: RscPicture
|
||||
{
|
||||
|
||||
class BorderLineAltBottom: RscPicture {
|
||||
idc = 1206;
|
||||
text = "\A3\Ui_f\data\IGUI\Cfg\HelicopterHUD\border_line_ca.paa";
|
||||
x = "47.16 * (0.01875 * SafezoneH)";
|
||||
y = "26.5 * (0.025 * SafezoneH)";
|
||||
w = "3 * (0.01875 * SafezoneH)";
|
||||
h = "1 * (0.025 * SafezoneH)";
|
||||
x = "47.16 * (0.01875 * SafezoneH)";
|
||||
y = "26.5 * (0.025 * SafezoneH)";
|
||||
w = "3 * (0.01875 * SafezoneH)";
|
||||
h = "1 * (0.025 * SafezoneH)";
|
||||
};
|
||||
class TextSpd: TextGrid
|
||||
{
|
||||
|
||||
class TextSpd: TextGrid {
|
||||
idc = 1004;
|
||||
text = "SPD";
|
||||
x = "4.8 * (0.01875 * SafezoneH)";
|
||||
y = "11.8 * (0.025 * SafezoneH)";
|
||||
w = "5 * (0.01875 * SafezoneH)";
|
||||
h = "1.2 * (0.025 * SafezoneH)";
|
||||
x = "4.8 * (0.01875 * SafezoneH)";
|
||||
y = "11.8 * (0.025 * SafezoneH)";
|
||||
w = "5 * (0.01875 * SafezoneH)";
|
||||
h = "1.2 * (0.025 * SafezoneH)";
|
||||
};
|
||||
class SpeedValueBorder: RscPicture
|
||||
{
|
||||
|
||||
class SpeedValueBorder: RscPicture {
|
||||
idc = 1200;
|
||||
text = "\A3\Ui_f\data\IGUI\Cfg\HelicopterHUD\altimeter_value_ca.paa";
|
||||
x = "6.3 * (0.01875 * SafezoneH)";
|
||||
y = "19 * (0.025 * SafezoneH)";
|
||||
w = "5 * (0.01875 * SafezoneH)";
|
||||
h = "2 * (0.025 * SafezoneH)";
|
||||
x = "6.3 * (0.01875 * SafezoneH)";
|
||||
y = "19 * (0.025 * SafezoneH)";
|
||||
w = "5 * (0.01875 * SafezoneH)";
|
||||
h = "2 * (0.025 * SafezoneH)";
|
||||
};
|
||||
class CA_Speed: TextGrid
|
||||
{
|
||||
|
||||
class CA_Speed: TextGrid {
|
||||
idc = 190;
|
||||
sizeEx = "0.03*SafezoneH";
|
||||
text = "120";
|
||||
x = "7.5 * (0.01875 * SafezoneH)";
|
||||
y = "19.5 * (0.025 * SafezoneH)";
|
||||
w = "6 * (0.01875 * SafezoneH)";
|
||||
h = "1.2 * (0.025 * SafezoneH)";
|
||||
x = "7.5 * (0.01875 * SafezoneH)";
|
||||
y = "19.5 * (0.025 * SafezoneH)";
|
||||
w = "6 * (0.01875 * SafezoneH)";
|
||||
h = "1.2 * (0.025 * SafezoneH)";
|
||||
};
|
||||
class AnalogueSpeed: RscLadderPicture
|
||||
{
|
||||
|
||||
class AnalogueSpeed: RscLadderPicture {
|
||||
idc = 384;
|
||||
topValue = 1312;
|
||||
bottomValue = -345;
|
||||
visibleRange = -1;
|
||||
text = "\A3\Ui_f\data\IGUI\Cfg\HelicopterHUD\UAVspeedLadder_ca.paa";
|
||||
x = "1.5 * (0.01875 * SafezoneH)";
|
||||
y = "13 * (0.025 * SafezoneH)";
|
||||
w = "5 * (0.01875 * SafezoneH)";
|
||||
h = "14 * (0.025 * SafezoneH)";
|
||||
x = "1.5 * (0.01875 * SafezoneH)";
|
||||
y = "13 * (0.025 * SafezoneH)";
|
||||
w = "5 * (0.01875 * SafezoneH)";
|
||||
h = "14 * (0.025 * SafezoneH)";
|
||||
};
|
||||
class TextAlt: TextGrid
|
||||
{
|
||||
|
||||
class TextAlt: TextGrid {
|
||||
idc = 1006;
|
||||
text = "ALT";
|
||||
x = "46.9 * (0.01875 * SafezoneH)";
|
||||
y = "11.8 * (0.025 * SafezoneH)";
|
||||
w = "5 * (0.01875 * SafezoneH)";
|
||||
h = "1.2 * (0.025 * SafezoneH)";
|
||||
x = "46.9 * (0.01875 * SafezoneH)";
|
||||
y = "11.8 * (0.025 * SafezoneH)";
|
||||
w = "5 * (0.01875 * SafezoneH)";
|
||||
h = "1.2 * (0.025 * SafezoneH)";
|
||||
};
|
||||
class AltValueBorder: RscPicture
|
||||
{
|
||||
|
||||
class AltValueBorder: RscPicture {
|
||||
idc = 1201;
|
||||
text = "\A3\Ui_f\data\IGUI\Cfg\HelicopterHUD\airspeed_value_ca.paa";
|
||||
x = "42.25 * (0.01875 * SafezoneH)";
|
||||
y = "19 * (0.025 * SafezoneH)";
|
||||
w = "5 * (0.01875 * SafezoneH)";
|
||||
h = "2 * (0.025 * SafezoneH)";
|
||||
x = "42.25 * (0.01875 * SafezoneH)";
|
||||
y = "19 * (0.025 * SafezoneH)";
|
||||
w = "5 * (0.01875 * SafezoneH)";
|
||||
h = "2 * (0.025 * SafezoneH)";
|
||||
};
|
||||
class CA_Alt: TextGrid
|
||||
{
|
||||
|
||||
class CA_Alt: TextGrid {
|
||||
idc = 191;
|
||||
sizeEx = "0.03*SafezoneH";
|
||||
sizeEx = "0.03 * SafezoneH";
|
||||
style = 1;
|
||||
text = "3825";
|
||||
x = "43 * (0.01875 * SafezoneH)";
|
||||
y = "19.5 * (0.025 * SafezoneH)";
|
||||
w = "3.2 * (0.01875 * SafezoneH)";
|
||||
h = "1.2 * (0.025 * SafezoneH)";
|
||||
x = "43 * (0.01875 * SafezoneH)";
|
||||
y = "19.5 * (0.025 * SafezoneH)";
|
||||
w = "3.2 * (0.01875 * SafezoneH)";
|
||||
h = "1.2 * (0.025 * SafezoneH)";
|
||||
};
|
||||
class AnalogueAlt: RscLadderPicture
|
||||
{
|
||||
|
||||
class AnalogueAlt: RscLadderPicture {
|
||||
idc = 385;
|
||||
topValue = 14430;
|
||||
bottomValue = -2110;
|
||||
visibleRange = -1;
|
||||
text = "\A3\Ui_f\data\IGUI\Cfg\HelicopterHUD\UAValtLadder_ca.paa";
|
||||
x = "47 * (0.01875 * SafezoneH)";
|
||||
y = "13 * (0.025 * SafezoneH)";
|
||||
w = "2.5 * (0.01875 * SafezoneH)";
|
||||
h = "14 * (0.025 * SafezoneH)";
|
||||
x = "47 * (0.01875 * SafezoneH)";
|
||||
y = "13 * (0.025 * SafezoneH)";
|
||||
w = "2.5 * (0.01875 * SafezoneH)";
|
||||
h = "14 * (0.025 * SafezoneH)";
|
||||
};
|
||||
class AnalogueHorizon: RscLadderPicture
|
||||
{
|
||||
|
||||
class AnalogueHorizon: RscLadderPicture {
|
||||
idc = 383;
|
||||
topValue = 90;
|
||||
bottomValue = -90;
|
||||
visibleRange = -1;
|
||||
text = "\A3\Ui_f\data\IGUI\Cfg\HelicopterHUD\horizon_ladder_ca.paa";
|
||||
x = "16.75 * (0.01875 * SafezoneH)";
|
||||
y = "5 * (0.025 * SafezoneH)";
|
||||
w = "20 * (0.01875 * SafezoneH)";
|
||||
h = "30 * (0.025 * SafezoneH)";
|
||||
x = "16.75 * (0.01875 * SafezoneH)";
|
||||
y = "5 * (0.025 * SafezoneH)";
|
||||
w = "20 * (0.01875 * SafezoneH)";
|
||||
h = "30 * (0.025 * SafezoneH)";
|
||||
};
|
||||
class HorizonCenter: RscPicture
|
||||
{
|
||||
|
||||
class HorizonCenter: RscPicture {
|
||||
idc = 1202;
|
||||
text = "\A3\Ui_f\data\IGUI\Cfg\HelicopterHUD\horizon_aircraft_ca.paa";
|
||||
x = "24.75 * (0.01875 * SafezoneH)";
|
||||
y = "19 * (0.025 * SafezoneH)";
|
||||
w = "4 * (0.01875 * SafezoneH)";
|
||||
h = "2 * (0.025 * SafezoneH)";
|
||||
x = "24.75 * (0.01875 * SafezoneH)";
|
||||
y = "19 * (0.025 * SafezoneH)";
|
||||
w = "4 * (0.01875 * SafezoneH)";
|
||||
h = "2 * (0.025 * SafezoneH)";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -8,7 +8,7 @@ class CfgPatches {
|
||||
requiredVersion = REQUIRED_VERSION;
|
||||
requiredAddons[] = {"ace_common"};
|
||||
author = ECSTRING(common,ACETeam);
|
||||
authors[] = {"KoffeinFlummi","Crusty","commy2","jaynus","Kimi"};
|
||||
authors[] = {"KoffeinFlummi", "Crusty", "commy2", "jaynus", "Kimi"};
|
||||
url = ECSTRING(main,URL);
|
||||
VERSION_CONFIG;
|
||||
|
||||
@ -21,4 +21,4 @@ class CfgPatches {
|
||||
#include "CfgMagazines.hpp"
|
||||
#include "CfgVehicles.hpp"
|
||||
#include "CfgWeapons.hpp"
|
||||
#include "RscInGameUI.hpp"
|
||||
#include "RscInGameUI.hpp"
|
||||
|
@ -1,4 +1,3 @@
|
||||
|
||||
acceleration = 300;
|
||||
maxSpeed = 936;
|
||||
irScanRangeMin = 500;
|
||||
@ -9,16 +8,16 @@ rudderInfluence = 0.001;
|
||||
aileronControlsSensitivityCoef = 3;
|
||||
elevatorControlsSensitivity = 2;
|
||||
rudderControlsSensitivityoef = 4;
|
||||
elevatorCoef[] = {0.6,0.73,0.62,0.52,0.39,0.33,0.28};
|
||||
aileronCoef[] = {0.5,0.68,0.75,0.86,0.92,0.96,1};
|
||||
rudderCoef[] = {0.9,0.75,0.58,0.45,0.38,0.35,0.3};
|
||||
envelope[] = {0,0.06,1.2,3,3.6,3.75,3.65,3.45,3.3,2.8,2.4,1.9,1.5};
|
||||
angleOfIndicence = 0.0523599; //determines velocity vector behaviour, how quickly it catches up with where your nose is pointing, I think
|
||||
draconicForceXCoef = 7.5; //max angle of attack, lower value gives higher aoa
|
||||
draconicForceYCoef = 0.2198; //Something to do with bleed off of speed, low values seem to increase bleed off
|
||||
elevatorCoef[] = {0.6, 0.73, 0.62, 0.52, 0.39, 0.33, 0.28};
|
||||
aileronCoef[] = {0.5, 0.68, 0.75, 0.86, 0.92, 0.96, 1};
|
||||
rudderCoef[] = {0.9, 0.75, 0.58, 0.45, 0.38, 0.35, 0.3};
|
||||
envelope[] = {0, 0.06, 1.2, 3, 3.6, 3.75, 3.65, 3.45, 3.3, 2.8, 2.4, 1.9, 1.5};
|
||||
angleOfIndicence = 0.0523599; //determines velocity vector behaviour, how quickly it catches up with where your nose is pointing, I think
|
||||
draconicForceXCoef = 7.5; //max angle of attack, lower value gives higher aoa
|
||||
draconicForceYCoef = 0.2198; //Something to do with bleed off of speed, low values seem to increase bleed off
|
||||
draconicForceZCoef = 5.12; //????
|
||||
draconicTorqueXCoef = 0.18; //resistance to elevator input, also impacts speed degradation
|
||||
draconicTorqueXCoef = 0.18; //resistance to elevator input, also impacts speed degradation
|
||||
draconicTorqueYCoef = 0.000017;
|
||||
thrustCoef[] = {1.3,1.27,1.24,1.2,1.17,1.15,1.13,1.1,1.06,1,0.94,0.72,0.51,0.4,0.25,0};
|
||||
thrustCoef[] = {1.3, 1.27, 1.24, 1.2, 1.17, 1.15, 1.13, 1.1, 1.06, 1, 0.94, 0.72, 0.51, 0.4, 0.25, 0};
|
||||
gunAimDown = 0.029;
|
||||
flapsFrictionCoef = 0.32;
|
||||
|
@ -1,4 +1,3 @@
|
||||
|
||||
maxSpeed = 736;
|
||||
aileronSensitivity = 0.85;
|
||||
elevatorSensitivity = 0.75;
|
||||
@ -6,9 +5,9 @@ rudderInfluence = 0.001;
|
||||
aileronControlsSensitivityCoef = 3;
|
||||
elevatorControlsSensitivity = 2;
|
||||
rudderControlsSensitivityoef = 4;
|
||||
elevatorCoef[] = {0.7,0.75,0.75,0.65,0.55,0.45,0.35};
|
||||
aileronCoef[] = {0.6,0.85,0.88,0.92,0.95,0.97,1};
|
||||
rudderCoef[] = {0.8,0.75,0.65,0.5,0.4,0.33,0.3};
|
||||
elevatorCoef[] = {0.7, 0.75, 0.75, 0.65, 0.55, 0.45, 0.35};
|
||||
aileronCoef[] = {0.6, 0.85, 0.88, 0.92, 0.95, 0.97, 1};
|
||||
rudderCoef[] = {0.8, 0.75, 0.65, 0.5, 0.4, 0.33, 0.3};
|
||||
flapsFrictionCoef = 0.35;
|
||||
angleOfIndicence = 0.0523599;
|
||||
draconicForceXCoef = 9.5;
|
||||
@ -16,7 +15,7 @@ draconicForceYCoef = 0.56;
|
||||
draconicForceZCoef = 0.1;
|
||||
draconicTorqueXCoef = 0.58;
|
||||
draconicTorqueYCoef = 0.00013;
|
||||
envelope[] = {0,0,0.75,2.4,3.6,3.8,3.7,3.2,2.2,1.7,0.9};
|
||||
thrustCoef[] = {1,1.2,1.3,1.25,1.06,1.01,1,0.92,0.75,0.65,0.5,0.25,0};
|
||||
envelope[] = {0, 0, 0.75, 2.4, 3.6, 3.8, 3.7, 3.2, 2.2, 1.7, 0.9};
|
||||
thrustCoef[] = {1, 1.2, 1.3, 1.25, 1.06, 1.01, 1, 0.92, 0.75, 0.65, 0.5, 0.25, 0};
|
||||
acceleration = 265;
|
||||
landingSpeed = 220;
|
||||
|
@ -1,4 +1,3 @@
|
||||
|
||||
maxSpeed = 1059;
|
||||
acceleration = 300;
|
||||
aileronSensitivity = 0.635;
|
||||
@ -7,15 +6,15 @@ rudderInfluence = 0.001;
|
||||
aileronControlsSensitivityCoef = 3;
|
||||
elevatorControlsSensitivity = 2;
|
||||
rudderControlsSensitivityoef = 4;
|
||||
elevatorCoef[] = {0.6,0.76,0.7,0.65,0.58,0.47,0.43};
|
||||
aileronCoef[] = {0.5,0.85,0.87,0.89,0.92,0.95,1};
|
||||
rudderCoef[] = {0.8,0.7,0.6,0.5,0.4,0.32,0.27};
|
||||
elevatorCoef[] = {0.6, 0.76, 0.7, 0.65, 0.58, 0.47, 0.43};
|
||||
aileronCoef[] = {0.5, 0.85, 0.87, 0.89, 0.92, 0.95, 1};
|
||||
rudderCoef[] = {0.8, 0.7, 0.6, 0.5, 0.4, 0.32, 0.27};
|
||||
angleOfIndicence = 0.0523599;
|
||||
draconicForceXCoef = 7.6;
|
||||
draconicForceYCoef = 0.75;
|
||||
draconicForceZCoef = 0.085;
|
||||
draconicTorqueXCoef = 0.815;
|
||||
draconicTorqueYCoef = 0.000152;
|
||||
envelope[] = {0,0.446,1.5,3.9,5.2,4.8,4.2,3.5,2,1,0.5};
|
||||
thrustCoef[] = {1,1.2,1.7,1.7,1.65,1.54,1.32,1.1,0.95,0.75,0.5,0.35,0};
|
||||
envelope[] = {0, 0.446, 1.5, 3.9, 5.2, 4.8, 4.2, 3.5, 2, 1, 0.5};
|
||||
thrustCoef[] = {1, 1.2, 1.7, 1.7, 1.65, 1.54, 1.32, 1.1, 0.95, 0.75, 0.5, 0.35, 0};
|
||||
flapsFrictionCoef = 0.32;
|
||||
|
@ -24,6 +24,7 @@ PREP(cycle_target_speed_direction);
|
||||
PREP(delete_gun);
|
||||
PREP(evaluate_option_menu_input);
|
||||
PREP(init);
|
||||
PREP(initGunList);
|
||||
PREP(insert_c1_ballistic_coefficient_data);
|
||||
PREP(insert_muzzle_velocity_data);
|
||||
PREP(parse_input);
|
||||
|
@ -2,62 +2,7 @@
|
||||
|
||||
#include "initKeybinds.sqf"
|
||||
|
||||
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";
|
||||
} 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, Muzzle Velocity vs. Temperature Interpolation, C1 Ballistic Coefficient vs. Distance Interpolation, Persistent
|
||||
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" , 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" , 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.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],
|
||||
|
||||
[".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],
|
||||
|
||||
[".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],
|
||||
|
||||
["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 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],
|
||||
[".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],
|
||||
[".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],
|
||||
|
||||
[".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.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 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],
|
||||
["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],
|
||||
["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],
|
||||
|
||||
["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],
|
||||
|
||||
["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],
|
||||
["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);
|
||||
profileNamespace setVariable ["ACE_ATragMX_gunList", GVAR(gunList)];
|
||||
};
|
||||
|
||||
[] call FUNC(init);
|
||||
[] call FUNC(restore_user_data);
|
||||
[] call FUNC(read_gun_list_entries_from_config);
|
||||
GVAR(active) = false;
|
||||
GVAR(initialised) = false;
|
||||
|
||||
[QEGVAR(vector,rangefinderData), {_this call FUNC(sord)}] call CBA_fnc_addEventHandler;
|
||||
|
@ -18,6 +18,16 @@
|
||||
#define __dsp (uiNamespace getVariable "ATragMX_Display")
|
||||
#define __ctrlBackground (__dsp displayCtrl 720000)
|
||||
|
||||
// Do all initialisation now
|
||||
if (!GVAR(initialised)) then {
|
||||
[] call FUNC(initGunList);
|
||||
[] call FUNC(init);
|
||||
[] call FUNC(restore_user_data);
|
||||
[] call FUNC(read_gun_list_entries_from_config);
|
||||
GVAR(initialised) = true;
|
||||
TRACE_1("",GVAR(initialised));
|
||||
};
|
||||
|
||||
if (GVAR(active)) exitWith { false };
|
||||
if (underwater ACE_player) exitWith { false };
|
||||
if (!("ACE_ATragMX" in (uniformItems ACE_player)) && !("ACE_ATragMX" in (vestItems ACE_player))) exitWith { false };
|
||||
|
@ -15,7 +15,6 @@
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
GVAR(active) = false;
|
||||
|
||||
GVAR(workingMemory) = +(GVAR(gunList) select 0);
|
||||
|
||||
|
83
addons/atragmx/functions/fnc_initGunList.sqf
Normal file
83
addons/atragmx/functions/fnc_initGunList.sqf
Normal file
@ -0,0 +1,83 @@
|
||||
/*
|
||||
* Author: Ruthberg
|
||||
* Inits the gun list from user profile
|
||||
*
|
||||
* Arguments:
|
||||
* Nothing
|
||||
*
|
||||
* Return Value:
|
||||
* Nothing
|
||||
*
|
||||
* Example:
|
||||
* call ace_atragmx_fnc_initGunList
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
LOG_2("Trying to load gunlist from profile [Version: %1][Count: %2]", profileNamespace getVariable [ARR_2(QGVAR(profileNamespaceVersion), 'none')], count (profileNamespace getVariable [ARR_2(QGVAR(gunList), [])]));
|
||||
|
||||
private _resetGunList = true;
|
||||
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";
|
||||
_resetGunList = false;
|
||||
{
|
||||
// Verify each gun has correct param type
|
||||
if (!(_x isEqualTypeArray ["", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "", [], [], false])) exitWith {
|
||||
_resetGunList = true;
|
||||
};
|
||||
} forEach GVAR(gunList);
|
||||
};
|
||||
|
||||
if (_resetGunList) then {
|
||||
WARNING("Reseting Profile Gunlist");
|
||||
// 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" , 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" , 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" , 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.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],
|
||||
|
||||
[".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],
|
||||
|
||||
[".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],
|
||||
|
||||
["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 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],
|
||||
[".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],
|
||||
[".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],
|
||||
|
||||
[".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.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 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],
|
||||
["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],
|
||||
["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],
|
||||
|
||||
["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],
|
||||
|
||||
["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],
|
||||
["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);
|
||||
profileNamespace setVariable ["ACE_ATragMX_gunList", GVAR(gunList)];
|
||||
};
|
@ -17,6 +17,8 @@
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
if (!GVAR(initialised)) exitWith {};
|
||||
|
||||
params ["_slopeDistance", "_azimuth", "_inclination"];
|
||||
|
||||
GVAR(inclinationAngle) set [GVAR(currentTarget), round(_inclination)];
|
||||
|
@ -48,4 +48,6 @@ if (ctrlVisible 3001) then {
|
||||
|
||||
ctrlShow [3001, true];
|
||||
ctrlShow [3002, true];
|
||||
|
||||
ctrlSetFocus ((uiNamespace getVariable ["ATragMX_Display", displayNull]) displayCtrl 3002);
|
||||
};
|
||||
|
@ -112,8 +112,8 @@ class CfgWeapons {
|
||||
"ACE_30Rnd_65x39_caseless_mag_Tracer_Dim"
|
||||
};
|
||||
initSpeed = -1.0;
|
||||
ACE_barrelTwist=228.6;
|
||||
ACE_barrelLength=406.4;
|
||||
ACE_barrelTwist = 228.6;
|
||||
ACE_barrelLength = 406.4;
|
||||
};
|
||||
class arifle_MXM_F: arifle_MX_Base_F {
|
||||
magazines[] = {
|
||||
@ -124,8 +124,8 @@ class CfgWeapons {
|
||||
"ACE_30Rnd_65_Creedmor_mag"
|
||||
};
|
||||
initSpeed = -1.01842;
|
||||
ACE_barrelTwist=228.6;
|
||||
ACE_barrelLength=457.2;
|
||||
ACE_barrelTwist = 228.6;
|
||||
ACE_barrelLength = 457.2;
|
||||
class Single: Single {
|
||||
dispersion = 0.000436; // radians. Equal to 1.50 MOA.
|
||||
};
|
||||
@ -154,13 +154,13 @@ class CfgWeapons {
|
||||
"ACE_30Rnd_556x45_Stanag_Tracer_Dim"
|
||||
};
|
||||
initSpeed = -0.859238;
|
||||
ACE_barrelTwist=177.8;
|
||||
ACE_barrelLength=264.0;
|
||||
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;
|
||||
ACE_barrelTwist = 177.8;
|
||||
ACE_barrelLength = 368.0;
|
||||
};
|
||||
class arifle_SPAR_03_base_F: Rifle_Base_F {
|
||||
magazines[] = {
|
||||
@ -174,8 +174,8 @@ class CfgWeapons {
|
||||
"ACE_20Rnd_762x51_Mag_SD"
|
||||
};
|
||||
initSpeed = -0.984394;
|
||||
ACE_barrelTwist=279.4;
|
||||
ACE_barrelLength=508.0;
|
||||
ACE_barrelTwist = 279.4;
|
||||
ACE_barrelLength = 508.0;
|
||||
};
|
||||
|
||||
/* Other */
|
||||
@ -186,18 +186,18 @@ class CfgWeapons {
|
||||
"ACE_200Rnd_65x39_cased_Box_Tracer_Dim"
|
||||
};
|
||||
initSpeed = -0.976974;
|
||||
ACE_barrelTwist=177.8;
|
||||
ACE_barrelLength=317.5;
|
||||
ACE_barrelTwist = 177.8;
|
||||
ACE_barrelLength = 317.5;
|
||||
};
|
||||
class LMG_Zafir_F: Rifle_Long_Base_F {
|
||||
initSpeed = -1.00333;
|
||||
ACE_barrelTwist=304.8;
|
||||
ACE_barrelLength=459.74;
|
||||
ACE_barrelTwist = 304.8;
|
||||
ACE_barrelLength = 459.74;
|
||||
};
|
||||
class LMG_03_base_F: Rifle_Long_Base_F {
|
||||
initSpeed = -1.02002;
|
||||
ACE_barrelTwist=177.8;
|
||||
ACE_barrelLength=414.02;
|
||||
ACE_barrelTwist = 177.8;
|
||||
ACE_barrelLength = 414.02;
|
||||
};
|
||||
class Tavor_base_F: Rifle_Base_F {};
|
||||
class mk20_base_F: Rifle_Base_F {};
|
||||
@ -225,51 +225,51 @@ class CfgWeapons {
|
||||
|
||||
class hgun_P07_F: Pistol_Base_F {
|
||||
initSpeed = -1.0;
|
||||
ACE_barrelTwist=254.0;
|
||||
ACE_barrelLength=101.6;
|
||||
ACE_barrelTwist = 254.0;
|
||||
ACE_barrelLength = 101.6;
|
||||
};
|
||||
|
||||
class hgun_Rook40_F: Pistol_Base_F {
|
||||
initSpeed = -1.03077;
|
||||
ACE_barrelTwist=254.0;
|
||||
ACE_barrelLength=111.76;
|
||||
ACE_barrelTwist = 254.0;
|
||||
ACE_barrelLength = 111.76;
|
||||
};
|
||||
|
||||
class hgun_ACPC2_F: Pistol_Base_F {
|
||||
initSpeed = -1.0;
|
||||
ACE_barrelTwist=406.4;
|
||||
ACE_barrelLength=127.0;
|
||||
ACE_barrelTwist = 406.4;
|
||||
ACE_barrelLength = 127.0;
|
||||
};
|
||||
|
||||
class hgun_Pistol_heavy_01_F: Pistol_Base_F {
|
||||
initSpeed = -0.96;
|
||||
ACE_barrelTwist=406.4;
|
||||
ACE_barrelLength=114.3;
|
||||
ACE_barrelTwist = 406.4;
|
||||
ACE_barrelLength = 114.3;
|
||||
};
|
||||
|
||||
class hgun_Pistol_heavy_02_F: Pistol_Base_F {
|
||||
initSpeed = -0.92;
|
||||
ACE_barrelTwist=406.4;
|
||||
ACE_barrelLength=76.2;
|
||||
ACE_barrelTwist = 406.4;
|
||||
ACE_barrelLength = 76.2;
|
||||
};
|
||||
|
||||
class hgun_Pistol_01_F: Pistol_Base_F {
|
||||
initSpeed = -0.974359;
|
||||
ACE_barrelTwist=254.0;
|
||||
ACE_barrelLength=93.5;
|
||||
ACE_barrelTwist = 254.0;
|
||||
ACE_barrelLength = 93.5;
|
||||
};
|
||||
|
||||
class pdw2000_base_F: Rifle_Short_Base_F {
|
||||
initSpeed = -1.09615;
|
||||
ACE_barrelTwist=228.6;
|
||||
ACE_barrelLength=177.8;
|
||||
ACE_barrelTwist = 228.6;
|
||||
ACE_barrelLength = 177.8;
|
||||
};
|
||||
|
||||
/* Rifles */
|
||||
class arifle_AKS_base_F: Rifle_Base_F {
|
||||
initSpeed = -1.0;
|
||||
ACE_barrelTwist=160.02;
|
||||
ACE_barrelLength=206.5;
|
||||
ACE_barrelTwist = 160.02;
|
||||
ACE_barrelLength = 206.5;
|
||||
};
|
||||
class arifle_AKM_base_F: Rifle_Base_F {
|
||||
initSpeed = -1.0014;
|
||||
@ -303,8 +303,8 @@ class CfgWeapons {
|
||||
"ACE_30Rnd_65x39_caseless_green_mag_Tracer_Dim"
|
||||
};
|
||||
initSpeed = -1.08355;
|
||||
ACE_barrelTwist=203.2;
|
||||
ACE_barrelLength=728.98;
|
||||
ACE_barrelTwist = 203.2;
|
||||
ACE_barrelLength = 508.0;
|
||||
};
|
||||
class arifle_Katiba_C_F: arifle_katiba_Base_F {
|
||||
magazines[] = {
|
||||
@ -313,8 +313,8 @@ class CfgWeapons {
|
||||
"ACE_30Rnd_65x39_caseless_green_mag_Tracer_Dim"
|
||||
};
|
||||
initSpeed = -1.07105;
|
||||
ACE_barrelTwist=203.2;
|
||||
ACE_barrelLength=680.72;
|
||||
ACE_barrelTwist = 203.2;
|
||||
ACE_barrelLength = 393.7;
|
||||
};
|
||||
class arifle_Katiba_GL_F: arifle_katiba_Base_F {
|
||||
magazines[] = {
|
||||
@ -323,8 +323,8 @@ class CfgWeapons {
|
||||
"ACE_30Rnd_65x39_caseless_green_mag_Tracer_Dim"
|
||||
};
|
||||
initSpeed = -1.08355;
|
||||
ACE_barrelTwist=203.2;
|
||||
ACE_barrelLength=728.98;
|
||||
ACE_barrelTwist = 203.2;
|
||||
ACE_barrelLength = 508.0;
|
||||
};
|
||||
class arifle_MX_F: arifle_MX_Base_F {
|
||||
magazines[] = {
|
||||
@ -333,8 +333,8 @@ class CfgWeapons {
|
||||
"ACE_30Rnd_65x39_caseless_mag_Tracer_Dim"
|
||||
};
|
||||
initSpeed = -0.990132;
|
||||
ACE_barrelTwist=228.6;
|
||||
ACE_barrelLength=368.3;
|
||||
ACE_barrelTwist = 228.6;
|
||||
ACE_barrelLength = 368.3;
|
||||
};
|
||||
class arifle_MX_GL_F: arifle_MX_Base_F {
|
||||
magazines[] = {
|
||||
@ -343,8 +343,8 @@ class CfgWeapons {
|
||||
"ACE_30Rnd_65x39_caseless_mag_Tracer_Dim"
|
||||
};
|
||||
initSpeed = -0.99;
|
||||
ACE_barrelTwist=228.6;
|
||||
ACE_barrelLength=368.3;
|
||||
ACE_barrelTwist = 228.6;
|
||||
ACE_barrelLength = 368.3;
|
||||
};
|
||||
/*
|
||||
class arifle_MX_SW_F: arifle_MX_Base_F {
|
||||
@ -359,8 +359,8 @@ class CfgWeapons {
|
||||
"ACE_30Rnd_65x39_caseless_mag_Tracer_Dim"
|
||||
};
|
||||
initSpeed = -0.963816;
|
||||
ACE_barrelTwist=203.2;
|
||||
ACE_barrelLength=266.7;
|
||||
ACE_barrelTwist = 203.2;
|
||||
ACE_barrelLength = 266.7;
|
||||
};
|
||||
/*
|
||||
class arifle_MXM_F: arifle_MX_Base_F {
|
||||
@ -383,18 +383,18 @@ class CfgWeapons {
|
||||
"ACE_30Rnd_556x45_Stanag_Tracer_Dim"
|
||||
};
|
||||
initSpeed = -0.989;
|
||||
ACE_barrelTwist=285.75;
|
||||
ACE_barrelLength=457.2;
|
||||
ACE_barrelTwist = 285.75;
|
||||
ACE_barrelLength = 457.2;
|
||||
};
|
||||
class SMG_02_base_F: Rifle_Short_Base_F {
|
||||
initSpeed = -1.10288;
|
||||
ACE_barrelTwist=254.0;
|
||||
ACE_barrelLength=195.58;
|
||||
ACE_barrelTwist = 254.0;
|
||||
ACE_barrelLength = 195.58;
|
||||
};
|
||||
class SMG_05_base_F: Rifle_Short_Base_F {
|
||||
initSpeed = -1.04058;
|
||||
ACE_barrelTwist=254.0;
|
||||
ACE_barrelLength=115.0;
|
||||
ACE_barrelTwist = 254.0;
|
||||
ACE_barrelLength = 115.0;
|
||||
};
|
||||
class arifle_TRG20_F: Tavor_base_F {
|
||||
magazines[] = {
|
||||
@ -410,8 +410,8 @@ class CfgWeapons {
|
||||
"ACE_30Rnd_556x45_Stanag_Tracer_Dim"
|
||||
};
|
||||
initSpeed = -0.95;
|
||||
ACE_barrelTwist=177.8;
|
||||
ACE_barrelLength=381.0;
|
||||
ACE_barrelTwist = 177.8;
|
||||
ACE_barrelLength = 381.0;
|
||||
};
|
||||
class arifle_TRG21_F: Tavor_base_F {
|
||||
magazines[] = {
|
||||
@ -427,8 +427,8 @@ class CfgWeapons {
|
||||
"ACE_30Rnd_556x45_Stanag_Tracer_Dim"
|
||||
};
|
||||
initSpeed = -0.988043;
|
||||
ACE_barrelTwist=177.8;
|
||||
ACE_barrelLength=459.74;
|
||||
ACE_barrelTwist = 177.8;
|
||||
ACE_barrelLength = 459.74;
|
||||
};
|
||||
class arifle_TRG21_GL_F: arifle_TRG21_F {
|
||||
magazines[] = {
|
||||
@ -444,8 +444,8 @@ class CfgWeapons {
|
||||
"ACE_30Rnd_556x45_Stanag_Tracer_Dim"
|
||||
};
|
||||
initSpeed = -0.988043;
|
||||
ACE_barrelTwist=177.8;
|
||||
ACE_barrelLength=459.74;
|
||||
ACE_barrelTwist = 177.8;
|
||||
ACE_barrelLength = 459.74;
|
||||
};
|
||||
/*
|
||||
class LMG_Zafir_F: Rifle_Long_Base_F {
|
||||
@ -467,8 +467,8 @@ class CfgWeapons {
|
||||
"ACE_30Rnd_556x45_Stanag_Tracer_Dim"
|
||||
};
|
||||
initSpeed = -0.980978;
|
||||
ACE_barrelTwist=177.8;
|
||||
ACE_barrelLength=441.96;
|
||||
ACE_barrelTwist = 177.8;
|
||||
ACE_barrelLength = 441.96;
|
||||
};
|
||||
class arifle_Mk20C_F: mk20_base_F {
|
||||
magazines[] = {
|
||||
@ -484,8 +484,8 @@ class CfgWeapons {
|
||||
"ACE_30Rnd_556x45_Stanag_Tracer_Dim"
|
||||
};
|
||||
initSpeed = -0.962648;
|
||||
ACE_barrelTwist=177.8;
|
||||
ACE_barrelLength=406.4;
|
||||
ACE_barrelTwist = 177.8;
|
||||
ACE_barrelLength = 406.4;
|
||||
};
|
||||
class arifle_Mk20_GL_F: mk20_base_F {
|
||||
magazines[] = {
|
||||
@ -501,13 +501,13 @@ class CfgWeapons {
|
||||
"ACE_30Rnd_556x45_Stanag_Tracer_Dim"
|
||||
};
|
||||
initSpeed = -0.962648;
|
||||
ACE_barrelTwist=177.8;
|
||||
ACE_barrelLength=406.4;
|
||||
ACE_barrelTwist = 177.8;
|
||||
ACE_barrelLength = 406.4;
|
||||
};
|
||||
class SMG_01_Base: Rifle_Short_Base_F {
|
||||
initSpeed = -1.0175;
|
||||
ACE_barrelTwist=406.4;
|
||||
ACE_barrelLength=139.7;
|
||||
ACE_barrelTwist = 406.4;
|
||||
ACE_barrelLength = 139.7;
|
||||
};
|
||||
class srifle_DMR_01_F: DMR_01_base_F {
|
||||
magazines[] = {
|
||||
@ -515,8 +515,8 @@ class CfgWeapons {
|
||||
"ACE_10Rnd_762x54_Tracer_mag"
|
||||
};
|
||||
initSpeed = -1.025;
|
||||
ACE_barrelTwist=241.3;
|
||||
ACE_barrelLength=609.6;
|
||||
ACE_barrelTwist = 241.3;
|
||||
ACE_barrelLength = 609.6;
|
||||
};
|
||||
class srifle_EBR_F: EBR_base_F {
|
||||
magazines[] = {
|
||||
@ -530,8 +530,8 @@ class CfgWeapons {
|
||||
"ACE_20Rnd_762x51_Mag_SD"
|
||||
};
|
||||
initSpeed = -0.972389;
|
||||
ACE_barrelTwist=304.8;
|
||||
ACE_barrelLength=457.2;
|
||||
ACE_barrelTwist = 304.8;
|
||||
ACE_barrelLength = 457.2;
|
||||
};
|
||||
/*
|
||||
class LMG_Mk200_F: Rifle_Long_Base_F {
|
||||
@ -546,8 +546,8 @@ class CfgWeapons {
|
||||
"ACE_7Rnd_408_305gr_Mag"
|
||||
};
|
||||
initSpeed = -1.0;
|
||||
ACE_barrelTwist=330.2;
|
||||
ACE_barrelLength=736.6;
|
||||
ACE_barrelTwist = 330.2;
|
||||
ACE_barrelLength = 736.6;
|
||||
};
|
||||
class srifle_GM6_F: GM6_base_F {
|
||||
magazines[] = {
|
||||
@ -558,8 +558,8 @@ class CfgWeapons {
|
||||
"ACE_5Rnd_127x99_AMAX_Mag"
|
||||
};
|
||||
initSpeed = -1.0;
|
||||
ACE_barrelTwist=381.0;
|
||||
ACE_barrelLength=730;
|
||||
ACE_barrelTwist = 381.0;
|
||||
ACE_barrelLength = 730;
|
||||
};
|
||||
class srifle_DMR_02_F: DMR_02_base_F {
|
||||
magazines[] = {
|
||||
@ -571,8 +571,8 @@ class CfgWeapons {
|
||||
"ACE_20Rnd_762x67_Berger_Hybrid_OTM_Mag"
|
||||
};
|
||||
initSpeed = -0.961749;
|
||||
ACE_barrelTwist=254.0;
|
||||
ACE_barrelLength=508.0;
|
||||
ACE_barrelTwist = 254.0;
|
||||
ACE_barrelLength = 508.0;
|
||||
};
|
||||
class srifle_DMR_03_F: DMR_03_base_F {
|
||||
magazines[] = {
|
||||
@ -586,18 +586,18 @@ class CfgWeapons {
|
||||
"ACE_20Rnd_762x51_Mag_SD"
|
||||
};
|
||||
initSpeed = -0.984394;
|
||||
ACE_barrelTwist=254.0;
|
||||
ACE_barrelLength=508.0;
|
||||
ACE_barrelTwist = 254.0;
|
||||
ACE_barrelLength = 508.0;
|
||||
};
|
||||
class srifle_DMR_04_F: DMR_04_base_F {
|
||||
initSpeed = -1.0;
|
||||
ACE_barrelTwist=203.2;
|
||||
ACE_barrelLength=450.088;
|
||||
ACE_barrelTwist = 203.2;
|
||||
ACE_barrelLength = 450.088;
|
||||
};
|
||||
class srifle_DMR_05_blk_F: DMR_05_base_F {
|
||||
initSpeed = -1.0;
|
||||
ACE_barrelTwist=359.918;
|
||||
ACE_barrelLength=620.014;
|
||||
ACE_barrelTwist = 359.918;
|
||||
ACE_barrelLength = 620.014;
|
||||
};
|
||||
class srifle_DMR_06_camo_F: DMR_06_base_F {
|
||||
magazines[] = {
|
||||
@ -611,18 +611,18 @@ class CfgWeapons {
|
||||
"ACE_20Rnd_762x51_Mag_SD"
|
||||
};
|
||||
initSpeed = -0.992197;
|
||||
ACE_barrelTwist=304.8;
|
||||
ACE_barrelLength=558.8;
|
||||
ACE_barrelTwist = 304.8;
|
||||
ACE_barrelLength = 558.8;
|
||||
};
|
||||
class MMG_01_hex_F: MMG_01_base_F {
|
||||
initSpeed = -0.997073;
|
||||
ACE_barrelTwist=359.918;
|
||||
ACE_barrelLength=549.91;
|
||||
ACE_barrelTwist = 359.918;
|
||||
ACE_barrelLength = 549.91;
|
||||
};
|
||||
class MMG_02_camo_F: MMG_02_base_F {
|
||||
initSpeed = -1.0;
|
||||
ACE_barrelTwist=234.95;
|
||||
ACE_barrelLength=609.6;
|
||||
ACE_barrelTwist = 234.95;
|
||||
ACE_barrelLength = 609.6;
|
||||
};
|
||||
|
||||
class HMG_127 : LMG_RCWS {
|
||||
@ -631,8 +631,8 @@ class CfgWeapons {
|
||||
};
|
||||
class HMG_M2: HMG_01 {
|
||||
initSpeed = -1.0;
|
||||
ACE_barrelTwist=304.8;
|
||||
ACE_barrelLength=1143.0;
|
||||
ACE_barrelTwist = 304.8;
|
||||
ACE_barrelLength = 1143.0;
|
||||
};
|
||||
|
||||
/* Silencers */
|
||||
|
@ -4,7 +4,7 @@
|
||||
class CfgLocationTypes {
|
||||
class ACE_HashLocation {
|
||||
color[] = {0,0,0,0};
|
||||
drawStyle = "bananas";
|
||||
drawStyle = "WARNING-ACE_HashLocation_is_deprecated"; // Replaced by CBA_fnc_createNamespace
|
||||
font = "RobotoCondensed";
|
||||
importance = 5;
|
||||
name = "HashLocation";
|
||||
|
@ -13,6 +13,7 @@ PREP(ASLToPosition);
|
||||
PREP(binarizeNumber);
|
||||
PREP(blurScreen);
|
||||
PREP(cachedCall);
|
||||
PREP(canDig);
|
||||
PREP(canGetInPosition);
|
||||
PREP(canInteractWith);
|
||||
PREP(changeProjectileDirection);
|
||||
|
@ -282,11 +282,11 @@ enableCamShake true;
|
||||
params ["_newPlayer","_oldPlayer"];
|
||||
|
||||
if (alive _newPlayer) then {
|
||||
[_newPlayer] call FUNC(setName);
|
||||
[FUNC(setName), [_newPlayer]] call CBA_fnc_execNextFrame;
|
||||
};
|
||||
|
||||
if (alive _oldPlayer) then {
|
||||
[_oldPlayer] call FUNC(setName);
|
||||
[FUNC(setName), [_oldPlayer]] call CBA_fnc_execNextFrame;
|
||||
};
|
||||
}] call CBA_fnc_addPlayerEventHandler;
|
||||
|
||||
|
31
addons/common/functions/fnc_canDig.sqf
Normal file
31
addons/common/functions/fnc_canDig.sqf
Normal file
@ -0,0 +1,31 @@
|
||||
/*
|
||||
* Author: Ruthberg, commy2
|
||||
* Checks if the player can dig on the surface below (enough dust).
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Unit <OBJECT>
|
||||
*
|
||||
* Return Value:
|
||||
* Can Dig <BOOL>
|
||||
*
|
||||
* Example:
|
||||
* [ACE_player] call ace_common_fnc_canDig
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
params ["_unit"];
|
||||
|
||||
private _posASL = getPosASL _unit;
|
||||
|
||||
if ((getPosATL _unit) select 2 > 0.05 || // Walking on objects, such as buildings, pavements, etc.
|
||||
{surfaceIsWater _posASL} // posATL in low water (not as low to allow awalking) is negative
|
||||
) exitWith {false};
|
||||
|
||||
private _surfaceClass = (surfaceType _posASL) select [1];
|
||||
private _surfaceType = getText (configFile >> "CfgSurfaces" >> _surfaceClass >> "soundEnviron");
|
||||
private _surfaceDust = getNumber (configFile >> "CfgSurfaces" >> _surfaceClass >> "dust");
|
||||
TRACE_2("Surface",_surfaceType,_surfaceDust);
|
||||
|
||||
!(_surfaceType in DIG_SURFACE_BLACKLIST) && {_surfaceDust >= 0.1}
|
@ -22,81 +22,87 @@ if (_map in ["tanoa"]) exitWith { [-18, 0] };
|
||||
if (_map in ["altis"]) exitWith { [40, 0] };
|
||||
if (_map in ["stratis"]) exitWith { [40, 0] };
|
||||
|
||||
if (_map in ["abbottabad"]) exitWith { [34, 1256] }; //Abbottabad elevation 1256m (Wikipedia)
|
||||
if (_map in ["abel"]) exitWith { [39, 0] }; //CWR2 Malden
|
||||
if (_map in ["abbottabad"]) exitWith { [34, 1256] }; // Abbottabad elevation 1256m (Wikipedia)
|
||||
if (_map in ["abel"]) exitWith { [39, 0] }; // CWR2 Malden
|
||||
if (_map in ["abramia"]) exitWith { [60, 0] };
|
||||
if (_map in ["af_kandahar_province"]) exitWith { [42, 0] };
|
||||
if (_map in ["angel"]) exitWith { [38, 0] };
|
||||
if (_map in ["anim_helvantis_v2"]) exitWith { [50, 0] };
|
||||
if (_map in ["australia"]) exitWith { [-25, 0] };
|
||||
if (_map in ["baranow", "ivachev", "panavo", "staszow"]) exitWith { [50, 148.1] }; //IFA3LITE - default elevationOffset
|
||||
if (_map in ["baranow", "ivachev", "panavo", "staszow"]) exitWith { [50, 148.1] }; // IFA3LITE - default elevationOffset
|
||||
if (_map in ["beketov"]) exitWith { [55, 0] };
|
||||
if (_map in ["blud_cordelia"]) exitWith { [12, 5] }; // Trung Si
|
||||
if (_map in ["bootcamp_acr"]) exitWith { [50, 0] };
|
||||
if (_map in ["bornholm"]) exitWith { [55, 0] };
|
||||
if (_map in ["bozcaada"]) exitWith { [40, 0] };
|
||||
if (_map in ["cain"]) exitWith { [40, 0] }; //CWR2 Kolgujev
|
||||
if (_map in ["cain"]) exitWith { [40, 0] }; // CWR2 Kolgujev
|
||||
if (_map in ["caribou"]) exitWith { [68, 0] };
|
||||
if (_map in ["cartercity"]) exitWith { [43, 130] }; //Pecher, based on Grozny (1995 - 1996) elevation 130m (Wikipedia)
|
||||
if (_map in ["cartercity"]) exitWith { [43, 130] }; // Pecher, based on Grozny (1995 - 1996) elevation 130m (Wikipedia)
|
||||
if (_map in ["catalina"]) exitWith { [33, 0] };
|
||||
if (_map in ["chernarus", "chernarus_summer", "chernarus_winter"]) exitWith { [50, 0] };
|
||||
if (_map in ["chernobylzone", "chernobylzonea2"]) exitWith { [51, 0] };
|
||||
if (_map in ["clafghan"]) exitWith { [34, 640] };
|
||||
if (_map in ["colleville"]) exitWith { [49, 0] }; //IFA3LITE, Omaha Beach 1944
|
||||
if (_map in ["csj_lawlands", "uns_dong_ha"]) exitWith { [12, 0] }; //Unsung Mod
|
||||
if (_map in ["csj_sea"]) exitWith { [15, 0] }; //Unsung Mod
|
||||
if (_map in ["dakrong"]) exitWith { [16, 0] }; //Unsung Mod
|
||||
if (_map in ["colleville"]) exitWith { [49, 0] }; // IFA3LITE, Omaha Beach 1944
|
||||
if (_map in ["csj_lawlands", "uns_dong_ha"]) exitWith { [12, 0] }; // Unsung Mod
|
||||
if (_map in ["csj_sea"]) exitWith { [15, 0] }; // Unsung Mod
|
||||
if (_map in ["dakrong"]) exitWith { [16, 0] }; // Unsung Mod
|
||||
if (_map in ["desert_e"]) exitWith { [40, 800] };
|
||||
if (_map in ["desert_island"]) exitWith { [40, 0] }; //CWR2 Desert Island
|
||||
if (_map in ["dya"]) exitWith { [34, 110] }; //Diyala Iraq - default elevationOffset
|
||||
if (_map in ["eden"]) exitWith { [45, 0] }; //CWR2 Everon
|
||||
if (_map in ["desert_island"]) exitWith { [40, 0] }; // CWR2 Desert Island
|
||||
if (_map in ["dya"]) exitWith { [34, 110] }; // Diyala Iraq - default elevationOffset
|
||||
if (_map in ["eden"]) exitWith { [45, 0] }; // CWR2 Everon
|
||||
if (_map in ["esseker"]) exitWith { [43, 2000] };
|
||||
if (_map in ["evergreen"]) exitWith { [41, 0] }; //Burgazada, Turkey - default elevationOffset
|
||||
if (_map in ["evergreen"]) exitWith { [41, 0] }; // Burgazada, Turkey - default elevationOffset
|
||||
if (_map in ["fallujah"]) exitWith { [33, 0] };
|
||||
if (_map in ["fata"]) exitWith { [33, 1347] };
|
||||
if (_map in ["gorgona"]) exitWith { [43, 0] };
|
||||
if (_map in ["hellskitchen", "hellskitchens"]) exitWith { [32, 900] }; //Sangin summer, Sangin winter - Sangin elevation 888m (Wikipedia)
|
||||
if (_map in ["hellskitchen", "hellskitchens"]) exitWith { [32, 900] }; // Sangin summer, Sangin winter - Sangin elevation 888m (Wikipedia)
|
||||
if (_map in ["hindukush"]) exitWith { [36, 0] };
|
||||
if (_map in ["i44_omaha_v2"]) exitWith { [49, 0] };
|
||||
if (_map in ["imrali", "imralispring"]) exitWith { [40, 0] };
|
||||
if (_map in ["intro"]) exitWith { [40, 0] };
|
||||
if (_map in ["isladuala3"]) exitWith { [-19, 0] };
|
||||
if (_map in ["jacobi"]) exitWith { [34, 2000] }; //default elevationOffset
|
||||
if (_map in ["jacobi"]) exitWith { [34, 2000] }; // default elevationOffset
|
||||
if (_map in ["kapaulio"]) exitWith { [0, 0] };
|
||||
if (_map in ["kerama"]) exitWith { [26, 0] }; //Kerama Islands, Japan - default elevationOffset
|
||||
if (_map in ["khe_sanh"]) exitWith { [17, 0] }; //Unsung Mod
|
||||
if (_map in ["kerama"]) exitWith { [26, 0] }; // Kerama Islands, Japan - default elevationOffset
|
||||
if (_map in ["khe_sanh"]) exitWith { [17, 0] }; // Unsung Mod
|
||||
if (_map in ["kholm"]) exitWith { [36, 0] };
|
||||
if (_map in ["kidal"]) exitWith { [18, 0] }; //Kidal, Mali - default elevationOffset
|
||||
if (_map in ["kidal"]) exitWith { [18, 0] }; // Kidal, Mali - default elevationOffset
|
||||
if (_map in ["koplic"]) exitWith { [42, 0] };
|
||||
if (_map in ["kunduz"]) exitWith { [37, 0] };
|
||||
if (_map in ["lingor", "lingor3"]) exitWith { [-4, 0] };
|
||||
if (_map in ["lingor", "lingor3", "dingor"]) exitWith { [-4, 0] };
|
||||
if (_map in ["lost", "lostw"]) exitWith { [60, 0] };
|
||||
if (_map in ["malvinas"]) exitWith { [-52, 0] };
|
||||
if (_map in ["marenice"]) exitWith { [51, 0] }; //CSA38 Mod (Czechoslovak army 1938 - Munich crisis), Lisatian Mountains.
|
||||
if (_map in ["marenice"]) exitWith { [51, 0] }; // CSA38 Mod (Czechoslovak army 1938 - Munich crisis), Lisatian Mountains.
|
||||
if (_map in ["mcn_aliabad"]) exitWith { [36, 0] };
|
||||
if (_map in ["mcn_neaville", "mcn_neaville_winter"]) exitWith { [45, 0] }; // I44: Neaville, I44: Neaville (Winter)
|
||||
if (_map in ["mef_alaska"]) exitWith { [60, 5] };
|
||||
if (_map in ["mog"]) exitWith { [2, 0] }; //Mogadishu, Somalia
|
||||
if (_map in ["mog"]) exitWith { [2, 0] }; // Mogadishu, Somalia
|
||||
if (_map in ["mountains_acr"]) exitWith { [35, 2000] };
|
||||
if (_map in ["mske"]) exitWith { [35, 0] }; // MSKE 2017
|
||||
if (_map in ["nam2"]) exitWith { [14, 0] };
|
||||
if (_map in ["namalsk"]) exitWith { [65, 0] };
|
||||
if (_map in ["napf", "napfwinter"]) exitWith { [47, 0] };
|
||||
if (_map in ["newyork_lumnuon"]) exitWith { [41, 5] }; //Governer´s Island, New York - default elevationOffset
|
||||
if (_map in ["noe"]) exitWith { [45, 0] }; //CWR2 Nogova
|
||||
if (_map in ["newyork_lumnuon"]) exitWith { [41, 5] }; // Governer´s Island, New York - default elevationOffset
|
||||
if (_map in ["noe"]) exitWith { [45, 0] }; // CWR2 Nogova
|
||||
if (_map in ["panthera3", "winthera3"]) exitWith { [46, 0] };
|
||||
if (_map in ["phu_bai", "rockwall", "us101_cao_bang"]) exitWith { [14, 0] }; //Unsung Mod
|
||||
if (_map in ["pianosa_aut"]) exitWith { [43, 0] }; //Pianosa, Italy - default elevationOffset
|
||||
if (_map in ["pja305"]) exitWith { [0, 0] }; //G.O.S N'Ziwasogo
|
||||
if (_map in ["pja306"]) exitWith { [35, 0] }; //G.O.S Kalu Khan
|
||||
if (_map in ["pja307"]) exitWith { [17, 0] }; //F.S.F Daryah
|
||||
if (_map in ["pja308"]) exitWith { [36, 0] }; //G.O.S Gunkizli
|
||||
if (_map in ["pja310"]) exitWith { [36, 0] }; //G.O.S Al Rayak
|
||||
if (_map in ["pja312"]) exitWith { [16, 0] }; //G.O.S Song Bin Tanh
|
||||
if (_map in ["phu_bai", "rockwall", "us101_cao_bang"]) exitWith { [14, 0] }; // Unsung Mod
|
||||
if (_map in ["pianosa_aut"]) exitWith { [43, 0] }; // Pianosa, Italy - default elevationOffset
|
||||
if (_map in ["pja305"]) exitWith { [0, 0] }; // G.O.S N'Ziwasogo
|
||||
if (_map in ["pja306"]) exitWith { [35, 0] }; // G.O.S Kalu Khan
|
||||
if (_map in ["pja307"]) exitWith { [17, 0] }; // F.S.F Daryah
|
||||
if (_map in ["pja308"]) exitWith { [36, 0] }; // G.O.S Gunkizli
|
||||
if (_map in ["pja310"]) exitWith { [36, 0] }; // G.O.S Al Rayak
|
||||
if (_map in ["pja312"]) exitWith { [16, 0] }; // G.O.S Song Bin Tanh
|
||||
if (_map in ["pja314"]) exitWith { [46, 0] }; // G.O.S Leskovets
|
||||
if (_map in ["plr_bulge"]) exitWith { [49, 0] }; // I44: Battle of the Bulge
|
||||
if (_map in ["porquerolles"]) exitWith { [43, 0] };
|
||||
if (_map in ["porto"]) exitWith { [40, 0] };
|
||||
if (_map in ["provinggrounds_pmc"]) exitWith { [35, 100] };
|
||||
if (_map in ["reshmaan"]) exitWith { [35, 2000] };
|
||||
if (_map in ["rungsat"]) exitWith { [10, 0] }; //Unsung Mod
|
||||
if (_map in ["rungsat"]) exitWith { [10, 0] }; // Unsung Mod
|
||||
if (_map in ["sara", "sara_dbe1"]) exitWith { [40, 0] };
|
||||
if (_map in ["saralite"]) exitWith { [40, 0] };
|
||||
if (_map in ["sb3"]) exitWith { [53, 25] }; //TrpUebPl Einfelde Nord (Munster North Training Area, Germany) - default elevationOffset
|
||||
if (_map in ["sb3"]) exitWith { [53, 25] }; // TrpUebPl Einfelde Nord (Munster North Training Area, Germany) - default elevationOffset
|
||||
if (_map in ["sfp_sturko"]) exitWith { [56, 0] };
|
||||
if (_map in ["sfp_wamako"]) exitWith { [14, 0] };
|
||||
if (_map in ["shapur_baf"]) exitWith { [35, 100] };
|
||||
@ -105,13 +111,13 @@ if (_map in ["takistan"]) exitWith { [35, 2000] };
|
||||
if (_map in ["thirsk"]) exitWith { [65, 0] };
|
||||
if (_map in ["tilos"]) exitWith { [36, 0] };
|
||||
if (_map in ["uhao"]) exitWith { [21, 0] };
|
||||
if (_map in ["uns_idv", "uns_ptv"]) exitWith { [13, 0] }; //Unsung Mod
|
||||
if (_map in ["uns_idv", "uns_ptv"]) exitWith { [13, 0] }; // Unsung Mod
|
||||
if (_map in ["utes"]) exitWith { [50, 0] };
|
||||
if (_map in ["vt5"]) exitWith { [61, 100] }; //Valtatie 5, Finland - default elevationOffset
|
||||
if (_map in ["vt5"]) exitWith { [61, 100] }; // Valtatie 5, Finland - default elevationOffset
|
||||
if (_map in ["wake"]) exitWith { [19, 0] };
|
||||
if (_map in ["waziristan"]) exitWith { [33, 0] };
|
||||
if (_map in ["wintermap"]) exitWith { [61, 0] }; //Nordkvingo - default elevationOffset
|
||||
if (_map in ["wintertown", "wintertowna3"]) exitWith { [39, 600] }; //U.S. state Kansas mean elevation 610m (Wikipedia)
|
||||
if (_map in ["wintermap"]) exitWith { [61, 0] }; // Nordkvingo - default elevationOffset
|
||||
if (_map in ["wintertown", "wintertowna3"]) exitWith { [39, 600] }; // U.S. state Kansas mean elevation 610m (Wikipedia)
|
||||
if (_map in ["woodland_acr"]) exitWith { [50, 0] };
|
||||
if (_map in ["xcam_prototype"]) exitWith { [35, 0] };
|
||||
if (_map in ["xcam_taunus"]) exitWith { [50, 0] };
|
||||
|
@ -13,6 +13,7 @@
|
||||
#include "script_component.hpp"
|
||||
|
||||
params ["_unit"];
|
||||
TRACE_3("setName",_unit,alive _unit,name _unit);
|
||||
|
||||
if (isNull _unit || {!alive _unit}) exitWith {};
|
||||
|
||||
|
@ -48,6 +48,7 @@ TRACE_2("Starting Embargo", _varName, _delay);
|
||||
|
||||
//If value at start of embargo doesn't equal current, then broadcast and start new embargo
|
||||
if (!(_value isEqualTo _curValue)) then {
|
||||
_this set [2, _curValue];
|
||||
_this call FUNC(setVariablePublic);
|
||||
};
|
||||
}, _this, _delay] call CBA_fnc_waitAndExecute;
|
||||
|
@ -19,3 +19,16 @@
|
||||
#define VERSION_CONFIG_COMMON VERSION_CONFIG;\
|
||||
versionDesc = "ACE 3";\
|
||||
versionAct = QUOTE(call COMPILE_FILE(init_versionTooltip))
|
||||
|
||||
|
||||
#define DIG_SURFACE_BLACKLIST [ \
|
||||
"concrete", "concrete_exp", "concrete_int", "int_concrete", "int_concrete_exp", \
|
||||
"pavement_exp", "int_pavement_exp", \
|
||||
"tiling", "tiles_int", "int_tiles", \
|
||||
"roof_tin", "roof_tiles", "rooftiles_exp", \
|
||||
"tarmac", "asphalt_exp", \
|
||||
"stones_exp", "rock", "stony", \
|
||||
"metal", "gridmetal_exp", "metalplate_exp", "int_metalplate_exp", "metal_int", "wavymetal", "wavymetal_exp", "int_metal", "steel_exp", \
|
||||
"lino_exp", "int_lino_exp", "int_mat_exp", \
|
||||
"wood", "wood_int", "int_wood", "softwood_exp", "int_softwood_exp", "int_solidwood_exp" \
|
||||
]
|
||||
|
@ -1,3 +1,3 @@
|
||||
#include "script_component.hpp"
|
||||
params ["_wire"];
|
||||
_wire addEventHandler ["HandleDamage", FUNC(handleDamage)];
|
||||
_wire addEventHandler ["HandleDamage", {call FUNC(handleDamage)}];
|
||||
|
@ -23,7 +23,7 @@ if (uiNamespace getVariable [QEGVAR(interact_menu,cursorMenuOpened),false]) exit
|
||||
params ["_wire", "_unit"];
|
||||
|
||||
private _config = (configFile >> "CfgVehicles" >> typeOf _unit);
|
||||
private _delay = [120, 60] select (getNumber (_config >> "engineer") == 1 || {getNumber (_config >> "canDeactivateMines") == 1});
|
||||
private _delay = [45, 30] select ([_unit] call EFUNC(common,isEngineer) || {[_unit] call EFUNC(common,isEOD)});
|
||||
|
||||
// TODO: Animation?
|
||||
[
|
||||
|
@ -12,10 +12,16 @@ class ACE_Settings {
|
||||
value = 1;
|
||||
typeName = "BOOL";
|
||||
};
|
||||
class GVAR(enableAmmoCookoff) {
|
||||
class GVAR(enableAmmoCookoff) { // For CBA Setting Switch: we can eliminate and just use (ammoCookoffDuration == 0)
|
||||
displayName = CSTRING(enableAmmoCookoff_name);
|
||||
description = CSTRING(enableAmmoCookoff_tooltip);
|
||||
value = 1;
|
||||
typeName = "BOOL";
|
||||
};
|
||||
class GVAR(ammoCookoffDuration) {
|
||||
displayName = CSTRING(ammoCookoffDuration_name);
|
||||
description = CSTRING(ammoCookoffDuration_tooltip);
|
||||
value = 1;
|
||||
typeName = "SCALAR";
|
||||
};
|
||||
};
|
||||
|
@ -4,5 +4,5 @@ PREP(engineFire);
|
||||
PREP(cookOff);
|
||||
PREP(cookOffBox);
|
||||
PREP(blowOffTurret);
|
||||
PREP(secondaryExplosions);
|
||||
PREP(detonateAmmunition);
|
||||
PREP(getVehicleAmmo);
|
||||
|
@ -80,11 +80,10 @@ GVAR(cacheTankDuplicates) = call CBA_fnc_createNamespace;
|
||||
// secondary explosions
|
||||
["AllVehicles", "killed", {
|
||||
params ["_vehicle"];
|
||||
if (_vehicle getVariable [QGVAR(enable),GVAR(enable)]) then {
|
||||
_vehicle call FUNC(secondaryExplosions);
|
||||
if (_vehicle getVariable [QGVAR(enableAmmoCookoff), GVAR(enableAmmoCookoff)]) then {
|
||||
[_vehicle, magazinesAmmo _vehicle] call FUNC(detonateAmmunition);
|
||||
};
|
||||
if (_vehicle getVariable [QGVAR(enableAmmoCookoff), GVAR(enableAmmoCookoff)]) then {
|
||||
if (GVAR(ammoCookoffDuration) == 0) exitWith {};
|
||||
([_vehicle] call FUNC(getVehicleAmmo)) params ["_mags", "_total"];
|
||||
[_vehicle, _mags, _total] call FUNC(detonateAmmunition);
|
||||
};
|
||||
}, nil, ["Man","StaticWeapon"]] call CBA_fnc_addClassEventHandler;
|
||||
|
||||
|
@ -132,6 +132,6 @@ if (local _vehicle) then {
|
||||
if (local _vehicle) then {
|
||||
_vehicle setDamage 1;
|
||||
};
|
||||
}, [_vehicle, _effects], 4 + random 20] call CBA_fnc_waitAndExecute;
|
||||
}, [_vehicle, _effects, _positions], 3 + random 15] call CBA_fnc_waitAndExecute;
|
||||
}, _vehicle, 0.5 + random 5] call CBA_fnc_waitAndExecute;
|
||||
}, [_vehicle, _effects], 14] call CBA_fnc_waitAndExecute;
|
||||
}, [_vehicle, _effects, _positions], 10.5] call CBA_fnc_waitAndExecute;
|
||||
}, _vehicle, 3] call CBA_fnc_waitAndExecute;
|
||||
|
@ -44,9 +44,10 @@ if (local _box) then {
|
||||
|
||||
// These functions are smart and do all the cooking off work
|
||||
if (local _box) then {
|
||||
_box call FUNC(secondaryExplosions);
|
||||
if (_box getVariable [QGVAR(enableAmmoCookoff), GVAR(enableAmmoCookoff)]) then {
|
||||
[_box, magazinesAmmo _box] call FUNC(detonateAmmunition);
|
||||
if (GVAR(ammoCookoffDuration) == 0) exitWith {};
|
||||
([_box] call FUNC(getVehicleAmmo)) params ["_mags", "_total"];
|
||||
[_box, _mags, _total] call FUNC(detonateAmmunition);
|
||||
};
|
||||
|
||||
// This shit is busy being on fire, magazines aren't accessible/usable
|
||||
@ -70,6 +71,6 @@ if (local _box) then {
|
||||
if (local _box) then {
|
||||
_box setDamage 1;
|
||||
};
|
||||
}, [_box, _effects], 45 + random 75] call CBA_fnc_waitAndExecute; // Give signifcant time for ammo cookoff to occur (perhaps keep the box alive until all cooked off?)
|
||||
}, [_box, _effects], 3 + random 15] call CBA_fnc_waitAndExecute;
|
||||
}, _box, 0.5 + random 5] call CBA_fnc_waitAndExecute;
|
||||
}, [_box, _effects], 82.5] call CBA_fnc_waitAndExecute; // Give signifcant time for ammo cookoff to occur (perhaps keep the box alive until all cooked off?)
|
||||
}, [_box, _effects], 10.5] call CBA_fnc_waitAndExecute;
|
||||
}, _box, 3] call CBA_fnc_waitAndExecute;
|
||||
|
@ -4,6 +4,10 @@
|
||||
*
|
||||
* Arguments:
|
||||
* 0: vehicle <OBJECT>
|
||||
* 1: Ammo Array <ARRAY>
|
||||
* 0: Magazine Classname <STRING>
|
||||
* 1: Ammo Count <NUMBER>
|
||||
* 2: Total Ammo Count <NUMBER>
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
@ -16,7 +20,7 @@
|
||||
#include "script_component.hpp"
|
||||
#define MAX_TIME_BETWEEN_AMMO_DET 25
|
||||
|
||||
params ["_vehicle", "_magazines"];
|
||||
params ["_vehicle", "_magazines", "_totalAmmo"];
|
||||
|
||||
if (isNull _vehicle) exitWith {}; // vehicle got deleted
|
||||
if (_magazines isEqualTo []) exitWith {}; // nothing to detonate anymore
|
||||
@ -27,21 +31,22 @@ private _magazine = _magazines select _magazineIndex;
|
||||
_magazine params ["_magazineClassname", "_amountOfMagazines"];
|
||||
|
||||
if (_amountOfMagazines > 0) exitWith {
|
||||
private _newMagCount = _amountOfMagazines - floor(1 + random(6));
|
||||
if (_newMagCount <= 0) then {
|
||||
private _removed = _amountOfMagazines min floor(1 + random(6 / GVAR(ammoCookoffDuration)));
|
||||
|
||||
_amountOfMagazines = _amountOfMagazines - _removed;
|
||||
if (_amountOfMagazines <= 0) then {
|
||||
_magazines deleteAt _magazineIndex;
|
||||
} else {
|
||||
_magazine set [1, _newMagCount]; // clear out the magazine
|
||||
_magazine set [1, _amountOfMagazines]; // clear out the magazine
|
||||
};
|
||||
private _timeBetweenAmmoDetonation = (random 7) * (1 / random (_amountOfMagazines)) min MAX_TIME_BETWEEN_AMMO_DET;
|
||||
_timeBetweenAmmoDetonation = _timeBetweenAmmoDetonation max 0.1;
|
||||
private _timeBetweenAmmoDetonation = (((random 10) / (sqrt _totalAmmo)) min MAX_TIME_BETWEEN_AMMO_DET) max 0.1;
|
||||
TRACE_2("",_totalAmmo,_timeBetweenAmmoDetonation);
|
||||
_totalAmmo = _totalAmmo - _removed;
|
||||
|
||||
private _ammo = getText (configFile >> "CfgMagazines" >> _magazineClassname >> "ammo");
|
||||
private _ammoCfg = configFile >> "CfgAmmo" >> _ammo;
|
||||
|
||||
private _speedOfAmmo = getNumber (configFile >> "CfgMagazines" >> _magazineClassname >> "initSpeed");
|
||||
private _simulationTime = getNumber (_ammoCfg >> "simulation");
|
||||
private _caliber = getNumber (_ammoCfg >> "caliber");
|
||||
private _simType = getText (_ammoCfg >> "simulation");
|
||||
|
||||
private _effect2pos = _vehicle selectionPosition "destructionEffect2";
|
||||
@ -60,7 +65,7 @@ if (_amountOfMagazines > 0) exitWith {
|
||||
private _velVec = _vectorAmmo vectorMultiply _speed;
|
||||
_projectile setVectorDir _velVec;
|
||||
_projectile setVelocity _velVec;
|
||||
[ACE_player, _projectile, [1,0,0,1]] call EFUNC(frag,addTrack);
|
||||
// [ACE_player, _projectile, [1,0,0,1]] call EFUNC(frag,addTrack); // visual debuging from ace_frag
|
||||
} else {
|
||||
_projectile setDamage 1;
|
||||
};
|
||||
@ -124,6 +129,6 @@ if (_amountOfMagazines > 0) exitWith {
|
||||
};
|
||||
};
|
||||
|
||||
[FUNC(detonateAmmunition), [_vehicle, _magazines], _timeBetweenAmmoDetonation] call CBA_fnc_waitAndExecute;
|
||||
[FUNC(detonateAmmunition), [_vehicle, _magazines, _totalAmmo], _timeBetweenAmmoDetonation] call CBA_fnc_waitAndExecute;
|
||||
};
|
||||
[FUNC(detonateAmmunition), [_vehicle, _magazines], random 3] call CBA_fnc_waitAndExecute;
|
||||
ERROR_1("mag with no ammo - %1", _magazine);
|
||||
|
56
addons/cookoff/functions/fnc_getVehicleAmmo.sqf
Normal file
56
addons/cookoff/functions/fnc_getVehicleAmmo.sqf
Normal file
@ -0,0 +1,56 @@
|
||||
/*
|
||||
* Author: PabstMirror
|
||||
* Gets all magazines inside of a vehicle.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Vehicle <Object>
|
||||
*
|
||||
* Return Value:
|
||||
* 0: Ammo Array <ARRAY>
|
||||
* 0: Magazine Classname <STRING>
|
||||
* 1: Ammo Count <NUMBER>
|
||||
* 1: Total Ammo Count <NUMBER>
|
||||
*
|
||||
* Example:
|
||||
* [vehicle player] call ace_cookoff_fnc_getVehicleAmmo
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
params ["_vehicle"];
|
||||
TRACE_1("getVehicleAmmo",_vehicle);
|
||||
|
||||
private _ammoToDetonate = [];
|
||||
private _totalAmmo = 0;
|
||||
|
||||
// Get ammo from turrets
|
||||
{
|
||||
_x params ["_mag", "", "_count"];
|
||||
if (_count > 0) then {
|
||||
_ammoToDetonate pushBack [_mag, _count];
|
||||
_totalAmmo = _totalAmmo + _count;
|
||||
};
|
||||
} forEach (magazinesAllTurrets _vehicle);
|
||||
|
||||
// Get ammo from cargo space
|
||||
{
|
||||
_x params ["_mag", "_count"];
|
||||
if (_count > 0) then {
|
||||
_ammoToDetonate pushBack [_mag, _count];
|
||||
_totalAmmo = _totalAmmo + _count;
|
||||
};
|
||||
} forEach (magazinesAmmoCargo _vehicle);
|
||||
|
||||
// Get ammo from transportAmmo / ace_rearm
|
||||
private _vehCfg = configFile >> "CfgVehicles" >> typeOf _vehicle;
|
||||
if (((getNumber (_vehCfg >> "transportAmmo")) > 1000) || {isClass (_vehCfg >> "ACE_Actions" >> "ACE_MainActions" >> QEGVAR(rearm,TakeAmmo))}) then {
|
||||
TRACE_1("transportAmmo vehicle - adding virtual ammo",typeOf _vehicle);
|
||||
|
||||
_ammoToDetonate pushBack ["2000Rnd_65x39_belt", 2000];
|
||||
_totalAmmo = _totalAmmo + 2000;
|
||||
_ammoToDetonate pushBack ["20Rnd_105mm_HEAT_MP", 100];
|
||||
_totalAmmo = _totalAmmo + 100;
|
||||
};
|
||||
|
||||
[_ammoToDetonate, _totalAmmo]
|
@ -1,64 +0,0 @@
|
||||
/*
|
||||
* Author: Maddmatt, commy2
|
||||
* Generate an amount of secondary explosions
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Vehicle <OBJECT>
|
||||
* 1: Amount <NUMBER>
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
#define SECONDARIES_DELAY (1 + random 45)
|
||||
|
||||
params ["_vehicle", "_amount"];
|
||||
|
||||
if (isNil "_amount") then {
|
||||
// calculate amount of secondary explosions if not specified
|
||||
_amount = 0;
|
||||
|
||||
{
|
||||
_x params ["_magazine", "_count"];
|
||||
|
||||
private _ammo = getText (_magazine call CBA_fnc_getItemConfig >> "ammo");
|
||||
|
||||
if (IS_EXPLOSIVE_AMMO(_ammo)) then {
|
||||
if (_ammo isKindOf "ShellBase") then {
|
||||
ADD(_amount,_count);
|
||||
} else {
|
||||
ADD(_amount,_count/50);
|
||||
};
|
||||
};
|
||||
} forEach magazinesAmmo _vehicle;
|
||||
};
|
||||
|
||||
if (_amount <= 0) exitWith {};
|
||||
|
||||
private _fnc_secondaryExplosion = {
|
||||
params ["_vehicle", "_amount", "_fnc_secondaryExplosion"];
|
||||
|
||||
private _position = _vehicle modelToWorld (_vehicle selectionPosition "destructionEffect2");
|
||||
|
||||
// these CfgAmmo objects are always global
|
||||
createVehicle ["SmallSecondary", _position, [], 0, "CAN_COLLIDE"];
|
||||
|
||||
DEC(_amount);
|
||||
|
||||
if (!isNull _vehicle && {_amount > 0}) then {
|
||||
[_fnc_secondaryExplosion, [_vehicle, _amount, _fnc_secondaryExplosion], SECONDARIES_DELAY] call CBA_fnc_waitAndExecute;
|
||||
};
|
||||
};
|
||||
|
||||
[_fnc_secondaryExplosion, [_vehicle, _amount, _fnc_secondaryExplosion], SECONDARIES_DELAY] call CBA_fnc_waitAndExecute;
|
||||
|
||||
nil
|
||||
|
||||
/*SencondaryExplosion
|
||||
SecondaryExp
|
||||
SecondarySmoke
|
||||
GrenadeExploLight
|
||||
*/
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="CookOff">
|
||||
<Key ID="STR_ACE_CookOff_enable_name">
|
||||
@ -8,7 +8,8 @@
|
||||
<Russian>Включить воспламенение</Russian>
|
||||
<Japanese>誘爆を有効化</Japanese>
|
||||
<Korean>쿡오프 현상 활성화</Korean>
|
||||
<Polish>Aktywuj efekty wybuchu amunicji</Polish>
|
||||
<Polish>Aktywuj efekty samozapłonu amunicji</Polish>
|
||||
<French>Activer </French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_CookOff_enable_tooltip">
|
||||
<English>Enables cook off and related vehicle destruction effects.</English>
|
||||
@ -17,7 +18,7 @@
|
||||
<Russian>Включает воспламенение и сопутствующие эффекты повреждения техники.</Russian>
|
||||
<Japanese>誘爆を有効化し、車両が誘爆によって破壊されていきます。</Japanese>
|
||||
<Korean>쿡오프 현상을 활성화 하고 관련된 차량에 폭발 이펙트를 적용합니다.</Korean>
|
||||
<Polish>Aktywuje efekt wybuchu amunicji na zniszczonych pojazdach.</Polish>
|
||||
<Polish>Aktywuje efekt samozapłonu amunicji na zniszczonych pojazdach.</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_CookOff_generic_turret_wreck">
|
||||
<Original>Wreck (Turret)</Original>
|
||||
@ -38,24 +39,36 @@
|
||||
<Japanese>弾薬箱に誘爆を有効化</Japanese>
|
||||
<German>Selbstzündung für Munitionskisten ermöglichen</German>
|
||||
<Korean>탄약 상자 쿡오프 현상 활성화</Korean>
|
||||
<Polish>Aktywuje explozje skrzynek z amunicją</Polish>
|
||||
<Polish>Aktywuj samozapłon skrzyń z amunicją</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_CookOff_enableBoxCookoff_tooltip">
|
||||
<English>Enables cooking off of ammo boxes.</English>
|
||||
<Japanese>弾薬箱が誘爆するようになります。</Japanese>
|
||||
<German>Ermöglicht Selbstzündung von Munitionskisten.</German>
|
||||
<Korean>탄약 상자에 쿡오프 현상을 적용합니다.</Korean>
|
||||
<Polish>Aktywuje samozapłon skrzyń z amunicją</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_CookOff_enableAmmoCookoff_name">
|
||||
<English>Enable Ammunition cook off</English>
|
||||
<Japanese>弾薬の誘爆を有効化</Japanese>
|
||||
<German>Selbstzündung für Munition ermöglichen</German>
|
||||
<Korean>탄약 쿡오프 현상 활성화</Korean>
|
||||
<Polish>Aktywuj samozapłon amunicji</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_CookOff_enableAmmoCookoff_tooltip">
|
||||
<English>Enables Ammunition cook off. Fires ammunition projectiles while vehicle is on fire and has ammunition.</English>
|
||||
<Japanese>弾薬が誘爆します。車両が燃えると、搭載している弾薬が激しく燃え上がりす。</Japanese>
|
||||
<German>Ermöglicht Selbstzündung von Munition. Feuert Projektile der Munition ab, solange das Fahrzeug brennt und Munition besitzt.</German>
|
||||
<Polish>Aktywuje samozapłon amunicji. Wystrzeliwuje pociski podczas gdy pojazd płonie i posiada amunicję.</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_CookOff_ammoCookoffDuration_name">
|
||||
<English>Ammunition cook off duration</English>
|
||||
<Polish>Czas trwania samozapłonu amunicji</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_CookOff_ammoCookoffDuration_tooltip">
|
||||
<English>Multiplier for how long cook off lasts [Setting to 0 will disable ammo cookoff]</English>
|
||||
<French>Active le et les effets de destructions assosicée aux vehicules.</French>
|
||||
<Polish>Mnożnik decydujący jak długo ma trwać samozapłon amunicji [Ustawienie na 0 spowoduje wyłącznie samozapłonu]</Polish>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
@ -9,6 +9,7 @@
|
||||
<Japanese>ドッグ タグ</Japanese>
|
||||
<German>Hundemarke</German>
|
||||
<Korean>군번줄</Korean>
|
||||
<French>Plaque d'identification</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Dogtags_checkItem">
|
||||
<English>Check Dog Tag</English>
|
||||
@ -18,6 +19,7 @@
|
||||
<Japanese>ドッグ タグを見る</Japanese>
|
||||
<German>Hundemarke prüfen</German>
|
||||
<Korean>군번줄 확인</Korean>
|
||||
<French>Vérifier les plaques d'identification</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Dogtags_checkDogtag">
|
||||
<English>Check</English>
|
||||
@ -27,6 +29,7 @@
|
||||
<Japanese>見る</Japanese>
|
||||
<German>Prüfen</German>
|
||||
<Korean>확인</Korean>
|
||||
<French>Vérifier</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Dogtags_takeDogtag">
|
||||
<English>Take</English>
|
||||
@ -36,6 +39,7 @@
|
||||
<Japanese>取る</Japanese>
|
||||
<German>Nehmen</German>
|
||||
<Korean>회수</Korean>
|
||||
<French>Prendre</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Dogtags_takeDogtagSuccess">
|
||||
<English>Dogtag taken from %1...</English>
|
||||
@ -45,6 +49,7 @@
|
||||
<Japanese>%1からドッグ タグを取っている・・・</Japanese>
|
||||
<German>Hundemarke von %1 genommen ...</German>
|
||||
<Korean>%1로부터 군번줄을 회수했습니다...</Korean>
|
||||
<French>Plaque d'identification pris sur %1...</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Dogtags_dogtagAlreadyTaken">
|
||||
<English>Somebody else has already taken the dogtag...</English>
|
||||
@ -54,6 +59,8 @@
|
||||
<Japanese>すでに誰かがドッグ タグを取っているようだ・・・</Japanese>
|
||||
<German>Jemand anderes hat bereits die Hundemarke genommen ...</German>
|
||||
<Korean>누군가 이미 군번줄을 회수해갔습니다...</Korean>
|
||||
<French>Quelqu'un d'autre a déjâ pris les plaques d'identification...</French>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
||||
|
@ -882,6 +882,7 @@
|
||||
<Polish>Flara na linkę</Polish>
|
||||
<German>Stolperdraht-Leuchtrakete</German>
|
||||
<Korean>조명지뢰</Korean>
|
||||
<French>Fusée éclairante avec fil de détente</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_TripFlare_Description">
|
||||
<English>Type: Tripwire flare - Ignites a non-lethal flare when triggered.<br />Rounds: 1<br />Used on: Ground</English>
|
||||
@ -890,6 +891,7 @@
|
||||
<Polish>Typ: Flara na linkę - Wystrzeliwuje nieszkodliwą flarę przy nadepnięciu linki.<br/>Pociski: 1<br/>Używane na: ziemia</Polish>
|
||||
<German>Typ: Stolperdraht-Leuchtrakete - Schießt bei Auslösung eine nicht-tödliche Leuchtrakete ab.<br />Ladungen: 1<br />Benutzt auf: Boden</German>
|
||||
<Korean>종류: 조명지뢰 - 작동시 무해한 조명을 사출합니다.<br />장탄수: 1<br />사용처: 지면</Korean>
|
||||
<French>Type : Fusée éclairante avec fil de détente - Allume une fusée éclairante lorsque déclenché. <br />Coups : 1<br />Utilisé sur : le sol</French>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
@ -1,6 +1,6 @@
|
||||
#include "script_component.hpp"
|
||||
|
||||
if (GVAR(EnableDebugTrace) && {!isMultiplayer}) then {
|
||||
if (GVAR(enableDebugTrace) && {!isMultiplayer}) then {
|
||||
GVAR(traceFrags) = true;
|
||||
GVAR(autoTrace) = true;
|
||||
};
|
||||
@ -27,4 +27,3 @@ GVAR(cacheRoundsTypesToTrack) = [false] call CBA_fnc_createNamespace;
|
||||
#ifdef DEBUG_ENABLED_FRAG
|
||||
[true, true, 30] call FUNC(dev_debugAmmo);
|
||||
#endif
|
||||
|
||||
|
@ -13,7 +13,7 @@ if (_round in GVAR(blackList)) exitWith {
|
||||
};
|
||||
|
||||
// Exit on max track
|
||||
if ((count GVAR(objects)) > GVAR(MaxTrack)) exitWith {};
|
||||
if ((count GVAR(objects)) > GVAR(maxTrack)) exitWith {};
|
||||
|
||||
if (
|
||||
_gun == ACE_player ||
|
||||
|
@ -103,6 +103,7 @@ for "_i" from 1 to _spallCount do {
|
||||
[ACE_player, _fragment, [1, 0.5, 0, 1]] call FUNC(addTrack);
|
||||
};
|
||||
};
|
||||
|
||||
_spread = 5 + (random 5);
|
||||
_spallCount = 3 + (random 5);
|
||||
for "_i" from 1 to _spallCount do {
|
||||
|
@ -75,23 +75,18 @@ if (_zIndex < 5) then {
|
||||
private _explosions = [];
|
||||
{
|
||||
private _blist = _x select 1;
|
||||
private _avgX = 0;
|
||||
private _avgY = 0;
|
||||
private _avgZ = 0;
|
||||
private _avg = [0, 0, 0];
|
||||
|
||||
{
|
||||
ADD(_avgX,_x select 0);
|
||||
ADD(_avgY,_x select 1);
|
||||
ADD(_avgZ,_x select 2);
|
||||
_avg = _avg vectorAdd _x;
|
||||
} forEach _blist;
|
||||
_c = count _blist;
|
||||
private _bpos = [_avgX / _c, _avgY / _c, _avgZ / _c];
|
||||
private _bpos = _avg vectorMultiply (1 / _c);
|
||||
|
||||
private _distance = _pos vectorDistance _bpos;
|
||||
private _hitFactor = 1 - (((_distance / (_indirectHitRange * 4)) min 1) max 0);
|
||||
// _hitFactor = 1 / (_distance ^ 2);
|
||||
private _hit = _indirectHit * _hitFactor;
|
||||
_hit = (floor (_hit / 4)) min 500;
|
||||
private _hit = (floor (_indirectHit * _hitFactor / 4)) min 500;
|
||||
SUB(_hit,_hit % 10);
|
||||
private _range = (floor (_indirectHitRange - (_distance / 4))) min 100;
|
||||
SUB(_range,_range % 2);
|
||||
|
@ -30,7 +30,7 @@ if (isNil "_shouldAdd") then {
|
||||
_shouldAdd = false;
|
||||
};
|
||||
|
||||
if (GVAR(SpallEnabled)) exitWith {
|
||||
if (GVAR(spallEnabled)) exitWith {
|
||||
//Always want to run whenever spall is enabled?
|
||||
_shouldAdd = true;
|
||||
TRACE_2("SettingCache[spallEnabled]",_ammo,_shouldAdd);
|
||||
|
@ -59,14 +59,14 @@ if (_warn) then {
|
||||
INFO_1("Ammo class %1 lacks proper explosive properties definitions for frag!",_shellType);
|
||||
};
|
||||
|
||||
private _fragPower = (((_m / _c) + _k) ^ - (1 / 2)) * _gC;
|
||||
_fragPower = _fragPower * 0.8; // Gunery equation is for a non-fragmenting metal, imperical value of 80% represents fragmentation
|
||||
// Gunery equation is for a non-fragmenting metal, imperical value of 80% represents fragmentation
|
||||
private _fragPower = 0.8 * (((_m / _c) + _k) ^ - (1 / 2)) * _gC;
|
||||
|
||||
private _atlPos = ASLtoATL _lastPos;
|
||||
|
||||
private _fragPowerRandom = _fragPower * 0.5;
|
||||
if ((_atlPos select 2) < 0.5) then {
|
||||
_lastPos set [2, (_lastPos select 2) + 0.5];
|
||||
_lastPos vectorAdd [0, 0, 0.5];
|
||||
};
|
||||
|
||||
// _manObjects = _atlPos nearEntities ["CaManBase", _fragRange];
|
||||
@ -96,71 +96,68 @@ _fragArcs set [360, 0];
|
||||
|
||||
private _doRandom = true;
|
||||
if (_isArmed && {!(_objects isEqualTo [])}) then {
|
||||
if (GVAR(ReflectionsEnabled)) then {
|
||||
if (GVAR(reflectionsEnabled)) then {
|
||||
[_lastPos, _shellType] call FUNC(doReflections);
|
||||
};
|
||||
{
|
||||
//if (random(1) > 0.5) then {
|
||||
private _target = _x;
|
||||
if (alive _target) then {
|
||||
private _boundingBox = boundingBox _target;
|
||||
(boundingBox _target) params ["_boundingBoxA", "_boundingBoxB"];
|
||||
|
||||
private _cubic = ((abs (_boundingBoxA select 0)) + (_boundingBoxB select 0)) * ((abs (_boundingBoxA select 1)) + (_boundingBoxB select 1)) * ((abs (_boundingBoxA select 2)) + (_boundingBoxB select 2));
|
||||
|
||||
if (_cubic <= 1) exitWith {};
|
||||
_doRandom = true;
|
||||
|
||||
private _targetVel = velocity _target;
|
||||
private _targetPos = getPosASL _target;
|
||||
private _distance = _targetPos distance _lastPos;
|
||||
private _add = (((_boundingBox select 1) select 2) / 2) + ((((_distance - (_fragpower / 8)) max 0) / _fragPower) * 10);
|
||||
private _bbX = (abs ((_boundingBox select 0) select 0)) + ((_boundingBox select 1) select 0);
|
||||
private _bbY = (abs ((_boundingBox select 0) select 1)) + ((_boundingBox select 1) select 1);
|
||||
private _bbZ = (abs ((_boundingBox select 0) select 2)) + ((_boundingBox select 1) select 2);
|
||||
private _cubic = _bbX * _bbY * _bbZ;
|
||||
if (_cubic > 1) then {
|
||||
_doRandom = true;
|
||||
private _distance = _targetPos vectorDistance _lastPos;
|
||||
private _add = ((_boundingBoxB select 2) / 2) + ((((_distance - (_fragpower / 8)) max 0) / _fragPower) * 10);
|
||||
|
||||
private _targetVel = velocity _target;
|
||||
_targetPos = _targetPos vectorAdd [
|
||||
(_targetVel select 0) * (_distance / _fragPower),
|
||||
(_targetVel select 1) * (_distance / _fragPower),
|
||||
_add
|
||||
];
|
||||
|
||||
_targetPos = _targetPos vectorAdd [
|
||||
(_targetVel select 0) * (_distance / _fragPower),
|
||||
(_targetVel select 1) * (_distance / _fragPower),
|
||||
_add
|
||||
];
|
||||
private _baseVec = _lastPos vectorFromTo _targetPos;
|
||||
|
||||
private _baseVec = _lastPos vectorFromTo _targetPos;
|
||||
|
||||
private _dir = floor (_baseVec call CBA_fnc_vectDir);
|
||||
private _currentCount = _fragArcs select _dir;
|
||||
ISNILS(_currentCount,0);
|
||||
if (_currentCount < 20) then {
|
||||
private _count = ceil (random (sqrt (_m / 1000)));
|
||||
private _vecVar = FRAG_VEC_VAR;
|
||||
if (!(_target isKindOf "Man")) then {
|
||||
_vecVar = ((sqrt _cubic) / 2000) + FRAG_VEC_VAR;
|
||||
if ((crew _target) isEqualTo [] && {_count > 0}) then {
|
||||
_count = 0 max (_count / 2);
|
||||
};
|
||||
private _dir = floor (_baseVec call CBA_fnc_vectDir);
|
||||
private _currentCount = RETDEF(_fragArcs select _dir,0);
|
||||
if (_currentCount < 20) then {
|
||||
private _count = ceil (random (sqrt (_m / 1000)));
|
||||
private _vecVar = FRAG_VEC_VAR;
|
||||
if (!(_target isKindOf "Man")) then {
|
||||
ADD(_vecVar,(sqrt _cubic) / 2000);
|
||||
if ((crew _target) isEqualTo [] && {_count > 0}) then {
|
||||
_count = 0 max (_count / 2);
|
||||
};
|
||||
for "_i" from 1 to _count do {
|
||||
private _vec = _baseVec vectorDiff [
|
||||
(_vecVar / 2) + (random _vecVar),
|
||||
(_vecVar / 2) + (random _vecVar),
|
||||
(_vecVar / 2) + (random _vecVar)
|
||||
];
|
||||
|
||||
private _fp = _fragPower - (random (_fragPowerRandom));
|
||||
private _vel = _vec vectorMultiply _fp;
|
||||
|
||||
private _fragType = round (random ((count _fragTypes) - 1));
|
||||
private _fragObj = (_fragTypes select _fragType) createVehicleLocal [0,0,10000];
|
||||
// diag_log text format ["fp: %1 %2", _fp, typeOf _fragObj];
|
||||
_fragObj setPosASL _lastPos;
|
||||
_fragObj setVectorDir _vec;
|
||||
_fragObj setVelocity _vel;
|
||||
if (GVAR(traceFrags)) then {
|
||||
INC(GVAR(totalFrags));
|
||||
[ACE_player, _fragObj, [1,0,0,1]] call FUNC(addTrack);
|
||||
};
|
||||
INC(_fragCount);
|
||||
INC(_currentCount);
|
||||
};
|
||||
_fragArcs set [_dir, _currentCount];
|
||||
};
|
||||
for "_i" from 1 to _count do {
|
||||
private _vec = _baseVec vectorDiff [
|
||||
(_vecVar / 2) + (random _vecVar),
|
||||
(_vecVar / 2) + (random _vecVar),
|
||||
(_vecVar / 2) + (random _vecVar)
|
||||
];
|
||||
|
||||
private _fp = _fragPower - (random (_fragPowerRandom));
|
||||
private _vel = _vec vectorMultiply _fp;
|
||||
|
||||
private _fragType = round (random ((count _fragTypes) - 1));
|
||||
private _fragObj = (_fragTypes select _fragType) createVehicleLocal [0,0,10000];
|
||||
// diag_log text format ["fp: %1 %2", _fp, typeOf _fragObj];
|
||||
_fragObj setPosASL _lastPos;
|
||||
_fragObj setVectorDir _vec;
|
||||
_fragObj setVelocity _vel;
|
||||
if (GVAR(traceFrags)) then {
|
||||
INC(GVAR(totalFrags));
|
||||
[ACE_player, _fragObj, [1,0,0,1]] call FUNC(addTrack);
|
||||
};
|
||||
INC(_fragCount);
|
||||
INC(_currentCount);
|
||||
};
|
||||
_fragArcs set [_dir, _currentCount];
|
||||
};
|
||||
};
|
||||
//};
|
||||
|
@ -19,7 +19,7 @@ private _gcIndex = [];
|
||||
|
||||
private _iter = 0;
|
||||
private _objectCount = count GVAR(objects);
|
||||
while {_objectCount > 0 && {_iter < (GVAR(MaxTrackPerFrame) min _objectCount)}} do {
|
||||
while {_objectCount > 0 && {_iter < (GVAR(maxTrackPerFrame) min _objectCount)}} do {
|
||||
|
||||
if (GVAR(lastIterationIndex) >= _objectCount) then {
|
||||
GVAR(lastIterationIndex) = 0;
|
||||
|
@ -32,8 +32,7 @@ _this set [1, getPosASL _round];
|
||||
_this set [2, velocity _round];
|
||||
|
||||
if (_doSpall) then {
|
||||
private ["_scale"];
|
||||
_scale = ((count GVAR(objects)) / GVAR(MaxTrackPerFrame)) max 0.1;
|
||||
private _scale = ((count GVAR(objects)) / GVAR(maxTrackPerFrame)) max 0.1;
|
||||
[_round, _scale, _spallTrack, _foundObjectHPIds] call FUNC(spallTrack);
|
||||
};
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
// THIS FUNCTION SHOULD NOT BE USED BECAUSE IT CAUSES AN SEARCH AND REBUILD
|
||||
|
||||
PARAMS_1(_round);
|
||||
params ["_round"];
|
||||
|
||||
if (_round in GVAR(blackList)) then {
|
||||
REM(GVAR(blackList),_round);
|
||||
|
@ -2,4 +2,4 @@
|
||||
|
||||
if (GVAR(tracesStarted)) exitWith {};
|
||||
GVAR(tracesStarted) = true;
|
||||
GVAR(traceID) = [FUNC(drawTraces)] call CBA_fnc_addPerFrameHandler;
|
||||
GVAR(traceID) = [FUNC(drawTraces), 0, []] call CBA_fnc_addPerFrameHandler;
|
||||
|
@ -172,7 +172,7 @@
|
||||
<German>(nur SP) Splitter-/Explosions-Debugging</German>
|
||||
<Czech>(Pouze SP) Vyžaduje restart mise/editoru. Aktivuje vizuální stopování fragmentace a úlomů pouze v režimu jednoho hráče.</Czech>
|
||||
<Portuguese>(Somente SP) Requer um reinício de missão / editor. Habilita o rastreamento visual de projéteis de fragmentação e estilhaçamento apenas no modo de jogo SP.</Portuguese>
|
||||
<French>(SP seulement) Requiert un redémarrage de mission ou de l'éditeur. Active les traceurs visuels de fragmentation et d'éclats en mode solo seulement</French>
|
||||
<French>(SP seulement) Requiert un redémarrage de mission ou de l'éditeur. Active les traceurs visuels de fragmentation et d'éclats en mode solo seulement.</French>
|
||||
<Hungarian>(Csak SP) Küldetés/Editor újraindítás szükséges. Engedélyezi a repeszek és pattogzó lövedékek vizuális nyomkövetését, csak egyjátékos módok alatt.</Hungarian>
|
||||
<Russian>(Только для одиночной игры) Требует перезапуска миссии/редактора. Включает визуальные следы от осколков и обломков в режиме одиночной игры.</Russian>
|
||||
<Italian>(Solo SP) Richiede un restart editor/missione. Abilita il tracciamento visivo di schegge da frammentazione/spalling in modalità Giocatore Singolo.</Italian>
|
||||
|
@ -14,6 +14,10 @@
|
||||
|
||||
//Reset forces array
|
||||
GVAR(GForces) = [];
|
||||
// init array to full array of neutral g-forces
|
||||
GVAR(GForces) resize 30;
|
||||
GVAR(GForces) = GVAR(GForces) apply {1};
|
||||
|
||||
GVAR(GForces_Index) = 0;
|
||||
|
||||
// Setup ppEffect
|
||||
@ -26,4 +30,4 @@ GVAR(GForces_CC) ppEffectCommit 0.4;
|
||||
GVAR(lastUpdateTime) = 0;
|
||||
GVAR(oldVel) = [0,0,0];
|
||||
|
||||
GVAR(pfID) = [DFUNC(pfhUpdateGForces), 0, []] call CBA_fnc_addPerFrameHandler;
|
||||
GVAR(pfID) = [LINKFUNC(pfhUpdateGForces), 0, []] call CBA_fnc_addPerFrameHandler;
|
||||
|
@ -27,7 +27,7 @@ private _accel = ((_newVel vectorDiff GVAR(oldVel)) vectorMultiply (1 / INTERVAL
|
||||
private _currentGForce = (((_accel vectorDotProduct vectorUp (vehicle ACE_player)) / 9.8) max -10) min 10;
|
||||
|
||||
GVAR(GForces) set [GVAR(GForces_Index), _currentGForce];
|
||||
GVAR(GForces_Index) = (GVAR(GForces_Index) + 1) % round (AVERAGEDURATION / INTERVAL);
|
||||
GVAR(GForces_Index) = (GVAR(GForces_Index) + 1) % 30; // 30 = round (AVERAGEDURATION / INTERVAL);
|
||||
GVAR(oldVel) = _newVel;
|
||||
|
||||
/* Source: https://github.com/KoffeinFlummi/AGM/issues/1774#issuecomment-70341573
|
||||
|
@ -36,6 +36,7 @@
|
||||
<Polish>Efekty gogli</Polish>
|
||||
<German>Brilleneffekt</German>
|
||||
<Korean>고글 효과</Korean>
|
||||
<French>Effets des lunettes</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Goggles_effects_tintOnly">
|
||||
<English>Tint</English>
|
||||
@ -44,6 +45,7 @@
|
||||
<Polish>Winieta</Polish>
|
||||
<German>Tönung</German>
|
||||
<Korean>색조</Korean>
|
||||
<French>Teinte</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Goggles_enabled_tintAndEffects">
|
||||
<English>Tint + Effects</English>
|
||||
@ -52,6 +54,8 @@
|
||||
<Polish>Winieta + Efekty</Polish>
|
||||
<German>Tönung + Effekte</German>
|
||||
<Korean>색조+효과</Korean>
|
||||
<French>Teinte + effets</French>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
||||
|
@ -302,6 +302,7 @@
|
||||
<Japanese>AN-M14 焼夷手榴弾</Japanese>
|
||||
<Polish>Granat zapalający AN-M14</Polish>
|
||||
<Korean>AN-M14 소이 수류탄</Korean>
|
||||
<French>Grenade incendiaire AN-M14</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Grenades_Incendiary_NameShort">
|
||||
<English>AN-M14</English>
|
||||
@ -310,6 +311,7 @@
|
||||
<Japanese>AN-M14</Japanese>
|
||||
<Polish>AN-M14</Polish>
|
||||
<Korean>AN-M14</Korean>
|
||||
<French>AN-M14</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Grenades_Incendiary_Description">
|
||||
<English>Incendiary grenade used to destroy weapons, ammunition and other equipment.</English>
|
||||
@ -318,6 +320,7 @@
|
||||
<Japanese>焼夷手榴弾は武器や弾薬箱などの装備を破壊するために使われます。</Japanese>
|
||||
<Polish>Granat zapalający, używany do niszczenia broni, amunicji i innego sprzętu.</Polish>
|
||||
<Korean>소이 수류탄은 무기나 탄약 그리고 장비를 파괴할때 쓰입니다.</Korean>
|
||||
<French>Grenade incendiaire utilisé pour détruire des armes, munitions et autres équipements.</French>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
Binary file not shown.
@ -29,6 +29,16 @@ if (_state isEqualTo []) exitWith {
|
||||
_state params ["_weapon", "_items", "_magazines"];
|
||||
|
||||
_unit addWeapon _weapon;
|
||||
|
||||
// Game will auto add magazines from player's inventory, put these back in player inventory as they will be overwritten
|
||||
([_unit, _weapon] call EFUNC(common,getWeaponState)) params ["", "", "_addedMags", "_addedAmmo"];
|
||||
{
|
||||
if (((_x select 0) != "") && {(_addedMags select _forEachIndex) != ""}) then {
|
||||
TRACE_2("Re-adding mag",_x,_addedMags select _forEachIndex);
|
||||
_unit addMagazine [_addedMags select _forEachIndex, _addedAmmo select _forEachIndex];
|
||||
};
|
||||
} forEach _magazines;
|
||||
|
||||
removeAllPrimaryWeaponItems _unit;
|
||||
|
||||
{
|
||||
|
@ -5,7 +5,7 @@ class CfgVehicles {
|
||||
class ACE_Equipment {
|
||||
class ACE_PutInEarplugs {
|
||||
displayName = CSTRING(EarPlugs_On);
|
||||
condition = QUOTE( !([_player] call FUNC(hasEarPlugsIn)) && {'ACE_EarPlugs' in items _player} );
|
||||
condition = QUOTE(GVAR(EnableCombatDeafness) && {!([_player] call FUNC(hasEarPlugsIn)) && {'ACE_EarPlugs' in items _player}});
|
||||
exceptions[] = {"isNotInside", "isNotSitting"};
|
||||
statement = QUOTE( [_player] call FUNC(putInEarPlugs) );
|
||||
showDisabled = 0;
|
||||
@ -14,7 +14,7 @@ class CfgVehicles {
|
||||
};
|
||||
class ACE_RemoveEarplugs {
|
||||
displayName = CSTRING(EarPlugs_Off);
|
||||
condition = QUOTE( [_player] call FUNC(hasEarPlugsIn) );
|
||||
condition = QUOTE( GVAR(EnableCombatDeafness) && {[_player] call FUNC(hasEarPlugsIn)});
|
||||
exceptions[] = {"isNotInside", "isNotSitting"};
|
||||
statement = QUOTE( [_player] call FUNC(removeEarPlugs) );
|
||||
showDisabled = 0;
|
||||
|
@ -11,35 +11,69 @@ GVAR(playerVehAttenuation) = 1;
|
||||
GVAR(time3) = 0;
|
||||
GVAR(damageCoefficent) = 1;
|
||||
GVAR(volumeAttenuation) = 1;
|
||||
GVAR(lastPlayerVehicle) = objNull;
|
||||
|
||||
["ace_settingsInitialized", {
|
||||
TRACE_1("settingInit",GVAR(EnableCombatDeafness));
|
||||
// Only run PFEH and install event handlers if combat deafness is enabled
|
||||
if (!GVAR(EnableCombatDeafness)) exitWith {};
|
||||
|
||||
//Add XEH:
|
||||
["CAManBase", "FiredNear", FUNC(firedNear)] call CBA_fnc_addClassEventHandler;
|
||||
["CAManBase", "Explosion", FUNC(explosionNear)] call CBA_fnc_addClassEventHandler;
|
||||
|
||||
// Update hearing protection now:
|
||||
[] call FUNC(updateHearingProtection);
|
||||
|
||||
// Spawn volume updating process
|
||||
[FUNC(updateVolume), 1, [false]] call CBA_fnc_addPerFrameHandler;
|
||||
[LINKFUNC(updateVolume), 1, [false]] call CBA_fnc_addPerFrameHandler;
|
||||
|
||||
// Update veh attunation when player veh changes
|
||||
["vehicle", FUNC(updatePlayerVehAttenuation)] call CBA_fnc_addPlayerEventHandler;
|
||||
["turret", FUNC(updatePlayerVehAttenuation)] call CBA_fnc_addPlayerEventHandler;
|
||||
["vehicle", {
|
||||
params ["_player", "_vehicle"];
|
||||
TRACE_2("vehicle change",_player,_vehicle);
|
||||
_this call FUNC(updatePlayerVehAttenuation);
|
||||
|
||||
if (!isNull GVAR(lastPlayerVehicle)) then {
|
||||
private _firedEH = GVAR(lastPlayerVehicle) getVariable [QGVAR(firedEH), -1];
|
||||
GVAR(lastPlayerVehicle) removeEventHandler ["FiredNear", _firedEH];
|
||||
GVAR(lastPlayerVehicle) setVariable [QGVAR(firedEH), nil];
|
||||
GVAR(lastPlayerVehicle) = objNull;
|
||||
TRACE_2("removed veh eh",_firedEH,GVAR(lastPlayerVehicle));
|
||||
};
|
||||
if ((!isNull _vehicle) && {_player != _vehicle}) then {
|
||||
private _firedEH = _vehicle addEventHandler ["FiredNear", {call FUNC(firedNear)}];
|
||||
_vehicle setVariable [QGVAR(firedEH), _firedEH];
|
||||
GVAR(lastPlayerVehicle) = _vehicle;
|
||||
TRACE_2("added veh eh",_firedEH,GVAR(lastPlayerVehicle));
|
||||
};
|
||||
}, true] call CBA_fnc_addPlayerEventHandler;
|
||||
["turret", LINKFUNC(updatePlayerVehAttenuation), false] call CBA_fnc_addPlayerEventHandler;
|
||||
|
||||
|
||||
// Reset deafness on respawn (or remote control player switch)
|
||||
["unit", {
|
||||
params ["_player", "_oldPlayer"];
|
||||
TRACE_2("unit change",_player,_oldPlayer);
|
||||
|
||||
if (!isNull _oldPlayer) then {
|
||||
private _firedEH = _oldPlayer getVariable [QGVAR(firedEH), -1];
|
||||
_oldPlayer removeEventHandler ["FiredNear", _firedEH];
|
||||
_oldPlayer setVariable [QGVAR(firedEH), nil];
|
||||
private _explosionEH = _oldPlayer getVariable [QGVAR(explosionEH), -1];
|
||||
_oldPlayer removeEventHandler ["Explosion", _explosionEH];
|
||||
_oldPlayer setVariable [QGVAR(explosionEH), nil];
|
||||
TRACE_3("removed unit eh",_oldPlayer,_firedEH,_explosionEH);
|
||||
};
|
||||
// Don't add a new EH if the unit respawned
|
||||
if ((_player getVariable [QGVAR(firedEH), -1]) == -1) then {
|
||||
private _firedEH = _player addEventHandler ["FiredNear", {call FUNC(firedNear)}];
|
||||
_player setVariable [QGVAR(firedEH), _firedEH];
|
||||
private _explosionEH = _player addEventHandler ["Explosion", {call FUNC(explosionNear)}];
|
||||
_player setVariable [QGVAR(explosionEH), _explosionEH];
|
||||
TRACE_3("added unit eh",_player,_firedEH,_explosionEH);
|
||||
};
|
||||
|
||||
GVAR(deafnessDV) = 0;
|
||||
GVAR(deafnessPrior) = 0;
|
||||
ACE_player setVariable [QGVAR(deaf), false];
|
||||
GVAR(time3) = 0;
|
||||
[] call FUNC(updateHearingProtection);
|
||||
}] call CBA_fnc_addPlayerEventHandler;
|
||||
}, true] call CBA_fnc_addPlayerEventHandler;
|
||||
|
||||
// Update protection on possible helmet change
|
||||
["loadout", FUNC(updateHearingProtection)] call CBA_fnc_addPlayerEventHandler;
|
||||
["loadout", LINKFUNC(updateHearingProtection), false] call CBA_fnc_addPlayerEventHandler;
|
||||
}] call CBA_fnc_addEventHandler;
|
||||
|
@ -18,8 +18,6 @@
|
||||
|
||||
params ["_unit", "_damage"];
|
||||
|
||||
if (_unit != ACE_player) exitWith {};
|
||||
|
||||
TRACE_2("explosion near player",_unit,_damage);
|
||||
|
||||
private ["_strength"];
|
||||
|
@ -24,8 +24,6 @@
|
||||
|
||||
params ["_object", "_firer", "_distance", "_weapon", "", "", "_ammo"];
|
||||
|
||||
//Only run if firedNear object is player or player's vehicle:
|
||||
if ((ACE_player != _object) && {(vehicle ACE_player) != _object}) exitWith {};
|
||||
if (_weapon in ["Throw", "Put"]) exitWith {};
|
||||
if (_distance > 50) exitWith {};
|
||||
|
||||
|
@ -17,6 +17,8 @@
|
||||
|
||||
params ["_player"];
|
||||
|
||||
if (!GVAR(EnableCombatDeafness)) exitWith {};
|
||||
|
||||
// Plugs in inventory, putting them in
|
||||
_player removeItem "ACE_EarPlugs";
|
||||
|
||||
|
@ -17,6 +17,8 @@
|
||||
|
||||
params ["_player"];
|
||||
|
||||
if (!GVAR(EnableCombatDeafness)) exitWith {};
|
||||
|
||||
if !(_player canAdd "ACE_EarPlugs") exitWith { // inventory full
|
||||
[localize LSTRING(Inventory_Full)] call EFUNC(common,displayTextStructured);
|
||||
};
|
||||
|
@ -15,20 +15,17 @@
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_effectType", "_newAttenuation", "_turretConfig", "_turretPath", "_vehicle"];
|
||||
|
||||
_vehicle = vehicle ACE_player;
|
||||
private _vehicle = vehicle ACE_player;
|
||||
|
||||
if (isNull _vehicle) exitWith {};
|
||||
|
||||
_newAttenuation = 1;
|
||||
private _newAttenuation = 1;
|
||||
if (ACE_player != _vehicle) then {
|
||||
_effectType = "";
|
||||
_turretPath = [ACE_player] call EFUNC(common,getTurretIndex);
|
||||
_effectType = getText (configFile >> "CfgVehicles" >> (typeOf _vehicle) >> "attenuationEffectType");
|
||||
private _turretPath = [ACE_player] call EFUNC(common,getTurretIndex);
|
||||
private _effectType = getText (configFile >> "CfgVehicles" >> (typeOf _vehicle) >> "attenuationEffectType");
|
||||
|
||||
if (!(_turretPath isEqualTo [])) then {
|
||||
_turretConfig = [(configFile >> "CfgVehicles" >> (typeOf _vehicle)), _turretPath] call EFUNC(common,getTurretConfigPath);
|
||||
private _turretConfig = [(configFile >> "CfgVehicles" >> (typeOf _vehicle)), _turretPath] call EFUNC(common,getTurretConfigPath);
|
||||
|
||||
if ((getNumber (_turretConfig >> "disableSoundAttenuation")) == 1) then {
|
||||
_effectType = "";
|
||||
@ -41,8 +38,10 @@ if (ACE_player != _vehicle) then {
|
||||
|
||||
_newAttenuation = switch (true) do {
|
||||
case (_effectType == ""): {1};
|
||||
case (_effectType == "CarAttenuation"): {0.5};
|
||||
case (_effectType == "RHS_CarAttenuation"): {0.5};
|
||||
case (_effectType == "CarAttenuation");
|
||||
case (_effectType == "RHS_CarAttenuation"): { // Increase protection for armored cars
|
||||
private _armor = getNumber (configFile >> "CfgVehicles" >> (typeOf _vehicle) >> "HitPoints" >> "HitBody" >> "armor");
|
||||
linearConversion [2, 8, _armor, 0.5, 0.3, true];};
|
||||
case (_effectType == "OpenCarAttenuation"): {1};
|
||||
case (_effectType == "TankAttenuation"): {0.1};
|
||||
case (_effectType == "HeliAttenuation"): {0.3};
|
||||
|
@ -19,11 +19,5 @@ class CfgWeapons {
|
||||
class UGL_F: GrenadeLauncher {
|
||||
magazines[] += {"ACE_HuntIR_M203"};
|
||||
};
|
||||
class Rifle_Base_F;
|
||||
class arifle_MX_Base_F: Rifle_Base_F {
|
||||
class GL_3GL_F: UGL_F {
|
||||
//magazines[] += {"ACE_HuntIR_M203"};
|
||||
magazines[] = {"1Rnd_HE_Grenade_shell","UGL_FlareWhite_F","UGL_FlareGreen_F","UGL_FlareRed_F","UGL_FlareYellow_F","UGL_FlareCIR_F","1Rnd_Smoke_Grenade_shell","1Rnd_SmokeRed_Grenade_shell","1Rnd_SmokeGreen_Grenade_shell","1Rnd_SmokeYellow_Grenade_shell","1Rnd_SmokePurple_Grenade_shell","1Rnd_SmokeBlue_Grenade_shell","1Rnd_SmokeOrange_Grenade_shell","3Rnd_HE_Grenade_shell","3Rnd_UGL_FlareWhite_F","3Rnd_UGL_FlareGreen_F","3Rnd_UGL_FlareRed_F","3Rnd_UGL_FlareYellow_F","3Rnd_UGL_FlareCIR_F","3Rnd_Smoke_Grenade_shell","3Rnd_SmokeRed_Grenade_shell","3Rnd_SmokeGreen_Grenade_shell","3Rnd_SmokeYellow_Grenade_shell","3Rnd_SmokePurple_Grenade_shell","3Rnd_SmokeBlue_Grenade_shell","3Rnd_SmokeOrange_Grenade_shell","ACE_HuntIR_M203"};
|
||||
};
|
||||
};
|
||||
// Added to the GL_3GL_F in subconfig
|
||||
};
|
||||
|
26
addons/huntir/subConfig/config.cpp
Normal file
26
addons/huntir/subConfig/config.cpp
Normal file
@ -0,0 +1,26 @@
|
||||
#include "\z\ace\addons\huntir\script_component.hpp"
|
||||
#undef COMPONENT
|
||||
#define COMPONENT huntir_sub
|
||||
|
||||
class CfgPatches {
|
||||
class ADDON {
|
||||
name = COMPONENT_NAME;
|
||||
units[] = {};
|
||||
weapons[] = {};
|
||||
requiredVersion = REQUIRED_VERSION;
|
||||
requiredAddons[] = {"ace_huntir"};
|
||||
author = ECSTRING(common,ACETeam);
|
||||
url = ECSTRING(main,URL);
|
||||
VERSION_CONFIG;
|
||||
};
|
||||
};
|
||||
|
||||
class CfgWeapons {
|
||||
class UGL_F;
|
||||
class Rifle_Base_F;
|
||||
class arifle_MX_Base_F: Rifle_Base_F {
|
||||
class GL_3GL_F: UGL_F {
|
||||
magazines[] += {"ACE_HuntIR_M203"};
|
||||
};
|
||||
};
|
||||
};
|
@ -21,7 +21,7 @@ GVAR(ParsedTextCached) = [];
|
||||
//Setup text/shadow/size/color settings matrix
|
||||
[] call FUNC(setupTextColors);
|
||||
// Install the render EH on the main display
|
||||
addMissionEventHandler ["Draw3D", DFUNC(render)];
|
||||
addMissionEventHandler ["Draw3D", {call FUNC(render)}];
|
||||
}] call CBA_fnc_addEventHandler;
|
||||
|
||||
//Add Actions to Houses:
|
||||
|
@ -109,6 +109,22 @@ private _actionsCfg = configFile >> "CfgVehicles" >> _objectType >> "ACE_Actions
|
||||
TRACE_1("Building ACE_Actions",_objectType);
|
||||
private _actions = [_actionsCfg, 0] call _recurseFnc;
|
||||
|
||||
// ace_interaction_fnc_addPassengerAction expects ACE_MainActions to be first
|
||||
// Other mods can change the order that configs are added, so we should verify this now and resort if needed
|
||||
if (_objectType isKindOf "CaManBase") then {
|
||||
if ((((_actions select 0) select 0) select 0) != "ACE_MainActions") then {
|
||||
INFO_1("ACE_MainActions not first for man [%1]",_objectType);
|
||||
private _mainActions = [];
|
||||
{
|
||||
if (((_x select 0) select 0) == "ACE_MainActions") then {
|
||||
_mainActions = _actions deleteAt _forEachIndex;
|
||||
};
|
||||
} forEach _actions;
|
||||
if (_mainActions isEqualTo []) exitWith {ERROR_1("ACE_MainActions not found on man [%1]",_objectType);};
|
||||
_actions = [_mainActions] + _actions; // resort array with ACE_MainActions first
|
||||
};
|
||||
};
|
||||
|
||||
_namespace setVariable [_objectType, _actions];
|
||||
|
||||
/*
|
||||
|
@ -2,6 +2,7 @@
|
||||
// interaction menu
|
||||
PREP(addPassengerActions);
|
||||
PREP(addPassengersActions);
|
||||
PREP(getInteractionDistance);
|
||||
PREP(getVehiclePos);
|
||||
PREP(getVehiclePosComplex);
|
||||
PREP(getWeaponPos);
|
||||
|
@ -36,7 +36,7 @@ _index = [
|
||||
"door_11",
|
||||
"door_12",
|
||||
"door_13",
|
||||
"Door_14",
|
||||
"door_14",
|
||||
"door_15",
|
||||
"door_16",
|
||||
"door_17",
|
||||
|
33
addons/interaction/functions/fnc_getInteractionDistance.sqf
Normal file
33
addons/interaction/functions/fnc_getInteractionDistance.sqf
Normal file
@ -0,0 +1,33 @@
|
||||
/*
|
||||
* Author: PabstMirror
|
||||
* Gets effective interaction distance (handles very large vehicles)
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Player <OBJECT>
|
||||
* 0: Target Vehicle <OBJECT>
|
||||
*
|
||||
* Return value:
|
||||
* Distance to interaction point <NUMBER>
|
||||
*
|
||||
* Example:
|
||||
* [player, cursorObject] call ace_interaction_fnc_getInteractionDistance
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
params ["_unit", "_target"];
|
||||
TRACE_3("getInteractionDistance",_unit,_target,typeOf _target);
|
||||
|
||||
// Handle Man, Crate
|
||||
if (!((_target isKindOf "Car") || {_target isKindOf "Tank"} || {_target isKindOf "Helicopter"} || {_target isKindOf "Plane"} || {_target isKindOf "Ship_F"})) exitWith {
|
||||
_unit distance _target
|
||||
};
|
||||
|
||||
private _unitEyeASL = eyePos _unit;
|
||||
private _targetModelPos = [_target, _unitEyeASL] call FUNC(getVehiclePosComplex);
|
||||
private _distance = _unitEyeASL distance (AGLtoASL (_target modelToWorld _targetModelPos));
|
||||
|
||||
TRACE_2("",_targetModelPos,_distance);
|
||||
|
||||
_distance
|
@ -49,7 +49,7 @@
|
||||
<Polish>Hełmy</Polish>
|
||||
<Italian>Copricapi</Italian>
|
||||
<Spanish>Cascos</Spanish>
|
||||
<French> Couvre-chefs</French>
|
||||
<French>Couvre-chefs</French>
|
||||
<Portuguese>Capacetes</Portuguese>
|
||||
<Russian>Головные уборы</Russian>
|
||||
<Japanese>ヘッドギア</Japanese>
|
||||
|
@ -1,5 +1,4 @@
|
||||
|
||||
PREP(cycleFireMode);
|
||||
PREP(getTarget);
|
||||
PREP(mapHelperDraw);
|
||||
PREP(onOpticDraw);
|
||||
|
@ -1,30 +0,0 @@
|
||||
/*
|
||||
* Author: jaynus
|
||||
* Cycles fire mode (top/dir)
|
||||
*
|
||||
* Arguments:
|
||||
* None
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [] call ace_javelin_fnc_cycleFireMode
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
// #define DEBUG_MODE_FULL
|
||||
#include "script_component.hpp"
|
||||
|
||||
TRACE_1("cycle fire mode", _this);
|
||||
|
||||
private _currentShooter = if (ACE_player call CBA_fnc_canUseWeapon) then {ACE_player} else {vehicle ACE_player};
|
||||
private _currentFireMode = _currentShooter getVariable ["ace_missileguidance_attackProfile", "JAV_TOP"];
|
||||
|
||||
if (_currentFireMode == "JAV_DIR") then {
|
||||
_currentFireMode = "JAV_TOP";
|
||||
} else {
|
||||
_currentFireMode = "JAV_DIR";
|
||||
};
|
||||
_currentShooter setVariable ["ace_missileguidance_attackProfile", _currentFireMode, false];
|
||||
TRACE_2("set",_currentFireMode,_currentShooter);
|
@ -18,11 +18,3 @@
|
||||
false
|
||||
},
|
||||
[15, [false, false, false]], false] call CBA_fnc_addKeybind; //Tab Key
|
||||
|
||||
["ACE3 Weapons", QGVAR(cycleFireMode), localize LSTRING(CycleFireMode),
|
||||
{ false },
|
||||
{
|
||||
[ACE_player] call FUNC(cycleFireMode);
|
||||
false
|
||||
},
|
||||
[15, [false, true, false]], false] call CBA_fnc_addKeybind; //Ctrl+Tab Key
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="Javelin">
|
||||
<Key ID="STR_ACE_Javelin_LockTarget">
|
||||
@ -15,19 +15,5 @@
|
||||
<Japanese>目標を捕捉 (押しっぱ)</Japanese>
|
||||
<Korean>표적 획득 (누르기)</Korean>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Javelin_CycleFireMode">
|
||||
<English>Cycle Fire Mode</English>
|
||||
<German>Wechsle Feuermodus</German>
|
||||
<Russian>Переключение режимов огня</Russian>
|
||||
<Czech>Přepínání režimů palby</Czech>
|
||||
<Polish>Przełącz tryb ognia</Polish>
|
||||
<French>Cycle mode de tir</French>
|
||||
<Hungarian>Tüzelési mód váltása</Hungarian>
|
||||
<Italian>Alterna le modalità di fuoco</Italian>
|
||||
<Spanish>Cambiar modo de disparo</Spanish>
|
||||
<Portuguese>Alterar Modo de Disparo</Portuguese>
|
||||
<Japanese>発射モード切り替え</Japanese>
|
||||
<Korean>발사 방식 순환</Korean>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="Laser">
|
||||
<Key ID="STR_ACE_Laser_dispersionCount_displayName">
|
||||
@ -6,7 +6,7 @@
|
||||
<Japanese>レーザーの分散シミュレート数</Japanese>
|
||||
<German>Laserstreuung-Simulationszähler</German>
|
||||
<Korean>레이저 분산 시뮬레이션 수</Korean>
|
||||
<Polish>Wskaźnik poziomu rozproszenia wiązki lasera </Polish>
|
||||
<Polish>Wskaźnik poziomu rozproszenia wiązki lasera</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Laser_laserCode">
|
||||
<English>Laser Code</English>
|
||||
@ -51,4 +51,4 @@
|
||||
<Korean>레이저 - 코드 순환 아래</Korean>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
@ -1,4 +1,3 @@
|
||||
|
||||
class Extended_PreStart_EventHandlers {
|
||||
class ADDON {
|
||||
init = QUOTE(call COMPILE_FILE(XEH_preStart));
|
||||
|
@ -9,16 +9,18 @@ class CfgWeapons {
|
||||
class InventoryFlashLightItem_Base_F;
|
||||
|
||||
class acc_pointer_IR: ItemCore {
|
||||
ACE_nextModeClass = "ACE_acc_pointer_red";
|
||||
ACE_modeDescription = CSTRING(IRLaser);
|
||||
MRT_SwitchItemNextClass = "ACE_acc_pointer_red";
|
||||
MRT_SwitchItemPrevClass = "ACE_acc_pointer_red";
|
||||
MRT_switchItemHintText = CSTRING(IRLaser);
|
||||
|
||||
displayName = CSTRING(red);
|
||||
descriptionUse = CSTRING(useLaser);
|
||||
};
|
||||
|
||||
class ACE_acc_pointer_red: ItemCore {
|
||||
ACE_nextModeClass = "acc_pointer_IR";
|
||||
ACE_modeDescription = CSTRING(Laser);
|
||||
MRT_SwitchItemNextClass = "acc_pointer_IR";
|
||||
MRT_SwitchItemPrevClass = "acc_pointer_IR";
|
||||
MRT_switchItemHintText = CSTRING(Laser);
|
||||
|
||||
ACE_laserpointer = 1;
|
||||
|
||||
@ -68,8 +70,9 @@ class CfgWeapons {
|
||||
};
|
||||
|
||||
class ACE_acc_pointer_green_IR: acc_pointer_IR {
|
||||
ACE_nextModeClass = "ACE_acc_pointer_green";
|
||||
ACE_modeDescription = CSTRING(IRLaser);
|
||||
MRT_SwitchItemNextClass = "ACE_acc_pointer_green";
|
||||
MRT_SwitchItemPrevClass = "ACE_acc_pointer_green";
|
||||
MRT_switchItemHintText = CSTRING(IRLaser);
|
||||
|
||||
author = ECSTRING(common,ACETeam);
|
||||
_generalMacro = "ACE_acc_pointer_green";
|
||||
@ -78,8 +81,9 @@ class CfgWeapons {
|
||||
};
|
||||
|
||||
class ACE_acc_pointer_green: ACE_acc_pointer_red {
|
||||
ACE_nextModeClass = "ACE_acc_pointer_green_IR";
|
||||
ACE_modeDescription = CSTRING(Laser);
|
||||
MRT_SwitchItemNextClass = "ACE_acc_pointer_green_IR";
|
||||
MRT_SwitchItemPrevClass = "ACE_acc_pointer_green_IR";
|
||||
MRT_switchItemHintText = CSTRING(Laser);
|
||||
|
||||
ACE_laserpointer = 2;
|
||||
|
||||
|
@ -1,4 +1,3 @@
|
||||
|
||||
PREP(drawLaserpoint);
|
||||
PREP(getNearUnits);
|
||||
PREP(onDraw);
|
||||
PREP(switchLaserLightMode);
|
||||
|
@ -2,37 +2,87 @@
|
||||
#include "script_component.hpp"
|
||||
|
||||
// fixes laser when being captured. Needed, because the selectionPosition of the right hand is used
|
||||
[QEGVAR(captives,setHandcuffed), {if (_this select 1) then {(_this select 0) action ["ace_gunLightOff", _this select 0]};}] call CBA_fnc_addEventHandler;
|
||||
[QEGVAR(captives,setHandcuffed), {if (_this select 1) then {(_this select 0) action ["GunLightOff", _this select 0]};}] call CBA_fnc_addEventHandler;
|
||||
|
||||
if (!hasInterface) exitWith {};
|
||||
|
||||
GVAR(nearUnits) = [];
|
||||
|
||||
#include "initKeybinds.sqf"
|
||||
GVAR(index) = -1;
|
||||
GVAR(laserClassesCache) = [] call CBA_fnc_createNamespace;
|
||||
GVAR(redLaserUnits) = [];
|
||||
GVAR(greenLaserUnits) = [];
|
||||
|
||||
["ace_settingsInitialized", {
|
||||
//If not enabled, dont't add draw eventhandler or PFEH (for performance)
|
||||
if (!GVAR(enabled)) exitWith {};
|
||||
|
||||
// @todo. Maybe move to common?
|
||||
[{
|
||||
// handle RHS / bugged vehicle slots
|
||||
private _camPosAGL = positionCameraToWorld [0,0,0];
|
||||
if !((_camPosAGL select 0) isEqualType 0) exitWith {};
|
||||
|
||||
private _nearUnits = [];
|
||||
{
|
||||
_nearUnits append crew _x;
|
||||
if (count _nearUnits > 10) exitWith {
|
||||
_nearUnits resize 10;
|
||||
// If not enabled, dont't add draw eventhandler or PFEH (for performance)
|
||||
if (!GVAR(enabled)) exitWith {
|
||||
["CBA_attachmentSwitched", {
|
||||
params ["_unit", "_prevItem", "_newItem", "_currWeaponType"];
|
||||
TRACE_4("CBA_attachmentSwitched eh",_unit,_prevItem,_newItem,_currWeaponType);
|
||||
if ((getNumber (configFile >> "CfgWeapons" >> _newItem >> "ACE_laserpointer")) > 0) then {
|
||||
TRACE_1("removing ACE_laserpointer",getNumber (configFile >> "CfgWeapons" >> _newItem >> "ACE_laserpointer"));
|
||||
[1, "prev"] call CBA_accessory_fnc_switchAttachment;
|
||||
};
|
||||
} forEach nearestObjects [_camPosAGL, ["AllVehicles"], 50]; // when moving this, search also for units inside vehicles. currently breaks the laser in FFV
|
||||
}] call CBA_fnc_addEventHandler;
|
||||
};
|
||||
|
||||
GVAR(nearUnits) = _nearUnits;
|
||||
[{
|
||||
private _oldNearUnits = GVAR(nearUnits);
|
||||
GVAR(nearUnits) = call FUNC(getNearUnits);
|
||||
|
||||
} , 5, []] call CBA_fnc_addPerFrameHandler;
|
||||
// remove units that moved away
|
||||
{
|
||||
GVAR(redLaserUnits) deleteAt (GVAR(redLaserUnits) find _x);
|
||||
GVAR(greenLaserUnits) deleteAt (GVAR(greenLaserUnits) find _x);
|
||||
} forEach (_oldNearUnits - GVAR(nearUnits));
|
||||
}, 5, []] call CBA_fnc_addPerFrameHandler;
|
||||
|
||||
addMissionEventHandler ["Draw3D", {
|
||||
call FUNC(onDraw);
|
||||
}];
|
||||
|
||||
private _fnc_processUnit = {
|
||||
params ["_unit"];
|
||||
|
||||
private _weapon = currentWeapon _unit;
|
||||
private _laser = [(_unit weaponAccessories _weapon) select 1] param [0, ""];
|
||||
|
||||
if (_laser isEqualTo "") exitWith {};
|
||||
|
||||
private _laserID = GVAR(laserClassesCache) getVariable _laser;
|
||||
|
||||
if (isNil "_laserID") then {
|
||||
_laserID = getNumber (configFile >> "CfgWeapons" >> _laser >> "ACE_laserpointer");
|
||||
GVAR(laserClassesCache) setVariable [_laser, _laserID];
|
||||
};
|
||||
|
||||
if (_unit isFlashlightOn _weapon) then {
|
||||
if (_laserID isEqualTo 1) exitWith {
|
||||
GVAR(redLaserUnits) pushBackUnique _unit;
|
||||
GVAR(greenLaserUnits) deleteAt (GVAR(greenLaserUnits) find _unit);
|
||||
};
|
||||
|
||||
if (_laserID isEqualTo 2) exitWith {
|
||||
GVAR(greenLaserUnits) pushBackUnique _unit;
|
||||
GVAR(redLaserUnits) deleteAt (GVAR(redLaserUnits) find _unit);
|
||||
};
|
||||
} else {
|
||||
GVAR(redLaserUnits) deleteAt (GVAR(redLaserUnits) find _unit);
|
||||
GVAR(greenLaserUnits) deleteAt (GVAR(greenLaserUnits) find _unit);
|
||||
};
|
||||
};
|
||||
|
||||
// custom scheduler
|
||||
[{
|
||||
params ["_fnc_processUnit"];
|
||||
|
||||
ACE_player call _fnc_processUnit;
|
||||
|
||||
GVAR(index) = GVAR(index) + 1;
|
||||
private _unit = GVAR(nearUnits) param [GVAR(index), objNull];
|
||||
|
||||
if (isNull _unit) exitWith {
|
||||
GVAR(index) = -1;
|
||||
};
|
||||
|
||||
_unit call _fnc_processUnit;
|
||||
}, 0.1, _fnc_processUnit] call CBA_fnc_addPerFrameHandler;
|
||||
|
||||
addMissionEventHandler ["Draw3D", {call FUNC(onDraw)}];
|
||||
}] call CBA_fnc_addEventHandler;
|
||||
|
@ -6,4 +6,11 @@ PREP_RECOMPILE_START;
|
||||
#include "XEH_PREP.hpp"
|
||||
PREP_RECOMPILE_END;
|
||||
|
||||
["visionMode", {
|
||||
params ["", "_visionMode"];
|
||||
|
||||
GVAR(isIR) = _visionMode isEqualTo 1;
|
||||
GVAR(isTI) = _visionMode isEqualTo 2;
|
||||
}] call CBA_fnc_addPlayerEventHandler;
|
||||
|
||||
ADDON = true;
|
||||
|
26
addons/laserpointer/functions/fnc_getNearUnits.sqf
Normal file
26
addons/laserpointer/functions/fnc_getNearUnits.sqf
Normal file
@ -0,0 +1,26 @@
|
||||
/*
|
||||
* Author: commy2
|
||||
* Reports near units.
|
||||
*
|
||||
* Arguments:
|
||||
* None
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
private _camPosAGL = positionCameraToWorld [0, 0, 0];
|
||||
|
||||
// handle RHS / bugged vehicle slots
|
||||
if !((_camPosAGL select 0) isEqualType 0) exitWith {};
|
||||
|
||||
private _nearUnits = [];
|
||||
|
||||
{
|
||||
_nearUnits append crew _x;
|
||||
} forEach nearestObjects [_camPosAGL, ["AllVehicles"], MAX_LASER_RANGE];
|
||||
|
||||
_nearUnits
|
@ -12,30 +12,17 @@
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
private _isIR = currentVisionMode ACE_player;
|
||||
// no lasers in thermal mode
|
||||
if !(GVAR(isTI)) then {
|
||||
private _brightness = 2 - call EFUNC(common,ambientBrightness);
|
||||
|
||||
if (_isIR == 2) exitWith {};
|
||||
{
|
||||
// red laser. draw green dot anyway in IR mode
|
||||
[_x, 100, GVAR(isIR), _brightness] call FUNC(drawLaserpoint);
|
||||
} count GVAR(redLaserUnits);
|
||||
|
||||
_isIR = _isIR == 1;
|
||||
|
||||
private _brightness = 2 - call EFUNC(common,ambientBrightness);
|
||||
|
||||
{
|
||||
private _weapon = currentWeapon _x;
|
||||
private _laser = (_x weaponAccessories _weapon) select 1;
|
||||
|
||||
if (_laser != "") then {
|
||||
private _cacheName = format [QGVAR(laser_%1), _laser];
|
||||
private _laserID = missionNamespace getVariable [_cacheName, -1];
|
||||
|
||||
if (missionNamespace getVariable [_cacheName, -1] == -1) then {
|
||||
_laserID = getNumber (configFile >> "CfgWeapons" >> _laser >> "ACE_laserpointer");
|
||||
missionNamespace setVariable [_cacheName, _laserID];
|
||||
};
|
||||
|
||||
if (_laserID > 0 && {_x isFlashlightOn _weapon}) then {
|
||||
[_x, 100, (_laserID == 2 || _isIR), _brightness] call FUNC(drawLaserpoint);
|
||||
};
|
||||
};
|
||||
false
|
||||
} count GVAR(nearUnits);
|
||||
{
|
||||
// green laser
|
||||
[_x, 100, true, _brightness] call FUNC(drawLaserpoint);
|
||||
} count GVAR(greenLaserUnits);
|
||||
};
|
||||
|
@ -1,54 +0,0 @@
|
||||
/*
|
||||
* Author: Commy2
|
||||
* Switch between laser modes.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Unit <OBJECT>
|
||||
* 1: Weapon <STRING>
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
params ["_unit", "_weapon"];
|
||||
|
||||
private _pointer = (_unit weaponAccessories _weapon) select 1;
|
||||
|
||||
if (_pointer == "") exitWith {};
|
||||
|
||||
private _config = configFile >> "CfgWeapons" >> _pointer;
|
||||
|
||||
private _nextPointer = getText (_config >> "ACE_nextModeClass");
|
||||
|
||||
if (_nextPointer == "") exitWith {};
|
||||
|
||||
//If system disabled, don't switch to a laser:
|
||||
private _nextPointerIsLaser = getNumber (configFile >> "CfgWeapons" >> _nextPointer >> "ACE_laserpointer");
|
||||
if ((!GVAR(enabled)) && {_nextPointerIsLaser == 1}) exitWith {};
|
||||
|
||||
// disable inheritance for this entry, because addons claim this as a base class for convenience
|
||||
if !((_config >> "ACE_nextModeClass") in configProperties [_config, "true", false]) exitWith {};
|
||||
|
||||
_unit addWeaponItem [_weapon, _nextPointer];
|
||||
|
||||
private _error = false;
|
||||
|
||||
if ((_unit weaponAccessories _weapon) select 1 != _nextPointer) then {
|
||||
ERROR("NextPointer not compatible");
|
||||
_unit addWeaponItem [_weapon, _pointer];
|
||||
_error = true;
|
||||
};
|
||||
|
||||
if (!_error) then {
|
||||
private _description = getText (configFile >> "CfgWeapons" >> _nextPointer >> "ACE_modeDescription");
|
||||
private _picture = getText (configFile >> "CfgWeapons" >> _nextPointer >> "picture");
|
||||
|
||||
[_description, _picture] call EFUNC(common,displayTextPicture);
|
||||
} else {
|
||||
ERROR_3("Failed to add %1 to %2 - reverting to %3",_nextPointer,_weapon,_pointer);
|
||||
};
|
||||
|
||||
playSound "ACE_Sound_Click";
|
@ -1,13 +0,0 @@
|
||||
// by commy2
|
||||
|
||||
["ACE3 Weapons", QGVAR(switchLaserLightMode), localize LSTRING(switchLaserLight),
|
||||
{
|
||||
// Conditions: canInteract
|
||||
if !([ACE_player, objNull, ["isNotInside", "isNotSitting"]] call EFUNC(common,canInteractWith)) exitWith {false};
|
||||
// Conditions: specific
|
||||
if !([ACE_player] call CBA_fnc_canUseWeapon) exitWith {false};
|
||||
|
||||
[ACE_player, currentWeapon ACE_player] call FUNC(switchLaserLightMode);
|
||||
true
|
||||
},
|
||||
{false}, [38, [false, true, false]], false] call CBA_fnc_addKeybind;
|
@ -15,3 +15,5 @@
|
||||
#endif
|
||||
|
||||
#include "\z\ace\addons\main\script_macros.hpp"
|
||||
|
||||
#define MAX_LASER_RANGE 50
|
||||
|
@ -10,6 +10,7 @@ class CfgSettings {
|
||||
//Warnings for missing RHS compat pbos
|
||||
compat_rhs_afrf3[] = {"ace_compat_rhs_afrf3", {VERSION_AR}, "isClass (configFile >> 'CfgPatches' >> 'rhs_main')"};
|
||||
compat_rhs_usf3[] = {"ace_compat_rhs_usf3", {VERSION_AR}, "isClass (configFile >> 'CfgPatches' >> 'rhsusf_main')"};
|
||||
compat_rhs_gref3[] = {"ace_compat_rhs_gref3", {VERSION_AR}, "isClass (configFile >> 'CfgPatches' >> 'rhsgref_main')"};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -10,7 +10,7 @@
|
||||
|
||||
// MINIMAL required version for the Mod. Components can specify others..
|
||||
#define REQUIRED_VERSION 1.64
|
||||
#define REQUIRED_CBA_VERSION {3,1,1}
|
||||
#define REQUIRED_CBA_VERSION {3,2,1}
|
||||
|
||||
#ifdef COMPONENT_BEAUTIFIED
|
||||
#define COMPONENT_NAME QUOTE(ACE3 - COMPONENT_BEAUTIFIED)
|
||||
|
@ -1,4 +1,4 @@
|
||||
#define MAJOR 3
|
||||
#define MINOR 8
|
||||
#define PATCHLVL 3
|
||||
#define BUILD 14
|
||||
#define MINOR 9
|
||||
#define PATCHLVL 0
|
||||
#define BUILD 16
|
||||
|
@ -1,7 +1,7 @@
|
||||
class CfgLights {
|
||||
|
||||
|
||||
class Chemlight_Blue;
|
||||
|
||||
|
||||
class ACE_FlashlightLight_White: Chemlight_Blue {
|
||||
brightness = 100;
|
||||
color[] = {1,1,1,1};
|
||||
@ -16,20 +16,24 @@ class CfgLights {
|
||||
start = 0.075;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
class ACE_FlashlightLight_Red: ACE_FlashlightLight_White {
|
||||
diffuse[] = {1,0,0};
|
||||
};
|
||||
|
||||
|
||||
class ACE_FlashlightLight_Blue: ACE_FlashlightLight_White {
|
||||
diffuse[] = {0.25,0.25,1};
|
||||
};
|
||||
|
||||
|
||||
class ACE_FlashlightLight_Green: ACE_FlashlightLight_White {
|
||||
diffuse[] = {0,1,0};
|
||||
};
|
||||
|
||||
|
||||
class ACE_FlashlightLight_Yellow: ACE_FlashlightLight_White {
|
||||
diffuse[] = {1,1,0.4};
|
||||
};
|
||||
};
|
||||
|
||||
class ACE_FlashlightLight_Orange: ACE_FlashlightLight_White {
|
||||
diffuse[] = {1,0.65,0};
|
||||
};
|
||||
};
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user