Merge remote-tracking branch 'refs/remotes/origin/master' into vehicleInteractionDistance

This commit is contained in:
PabstMirror 2016-06-14 19:36:45 -05:00
commit d46c596cc4
2181 changed files with 103293 additions and 92389 deletions

View File

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

4
.gitattributes vendored Normal file
View File

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

29
.github/CONTRIBUTING.md vendored Normal file
View File

@ -0,0 +1,29 @@
# Reporting an issue
## Before reporting
If you have found an issue with ACE3 please make sure that ACE3 really is the cause of the problem. To do this try to reproduce the issue with using only `@CBA_A3` and `@ace` on a newly created mission.
Indicate if the issue appears on stable or development version. In case it is the development version, please also include the commit SHA-1 hash.
**Please note:**
- It's not a valid to simply remove <code>@ace</code> from the mod list to confirm that ACE3 is the culprit.
- If the error happens when using a <b>third-party mod</b> contact the author of the appropriate mod and report the issue there.
## Reporting the issue
Head over to the [ACE3 GitHub issue tracker](https://github.com/acemod/ACE3/issues) and press the [New issue](https://github.com/acemod/ACE3/issues/new) button in the top right corner. Add a descriptive title and complete the issue template.
A video of the issue might be helpful in resolving it faster.
# Feature Requests
## Background
ACE2, AGM and CSE had a lot of features implemented or planned. All of them are or have been evaluated for inclusion in ACE3 itself, and we'd like to port the majority of them eventually. However, due to time constraints, we have managed to finish only a fraction of the job so far.
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/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.

23
.github/ISSUE_TEMPLATE.md vendored Normal file
View File

@ -0,0 +1,23 @@
**Arma 3 Version:** `x.xx` (stable / rc / dev)
**CBA Version:** `2.x.x` (stable / dev + commit hash)
**ACE3 Version:** `3.x.x` (stable / dev + commit hash)
**Mods:**
- `@CBA_A3`
- `@ace`
**Description:**
- Add a detailed description of the error. This makes it easier for us to fix the issue.
**Steps to reproduce:**
- Add the steps needed to reproduce the issue.
**Where did the issue occur?**
- Dedicated / Self-Hosted Multiplayer / Singleplayer / Editor (Singleplayer) / Editor (Multiplayer) / Virtual Arsenal
**Placed Modules:**
- Add the list of modules you have placed on the map. Use 'None' if the error occurs without any modules.
**RPT log file:**
- Add a link ([gist](https://gist.github.com) or [pastebin](http://pastebin.com)) to the client and/or server RPT file. An instruction to find your RPT files can be found [here](https://community.bistudio.com/wiki/Crash_Files#Arma_3).
- If possible at the time the bug is encountered, go to ACE Options and select "Debug To Clipboard", this will print extensive debug information to the RPT file.

4
.github/PULL_REQUEST_TEMPLATE.md vendored Normal file
View File

@ -0,0 +1,4 @@
**When merged this pull request will:**
- Describe what this pull request will do
- Each change in a separate line
- Respect the [Development Guidelines](http://ace3mod.com/wiki/development/)

17
.gitignore vendored
View File

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

View File

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

View File

@ -14,7 +14,8 @@ Garth "L-H" de Wet <garthofhearts@gmail.com>
Giallustio Giallustio
Glowbal Glowbal
Janus Janus
jokoho482 <jokoho482@gmail.com>` jokoho482 <jokoho482@gmail.com>
Jonpas <jonpas33@gmail.com>
Kieran Kieran
NouberNou NouberNou
PabstMirror <pabstmirror@gmail.com> PabstMirror <pabstmirror@gmail.com>
@ -39,6 +40,7 @@ Alganthe <alganthe@live.fr>
Anthariel <Contact@storm-simulation.com> Anthariel <Contact@storm-simulation.com>
Arkhir <wonsz666@gmail.com > Arkhir <wonsz666@gmail.com >
Asgar Serran <piechottaf@web.de> Asgar Serran <piechottaf@web.de>
BaerMitUmlaut
Bamse <bamsis@gmail.com> Bamse <bamsis@gmail.com>
Bla1337 Bla1337
BlackPixxel <blackpixxel96@gmail.com> BlackPixxel <blackpixxel96@gmail.com>
@ -63,6 +65,7 @@ F3 Project <alanr@ferstaberinde.com>
Falke75 Falke75
Ferenczi Ferenczi
Ferenzi Ferenzi
FFAAMOD <modffaa@gmail.com>
Filip Basara <filip.basara93@googlemail.com> Filip Basara <filip.basara93@googlemail.com>
fr89k <kaschitoku@web.de> fr89k <kaschitoku@web.de>
FreeZbe <freeseb@gmail.com> FreeZbe <freeseb@gmail.com>
@ -72,19 +75,20 @@ Gianmarco Varriale (TeamNuke) <admin@forhost.org>
GieNkoV <gienkov.grzegorz@gmail.com> GieNkoV <gienkov.grzegorz@gmail.com>
GitHawk <githawk@gmx.net> GitHawk <githawk@gmx.net>
gpgpgpgp gpgpgpgp
Grey-Soldierman <gungamer101@hotmail.com>
Grzegorz Grzegorz
Hamburger SV Hamburger SV
Harakhti <shadowdragonphd@gmail.com> Harakhti <shadowdragonphd@gmail.com>
havena <silveredenis@gmail.com> havena <silveredenis@gmail.com>
Hawkins Hawkins
Head <brobergsebastian@gmail.com> Head <brobergsebastian@gmail.com>
Jonpas <jonpas33@gmail.com>
Karneck <dschultz26@hotmail.com> Karneck <dschultz26@hotmail.com>
Kavinsky <nmunozfernandez@gmail.com> Kavinsky <nmunozfernandez@gmail.com>
Kllrt <kllrtik@gmail.com> Kllrt <kllrtik@gmail.com>
legman <juicemelon@msn.com> legman <juicemelon@msn.com>
Legolasindar "Viper" <legolasindar@gmail.com> Legolasindar "Viper" <legolasindar@gmail.com>
licht-im-Norden87 <lichtimnorden87@gmail.com> licht-im-Norden87 <lichtimnorden87@gmail.com>
looter <looter222@gmail.com>
Macusercom <macusercom@gmail.com> Macusercom <macusercom@gmail.com>
MarcBook MarcBook
meat <p.humberdroz@gmail.com> meat <p.humberdroz@gmail.com>
@ -109,6 +113,7 @@ Sniperwolf572 <tenga6@gmail.com>
System98 System98
SzwedzikPL <szwedzikpl@gmail.com> SzwedzikPL <szwedzikpl@gmail.com>
Tachi <zaveruha007@gmail.com> Tachi <zaveruha007@gmail.com>
Tessa Elieff <Fastroping Sound - CreativeCommons Attributions 3.0>
Toaster <jonathan.pereira@gmail.com> Toaster <jonathan.pereira@gmail.com>
Tonic Tonic
Tourorist <tourorist@gmail.com> Tourorist <tourorist@gmail.com>
@ -117,4 +122,3 @@ voiper
VyMajoris(W-Cephei)<vycanismajoriscsa@gmail.com> VyMajoris(W-Cephei)<vycanismajoriscsa@gmail.com>
Winter <simon@agius-muscat.net> Winter <simon@agius-muscat.net>
zGuba zGuba
Grey-Soldierman <gungamer101@hotmail.com>

View File

@ -1,64 +0,0 @@
# Reporting an issue
## Before reporting
If you have found an issue with ACE3 please make sure that ACE3 is really the cause of the problem. To do this try to reproduce the issue with using only `@CBA_A3` and `@ace` on a newly created mission.
Indicate if the issue appears on stable or development version. In case it is the development version, please also include the commit SHA-1 hash.
<div class="panel callout">
<h5>Please note:</h5>
<p>It's not a valid to simply remove <code>@ace</code> from the mod list to confirm that ACE3 is the culprit.</p>
<p>If the error happens when using a <b>third-party mod</b> contact the author of the appropriate mod and report the issue there.</p>
</div>
## Reporting the issue
Head over to the [ACE3 GitHub issue tracker](https://github.com/acemod/ACE3/issues) and press the [New issue](https://github.com/acemod/ACE3/issues/new) button in the top right corner. Add a descriptive title and copy the following issue template in to the text area:
```
ACE3 Version: 3.x.x
(indicate if stable or dev, if dev indicate the commit the version is based on)
**Mods:**
* `@CBA_A3`
* `@ace`
**Placed ACE3 Modules:**
* *Add the list of modules you have placed on the map. Use 'None' if the error occurs without using any modules.*
* You can also press the `Debug to` button in the ACE3 option menu (escape -> ACE3 options -> Debug to) and add a link (pastebin.com) to the results.
**Description:**
* Add a detailed description of the error. This makes it easier for us to fix the issue.*
**Steps to reproduce:**
* *Add the steps needed to reproduce the issue.*
**Where did the issue occur?**
* A possible answer might be "Multiplayer", "Editor" or "Singleplayer"*
**RPT log file:**
* Add a link (pastebin.com) to the client or server RPT file.*
```
A video of the issue might be helpful in resolving it faster.
GitHub uses [Markdown](http://daringfireball.net/projects/markdown/syntax) to style the output. If you want to know more about it (e.g. how to [turn text bold](https://help.github.com/articles/markdown-basics/#styling-text), how to denote [code blocks](https://help.github.com/articles/markdown-basics/#inline-formats) or [inline code](https://help.github.com/articles/markdown-basics/#multiple-lines)) have a look at the [GitHub Markdown Documentation](https://help.github.com/articles/github-flavored-markdown).
# Feature Requests
## Background
ACE2, AGM and CSE had a lot of features implemented or planned. All of them are or have been evaluated for inclusion in ACE3 itself, and we'd like to port the majority of them eventually. However, due to time constraints, we have managed to finish only a fraction of the job so far.
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.
Following their approval, feature requests may be moved by moderators to a separate issue for further discussion.
# Regarding Pull Requests (PRs)
- You want to help but don't know where to start? Check the wiki entry for [setting up the development environment](http://ace3mod.com/wiki/development/setting-up-the-development-environment.html)
- [Make sure to respect the file structure](http://ace3mod.com/wiki/development/modularity-and-pbo-structure.html)
- [Make sure to respect the coding guidelines](http://ace3mod.com/wiki/development/coding-guidelines.html)

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 that be the case, everything in that folder and all subfolders is subject
to that license instead. to that license instead.
- ARMA PUBLIC LICENSE (\addons\apl)
- CreativeCommons Attributions 3.0 (\addons\fastroping\data\sounds)
============================================================================ ============================================================================
Full GNU General Public License Text Full GNU General Public License Text

View File

@ -3,15 +3,15 @@
</p> </p>
<p align="center"> <p align="center">
<a href="https://github.com/acemod/ACE3/releases"> <a href="https://github.com/acemod/ACE3/releases/latest">
<img src="https://img.shields.io/badge/Version-3.4.2-blue.svg?style=flat-square" alt="ACE3 Version"> <img src="https://img.shields.io/badge/Version-3.5.1-blue.svg?style=flat-square" alt="ACE3 Version">
</a>
<a href="https://github.com/acemod/ACE3/releases/download/v3.4.2/ace3_3.4.2.zip">
<img src="https://img.shields.io/badge/Download-72.6_MB-green.svg?style=flat-square" alt="ACE3 Download">
</a> </a>
<a href="https://github.com/acemod/ACE3/issues"> <a href="https://github.com/acemod/ACE3/issues">
<img src="https://img.shields.io/github/issues-raw/acemod/ACE3.svg?style=flat-square&label=Issues" alt="ACE3 Issues"> <img src="https://img.shields.io/github/issues-raw/acemod/ACE3.svg?style=flat-square&label=Issues" alt="ACE3 Issues">
</a> </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"> <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"> <img src="https://img.shields.io/badge/BIF-Thread-lightgrey.svg?style=flat-square" alt="BIF Thread">
</a> </a>
@ -64,7 +64,6 @@ The mod is **built modularly**, so almost any included PBO can be easily removed
- Magazine repacking - Magazine repacking
- Realistic weapon overheating mechanic - Realistic weapon overheating mechanic
- Combat deafness (temporary loss of hearing) simulation - Combat deafness (temporary loss of hearing) simulation
- Improved ragdoll physics
- Improved interactions for AARs and ammo bearers - Improved interactions for AARs and ammo bearers
- Adjustable sniper scopes - Adjustable sniper scopes
- No idle animation with lowered weapon - No idle animation with lowered weapon

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

View File

@ -1,3 +1,10 @@
class Extended_PreStart_EventHandlers {
class ADDON {
init = QUOTE(call COMPILE_FILE(XEH_preStart));
};
};
class Extended_PreInit_EventHandlers { class Extended_PreInit_EventHandlers {
class ADDON { class ADDON {
init = QUOTE( call COMPILE_FILE(XEH_preInit) ); init = QUOTE( call COMPILE_FILE(XEH_preInit) );

View File

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

View File

@ -0,0 +1,14 @@
PREP(calculateAmmoTemperatureVelocityShift);
PREP(calculateAtmosphericCorrection);
PREP(calculateBarrelLengthVelocityShift);
PREP(calculateRetardation);
PREP(calculateStabilityFactor);
PREP(diagnoseWeapons);
PREP(displayProtractor);
PREP(handleFired);
PREP(initializeTerrainExtension);
PREP(initModuleSettings);
PREP(readAmmoDataFromConfig);
PREP(readWeaponDataFromConfig);
PREP(handleFirePFH);

View File

@ -5,7 +5,7 @@
GVAR(currentbulletID) = -1; GVAR(currentbulletID) = -1;
GVAR(Protractor) = false; GVAR(Protractor) = false;
GVAR(ProtractorStart) = ACE_time; GVAR(ProtractorStart) = CBA_missionTime;
GVAR(allBullets) = []; GVAR(allBullets) = [];
GVAR(currentGrid) = 0; GVAR(currentGrid) = 0;
@ -21,18 +21,37 @@ if (!GVAR(extensionAvailable)) exitWith {
}; };
}; };
*/ */
[] call FUNC(initializeTerrainExtension);
if (!hasInterface) exitWith {}; if (!hasInterface) exitWith {};
["SettingsInitialized", { ["ace_settingsInitialized", {
//If not enabled, dont't add PFEH //If not enabled, dont't add PFEH
if (!GVAR(enabled)) exitWith {}; if (!GVAR(enabled)) exitWith {};
//Run the terrain processor
[] call FUNC(initializeTerrainExtension);
// Register fire event handler // Register fire event handler
["firedPlayer", DFUNC(handleFired)] call EFUNC(common,addEventHandler); ["ace_firedPlayer", DFUNC(handleFired)] call CBA_fnc_addEventHandler;
["firedPlayerNonLocal", DFUNC(handleFired)] call EFUNC(common,addEventHandler); ["ace_firedPlayerNonLocal", DFUNC(handleFired)] call CBA_fnc_addEventHandler;
[] call FUNC(updateTrajectoryPFH); //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;
}] call EFUNC(common,addEventHandler); #ifdef DEBUG_MODE_FULL
call FUNC(diagnoseWeapons);
#endif

View File

@ -2,16 +2,6 @@
ADDON = false; ADDON = false;
PREP(calculateAmmoTemperatureVelocityShift); #include "XEH_PREP.hpp"
PREP(calculateAtmosphericCorrection);
PREP(calculateBarrelLengthVelocityShift);
PREP(calculateRetardation);
PREP(calculateStabilityFactor);
PREP(displayProtractor);
PREP(handleFired);
PREP(initializeTerrainExtension);
PREP(initModuleSettings);
PREP(readAmmoDataFromConfig);
PREP(readWeaponDataFromConfig);
PREP(handleFirePFH);
ADDON = true; ADDON = true;

View File

@ -0,0 +1,3 @@
#include "script_component.hpp"
#include "XEH_PREP.hpp"

View File

@ -6,8 +6,9 @@ class CfgPatches {
weapons[] = {}; weapons[] = {};
requiredVersion = REQUIRED_VERSION; requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_ballistics", "ace_weather"}; requiredAddons[] = {"ace_ballistics", "ace_weather"};
author[] = {"Ruthberg"}; author = ECSTRING(common,ACETeam);
authorUrl = "https://github.com/ulteq"; authors[] = {"Ruthberg"};
url = ECSTRING(main,URL);
VERSION_CONFIG; VERSION_CONFIG;
}; };
}; };

View File

@ -22,6 +22,7 @@ private ["_muzzleVelocityTableCount", "_barrelLengthTableCount", "_lowerDataInde
"_upperDataIndex", "_lowerBarrelLength", "_upperBarrelLength", "_lowerMuzzleVelocity", "_upperDataIndex", "_lowerBarrelLength", "_upperBarrelLength", "_lowerMuzzleVelocity",
"_upperMuzzleVelocity", "_interpolationRatio"]; "_upperMuzzleVelocity", "_interpolationRatio"];
params ["_barrelLength", "_muzzleVelocityTable", "_barrelLengthTable", "_muzzleVelocity"]; params ["_barrelLength", "_muzzleVelocityTable", "_barrelLengthTable", "_muzzleVelocity"];
TRACE_4("params",_barrelLength,_muzzleVelocityTable,_barrelLengthTable,_muzzleVelocity);
// If barrel length is not defined, then there is no point in calculating muzzle velocity // If barrel length is not defined, then there is no point in calculating muzzle velocity
if (_barrelLength == 0) exitWith { 0 }; if (_barrelLength == 0) exitWith { 0 };

View File

@ -0,0 +1,59 @@
/*
* Author: esteldunedain
*
* This function diagnoses all primary weapons to find cases in which the initial
* velocity of shots with and without AB significantly mismatch
*
* Arguments:
* None. Parameters inherited from EFUNC(common,firedEH)
*
* Return Value:
* None
*
* Public: No
*/
#define DEBUG_MODE_FULL
#include "script_component.hpp"
private _cfgWeapons = configFile >> "CfgWeapons";
for "_i" from 0 to (count _cfgWeapons)-1 do {
private _weaponConfig = _cfgWeapons select _i;
if (isClass _weaponConfig) then {
private _weapon = configName _weaponConfig;
private _weaponType = getNumber (_weaponConfig >> "Type");
if (_weaponType == 1) then {
// The weapon is a primary weapon
private _weaponInitSpeed = getNumber (_weaponConfig >> "initSpeed");
private _magazines = getArray (_weaponConfig >> "magazines");
{
private _magazine = _x;
private _magazineInitSpeed = getNumber (configFile >> "CfgMagazines" >> _magazine >> "initSpeed");
private _ammo = getText (configFile >> "CfgMagazines" >> _magazine >> "ammo");
// Vanilla initial speed --------------------------
private _vanillaInitialSpeed = _magazineInitSpeed;
if (_weaponInitSpeed > 0) then {
_vanillaInitialSpeed = _weaponInitSpeed;
} else {
if (_weaponInitSpeed < 0) then {
_vanillaInitialSpeed = _vanillaInitialSpeed * (-_weaponInitSpeed);
};
};
// --------------------------------------------------
// AB initial speed --------------------------------
// Get Weapon and Ammo Configurations
private _AmmoCacheEntry = _ammo call FUNC(readAmmoDataFromConfig);
private _WeaponCacheEntry = _weapon call FUNC(readWeaponDataFromConfig);
_AmmoCacheEntry params ["_airFriction", "_caliber", "_bulletLength", "_bulletMass", "_transonicStabilityCoef", "_dragModel", "_ballisticCoefficients", "_velocityBoundaries", "_atmosphereModel", "_ammoTempMuzzleVelocityShifts", "_muzzleVelocityTable", "_barrelLengthTable"];
_WeaponCacheEntry params ["_barrelTwist", "_twistDirection", "_barrelLength"];
private _barrelVelocityShift = [_barrelLength, _muzzleVelocityTable, _barrelLengthTable, _vanillaInitialSpeed] call FUNC(calculateBarrelLengthVelocityShift);
private _abInitialSpeed = _vanillaInitialSpeed + _barrelVelocityShift;
// --------------------------------------------------
diag_log text format ["ABDiagnose,%1,%2,%3,%4,%5,%6,%7",_weapon,_magazine,_ammo,_magazineInitSpeed,_weaponInitSpeed,_vanillaInitialSpeed,_abInitialSpeed];
} forEach _magazines;
};
};
};

View File

@ -43,13 +43,13 @@ GVAR(Protractor) = true;
__ctrl1 ctrlSetScale 1; __ctrl1 ctrlSetScale 1;
__ctrl1 ctrlCommit 0; __ctrl1 ctrlCommit 0;
__ctrl1 ctrlSetText QUOTE(PATHTOF(UI\protractor.paa)); __ctrl1 ctrlSetText QPATHTOF(UI\protractor.paa);
__ctrl1 ctrlSetTextColor [1, 1, 1, 1]; __ctrl1 ctrlSetTextColor [1, 1, 1, 1];
__ctrl2 ctrlSetScale 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 ctrlCommit 0;
__ctrl2 ctrlSetText QUOTE(PATHTOF(UI\protractor_marker.paa)); __ctrl2 ctrlSetText QPATHTOF(UI\protractor_marker.paa);
__ctrl2 ctrlSetTextColor [1, 1, 1, 1]; __ctrl2 ctrlSetTextColor [1, 1, 1, 1];
}, 0.1, []] call CBA_fnc_addPerFrameHandler; }, 0.1, []] call CBA_fnc_addPerFrameHandler;

View File

@ -12,7 +12,7 @@
*/ */
#include "script_component.hpp" #include "script_component.hpp"
private _aceTimeSecond = floor ACE_time; private _aceTimeSecond = floor CBA_missionTime;
{ {
private ["_bulletVelocity", "_bulletPosition", "_bulletSpeed"]; 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,"","",""]; 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 nil
} count +GVAR(allBullets); } count +GVAR(allBullets);

View File

@ -88,7 +88,7 @@ if (GVAR(ammoTemperatureEnabled) || GVAR(barrelLengthInfluenceEnabled)) then {
_bulletTraceVisible = false; _bulletTraceVisible = false;
if (GVAR(bulletTraceEnabled) && cameraView == "GUNNER") then { 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; _bulletTraceVisible = true;
} else { } else {
if (currentWeapon ACE_player == primaryWeapon ACE_player && count primaryWeaponItems ACE_player > 2) then { 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; GVAR(currentbulletID) = (GVAR(currentbulletID) + 1) % 10000;
_aceTimeSecond = floor ACE_time; _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, ACE_time - _aceTimeSecond]; "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)]; 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"]; private ["_initStartTime", "_mapSize", "_mapGrids", "_gridCells", "_x", "_y", "_gridCenter", "_gridHeight", "_gridNumObjects", "_gridSurfaceIsWater"];
_initStartTime = ACE_time; _initStartTime = CBA_missionTime;
_mapSize = getNumber (configFile >> "CfgWorlds" >> worldName >> "MapSize"); _mapSize = getNumber (configFile >> "CfgWorlds" >> worldName >> "MapSize");
if (("ace_advanced_ballistics" callExtension format["init:%1:%2", worldName, _mapSize]) == "Terrain already initialized") exitWith { if (("ace_advanced_ballistics" callExtension format["init:%1:%2", worldName, _mapSize]) == "Terrain already initialized") exitWith {
#ifdef DEBUG_MODE_FULL #ifdef DEBUG_MODE_FULL
systemChat "AdvancedBallistics: Terrain already initialized"; systemChat "AdvancedBallistics: Terrain already initialized";
#endIf #endif
}; };
_mapGrids = ceil(_mapSize / 50) + 1; _mapGrids = ceil(_mapSize / 50) + 1;
@ -38,7 +38,7 @@ GVAR(currentGrid) = 0;
if (GVAR(currentGrid) >= _gridCells) exitWith { if (GVAR(currentGrid) >= _gridCells) exitWith {
#ifdef DEBUG_MODE_FULL #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 #endif
[_idPFH] call CBA_fnc_removePerFrameHandler; [_idPFH] call CBA_fnc_removePerFrameHandler;
}; };

View File

@ -24,6 +24,7 @@
*/ */
#include "script_component.hpp" #include "script_component.hpp"
TRACE_1("Reading Ammo Config",_this);
private ["_ammo", "_airFriction", "_caliber", "_bulletLength", "_bulletMass", "_transonicStabilityCoef", "_dragModel", "_ballisticCoefficients", "_velocityBoundaries", "_atmosphereModel", "_ammoTempMuzzleVelocityShifts", "_muzzleVelocityTable", "_barrelLengthTable", "_result"]; private ["_ammo", "_airFriction", "_caliber", "_bulletLength", "_bulletMass", "_transonicStabilityCoef", "_dragModel", "_ballisticCoefficients", "_velocityBoundaries", "_atmosphereModel", "_ammoTempMuzzleVelocityShifts", "_muzzleVelocityTable", "_barrelLengthTable", "_result"];
_ammoConfig = configFile >> "CfgAmmo" >> _this; _ammoConfig = configFile >> "CfgAmmo" >> _this;
@ -49,6 +50,42 @@ _ammoTempMuzzleVelocityShifts = getArray(_ammoConfig >> "ACE_ammoTempMuzzleVeloc
_muzzleVelocityTable = getArray(_ammoConfig >> "ACE_muzzleVelocities"); _muzzleVelocityTable = getArray(_ammoConfig >> "ACE_muzzleVelocities");
_barrelLengthTable = getArray(_ammoConfig >> "ACE_barrelLengths"); _barrelLengthTable = getArray(_ammoConfig >> "ACE_barrelLengths");
//Handle subsonic ammo that would have a huge muzzle velocity shift (when ballistic configs not explicitly defined)
private _typicalSpeed = getNumber (_ammoConfig >> "typicalSpeed");
if ((_typicalSpeed > 0) && {_typicalSpeed < 360}) then {
private _inheritedBarrelConfig = (!(_muzzleVelocityTable isEqualTo [])) && {(configProperties [_ammoConfig, "(configName _x) == 'ACE_muzzleVelocities'", false]) isEqualTo []};
private _inheritedTempConfig = (!(_ammoTempMuzzleVelocityShifts isEqualTo [])) && {(configProperties [_ammoConfig, "(configName _x) == 'ACE_ammoTempMuzzleVelocityShifts'", false]) isEqualTo []};
TRACE_3("subsonic",_typicalSpeed,_inheritedBarrelConfig,_inheritedTempConfig);
if (_inheritedBarrelConfig || _inheritedTempConfig) then {
private _parentConfig = inheritsFrom _ammoConfig;
private _parentSpeed = getNumber (_parentConfig >> "typicalSpeed");
ACE_LOGWARNING_4("Subsonic Ammo %1 (%2 m/s) missing `ACE_muzzleVelocities` or `ACE_ammoTempMuzzleVelocityShifts` configs, attempting to use parent %3 (%4m/s)",_this,_typicalSpeed,configName _parentConfig, _parentSpeed);
if (_parentSpeed <= 0) exitWith {//Handle weird or null parent
_muzzleVelocityTable = [];
_ammoTempMuzzleVelocityShifts = [];
};
private _linearMuliplier = _typicalSpeed / _parentSpeed;
if (_inheritedBarrelConfig) then {
if (!((configProperties [_parentConfig, "(configName _x) == 'ACE_muzzleVelocities'", false]) isEqualTo [])) then {
TRACE_2("Parent Has Defined Barrel MV",_linearMuliplier,_muzzleVelocityTable);
{ _muzzleVelocityTable set [_forEachIndex, (_x * _linearMuliplier)]; } forEach _muzzleVelocityTable;
} else {
TRACE_2("Parent DOES NOT Have Defined Barrel MV",_linearMuliplier,_muzzleVelocityTable);
_muzzleVelocityTable = [];
};
};
if (_inheritedTempConfig) then {
if (!((configProperties [_parentConfig, "(configName _x) == 'ACE_ammoTempMuzzleVelocityShifts'", false]) isEqualTo [])) then {
TRACE_2("Parent Has Defined Ammo Temp Shifts",_linearMuliplier,_muzzleVelocityTable);
{ _ammoTempMuzzleVelocityShifts set [_forEachIndex, (_x * _linearMuliplier)]; } forEach _ammoTempMuzzleVelocityShifts;
} else {
TRACE_2("Parent DOES NOT Have Defined Ammo Temp Shifts",_linearMuliplier,_muzzleVelocityTable);
_ammoTempMuzzleVelocityShifts = [];
};
};
};
};
_result = [_airFriction, _caliber, _bulletLength, _bulletMass, _transonicStabilityCoef, _dragModel, _ballisticCoefficients, _velocityBoundaries, _atmosphereModel, _ammoTempMuzzleVelocityShifts, _muzzleVelocityTable, _barrelLengthTable]; _result = [_airFriction, _caliber, _bulletLength, _bulletMass, _transonicStabilityCoef, _dragModel, _ballisticCoefficients, _velocityBoundaries, _atmosphereModel, _ammoTempMuzzleVelocityShifts, _muzzleVelocityTable, _barrelLengthTable];
uiNamespace setVariable [format[QGVAR(%1), _this], _result]; uiNamespace setVariable [format[QGVAR(%1), _this], _result];

View File

@ -35,6 +35,7 @@
<French>Balistique avancée</French> <French>Balistique avancée</French>
<Hungarian>Fejlett ballisztika</Hungarian> <Hungarian>Fejlett ballisztika</Hungarian>
<Russian>Продвинутая баллистика</Russian> <Russian>Продвинутая баллистика</Russian>
<Italian>Balistica Avanzata</Italian>
</Key> </Key>
<Key ID="STR_ACE_Advanced_Ballistics_enabled_DisplayName"> <Key ID="STR_ACE_Advanced_Ballistics_enabled_DisplayName">
<English>Advanced Ballistics</English> <English>Advanced Ballistics</English>
@ -46,6 +47,7 @@
<French>Balistique avancée</French> <French>Balistique avancée</French>
<Hungarian>Fejlett ballisztika</Hungarian> <Hungarian>Fejlett ballisztika</Hungarian>
<Russian>Продвинутая баллистика</Russian> <Russian>Продвинутая баллистика</Russian>
<Italian>Balistica Avanzata</Italian>
</Key> </Key>
<Key ID="STR_ACE_Advanced_Ballistics_enabled_Description"> <Key ID="STR_ACE_Advanced_Ballistics_enabled_Description">
<English>Enables advanced ballistics</English> <English>Enables advanced ballistics</English>
@ -57,6 +59,7 @@
<French>Activer la balistique avancée</French> <French>Activer la balistique avancée</French>
<Hungarian>Engedélyezi a fejlett ballisztikát</Hungarian> <Hungarian>Engedélyezi a fejlett ballisztikát</Hungarian>
<Russian>Включает продвинутую баллистику</Russian> <Russian>Включает продвинутую баллистику</Russian>
<Italian>Abilita Balistica Avanzata</Italian>
</Key> </Key>
<Key ID="STR_ACE_Advanced_Ballistics_simulateForSnipers_DisplayName"> <Key ID="STR_ACE_Advanced_Ballistics_simulateForSnipers_DisplayName">
<English>Enabled For Snipers</English> <English>Enabled For Snipers</English>
@ -68,6 +71,7 @@
<French>Activer pour les snipers</French> <French>Activer pour les snipers</French>
<Hungarian>Mesterlövészeknek engedélyezve</Hungarian> <Hungarian>Mesterlövészeknek engedélyezve</Hungarian>
<Russian>Включена для снайперов</Russian> <Russian>Включена для снайперов</Russian>
<Italian>Abilita per Tiratori Scelti</Italian>
</Key> </Key>
<Key ID="STR_ACE_Advanced_Ballistics_simulateForSnipers_Description"> <Key ID="STR_ACE_Advanced_Ballistics_simulateForSnipers_Description">
<English>Enables advanced ballistics for non local snipers (when using high power optics)</English> <English>Enables advanced ballistics for non local snipers (when using high power optics)</English>
@ -79,6 +83,7 @@
<French>Active la balistique avancée pour les snipers non locaux (en utilisant les optiques avancées)</French> <French>Active la balistique avancée pour les snipers non locaux (en utilisant les optiques avancées)</French>
<Hungarian>Engedélyezi a fejlett ballisztikát nem-helyi mesterlövészeknek (nagy-teljesítményű optika használatakor)</Hungarian> <Hungarian>Engedélyezi a fejlett ballisztikát nem-helyi mesterlövészeknek (nagy-teljesítményű optika használatakor)</Hungarian>
<Russian>Включает продвинутую баллистику для нелокальных снайперов (при использовании мощной оптики)</Russian> <Russian>Включает продвинутую баллистику для нелокальных снайперов (при использовании мощной оптики)</Russian>
<Italian>Abilita Balistica Avanzata per Tiratori Scelti non locali (con ottiche ad alto potenziale)</Italian>
</Key> </Key>
<Key ID="STR_ACE_Advanced_Ballistics_simulateForGroupMembers_DisplayName"> <Key ID="STR_ACE_Advanced_Ballistics_simulateForGroupMembers_DisplayName">
<English>Enabled For Group Members</English> <English>Enabled For Group Members</English>
@ -87,9 +92,10 @@
<German>Für Gruppenmitglieder aktiviert</German> <German>Für Gruppenmitglieder aktiviert</German>
<Czech>Povoleno pro členy skupiny</Czech> <Czech>Povoleno pro členy skupiny</Czech>
<Portuguese>Ativada para membros do grupo</Portuguese> <Portuguese>Ativada para membros do grupo</Portuguese>
<French>Activer pour les membres groupés</French> <French>Activer pour les membres du groupe</French>
<Hungarian>Csoporttagoknak engedélyezve</Hungarian> <Hungarian>Csoporttagoknak engedélyezve</Hungarian>
<Russian>Включена для группы</Russian> <Russian>Включена для группы</Russian>
<Italian>Abilita per Membri del Gruppo</Italian>
</Key> </Key>
<Key ID="STR_ACE_Advanced_Ballistics_simulateForGroupMembers_Description"> <Key ID="STR_ACE_Advanced_Ballistics_simulateForGroupMembers_Description">
<English>Enables advanced ballistics for non local group members</English> <English>Enables advanced ballistics for non local group members</English>
@ -98,9 +104,10 @@
<German>Aktiviert die erweiterte Ballistik für nicht lokale Gruppenmitglieder</German> <German>Aktiviert die erweiterte Ballistik für nicht lokale Gruppenmitglieder</German>
<Czech>Aktivuje pokročilou balistiku pro nelokální členy skupiny</Czech> <Czech>Aktivuje pokročilou balistiku pro nelokální členy skupiny</Czech>
<Portuguese>Ativa balística avançada para membros de grupo não locais</Portuguese> <Portuguese>Ativa balística avançada para membros de grupo não locais</Portuguese>
<French>Active la balistique avancée pour les membres groupés non locaux</French> <French>Active la balistique avancée pour les membres du groupe non locaux</French>
<Hungarian>Engedélyezi a fejlett ballisztikát nem-helyi csoporttagoknak</Hungarian> <Hungarian>Engedélyezi a fejlett ballisztikát nem-helyi csoporttagoknak</Hungarian>
<Russian>Включает продвинутую баллистику для нелокальных членов группы</Russian> <Russian>Включает продвинутую баллистику для нелокальных членов группы</Russian>
<Italian>Abilita Balistica Avanzata per Membri non locali del Gruppo</Italian>
</Key> </Key>
<Key ID="STR_ACE_Advanced_Ballistics_simulateForEveryone_DisplayName"> <Key ID="STR_ACE_Advanced_Ballistics_simulateForEveryone_DisplayName">
<English>Enabled For Everyone</English> <English>Enabled For Everyone</English>
@ -112,6 +119,7 @@
<French>Activer pour tout le monde</French> <French>Activer pour tout le monde</French>
<Hungarian>Mindenkinek engedélyezve</Hungarian> <Hungarian>Mindenkinek engedélyezve</Hungarian>
<Russian>Включена для всех</Russian> <Russian>Включена для всех</Russian>
<Italian>Abilita per tutti</Italian>
</Key> </Key>
<Key ID="STR_ACE_Advanced_Ballistics_simulateForEveryone_Description"> <Key ID="STR_ACE_Advanced_Ballistics_simulateForEveryone_Description">
<English>Enables advanced ballistics for all non local players (enabling this may degrade performance during heavy firefights in multiplayer)</English> <English>Enables advanced ballistics for all non local players (enabling this may degrade performance during heavy firefights in multiplayer)</English>
@ -120,9 +128,10 @@
<German>Aktiviert die erweiterte Ballistik für alle nicht lokalen Spieler (das Aktivieren dieser Funktion kann zur Beeinträchtigung des Spielerlebnisses im Multiplayer führen)</German> <German>Aktiviert die erweiterte Ballistik für alle nicht lokalen Spieler (das Aktivieren dieser Funktion kann zur Beeinträchtigung des Spielerlebnisses im Multiplayer führen)</German>
<Czech>Aktivuje pokročilou balistiku pro všechny nelokální hráče (aktivace této možnosti způsobuje pokles FPS během velké přestřelky v multiplayeru)</Czech> <Czech>Aktivuje pokročilou balistiku pro všechny nelokální hráče (aktivace této možnosti způsobuje pokles FPS během velké přestřelky v multiplayeru)</Czech>
<Portuguese>Ativa balística avançada para todos os jogadores não locais (ativando isso pode degradar a performance durante troca de tiros intensas no multiplayer)</Portuguese> <Portuguese>Ativa balística avançada para todos os jogadores não locais (ativando isso pode degradar a performance durante troca de tiros intensas no multiplayer)</Portuguese>
<French>Active la balistique avancé pour tous les joueurs non locaux (activer cette option peut avoir un impact sur les performance en multi durant les grands échanges de tirs)</French> <French>Active la balistique avancée pour tous les joueurs non locaux (activer cette option peut avoir un impact sur les performance en multi durant les grands échanges de tirs)</French>
<Hungarian>Engedélyezi a fejlett ballisztikát az összes nem-helyi játékosnak (ez a funkció leronthatja a teljesítményt intenzív többjátékos tűzharcok alatt)</Hungarian> <Hungarian>Engedélyezi a fejlett ballisztikát az összes nem-helyi játékosnak (ez a funkció leronthatja a teljesítményt intenzív többjátékos tűzharcok alatt)</Hungarian>
<Russian>Включает продвинутую баллистику для всех нелокальных игроков (включение этой опции может снизить производительность при массовых перестрелках в мультиплеере)</Russian> <Russian>Включает продвинутую баллистику для всех нелокальных игроков (включение этой опции может снизить производительность при массовых перестрелках в мультиплеере)</Russian>
<Italian>Abilita Balistica Avanzata per tutti i giocatori non locali (abilitare questo parametro potrebbe degradare le prestazioni durante scontri intensi in multiplayer)</Italian>
</Key> </Key>
<Key ID="STR_ACE_Advanced_Ballistics_alwaysSimulateForGroupMembers_DisplayName"> <Key ID="STR_ACE_Advanced_Ballistics_alwaysSimulateForGroupMembers_DisplayName">
<English>Always Enabled For Group Members</English> <English>Always Enabled For Group Members</English>
@ -131,9 +140,10 @@
<German>Für Gruppenmitglieder immer aktiviert</German> <German>Für Gruppenmitglieder immer aktiviert</German>
<Czech>Vždy povoleno pro členy skupiny</Czech> <Czech>Vždy povoleno pro členy skupiny</Czech>
<Portuguese>Sempre ativada para membros do grupo</Portuguese> <Portuguese>Sempre ativada para membros do grupo</Portuguese>
<French>Toujours activer pour les membres groupés</French> <French>Toujours activer pour les membres du groupe</French>
<Hungarian>Mindig engedélyezve csoporttagoknak</Hungarian> <Hungarian>Mindig engedélyezve csoporttagoknak</Hungarian>
<Russian>Всегда включена для членов группы</Russian> <Russian>Всегда включена для членов группы</Russian>
<Italian>Sempre abilitato per Membri del Gruppo</Italian>
</Key> </Key>
<Key ID="STR_ACE_Advanced_Ballistics_alwaysSimulateForGroupMembers_Description"> <Key ID="STR_ACE_Advanced_Ballistics_alwaysSimulateForGroupMembers_Description">
<English>Always enables advanced ballistics when a group member fires</English> <English>Always enables advanced ballistics when a group member fires</English>
@ -145,6 +155,7 @@
<French>Active tout le temps la balistique avancée quand un membre du groupe ouvre le feu</French> <French>Active tout le temps la balistique avancée quand un membre du groupe ouvre le feu</French>
<Hungarian>Mindig engedélyezi a fejlett ballisztikát, ha egy csoporttag tüzel</Hungarian> <Hungarian>Mindig engedélyezi a fejlett ballisztikát, ha egy csoporttag tüzel</Hungarian>
<Russian>Всегда включает продвинутую баллистику когда стреляет член группы</Russian> <Russian>Всегда включает продвинутую баллистику когда стреляет член группы</Russian>
<Italian>Abilita sempre Balistica Avanzata quando un Membro del Gruppo spara</Italian>
</Key> </Key>
<Key ID="STR_ACE_Advanced_Ballistics_disabledInFullAutoMod_DisplayName"> <Key ID="STR_ACE_Advanced_Ballistics_disabledInFullAutoMod_DisplayName">
<English>Disabled In FullAuto Mode</English> <English>Disabled In FullAuto Mode</English>
@ -156,6 +167,7 @@
<French>Désactiver en mode rafale libre</French> <French>Désactiver en mode rafale libre</French>
<Hungarian>Automata módban letiltva</Hungarian> <Hungarian>Automata módban letiltva</Hungarian>
<Russian>Выкл. для автомат. режима</Russian> <Russian>Выкл. для автомат. режима</Russian>
<Italian>Disabilita in modalità di fuoco automatico</Italian>
</Key> </Key>
<Key ID="STR_ACE_Advanced_Ballistics_disabledInFullAutoMod_Description"> <Key ID="STR_ACE_Advanced_Ballistics_disabledInFullAutoMod_Description">
<English>Disables the advanced ballistics during full auto fire</English> <English>Disables the advanced ballistics during full auto fire</English>
@ -167,6 +179,7 @@
<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 rafale libre</French>
<Hungarian>Letiltja a fejlett ballisztikát automata tüzelés folyamán</Hungarian> <Hungarian>Letiltja a fejlett ballisztikát automata tüzelés folyamán</Hungarian>
<Russian>Выключает продвинутую баллистику при стрельбе в полностью автоматическом режиме</Russian> <Russian>Выключает продвинутую баллистику при стрельбе в полностью автоматическом режиме</Russian>
<Italian>Disabilita Balistica Avanzata durante fuoco automatico</Italian>
</Key> </Key>
<Key ID="STR_ACE_Advanced_Ballistics_ammoTemperatureEnabled_DisplayName"> <Key ID="STR_ACE_Advanced_Ballistics_ammoTemperatureEnabled_DisplayName">
<English>Enable Ammo Temperature Simulation</English> <English>Enable Ammo Temperature Simulation</English>
@ -178,6 +191,7 @@
<French>Activer la simulation de la température</French> <French>Activer la simulation de la température</French>
<Hungarian>Lőszer-hő szimuláció engedélyezése</Hungarian> <Hungarian>Lőszer-hő szimuláció engedélyezése</Hungarian>
<Russian>Симуляция температуры для боеприпасов</Russian> <Russian>Симуляция температуры для боеприпасов</Russian>
<Italian>Abilita simulazione della temperatura delle munizioni</Italian>
</Key> </Key>
<Key ID="STR_ACE_Advanced_Ballistics_ammoTemperatureEnabled_Description"> <Key ID="STR_ACE_Advanced_Ballistics_ammoTemperatureEnabled_Description">
<English>Muzzle velocity varies with ammo temperature</English> <English>Muzzle velocity varies with ammo temperature</English>
@ -189,6 +203,7 @@
<French>La température de la munition influe sur la vélocité intiale</French> <French>La température de la munition influe sur la vélocité intiale</French>
<Hungarian>A kezdősebesség a lőszer hőmérsékletétől függően változó</Hungarian> <Hungarian>A kezdősebesség a lőszer hőmérsékletétől függően változó</Hungarian>
<Russian>Начальная скорость пули зависит от температуры</Russian> <Russian>Начальная скорость пули зависит от температуры</Russian>
<Italian>Velocità alla volata varia con la temperatura delle munizioni</Italian>
</Key> </Key>
<Key ID="STR_ACE_Advanced_Ballistics_barrelLengthInfluenceEnabled_DisplayName"> <Key ID="STR_ACE_Advanced_Ballistics_barrelLengthInfluenceEnabled_DisplayName">
<English>Enable Barrel Length Simulation</English> <English>Enable Barrel Length Simulation</English>
@ -200,6 +215,7 @@
<French>Activer la simulation de la longueur de canon</French> <French>Activer la simulation de la longueur de canon</French>
<Hungarian>Csőhossz-szimuláció engedélyezése</Hungarian> <Hungarian>Csőhossz-szimuláció engedélyezése</Hungarian>
<Russian>Симуляция длины ствола</Russian> <Russian>Симуляция длины ствола</Russian>
<Italian>Abilita simulazione della lunghezza della canna</Italian>
</Key> </Key>
<Key ID="STR_ACE_Advanced_Ballistics_barrelLengthInfluenceEnabled_Description"> <Key ID="STR_ACE_Advanced_Ballistics_barrelLengthInfluenceEnabled_Description">
<English>Muzzle velocity varies with barrel length</English> <English>Muzzle velocity varies with barrel length</English>
@ -211,6 +227,7 @@
<French>La longueur du canon influe sur la vélocité initale</French> <French>La longueur du canon influe sur la vélocité initale</French>
<Hungarian>A kezdősebesség a cső hosszától függően változó</Hungarian> <Hungarian>A kezdősebesség a cső hosszától függően változó</Hungarian>
<Russian>Начальная скорость пули зависит от длины ствола</Russian> <Russian>Начальная скорость пули зависит от длины ствола</Russian>
<Italian>Velocità alla volata varia con la lunghezza della canna</Italian>
</Key> </Key>
<Key ID="STR_ACE_Advanced_Ballistics_bulletTraceEnabled_DisplayName"> <Key ID="STR_ACE_Advanced_Ballistics_bulletTraceEnabled_DisplayName">
<English>Enable Bullet Trace Effect</English> <English>Enable Bullet Trace Effect</English>
@ -222,6 +239,7 @@
<French>Activer l'effet traçante</French> <French>Activer l'effet traçante</French>
<Hungarian>Nyomkövető-effekt engedélyezése</Hungarian> <Hungarian>Nyomkövető-effekt engedélyezése</Hungarian>
<Russian>Следы пуль</Russian> <Russian>Следы пуль</Russian>
<Italian>Abilita effetto di tracciatura dei proiettili</Italian>
</Key> </Key>
<Key ID="STR_ACE_Advanced_Ballistics_bulletTraceEnabled_Description"> <Key ID="STR_ACE_Advanced_Ballistics_bulletTraceEnabled_Description">
<English>Enables a bullet trace effect to high caliber bullets (only visible when looking through high power optics)</English> <English>Enables a bullet trace effect to high caliber bullets (only visible when looking through high power optics)</English>
@ -233,6 +251,7 @@
<French>Active une tracante pour les munitions de gros calibre (seulement visible en utilisant des optiques avancées)</French> <French>Active une tracante pour les munitions de gros calibre (seulement visible en utilisant des optiques avancées)</French>
<Hungarian>Engedélyezi a nagy kaliberű lövedékek nyomának vizuális követését (csak nagy teljesítményű optikán keresztül látható)</Hungarian> <Hungarian>Engedélyezi a nagy kaliberű lövedékek nyomának vizuális követését (csak nagy teljesítményű optikán keresztül látható)</Hungarian>
<Russian>Включает эффект следов пуль для больших калибров (видны только через мощную оптику)</Russian> <Russian>Включает эффект следов пуль для больших калибров (видны только через мощную оптику)</Russian>
<Italian>Abilita effetto di tracciatura per proiettili di alto calibro (visibile solo attraverso ottiche ad alto potenziale)</Italian>
</Key> </Key>
<Key ID="STR_ACE_Advanced_Ballistics_simulationInterval_DisplayName"> <Key ID="STR_ACE_Advanced_Ballistics_simulationInterval_DisplayName">
<English>Simulation Interval</English> <English>Simulation Interval</English>
@ -244,6 +263,7 @@
<French>Intervalle de simulation</French> <French>Intervalle de simulation</French>
<Hungarian>Szimuláció intervalluma</Hungarian> <Hungarian>Szimuláció intervalluma</Hungarian>
<Russian>Интервал симуляции</Russian> <Russian>Интервал симуляции</Russian>
<Italian>Intervallo Simulazione</Italian>
</Key> </Key>
<Key ID="STR_ACE_Advanced_Ballistics_simulationInterval_Description"> <Key ID="STR_ACE_Advanced_Ballistics_simulationInterval_Description">
<English>Defines the interval between every calculation step</English> <English>Defines the interval between every calculation step</English>
@ -252,9 +272,10 @@
<German>Legt das Intervall zwischen den Berechnungsschritten fest</German> <German>Legt das Intervall zwischen den Berechnungsschritten fest</German>
<Czech>Určuje interval mezi každým výpočtem</Czech> <Czech>Určuje interval mezi každým výpočtem</Czech>
<Portuguese>Define o intervalo entre cada cálculo</Portuguese> <Portuguese>Define o intervalo entre cada cálculo</Portuguese>
<French>Défini un intervalle de calcul entre deux simulations</French> <French>Définit un intervalle de calcul entre deux simulations</French>
<Hungarian>Meghatározza a számítási lépések közötti időintervallumot</Hungarian> <Hungarian>Meghatározza a számítási lépések közötti időintervallumot</Hungarian>
<Russian>Определяет временной интервал между вычислениями</Russian> <Russian>Определяет временной интервал между вычислениями</Russian>
<Italian>Definisce l'intervallo tra ogni step di calcolo</Italian>
</Key> </Key>
<Key ID="STR_ACE_Advanced_Ballistics_simulationRadius_DisplayName"> <Key ID="STR_ACE_Advanced_Ballistics_simulationRadius_DisplayName">
<English>Simulation Radius</English> <English>Simulation Radius</English>
@ -266,6 +287,7 @@
<French>Rayon de simulation</French> <French>Rayon de simulation</French>
<Hungarian>Szimuláció hatóköre</Hungarian> <Hungarian>Szimuláció hatóköre</Hungarian>
<Russian>Радиус симуляции</Russian> <Russian>Радиус симуляции</Russian>
<Italian>Raggio Simulazione</Italian>
</Key> </Key>
<Key ID="STR_ACE_Advanced_Ballistics_simulationRadius_Description"> <Key ID="STR_ACE_Advanced_Ballistics_simulationRadius_Description">
<English>Defines the radius around the player (in meters) at which advanced ballistics are applied to projectiles</English> <English>Defines the radius around the player (in meters) at which advanced ballistics are applied to projectiles</English>
@ -274,19 +296,22 @@
<German>Gibt den Radius (in Metern) um den Spieler an, bei dem die erweiterte Ballistik auf Geschosse angewendet wird</German> <German>Gibt den Radius (in Metern) um den Spieler an, bei dem die erweiterte Ballistik auf Geschosse angewendet wird</German>
<Czech>Určuje oblast kolem hráče (v metrech), kde je pokročilá balistika použita na projektil</Czech> <Czech>Určuje oblast kolem hráče (v metrech), kde je pokročilá balistika použita na projektil</Czech>
<Portuguese>Define o raio ao redor do jogador (em metros) onde a balística avançada será aplicada aos projéteis</Portuguese> <Portuguese>Define o raio ao redor do jogador (em metros) onde a balística avançada será aplicada aos projéteis</Portuguese>
<French>Défini le rayon autour du joueur (en mètres) d'application de la balistique avancée</French> <French>Définit le rayon autour du joueur (en mètres) d'application de la balistique avancée</French>
<Hungarian>Meghatározza a játékos körüli hatókört (méterben), ahol a lövedékek fejlett ballisztikát használnak</Hungarian> <Hungarian>Meghatározza a játékos körüli hatókört (méterben), ahol a lövedékek fejlett ballisztikát használnak</Hungarian>
<Russian>Определяет радиус вокруг игрока (в метрах), в котором продвинутая баллистика применяется к снарядам</Russian> <Russian>Определяет радиус вокруг игрока (в метрах), в котором продвинутая баллистика применяется к снарядам</Russian>
<Italian>Definisce il raggio attorno al giocatore (in metri) per cui la Balistica Avanzata è applicata ai proiettili</Italian>
</Key> </Key>
<Key ID="STR_ACE_Advanced_Ballistics_Description"> <Key ID="STR_ACE_Advanced_Ballistics_Description">
<English>This module enables advanced ballistics simulation - meaning the trajectory of projectiles is influenced by variables like air temperature, atmospheric pressure, humidity, gravity, the type of ammunition and the weapon from which it was fired.</English> <English>This module enables advanced ballistics simulation - meaning the trajectory of projectiles is influenced by variables like air temperature, atmospheric pressure, humidity, gravity, the type of ammunition and the weapon from which it was fired.</English>
<German>Dieses Modul aktiviert die Erweiterte Ballisitk. Die Flugbahn eines Geschosses wird nun von Einflüssen wie z.B Temperatur, Luftdruck, Luftfeuchtigkeit, Schwerkraft, Geschossart sowie der Waffe aus dem es gefeuert wird, beeinflusst.</German>
<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> <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> <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> <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é 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 laquelles ils sont tirés</French> <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>
<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> <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> <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> <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> </Key>
</Package> </Package>
</Project> </Project>

View File

@ -6,8 +6,9 @@ class CfgPatches {
weapons[] = {}; weapons[] = {};
requiredVersion = REQUIRED_VERSION; requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_common"}; requiredAddons[] = {"ace_common"};
author[] = {"KoffeinFlummi","commy2"}; author = ECSTRING(common,ACETeam);
authorUrl = "https://github.com/KoffeinFlummi/"; authors[] = {"KoffeinFlummi","commy2"};
url = ECSTRING(main,URL);
VERSION_CONFIG; VERSION_CONFIG;
}; };
}; };

View File

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

@ -6,8 +6,9 @@ class CfgPatches {
weapons[] = {}; weapons[] = {};
requiredVersion = REQUIRED_VERSION; requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_common"}; requiredAddons[] = {"ace_common"};
author[] = {"KoffeinFlummi","Crusty","commy2","jaynus","Kimi"}; author = ECSTRING(common,ACETeam);
authorUrl = "https://github.com/KoffeinFlummi/"; authors[] = {"KoffeinFlummi","Crusty","commy2","jaynus","Kimi"};
url = ECSTRING(main,URL);
VERSION_CONFIG; VERSION_CONFIG;
}; };
}; };

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}; 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; acceleration = 265;
landingSpeed = 220; landingSpeed = 220;
gunAimDown = 0.087266463;

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project name="ACE"> <Project name="ACE">
<Package name="Aircraft"> <Package name="Aircraft">
<Key ID="STR_ACE_Aircraft_CMFlareLauncher_Burst_Name"> <Key ID="STR_ACE_Aircraft_CMFlareLauncher_Burst_Name">
@ -7,7 +7,7 @@
<Spanish>Ráfaga</Spanish> <Spanish>Ráfaga</Spanish>
<Polish>Seria</Polish> <Polish>Seria</Polish>
<Czech>Dávka</Czech> <Czech>Dávka</Czech>
<French>Contre mesure</French> <French>Contre mesures</French>
<Russian>Очередь</Russian> <Russian>Очередь</Russian>
<Hungarian>Sorozat</Hungarian> <Hungarian>Sorozat</Hungarian>
<Portuguese>Rajada</Portuguese> <Portuguese>Rajada</Portuguese>
@ -29,7 +29,7 @@
<English>Open Cargo Door</English> <English>Open Cargo Door</English>
<German>Laderampe öffnen</German> <German>Laderampe öffnen</German>
<Spanish>Abrir compuerta de carga</Spanish> <Spanish>Abrir compuerta de carga</Spanish>
<French>Ourvir la rampe</French> <French>Ouvrir la rampe</French>
<Polish>Otwórz drzwi ładowni</Polish> <Polish>Otwórz drzwi ładowni</Polish>
<Czech>Otevřít nákladní prostor</Czech> <Czech>Otevřít nákladní prostor</Czech>
<Hungarian>Rakodórámpa nyitása</Hungarian> <Hungarian>Rakodórámpa nyitása</Hungarian>

View File

@ -1,7 +0,0 @@
/*
class Extended_PreInit_EventHandlers {
class ADDON {
init = QUOTE(call COMPILE_FILE(XEH_preInit));
};
};
*/

View File

@ -6,10 +6,8 @@ class CfgPatches {
weapons[] = {}; weapons[] = {};
requiredVersion = REQUIRED_VERSION; requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_main"}; requiredAddons[] = {"ace_main"};
author[] = {"Bohemia Interactive"}; author = "Bohemia Interactive";
authorUrl = "http://ace3mod.com"; url = ECSTRING(main,URL);
VERSION_CONFIG; VERSION_CONFIG;
}; };
}; };
#include "CfgEventHandlers.hpp"

View File

@ -1,3 +1,10 @@
class Extended_PreStart_EventHandlers {
class ADDON {
init = QUOTE(call COMPILE_FILE(XEH_preStart));
};
};
class Extended_PreInit_EventHandlers { class Extended_PreInit_EventHandlers {
class ADDON { class ADDON {
init = QUOTE( call COMPILE_FILE(XEH_preInit) ); init = QUOTE( call COMPILE_FILE(XEH_preInit) );

View File

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

View File

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

View File

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

View File

@ -0,0 +1,67 @@
PREP(add_new_gun);
PREP(calculate_range_card);
PREP(calculate_solution);
PREP(calculate_target_range_assist);
PREP(calculate_target_solution);
PREP(calculate_target_speed_assist);
PREP(can_show);
PREP(change_gun);
PREP(change_target_slot);
PREP(clear_user_data);
PREP(create_dialog);
PREP(cycle_gun_list);
PREP(cycle_image_size_units);
PREP(cycle_num_ticks_units);
PREP(cycle_range_card_columns);
PREP(cycle_scope_unit);
PREP(cycle_target_size_units);
PREP(cycle_target_speed_direction);
PREP(delete_gun);
PREP(init);
PREP(parse_input);
PREP(reset_relative_click_memory);
PREP(restore_atmo_default);
PREP(restore_user_data);
PREP(save_gun);
PREP(show_add_new_gun);
PREP(show_atmo_env_data);
PREP(show_gun_ammo_data);
PREP(show_gun_list);
PREP(show_main_page);
PREP(show_range_card);
PREP(show_range_card_setup);
PREP(show_solution_setup);
PREP(show_target_data);
PREP(show_target_range_assist);
PREP(show_target_speed_assist);
PREP(show_target_speed_assist_timer);
PREP(sord);
PREP(store_user_data);
PREP(target_speed_assist_timer);
PREP(toggle_atmo_env_data);
PREP(toggle_gun_ammo_data);
PREP(toggle_gun_list);
PREP(toggle_range_card);
PREP(toggle_range_card_setup);
PREP(toggle_solution_setup);
PREP(toggle_target_data);
PREP(toggle_target_range_assist);
PREP(toggle_target_speed_assist);
PREP(update_atmosphere);
PREP(update_atmo_env_data);
PREP(update_atmo_selection);
PREP(update_gun);
PREP(update_gun_ammo_data);
PREP(update_inclination_angle);
PREP(update_range_card);
PREP(update_relative_click_memory);
PREP(update_result);
PREP(update_scope_unit);
PREP(update_solution_setup);
PREP(update_target);
PREP(update_target_data);
PREP(update_target_selection);
PREP(update_unit_selection);
PREP(update_zero_range);
PREP(on_close_dialog);

View File

@ -7,41 +7,41 @@ if ((profileNamespace getVariable ["ACE_ATragMX_profileNamespaceVersion", 0]) ==
} else { } else {
// Profile Name, Muzzle Velocity, Zero Range, Scope Base Angle, AirFriction, Bore Height, Scope Unit, Scope Click Unit, Scope Click Number, Maximum Elevation, Dialed Elevation, Dialed Windage, Mass, Bullet Diameter, Rifle Twist, BC, Drag Model, Atmosphere Model // Profile Name, Muzzle Velocity, Zero Range, Scope Base Angle, AirFriction, Bore Height, Scope Unit, Scope Click Unit, Scope Click Number, Maximum Elevation, Dialed Elevation, Dialed Windage, Mass, Bullet Diameter, Rifle Twist, BC, Drag Model, Atmosphere Model
GVAR(gunList) = [["12.7x108mm" , 820, 100, 0.0657485, -0.00063800, 3.81, 0, 2, 10, 120, 0, 0, 48.28, 12.7, 38.10, 0.630, 1, "ASM" ], GVAR(gunList) = [["12.7x108mm" , 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 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.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" ], ["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" ], [".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" ], ["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 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 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" ], [".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 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 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"], [".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.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 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 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 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 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"], ["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.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.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"], ["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 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 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 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" ]]; ["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); [] call FUNC(clear_user_data);
profileNamespace setVariable ["ACE_ATragMX_gunList", GVAR(gunList)]; profileNamespace setVariable ["ACE_ATragMX_gunList", GVAR(gunList)];
}; };
@ -49,4 +49,4 @@ if ((profileNamespace getVariable ["ACE_ATragMX_profileNamespaceVersion", 0]) ==
[] call FUNC(init); [] call FUNC(init);
[] call FUNC(restore_user_data); [] 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,71 +2,6 @@
ADDON = false; ADDON = false;
PREP(add_new_gun); #include "XEH_PREP.hpp"
PREP(calculate_range_card);
PREP(calculate_solution);
PREP(calculate_target_range_assist);
PREP(calculate_target_solution);
PREP(calculate_target_speed_assist);
PREP(can_show);
PREP(change_gun);
PREP(change_target_slot);
PREP(clear_user_data);
PREP(create_dialog);
PREP(cycle_gun_list);
PREP(cycle_image_size_units);
PREP(cycle_num_ticks_units);
PREP(cycle_range_card_columns);
PREP(cycle_scope_unit);
PREP(cycle_target_size_units);
PREP(cycle_target_speed_direction);
PREP(delete_gun);
PREP(init);
PREP(parse_input);
PREP(reset_relative_click_memory);
PREP(restore_atmo_default);
PREP(restore_user_data);
PREP(save_gun);
PREP(show_add_new_gun);
PREP(show_atmo_env_data);
PREP(show_gun_ammo_data);
PREP(show_gun_list);
PREP(show_main_page);
PREP(show_range_card);
PREP(show_range_card_setup);
PREP(show_solution_setup);
PREP(show_target_data);
PREP(show_target_range_assist);
PREP(show_target_speed_assist);
PREP(show_target_speed_assist_timer);
PREP(sord);
PREP(store_user_data);
PREP(target_speed_assist_timer);
PREP(toggle_atmo_env_data);
PREP(toggle_gun_ammo_data);
PREP(toggle_gun_list);
PREP(toggle_range_card);
PREP(toggle_range_card_setup);
PREP(toggle_solution_setup);
PREP(toggle_target_data);
PREP(toggle_target_range_assist);
PREP(toggle_target_speed_assist);
PREP(update_atmosphere);
PREP(update_atmo_env_data);
PREP(update_atmo_selection);
PREP(update_gun);
PREP(update_gun_ammo_data);
PREP(update_inclination_angle);
PREP(update_range_card);
PREP(update_relative_click_memory);
PREP(update_result);
PREP(update_scope_unit);
PREP(update_solution_setup);
PREP(update_target);
PREP(update_target_data);
PREP(update_target_selection);
PREP(update_unit_selection);
PREP(update_zero_range);
PREP(on_close_dialog);
ADDON = true; ADDON = true;

View File

@ -0,0 +1,3 @@
#include "script_component.hpp"
#include "XEH_PREP.hpp"

View File

@ -6,7 +6,9 @@ class CfgPatches {
weapons[] = {"ACE_ATragMX"}; weapons[] = {"ACE_ATragMX"};
requiredVersion = REQUIRED_VERSION; requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ACE_common", "ACE_weather"}; requiredAddons[] = {"ACE_common", "ACE_weather"};
author = "Ruthberg"; author = ECSTRING(common,ACETeam);
authors[] = {"Ruthberg"};
url = ECSTRING(main,URL);
VERSION_CONFIG; VERSION_CONFIG;
}; };
}; };
@ -14,4 +16,8 @@ class CfgPatches {
#include "CfgEventHandlers.hpp" #include "CfgEventHandlers.hpp"
#include "CfgVehicles.hpp" #include "CfgVehicles.hpp"
#include "CfgWeapons.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 * Public: No
*/ */
#include "script_component.hpp" #include "script_component.hpp"
params [
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", "_bulletMass", "_boreHeight", "_airFriction", "_muzzleVelocity",
_scopeBaseAngle = _this select 0; "_temperature", "_barometricPressure", "_relativeHumidity", "_simSteps", "_windSpeed",
_bulletMass = _this select 1; "_windDirection", "_inclinationAngle", "_targetSpeed", "_targetRange", "_bc", "_dragModel",
_boreHeight = _this select 2; "_atmosphereModel", "_storeRangeCardData", "_stabilityFactor", "_twistDirection", "_latitude",
_airFriction = _this select 3; "_directionOfFire"
_muzzleVelocity = _this select 4; ];
_temperature = _this select 5; _windSpeed params ["_windSpeed1", "_windSpeed2"];
_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;
private ["_bulletPos", "_bulletVelocity", "_bulletAccel", "_bulletSpeed", "_gravity", "_deltaT"]; private ["_bulletPos", "_bulletVelocity", "_bulletAccel", "_bulletSpeed", "_gravity", "_deltaT"];
_bulletPos = [0, 0, 0]; _bulletPos = [0, 0, 0];
@ -133,7 +116,7 @@ _bulletVelocity set [2, Sin(_scopeBaseAngle) * _muzzleVelocity];
while {_TOF < 15 && (_bulletPos select 1) < _targetRange} do { while {_TOF < 15 && (_bulletPos select 1) < _targetRange} do {
_bulletSpeed = vectorMagnitude _bulletVelocity; _bulletSpeed = vectorMagnitude _bulletVelocity;
_speedTotal = _speedTotal + _bulletSpeed; _speedTotal = _speedTotal + _bulletSpeed;
_stepsTotal = _stepsTotal + 1; _stepsTotal = _stepsTotal + 1;
_speedAverage = (_speedTotal / _stepsTotal); _speedAverage = (_speedTotal / _stepsTotal);
@ -142,7 +125,7 @@ while {_TOF < 15 && (_bulletPos select 1) < _targetRange} do {
_trueSpeed = vectorMagnitude _trueVelocity; _trueSpeed = vectorMagnitude _trueVelocity;
if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then { 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])) parseNumber(("ace_advanced_ballistics" callExtension format["retard:%1:%2:%3", _dragModel, _bc, _trueSpeed]))
} else { } else {
([_dragModel, _bc, _trueSpeed] call EFUNC(advanced_ballistics,calculateRetardation)) ([_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 = 0.5 * (_bulletMass / 1000 * (_bulletSpeed ^ 2));
_kineticEnergy = _kineticEnergy * 0.737562149; _kineticEnergy = _kineticEnergy * 0.737562149;
if ((missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) && (_bulletPos select 1) > 0) then { if ((missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) && (_bulletPos select 1) > 0) then {
// Coriolis // Coriolis
_horizontalDeflection = 0.0000729 * ((_bulletPos select 1) ^ 2) * sin(_latitude) / _speedAverage; _horizontalDeflection = 0.0000729 * ((_bulletPos select 1) ^ 2) * sin(_latitude) / _speedAverage;
@ -190,7 +173,7 @@ while {_TOF < 15 && (_bulletPos select 1) < _targetRange} do {
_windage1 = _windage1 + _spinDrift; _windage1 = _windage1 + _spinDrift;
_windage2 = _windage2 + _spinDrift; _windage2 = _windage2 + _spinDrift;
}; };
GVAR(rangeCardData) set [_n, [_range, _elevation * 60, [_windage1 * 60, _windage2 * 60], _lead, _TOF, _bulletSpeed, _kineticEnergy]]; GVAR(rangeCardData) set [_n, [_range, _elevation * 60, [_windage1 * 60, _windage2 * 60], _lead, _TOF, _bulletSpeed, _kineticEnergy]];
_n = _n + 1; _n = _n + 1;
}; };

View File

@ -17,10 +17,7 @@
*/ */
#include "script_component.hpp" #include "script_component.hpp"
private ["_gunID", "_restoreMemory", "_updateDisplay"]; params ["_gunID", "_restoreMemory", "_updateDisplay"];
_gunID = _this select 0;
_restoreMemory = _this select 1;
_updateDisplay = _this select 2;
if (_gunID < 0 || _gunID > (count GVAR(gunList)) - 1) exitWith {}; 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(showRangeCardSetup) call FUNC(show_range_card_setup);
GVAR(showSolutionSetup) call FUNC(show_solution_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(showTargetRangeAssist) call FUNC(show_target_range_assist);
GVAR(showTargetSpeedAssist) call FUNC(show_target_speed_assist); GVAR(showTargetSpeedAssist) call FUNC(show_target_speed_assist);
GVAR(showTargetSpeedAssistTimer) call FUNC(show_target_speed_assist_timer); GVAR(showTargetSpeedAssistTimer) call FUNC(show_target_speed_assist_timer);
@ -56,7 +56,7 @@ GVAR(DialogPFH) = [{
if (!GVAR(active)) exitWith { if (!GVAR(active)) exitWith {
[_this select 1] call CBA_fnc_removePerFrameHandler; [_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; }, 60, []] call CBA_fnc_addPerFrameHandler;
true true

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -17,10 +17,7 @@
*/ */
#include "script_component.hpp" #include "script_component.hpp"
private ["_slopeDistance", "_azimuth", "_inclination"]; params ["_slopeDistance", "_azimuth", "_inclination"];
_slopeDistance = _this select 0;
_azimuth = _this select 1;
_inclination = _this select 2;
GVAR(inclinationAngle) set [GVAR(currentTarget), round(_inclination)]; GVAR(inclinationAngle) set [GVAR(currentTarget), round(_inclination)];
GVAR(directionOfFire) set [GVAR(currentTarget), round(_azimuth)]; 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); true call FUNC(show_target_speed_assist_timer);
ctrlSetFocus ((uiNamespace getVariable "ATragMX_Display") displayCtrl 9002); ctrlSetFocus ((uiNamespace getVariable "ATragMX_Display") displayCtrl 9002);
[{ [{
private ["_args", "_startTime"]; private ["_args", "_startTime"];
_args = _this select 0; _args = _this select 0;
_startTime = _args select 0; _startTime = _args select 0;
if (!(GVAR(speedAssistTimer))) exitWith { if (!(GVAR(speedAssistTimer))) exitWith {
GVAR(speedAssistTimer) = true; 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); [] call FUNC(calculate_target_speed_assist);
false call FUNC(show_target_speed_assist_timer); false call FUNC(show_target_speed_assist_timer);
true call FUNC(show_target_speed_assist); true call FUNC(show_target_speed_assist);
[_this select 1] call CBA_fnc_removePerFrameHandler; [_this select 1] call CBA_fnc_removePerFrameHandler;
}; };
ctrlSetText [9001, Str(Round((ACE_time - _startTime) * 10) / 10)]; ctrlSetText [9001, Str(Round((CBA_missionTime - _startTime) * 10) / 10)];
}, 0.1, [ACE_time]] call CBA_fnc_addPerFrameHandler; }, 0.1, [CBA_missionTime]] call CBA_fnc_addPerFrameHandler;
}; };

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -33,4 +33,4 @@ _closeCode = {
closeDialog 0; 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,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project name="ACE"> <Project name="ACE">
<Package name="ATragMX"> <Package name="ATragMX">
<Key ID="STR_ACE_ATragMX_Name"> <Key ID="STR_ACE_ATragMX_Name">

View File

@ -1,3 +1,10 @@
class Extended_PreStart_EventHandlers {
class ADDON {
init = QUOTE(call COMPILE_FILE(XEH_preStart));
};
};
class Extended_PreInit_EventHandlers { class Extended_PreInit_EventHandlers {
class ADDON { class ADDON {
init = QUOTE(call COMPILE_FILE(XEH_preInit)); init = QUOTE(call COMPILE_FILE(XEH_preInit));

View File

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

View File

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

View File

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

View File

@ -0,0 +1,10 @@
PREP(attach);
PREP(canAttach);
PREP(canDetach);
PREP(detach);
PREP(getChildrenAttachActions);
PREP(handleGetIn);
PREP(handleGetOut);
PREP(handleKilled);
PREP(placeApprove);

View File

@ -3,4 +3,4 @@
if (!hasInterface) exitWith {}; if (!hasInterface) exitWith {};
//If attach placing, stop when opening menu: //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,14 +2,6 @@
ADDON = false; ADDON = false;
PREP(attach); #include "XEH_PREP.hpp"
PREP(canAttach);
PREP(canDetach);
PREP(detach);
PREP(getChildrenAttachActions);
PREP(handleGetIn);
PREP(handleGetOut);
PREP(handleKilled);
PREP(placeApprove);
ADDON = true; ADDON = true;

View File

@ -0,0 +1,3 @@
#include "script_component.hpp"
#include "XEH_PREP.hpp"

View File

@ -6,8 +6,9 @@ class CfgPatches {
weapons[] = {"ACE_IR_Strobe_Item"}; weapons[] = {"ACE_IR_Strobe_Item"};
requiredVersion = REQUIRED_VERSION; requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_interaction"}; requiredAddons[] = {"ace_interaction"};
author[] = {"KoffeinFlummi","eRazeri","esteldunedain"}; author = ECSTRING(common,ACETeam);
authorUrl = "https://github.com/KoffeinFlummi/"; authors[] = {"KoffeinFlummi","eRazeri","esteldunedain"};
url = ECSTRING(main,URL);
VERSION_CONFIG; VERSION_CONFIG;
}; };
}; };
@ -17,3 +18,7 @@ class CfgPatches {
#include "CfgVehicles.hpp" #include "CfgVehicles.hpp"
#include "CfgWeapons.hpp" #include "CfgWeapons.hpp"
#include "GUI_VirtualAmmo.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 if (_unit == _attachToVehicle) then { //Self Attachment
_attachedItem = _itemVehClass createVehicle [0,0,0]; _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 { if (!_silentScripted) then {
_unit removeItem _itemClassname; // Remove item _unit removeItem _itemClassname; // Remove item
[_onAtachText] call EFUNC(common,displayTextStructured); [_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); [_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)]; _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}]; _actionID = _unit addAction [format ["<t color='#FF0000'>%1</t>", localize LSTRING(CancelAction)], {GVAR(placeAction) = PLACE_CANCEL}];

View File

@ -57,7 +57,7 @@ if (toLower _itemName in ["b_ir_grenade", "o_ir_grenade", "i_ir_grenade"]) then
detach _attachedObject; detach _attachedObject;
_attachedObject setPos ((getPos _unit) vectorAdd [0, 0, -1000]); _attachedObject setPos ((getPos _unit) vectorAdd [0, 0, -1000]);
// Delete attached item after 0.5 seconds // 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 { } else {
// Delete attached item // Delete attached item
deleteVehicle _attachedObject; deleteVehicle _attachedObject;

View File

@ -31,7 +31,7 @@ _actions = [];
if (getText (_item >> "ACE_Attachable") != "") then { if (getText (_item >> "ACE_Attachable") != "") then {
_displayName = getText(_item >> "displayName"); _displayName = getText(_item >> "displayName");
_picture = getText(_item >> "picture"); _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]; _actions pushBack [_action, [], _target];
}; };
}; };
@ -44,7 +44,7 @@ _actions = [];
if (getText (_item >> "ACE_Attachable") != "") then { if (getText (_item >> "ACE_Attachable") != "") then {
_displayName = getText(_item >> "displayName"); _displayName = getText(_item >> "displayName");
_picture = getText(_item >> "picture"); _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]; _actions pushBack [_action, [], _target];
}; };
}; };

View File

@ -36,7 +36,7 @@ if (!isNull _xObject) then {
params ["_detachedLight"]; params ["_detachedLight"];
TRACE_1("delayed delete",_detachedLight); TRACE_1("delayed delete",_detachedLight);
deleteVehicle _detachedLight; deleteVehicle _detachedLight;
}, [_xObject], 2] call EFUNC(common,waitAndExecute); }, [_xObject], 2] call CBA_fnc_waitAndExecute;
(_attachedList select 0) set [0, objNull]; (_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 it's a vehicle, also delete the attached
if (!(_deadUnit isKindOf "CAManBase")) then { if (!(_deadUnit isKindOf "CAManBase")) then {
_xObject setPos ((getPos _deadUnit) vectorAdd [0, 0, -1000]); _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; } forEach _attachedList;

View File

@ -90,7 +90,7 @@
<German>Leuchtstab befestigt</German> <German>Leuchtstab befestigt</German>
<Spanish>Barra de luz acoplada</Spanish> <Spanish>Barra de luz acoplada</Spanish>
<Polish>Przyczepiono światło chemiczne</Polish> <Polish>Przyczepiono światło chemiczne</Polish>
<French>Chemlight attachée</French> <French>Cyalume attachée</French>
<Czech>Chemické světlo připnuto</Czech> <Czech>Chemické světlo připnuto</Czech>
<Portuguese>Chemlight Fixada</Portuguese> <Portuguese>Chemlight Fixada</Portuguese>
<Italian>Chemlight attaccata</Italian> <Italian>Chemlight attaccata</Italian>
@ -102,7 +102,7 @@
<German>Leuchtstab entfernt</German> <German>Leuchtstab entfernt</German>
<Spanish>Barra de luz quitada</Spanish> <Spanish>Barra de luz quitada</Spanish>
<Polish>Odczepiono światło chemiczne</Polish> <Polish>Odczepiono światło chemiczne</Polish>
<French>Chemlight détachée</French> <French>Cyalume détachée</French>
<Czech>Chemické světlo odepnuto</Czech> <Czech>Chemické světlo odepnuto</Czech>
<Portuguese>Chemlight Separada</Portuguese> <Portuguese>Chemlight Separada</Portuguese>
<Italian>Chemlight staccata</Italian> <Italian>Chemlight staccata</Italian>
@ -138,7 +138,7 @@
<German>Das IR-Stroboskop erlaubt es dir deine Position mit einem blinkenden Leuchtfeuer zu signalisieren, welches nur mit Nachtsichtgerät zu erkennen ist.</German> <German>Das IR-Stroboskop erlaubt es dir deine Position mit einem blinkenden Leuchtfeuer zu signalisieren, welches nur mit Nachtsichtgerät zu erkennen ist.</German>
<Polish>Stroboskop światła podczerwieni umożliwia oznaczenie swojej pozycji pulsacyjnym światłem widocznym tylko przez optykę noktowizyjną i gogle noktowizyjne.</Polish> <Polish>Stroboskop światła podczerwieni umożliwia oznaczenie swojej pozycji pulsacyjnym światłem widocznym tylko przez optykę noktowizyjną i gogle noktowizyjne.</Polish>
<Spanish>El Marcador IR permite señalizar su posisición a través de una baliza visible solo a través de dispositivos de visión nocturna. </Spanish> <Spanish>El Marcador IR permite señalizar su posisición a través de una baliza visible solo a través de dispositivos de visión nocturna. </Spanish>
<French>La balise IR permet de signaler votre position grace à un clignotement visible par des JVN.</French> <French>La balise IR permet de signaler votre position grâce à un clignotement visible par des JVN.</French>
<Czech>IR Značkovač je Infračerveně zářící stroboskop umožňující signalizaci vaší pozice díky blikajícímu světlu, které je vidět pouze při užití noktovizoru.</Czech> <Czech>IR Značkovač je Infračerveně zářící stroboskop umožňující signalizaci vaší pozice díky blikajícímu světlu, které je vidět pouze při užití noktovizoru.</Czech>
<Portuguese>O Marcador IV permite que você sinalize sua posição através de um pulso visível somente com equipamento de visão noturna.</Portuguese> <Portuguese>O Marcador IV permite que você sinalize sua posição através de um pulso visível somente com equipamento de visão noturna.</Portuguese>
<Italian>La Strobo IR è una luce stroboscopica che ti permette di segnalare la tua posizione grazie all'emissione di impulsi ad infrarossi visibili solo con i visori notturni.</Italian> <Italian>La Strobo IR è una luce stroboscopica che ti permette di segnalare la tua posizione grazie all'emissione di impulsi ad infrarossi visibili solo con i visori notturni.</Italian>
@ -206,4 +206,4 @@
<Russian>%1&lt;br/&gt;отсоединен(-а)</Russian> <Russian>%1&lt;br/&gt;отсоединен(-а)</Russian>
</Key> </Key>
</Package> </Package>
</Project> </Project>

View File

@ -1,4 +1,10 @@
class Extended_PreStart_EventHandlers {
class ADDON {
init = QUOTE(call COMPILE_FILE(XEH_preStart));
};
};
class Extended_PreInit_EventHandlers { class Extended_PreInit_EventHandlers {
class ADDON { class ADDON {
init = QUOTE(call COMPILE_FILE(XEH_preInit)); init = QUOTE(call COMPILE_FILE(XEH_preInit));

View File

@ -0,0 +1,4 @@
PREP(backpackOpened);
PREP(isBackpack);
PREP(onOpenInventory);

View File

@ -1,3 +1,3 @@
#include "script_component.hpp" #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,8 +2,6 @@
ADDON = false; ADDON = false;
PREP(backpackOpened); #include "XEH_PREP.hpp"
PREP(isBackpack);
PREP(onOpenInventory);
ADDON = true; ADDON = true;

View File

@ -0,0 +1,3 @@
#include "script_component.hpp"
#include "XEH_PREP.hpp"

View File

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

View File

@ -12,7 +12,7 @@
*/ */
#include "script_component.hpp" #include "script_component.hpp"
params [["_backpack", objNull, [objNull]]]; params [["_backpack", objNull, [objNull, ""]]];
if (_backpack isEqualType objNull) then { if (_backpack isEqualType objNull) then {
_backpack = typeOf _backpack; _backpack = typeOf _backpack;

View File

@ -24,7 +24,7 @@ private _target = objectParent _backpack;
if (isNull _target) exitWith {false}; if (isNull _target) exitWith {false};
// raise event on target unit // 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 // return false to open inventory as usual
false false

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

View File

@ -14,100 +14,83 @@ class CfgWeapons {
class MMG_02_base_F; class MMG_02_base_F;
class Rifle_Base_F; class Rifle_Base_F;
class Rifle_Long_Base_F; class Rifle_Long_Base_F;
class WeaponSlotsInfo;
class MuzzleSlot; class MuzzleSlot;
/* Long Rifles */ /* Long Rifles */
class GM6_base_F: Rifle_Long_Base_F { class GM6_base_F: Rifle_Long_Base_F {
class Single: Mode_SemiAuto { class Single: Mode_SemiAuto {
dispersion = 0.00029; // radians. Equal to 1.00 MOA. dispersion = 0.00029; // radians. Equal to 1.00 MOA.
}; };
}; };
class LRR_base_F: Rifle_Long_Base_F { class LRR_base_F: Rifle_Long_Base_F {
class Single: Mode_SemiAuto { class Single: Mode_SemiAuto {
dispersion = 0.00020; // radians. Equal to 0.70 MOA. dispersion = 0.00020; // radians. Equal to 0.70 MOA.
}; };
}; };
class DMR_06_base_F: Rifle_Long_Base_F { class DMR_06_base_F: Rifle_Long_Base_F {
class Single: Mode_SemiAuto { class Single: Mode_SemiAuto {
dispersion = 0.00029; // radians. Equal to 1.00 MOA. dispersion = 0.00029; // radians. Equal to 1.00 MOA.
}; };
class FullAuto: Mode_FullAuto { class FullAuto: Mode_FullAuto {
dispersion = 0.00029; // radians. Equal to 1.00 MOA. dispersion = 0.00029; // radians. Equal to 1.00 MOA.
}; };
}; };
class DMR_05_base_F: Rifle_Long_Base_F { class DMR_05_base_F: Rifle_Long_Base_F {
class Single: Mode_SemiAuto { class Single: Mode_SemiAuto {
dispersion = 0.00029; // radians. Equal to 1.00 MOA. dispersion = 0.00029; // radians. Equal to 1.00 MOA.
}; };
class FullAuto: Mode_FullAuto { class FullAuto: Mode_FullAuto {
dispersion = 0.00029; // radians. Equal to 1.00 MOA. dispersion = 0.00029; // radians. Equal to 1.00 MOA.
}; };
}; };
class DMR_04_base_F: Rifle_Long_Base_F { class DMR_04_base_F: Rifle_Long_Base_F {
class Single: Mode_SemiAuto { class Single: Mode_SemiAuto {
dispersion = 0.00029; // radians. Equal to 1.00 MOA. dispersion = 0.00029; // radians. Equal to 1.00 MOA.
}; };
}; };
class DMR_03_base_F: Rifle_Long_Base_F { class DMR_03_base_F: Rifle_Long_Base_F {
class Single: Mode_SemiAuto { class Single: Mode_SemiAuto {
dispersion = 0.00032; // radians. Equal to 1.10 MOA. dispersion = 0.00032; // radians. Equal to 1.10 MOA.
}; };
class FullAuto: Mode_FullAuto { class FullAuto: Mode_FullAuto {
dispersion = 0.00032; // radians. Equal to 1.10 MOA. dispersion = 0.00032; // radians. Equal to 1.10 MOA.
}; };
}; };
class DMR_02_base_F: Rifle_Long_Base_F { class DMR_02_base_F: Rifle_Long_Base_F {
class Single: Mode_SemiAuto { class Single: Mode_SemiAuto {
dispersion = 0.000262; // radians. Equal to 0.90 MOA. dispersion = 0.000262; // radians. Equal to 0.90 MOA.
}; };
}; };
class DMR_01_base_F: Rifle_Long_Base_F { class DMR_01_base_F: Rifle_Long_Base_F {
class WeaponSlotsInfo: WeaponSlotsInfo {
class MuzzleSlot: MuzzleSlot {
compatibleItems[] += {"ACE_muzzle_mzls_B"};
};
};
class Single: Mode_SemiAuto { class Single: Mode_SemiAuto {
dispersion = 0.0004; // radians. Equal to 1.375 MOA. dispersion = 0.0004; // radians. Equal to 1.375 MOA.
}; };
}; };
class EBR_base_F: Rifle_Long_Base_F { class EBR_base_F: Rifle_Long_Base_F {
class WeaponSlotsInfo: WeaponSlotsInfo {
class MuzzleSlot: MuzzleSlot {
compatibleItems[] += {"ACE_muzzle_mzls_B"};
};
};
class Single: Mode_SemiAuto { class Single: Mode_SemiAuto {
dispersion = 0.00029; // radians. Equal to 1.00 MOA. dispersion = 0.00029; // radians. Equal to 1.00 MOA.
}; };
class FullAuto: Mode_FullAuto { class FullAuto: Mode_FullAuto {
dispersion = 0.00029; // radians. Equal to 1.00 MOA. dispersion = 0.00029; // radians. Equal to 1.00 MOA.
}; };
}; };
/* MX */ /* MX */
class arifle_MX_Base_F: Rifle_Base_F { class arifle_MX_Base_F: Rifle_Base_F {};
class WeaponSlotsInfo: WeaponSlotsInfo {
class MuzzleSlot: MuzzleSlot {
compatibleItems[] += {"ACE_muzzle_mzls_H"};
};
};
};
class arifle_MX_SW_F: arifle_MX_Base_F { class arifle_MX_SW_F: arifle_MX_Base_F {
magazines[] = { magazines[] = {
"100Rnd_65x39_caseless_mag_Tracer", "100Rnd_65x39_caseless_mag_Tracer",
@ -120,13 +103,6 @@ class CfgWeapons {
initSpeed = -1.0; initSpeed = -1.0;
ACE_barrelTwist=228.6; ACE_barrelTwist=228.6;
ACE_barrelLength=406.4; ACE_barrelLength=406.4;
class WeaponSlotsInfo: WeaponSlotsInfo {
class MuzzleSlot: MuzzleSlot {
// Shit is broken again
//compatibleItems[] += {"ACE_muzzle_mzls_H"};
compatibleItems[] = {"muzzle_snds_H","muzzle_snds_H_SW","ACE_muzzle_mzls_H"};
};
};
}; };
class arifle_MXM_F: arifle_MX_Base_F { class arifle_MXM_F: arifle_MX_Base_F {
magazines[] = { magazines[] = {
@ -150,13 +126,7 @@ class CfgWeapons {
/* Katiba */ /* Katiba */
class arifle_katiba_Base_F: Rifle_Base_F { class arifle_katiba_Base_F: Rifle_Base_F {};
class WeaponSlotsInfo: WeaponSlotsInfo {
class MuzzleSlot: MuzzleSlot {
compatibleItems[] += {"ACE_muzzle_mzls_H"};
};
};
};
/* Other */ /* Other */
@ -167,42 +137,16 @@ class CfgWeapons {
"ACE_200Rnd_65x39_cased_Box_Tracer_Dim" "ACE_200Rnd_65x39_cased_Box_Tracer_Dim"
}; };
initSpeed = -0.9763; initSpeed = -0.9763;
class WeaponSlotsInfo: WeaponSlotsInfo {
class MuzzleSlot: MuzzleSlot {
compatibleItems[] += {"ACE_muzzle_mzls_H"};
};
};
ACE_barrelTwist=177.8; ACE_barrelTwist=177.8;
ACE_barrelLength=317.5; ACE_barrelLength=317.5;
}; };
class LMG_Zafir_F: Rifle_Long_Base_F { class LMG_Zafir_F: Rifle_Long_Base_F {
initSpeed = -1.0; initSpeed = -1.0;
class WeaponSlotsInfo: WeaponSlotsInfo {
class MuzzleSlot: MuzzleSlot {
compatibleItems[] += {"ACE_muzzle_mzls_B"};
};
};
ACE_barrelTwist=304.8; ACE_barrelTwist=304.8;
ACE_barrelLength=459.74; ACE_barrelLength=459.74;
}; };
class Tavor_base_F: Rifle_Base_F {};
class mk20_base_F: Rifle_Base_F {};
/* Assault Rifles */
class Tavor_base_F: Rifle_Base_F {
class WeaponSlotsInfo: WeaponSlotsInfo {
class MuzzleSlot: MuzzleSlot {
compatibleItems[] += {"ACE_muzzle_mzls_L"};
};
};
};
class mk20_base_F: Rifle_Base_F {
class WeaponSlotsInfo: WeaponSlotsInfo {
class MuzzleSlot: MuzzleSlot {
compatibleItems[] += {"ACE_muzzle_mzls_L"};
};
};
};
/* SMGs */ /* SMGs */
class SDAR_base_F: Rifle_Base_F { class SDAR_base_F: Rifle_Base_F {
@ -214,98 +158,48 @@ class CfgWeapons {
class Burst: Mode_Burst { class Burst: Mode_Burst {
dispersion = 0.0008727; // radians. Equal to 3 MOA. dispersion = 0.0008727; // radians. Equal to 3 MOA.
}; };
class FullAuto: Mode_FullAuto { class FullAuto: Mode_FullAuto {
dispersion = 0.0008727; // radians. Equal to 3 MOA. dispersion = 0.0008727; // radians. Equal to 3 MOA.
}; };
}; };
class pdw2000_base_F: Rifle_Base_F { class pdw2000_base_F: Rifle_Base_F {};
class WeaponSlotsInfo: WeaponSlotsInfo { class SMG_01_Base: Rifle_Base_F {};
class MuzzleSlot: MuzzleSlot { class SMG_02_base_F: Rifle_Base_F {};
compatibleItems[] += {"ACE_muzzle_mzls_smg_02"};
};
};
};
class SMG_01_Base: Rifle_Base_F {
class WeaponSlotsInfo: WeaponSlotsInfo {
class MuzzleSlot: MuzzleSlot {
compatibleItems[] += {"ACE_muzzle_mzls_smg_01"};
};
};
};
class SMG_02_base_F: Rifle_Base_F {
class WeaponSlotsInfo: WeaponSlotsInfo {
class MuzzleSlot: MuzzleSlot {
compatibleItems[] += {"ACE_muzzle_mzls_smg_02"};
};
};
};
/* Pistols */ /* Pistols */
class Pistol; class Pistol;
class Pistol_Base_F: Pistol { class Pistol_Base_F: Pistol {};
class WeaponSlotsInfo;
};
class hgun_P07_F: Pistol_Base_F { class hgun_P07_F: Pistol_Base_F {
initSpeed = -0.9778; initSpeed = -0.9778;
ACE_barrelTwist=254.0; ACE_barrelTwist=254.0;
ACE_barrelLength=101.6; ACE_barrelLength=101.6;
class WeaponSlotsInfo: WeaponSlotsInfo {
class MuzzleSlot: MuzzleSlot {
linkProxy = "\A3\data_f\proxies\weapon_slots\MUZZLE";
compatibleItems[] += {"ACE_muzzle_mzls_smg_02"};
};
};
}; };
class hgun_Rook40_F: Pistol_Base_F { class hgun_Rook40_F: Pistol_Base_F {
initSpeed = -1.0; initSpeed = -1.0;
ACE_barrelTwist=254.0; ACE_barrelTwist=254.0;
ACE_barrelLength=111.76; ACE_barrelLength=111.76;
class WeaponSlotsInfo: WeaponSlotsInfo {
class MuzzleSlot: MuzzleSlot {
linkProxy = "\A3\data_f\proxies\weapon_slots\MUZZLE";
compatibleItems[] += {"ACE_muzzle_mzls_smg_02"};
};
};
}; };
class hgun_ACPC2_F: Pistol_Base_F { class hgun_ACPC2_F: Pistol_Base_F {
initSpeed = -1.0; initSpeed = -1.0;
ACE_barrelTwist=406.4; ACE_barrelTwist=406.4;
ACE_barrelLength=127.0; ACE_barrelLength=127.0;
class WeaponSlotsInfo: WeaponSlotsInfo {
class MuzzleSlot: MuzzleSlot {
compatibleItems[] += {"ACE_muzzle_mzls_smg_01"};
};
};
}; };
class hgun_Pistol_heavy_01_F: Pistol_Base_F { class hgun_Pistol_heavy_01_F: Pistol_Base_F {
initSpeed = -0.96; initSpeed = -0.96;
ACE_barrelTwist=406.4; ACE_barrelTwist=406.4;
ACE_barrelLength=114.3; ACE_barrelLength=114.3;
class WeaponSlotsInfo: WeaponSlotsInfo {
class MuzzleSlot: MuzzleSlot {
compatibleItems[] += {"ACE_muzzle_mzls_smg_01"};
};
};
}; };
class hgun_Pistol_heavy_02_F: Pistol_Base_F { class hgun_Pistol_heavy_02_F: Pistol_Base_F {
initSpeed = -0.92; initSpeed = -0.92;
ACE_barrelTwist=406.4; ACE_barrelTwist=406.4;
ACE_barrelLength=76.2; ACE_barrelLength=76.2;
/*
class WeaponSlotsInfo: WeaponSlotsInfo {
class MuzzleSlot {
linkProxy = "\A3\data_f\proxies\weapon_slots\MUZZLE";
compatibleItems[] += {"ACE_muzzle_mzls_smg_01"};
};
};
*/
}; };
class hgun_PDW2000_F: pdw2000_base_F { class hgun_PDW2000_F: pdw2000_base_F {
initSpeed = -1.157; initSpeed = -1.157;
@ -391,6 +285,8 @@ class CfgWeapons {
"30Rnd_556x45_Stanag_Tracer_Red", "30Rnd_556x45_Stanag_Tracer_Red",
"30Rnd_556x45_Stanag_Tracer_Green", "30Rnd_556x45_Stanag_Tracer_Green",
"30Rnd_556x45_Stanag_Tracer_Yellow", "30Rnd_556x45_Stanag_Tracer_Yellow",
"30Rnd_556x45_Stanag_red",
"30Rnd_556x45_Stanag_green",
"ACE_30Rnd_556x45_Stanag_M995_AP_mag", "ACE_30Rnd_556x45_Stanag_M995_AP_mag",
"ACE_30Rnd_556x45_Stanag_Mk262_mag", "ACE_30Rnd_556x45_Stanag_Mk262_mag",
"ACE_30Rnd_556x45_Stanag_Mk318_mag", "ACE_30Rnd_556x45_Stanag_Mk318_mag",
@ -411,6 +307,8 @@ class CfgWeapons {
"30Rnd_556x45_Stanag_Tracer_Red", "30Rnd_556x45_Stanag_Tracer_Red",
"30Rnd_556x45_Stanag_Tracer_Green", "30Rnd_556x45_Stanag_Tracer_Green",
"30Rnd_556x45_Stanag_Tracer_Yellow", "30Rnd_556x45_Stanag_Tracer_Yellow",
"30Rnd_556x45_Stanag_red",
"30Rnd_556x45_Stanag_green",
"ACE_30Rnd_556x45_Stanag_M995_AP_mag", "ACE_30Rnd_556x45_Stanag_M995_AP_mag",
"ACE_30Rnd_556x45_Stanag_Mk262_mag", "ACE_30Rnd_556x45_Stanag_Mk262_mag",
"ACE_30Rnd_556x45_Stanag_Mk318_mag", "ACE_30Rnd_556x45_Stanag_Mk318_mag",
@ -426,6 +324,8 @@ class CfgWeapons {
"30Rnd_556x45_Stanag_Tracer_Red", "30Rnd_556x45_Stanag_Tracer_Red",
"30Rnd_556x45_Stanag_Tracer_Green", "30Rnd_556x45_Stanag_Tracer_Green",
"30Rnd_556x45_Stanag_Tracer_Yellow", "30Rnd_556x45_Stanag_Tracer_Yellow",
"30Rnd_556x45_Stanag_red",
"30Rnd_556x45_Stanag_green",
"ACE_30Rnd_556x45_Stanag_M995_AP_mag", "ACE_30Rnd_556x45_Stanag_M995_AP_mag",
"ACE_30Rnd_556x45_Stanag_Mk262_mag", "ACE_30Rnd_556x45_Stanag_Mk262_mag",
"ACE_30Rnd_556x45_Stanag_Mk318_mag", "ACE_30Rnd_556x45_Stanag_Mk318_mag",
@ -441,6 +341,8 @@ class CfgWeapons {
"30Rnd_556x45_Stanag_Tracer_Red", "30Rnd_556x45_Stanag_Tracer_Red",
"30Rnd_556x45_Stanag_Tracer_Green", "30Rnd_556x45_Stanag_Tracer_Green",
"30Rnd_556x45_Stanag_Tracer_Yellow", "30Rnd_556x45_Stanag_Tracer_Yellow",
"30Rnd_556x45_Stanag_red",
"30Rnd_556x45_Stanag_green",
"ACE_30Rnd_556x45_Stanag_M995_AP_mag", "ACE_30Rnd_556x45_Stanag_M995_AP_mag",
"ACE_30Rnd_556x45_Stanag_Mk262_mag", "ACE_30Rnd_556x45_Stanag_Mk262_mag",
"ACE_30Rnd_556x45_Stanag_Mk318_mag", "ACE_30Rnd_556x45_Stanag_Mk318_mag",
@ -462,6 +364,8 @@ class CfgWeapons {
"30Rnd_556x45_Stanag_Tracer_Red", "30Rnd_556x45_Stanag_Tracer_Red",
"30Rnd_556x45_Stanag_Tracer_Green", "30Rnd_556x45_Stanag_Tracer_Green",
"30Rnd_556x45_Stanag_Tracer_Yellow", "30Rnd_556x45_Stanag_Tracer_Yellow",
"30Rnd_556x45_Stanag_red",
"30Rnd_556x45_Stanag_green",
"ACE_30Rnd_556x45_Stanag_M995_AP_mag", "ACE_30Rnd_556x45_Stanag_M995_AP_mag",
"ACE_30Rnd_556x45_Stanag_Mk262_mag", "ACE_30Rnd_556x45_Stanag_Mk262_mag",
"ACE_30Rnd_556x45_Stanag_Mk318_mag", "ACE_30Rnd_556x45_Stanag_Mk318_mag",
@ -477,6 +381,8 @@ class CfgWeapons {
"30Rnd_556x45_Stanag_Tracer_Red", "30Rnd_556x45_Stanag_Tracer_Red",
"30Rnd_556x45_Stanag_Tracer_Green", "30Rnd_556x45_Stanag_Tracer_Green",
"30Rnd_556x45_Stanag_Tracer_Yellow", "30Rnd_556x45_Stanag_Tracer_Yellow",
"30Rnd_556x45_Stanag_red",
"30Rnd_556x45_Stanag_green",
"ACE_30Rnd_556x45_Stanag_M995_AP_mag", "ACE_30Rnd_556x45_Stanag_M995_AP_mag",
"ACE_30Rnd_556x45_Stanag_Mk262_mag", "ACE_30Rnd_556x45_Stanag_Mk262_mag",
"ACE_30Rnd_556x45_Stanag_Mk318_mag", "ACE_30Rnd_556x45_Stanag_Mk318_mag",
@ -492,6 +398,8 @@ class CfgWeapons {
"30Rnd_556x45_Stanag_Tracer_Red", "30Rnd_556x45_Stanag_Tracer_Red",
"30Rnd_556x45_Stanag_Tracer_Green", "30Rnd_556x45_Stanag_Tracer_Green",
"30Rnd_556x45_Stanag_Tracer_Yellow", "30Rnd_556x45_Stanag_Tracer_Yellow",
"30Rnd_556x45_Stanag_red",
"30Rnd_556x45_Stanag_green",
"ACE_30Rnd_556x45_Stanag_M995_AP_mag", "ACE_30Rnd_556x45_Stanag_M995_AP_mag",
"ACE_30Rnd_556x45_Stanag_Mk262_mag", "ACE_30Rnd_556x45_Stanag_Mk262_mag",
"ACE_30Rnd_556x45_Stanag_Mk318_mag", "ACE_30Rnd_556x45_Stanag_Mk318_mag",
@ -617,7 +525,7 @@ class CfgWeapons {
ACE_barrelTwist=234.95; ACE_barrelTwist=234.95;
ACE_barrelLength=609.6; ACE_barrelLength=609.6;
}; };
class HMG_127 : LMG_RCWS { class HMG_127 : LMG_RCWS {
}; };
class HMG_01: HMG_127 { class HMG_01: HMG_127 {
@ -627,7 +535,7 @@ class CfgWeapons {
ACE_barrelTwist=304.8; ACE_barrelTwist=304.8;
ACE_barrelLength=1143.0; ACE_barrelLength=1143.0;
}; };
/* Silencers */ /* Silencers */
class ItemCore; class ItemCore;

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