Merge pull request #3974 from acemod/master

Move towards 3.6.0 release
This commit is contained in:
Glowbal 2016-06-22 09:51:15 +02:00 committed by GitHub
commit cea77fb331
1846 changed files with 95979 additions and 89034 deletions

View File

@ -1,7 +1,7 @@
root = true
[*]
end_of_line = crlf
end_of_line = lf
insert_final_newline = true
charset = utf-8
indent_style = space
@ -10,4 +10,3 @@ trim_trailing_whitespace = true
[*.md]
trim_trailing_whitespace = false

4
.gitattributes vendored Normal file
View File

@ -0,0 +1,4 @@
* text=auto
*.png binary
*.jpg binary
*.paa binary

View File

@ -24,6 +24,6 @@ ACE2, AGM and CSE had a lot of features implemented or planned. All of them are
Please refrain from making requests for any planned or existing features from either ACE2, AGM or CSE. Most of them are already being or have been considered for porting or a rewrite.
## Requesting a feature
In order to avoid duplicates and keep the issue tracker organized, we have created a common issue for [ACE3 Feature requests](https://github.com/acemod/ACE3/issues/414). Any and all relevant requests should be submitted there, where they will also get discussed and evaluated. Before adding a new one, make sure to check the previous entries from the thread and do a quick search for similar suggestions; please don't reiterate requests for features that had already been accepted for inclusion, or those which were disregarded earlier.
In order to avoid duplicates and keep the issue tracker organized, we have created a common issue for [ACE3 Feature requests](https://github.com/acemod/ACE3/issues/3594). Any and all relevant requests should be submitted there, where they will also get discussed and evaluated. Before adding a new one, make sure to check the previous entries from the thread and do a quick search for similar suggestions; please don't reiterate requests for features that had already been accepted for inclusion, or those which were disregarded earlier.
Following their approval, feature requests may be moved by moderators to a separate issue for further discussion.

17
.gitignore vendored
View File

@ -1,8 +1,9 @@
release/*
*.cache
*.pbo
texHeaders.bin
*.swp
*.swo
*.biprivatekey
Thumbs.db
release/*
tools/temp
*.cache
*.pbo
texHeaders.bin
*.swp
*.swo
*.biprivatekey
Thumbs.db

View File

@ -12,6 +12,7 @@ before_script:
fi
script:
- python3 tools/sqf_validator.py
- python3 tools/config_style_checker.py
- if [ -n "${GH_TOKEN}" ] && [ "${TRAVIS_BRANCH}" == "master" ] && [ "${TRAVIS_PULL_REQUEST}" == "false" ]; then
python3 tools/deploy.py;
fi

View File

@ -75,6 +75,7 @@ Gianmarco Varriale (TeamNuke) <admin@forhost.org>
GieNkoV <gienkov.grzegorz@gmail.com>
GitHawk <githawk@gmx.net>
gpgpgpgp
Grey-Soldierman <gungamer101@hotmail.com>
Grzegorz
Hamburger SV
Harakhti <shadowdragonphd@gmail.com>
@ -87,6 +88,7 @@ Kllrt <kllrtik@gmail.com>
legman <juicemelon@msn.com>
Legolasindar "Viper" <legolasindar@gmail.com>
licht-im-Norden87 <lichtimnorden87@gmail.com>
looter <looter222@gmail.com>
Macusercom <macusercom@gmail.com>
MarcBook
meat <p.humberdroz@gmail.com>
@ -111,6 +113,7 @@ Sniperwolf572 <tenga6@gmail.com>
System98
SzwedzikPL <szwedzikpl@gmail.com>
Tachi <zaveruha007@gmail.com>
Tessa Elieff <Fastroping Sound - CreativeCommons Attributions 3.0>
Toaster <jonathan.pereira@gmail.com>
Tonic
Tourorist <tourorist@gmail.com>
@ -119,4 +122,3 @@ voiper
VyMajoris(W-Cephei)<vycanismajoriscsa@gmail.com>
Winter <simon@agius-muscat.net>
zGuba
Grey-Soldierman <gungamer101@hotmail.com>

View File

@ -26,6 +26,8 @@ Some folders of this project may contain a separate LICENSE file. Should
that be the case, everything in that folder and all subfolders is subject
to that license instead.
- ARMA PUBLIC LICENSE (\addons\apl)
- CreativeCommons Attributions 3.0 (\addons\fastroping\data\sounds)
============================================================================
Full GNU General Public License Text

View File

@ -3,12 +3,15 @@
</p>
<p align="center">
<a href="https://github.com/acemod/ACE3/releases">
<img src="https://img.shields.io/badge/Version-3.5.1-blue.svg?style=flat-square" alt="ACE3 Version">
<a href="https://github.com/acemod/ACE3/releases/latest">
<img src="https://img.shields.io/badge/Version-3.6.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">
</a>
<a href="https://github.com/acemod/ACE3/releases">
<img src="https://img.shields.io/github/downloads/acemod/ACE3/total.svg?style=flat-square&label=Downloads" alt="ACE3 Downloads">
</a>
<a href="https://forums.bistudio.com/topic/181341-ace3-a-collaborative-merger-between-agm-cse-and-ace/?p=2859670">
<img src="https://img.shields.io/badge/BIF-Thread-lightgrey.svg?style=flat-square" alt="BIF Thread">
</a>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,29 +1,34 @@
class ACE_Settings {
class GVAR(enabled) {
category = CSTRING(DisplayName);
displayName = CSTRING(enabled_DisplayName);
description = CSTRING(enabled_Description);
typeName = "BOOL";
value = 0;
};
class GVAR(simulateForSnipers) {
category = CSTRING(DisplayName);
displayName = CSTRING(simulateForSnipers_DisplayName);
description = CSTRING(simulateForSnipers_Description);
typeName = "BOOL";
value = 1;
};
class GVAR(simulateForGroupMembers) {
category = CSTRING(DisplayName);
displayName = CSTRING(simulateForGroupMembers_DisplayName);
description = CSTRING(simulateForGroupMembers_Description);
typeName = "BOOL";
value = 0;
};
class GVAR(simulateForEveryone) {
category = CSTRING(DisplayName);
displayName = CSTRING(simulateForEveryone_DisplayName);
description = CSTRING(simulateForEveryone_Description);
typeName = "BOOL";
value = 0;
};
class GVAR(disabledInFullAutoMode) {
category = CSTRING(DisplayName);
displayName = CSTRING(disabledInFullAutoMod_DisplayName);
description = CSTRING(disabledInFullAutoMod_Description);
typeName = "BOOL";
@ -31,6 +36,7 @@ class ACE_Settings {
};
/* // TODO: We currently do not have firedEHs on vehicles
class GVAR(vehicleGunnerEnabled) {
category = CSTRING(DisplayName);
displayName = "Enabled For Vehicle Gunners";
description = "Enables advanced ballistics for vehicle gunners";
typeName = "BOOL";
@ -38,30 +44,35 @@ class ACE_Settings {
};
*/
class GVAR(ammoTemperatureEnabled) {
category = CSTRING(DisplayName);
displayName = CSTRING(ammoTemperatureEnabled_DisplayName);
description = CSTRING(ammoTemperatureEnabled_Description);
typeName = "BOOL";
value = 1;
};
class GVAR(barrelLengthInfluenceEnabled) {
category = CSTRING(DisplayName);
displayName = CSTRING(barrelLengthInfluenceEnabled_DisplayName);
description = CSTRING(barrelLengthInfluenceEnabled_Description);
typeName = "BOOL";
value = 1;
};
class GVAR(bulletTraceEnabled) {
category = CSTRING(DisplayName);
displayName = CSTRING(bulletTraceEnabled_DisplayName);
description = CSTRING(bulletTraceEnabled_Description);
typeName = "BOOL";
value = 1;
};
class GVAR(simulationInterval) {
category = CSTRING(DisplayName);
displayName = CSTRING(simulationInterval_DisplayName);
description = CSTRING(simulationInterval_Description);
typeName = "SCALAR";
value = 0.0;
};
class GVAR(simulationRadius) {
category = CSTRING(DisplayName);
displayName = CSTRING(simulationRadius_DisplayName);
description = CSTRING(simulationRadius_Description);
typeName = "SCALAR";

View File

@ -3,7 +3,7 @@ class CfgVehicles {
class GVAR(ModuleSettings): ACE_Module {
scope = 2;
displayName = CSTRING(DisplayName);
icon = QUOTE(PATHTOF(UI\Icon_Module_Wind_ca.paa));
icon = QPATHTOF(UI\Icon_Module_Wind_ca.paa);
category = "ACE";
function = QUOTE(DFUNC(initModuleSettings));
functionPriority = 1;

View File

@ -5,7 +5,7 @@
GVAR(currentbulletID) = -1;
GVAR(Protractor) = false;
GVAR(ProtractorStart) = ACE_time;
GVAR(ProtractorStart) = CBA_missionTime;
GVAR(allBullets) = [];
GVAR(currentGrid) = 0;
@ -21,19 +21,36 @@ if (!GVAR(extensionAvailable)) exitWith {
};
};
*/
[] call FUNC(initializeTerrainExtension);
if (!hasInterface) exitWith {};
["SettingsInitialized", {
["ace_settingsInitialized", {
//If not enabled, dont't add PFEH
if (!GVAR(enabled)) exitWith {};
// Register fire event handler
["firedPlayer", DFUNC(handleFired)] call EFUNC(common,addEventHandler);
["firedPlayerNonLocal", DFUNC(handleFired)] call EFUNC(common,addEventHandler);
//Run the terrain processor
[] call FUNC(initializeTerrainExtension);
}] call EFUNC(common,addEventHandler);
// Register fire event handler
["ace_firedPlayer", DFUNC(handleFired)] call CBA_fnc_addEventHandler;
["ace_firedPlayerNonLocal", DFUNC(handleFired)] call CBA_fnc_addEventHandler;
//Add warnings for missing compat PBOs (only if AB is on)
{
_x params ["_modPBO", "_compatPBO"];
if ((isClass (configFile >> "CfgPatches" >> _modPBO)) && {!isClass (configFile >> "CfgPatches" >> _compatPBO)}) then {
ACE_LOGWARNING_2("Weapon Mod [%1] missing ace compat pbo [%2] (from @ace\optionals)",_modPBO,_compatPBO);
};
} forEach [
["RH_acc","ace_compat_rh_acc"],
["RH_de_cfg","ace_compat_rh_de"],
["RH_m4_cfg","ace_compat_rh_m4"],
["RH_PDW","ace_compat_rh_pdw"],
["RKSL_PMII","ace_compat_rksl_pm_ii"],
["iansky_opt","ace_compat_sma3_iansky"],
["R3F_Armes","ace_compat_r3f"]
];
}] call CBA_fnc_addEventHandler;
#ifdef DEBUG_MODE_FULL
call FUNC(diagnoseWeapons);

View File

@ -2,12 +2,14 @@
class CfgPatches {
class ADDON {
name = COMPONENT_NAME;
units[] = {};
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_ballistics", "ace_weather"};
author[] = {"Ruthberg"};
authorUrl = "https://github.com/ulteq";
author = ECSTRING(common,ACETeam);
authors[] = {"Ruthberg"};
url = ECSTRING(main,URL);
VERSION_CONFIG;
};
};

View File

@ -3,10 +3,10 @@
*
* Displays a protractor in the top left corner of the screen
*
* Argument:
* Arguments:
* None
*
* Return value:
* Return Value:
* None
*
* Public: No
@ -43,13 +43,13 @@ GVAR(Protractor) = true;
__ctrl1 ctrlSetScale 1;
__ctrl1 ctrlCommit 0;
__ctrl1 ctrlSetText QUOTE(PATHTOF(UI\protractor.paa));
__ctrl1 ctrlSetText QPATHTOF(UI\protractor.paa);
__ctrl1 ctrlSetTextColor [1, 1, 1, 1];
__ctrl2 ctrlSetScale 1;
__ctrl2 ctrlSetPosition [SafeZoneX + 0.001, SafeZoneY + 0.001 - 0.0012 * (-58 max (asin((ACE_player weaponDirection currentWeapon ACE_player) select 2)) min 58), 0.2, 0.2 * 4/3];
__ctrl2 ctrlSetPosition [SafeZoneX + 0.001, SafeZoneY - 0.001 - 0.1074 * (-0.86 max ((ACE_player weaponDirection currentWeapon ACE_player) select 2) min 0.86), 0.2, 0.2 * 4/3];
__ctrl2 ctrlCommit 0;
__ctrl2 ctrlSetText QUOTE(PATHTOF(UI\protractor_marker.paa));
__ctrl2 ctrlSetText QPATHTOF(UI\protractor_marker.paa);
__ctrl2 ctrlSetTextColor [1, 1, 1, 1];
}, 0.1, []] call CBA_fnc_addPerFrameHandler;

View File

@ -12,7 +12,7 @@
*/
#include "script_component.hpp"
private _aceTimeSecond = floor ACE_time;
private _aceTimeSecond = floor CBA_missionTime;
{
private ["_bulletVelocity", "_bulletPosition", "_bulletSpeed"];
@ -31,7 +31,7 @@ private _aceTimeSecond = floor ACE_time;
drop ["\A3\data_f\ParticleEffects\Universal\Refract","","Billboard",1,0.1,getPos _bullet,[0,0,0],0,1.275,1,0,[0.02*_caliber,0.01*_caliber],[[0,0,0,0.65],[0,0,0,0.2]],[1,0],0,0,"","",""];
};
call compile ("ace_advanced_ballistics" callExtension format["simulate:%1:%2:%3:%4:%5:%6:%7", _index, _bulletVelocity, _bulletPosition, ACE_wind, ASLToATL(_bulletPosition) select 2, _aceTimeSecond, ACE_time - _aceTimeSecond]);
call compile ("ace_advanced_ballistics" callExtension format["simulate:%1:%2:%3:%4:%5:%6:%7", _index, _bulletVelocity, _bulletPosition, ACE_wind, ASLToATL(_bulletPosition) select 2, _aceTimeSecond, CBA_missionTime - _aceTimeSecond]);
};
nil
} count +GVAR(allBullets);

View File

@ -88,7 +88,7 @@ if (GVAR(ammoTemperatureEnabled) || GVAR(barrelLengthInfluenceEnabled)) then {
_bulletTraceVisible = false;
if (GVAR(bulletTraceEnabled) && cameraView == "GUNNER") then {
if (currentWeapon ACE_player in ["ACE_Vector", "Binocular", "Rangefinder", "Laserdesignator"]) then {
if (currentWeapon ACE_player == binocular ACE_player) then {
_bulletTraceVisible = true;
} else {
if (currentWeapon ACE_player == primaryWeapon ACE_player && count primaryWeaponItems ACE_player > 2) then {
@ -110,8 +110,8 @@ if (_caliber > 0 && _bulletLength > 0 && _bulletMass > 0 && _barrelTwist > 0) th
GVAR(currentbulletID) = (GVAR(currentbulletID) + 1) % 10000;
_aceTimeSecond = floor ACE_time;
"ace_advanced_ballistics" callExtension format["new:%1:%2:%3:%4:%5:%6:%7:%8:%9:%10:%11:%12:%13:%14:%15:%16:%17:%18", GVAR(currentbulletID), _airFriction, _ballisticCoefficients, _velocityBoundaries, _atmosphereModel, _dragModel, _stabilityFactor, _twistDirection, _muzzleVelocity, _transonicStabilityCoef, getPosASL _projectile, EGVAR(common,mapLatitude), EGVAR(weather,currentTemperature), EGVAR(common,mapAltitude), EGVAR(weather,currentHumidity), overcast, _aceTimeSecond, ACE_time - _aceTimeSecond];
_aceTimeSecond = floor CBA_missionTime;
"ace_advanced_ballistics" callExtension format["new:%1:%2:%3:%4:%5:%6:%7:%8:%9:%10:%11:%12:%13:%14:%15:%16:%17:%18", GVAR(currentbulletID), _airFriction, _ballisticCoefficients, _velocityBoundaries, _atmosphereModel, _dragModel, _stabilityFactor, _twistDirection, _muzzleVelocity, _transonicStabilityCoef, getPosASL _projectile, EGVAR(common,mapLatitude), EGVAR(weather,currentTemperature), EGVAR(common,mapAltitude), EGVAR(weather,currentHumidity), overcast, _aceTimeSecond, CBA_missionTime - _aceTimeSecond];
GVAR(allBullets) pushBack [_projectile, _caliber, _bulletTraceVisible, GVAR(currentbulletID)];

View File

@ -18,13 +18,13 @@ if (!GVAR(extensionAvailable)) exitWith {};
private ["_initStartTime", "_mapSize", "_mapGrids", "_gridCells", "_x", "_y", "_gridCenter", "_gridHeight", "_gridNumObjects", "_gridSurfaceIsWater"];
_initStartTime = ACE_time;
_initStartTime = CBA_missionTime;
_mapSize = getNumber (configFile >> "CfgWorlds" >> worldName >> "MapSize");
if (("ace_advanced_ballistics" callExtension format["init:%1:%2", worldName, _mapSize]) == "Terrain already initialized") exitWith {
#ifdef DEBUG_MODE_FULL
systemChat "AdvancedBallistics: Terrain already initialized";
#endIf
#endif
};
_mapGrids = ceil(_mapSize / 50) + 1;
@ -38,7 +38,7 @@ GVAR(currentGrid) = 0;
if (GVAR(currentGrid) >= _gridCells) exitWith {
#ifdef DEBUG_MODE_FULL
systemChat format["AdvancedBallistics: Finished terrain initialization in %1 seconds", ceil(ACE_time - _initStartTime)];
systemChat format["AdvancedBallistics: Finished terrain initialization in %1 seconds", ceil(CBA_missionTime - _initStartTime)];
#endif
[_idPFH] call CBA_fnc_removePerFrameHandler;
};

View File

@ -1,4 +1,5 @@
#define COMPONENT advanced_ballistics
#define COMPONENT_BEAUTIFIED Advanced Ballistics
#include "\z\ace\addons\main\script_mod.hpp"
// #define DEBUG_MODE_FULL

View File

@ -68,7 +68,7 @@
<German>Für Scharfschützen aktiviert</German>
<Czech>Povoleno pro odstřelovače</Czech>
<Portuguese>Ativar para caçadores</Portuguese>
<French>Activer pour les snipers</French>
<French>Activé pour les snipers</French>
<Hungarian>Mesterlövészeknek engedélyezve</Hungarian>
<Russian>Включена для снайперов</Russian>
<Italian>Abilita per Tiratori Scelti</Italian>
@ -92,7 +92,7 @@
<German>Für Gruppenmitglieder aktiviert</German>
<Czech>Povoleno pro členy skupiny</Czech>
<Portuguese>Ativada para membros do grupo</Portuguese>
<French>Activer pour les membres du groupe</French>
<French>Activé pour les membres groupés</French>
<Hungarian>Csoporttagoknak engedélyezve</Hungarian>
<Russian>Включена для группы</Russian>
<Italian>Abilita per Membri del Gruppo</Italian>
@ -116,7 +116,7 @@
<German>Für jeden aktiviert</German>
<Czech>Povoleno pro všechny</Czech>
<Portuguese>Ativada para todos</Portuguese>
<French>Activer pour tout le monde</French>
<French>Activé pour tout le monde</French>
<Hungarian>Mindenkinek engedélyezve</Hungarian>
<Russian>Включена для всех</Russian>
<Italian>Abilita per tutti</Italian>
@ -164,7 +164,7 @@
<German>Beim vollautomatischen Feuern deaktiviert</German>
<Czech>Zakázáno v automatickém režimu střelby</Czech>
<Portuguese>Desabilitar no modo automático</Portuguese>
<French>Désactiver en mode rafale libre</French>
<French>Désactiver en mode automatique</French>
<Hungarian>Automata módban letiltva</Hungarian>
<Russian>Выкл. для автомат. режима</Russian>
<Italian>Disabilita in modalità di fuoco automatico</Italian>
@ -176,7 +176,7 @@
<German>Deaktiviert die erweiterte Ballistik beim vollautomatischen Feuern</German>
<Czech>Zákáže pokročilou balistiku během střelby v režimu automat</Czech>
<Portuguese>Desabilitar a balística avançada durante fogo automático</Portuguese>
<French>Désactive la balistique avancée pour les tirs en rafale libre</French>
<French>Désactive la balistique avancée pour les tirs en automatique</French>
<Hungarian>Letiltja a fejlett ballisztikát automata tüzelés folyamán</Hungarian>
<Russian>Выключает продвинутую баллистику при стрельбе в полностью автоматическом режиме</Russian>
<Italian>Disabilita Balistica Avanzata durante fuoco automatico</Italian>
@ -188,7 +188,7 @@
<German>Simulation der Munitionstemperatur aktivieren</German>
<Czech>Povolit simulaci teploty munice</Czech>
<Portuguese>Ativar simulação de temperatura de munição</Portuguese>
<French>Activer la simulation de la température</French>
<French>Active la simulation de la température</French>
<Hungarian>Lőszer-hő szimuláció engedélyezése</Hungarian>
<Russian>Симуляция температуры для боеприпасов</Russian>
<Italian>Abilita simulazione della temperatura delle munizioni</Italian>
@ -236,7 +236,7 @@
<German>Geschossspureffekt aktivieren</German>
<Czech>Povolit efekt trasírek</Czech>
<Portuguese>Ativa efeito traçante de projétil</Portuguese>
<French>Activer l'effet traçante</French>
<French>Activer l'effet balle traçante</French>
<Hungarian>Nyomkövető-effekt engedélyezése</Hungarian>
<Russian>Следы пуль</Russian>
<Italian>Abilita effetto di tracciatura dei proiettili</Italian>
@ -307,11 +307,11 @@
<Polish>Moduł ten pozwala aktywować zaawansowaną balistykę biorącą przy obliczeniach trajektorii lotu pocisku pod uwagę takie rzeczy jak temperatura powietrza, ciśnienie atmosferyczne, wilgotność powietrza, siły Coriolisa i Eotvosa, grawitację a także broń z jakiej wykonywany jest strzał oraz rodzaj amunicji. Wszystko to sprowadza się na bardzo dokładne odwzorowanie balistyki.</Polish>
<Czech>Tento modul umožňuje aktivovat pokročilou balistiku, která vypočítává trajektorii kulky a bere do úvahy věci jako je teplota vzduchu, atmosférický tlak, vlhkost vzduchu, gravitaci, typ munice a zbraň, ze které je náboj vystřelen. To vše přispívá k velmi přesné balistice.</Czech>
<Portuguese>Este módulo permite que você ative cálculos de balística avançada, fazendo a trajetória do projétil levar em consideração coisas como temperatura do ar, pressão atmosférica, umidade, força de Coriolis, a gravidade, o modelo da arma no qual o disparo é realizado e o tipo de munição. Tudo isso acrescenta-se a um balística muito precisa.</Portuguese>
<French>Ce module active la simulation de balistique avancée - ie les projectiles sont influencés par des varibles comme le vent, la température, la pression atmosphérique, l'humidité, la gravité, le type de munition et l'arme avec laquelle ils sont tirés.</French>
<French>Ce module active la simulation de balistique avancée - les projectiles sont influencés par des variables comme le vent, la température, la pression atmosphérique, l'humidité, la gravité, le type de munition et l'arme avec laquelles ils sont tirés.</French>
<Hungarian>Ez a modul engedélyezi a fejlett ballisztikai szimulációt - a lövedékek röppályáját befolyásolni fogja a levegő hőmérséklete, légnyomás, páratartalom, gravitáció, a lövedék fajtája, valamint a fegyver, amiből kilőtték a lövedéket.</Hungarian>
<Russian>Этот модуль включает симуляцию продвинутой баллистики - при этом на траекторию полета снаряда влияют различные параметры, такие как температура воздуха, атмосферное давление, влажность, гравитация, тип боеприпаса и оружия, из которого произвели выстрел.</Russian>
<Spanish>Este módulo permite la simulación balística avanzada - es decir, la trayectoria de los proyectiles está influenciada por variables como la temperatura del aire, la presión atmosférica, la humedad, la gravedad, el tipo de municiones y el arma desde el que fue disparada.</Spanish>
<Italian>Questo modulo abilita la simulazione della Balistica Avanzata - cioè la traiettoria dei proiettili è influenzata da variabili come la temperatura dell'aria, pressione atmosferica, umidità, gravità, il tipo di munizione e l'arma da cui è sparata</Italian>
</Key>
</Package>
</Project>
</Project>

View File

@ -2,12 +2,14 @@
class CfgPatches {
class ADDON {
name = COMPONENT_NAME;
units[] = {};
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_common"};
author[] = {"KoffeinFlummi","commy2"};
authorUrl = "https://github.com/KoffeinFlummi/";
author = ECSTRING(common,ACETeam);
authors[] = {"KoffeinFlummi","commy2"};
url = ECSTRING(main,URL);
VERSION_CONFIG;
};
};

View File

@ -1,4 +1,5 @@
#define COMPONENT ai
#define COMPONENT_BEAUTIFIED AI
#include "\z\ace\addons\main\script_mod.hpp"
// #define DEBUG_MODE_FULL
@ -14,4 +15,4 @@
#define DEBUG_SETTINGS DEBUG_SETTINGS_AI
#endif
#include "\z\ace\addons\main\script_macros.hpp"
#include "\z\ace\addons\main\script_macros.hpp"

View File

@ -11,7 +11,7 @@ class CfgAmmo {
explosive = 1.8;
tracersEvery = 3;
tracerEndTime = 3.5;
CraterEffects = "ExploAmmoCrater";
explosionEffects = "ExploAmmoExplosion";
model = "\A3\Weapons_f\Data\bullettracer\tracer_red";

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@ -2,13 +2,18 @@
class CfgPatches {
class ADDON {
name = COMPONENT_NAME;
units[] = {};
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_common"};
author[] = {"KoffeinFlummi","Crusty","commy2","jaynus","Kimi"};
authorUrl = "https://github.com/KoffeinFlummi/";
author = ECSTRING(common,ACETeam);
authors[] = {"KoffeinFlummi","Crusty","commy2","jaynus","Kimi"};
url = ECSTRING(main,URL);
VERSION_CONFIG;
// this prevents any patched class from requiring this addon
addonRootClass = "A3_Characters_F";
};
};

View File

@ -20,4 +20,3 @@ 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;
gunAimDown = 0.087266463;

View File

@ -1,4 +1,5 @@
#define COMPONENT aircraft
#define COMPONENT_BEAUTIFIED Aircraft
#include "\z\ace\addons\main\script_mod.hpp"
// #define DEBUG_MODE_FULL
@ -14,4 +15,4 @@
#define DEBUG_SETTINGS DEBUG_SETTINGS_AIRCRAFT
#endif
#include "\z\ace\addons\main\script_macros.hpp"
#include "\z\ace\addons\main\script_macros.hpp"

View File

@ -7,7 +7,7 @@
<Spanish>Ráfaga</Spanish>
<Polish>Seria</Polish>
<Czech>Dávka</Czech>
<French>Contre mesures</French>
<French>Rafale</French>
<Russian>Очередь</Russian>
<Hungarian>Sorozat</Hungarian>
<Portuguese>Rajada</Portuguese>
@ -50,4 +50,4 @@
<Portuguese>Fechar porta de carga</Portuguese>
</Key>
</Package>
</Project>
</Project>

View File

@ -2,12 +2,13 @@
class CfgPatches {
class ADDON {
name = COMPONENT_NAME;
units[] = {};
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_main"};
author[] = {"Bohemia Interactive"};
authorUrl = "http://ace3mod.com";
author = "Bohemia Interactive";
url = ECSTRING(main,URL);
VERSION_CONFIG;
};
};

View File

@ -1,4 +1,5 @@
#define COMPONENT APL
#define COMPONENT_BEAUTIFIED APL
#include "\z\ace\addons\main\script_mod.hpp"
// #define DEBUG_MODE_FULL
@ -14,4 +15,4 @@
#define DEBUG_SETTINGS DEBUG_SETTINGS_APL
#endif
#include "\z\ace\addons\main\script_macros.hpp"
#include "\z\ace\addons\main\script_macros.hpp"

View File

@ -9,7 +9,7 @@ class CfgVehicles {
statement = QUOTE(call FUNC(create_dialog));
showDisabled = 0;
priority = 2;
icon = PATHTOF(UI\ATRAG_Icon.paa);
icon = QPATHTOF(UI\ATRAG_Icon.paa);
exceptions[] = {"notOnMap", "isNotInside", "isNotSitting"};
};
};

View File

@ -8,8 +8,8 @@ class CfgWeapons {
scope = 2;
displayName = CSTRING(Name);
descriptionShort = CSTRING(Description);
model = PATHTOF(data\tdsrecon.p3d);
picture = PATHTOF(UI\ATRAG_Icon.paa);
model = QPATHTOF(data\tdsrecon.p3d);
picture = QPATHTOF(UI\ATRAG_Icon.paa);
icon = "iconObject_circle";
mapSize = 0.034;

View File

@ -230,7 +230,7 @@ class ATragMX_Display {
idc=-1;
x=0.55*safezoneW+safezoneX+0.315;
};
class TEXT_GUN_FRAME: ATragMX_RscText {
idc=1001;
style=64;
@ -610,7 +610,7 @@ class ATragMX_Display {
x=0.550*safezoneW+safezoneX+0.27;
text="4";
action=QUOTE(call FUNC(toggle_solution_setup));
};
};
class TEXT_CALCULATE: TEXT_SCOPE_UNIT {
idc=3000;
style=ST_RIGHT;
@ -1059,7 +1059,7 @@ class ATragMX_Display {
text="Cancel";
action=QUOTE(false call FUNC(show_add_new_gun); true call FUNC(show_gun_list));
};
class TEXT_GUN_AMMO_DATA_BORE_HEIGHT: TEXT_BORE_HEIGHT {
idc=12000;
w=0.22;
@ -1147,7 +1147,7 @@ class ATragMX_Display {
class TEXT_GUN_AMMO_DATA_NEXT: TEXT_TARGET_SPEED_ASSIST_NEXT {
idc=12011;
};
class TEXT_ATMO_ENV_DATA_DEFAULT: TEXT_LEAD {
idc=13000;
w=0.08;
@ -1231,7 +1231,7 @@ class ATragMX_Display {
y=0.265*safezoneH+safezoneY+0.29;
text="Calc Method";
};
class TEXT_TARGET_DATA_LATITUDE: TEXT_BORE_HEIGHT {
idc=14000;
w=0.22;
@ -1379,7 +1379,7 @@ class ATragMX_Display {
class TEXT_TARGET_DATA_NEXT: TEXT_TARGET_SPEED_ASSIST_NEXT {
idc=14011;
};
class TEXT_SOLUTION_SETUP_SHOW_RESULT_IN: TEXT_GUN_AMMO_DATA_BORE_HEIGHT {
idc=15000;
style=64;
@ -1469,4 +1469,4 @@ class ATragMX_Display {
action=QUOTE(0 call FUNC(toggle_solution_setup));
};
};
};
};

View File

@ -7,41 +7,41 @@ if ((profileNamespace getVariable ["ACE_ATragMX_profileNamespaceVersion", 0]) ==
} 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
GVAR(gunList) = [["12.7x108mm" , 820, 100, 0.0657485, -0.00063800, 3.81, 0, 2, 10, 120, 0, 0, 48.28, 12.7, 38.10, 0.630, 1, "ASM" ],
["12.7x99mm AMAX" , 860, 100, 0.0611565, -0.00036645, 3.81, 0, 2, 10, 120, 0, 0, 48.60, 12.7, 38.10, 1.050, 1, "ASM" ],
["12.7x99mm" , 900, 100, 0.0582418, -0.00057503, 3.81, 0, 2, 10, 120, 0, 0, 41.92, 12.7, 38.10, 0.670, 1, "ASM" ],
["12.7x54mm" , 300, 100, 0.3394630, -0.00019268, 3.81, 0, 2, 10, 120, 0, 0, 48.60, 12.7, 24.13, 1.050, 1, "ASM" ],
[".408 Chey Tac" , 910, 100, 0.0569400, -0.00038944, 3.81, 0, 2, 10, 120, 0, 0, 27.15, 10.4, 33.02, 0.970, 1, "ASM" ],
["9.3×64mm" , 870, 100, 0.0619295, -0.00108571, 3.81, 0, 2, 10, 120, 0, 0, 14.90, 9.30, 35.56, 0.368, 1, "ASM" ],
[".338LM 250gr" , 880, 100, 0.0598469, -0.00059133, 3.81, 0, 2, 10, 120, 0, 0, 16.20, 8.58, 25.40, 0.322, 7, "ICAO"],
[".338LM 300gr" , 800, 100, 0.0677343, -0.00052190, 3.81, 0, 2, 10, 120, 0, 0, 19.44, 8.58, 25.40, 0.381, 7, "ICAO"],
[".338LM API526" , 895, 100, 0.0588865, -0.00069611, 3.81, 0, 2, 10, 120, 0, 0, 16.39, 8.58, 25.40, 0.560, 1, "ASM" ],
[".300WM Mk248 Mod 0", 900, 100, 0.0584442, -0.00070530, 3.81, 0, 2, 10, 120, 0, 0, 13.31, 7.80, 25.40, 0.268, 7, "ICAO"],
[".300WM Mk248 Mod 1", 867, 100, 0.0610738, -0.00061188, 3.81, 0, 2, 10, 120, 0, 0, 14.26, 7.80, 25.40, 0.310, 7, "ICAO"],
[".300WM Berger OTM" , 853, 100, 0.0622179, -0.00053733, 3.81, 0, 2, 10, 120, 0, 0, 14.90, 7.80, 25.40, 0.368, 7, "ICAO"],
["7.62x54mmR" , 800, 100, 0.0691878, -0.00100023, 3.81, 0, 2, 10, 120, 0, 0, 9.849, 7.92, 24.13, 0.400, 1, "ICAO"],
["7.62x51mm M80" , 810, 100, 0.0679374, -0.00100957, 3.81, 0, 2, 10, 120, 0, 0, 9.525, 7.82, 25.40, 0.200, 7, "ICAO"],
["7.62x51mm M118LR" , 780, 100, 0.0710319, -0.00082828, 3.81, 0, 2, 10, 120, 0, 0, 11.34, 7.82, 25.40, 0.243, 7, "ICAO"],
["7.62x51mm Mk319" , 910, 100, 0.0584524, -0.00102338, 3.81, 0, 2, 10, 120, 0, 0, 8.424, 7.82, 25.40, 0.377, 1, "ICAO"],
["7.62x51mm M993" , 930, 100, 0.0570316, -0.00107148, 3.81, 0, 2, 10, 120, 0, 0, 8.230, 7.82, 25.40, 0.359, 1, "ICAO"],
["7.62x51mm Subsonic", 320, 100, 0.3059680, -0.00049899, 3.81, 0, 2, 10, 120, 0, 0, 12.96, 7.82, 25.40, 0.235, 7, "ICAO"],
["6.5x39mm" , 800, 100, 0.0683482, -0.00075308, 3.81, 0, 2, 10, 120, 0, 0, 7.970, 6.71, 22.86, 0.263, 7, "ICAO"],
["6.5x47mm Lapua" , 800, 100, 0.0682221, -0.00067037, 3.81, 0, 2, 10, 120, 0, 0, 9.007, 6.71, 22.86, 0.290, 7, "ICAO"],
["6.5mm Creedmor" , 840, 100, 0.0636501, -0.00060887, 3.81, 0, 2, 10, 120, 0, 0, 9.072, 6.71, 22.86, 0.317, 7, "ICAO"],
["5.56x45mm M855" , 870, 100, 0.0626386, -0.00126466, 3.81, 0, 2, 10, 120, 0, 0, 4.018, 5.70, 17.78, 0.151, 7, "ASM" ],
["5.56x45mm Mk262" , 820, 100, 0.0671481, -0.00109563, 3.81, 0, 2, 10, 120, 0, 0, 4.990, 5.70, 17.78, 0.361, 1, "ASM" ],
["5.56x45mm Mk318" , 880, 100, 0.0615937, -0.00123318, 3.81, 0, 2, 10, 120, 0, 0, 4.018, 5.70, 17.78, 0.307, 1, "ASM" ],
["5.56x45mm M995" , 869, 100, 0.0626713, -0.00123272, 3.81, 0, 2, 10, 120, 0, 0, 4.536, 5.70, 17.78, 0.310, 1, "ASM" ]];
[] call FUNC(clear_user_data);
profileNamespace setVariable ["ACE_ATragMX_gunList", GVAR(gunList)];
};
@ -49,4 +49,4 @@ if ((profileNamespace getVariable ["ACE_ATragMX_profileNamespaceVersion", 0]) ==
[] call FUNC(init);
[] call FUNC(restore_user_data);
["RangerfinderData", {_this call FUNC(sord)}] call EFUNC(common,addEventHandler);
[QEGVAR(vector,rangefinderData), {_this call FUNC(sord)}] call CBA_fnc_addEventHandler;

View File

@ -2,11 +2,14 @@
class CfgPatches {
class ADDON {
name = COMPONENT_NAME;
units[] = {"ACE_Item_ATragMX"};
weapons[] = {"ACE_ATragMX"};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ACE_common", "ACE_weather"};
author = "Ruthberg";
author = ECSTRING(common,ACETeam);
authors[] = {"Ruthberg"};
url = ECSTRING(main,URL);
VERSION_CONFIG;
};
};
@ -14,4 +17,8 @@ class CfgPatches {
#include "CfgEventHandlers.hpp"
#include "CfgVehicles.hpp"
#include "CfgWeapons.hpp"
#include "RscTitles.hpp"
#include "RscTitles.hpp"
class ACE_newEvents {
RangerfinderData = QEGVAR(vector,rangefinderData);
};

View File

@ -42,31 +42,14 @@
* Public: No
*/
#include "script_component.hpp"
private ["_scopeBaseAngle", "_bulletMass", "_boreHeight", "_airFriction", "_muzzleVelocity", "_temperature", "_barometricPressure", "_relativeHumidity", "_simSteps", "_windSpeed1", "_windSpeed2", "_windDirection", "_inclinationAngle", "_targetSpeed", "_targetRange", "_drag", "_bc", "_dragModel", "_atmosphereModel", "_storeRangeCardData", "_stabilityFactor", "_twistDirection", "_latitude", "_directionOfFire"];
_scopeBaseAngle = _this select 0;
_bulletMass = _this select 1;
_boreHeight = _this select 2;
_airFriction = _this select 3;
_muzzleVelocity = _this select 4;
_temperature = _this select 5;
_barometricPressure = _this select 6;
_relativeHumidity = _this select 7;
_simSteps = _this select 8;
_windSpeed1 = (_this select 9) select 0;
_windSpeed2 = (_this select 9) select 1;
_windDirection = _this select 10;
_inclinationAngle = _this select 11;
_targetSpeed = _this select 12;
_targetRange = _this select 13;
_bc = _this select 14;
_dragModel = _this select 15;
_atmosphereModel = _this select 16;
_storeRangeCardData = _this select 17;
_stabilityFactor = _this select 18;
_twistDirection = _this select 19;
_latitude = _this select 20;
_directionOfFire = _this select 21;
params [
"_scopeBaseAngle", "_bulletMass", "_boreHeight", "_airFriction", "_muzzleVelocity",
"_temperature", "_barometricPressure", "_relativeHumidity", "_simSteps", "_windSpeed",
"_windDirection", "_inclinationAngle", "_targetSpeed", "_targetRange", "_bc", "_dragModel",
"_atmosphereModel", "_storeRangeCardData", "_stabilityFactor", "_twistDirection", "_latitude",
"_directionOfFire"
];
_windSpeed params ["_windSpeed1", "_windSpeed2"];
private ["_bulletPos", "_bulletVelocity", "_bulletAccel", "_bulletSpeed", "_gravity", "_deltaT"];
_bulletPos = [0, 0, 0];
@ -133,7 +116,7 @@ _bulletVelocity set [2, Sin(_scopeBaseAngle) * _muzzleVelocity];
while {_TOF < 15 && (_bulletPos select 1) < _targetRange} do {
_bulletSpeed = vectorMagnitude _bulletVelocity;
_speedTotal = _speedTotal + _bulletSpeed;
_stepsTotal = _stepsTotal + 1;
_speedAverage = (_speedTotal / _stepsTotal);
@ -142,7 +125,7 @@ while {_TOF < 15 && (_bulletPos select 1) < _targetRange} do {
_trueSpeed = vectorMagnitude _trueVelocity;
if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then {
_drag = if (missionNamespace getVariable [QEGVAR(advanced_ballistics,extensionAvailable), false]) then {
private _drag = if (missionNamespace getVariable [QEGVAR(advanced_ballistics,extensionAvailable), false]) then {
parseNumber(("ace_advanced_ballistics" callExtension format["retard:%1:%2:%3", _dragModel, _bc, _trueSpeed]))
} else {
([_dragModel, _bc, _trueSpeed] call EFUNC(advanced_ballistics,calculateRetardation))
@ -173,7 +156,7 @@ while {_TOF < 15 && (_bulletPos select 1) < _targetRange} do {
};
_kineticEnergy = 0.5 * (_bulletMass / 1000 * (_bulletSpeed ^ 2));
_kineticEnergy = _kineticEnergy * 0.737562149;
if ((missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) && (_bulletPos select 1) > 0) then {
// Coriolis
_horizontalDeflection = 0.0000729 * ((_bulletPos select 1) ^ 2) * sin(_latitude) / _speedAverage;
@ -190,7 +173,7 @@ while {_TOF < 15 && (_bulletPos select 1) < _targetRange} do {
_windage1 = _windage1 + _spinDrift;
_windage2 = _windage2 + _spinDrift;
};
GVAR(rangeCardData) set [_n, [_range, _elevation * 60, [_windage1 * 60, _windage2 * 60], _lead, _TOF, _bulletSpeed, _kineticEnergy]];
_n = _n + 1;
};

View File

@ -17,10 +17,7 @@
*/
#include "script_component.hpp"
private ["_gunID", "_restoreMemory", "_updateDisplay"];
_gunID = _this select 0;
_restoreMemory = _this select 1;
_updateDisplay = _this select 2;
params ["_gunID", "_restoreMemory", "_updateDisplay"];
if (_gunID < 0 || _gunID > (count GVAR(gunList)) - 1) exitWith {};

View File

@ -39,7 +39,7 @@ if (GVAR(showRangeCard)) then {
};
GVAR(showRangeCardSetup) call FUNC(show_range_card_setup);
GVAR(showSolutionSetup) call FUNC(show_solution_setup);
GVAR(showTargetData) call FUNC(show_target_data);
GVAR(showTargetData) call FUNC(show_target_data);
GVAR(showTargetRangeAssist) call FUNC(show_target_range_assist);
GVAR(showTargetSpeedAssist) call FUNC(show_target_speed_assist);
GVAR(showTargetSpeedAssistTimer) call FUNC(show_target_speed_assist_timer);
@ -56,7 +56,7 @@ GVAR(DialogPFH) = [{
if (!GVAR(active)) exitWith {
[_this select 1] call CBA_fnc_removePerFrameHandler;
};
__ctrlBackground ctrlSetText format [QUOTE(PATHTOF(UI\ATRAG_%1.paa)), ["N", "D"] select (call EFUNC(common,ambientBrightness))];
__ctrlBackground ctrlSetText format [QPATHTOF(UI\ATRAG_%1.paa), ["N", "D"] select (call EFUNC(common,ambientBrightness))];
}, 60, []] call CBA_fnc_addPerFrameHandler;
true

View File

@ -1,5 +1,5 @@
#include "script_component.hpp"
uiNamespace setVariable ['ATragMX_Display', nil];
GVAR(active) = false;
#include "script_component.hpp"
uiNamespace setVariable ['ATragMX_Display', nil];
GVAR(active) = false;
[GVAR(DialogPFH)] call CBA_fnc_removePerFrameHandler;

View File

@ -21,6 +21,5 @@ GVAR(showGunList) = _this;
if (_this) then {
ctrlSetFocus ((uiNamespace getVariable "ATragMX_Display") displayCtrl 6002);
lbSetCurSel [6000, GVAR(currentGun)];
};

View File

@ -21,7 +21,7 @@ GVAR(showRangeCardSetup) = _this;
if (_this) then {
ctrlSetFocus ((uiNamespace getVariable "ATragMX_Display") displayCtrl 10006);
ctrlSetText [10003, Str(Round(GVAR(rangeCardStartRange)))];
ctrlSetText [10004, Str(Round(GVAR(rangeCardEndRange)))];
ctrlSetText [10005, Str(Round(GVAR(rangeCardIncrement)))];

View File

@ -21,7 +21,6 @@ GVAR(showTargetRangeAssist) = _this;
if (_this) then {
ctrlSetFocus ((uiNamespace getVariable "ATragMX_Display") displayCtrl 7018);
ctrlSetText [7012, Str(parseNumber(ctrlText 320))];
ctrlSetText [7013, Str(parseNumber(ctrlText 340))];
@ -30,4 +29,4 @@ if (_this) then {
} else {
ctrlSetText [7016, "Meters"];
};
};
};

View File

@ -21,7 +21,7 @@ GVAR(showTargetSpeedAssist) = _this;
if (_this) then {
ctrlSetFocus ((uiNamespace getVariable "ATragMX_Display") displayCtrl 8012);
ctrlSetText [8004, Str(Round((GVAR(targetRange) select GVAR(currentTarget))))];
if (GVAR(currentUnit) == 1) then {
@ -29,7 +29,7 @@ if (_this) then {
} else {
ctrlSetText [8008, "Meters"];
};
if (GVAR(currentUnit) == 2) then {
ctrlSetText [8011, "m/s"];
} else {

View File

@ -17,10 +17,7 @@
*/
#include "script_component.hpp"
private ["_slopeDistance", "_azimuth", "_inclination"];
_slopeDistance = _this select 0;
_azimuth = _this select 1;
_inclination = _this select 2;
params ["_slopeDistance", "_azimuth", "_inclination"];
GVAR(inclinationAngle) set [GVAR(currentTarget), round(_inclination)];
GVAR(directionOfFire) set [GVAR(currentTarget), round(_azimuth)];

View File

@ -21,26 +21,26 @@ if !(ctrlVisible 9000) then {
true call FUNC(show_target_speed_assist_timer);
ctrlSetFocus ((uiNamespace getVariable "ATragMX_Display") displayCtrl 9002);
[{
private ["_args", "_startTime"];
_args = _this select 0;
_startTime = _args select 0;
if (!(GVAR(speedAssistTimer))) exitWith {
GVAR(speedAssistTimer) = true;
ctrlSetText [8006, Str(Round((ACE_time - _startTime) * 10) / 10)];
ctrlSetText [8006, Str(Round((CBA_missionTime - _startTime) * 10) / 10)];
[] call FUNC(calculate_target_speed_assist);
false call FUNC(show_target_speed_assist_timer);
true call FUNC(show_target_speed_assist);
[_this select 1] call CBA_fnc_removePerFrameHandler;
};
ctrlSetText [9001, Str(Round((ACE_time - _startTime) * 10) / 10)];
}, 0.1, [ACE_time]] call CBA_fnc_addPerFrameHandler;
ctrlSetText [9001, Str(Round((CBA_missionTime - _startTime) * 10) / 10)];
}, 0.1, [CBA_missionTime]] call CBA_fnc_addPerFrameHandler;
};

View File

@ -18,7 +18,7 @@
if (ctrlVisible 13000) then {
false call FUNC(show_atmo_env_data);
true call FUNC(show_main_page);
if (_this == 1) then {
call FUNC(calculate_target_solution);
};

View File

@ -18,7 +18,7 @@
if (ctrlVisible 12000) then {
false call FUNC(show_gun_ammo_data);
true call FUNC(show_main_page);
if (_this == 1) then {
call FUNC(update_zero_range);
call FUNC(calculate_target_solution);

View File

@ -18,7 +18,7 @@
if (ctrlVisible 6000) then {
false call FUNC(show_gun_list);
true call FUNC(show_main_page);
if (_this) then {
[lbCurSel 6000, true, true] call FUNC(change_gun);
};

View File

@ -21,9 +21,9 @@ if (ctrlVisible 5006) then {
} else {
false call FUNC(show_main_page);
true call FUNC(show_range_card);
ctrlSetFocus ((uiNamespace getVariable "ATragMX_Display") displayCtrl 5001);
[] call FUNC(calculate_range_card);
[] call FUNC(update_range_card);
};

View File

@ -18,12 +18,12 @@
if (ctrlVisible 10000) then {
false call FUNC(show_range_card_setup);
true call FUNC(show_range_card);
if (_this == 1) then {
GVAR(rangeCardStartRange) = 0 max Round(parseNumber(ctrlText 10003)) min 3000;
GVAR(rangeCardEndRange) = 0 max Round(parseNumber(ctrlText 10004)) min 3000;
GVAR(rangeCardIncrement) = 1 max Round(parseNumber(ctrlText 10005)) min 3000;
[] call FUNC(calculate_range_card);
[] call FUNC(update_range_card);
};

View File

@ -18,7 +18,7 @@
if (ctrlVisible 15000) then {
false call FUNC(show_solution_setup);
true call FUNC(show_main_page);
if (_this == 1) then {
GVAR(currentScopeClickUnit) = GVAR(currentScopeClickUnitTemp);
GVAR(currentScopeClickNumber) = GVAR(currentScopeClickNumberTemp);
@ -30,9 +30,9 @@ if (ctrlVisible 15000) then {
} else {
true call FUNC(show_solution_setup);
false call FUNC(show_main_page);
GVAR(currentScopeClickUnitTemp) = GVAR(currentScopeClickUnit);
GVAR(currentScopeClickNumberTemp) = GVAR(currentScopeClickNumber);
[] call FUNC(update_solution_setup);
};

View File

@ -18,7 +18,7 @@
if (ctrlVisible 14000) then {
false call FUNC(show_target_data);
true call FUNC(show_main_page);
if (_this == 1) then {
call FUNC(calculate_target_solution);
};

View File

@ -18,7 +18,7 @@
if (ctrlVisible 7000) then {
false call FUNC(show_target_range_assist);
true call FUNC(show_main_page);
if (_this == 1) then {
ctrlSetText [320, Str(parseNumber(ctrlText 7012))];
ctrlSetText [140040, Str(parseNumber(ctrlText 7012))];

View File

@ -18,7 +18,7 @@
if (ctrlVisible 8000) then {
false call FUNC(show_target_speed_assist);
true call FUNC(show_main_page);
if (_this == 1) then {
[] call FUNC(calculate_target_speed_assist);
private ["_targetSpeed"];

View File

@ -43,7 +43,7 @@ _speedOfSound = GVAR(temperature) call EFUNC(weather,calculateSpeedOfSound);
_TOF = _x select 4;
_velocity = _x select 5;
_kineticEnergy = _x select 6;
switch (GVAR(currentScopeUnit)) do {
case 0: {
_elevation = _elevation / 3.38;
@ -63,25 +63,25 @@ _speedOfSound = GVAR(temperature) call EFUNC(weather,calculateSpeedOfSound);
};
_clickNumber = GVAR(workingMemory) select 8;
_clickInterval = _clickSize / _clickNumber;
_elevation = Round(_elevation / _clickInterval);
_windage1 = Round(_windage1 / _clickInterval);
_windage2 = Round(_windage2 / _clickInterval);
};
};
_elevationOutput = Str(Round(_elevation * 100) / 100);
_windageOutput = Str(Round(_windage1 * 100) / 100);
_rangeOutput = Str(_range);
if (_velocity < _speedOfSound) then {
_rangeOutput = _rangeOutput + "*";
};
if (GVAR(currentUnit) == 1) then {
_velocity = _velocity * 3.2808399;
};
switch (GVAR(rangeCardCurrentColumn)) do {
case 0: {
if (GVAR(showWind2)) then {
@ -100,6 +100,6 @@ _speedOfSound = GVAR(temperature) call EFUNC(weather,calculateSpeedOfSound);
_lastColumnOutput = Str(Round(_TOF * 100) / 100);
}
};
lnbAddRow [5007, [_rangeOutput, _elevationOutput, _windageOutput, _lastColumnOutput]];
} forEach GVAR(rangeCardData);

View File

@ -33,24 +33,24 @@ switch (GVAR(currentScopeUnit)) do {
case 0: {
_elevationAbs = _elevationAbs / 3.38;
_windageAbs = _windageAbs / 3.38;
_wind2 = _wind2 / 3.38;
_elevationRel = _elevationRel / 3.38;
_windageRel = _windageRel / 3.38;
_elevationCur = _elevationCur / 3.38;
_windageCur = _windageCur / 3.38;
};
case 2: {
_elevationAbs = _elevationAbs * 1.047;
_windageAbs = _windageAbs * 1.047;
_wind2 = _wind2 / 1.047;
_elevationRel = _elevationRel * 1.047;
_windageRel = _windageRel * 1.047;
_elevationCur = _elevationCur * 1.047;
_windageCur = _windageCur * 1.047;
};
@ -62,15 +62,15 @@ switch (GVAR(currentScopeUnit)) do {
};
_clickNumber = GVAR(workingMemory) select 8;
_clickInterval = _clickSize / _clickNumber;
_elevationAbs = Round(_elevationAbs / _clickInterval);
_windageAbs = Round(_windageAbs / _clickInterval);
_wind2 = Round(_wind2 / _clickInterval);
_elevationRel = Round(_elevationRel / _clickInterval);
_windageRel = Round(_windageRel / _clickInterval);
_elevationCur = Round(_elevationCur / _clickInterval);
_windageCur = Round(_windageCur / _clickInterval);
};
@ -166,4 +166,4 @@ if (GVAR(showWind2)) then {
} else {
ctrlSetText [420, "0.0"];
};
};
};

View File

@ -33,4 +33,4 @@ _closeCode = {
closeDialog 0;
};
};
[(localize LSTRING(Name)), QUOTE(PATHTOF(UI\ATRAG_Icon.paa)), _conditonCode, _toggleCode, _closeCode] call EFUNC(common,deviceKeyRegisterNew);
[(localize LSTRING(Name)), QPATHTOF(UI\ATRAG_Icon.paa), _conditonCode, _toggleCode, _closeCode] call EFUNC(common,deviceKeyRegisterNew);

View File

@ -1,4 +1,5 @@
#define COMPONENT atragmx
#define COMPONENT_BEAUTIFIED ATragMX
#include "\z\ace\addons\main\script_mod.hpp"
// #define DEBUG_MODE_FULL

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<Project name="ACE">
<Package name="ATragMX">
<Key ID="STR_ACE_ATragMX_Name">
@ -18,7 +18,7 @@
<Polish>Otwórz ATragMX</Polish>
<Russian>Открыть ATragMX</Russian>
<Spanish>Abrir ATragMX</Spanish>
<French>Ouvrir ATragMX</French>
<French>Ouvrir l'ATragMX</French>
<German>ATragMX öffnen</German>
<Italian>Apri ATragMX</Italian>
<Hungarian>ATragMX elővétele</Hungarian>
@ -42,7 +42,7 @@
<Polish>Otwórz ATragMX</Polish>
<Russian>Открыть ATragMX</Russian>
<Spanish>Abrir ATragMX</Spanish>
<French>Ouvrir ATragMX</French>
<French>Ouvrir l'ATragMX</French>
<German>ATragMX öffnen</German>
<Italian>Apri ATragMX</Italian>
<Hungarian>ATragMX elővétele</Hungarian>
@ -50,4 +50,4 @@
<Portuguese>Abrir ATragMX</Portuguese>
</Key>
</Package>
</Project>
</Project>

View File

@ -3,17 +3,17 @@ class CfgMagazines {
class CA_Magazine;
class B_IR_Grenade: CA_Magazine {
ACE_Attachable = "B_IRStrobe";
model = QUOTE(PATHTOF(data\ace_IRStrobe.p3d));
model = QPATHTOF(data\ace_IRStrobe.p3d);
};
class O_IR_Grenade: B_IR_Grenade {
ACE_Attachable = "O_IRStrobe";
model = QUOTE(PATHTOF(data\ace_IRStrobe.p3d));
model = QPATHTOF(data\ace_IRStrobe.p3d);
};
class I_IR_Grenade: B_IR_Grenade {
ACE_Attachable = "I_IRStrobe";
model = QUOTE(PATHTOF(data\ace_IRStrobe.p3d));
model = QPATHTOF(data\ace_IRStrobe.p3d);
};
class SmokeShell;

View File

@ -9,7 +9,7 @@
exceptions[] = {}; \
showDisabled = 0; \
priority = 0; \
icon = PATHTOF(UI\attach_ca.paa); \
icon = QPATHTOF(UI\attach_ca.paa); \
distance = 4.5; \
}; \
class GVAR(DetachVehicle) { \
@ -19,7 +19,7 @@
exceptions[] = {}; \
showDisabled = 0; \
priority = 0.1; \
icon = PATHTOF(UI\detach_ca.paa); \
icon = QPATHTOF(UI\detach_ca.paa); \
distance = 4.5; \
}; \
}; \
@ -60,7 +60,7 @@ class CfgVehicles {
exceptions[] = {"isNotDragging"};
showDisabled = 0;
priority = 5;
icon = PATHTOF(UI\attach_ca.paa);
icon = QPATHTOF(UI\attach_ca.paa);
};
class GVAR(Detach) {
displayName = CSTRING(Detach);
@ -69,7 +69,7 @@ class CfgVehicles {
exceptions[] = {"isNotDragging"};
showDisabled = 0;
priority = 5;
icon = PATHTOF(UI\detach_ca.paa);
icon = QPATHTOF(UI\detach_ca.paa);
};
};
};

View File

@ -8,8 +8,8 @@ class CfgWeapons {
scope = 2;
displayName = CSTRING(IrStrobe_Name);
descriptionShort = CSTRING(IrStrobe_Description);
model = QUOTE(PATHTOF(data\ace_IRStrobe.p3d));
picture = PATHTOF(UI\irstrobe_item.paa);
model = QPATHTOF(data\ace_IRStrobe.p3d);
picture = QPATHTOF(UI\irstrobe_item.paa);
class ItemInfo: InventoryItem_Base_F {
mass = 1;

View File

@ -3,4 +3,4 @@
if (!hasInterface) exitWith {};
//If attach placing, stop when opening menu:
["interactMenuOpened", {GVAR(placeAction) = 0;}] call EFUNC(common,addEventHandler);
["ace_interactMenuOpened", {GVAR(placeAction) = 0;}] call CBA_fnc_addEventHandler;

View File

@ -2,12 +2,14 @@
class CfgPatches {
class ADDON {
name = COMPONENT_NAME;
units[] = {};
weapons[] = {"ACE_IR_Strobe_Item"};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_interaction"};
author[] = {"KoffeinFlummi","eRazeri","esteldunedain"};
authorUrl = "https://github.com/KoffeinFlummi/";
author = ECSTRING(common,ACETeam);
authors[] = {"KoffeinFlummi","eRazeri","esteldunedain"};
url = ECSTRING(main,URL);
VERSION_CONFIG;
};
};
@ -17,3 +19,7 @@ class CfgPatches {
#include "CfgVehicles.hpp"
#include "CfgWeapons.hpp"
#include "GUI_VirtualAmmo.hpp"
class ACE_newEvents {
interactMenuOpened = "ace_interactMenuOpened";
};

View File

@ -40,7 +40,7 @@ _onAtachText = format [localize LSTRING(Item_Attached), _onAtachText];
if (_unit == _attachToVehicle) then { //Self Attachment
_attachedItem = _itemVehClass createVehicle [0,0,0];
_attachedItem attachTo [_unit, [-0.05, 0, 0.12], "rightshoulder"];
_attachedItem attachTo [_unit, [0.05, -0.09, 0.1], "leftshoulder"];
if (!_silentScripted) then {
_unit removeItem _itemClassname; // Remove item
[_onAtachText] call EFUNC(common,displayTextStructured);
@ -51,7 +51,7 @@ if (_unit == _attachToVehicle) then { //Self Attachment
[_unit, "forceWalk", "ACE_Attach", true] call EFUNC(common,statusEffect_set);
[{[localize LSTRING(PlaceAction), ""] call EFUNC(interaction,showMouseHint)}, []] call EFUNC(common,execNextFrame);
[{[localize LSTRING(PlaceAction), ""] call EFUNC(interaction,showMouseHint)}, []] call CBA_fnc_execNextFrame;
_unit setVariable [QGVAR(placeActionEH), [_unit, "DefaultAction", {true}, {GVAR(placeAction) = PLACE_APPROVE;}] call EFUNC(common,AddActionEventHandler)];
_actionID = _unit addAction [format ["<t color='#FF0000'>%1</t>", localize LSTRING(CancelAction)], {GVAR(placeAction) = PLACE_CANCEL}];

View File

@ -19,7 +19,7 @@
params ["_attachToVehicle","_unit"],
TRACE_2("params",_attachToVehicle,_unit);
private ["_attachedList", "_itemDisplayName", "_attachedObject", "_attachedIndex", "_itemName", "_minDistance"];
private ["_attachedList", "_itemDisplayName", "_attachedObject", "_attachedIndex", "_itemName", "_minDistance", "_isChemlight"];
_attachedList = _attachToVehicle getVariable [QGVAR(attached), []];
@ -44,22 +44,28 @@ _minDistance = 1000;
// Check if unit has an attached item
if (isNull _attachedObject || {_itemName == ""}) exitWith {ERROR("Could not find attached object")};
// Check if item is a chemlight
_isChemlight = _attachedObject isKindOf "Chemlight_base";
// Exit if can't add the item
if !(_unit canAdd _itemName) exitWith {
if (!(_unit canAdd _itemName) && {!_isChemlight}) exitWith {
[localize LSTRING(Inventory_Full)] call EFUNC(common,displayTextStructured);
};
// Add item to inventory
_unit addItem _itemName;
// Add item to inventory (unless it's a chemlight)
if (!_isChemlight) then {
_unit addItem _itemName;
};
if (toLower _itemName in ["b_ir_grenade", "o_ir_grenade", "i_ir_grenade"]) then {
// Hack for dealing with X_IR_Grenade effect not dissapearing on deleteVehicle
detach _attachedObject;
_attachedObject setPos ((getPos _unit) vectorAdd [0, 0, -1000]);
// Delete attached item after 0.5 seconds
[{deleteVehicle (_this select 0)}, [_attachedObject], 2] call EFUNC(common,waitAndExecute);
[{deleteVehicle (_this select 0)}, [_attachedObject], 2] call CBA_fnc_waitAndExecute;
} else {
// Delete attached item
detach _attachedObject;
deleteVehicle _attachedObject;
};

View File

@ -3,11 +3,11 @@
* Show the ammo counts for a static weapon.
* Called from "insertChildren" on interact_menu
*
* Argument:
* Arguments:
* 0: Target <OBJECT>
* 1: Player <OBJECT>
*
* Return value:
* Return Value:
* ChildActiosn<ARRAY>
*
* Example:
@ -31,7 +31,7 @@ _actions = [];
if (getText (_item >> "ACE_Attachable") != "") then {
_displayName = getText(_item >> "displayName");
_picture = getText(_item >> "picture");
_action = [_x, _displayName, _picture, {[{_this call FUNC(attach)}, _this] call EFUNC(common,execNextFrame)}, {_this call FUNC(canAttach)}, {}, [_x]] call EFUNC(interact_menu,createAction);
_action = [_x, _displayName, _picture, {[{_this call FUNC(attach)}, _this] call CBA_fnc_execNextFrame}, {_this call FUNC(canAttach)}, {}, [_x]] call EFUNC(interact_menu,createAction);
_actions pushBack [_action, [], _target];
};
};
@ -44,7 +44,7 @@ _actions = [];
if (getText (_item >> "ACE_Attachable") != "") then {
_displayName = getText(_item >> "displayName");
_picture = getText(_item >> "picture");
_action = [_x, _displayName, _picture, {[{_this call FUNC(attach)}, _this] call EFUNC(common,execNextFrame)}, {_this call FUNC(canAttach)}, {}, [_x]] call EFUNC(interact_menu,createAction);
_action = [_x, _displayName, _picture, {[{_this call FUNC(attach)}, _this] call CBA_fnc_execNextFrame}, {_this call FUNC(canAttach)}, {}, [_x]] call EFUNC(interact_menu,createAction);
_actions pushBack [_action, [], _target];
};
};

View File

@ -36,7 +36,7 @@ if (!isNull _xObject) then {
params ["_detachedLight"];
TRACE_1("delayed delete",_detachedLight);
deleteVehicle _detachedLight;
}, [_xObject], 2] call EFUNC(common,waitAndExecute);
}, [_xObject], 2] call CBA_fnc_waitAndExecute;
(_attachedList select 0) set [0, objNull];
};

View File

@ -32,7 +32,7 @@ if ((count _attachedList) == 0) exitWith {};
//If it's a vehicle, also delete the attached
if (!(_deadUnit isKindOf "CAManBase")) then {
_xObject setPos ((getPos _deadUnit) vectorAdd [0, 0, -1000]);
[{deleteVehicle (_this select 0)}, [_xObject], 2] call EFUNC(common,waitAndExecute);
[{deleteVehicle (_this select 0)}, [_xObject], 2] call CBA_fnc_waitAndExecute;
};
} forEach _attachedList;

View File

@ -1,4 +1,5 @@
#define COMPONENT attach
#define COMPONENT_BEAUTIFIED Attach
#include "\z\ace\addons\main\script_mod.hpp"
// #define DEBUG_MODE_FULL

View File

@ -1,3 +1,3 @@
#include "script_component.hpp"
["backpackOpened", {_this call FUNC(backpackOpened)}] call EFUNC(common,addEventHandler);
["ace_backpackOpened", {_this call FUNC(backpackOpened)}] call CBA_fnc_addEventHandler;

View File

@ -2,14 +2,20 @@
class CfgPatches {
class ADDON {
name = COMPONENT_NAME;
units[] = {};
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_common"};
author[] = {"bux","commy2"};
authorUrl = "https://github.com/commy2/";
author = ECSTRING(common,ACETeam);
authors[] = {"bux","commy2"};
url = ECSTRING(main,URL);
VERSION_CONFIG;
};
};
#include "CfgEventHandlers.hpp"
class ACE_newEvents {
backpackOpened = "ace_backpackOpened";
};

View File

@ -24,7 +24,7 @@ private _target = objectParent _backpack;
if (isNull _target) exitWith {false};
// raise event on target unit
["backpackOpened", _target, [_target, _backpack]] call EFUNC(common,targetEvent);
["ace_backpackOpened", [_target, _backpack], _target] call CBA_fnc_targetEvent;
// return false to open inventory as usual
false

View File

@ -1,4 +1,5 @@
#define COMPONENT backpacks
#define COMPONENT_BEAUTIFIED Backpacks
#include "\z\ace\addons\main\script_mod.hpp"
// #define DEBUG_MODE_FULL
@ -14,4 +15,4 @@
#define DEBUG_SETTINGS DEBUG_ENABLED_BACKPACKS
#endif
#include "\z\ace\addons\main\script_macros.hpp"
#include "\z\ace\addons\main\script_macros.hpp"

File diff suppressed because it is too large Load Diff

View File

@ -83,7 +83,7 @@ class CfgMagazines {
descriptionShort = CSTRING(30Rnd_556x45_mag_Tracer_DimDescription);
picture = "\A3\weapons_f\data\ui\m_20stanag_red_ca.paa";
};
class 20Rnd_762x51_Mag: CA_Magazine {
initSpeed = 833;
};
@ -121,7 +121,7 @@ class CfgMagazines {
descriptionShort = CSTRING(20Rnd_762x51_mag_SDDescription);
initSpeed = 325;
};
class ACE_10Rnd_762x51_M118LR_Mag: 10Rnd_762x51_Mag {
author = ECSTRING(common,ACETeam);
ammo = "ACE_762x51_Ball_M118LR";
@ -247,7 +247,7 @@ class CfgMagazines {
descriptionShort = CSTRING(10Rnd_338_API526_Mag_Description);
initSpeed = 880;
};
class 5Rnd_127x108_Mag;
class ACE_5Rnd_127x99_Mag: 5Rnd_127x108_Mag {
author = ECSTRING(common,ACETeam);
@ -273,8 +273,8 @@ class CfgMagazines {
descriptionShort = CSTRING(5Rnd_127x99_AMAX_Mag_Description);
initSpeed = 860;
};
class 30Rnd_9x21_Mag: CA_Magazine {
initSpeed = 450;
};
@ -286,27 +286,27 @@ class CfgMagazines {
descriptionShort = CSTRING(30Rnd_9x19_mag_Description);
initSpeed = 370;
};
class 11Rnd_45ACP_Mag: CA_Magazine {
initSpeed = 250;
};
class 6Rnd_45ACP_Cylinder : 11Rnd_45ACP_Mag {
initSpeed = 250;
};
class 30Rnd_45ACP_Mag_SMG_01: 30Rnd_9x21_Mag {
initSpeed = 250;
};
class 9Rnd_45ACP_Mag: 30Rnd_45ACP_Mag_SMG_01 {
initSpeed = 250;
};
class 30Rnd_45ACP_Mag_SMG_01_Tracer_Green: 30Rnd_45ACP_Mag_SMG_01 {
initSpeed = 250;
};
class 16Rnd_9x21_Mag: 30Rnd_9x21_Mag {
initSpeed = 450;
};
@ -318,7 +318,7 @@ class CfgMagazines {
descriptionShort = CSTRING(16Rnd_9x19_mag_Description);
initSpeed = 370;
};
class 10Rnd_762x54_Mag: 10Rnd_762x51_Mag {
initSpeed = 800;
};
@ -331,15 +331,15 @@ class CfgMagazines {
initSpeed = 800;
tracersEvery = 1;
};
class 150Rnd_762x54_Box: 150Rnd_762x51_Box {
initSpeed = 750;
};
class 150Rnd_93x64_Mag: CA_Magazine {
initSpeed = 860;
};
class 10Rnd_127x54_Mag: CA_Magazine {
initSpeed = 300;
};

View File

@ -15,81 +15,81 @@ class CfgWeapons {
class Rifle_Base_F;
class Rifle_Long_Base_F;
class MuzzleSlot;
/* Long Rifles */
class GM6_base_F: Rifle_Long_Base_F {
class Single: Mode_SemiAuto {
dispersion = 0.00029; // radians. Equal to 1.00 MOA.
};
};
class LRR_base_F: Rifle_Long_Base_F {
class Single: Mode_SemiAuto {
dispersion = 0.00020; // radians. Equal to 0.70 MOA.
};
};
class DMR_06_base_F: Rifle_Long_Base_F {
class Single: Mode_SemiAuto {
dispersion = 0.00029; // radians. Equal to 1.00 MOA.
};
class FullAuto: Mode_FullAuto {
dispersion = 0.00029; // radians. Equal to 1.00 MOA.
};
};
class DMR_05_base_F: Rifle_Long_Base_F {
class Single: Mode_SemiAuto {
dispersion = 0.00029; // radians. Equal to 1.00 MOA.
};
class FullAuto: Mode_FullAuto {
dispersion = 0.00029; // radians. Equal to 1.00 MOA.
};
};
class DMR_04_base_F: Rifle_Long_Base_F {
class Single: Mode_SemiAuto {
dispersion = 0.00029; // radians. Equal to 1.00 MOA.
};
};
class DMR_03_base_F: Rifle_Long_Base_F {
class Single: Mode_SemiAuto {
dispersion = 0.00032; // radians. Equal to 1.10 MOA.
};
class FullAuto: Mode_FullAuto {
dispersion = 0.00032; // radians. Equal to 1.10 MOA.
};
};
class DMR_02_base_F: Rifle_Long_Base_F {
class Single: Mode_SemiAuto {
dispersion = 0.000262; // radians. Equal to 0.90 MOA.
};
};
class DMR_01_base_F: Rifle_Long_Base_F {
class Single: Mode_SemiAuto {
dispersion = 0.0004; // radians. Equal to 1.375 MOA.
};
};
class EBR_base_F: Rifle_Long_Base_F {
class Single: Mode_SemiAuto {
dispersion = 0.00029; // radians. Equal to 1.00 MOA.
};
class FullAuto: Mode_FullAuto {
dispersion = 0.00029; // radians. Equal to 1.00 MOA.
};
};
/* MX */
class arifle_MX_Base_F: Rifle_Base_F {};
class arifle_MX_SW_F: arifle_MX_Base_F {
magazines[] = {
@ -158,7 +158,7 @@ class CfgWeapons {
class Burst: Mode_Burst {
dispersion = 0.0008727; // radians. Equal to 3 MOA.
};
class FullAuto: Mode_FullAuto {
dispersion = 0.0008727; // radians. Equal to 3 MOA.
};
@ -285,6 +285,8 @@ class CfgWeapons {
"30Rnd_556x45_Stanag_Tracer_Red",
"30Rnd_556x45_Stanag_Tracer_Green",
"30Rnd_556x45_Stanag_Tracer_Yellow",
"30Rnd_556x45_Stanag_red",
"30Rnd_556x45_Stanag_green",
"ACE_30Rnd_556x45_Stanag_M995_AP_mag",
"ACE_30Rnd_556x45_Stanag_Mk262_mag",
"ACE_30Rnd_556x45_Stanag_Mk318_mag",
@ -305,6 +307,8 @@ class CfgWeapons {
"30Rnd_556x45_Stanag_Tracer_Red",
"30Rnd_556x45_Stanag_Tracer_Green",
"30Rnd_556x45_Stanag_Tracer_Yellow",
"30Rnd_556x45_Stanag_red",
"30Rnd_556x45_Stanag_green",
"ACE_30Rnd_556x45_Stanag_M995_AP_mag",
"ACE_30Rnd_556x45_Stanag_Mk262_mag",
"ACE_30Rnd_556x45_Stanag_Mk318_mag",
@ -320,6 +324,8 @@ class CfgWeapons {
"30Rnd_556x45_Stanag_Tracer_Red",
"30Rnd_556x45_Stanag_Tracer_Green",
"30Rnd_556x45_Stanag_Tracer_Yellow",
"30Rnd_556x45_Stanag_red",
"30Rnd_556x45_Stanag_green",
"ACE_30Rnd_556x45_Stanag_M995_AP_mag",
"ACE_30Rnd_556x45_Stanag_Mk262_mag",
"ACE_30Rnd_556x45_Stanag_Mk318_mag",
@ -335,6 +341,8 @@ class CfgWeapons {
"30Rnd_556x45_Stanag_Tracer_Red",
"30Rnd_556x45_Stanag_Tracer_Green",
"30Rnd_556x45_Stanag_Tracer_Yellow",
"30Rnd_556x45_Stanag_red",
"30Rnd_556x45_Stanag_green",
"ACE_30Rnd_556x45_Stanag_M995_AP_mag",
"ACE_30Rnd_556x45_Stanag_Mk262_mag",
"ACE_30Rnd_556x45_Stanag_Mk318_mag",
@ -356,6 +364,8 @@ class CfgWeapons {
"30Rnd_556x45_Stanag_Tracer_Red",
"30Rnd_556x45_Stanag_Tracer_Green",
"30Rnd_556x45_Stanag_Tracer_Yellow",
"30Rnd_556x45_Stanag_red",
"30Rnd_556x45_Stanag_green",
"ACE_30Rnd_556x45_Stanag_M995_AP_mag",
"ACE_30Rnd_556x45_Stanag_Mk262_mag",
"ACE_30Rnd_556x45_Stanag_Mk318_mag",
@ -371,6 +381,8 @@ class CfgWeapons {
"30Rnd_556x45_Stanag_Tracer_Red",
"30Rnd_556x45_Stanag_Tracer_Green",
"30Rnd_556x45_Stanag_Tracer_Yellow",
"30Rnd_556x45_Stanag_red",
"30Rnd_556x45_Stanag_green",
"ACE_30Rnd_556x45_Stanag_M995_AP_mag",
"ACE_30Rnd_556x45_Stanag_Mk262_mag",
"ACE_30Rnd_556x45_Stanag_Mk318_mag",
@ -386,6 +398,8 @@ class CfgWeapons {
"30Rnd_556x45_Stanag_Tracer_Red",
"30Rnd_556x45_Stanag_Tracer_Green",
"30Rnd_556x45_Stanag_Tracer_Yellow",
"30Rnd_556x45_Stanag_red",
"30Rnd_556x45_Stanag_green",
"ACE_30Rnd_556x45_Stanag_M995_AP_mag",
"ACE_30Rnd_556x45_Stanag_Mk262_mag",
"ACE_30Rnd_556x45_Stanag_Mk318_mag",
@ -511,7 +525,7 @@ class CfgWeapons {
ACE_barrelTwist=234.95;
ACE_barrelLength=609.6;
};
class HMG_127 : LMG_RCWS {
};
class HMG_01: HMG_127 {
@ -521,7 +535,7 @@ class CfgWeapons {
ACE_barrelTwist=304.8;
ACE_barrelLength=1143.0;
};
/* Silencers */
class ItemCore;

View File

@ -2,11 +2,14 @@
class CfgPatches {
class ADDON {
name = COMPONENT_NAME;
units[] = {"ACE_TargetWall","ACE_Box_Ammo"};
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_common"};
author[] = {"commy2","Ruthberg"};
author = ECSTRING(common,ACETeam);
authors[] = {"commy2","Ruthberg"};
url = ECSTRING(main,URL);
VERSION_CONFIG;
};
};

View File

@ -1,4 +1,5 @@
#define COMPONENT ballistics
#define COMPONENT_BEAUTIFIED Ballistics
#include "\z\ace\addons\main\script_mod.hpp"
// #define DEBUG_MODE_FULL
@ -14,4 +15,4 @@
#define DEBUG_SETTINGS DEBUG_SETTINGS_BALLISTICS
#endif
#include "\z\ace\addons\main\script_macros.hpp"
#include "\z\ace\addons\main\script_macros.hpp"

View File

@ -11,5 +11,5 @@ if (local _wall) then {
_paper attachTo [_wall, [0,-0.02,0.6]];
_paper setDir getDir _wall;
_paper setObjectTextureGlobal [0, QUOTE(PATHTOF(textures\target_ca.paa))];
_paper setObjectTextureGlobal [0, QPATHTOF(textures\target_ca.paa)];
};

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<Project name="ACE">
<Package name="Ballistics">
<!-- MX -->

View File

@ -55,3 +55,11 @@ class Extended_Respawn_EventHandlers {
};
};
};
class Extended_Local_EventHandlers {
class CAManBase {
class ADDON {
local = QUOTE(call FUNC(handleLocal));
};
};
};

View File

@ -10,7 +10,7 @@ class CfgVehicles {
condition = QUOTE([ARR_2(_player, _target)] call FUNC(canApplyHandcuffs));
statement = QUOTE([ARR_2(_player, _target)] call FUNC(doApplyHandcuffs));
exceptions[] = {};
icon = QUOTE(PATHTOF(UI\handcuff_ca.paa));
icon = QPATHTOF(UI\handcuff_ca.paa);
};
class ACE_MainActions {
@ -21,7 +21,7 @@ class CfgVehicles {
condition = QUOTE([ARR_2(_player, _target)] call FUNC(canRemoveHandcuffs));
statement = QUOTE([ARR_2(_player, _target)] call FUNC(doRemoveHandcuffs));
exceptions[] = {};
icon = QUOTE(PATHTOF(UI\handcuff_ca.paa));
icon = QPATHTOF(UI\handcuff_ca.paa);
};
class ACE_EscortCaptive {
displayName = CSTRING(EscortCaptive);
@ -30,7 +30,7 @@ class CfgVehicles {
statement = QUOTE([ARR_3(_player, _target, true)] call FUNC(doEscortCaptive));
exceptions[] = {};
showDisabled = 0;
icon = QUOTE(PATHTOF(UI\captive_ca.paa));
icon = QPATHTOF(UI\captive_ca.paa);
priority = 2.3;
};
class ACE_StopEscorting {
@ -40,7 +40,7 @@ class CfgVehicles {
statement = QUOTE([ARR_3(_player,_target, false)] call FUNC(doEscortCaptive));
exceptions[] = {"isNotEscorting"};
showDisabled = 0;
icon = QUOTE(PATHTOF(UI\captive_ca.paa));
icon = QPATHTOF(UI\captive_ca.paa);
priority = 2.3;
};
class ACE_LoadCaptive {
@ -50,7 +50,7 @@ class CfgVehicles {
statement = QUOTE([ARR_3(_player, _target, objNull)] call FUNC(doLoadCaptive));
exceptions[] = {"isNotEscorting"};
showDisabled = 0;
icon = QUOTE(PATHTOF(UI\captive_ca.paa));
icon = QPATHTOF(UI\captive_ca.paa);
priority = 2.2;
};
class GVAR(UnloadCaptive) {
@ -79,7 +79,7 @@ class CfgVehicles {
exceptions[] = {};
showDisabled = 0;
priority = 0;
icon = QUOTE(PATHTOF(UI\Surrender_ca.paa));
icon = QPATHTOF(UI\Surrender_ca.paa);
};
class ACE_StopSurrenderingSelf {
displayName = CSTRING(StopSurrendering);
@ -88,7 +88,7 @@ class CfgVehicles {
exceptions[] = {"isNotSurrendering"};
showDisabled = 0;
priority = 0;
icon = QUOTE(PATHTOF(UI\Surrender_ca.paa));
icon = QPATHTOF(UI\Surrender_ca.paa);
};
};
};
@ -154,7 +154,7 @@ class CfgVehicles {
scope = 2; //show in editor
isGlobal = 0; //run on server
isTriggerActivated = 1; //Wait for triggers
icon = QUOTE(PATHTOF(UI\Icon_Module_Make_Unit_Surrender_ca.paa));
icon = QPATHTOF(UI\Icon_Module_Make_Unit_Surrender_ca.paa);
functionPriority = 0;
class Arguments {};
class ModuleDescription: ModuleDescription {
@ -170,7 +170,7 @@ class CfgVehicles {
scope = 2; //show in editor
isGlobal = 0; //run on server
isTriggerActivated = 1; //Wait for triggers
icon = QUOTE(PATHTOF(UI\Icon_Module_Make_Unit_Handcuffed_ca.paa));
icon = QPATHTOF(UI\Icon_Module_Make_Unit_Handcuffed_ca.paa);
functionPriority = 0;
class Arguments {};
class ModuleDescription: ModuleDescription {
@ -186,7 +186,7 @@ class CfgVehicles {
displayName = CSTRING(ModuleSettings_DisplayName);
function = QFUNC(moduleSettings);
scope = 2;
icon = QUOTE(PATHTOF(UI\Icon_Module_settings_ca.paa));
icon = QPATHTOF(UI\Icon_Module_settings_ca.paa);
isGlobal = 1;
isSingular = 1;
class Arguments {

View File

@ -5,8 +5,8 @@ class CfgWeapons {
class ACE_CableTie: ACE_ItemCore {
displayName = CSTRING(CableTie);
descriptionShort = CSTRING(CableTieDescription);
model = QUOTE(PATHTOF(models\ace_cabletie.p3d));
picture = QUOTE(PATHTOF(UI\ace_cabletie_ca.paa));
model = QPATHTOF(models\ace_cabletie.p3d);
picture = QPATHTOF(UI\ace_cabletie_ca.paa);
scope = 2;
class ItemInfo: InventoryItem_Base_F {
mass = 1;

View File

@ -14,8 +14,11 @@ PREP(doLoadCaptive);
PREP(doRemoveHandcuffs);
PREP(doUnloadCaptive);
PREP(findEmptyNonFFVCargoSeat);
PREP(handleAnimChangedHandcuffed);
PREP(handleAnimChangedSurrendered);
PREP(handleGetIn);
PREP(handleGetOut);
PREP(handleLocal);
PREP(handleOnUnconscious);
PREP(handlePlayerChanged);
PREP(handleRespawn);

View File

@ -1,11 +1,11 @@
#include "script_component.hpp"
["SettingsInitialized", {
["ace_settingsInitialized", {
// Hold on a little bit longer to ensure anims will work
[{
GVAR(captivityEnabled) = true;
}, [], 0.05] call EFUNC(common,waitAndExecute);
}] call EFUNC(common,addEventHandler);
}, [], 0.05] call CBA_fnc_waitAndExecute;
}] call CBA_fnc_addEventHandler;
//Handles when someone starts escorting and then disconnects, leaving the captive attached
//This is normaly handled by the PFEH in doEscortCaptive, but that won't be running if they DC
@ -24,15 +24,15 @@ if (isServer) then {
}];
};
["playerChanged", {_this call FUNC(handlePlayerChanged)}] call EFUNC(common,addEventhandler);
["MoveInCaptive", {_this call FUNC(vehicleCaptiveMoveIn)}] call EFUNC(common,addEventHandler);
["MoveOutCaptive", {_this call FUNC(vehicleCaptiveMoveOut)}] call EFUNC(common,addEventHandler);
["ace_playerChanged", {_this call FUNC(handlePlayerChanged)}] call CBA_fnc_addEventHandler;
[QGVAR(moveInCaptive), {_this call FUNC(vehicleCaptiveMoveIn)}] call CBA_fnc_addEventHandler;
[QGVAR(moveOutCaptive), {_this call FUNC(vehicleCaptiveMoveOut)}] call CBA_fnc_addEventHandler;
["SetHandcuffed", {_this call FUNC(setHandcuffed)}] call EFUNC(common,addEventHandler);
["SetSurrendered", {_this call FUNC(setSurrendered)}] call EFUNC(common,addEventHandler);
[QGVAR(setHandcuffed), {_this call FUNC(setHandcuffed)}] call CBA_fnc_addEventHandler;
[QGVAR(setSurrendered), {_this call FUNC(setSurrendered)}] call CBA_fnc_addEventHandler;
//Medical Integration Events
["medical_onUnconscious", {_this call ACE_Captives_fnc_handleOnUnconscious}] call EFUNC(common,addEventHandler);
["ace_unconscious", {_this call ACE_Captives_fnc_handleOnUnconscious}] call CBA_fnc_addEventHandler;
if (!hasInterface) exitWith {};

View File

@ -2,12 +2,14 @@
class CfgPatches {
class ADDON {
name = COMPONENT_NAME;
units[] = {QGVAR(ModuleSettings), QGVAR(ModuleSurrender), QGVAR(ModuleHandcuffed)};
weapons[] = {"ACE_CableTie"};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ACE_Interaction"};
author[] = {"commy2", "KoffeinFlummi"};
authorUrl = "https://github.com/commy2/";
author = ECSTRING(common,ACETeam);
authors[] = {"commy2", "KoffeinFlummi"};
url = ECSTRING(main,URL);
VERSION_CONFIG;
};
};
@ -17,4 +19,12 @@ class CfgPatches {
#include "CfgMoves.hpp"
#include "CfgVehicles.hpp"
#include "CfgWeapons.hpp"
#include "CfgEden.hpp"
#include "CfgEden.hpp"
class ACE_newEvents {
SetSurrendered = QGVAR(setSurrendered);
SetHandcuffed = QGVAR(setHandcuffed);
MoveOutCaptive = QGVAR(moveOutCaptive);
MoveInCaptive = QGVAR(moveInCaptive);
CaptiveStatusChanged = "ace_captiveStatusChanged";
};

View File

@ -21,6 +21,6 @@ params ["_unit", "_target"];
playSound3D [QUOTE(PATHTO_R(sounds\cable_tie_zipping.ogg)), objNull, false, (getPosASL _target), 1, 1, 10];
["SetHandcuffed", [_target], [_target, true]] call EFUNC(common,targetEvent);
[QGVAR(setHandcuffed), [_target, true], [_target]] call CBA_fnc_targetEvent;
_unit removeItem "ACE_CableTie";

View File

@ -37,7 +37,7 @@ if (_state) then {
[{
params ["_args", "_pfID"];
_args params ["_unit", "_target", "_actionID"];
if (_unit getVariable [QGVAR(isEscorting), false]) then {
if (!alive _target || {!alive _unit} || {!canStand _target} || {!canStand _unit} || {_target getVariable ["ACE_isUnconscious", false]} || {_unit getVariable ["ACE_isUnconscious", false]} || {!isNull (attachedTo _unit)}) then {
_unit setVariable [QGVAR(isEscorting), false, true];

View File

@ -47,4 +47,4 @@ if (isNull _vehicle) then {
if (isNull _vehicle) exitWith {ERROR("");};
_unit setVariable [QGVAR(isEscorting), false, true];
["MoveInCaptive", [_target], [_target, _vehicle]] call EFUNC(common,targetEvent);
[QGVAR(moveInCaptive), [_target, _vehicle], [_target]] call CBA_fnc_targetEvent;

View File

@ -17,4 +17,4 @@
params ["_unit", "_target"];
["SetHandcuffed", [_target], [_target, false]] call EFUNC(common,targetEvent);
[QGVAR(setHandcuffed), [_target, false], [_target]] call CBA_fnc_targetEvent;

View File

@ -18,4 +18,4 @@
params ["_unit", "_target"];
["MoveOutCaptive", [_target], [_target]] call EFUNC(common,targetEvent);
[QGVAR(moveOutCaptive), [_target], [_target]] call CBA_fnc_targetEvent;

View File

@ -0,0 +1,37 @@
/*
* Author: Nic547, commy2
* Restart the handcuffing animation if it got interrupted. Called from a AnimChanged EH.
*
* Arguments:
* 0: The Unit <OBJECT>
* 1: New animation <STRING>
*
* ReturnValue:
* None
*
* Public: No
*/
#include "script_component.hpp"
params ["_unit", "_newAnimation"];
TRACE_2("AnimChanged",_unit,_newAnimation);
if (_unit == (vehicle _unit)) then {
if ((_newAnimation != "ACE_AmovPercMstpSsurWnonDnon") && {!(_unit getVariable ["ACE_isUnconscious", false])}) then {
TRACE_1("Handcuff animation interrupted",_newAnimation);
[_unit, "ACE_AmovPercMstpScapWnonDnon", 1] call EFUNC(common,doAnimation);
};
} else {
_turretPath = [];
{
_x params ["_xUnit", "", "", "_xTurretPath"];
if (_unit == _xUnit) exitWith {_turretPath = _xTurretPath};
} forEach (fullCrew (vehicle _unit));
TRACE_1("turret Path",_turretPath);
if (_turretPath isEqualTo []) exitWith {};
TRACE_1("Handcuff (FFV) animation interrupted",_newAnimation);
[_unit, "ACE_HandcuffedFFV", 2] call EFUNC(common,doAnimation);
[_unit, "ACE_HandcuffedFFV", 1] call EFUNC(common,doAnimation);
};

View File

@ -0,0 +1,24 @@
/*
* Author: Nic547, commy2
* Restart the surrendering animation if it got interrupted. Called from a AnimChanged EH.
*
* Arguments:
* 0: The Unit <OBJECT>
* 1: New animation <STRING>
*
* ReturnValue:
* None
*
* Public: No
*/
#include "script_component.hpp"
params ["_unit", "_newAnimation"];
TRACE_2("AnimChanged",_unit,_newAnimation);
if ((_newAnimation != "ACE_AmovPercMstpSsurWnonDnon") && {!(_unit getVariable ["ACE_isUnconscious", false])}) then {
TRACE_1("Surrender animation interrupted",_newAnimation);
[_unit, "ACE_AmovPercMstpSsurWnonDnon", 1] call EFUNC(common,doAnimation);
};

View File

@ -0,0 +1,63 @@
/*
* Author: esteldunedain
* Called when a unit switched locality
*
* Arguments:
* 0: The Unit <OBJECT>
* 1: Is local <BOOL>
*
* ReturnValue:
* None
*
* Public: No
*/
#include "script_component.hpp"
params ["_unit", "_local"];
// Make sure that if the unit is captive or surrendered it has a AnimChanged EH running ONLY on the machine that owns it
if (_local) then {
// If the unit is handcuffed
if (_unit getVariable [QGVAR(isHandcuffed), false]) then {
// If the unit already has an AnimChanged EH here then there's nothing to do either
if (_unit getVariable [QGVAR(handcuffAnimEHID), -1] != -1) exitWith {};
// Otherwise, restart the AnimChanged EH in the new machine
private _animChangedEHID = _unit addEventHandler ["AnimChanged", DFUNC(handleAnimChangedHandcuffed)];
TRACE_2("Adding animChangedEH",_unit,_animChangedEHID);
_unit setVariable [QGVAR(handcuffAnimEHID), _animChangedEHID];
};
// If the unit is surrendering
if (_unit getVariable [QGVAR(isSurrendering), false]) then {
// If the unit already has an AnimChanged EH here then there's nothing to do either
if (_unit getVariable [QGVAR(surrenderAnimEHID), -1] != -1) exitWith {};
// Otherwise, restart the AnimChanged EH in the new machine
private _animChangedEHID = _unit addEventHandler ["AnimChanged", DFUNC(handleAnimChangedSurrendered)];
TRACE_2("Adding animChangedEH",_unit,_animChangedEHID);
_unit setVariable [QGVAR(surrenderAnimEHID), _animChangedEHID];
};
} else {
private _animChangedEHID = _unit getVariable [QGVAR(handcuffAnimEHID), -1];
if (_animChangedEHID != -1) then {
// If the unit had a AnimChanged EH for handcuffing in the old machine then remove it
TRACE_1("Removing animChanged EH",_animChangedEHID);
_unit removeEventHandler ["AnimChanged", _animChangedEHID];
_unit setVariable [QGVAR(handcuffAnimEHID), -1];
};
_animChangedEHID = _unit getVariable [QGVAR(surrenderAnimEHID), -1];
if (_animChangedEHID != -1) then {
// If the unit had a AnimChanged EH for handcuffing in the old machine then remove it
TRACE_1("Removing animChanged EH",_animChangedEHID);
_unit removeEventHandler ["AnimChanged", _animChangedEHID];
_unit setVariable [QGVAR(surrenderAnimEHID), -1];
};
};

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