Merge pull request #1 from acemod/master

Update from master
This commit is contained in:
BaerMitUmlaut 2015-07-07 18:52:39 +02:00
commit 60afa18c51
2015 changed files with 122070 additions and 12231 deletions

1
.gitignore vendored
View File

@ -5,3 +5,4 @@ texHeaders.bin
*.swp *.swp
*.swo *.swo
*.biprivatekey *.biprivatekey
Thumbs.db

14
.travis.yml Normal file
View File

@ -0,0 +1,14 @@
branches:
only:
- master
language: python
python:
- "3.4"
before_script:
- pip install pygithub
- pip install pygithub3
script:
- python3 tools/deploy.py
env:
global:
- secure: "KcJQbknBOdC5lA4nFGKPXVRVIGLDXDRzC8XkHuXJCE9pIR/wbxbkvx8fHKcC6SC9eHgzneC3+o4m4+CjIbVvIwDgslRbJ8Y59i90ncONmdoRx1HUYHwuYWVZm9HJFjCsIbrEqhSyyKS+PB3WZVOLbErtNHsgS8f43PTh5Ujg7Vg="

View File

@ -18,26 +18,37 @@ Kieran
NouberNou NouberNou
PabstMirror <pabstmirror@gmail.com> PabstMirror <pabstmirror@gmail.com>
Ruthberg <ulteq@web.de> Ruthberg <ulteq@web.de>
SilentSpike <SilentSpike100@gmail.com>
tpM tpM
ViperMaul ViperMaul
VKing <kauestad@gmail.com> VKing <kauestad@gmail.com>
Walter Pearce <jaynus@gmail.com> Walter Pearce <jaynus@gmail.com>
# CONTRIBUTORS # CONTRIBUTORS
11RDP-LoupVert <loupvert@11rdp.fr>
[BIG]Bull [BIG]Bull
11RDP-LoupVert <loupvert@11rdp.fr>
ACCtomeek <tomeek99@gmail.com> ACCtomeek <tomeek99@gmail.com>
adam3adam <br.ada@seznam.cz>
Adanteh Adanteh
aeroson aeroson
Aggr094 <bastards4glory@gmail.com> Aggr094 <bastards4glory@gmail.com>
alef <alefor@gmail.com>
Aleksey EpMAK Yermakov <epmak777@gmail.com>
Alganthe <alganthe@live.fr> Alganthe <alganthe@live.fr>
Anthariel <Contact@storm-simulation.com> Anthariel <Contact@storm-simulation.com>
Asgar Serran <piechottaf@web.de>
Bla1337
BlackPixxel
BlackQwar BlackQwar
Brakoviejo Brakoviejo
Brisse <brisse@outlook.com> Brisse <brisse@outlook.com>
BullHorn <bullhorn7@gmail.com>
Clon1998 <ps.patti1998@gmail.com> Clon1998 <ps.patti1998@gmail.com>
Codingboy Codingboy
Coren <coren4@gmail.com>
Crusty Crusty
Dharma Bellamkonda <dharma.bellamkonda@gmail.com>
Dimaslg <dimaslg@telecable.es>
eRazeri eRazeri
evromalarkey <evromalarkey@gmail.com> evromalarkey <evromalarkey@gmail.com>
Falke75 Falke75
@ -47,49 +58,46 @@ Filip Basara <filip.basara93@googlemail.com>
FreeZbe <freeseb@gmail.com> FreeZbe <freeseb@gmail.com>
geraldbolso1899 geraldbolso1899
Ghost Ghost
Gianmarco Varriale (TeamNuke) <admin@forhost.org>
GieNkoV <gienkov.grzegorz@gmail.com> GieNkoV <gienkov.grzegorz@gmail.com>
gpgpgpgp gpgpgpgp
Grzegorz Grzegorz
Gianmarco Varriale (TeamNuke) <admin@forhost.org>
Hamburger SV Hamburger SV
Harakhti <shadowdragonphd@gmail.com> Harakhti <shadowdragonphd@gmail.com>
havena <silveredenis@gmail.com> havena <silveredenis@gmail.com>
Hawkins Hawkins
jokoho48 jokoho482 <jokoho482@gmail.com>`
Jonpas <jonpas33@gmail.com> Jonpas <jonpas33@gmail.com>
Kavinsky <nmunozfernandez@gmail.com>
Kllrt <kllrtik@gmail.com> Kllrt <kllrtik@gmail.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>
Macusercom <macusercom@gmail.com>
MarcBook MarcBook
meat <p.humberdroz@gmail.com> meat <p.humberdroz@gmail.com>
Michail Nikolaev Michail Nikolaev
nic547 <nic547@outlook.com> nic547 <nic547@outlook.com>
nikolauska <nikolauska1@gmail.com>
nomisum <nomisum@gmail.com> nomisum <nomisum@gmail.com>
OnkelDisMaster <onkeldismaster@gmail.com>
oscarmolinadev oscarmolinadev
pokertour pokertour
Professor <lukas.trneny@wo.cz>
rakowozz rakowozz
ramius86 <pasini86@hotmail.com>
Raspu86 Raspu86
Riccardo Petricca <petriccarcc@gmail.com> Riccardo Petricca <petriccarcc@gmail.com>
Robert Boklahánics <bokirobi@gmail.com> Robert Boklahánics <bokirobi@gmail.com>
ramius86 <pasini86@hotmail.com> ruPaladin <happyworm24@rambler.ru>
simon84 <badguy360th@gmail.com> simon84 <badguy360th@gmail.com>
Sniperwolf572 <tenga6@gmail.com> Sniperwolf572 <tenga6@gmail.com>
SzwedzikPL <szwedzikpl@gmail.com>
Tachi <zaveruha007@gmail.com> Tachi <zaveruha007@gmail.com>
Toaster <jonathan.pereira@gmail.com> Toaster <jonathan.pereira@gmail.com>
Tonic Tonic
Tourorist <tourorist@gmail.com> Tourorist <tourorist@gmail.com>
Valentin Torikian <valentin.torikian@gmail.com> Valentin Torikian <valentin.torikian@gmail.com>
zGuba
Aleksey EpMAK Yermakov <epmak777@gmail.com>
ruPaladin <happyworm24@rambler.ru>
BlackPixxel
Asgar Serran <piechottaf@web.de>
Kavinsky <nmunozfernandez@gmail.com>
Coren <coren4@gmail.com>
OnkelDisMaster <onkeldismaster@gmail.com>
Dimaslg <dimaslg@telecable.e>
VyMajoris(W-Cephei)<vycanismajoriscsa@gmail.com> VyMajoris(W-Cephei)<vycanismajoriscsa@gmail.com>
Bla1337 Winter <simon@agius-muscat.net>
nikolauska <nikolauska1@gmail.com> zGuba
adam3adam <br.ada@seznam.cz>
Professor <lukas.trneny@wo.cz>

View File

@ -4,23 +4,23 @@
</p> </p>
<p align="center"> <p align="center">
<a href="https://github.com/acemod/ACE3/releases"> <a href="https://github.com/acemod/ACE3/releases">
<img src="http://img.shields.io/badge/Version-3.0.0-blue.svg?style=flat" <img src="https://img.shields.io/badge/Version-3.1.1-blue.svg"
alt="ACE version"> alt="ACE version">
</a> </a>
<a href="https://github.com/acemod/ACE3/archive/master.zip"> <a href="https://github.com/acemod/ACE3/releases/download/v3.1.1/ace3_3.1.1.zip">
<img src="http://img.shields.io/badge/Download-48.3_MB-green.svg?style=flat" <img src="http://img.shields.io/badge/Download-51.7_MB-green.svg"
alt="ACE download"> alt="ACE download">
</a> </a>
<a href="https://github.com/acemod/ACE3/issues"> <a href="https://github.com/acemod/ACE3/issues">
<img src="http://img.shields.io/github/issues-raw/acemod/ACE3.svg?style=flat&label=Issues" <img src="http://img.shields.io/github/issues-raw/acemod/ACE3.svg?label=Issues"
alt="ACE issues"> alt="ACE issues">
</a> </a>
<a href="http://forums.bistudio.com/showthread.php?190433-ACE3-A-collaborative-merger-between-AGM-CSE-and-ACE&p=2910796&viewfull=1#post2910796"> <a href="http://forums.bistudio.com/showthread.php?191716-ACE3-A-collaborative-merger-between-AGM-CSE-and-ACE&p=2935435&viewfull=1#post2935435">
<img src="https://img.shields.io/badge/BIF-Thread-lightgrey.svg?style=flat" <img src="https://img.shields.io/badge/BIF-Thread-lightgrey.svg"
alt="BIF thread"> alt="BIF thread">
</a> </a>
<a href="https://github.com/acemod/ACE3/blob/master/LICENSE"> <a href="https://github.com/acemod/ACE3/blob/master/LICENSE">
<img src="http://img.shields.io/badge/License-GPLv2-red.svg?style=flat" <img src="http://img.shields.io/badge/License-GPLv2-red.svg"
alt="ACE license"> alt="ACE license">
</a> </a>
</p> </p>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
ace_medical.dll Normal file

Binary file not shown.

BIN
ace_parse_imagepath.dll Normal file

Binary file not shown.

View File

@ -0,0 +1 @@
z\ace\addons\advanced_ballistics

View File

@ -5,23 +5,29 @@ class ACE_Settings {
typeName = "BOOL"; typeName = "BOOL";
value = 0; value = 0;
}; };
class GVAR(alwaysSimulateForSnipers) { class GVAR(simulateForSnipers) {
displayName = "Always Enabled For Snipers"; displayName = "Enabled For Snipers";
description = "Always enables advanced ballistics when high power optics are used"; description = "Enables advanced ballistics for non local snipers (when using high power optics)";
typeName = "BOOL"; typeName = "BOOL";
value = 1; value = 1;
}; };
class GVAR(disabledInFullAutoMode) { class GVAR(simulateForGroupMembers) {
displayName = "Disabled In FullAuto Mode"; displayName = "Enabled For Group Members";
description = "Disables the advanced ballistics during full auto fire"; description = "Enables advanced ballistics for non local group members";
typeName = "BOOL"; typeName = "BOOL";
value = 0; value = 0;
}; };
class GVAR(onlyActiveForLocalPlayers) { class GVAR(simulateForEveryone) {
displayName = "Disabled For Non Local Players"; displayName = "Enabled For Everyone";
description = "Disables the advanced ballistics for bullets coming from other players (enable this if you encounter frame drops during heavy firefights in multiplayer)"; description = "Enables advanced ballistics for all non local players (enabling this may degrade performance during heavy firefights in multiplayer)";
typeName = "BOOL"; typeName = "BOOL";
value = 1; value = 0;
};
class GVAR(disabledInFullAutoMode) {
displayName = "Disabled In FullAuto Mode";
description = "Disables advanced ballistics during full auto fire";
typeName = "BOOL";
value = 0;
}; };
/* // TODO: We currently do not have firedEHs on vehicles /* // TODO: We currently do not have firedEHs on vehicles
class GVAR(vehicleGunnerEnabled) { class GVAR(vehicleGunnerEnabled) {

View File

@ -2,7 +2,7 @@ class CfgVehicles {
class ACE_Module; class ACE_Module;
class GVAR(ModuleSettings): ACE_Module { class GVAR(ModuleSettings): ACE_Module {
scope = 2; scope = 2;
displayName = "Advanced Ballistics"; displayName = CSTRING(DisplayName);
icon = QUOTE(PATHTOF(UI\Icon_Module_Wind_ca.paa)); icon = QUOTE(PATHTOF(UI\Icon_Module_Wind_ca.paa));
category = "ACE"; category = "ACE";
function = QUOTE(DFUNC(initModuleSettings)); function = QUOTE(DFUNC(initModuleSettings));
@ -12,29 +12,35 @@ class CfgVehicles {
author = "Ruthberg"; author = "Ruthberg";
class Arguments { class Arguments {
class enabled { class enabled {
displayName = "Advanced Ballistics"; displayName = CSTRING(enabled_DisplayName);
description = "Enables advanced ballistics"; description = CSTRING(enabled_Description);
typeName = "BOOL"; typeName = "BOOL";
defaultValue = 0; defaultValue = 0;
}; };
class alwaysSimulateForSnipers { class simulateForSnipers {
displayName = "Always Enabled For Snipers"; displayName = CSTRING(simulateForSnipers_DisplayName);
description = "Always enables advanced ballistics when high power optics are used"; description = CSTRING(simulateForSnipers_Description);
typeName = "BOOL"; typeName = "BOOL";
defaultValue = 1; defaultValue = 1;
}; };
class simulateForGroupMembers {
displayName = CSTRING(simulateForGroupMembers_DisplayName);
description = CSTRING(simulateForGroupMembers_Description);
typeName = "BOOL";
defaultValue = 0;
};
class simulateForEveryone {
displayName = CSTRING(simulateForEveryone_DisplayName);
description = CSTRING(simulateForEveryone_Description);
typeName = "BOOL";
defaultValue = 0;
};
class disabledInFullAutoMode { class disabledInFullAutoMode {
displayName = "Disabled In FullAuto Mode"; displayName = CSTRING(disabledInFullAutoMod_DisplayName);
description = "Disables the advanced ballistics during full auto fire"; description = CSTRING(disabledInFullAutoMod_Description);
typeName = "BOOL"; typeName = "BOOL";
defaultValue = 0; defaultValue = 0;
}; };
class onlyActiveForLocalPlayers {
displayName = "Disabled For Non Local Players";
description = "Disables the advanced ballistics for bullets coming from other players (enable this if you encounter frame drops during heavy firefights in multiplayer)";
typeName = "BOOL";
defaultValue = 1;
};
/* // TODO: We currently do not have firedEHs on vehicles /* // TODO: We currently do not have firedEHs on vehicles
class vehicleGunnerEnabled { class vehicleGunnerEnabled {
displayName = "Enabled For Vehicle Gunners"; displayName = "Enabled For Vehicle Gunners";
@ -44,35 +50,38 @@ class CfgVehicles {
}; };
*/ */
class ammoTemperatureEnabled { class ammoTemperatureEnabled {
displayName = "Enable Ammo Temperature Simulation"; displayName = CSTRING(ammoTemperatureEnabled_DisplayName);
description = "Muzzle velocity varies with ammo temperature"; description = CSTRING(ammoTemperatureEnabled_Description);
typeName = "BOOL"; typeName = "BOOL";
defaultValue = 1; defaultValue = 1;
}; };
class barrelLengthInfluenceEnabled { class barrelLengthInfluenceEnabled {
displayName = "Enable Barrel Length Simulation"; displayName = CSTRING(barrelLengthInfluenceEnabled_DisplayName);
description = "Muzzle velocity varies with barrel length"; description = CSTRING(barrelLengthInfluenceEnabled_Description);
typeName = "BOOL"; typeName = "BOOL";
defaultValue = 1; defaultValue = 1;
}; };
class bulletTraceEnabled { class bulletTraceEnabled {
displayName = "Enable Bullet Trace Effect"; displayName = CSTRING(bulletTraceEnabled_DisplayName);
description = "Enables a bullet trace effect to high caliber bullets (only visible when looking through high power optics)"; description = CSTRING(bulletTraceEnabled_Description);
typeName = "BOOL"; typeName = "BOOL";
defaultValue = 1; defaultValue = 1;
}; };
class simulationInterval { class simulationInterval {
displayName = "Simulation Interval"; displayName = CSTRING(simulationInterval_DisplayName);
description = "Defines the interval between every calculation step"; description = CSTRING(simulationInterval_Description);
typeName = "NUMBER"; typeName = "NUMBER";
defaultValue = 0.0; defaultValue = 0.0;
}; };
class simulationRadius { class simulationRadius {
displayName = "Simulation Radius"; displayName = CSTRING(simulationRadius_DisplayName);
description = "Defines the radius around the player (in meters) at which advanced ballistics are applied to projectiles"; description = CSTRING(simulationRadius_Description);
typeName = "NUMBER"; typeName = "NUMBER";
defaultValue = 3000; defaultValue = 3000;
}; };
}; };
class ModuleDescription {
description = CSTRING(Description);
};
}; };
}; };

View File

@ -1,17 +1,13 @@
class RscTitles class RscTitles {
{ class RscTurretDial {
class RscTurretDial
{
idd=-1; idd=-1;
onLoad="with uiNameSpace do { RscTurretDial = _this select 0 };"; onLoad="with uiNameSpace do { RscTurretDial = _this select 0 };";
movingEnable=0; movingEnable=0;
duration=5; duration=5;
fadeIn="false"; fadeIn="false";
fadeOut="false"; fadeOut="false";
class controls class controls {
{ class RscTurretDial {
class RscTurretDial
{
idc=132949; idc=132949;
type=0; type=0;
style=128; style=128;
@ -28,18 +24,15 @@ class RscTitles
}; };
}; };
class RscProtractor class RscProtractor {
{
idd=-1; idd=-1;
onLoad="with uiNameSpace do { RscProtractor = _this select 0 };"; onLoad="with uiNameSpace do { RscProtractor = _this select 0 };";
movingEnable=0; movingEnable=0;
duration=60; duration=60;
fadeIn="false"; fadeIn="false";
fadeOut="false"; fadeOut="false";
class controls class controls {
{ class RscProtractorBase {
class RscProtractorBase
{
idc=132950; idc=132950;
type=0; type=0;
style=48; style=48;
@ -54,8 +47,7 @@ class RscTitles
sizeEx=0.027; sizeEx=0.027;
text=""; text="";
}; };
class RscProtractorMarker : RscProtractorBase class RscProtractorMarker : RscProtractorBase {
{
idc=132951; idc=132951;
}; };
}; };

View File

@ -4,24 +4,11 @@
GVAR(currentbulletID) = -1; GVAR(currentbulletID) = -1;
GVAR(bulletDatabase) = [];
GVAR(bulletDatabaseStartTime) = [];
GVAR(bulletDatabaseSpeed) = [];
GVAR(bulletDatabaseFrames) = [];
GVAR(bulletDatabaseLastFrame) = [];
GVAR(bulletDatabaseHDeflect) = [];
GVAR(bulletDatabaseSpinDrift) = [];
GVAR(bulletDatabaseOccupiedIndices) = [];
GVAR(bulletDatabaseFreeIndices) = [];
GVAR(WindInfo) = false;
GVAR(WindInfoStart) = time;
GVAR(Protractor) = false; GVAR(Protractor) = false;
GVAR(ProtractorStart) = time; GVAR(ProtractorStart) = ACE_time;
GVAR(currentGrid) = 0; GVAR(currentGrid) = 0;
GVAR(INIT_MESSAGE_ENABLED) = false; GVAR(initMessageEnabled) = false;
GVAR(extensionAvailable) = true; GVAR(extensionAvailable) = true;
/* @TODO: Remove this until versioning is in sync with cmake/build versioning /* @TODO: Remove this until versioning is in sync with cmake/build versioning

View File

@ -6,12 +6,12 @@ PREP(calculateAmmoTemperatureVelocityShift);
PREP(calculateAtmosphericCorrection); PREP(calculateAtmosphericCorrection);
PREP(calculateBarrelLengthVelocityShift); PREP(calculateBarrelLengthVelocityShift);
PREP(calculateRetardation); PREP(calculateRetardation);
PREP(calculateRoughnessLength);
PREP(calculateStabilityFactor); PREP(calculateStabilityFactor);
PREP(calculateWindSpeed);
PREP(displayProtractor); PREP(displayProtractor);
PREP(handleFired); PREP(handleFired);
PREP(initializeTerrainExtension); PREP(initializeTerrainExtension);
PREP(initModuleSettings); PREP(initModuleSettings);
PREP(readAmmoDataFromConfig);
PREP(readWeaponDataFromConfig);
ADDON = true; ADDON = true;

View File

@ -5,7 +5,7 @@ class CfgPatches {
units[] = {}; units[] = {};
weapons[] = {}; weapons[] = {};
requiredVersion = REQUIRED_VERSION; requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_ballistics", "ace_weather", "ace_modules"}; requiredAddons[] = {"ace_ballistics", "ace_weather"};
author[] = {"Ruthberg"}; author[] = {"Ruthberg"};
authorUrl = "https://github.com/ulteq"; authorUrl = "https://github.com/ulteq";
VERSION_CONFIG; VERSION_CONFIG;

View File

@ -4,7 +4,7 @@
* Calculates the ammo temperature induced muzzle velocity shift * Calculates the ammo temperature induced muzzle velocity shift
* *
* Arguments: * Arguments:
* 0: ammo - classname <string> * 0: muzzle velocity shift lookup table - m/s <ARRAY>
* 1: temperature - degrees celcius <NUMBER> * 1: temperature - degrees celcius <NUMBER>
* *
* Return Value: * Return Value:
@ -15,17 +15,11 @@
*/ */
#include "script_component.hpp" #include "script_component.hpp"
private ["_ammo", "_temperature", "_muzzleVelocityTable", "_muzzleVelocityShift", "_temperatureIndexA", "_temperatureIndexB", "_temperatureRatio"]; private ["_muzzleVelocityShiftTable", "_temperature", "_muzzleVelocityShift", "_temperatureIndexA", "_temperatureIndexB", "_temperatureRatio"];
_ammo = _this select 0; _muzzleVelocityShiftTable = _this select 0;
_temperature = _this select 1; _temperature = _this select 1;
_muzzleVelocityTable = []; if (count _muzzleVelocityShiftTable != 11) exitWith { 0 };
if (isArray(configFile >> "cfgAmmo" >> _ammo >> "ACE_ammoTempMuzzleVelocityShifts")) then {
_muzzleVelocityTable = getArray(configFile >> "cfgAmmo" >> _ammo >> "ACE_ammoTempMuzzleVelocityShifts");
};
if (count _muzzleVelocityTable != 11) exitWith { 0 };
_temperatureIndexA = floor((_temperature + 15) / 5); _temperatureIndexA = floor((_temperature + 15) / 5);
_temperatureIndexA = 0 max _temperatureIndexA; _temperatureIndexA = 0 max _temperatureIndexA;
@ -37,6 +31,6 @@ _temperatureIndexB = _temperatureIndexB min 10;
_temperatureRatio = ((_temperature + 15) / 5) - floor((_temperature + 15) / 5); _temperatureRatio = ((_temperature + 15) / 5) - floor((_temperature + 15) / 5);
_muzzleVelocityShift = (_muzzleVelocityTable select _temperatureIndexA) * (1 - _temperatureRatio) + (_muzzleVelocityTable select _temperatureIndexB) * _temperatureRatio; _muzzleVelocityShift = (_muzzleVelocityShiftTable select _temperatureIndexA) * (1 - _temperatureRatio) + (_muzzleVelocityShiftTable select _temperatureIndexB) * _temperatureRatio;
_muzzleVelocityShift _muzzleVelocityShift

View File

@ -4,9 +4,10 @@
* Calculates the muzzle velocity shift caused by different barrel lengths * Calculates the muzzle velocity shift caused by different barrel lengths
* *
* Arguments: * Arguments:
* 0: ammo - classname <string> * 0: barrel length - mm
* 0: weapon - classname <string> * 1: muzzle velocity lookup table - m/s <ARRAY>
* 1: muzzle velocity - m/s <NUMBER> * 2: barrel length lookup table - mm <ARRAY>
* 3: muzzle velocity - m/s <NUMBER>
* *
* Return Value: * Return Value:
* 0: muzzle velocity shift - m/s <NUMBER> * 0: muzzle velocity shift - m/s <NUMBER>
@ -16,25 +17,13 @@
*/ */
#include "script_component.hpp" #include "script_component.hpp"
private ["_ammo", "_weapon", "_barrelLength", "_muzzleVelocityTable", "_barrelLengthTable", "_muzzleVelocity", "_lowerIndex", "_upperIndex", "_barrelLengthRatio", "_muzzleVelocityNew"]; private ["_barrelLength", "_muzzleVelocityTable", "_barrelLengthTable", "_muzzleVelocity", "_lowerIndex", "_upperIndex", "_barrelLengthRatio", "_muzzleVelocityNew"];
_ammo = _this select 0; _barrelLength = _this select 0;
_weapon = _this select 1; _muzzleVelocityTable = _this select 1;
_muzzleVelocity = _this select 2; _barrelLengthTable = _this select 2;
_muzzleVelocity = _this select 3;
_barrelLength = getNumber(configFile >> "cfgWeapons" >> _weapon >> "ACE_barrelLength");
if (_barrelLength == 0) exitWith { 0 }; if (_barrelLength == 0) exitWith { 0 };
_muzzleVelocityTable = [];
_barrelLengthTable = [];
if (isArray(configFile >> "cfgAmmo" >> _ammo >> "ACE_muzzleVelocities")) then {
_muzzleVelocityTable = getArray(configFile >> "cfgAmmo" >> _ammo >> "ACE_muzzleVelocities");
};
if (isArray(configFile >> "cfgAmmo" >> _ammo >> "ACE_barrelLengths")) then {
_barrelLengthTable = getArray(configFile >> "cfgAmmo" >> _ammo >> "ACE_barrelLengths");
};
if (count _muzzleVelocityTable != count _barrelLengthTable) exitWith { 0 }; if (count _muzzleVelocityTable != count _barrelLengthTable) exitWith { 0 };
if (count _muzzleVelocityTable == 0 || count _barrelLengthTable == 0) exitWith { 0 }; if (count _muzzleVelocityTable == 0 || count _barrelLengthTable == 0) exitWith { 0 };
if (count _muzzleVelocityTable == 1) exitWith { (_muzzleVelocityTable select 0) - _muzzleVelocity }; if (count _muzzleVelocityTable == 1) exitWith { (_muzzleVelocityTable select 0) - _muzzleVelocity };

View File

@ -4,10 +4,10 @@
* Calculates the stability factor of a bullet * Calculates the stability factor of a bullet
* *
* Arguments: * Arguments:
* 0: caliber - inches <NUMBER> * 0: caliber - mm <NUMBER>
* 1: bullet length - inches <NUMBER> * 1: bullet length - mm <NUMBER>
* 2: bullet mass - grains <NUMBER> * 2: bullet mass - grams <NUMBER>
* 3: barrel twist - inches <NUMBER> * 3: barrel twist - mm <NUMBER>
* 4: muzzle velocity shift - m/s <NUMBER> * 4: muzzle velocity shift - m/s <NUMBER>
* 5: temperature - degrees celcius <NUMBER> * 5: temperature - degrees celcius <NUMBER>
* 6: barometric Pressure - hPA <NUMBER> * 6: barometric Pressure - hPA <NUMBER>
@ -17,6 +17,7 @@
* *
* Public: No * Public: No
*/ */
#include "script_component.hpp"
private ["_caliber", "_bulletLength", "_bulletMass", "_barrelTwist", "_muzzleVelocity", "_temperature", "_barometricPressure", "_l", "_t", "_stabilityFactor"]; private ["_caliber", "_bulletLength", "_bulletMass", "_barrelTwist", "_muzzleVelocity", "_temperature", "_barometricPressure", "_l", "_t", "_stabilityFactor"];
_caliber = _this select 0; _caliber = _this select 0;
@ -31,15 +32,14 @@ _barometricPressure = _this select 6;
_t = _barrelTwist / _caliber; _t = _barrelTwist / _caliber;
_l = _bulletLength / _caliber; _l = _bulletLength / _caliber;
_stabilityFactor = 30 * _bulletMass / (_t^2 * _caliber^3 * _l * (1 + _l^2)); _stabilityFactor = 7587000 * _bulletMass / (_t^2 * _caliber^3 * _l * (1 + _l^2));
_muzzleVelocity = _muzzleVelocity * 3.2808399; if (_muzzleVelocity > 341.376) then {
if (_muzzleVelocity > 1120) then { _stabilityFactor = _stabilityFactor * (_muzzleVelocity / 853.44) ^ (1/3);
_stabilityFactor = _stabilityFactor * (_muzzleVelocity / 2800) ^ (1/3);
} else { } else {
_stabilityFactor = _stabilityFactor * (_muzzleVelocity / 1120) ^ (1/3); _stabilityFactor = _stabilityFactor * (_muzzleVelocity / 341.376) ^ (1/3);
}; };
_stabilityFactor = _stabilityFactor * (_temperature + 273) / (15 + 273) * 1013.25 / _barometricPressure; _stabilityFactor = _stabilityFactor * KELVIN(_temperature) / KELVIN(15) * 1013.25 / _barometricPressure;
_stabilityFactor _stabilityFactor

View File

@ -1,78 +0,0 @@
/*
* Author: Ruthberg
*
* Calculates the true wind speed at a given world position
*
* Arguments:
* 0: _this - world position <posASL>
*
* Return Value:
* 0: wind speed - m/s <NUMBER>
*
* Public: No
*/
#include "script_component.hpp"
private ["_windSpeed", "_windDir", "_height", "_newWindSpeed", "_windSource", "_roughnessLength"];
fnc_polar2vect = {
private ["_mag2D"];
_mag2D = (_this select 0) * cos((_this select 2));
[_mag2D * sin((_this select 1)), _mag2D * cos((_this select 1)), (_this select 0) * sin((_this select 2))];
};
_windSpeed = vectorMagnitude ACE_wind;
_windDir = (ACE_wind select 0) atan2 (ACE_wind select 1);
// Wind gradient
if (_windSpeed > 0.05) then {
_height = (ASLToATL _this) select 2;
_height = 0 max _height min 20;
if (_height < 20) then {
_roughnessLength = _this call FUNC(calculateRoughnessLength);
_windSpeed = _windSpeed * ln(_height / _roughnessLength) / ln(20 / _roughnessLength);
};
};
// Terrain effect on wind
if (_windSpeed > 0.05) then {
_newWindSpeed = 0;
{
_windSource = [100, _windDir + 180, _x] call fnc_polar2vect;
if (!(terrainIntersectASL [_this, _this vectorAdd _windSource])) exitWith {
_newWindSpeed = cos(_x * 9) * _windSpeed;
};
_windSource = [100, _windDir + 180 + _x, 0] call fnc_polar2vect;
if (!(terrainIntersectASL [_this, _this vectorAdd _windSource])) exitWith {
_newWindSpeed = cos(_x * 9) * _windSpeed;
};
_windSource = [100, _windDir + 180 - _x, 0] call fnc_polar2vect;
if (!(terrainIntersectASL [_this, _this vectorAdd _windSource])) exitWith {
_newWindSpeed = cos(_x * 9) * _windSpeed;
};
} forEach [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
_windSpeed = _newWindSpeed;
};
// Obstacle effect on wind
if (_windSpeed > 0.05) then {
_newWindSpeed = 0;
{
_windSource = [20, _windDir + 180, _x] call fnc_polar2vect;
if (!(lineIntersects [_this, _this vectorAdd _windSource])) exitWith {
_newWindSpeed = cos(_x * 2) * _windSpeed;
};
_windSource = [20, _windDir + 180 + _x, 0] call fnc_polar2vect;
if (!(lineIntersects [_this, _this vectorAdd _windSource])) exitWith {
_newWindSpeed = cos(_x * 2) * _windSpeed;
};
_windSource = [20, _windDir + 180 - _x, 0] call fnc_polar2vect;
if (!(lineIntersects [_this, _this vectorAdd _windSource])) exitWith {
_newWindSpeed = cos(_x * 2) * _windSpeed;
};
} forEach [0, 5, 10, 15, 20, 25, 30, 35, 40, 45];
_windSpeed = _newWindSpeed;
};
_windSpeed = 0 max _windSpeed;
_windSpeed

View File

@ -45,12 +45,12 @@ GVAR(Protractor) = true;
1 cutRsc ["RscProtractor", "PLAIN", 1, false]; 1 cutRsc ["RscProtractor", "PLAIN", 1, false];
__ctrl1 ctrlSetScale 0.75; __ctrl1 ctrlSetScale 1;
__ctrl1 ctrlCommit 0; __ctrl1 ctrlCommit 0;
__ctrl1 ctrlSetText QUOTE(PATHTOF(UI\protractor.paa)); __ctrl1 ctrlSetText QUOTE(PATHTOF(UI\protractor.paa));
__ctrl1 ctrlSetTextColor [1, 1, 1, 1]; __ctrl1 ctrlSetTextColor [1, 1, 1, 1];
__ctrl2 ctrlSetScale 0.75; __ctrl2 ctrlSetScale 1;
__ctrl2 ctrlSetPosition [(_refPosition select 0), (_refPosition select 1) - 0.0012 * _inclinationAngle, (_refPosition select 2), (_refPosition select 3)]; __ctrl2 ctrlSetPosition [(_refPosition select 0), (_refPosition select 1) - 0.0012 * _inclinationAngle, (_refPosition select 2), (_refPosition select 3)];
__ctrl2 ctrlCommit 0; __ctrl2 ctrlCommit 0;
__ctrl2 ctrlSetText QUOTE(PATHTOF(UI\protractor_marker.paa)); __ctrl2 ctrlSetText QUOTE(PATHTOF(UI\protractor_marker.paa));

View File

@ -19,7 +19,7 @@
*/ */
#include "script_component.hpp" #include "script_component.hpp"
private ["_unit", "_weapon", "_mode", "_ammo", "_magazine", "_caliber", "_bullet", "_abort", "_index", "_opticsName", "_opticType", "_bulletTraceVisible", "_temperature", "_barometricPressure", "_atmosphereModel", "_bulletMass", "_bulletLength", "_airFriction", "_dragModel", "_muzzleVelocity", "_muzzleVelocityShift", "_bulletVelocity", "_bulletSpeed", "_bulletLength", "_barrelTwist", "_twistDirection", "_stabilityFactor", "_transonicStabilityCoef", "_ballisticCoefficients", "_velocityBoundaries"]; private ["_unit", "_weapon", "_mode", "_ammo", "_magazine", "_caliber", "_bullet", "_abort", "_AmmoCacheEntry", "_WeaponCacheEntry", "_opticsName", "_opticType", "_bulletTraceVisible", "_temperature", "_barometricPressure", "_bulletMass", "_bulletLength", "_muzzleVelocity", "_muzzleVelocityShift", "_bulletVelocity", "_bulletSpeed", "_bulletLength", "_barrelTwist", "_stabilityFactor"];
_unit = _this select 0; _unit = _this select 0;
_weapon = _this select 1; _weapon = _this select 1;
_mode = _this select 3; _mode = _this select 3;
@ -35,32 +35,41 @@ if (!([_unit] call EFUNC(common,isPlayer))) exitWith {};
if (underwater _unit) exitWith {}; if (underwater _unit) exitWith {};
if (!(_ammo isKindOf "BulletBase")) exitWith {}; if (!(_ammo isKindOf "BulletBase")) exitWith {};
if (_unit distance ACE_player > GVAR(simulationRadius)) exitWith {}; if (_unit distance ACE_player > GVAR(simulationRadius)) exitWith {};
if (GVAR(onlyActiveForLocalPlayers) && !(local _unit)) then { if (!GVAR(simulateForEveryone) && !(local _unit)) then {
if (GVAR(alwaysSimulateForSnipers)) then { // The shooter is non local
// The shooter is non local _abort = true;
if (GVAR(simulateForSnipers)) then {
if (currentWeapon _unit == primaryWeapon _unit && count primaryWeaponItems _unit > 2) then { if (currentWeapon _unit == primaryWeapon _unit && count primaryWeaponItems _unit > 2) then {
_opticsName = (primaryWeaponItems _unit) select 2; _opticsName = (primaryWeaponItems _unit) select 2;
_opticType = getNumber(configFile >> "cfgWeapons" >> _opticsName >> "ItemInfo" >> "opticType"); _opticType = getNumber(configFile >> "CfgWeapons" >> _opticsName >> "ItemInfo" >> "opticType");
_abort = _opticType != 2; // We only abort if the non local shooter is not a sniper _abort = _opticType != 2; // We only abort if the non local shooter is not a sniper
}; };
} else { };
_abort = true; if (GVAR(simulateForGroupMembers) && _abort) then {
_abort = (group ACE_player) != (group _unit);
}; };
}; };
//if (!GVAR(vehicleGunnerEnabled) && !(_unit isKindOf "Man")) then { _abort = true; }; // We currently do not have firedEHs on vehicles //if (!GVAR(vehicleGunnerEnabled) && !(_unit isKindOf "Man")) then { _abort = true; }; // We currently do not have firedEHs on vehicles
if (GVAR(disabledInFullAutoMode) && getNumber(configFile >> "cfgWeapons" >> _weapon >> _mode >> "autoFire") == 1) then { _abort = true; }; if (GVAR(disabledInFullAutoMode) && getNumber(configFile >> "CfgWeapons" >> _weapon >> _mode >> "autoFire") == 1) then { _abort = true; };
if (_abort || !(GVAR(extensionAvailable))) exitWith { if (_abort || !(GVAR(extensionAvailable))) exitWith {
[_bullet, getNumber(configFile >> "cfgAmmo" >> _ammo >> "airFriction")] call EFUNC(winddeflection,updateTrajectoryPFH); [_bullet, getNumber(configFile >> "CfgAmmo" >> _ammo >> "airFriction")] call EFUNC(winddeflection,updateTrajectoryPFH);
}; };
_airFriction = getNumber(configFile >> "cfgAmmo" >> _ammo >> "airFriction"); _AmmoCacheEntry = uiNamespace getVariable format[QGVAR(%1), _ammo];
if (isNil {_AmmoCacheEntry}) then {
_AmmoCacheEntry = _ammo call FUNC(readAmmoDataFromConfig);
};
_WeaponCacheEntry = uiNamespace getVariable format[QGVAR(%1), _weapon];
if (isNil {_WeaponCacheEntry}) then {
_WeaponCacheEntry = _weapon call FUNC(readWeaponDataFromConfig);
};
_bulletVelocity = velocity _bullet; _bulletVelocity = velocity _bullet;
_muzzleVelocity = vectorMagnitude _bulletVelocity; _muzzleVelocity = vectorMagnitude _bulletVelocity;
if (GVAR(barrelLengthInfluenceEnabled)) then { if (GVAR(barrelLengthInfluenceEnabled)) then {
_muzzleVelocityShift = [_ammo, _weapon, _muzzleVelocity] call FUNC(calculateBarrelLengthVelocityShift); _muzzleVelocityShift = [_WeaponCacheEntry select 2, _AmmoCacheEntry select 10, _AmmoCacheEntry select 11, _muzzleVelocity] call FUNC(calculateBarrelLengthVelocityShift);
if (_muzzleVelocityShift != 0) then { if (_muzzleVelocityShift != 0) then {
_bulletVelocity = _bulletVelocity vectorAdd ((vectorNormalized _bulletVelocity) vectorMultiply (_muzzleVelocityShift)); _bulletVelocity = _bulletVelocity vectorAdd ((vectorNormalized _bulletVelocity) vectorMultiply (_muzzleVelocityShift));
_bullet setVelocity _bulletVelocity; _bullet setVelocity _bulletVelocity;
@ -69,8 +78,8 @@ if (GVAR(barrelLengthInfluenceEnabled)) then {
}; };
if (GVAR(ammoTemperatureEnabled)) then { if (GVAR(ammoTemperatureEnabled)) then {
_temperature = GET_TEMPERATURE_AT_HEIGHT((getPosASL _unit) select 2); _temperature = ((getPosASL _unit) select 2) call EFUNC(weather,calculateTemperatureAtHeight);
_muzzleVelocityShift = [_ammo, _temperature] call FUNC(calculateAmmoTemperatureVelocityShift); _muzzleVelocityShift = [_AmmoCacheEntry select 9, _temperature] call FUNC(calculateAmmoTemperatureVelocityShift);
if (_muzzleVelocityShift != 0) then { if (_muzzleVelocityShift != 0) then {
_bulletVelocity = _bulletVelocity vectorAdd ((vectorNormalized _bulletVelocity) vectorMultiply (_muzzleVelocityShift)); _bulletVelocity = _bulletVelocity vectorAdd ((vectorNormalized _bulletVelocity) vectorMultiply (_muzzleVelocityShift));
_bullet setVelocity _bulletVelocity; _bullet setVelocity _bulletVelocity;
@ -85,60 +94,27 @@ if (GVAR(bulletTraceEnabled) && cameraView == "GUNNER") then {
} 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 {
_opticsName = (primaryWeaponItems ACE_player) select 2; _opticsName = (primaryWeaponItems ACE_player) select 2;
_opticType = getNumber(configFile >> "cfgWeapons" >> _opticsName >> "ItemInfo" >> "opticType"); _opticType = getNumber(configFile >> "CfgWeapons" >> _opticsName >> "ItemInfo" >> "opticType");
_bulletTraceVisible = _opticType == 2; _bulletTraceVisible = _opticType == 2;
}; };
}; };
}; };
_caliber = getNumber(configFile >> "cfgAmmo" >> _ammo >> "ACE_caliber"); _caliber = _AmmoCacheEntry select 1;
_bulletLength = getNumber(configFile >> "cfgAmmo" >> _ammo >> "ACE_bulletLength"); _bulletLength = _AmmoCacheEntry select 2;
_bulletMass = getNumber(configFile >> "cfgAmmo" >> _ammo >> "ACE_bulletMass"); _bulletMass = _AmmoCacheEntry select 3;
_barrelTwist = getNumber(configFile >> "cfgWeapons" >> _weapon >> "ACE_barrelTwist"); _barrelTwist = _WeaponCacheEntry select 0;
_stabilityFactor = 1.5; _stabilityFactor = 1.5;
if (_caliber > 0 && _bulletLength > 0 && _bulletMass > 0 && _barrelTwist > 0) then { if (_caliber > 0 && _bulletLength > 0 && _bulletMass > 0 && _barrelTwist > 0) then {
_temperature = GET_TEMPERATURE_AT_HEIGHT((getPosASL _unit) select 2); _temperature = ((getPosASL _unit) select 2) call EFUNC(weather,calculateTemperatureAtHeight);
_barometricPressure = ((getPosASL _bullet) select 2) call EFUNC(weather,calculateBarometricPressure); _barometricPressure = ((getPosASL _bullet) select 2) call EFUNC(weather,calculateBarometricPressure);
_stabilityFactor = [_caliber, _bulletLength, _bulletMass, _barrelTwist, _muzzleVelocity, _temperature, _barometricPressure] call FUNC(calculateStabilityFactor); _stabilityFactor = [_caliber, _bulletLength, _bulletMass, _barrelTwist, _muzzleVelocity, _temperature, _barometricPressure] call FUNC(calculateStabilityFactor);
}; };
_twistDirection = 1;
if (isNumber(configFile >> "cfgWeapons" >> _weapon >> "ACE_twistDirection")) then {
_twistDirection = getNumber(configFile >> "cfgWeapons" >> _weapon >> "ACE_twistDirection");
if (_twistDirection != -1 && _twistDirection != 0 && _twistDirection != 1) then {
_twistDirection = 1;
};
};
_transonicStabilityCoef = 0.5;
if (isNumber(configFile >> "cfgAmmo" >> _ammo >> "ACE_transonicStabilityCoef")) then {
_transonicStabilityCoef = getNumber(configFile >> "cfgAmmo" >> _ammo >> "ACE_transonicStabilityCoef");
};
_dragModel = 1;
_ballisticCoefficients = [];
_velocityBoundaries = [];
_atmosphereModel = "ICAO";
if (isNumber(configFile >> "cfgAmmo" >> _ammo >> "ACE_dragModel")) then {
_dragModel = getNumber(configFile >> "cfgAmmo" >> _ammo >> "ACE_dragModel");
if (!(_dragModel in [1, 2, 5, 6, 7, 8])) then {
_dragModel = 1;
};
};
if (isArray(configFile >> "cfgAmmo" >> _ammo >> "ACE_ballisticCoefficients")) then {
_ballisticCoefficients = getArray(configFile >> "cfgAmmo" >> _ammo >> "ACE_ballisticCoefficients");
};
if (isArray(configFile >> "cfgAmmo" >> _ammo >> "ACE_velocityBoundaries")) then {
_velocityBoundaries = getArray(configFile >> "cfgAmmo" >> _ammo >> "ACE_velocityBoundaries");
};
if (isText(configFile >> "cfgAmmo" >> _ammo >> "ACE_standardAtmosphere")) then {
_atmosphereModel = getText(configFile >> "cfgAmmo" >> _ammo >> "ACE_standardAtmosphere");
};
GVAR(currentbulletID) = (GVAR(currentbulletID) + 1) % 10000; GVAR(currentbulletID) = (GVAR(currentbulletID) + 1) % 10000;
"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 _bullet, EGVAR(weather,Latitude), EGVAR(weather,currentTemperature), EGVAR(weather,Altitude), EGVAR(weather,currentHumidity), overcast, floor(time), time - floor(time)]; "ace_advanced_ballistics" callExtension format["new:%1:%2:%3:%4:%5:%6:%7:%8:%9:%10:%11:%12:%13:%14:%15:%16:%17:%18", GVAR(currentbulletID), _AmmoCacheEntry select 0, _AmmoCacheEntry select 6, _AmmoCacheEntry select 7, _AmmoCacheEntry select 8, _AmmoCacheEntry select 5, _stabilityFactor, _WeaponCacheEntry select 1, _muzzleVelocity, _AmmoCacheEntry select 4, getPosASL _bullet, EGVAR(weather,Latitude), EGVAR(weather,currentTemperature), EGVAR(weather,Altitude), EGVAR(weather,currentHumidity), overcast, floor(ACE_time), ACE_time - floor(ACE_time)];
[{ [{
private ["_args", "_index", "_bullet", "_caliber", "_bulletTraceVisible", "_bulletVelocity", "_bulletPosition"]; private ["_args", "_index", "_bullet", "_caliber", "_bulletTraceVisible", "_bulletVelocity", "_bulletPosition"];
@ -157,10 +133,10 @@ GVAR(currentbulletID) = (GVAR(currentbulletID) + 1) % 10000;
[_this select 1] call cba_fnc_removePerFrameHandler; [_this select 1] call cba_fnc_removePerFrameHandler;
}; };
if (_bulletTraceVisible && _bulletSpeed > 600) then { if (_bulletTraceVisible && _bulletSpeed > 500) then {
drop ["\A3\data_f\ParticleEffects\Universal\Refract","","Billboard",1,0.1,getPos _bullet,[0,0,0],0,1.275,1,0,[0.4*_caliber,0.2*_caliber],[[0,0,0,0.6],[0,0,0,0.4]],[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, floor(time), time - floor(time)]); call compile ("ace_advanced_ballistics" callExtension format["simulate:%1:%2:%3:%4:%5:%6:%7", _index, _bulletVelocity, _bulletPosition, ACE_wind, ASLToATL(_bulletPosition) select 2, floor(ACE_time), ACE_time - floor(ACE_time)]);
}, GVAR(simulationInterval), [_bullet, _caliber, _bulletTraceVisible, GVAR(currentbulletID)]] call CBA_fnc_addPerFrameHandler; }, GVAR(simulationInterval), [_bullet, _caliber, _bulletTraceVisible, GVAR(currentbulletID)]] call CBA_fnc_addPerFrameHandler;

View File

@ -26,9 +26,10 @@ if !(_activated) exitWith {};
[_logic, QGVAR(ammoTemperatureEnabled), "ammoTemperatureEnabled"] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(ammoTemperatureEnabled), "ammoTemperatureEnabled"] call EFUNC(common,readSettingFromModule);
[_logic, QGVAR(barrelLengthInfluenceEnabled), "barrelLengthInfluenceEnabled"] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(barrelLengthInfluenceEnabled), "barrelLengthInfluenceEnabled"] call EFUNC(common,readSettingFromModule);
[_logic, QGVAR(bulletTraceEnabled), "bulletTraceEnabled"] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(bulletTraceEnabled), "bulletTraceEnabled"] call EFUNC(common,readSettingFromModule);
[_logic, QGVAR(onlyActiveForLocalPlayers), "onlyActiveForLocalPlayers"] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(simulateForEveryone), "simulateForEveryone"] call EFUNC(common,readSettingFromModule);
[_logic, QGVAR(disabledInFullAutoMode), "disabledInFullAutoMode"] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(disabledInFullAutoMode), "disabledInFullAutoMode"] call EFUNC(common,readSettingFromModule);
[_logic, QGVAR(alwaysSimulateForSnipers), "alwaysSimulateForSnipers"] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(simulateForSnipers), "simulateForSnipers"] call EFUNC(common,readSettingFromModule);
[_logic, QGVAR(simulateForGroupMembers), "simulateForGroupMembers"] call EFUNC(common,readSettingFromModule);
[_logic, QGVAR(simulationInterval), "simulationInterval"] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(simulationInterval), "simulationInterval"] call EFUNC(common,readSettingFromModule);
[_logic, QGVAR(simulationRadius), "simulationRadius"] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(simulationRadius), "simulationRadius"] call EFUNC(common,readSettingFromModule);

View File

@ -18,11 +18,11 @@ 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 = time; _initStartTime = ACE_time;
_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 {
if (GVAR(INIT_MESSAGE_ENABLED)) then { if (GVAR(initMessageEnabled)) then {
systemChat "AdvancedBallistics: Terrain already initialized"; systemChat "AdvancedBallistics: Terrain already initialized";
}; };
}; };
@ -40,8 +40,8 @@ GVAR(currentGrid) = 0;
_initStartTime = _args select 2; _initStartTime = _args select 2;
if (GVAR(currentGrid) >= _gridCells) exitWith { if (GVAR(currentGrid) >= _gridCells) exitWith {
if (GVAR(INIT_MESSAGE_ENABLED)) then { if (GVAR(initMessageEnabled)) then {
systemChat format["AdvancedBallistics: Finished terrain initialization in %1 seconds", ceil(time - _initStartTime)]; systemChat format["AdvancedBallistics: Finished terrain initialization in %1 seconds", ceil(ACE_time - _initStartTime)];
}; };
[_this select 1] call cba_fnc_removePerFrameHandler; [_this select 1] call cba_fnc_removePerFrameHandler;
}; };

View File

@ -0,0 +1,64 @@
/*
* Author: Ruthberg
*
* Reads the ammo class config and updates the config cache
*
* Arguments:
* 0: ammo - classname <string>
*
* Return Value:
* 0: [_airFriction, _caliber, _bulletLength, _bulletMass, _transonicStabilityCoef, _dragModel, _ballisticCoefficients, _velocityBoundaries, _atmosphereModel, _ammoTempMuzzleVelocityShifts, _muzzleVelocityTable, _barrelLengthTable] <ARRAY>
*
* Return value:
* None
*/
#include "script_component.hpp"
private ["_ammo", "_airFriction", "_caliber", "_bulletLength", "_bulletMass", "_transonicStabilityCoef", "_dragModel", "_ballisticCoefficients", "_velocityBoundaries", "_atmosphereModel", "_ammoTempMuzzleVelocityShifts", "_muzzleVelocityTable", "_barrelLengthTable", "_result"];
_ammo = _this;
_airFriction = getNumber(configFile >> "CfgAmmo" >> _ammo >> "airFriction");
_caliber = getNumber(configFile >> "CfgAmmo" >> _ammo >> "ACE_caliber");
_bulletLength = getNumber(configFile >> "CfgAmmo" >> _ammo >> "ACE_bulletLength");
_bulletMass = getNumber(configFile >> "CfgAmmo" >> _ammo >> "ACE_bulletMass");
_transonicStabilityCoef = 0.5;
if (isNumber(configFile >> "CfgAmmo" >> _ammo >> "ACE_transonicStabilityCoef")) then {
_transonicStabilityCoef = getNumber(configFile >> "CfgAmmo" >> _ammo >> "ACE_transonicStabilityCoef");
};
_dragModel = 1;
_ballisticCoefficients = [];
_velocityBoundaries = [];
_atmosphereModel = "ICAO";
if (isNumber(configFile >> "CfgAmmo" >> _ammo >> "ACE_dragModel")) then {
_dragModel = getNumber(configFile >> "CfgAmmo" >> _ammo >> "ACE_dragModel");
if (!(_dragModel in [1, 2, 5, 6, 7, 8])) then {
_dragModel = 1;
};
};
if (isArray(configFile >> "CfgAmmo" >> _ammo >> "ACE_ballisticCoefficients")) then {
_ballisticCoefficients = getArray(configFile >> "CfgAmmo" >> _ammo >> "ACE_ballisticCoefficients");
};
if (isArray(configFile >> "CfgAmmo" >> _ammo >> "ACE_velocityBoundaries")) then {
_velocityBoundaries = getArray(configFile >> "CfgAmmo" >> _ammo >> "ACE_velocityBoundaries");
};
if (isText(configFile >> "CfgAmmo" >> _ammo >> "ACE_standardAtmosphere")) then {
_atmosphereModel = getText(configFile >> "CfgAmmo" >> _ammo >> "ACE_standardAtmosphere");
};
_ammoTempMuzzleVelocityShifts = [];
if (isArray(configFile >> "CfgAmmo" >> _ammo >> "ACE_ammoTempMuzzleVelocityShifts")) then {
_ammoTempMuzzleVelocityShifts = getArray(configFile >> "CfgAmmo" >> _ammo >> "ACE_ammoTempMuzzleVelocityShifts");
};
_muzzleVelocityTable = [];
_barrelLengthTable = [];
if (isArray(configFile >> "CfgAmmo" >> _ammo >> "ACE_muzzleVelocities")) then {
_muzzleVelocityTable = getArray(configFile >> "CfgAmmo" >> _ammo >> "ACE_muzzleVelocities");
};
if (isArray(configFile >> "CfgAmmo" >> _ammo >> "ACE_barrelLengths")) then {
_barrelLengthTable = getArray(configFile >> "CfgAmmo" >> _ammo >> "ACE_barrelLengths");
};
_result = [_airFriction, _caliber, _bulletLength, _bulletMass, _transonicStabilityCoef, _dragModel, _ballisticCoefficients, _velocityBoundaries, _atmosphereModel, _ammoTempMuzzleVelocityShifts, _muzzleVelocityTable, _barrelLengthTable];
uiNamespace setVariable [format[QGVAR(%1), _ammo], _result];
_result

View File

@ -0,0 +1,34 @@
/*
* Author: Ruthberg
*
* Reads the weapon class config and updates the config cache
*
* Arguments:
* 0: weapon - classname <string>
*
* Return Value:
* 0: [_barrelTwist, _twistDirection, _barrelLength] <ARRAY>
*
* Return value:
* None
*/
#include "script_component.hpp"
private ["_weapon", "_barrelTwist", "_twistDirection", "_barrelLength", "_result"];
_weapon = _this;
_barrelTwist = getNumber(configFile >> "CfgWeapons" >> _weapon >> "ACE_barrelTwist");
_twistDirection = 1;
if (isNumber(configFile >> "CfgWeapons" >> _weapon >> "ACE_twistDirection")) then {
_twistDirection = getNumber(configFile >> "CfgWeapons" >> _weapon >> "ACE_twistDirection");
if (_twistDirection != -1 && _twistDirection != 0 && _twistDirection != 1) then {
_twistDirection = 1;
};
};
_barrelLength = getNumber(configFile >> "CfgWeapons" >> _weapon >> "ACE_barrelLength");
_result = [_barrelTwist, _twistDirection, _barrelLength];
uiNamespace setVariable [format[QGVAR(%1), _weapon], _result];
_result

View File

@ -1,4 +1,4 @@
["ACE3 Equipment", QGVAR(ProtractorKey), localize "STR_ACE_AdvancedBallistics_ProtractorKey", ["ACE3 Equipment", QGVAR(ProtractorKey), localize LSTRING(ProtractorKey),
{ {
// Conditions: canInteract // Conditions: canInteract
if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false}; if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false};

View File

@ -21,6 +21,5 @@
#define SPECIFIC_GAS_CONSTANT_DRY_AIR 287.058 #define SPECIFIC_GAS_CONSTANT_DRY_AIR 287.058
#define STD_AIR_DENSITY_ICAO 1.22498 #define STD_AIR_DENSITY_ICAO 1.22498
#define STD_AIR_DENSITY_ASM 1.20885 #define STD_AIR_DENSITY_ASM 1.20885
#define GET_TEMPERATURE_AT_HEIGHT(h) (EGVAR(weather,currentTemperature) - 0.0065 * (h))
#define EXTENSION_REQUIRED_VERSION "1.0" #define EXTENSION_REQUIRED_VERSION "1.0"

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project name="ACE"> <Project name="ACE">
<Package name="AdvancedBallistics"> <Package name="Advanced_Ballistics">
<Key ID="STR_ACE_AdvancedBallistics_WindInfoKey"> <Key ID="STR_ACE_Advanced_Ballistics_WindInfoKey">
<English>Show Wind Info</English> <English>Show Wind Info</English>
<Polish>Pokaż inf. o wietrze</Polish> <Polish>Pokaż inf. o wietrze</Polish>
<Italian>Mostra indicazioni del vento</Italian> <Italian>Mostra indicazioni del vento</Italian>
@ -13,7 +13,7 @@
<Czech>Zobrazit informace o větru</Czech> <Czech>Zobrazit informace o větru</Czech>
<Portuguese>Mostrar Informação do Vento</Portuguese> <Portuguese>Mostrar Informação do Vento</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_AdvancedBallistics_ProtractorKey"> <Key ID="STR_ACE_Advanced_Ballistics_ProtractorKey">
<English>Show Protractor</English> <English>Show Protractor</English>
<Polish>Pokaż kątomierz</Polish> <Polish>Pokaż kątomierz</Polish>
<Italian>Mostra il rapportatore</Italian> <Italian>Mostra il rapportatore</Italian>
@ -25,5 +25,194 @@
<Czech>Zobrazit úhloměr</Czech> <Czech>Zobrazit úhloměr</Czech>
<Portuguese>Mostrar Transferidor</Portuguese> <Portuguese>Mostrar Transferidor</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_Advanced_Ballistics_DisplayName">
<English>Advanced Ballistics</English>
<Polish>Zaawansowana balistyka</Polish>
<Spanish>Balística avanzada</Spanish>
<German>Erweiterte Ballistik</German>
<Czech>Pokročilá balistika</Czech>
<Portuguese>Balística avançada</Portuguese>
</Key>
<Key ID="STR_ACE_Advanced_Ballistics_enabled_DisplayName">
<English>Advanced Ballistics</English>
<Polish>Zaawansowana balistyka</Polish>
<Spanish>Balística avanzada</Spanish>
<German>Erweiterte Ballistik</German>
<Czech>Pokročilá balistika</Czech>
<Portuguese>Balística avançada</Portuguese>
</Key>
<Key ID="STR_ACE_Advanced_Ballistics_enabled_Description">
<English>Enables advanced ballistics</English>
<Polish>Aktywuje zaawansowaną balistykę</Polish>
<Spanish>Activa la balística avanzada</Spanish>
<German>Aktiviert die erweiterte Ballistik</German>
<Czech>Aktivuje pokročilou balistiku</Czech>
<Portuguese>Ativa balística avançada</Portuguese>
</Key>
<Key ID="STR_ACE_Advanced_Ballistics_simulateForSnipers_DisplayName">
<English>Enabled For Snipers</English>
<Spanish>Activada para francotiradores</Spanish>
<Polish>Akt. dla snajperów</Polish>
<German>Für Scharfschützen aktiviert</German>
<Czech>Povoleno pro odstřelovače</Czech>
<Portuguese>Ativar para caçadores</Portuguese>
</Key>
<Key ID="STR_ACE_Advanced_Ballistics_simulateForSnipers_Description">
<English>Enables advanced ballistics for non local snipers (when using high power optics)</English>
<Spanish>Activa la balística avanzada para francotiradores no locales (cuando se usa una mira telescópica)</Spanish>
<Polish>Aktywuje zaawansowaną balistykę dla nielokalnych snajperów (kiedy używają optyki)</Polish>
<German>Aktiviert die erweiterte Ballistik für nicht lokale Scharfschützen (bei Benutzung von Optiken mit starker Vergrößerung)</German>
<Czech>Aktivuje pokročilou balistiku pro nelokální odstřelovače (když používá výkonnou optiku)</Czech>
<Portuguese>Ativa balística avançada para caçadores não locais (quando usando miras telescópicas)</Portuguese>
</Key>
<Key ID="STR_ACE_Advanced_Ballistics_simulateForGroupMembers_DisplayName">
<English>Enabled For Group Members</English>
<Spanish>Activada para miembros de grupo</Spanish>
<Polish>Akt. dla czł. grupy</Polish>
<German>Für Gruppenmitglieder aktiviert</German>
<Czech>Povoleno pro členy skupiny</Czech>
<Portuguese>Ativada para membros do grupo</Portuguese>
</Key>
<Key ID="STR_ACE_Advanced_Ballistics_simulateForGroupMembers_Description">
<English>Enables advanced ballistics for non local group members</English>
<Spanish>Activada la balística avanzada para miembros de grupo no locales</Spanish>
<Polish>Aktywuje zaawansowaną balistykę dla nielokalnych członków grupy</Polish>
<German>Aktiviert die erweiterte Ballistik für nicht lokale Gruppenmitglieder</German>
<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>
</Key>
<Key ID="STR_ACE_Advanced_Ballistics_simulateForEveryone_DisplayName">
<English>Enabled For Everyone</English>
<Spanish>Activada para todos</Spanish>
<Polish>Akt. dla wszystkich</Polish>
<German>Für jeden aktiviert</German>
<Czech>Povoleno pro všechny</Czech>
<Portuguese>Ativada para todos</Portuguese>
</Key>
<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>
<Spanish>Activada la balística avanzada para todos los jugadores no locales (activarlo puede degradar el rendimiento durante grandes tiroteos en multijugador).</Spanish>
<Polish>Aktywuje zaawansowaną balistykę dla wszystkich nielokalnych graczy (aktywacja tej opcji może spodowować spory spadek wydajności podczas ciężkiej wymiany ognia)</Polish>
<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>Aktivovat pokročilou balistiku pro všechny nelokální hráče (aktivace této možnosti způsobuje pokles snímu za sekundu během těžké 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>
</Key>
<Key ID="STR_ACE_Advanced_Ballistics_alwaysSimulateForGroupMembers_DisplayName">
<English>Always Enabled For Group Members</English>
<Polish>Zawsze akt. dla czł. grupy</Polish>
<Spanish>Siempre activada para miembros de grupo</Spanish>
<German>Für Gruppenmitglieder immer aktiviert</German>
<Czech>Vždy povoleno pro členy skupiny</Czech>
<Portuguese>Sempre ativada para membros do grupo</Portuguese>
</Key>
<Key ID="STR_ACE_Advanced_Ballistics_alwaysSimulateForGroupMembers_Description">
<English>Always enables advanced ballistics when a group member fires</English>
<Polish>Aktywuje zaawansowaną balistykę dla wszystkich członków grupy</Polish>
<Spanish>Activada la balística avanzada siempre cuando miembros de grupo disparan</Spanish>
<German>Aktiviert die erweiterte Ballistik immer, wenn ein Gruppenmitglied schießt</German>
<Czech>Aktivuje pokročilou balistiku pro členy skupiny</Czech>
<Portuguese>Sempre ative balística avançada quando um membro do grupo disparar</Portuguese>
</Key>
<Key ID="STR_ACE_Advanced_Ballistics_disabledInFullAutoMod_DisplayName">
<English>Disabled In FullAuto Mode</English>
<Polish>Wył. podczas ognia auto.</Polish>
<Spanish>Desactivada en modo automático</Spanish>
<German>Beim vollautomatischen Feuern deaktiviert</German>
<Czech>Zakázáno v automatickém režimu střelby</Czech>
<Portuguese>Desabilitar no modo automático</Portuguese>
</Key>
<Key ID="STR_ACE_Advanced_Ballistics_disabledInFullAutoMod_Description">
<English>Disables the advanced ballistics during full auto fire</English>
<Polish>Dezaktywuje zaawansowaną balistykę podczas ognia automatycznego</Polish>
<Spanish>Desactivada la balística avanzada durante el fuego automático</Spanish>
<German>Deaktiviert die erweiterte Ballistik beim vollautomatischen Feuern</German>
<Czech>Zákáže pokročilou balistiku během střelby v režimu automat</Czech>
<Portuguese>Desabilitar a balística avançada durante fogo automático</Portuguese>
</Key>
<Key ID="STR_ACE_Advanced_Ballistics_ammoTemperatureEnabled_DisplayName">
<English>Enable Ammo Temperature Simulation</English>
<Polish>Symulacja temp. amunicji</Polish>
<Spanish>Activar simulación de temperatura de munición</Spanish>
<German>Simulation der Munitionstemperatur aktivieren</German>
<Czech>Povolit simulaci teploty munice</Czech>
<Portuguese>Ativar simulação de temperatura de munição</Portuguese>
</Key>
<Key ID="STR_ACE_Advanced_Ballistics_ammoTemperatureEnabled_Description">
<English>Muzzle velocity varies with ammo temperature</English>
<Polish>Prędkość wylotowa pocisku jest zależna od temperatury amunicji</Polish>
<Spanish>La velocidad de salida varía con la temperatura de la munición</Spanish>
<German>Munitionstemperatur hat Einfluss auf die Mündungsgeschwindigkeit</German>
<Czech>Úsťová rychlost je závislá na teplotě munice</Czech>
<Portuguese>A velocidade de saída varia com a temperatura da munição</Portuguese>
</Key>
<Key ID="STR_ACE_Advanced_Ballistics_barrelLengthInfluenceEnabled_DisplayName">
<English>Enable Barrel Length Simulation</English>
<Polish>Symulacja długości lufy</Polish>
<Spanish>Habilitar la simulación de longitud del cañón</Spanish>
<German>Simulation der Lauflänge aktivieren</German>
<Czech>Povolit simulaci délky hlavně</Czech>
<Portuguese>Ativar a simulação de comprimento do cano</Portuguese>
</Key>
<Key ID="STR_ACE_Advanced_Ballistics_barrelLengthInfluenceEnabled_Description">
<English>Muzzle velocity varies with barrel length</English>
<Polish>Prędkość wylotowa pocisku jest zależna od długości lufy</Polish>
<Spanish>La velocidad de salidal varía con la longitud del cañón</Spanish>
<German>Lauflänge beeinflusst Mündungsgeschwindigkeit</German>
<Czech>Úsťová rychlost je závislá na délce hlavně</Czech>
<Portuguese>A velocidade de saída caria com o comprimento do cano</Portuguese>
</Key>
<Key ID="STR_ACE_Advanced_Ballistics_bulletTraceEnabled_DisplayName">
<English>Enable Bullet Trace Effect</English>
<Polish>Efekt smugi pocisku</Polish>
<Spanish>Activar el efecto trazador de la bala</Spanish>
<German>Geschossspureffekt aktivieren</German>
<Czech>Povolit efekt trasírek</Czech>
<Portuguese>Ativa efeito traçante de projétil</Portuguese>
</Key>
<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>
<Polish>Aktywuje efekt smugi pocisku dla pocisków wysokokalibrowych (widoczne tylko podczas patrzenia przez optykę)</Polish>
<Spanish>Activa el efecto trazador de la balas de gran calibre (solo visible cuando se mira a través de una mira telescópica)</Spanish>
<German>Aktiviere Geschossspureffekt für hohe Kaliber (bei Benutzung von Optiken mit starker Vergrößerung)</German>
<Czech>Aktivuje efekt trasírek z vysokokaliberních zbraní (viditelné pouze skrze výkonnou optiku)</Czech>
<Portuguese>Ativa o efeito traçante de projétil para projéteis de alto calibre (somente visível quando observado por miras telescópicas)</Portuguese>
</Key>
<Key ID="STR_ACE_Advanced_Ballistics_simulationInterval_DisplayName">
<English>Simulation Interval</English>
<Polish>Interwał symulacji</Polish>
<Spanish>Intervalo de simulación</Spanish>
<German>Simulationsintervall</German>
<Czech>Interval simulace</Czech>
<Portuguese>Intervalo da simulação</Portuguese>
</Key>
<Key ID="STR_ACE_Advanced_Ballistics_simulationInterval_Description">
<English>Defines the interval between every calculation step</English>
<Polish>Określa interwał pomiędzy każdym krokiem kalkulacji</Polish>
<Spanish>Define el intervalo entre cada cálculo</Spanish>
<German>Legt das Intervall zwischen den Berechnungsschritten fest</German>
<Czech>Určuje interval mezi každým výpočtem</Czech>
<Portuguese>Define o intervalo entre cada cálculo</Portuguese>
</Key>
<Key ID="STR_ACE_Advanced_Ballistics_simulationRadius_DisplayName">
<English>Simulation Radius</English>
<Polish>Zasięg symulacji</Polish>
<Spanish>Radio de simulación</Spanish>
<German>Simulationsradius</German>
<Czech>Rozsah simulace</Czech>
<Portuguese>Raio de simulação</Portuguese>
</Key>
<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>
<Polish>Określa obszar naokoło gracza (w metrach), na którym zaawansowana balistyka jest aplikowana dla pocisków</Polish>
<Spanish>Define el radio alrededor del jugador (en metros) en el cual se aplica la balística avanzada a los proyectiles</Spanish>
<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>
<Portuguese>Define o raio ao redor do jogador (em metros) onde a balística avançada será aplicada aos projéteis</Portuguese>
</Key>
<Key ID="STR_ACE_Advanced_Ballistics_Description">
<Polish>Moduł ten pozwala aktywować zaawansowaną balistykę biorącą przy obliczeniach trajektorii lotu pocisku pod uwagę takie rzeczy jak temperatura powietrza, ciśnienie atmosferyczne, wilgotność powietrza, siły Coriolisa i Eotvosa, grawitację a także broń z jakiej wykonywany jest strzał oraz rodzaj amunicji. Wszystko to sprowadza się na bardzo dokładne odwzorowanie balistyki.</Polish>
<Czech>Tento modul umožňuje aktivovat pokročilou balistiku, která vypočítává trajektorii kulky a bere do úvahy věci jako je teplota vzduchu, atmosférický tlak, vlhkost vzduchu, gravitaci, typ munice a zbraň, ze které je náboj vystřelen. To vše přispívá k velmi přesné balistice.</Czech>
<Portuguese>Este módulo permite que você ative cálculos de balística avançada, fazendo a trajetória do projétil levar em consideração coisas como temperatura do ar, pressão atmosférica, umidade, força de Coriolis, a gravidade, o modelo da arma no qual o disparo é realizado e o tipo de munição. Tudo isso acrescenta-se a um balística muito precisa.</Portuguese>
</Key>
</Package> </Package>
</Project> </Project>

View File

@ -21,7 +21,8 @@ class CfgAISkill {
courage[] = {0,0, 1,0.7}; // {0,0,1,1}; courage[] = {0,0, 1,0.7}; // {0,0,1,1};
endurance[] = {0,0, 1,0.7}; // {0,0,1,1}; endurance[] = {0,0, 1,0.7}; // {0,0,1,1};
general[] = {0,0, 1,0.9}; // {0,0,1,1}; general[] = {0,0, 1,0.9}; // {0,0,1,1};
reloadSpeed[] = {0,0, 1,0.8}; // {0,0,1,1}; // apparently breaks rapid firing in single fire mode for players
//reloadSpeed[] = {0,0, 1,0.8}; // {0,0,1,1};
spotDistance[] = {0,0, 1,0.9}; // {0,0.2,1,0.4}; spotDistance[] = {0,0, 1,0.9}; // {0,0.2,1,0.4};
spotTime[] = {0,0, 1,0.7}; // {0,0,1,0.7}; spotTime[] = {0,0, 1,0.7}; // {0,0,1,0.7};
}; };

View File

@ -1,5 +1,5 @@
#define COMPONENT ai #define COMPONENT ai
#include "\z\ace\Addons\main\script_mod.hpp" #include "\z\ace\addons\main\script_mod.hpp"
#ifdef DEBUG_ENABLED_AI #ifdef DEBUG_ENABLED_AI
#define DEBUG_MODE_FULL #define DEBUG_MODE_FULL
@ -9,4 +9,4 @@
#define DEBUG_SETTINGS DEBUG_SETTINGS_AI #define DEBUG_SETTINGS DEBUG_SETTINGS_AI
#endif #endif
#include "\z\ace\Addons\main\script_macros.hpp" #include "\z\ace\addons\main\script_macros.hpp"

View File

@ -176,8 +176,8 @@ class CfgVehicles {
}; };
class CargoRamp_Open: DoorL1_Open { class CargoRamp_Open: DoorL1_Open {
userActionID = 52; userActionID = 52;
displayName = "$STR_ACE_Aircraft_OpenCargoRamp"; displayName = CSTRING(OpenCargoRamp);
textToolTip = "$STR_ACE_Aircraft_OpenCargoRamp"; textToolTip = CSTRING(OpenCargoRamp);
position = "action_cargoramp"; position = "action_cargoramp";
radius = 3.0; radius = 3.0;
condition = "this animationPhase ""cargoramp_open"" < 0.5 AND Alive(this)"; condition = "this animationPhase ""cargoramp_open"" < 0.5 AND Alive(this)";
@ -185,8 +185,8 @@ class CfgVehicles {
}; };
class CargoRamp_Close: DoorL1_Close { class CargoRamp_Close: DoorL1_Close {
userActionID = 55; userActionID = 55;
displayName = "$STR_ACE_Aircraft_CloseCargoRamp"; displayName = CSTRING(CloseCargoRamp);
textToolTip = "$STR_ACE_Aircraft_CloseCargoRamp"; textToolTip = CSTRING(CloseCargoRamp);
position = "action_cargoramp"; position = "action_cargoramp";
radius = 3.0; radius = 3.0;
condition = "this animationPhase ""cargoramp_open"" > 0.5 AND Alive(this)"; condition = "this animationPhase ""cargoramp_open"" > 0.5 AND Alive(this)";

View File

@ -29,7 +29,7 @@ class CfgWeapons {
reloadTime = 0.1; reloadTime = 0.1;
}; };
class Burst: Mode_Burst { class Burst: Mode_Burst {
displayName = "$STR_ACE_Aircraft_CMFlareLauncher_Burst_Name"; displayName = CSTRING(CMFlareLauncher_Burst_Name);
}; };
}; };
@ -50,12 +50,12 @@ class CfgWeapons {
}; };
class ACE_gatling_20mm_Comanche: gatling_20mm { class ACE_gatling_20mm_Comanche: gatling_20mm {
displayName = "$STR_ACE_Aircraft_gatling_20mm_Name"; displayName = CSTRING(gatling_20mm_Name);
class manual: manual { class manual: manual {
reloadTime = 0.04; reloadTime = 0.04;
dispersion = 0.006; dispersion = 0.006;
displayName = "$STR_ACE_Aircraft_gatling_20mm_Name"; displayName = CSTRING(gatling_20mm_Name);
}; };
class close: close { class close: close {
reloadTime = 0.04; reloadTime = 0.04;

View File

@ -891,9 +891,12 @@ class Heli_Attack_01_base_F: Helicopter_Base_F {
class OpticsIn class OpticsIn
{ {
class WideUnstabalized delete Narrow;
{ delete Medium;
opticsDisplayName = "WU"; delete Wide;
class ACE_WideUnstabilized {
opticsDisplayName = "W NS";
initAngleX = 0; initAngleX = 0;
minAngleX = -35; minAngleX = -35;
maxAngleX = 10; maxAngleX = 10;
@ -910,8 +913,7 @@ class Heli_Attack_01_base_F: Helicopter_Base_F {
horizontallyStabilized = 1; horizontallyStabilized = 1;
gunnerOpticsModel = "\A3\Weapons_F_Beta\Reticle\Heli_Attack_01_Optics_Gunner_wide_F"; gunnerOpticsModel = "\A3\Weapons_F_Beta\Reticle\Heli_Attack_01_Optics_Gunner_wide_F";
}; };
class Wide class ACE_Wide: ACE_WideUnstabilized {
{
opticsDisplayName = "W"; opticsDisplayName = "W";
initAngleX = 0; initAngleX = 0;
minAngleX = -35; minAngleX = -35;
@ -929,8 +931,7 @@ class Heli_Attack_01_base_F: Helicopter_Base_F {
horizontallyStabilized = 1; horizontallyStabilized = 1;
gunnerOpticsModel = "\A3\Weapons_F_Beta\Reticle\Heli_Attack_01_Optics_Gunner_wide_F"; gunnerOpticsModel = "\A3\Weapons_F_Beta\Reticle\Heli_Attack_01_Optics_Gunner_wide_F";
}; };
class Medium: Wide class ACE_Medium: ACE_Wide {
{
opticsDisplayName = "M"; opticsDisplayName = "M";
initFov = 0.093; initFov = 0.093;
minFov = 0.093; minFov = 0.093;
@ -940,8 +941,7 @@ class Heli_Attack_01_base_F: Helicopter_Base_F {
horizontallyStabilized = 1; horizontallyStabilized = 1;
gunnerOpticsModel = "\A3\Weapons_F_Beta\Reticle\Heli_Attack_01_Optics_Gunner_medium_F"; gunnerOpticsModel = "\A3\Weapons_F_Beta\Reticle\Heli_Attack_01_Optics_Gunner_medium_F";
}; };
class Narrow: Wide class ACE_Narrow: ACE_Wide {
{
opticsDisplayName = "N"; opticsDisplayName = "N";
initFov = 0.029; initFov = 0.029;
minFov = 0.029; minFov = 0.029;
@ -952,8 +952,7 @@ class Heli_Attack_01_base_F: Helicopter_Base_F {
gunnerOpticsModel = "\A3\Weapons_F_Beta\Reticle\Heli_Attack_01_Optics_Gunner_narrow_F"; gunnerOpticsModel = "\A3\Weapons_F_Beta\Reticle\Heli_Attack_01_Optics_Gunner_narrow_F";
}; };
class Narrower: Wide class ACE_Narrower: ACE_Wide {
{
opticsDisplayName = "Z"; opticsDisplayName = "Z";
initFov = 0.01; initFov = 0.01;
minFov = 0.01; minFov = 0.01;

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">
@ -34,7 +34,7 @@
<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>
<Russian>Открыть грузовой отсек</Russian> <Russian>Открыть грузовой отсек</Russian>
<Italian>Apri la porta del cargo</Italian> <Italian>Apri la rampa di carico</Italian>
<Portuguese>Abrir porta de carga</Portuguese> <Portuguese>Abrir porta de carga</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_Aircraft_CloseCargoRamp"> <Key ID="STR_ACE_Aircraft_CloseCargoRamp">
@ -46,7 +46,7 @@
<Czech>Zavřít nákladní prostor</Czech> <Czech>Zavřít nákladní prostor</Czech>
<Hungarian>Rakodórámpa zárása</Hungarian> <Hungarian>Rakodórámpa zárása</Hungarian>
<Russian>Закрыть грузовой отсек</Russian> <Russian>Закрыть грузовой отсек</Russian>
<Italian>Chiudi la porta del cargo</Italian> <Italian>Chiudi la rampa di carico</Italian>
<Portuguese>Fechar porta de carga</Portuguese> <Portuguese>Fechar porta de carga</Portuguese>
</Key> </Key>
</Package> </Package>

BIN
addons/apl/LWTS_optic.p3d Normal file

Binary file not shown.

View File

@ -0,0 +1,79 @@
ambient[]={1.000000,1.000000,1.000000,1.000000};
diffuse[]={1.000000,1.000000,1.000000,1.000000};
forcedDiffuse[]={0.000000,0.000000,0.000000,0.000000};
emmisive[]={0.000000,0.000000,0.000000,1.000000};
specular[]={1.000000,1.000000,1.000000,1.000000};
specularPower=83.900002;
PixelShaderID="Super";
VertexShaderID="Super";
class Stage1 {
texture="z\ace\addons\apl\data\jezek_texture_NOHQ.tga";
uvSource="tex";
class uvTransform {
aside[]={1.000000,0.000000,0.000000};
up[]={0.000000,1.000000,0.000000};
dir[]={0.000000,0.000000,0.000000};
pos[]={0.000000,0.000000,0.000000};
};
};
class Stage2 {
texture="#(argb,8,8,3)color(0.5,0.5,0.5,1,DT)";
uvSource="tex";
class uvTransform {
aside[]={1.000000,0.000000,0.000000};
up[]={0.000000,1.000000,0.000000};
dir[]={0.000000,0.000000,0.000000};
pos[]={0.000000,0.000000,0.000000};
};
};
class Stage3 {
texture="#(argb,8,8,3)color(0,0,0,0,MC)";
uvSource="tex";
class uvTransform {
aside[]={1.000000,0.000000,0.000000};
up[]={0.000000,1.000000,0.000000};
dir[]={0.000000,0.000000,0.000000};
pos[]={0.000000,0.000000,0.000000};
};
};
class Stage4 {
texture="#(argb,8,8,3)color(1,1,1,1,AS)";
uvSource="tex";
class uvTransform
{
aside[]={1.000000,0.000000,0.000000};
up[]={0.000000,1.000000,0.000000};
dir[]={0.000000,0.000000,0.000000};
pos[]={0.000000,0.000000,0.000000};
};
};
class Stage5 {
texture="z\ace\addons\apl\data\jezek_texture_SMDI.tga";
uvSource="tex";
class uvTransform {
aside[]={1.000000,0.000000,0.000000};
up[]={0.000000,1.000000,0.000000};
dir[]={0.000000,0.000000,0.000000};
pos[]={0.000000,0.000000,0.000000};
};
};
class Stage6 {
texture="#(ai,32,128,1)fresnel(1.85,0.64)";
uvSource="tex";
class uvTransform {
aside[]={1.000000,0.000000,0.000000};
up[]={0.000000,1.000000,0.000000};
dir[]={0.000000,0.000000,0.000000};
pos[]={0.000000,0.000000,0.000000};
};
};
class Stage7 {
texture="a3\data_f\env_land_co.paa";
uvSource="tex";
class uvTransform {
aside[]={1.000000,0.000000,0.000000};
up[]={0.000000,1.000000,0.000000};
dir[]={0.000000,0.000000,0.000000};
pos[]={0.000000,0.000000,0.000000};
};
};

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,78 @@
ambient[]={1.000000,1.000000,1.000000,1.000000};
diffuse[]={1.000000,1.000000,1.000000,1.000000};
forcedDiffuse[]={0.000000,0.000000,0.000000,0.000000};
emmisive[]={0.000000,0.000000,0.000000,1.000000};
specular[]={1.000000,1.000000,1.000000,0.000000};
specularPower=16.000000;
PixelShaderID="Super";
VertexShaderID="Super";
class Stage1 {
texture="z\ace\addons\apl\data\BarbWire_A_NOHQ.tga";
uvSource="tex";
class uvTransform {
aside[]={1.000000,0.000000,0.000000};
up[]={0.000000,1.000000,0.000000};
dir[]={0.000000,0.000000,0.000000};
pos[]={0.000000,0.000000,0.000000};
};
};
class Stage2 {
texture="#(argb,8,8,3)color(0.5,0.5,0.5,1,DT)";
uvSource="tex";
class uvTransform {
aside[]={1.000000,0.000000,0.000000};
up[]={0.000000,1.000000,0.000000};
dir[]={0.000000,0.000000,0.000000};
pos[]={0.000000,0.000000,0.000000};
};
};
class Stage3 {
texture="#(argb,8,8,3)color(0,0,0,0,MC)";
uvSource="tex";
class uvTransform {
aside[]={1.000000,0.000000,0.000000};
up[]={0.000000,1.000000,0.000000};
dir[]={0.000000,0.000000,0.000000};
pos[]={0.000000,0.000000,0.000000};
};
};
class Stage4 {
texture="#(argb,8,8,3)color(1,1,1,1,AS)";
uvSource="tex";
class uvTransform {
aside[]={1.000000,0.000000,0.000000};
up[]={0.000000,1.000000,0.000000};
dir[]={0.000000,0.000000,0.000000};
pos[]={0.000000,0.000000,0.000000};
};
};
class Stage5 {
texture="#(argb,8,8,3)color(0,0,1,1,SMDI)";
uvSource="tex";
class uvTransform {
aside[]={1.000000,0.000000,0.000000};
up[]={0.000000,1.000000,0.000000};
dir[]={0.000000,0.000000,0.000000};
pos[]={0.000000,0.000000,0.000000};
};
};
class Stage6 {
texture="#(ai,32,128,1)fresnel(0.01,0.01)";
uvSource="tex";
class uvTransform {
aside[]={1.000000,0.000000,0.000000};
up[]={0.000000,1.000000,0.000000};
dir[]={0.000000,0.000000,0.000000};
pos[]={0.000000,0.000000,0.000000};
};
};
class Stage7 {
texture="#(argb,8,8,3)color(0,0,0,1,CO)";
uvSource="tex";
class uvTransform {
aside[]={1.000000,0.000000,0.000000};
up[]={0.000000,1.000000,0.000000};
dir[]={0.000000,0.000000,0.000000};
pos[]={0.000000,0.000000,0.000000};
};
};

View File

@ -0,0 +1,8 @@
ambient[]={1,1,1,1};
diffuse[]={1,1,1,1};
forcedDiffuse[]={0,0,0,0};
emmisive[]={0,0,0,1};
specular[]={0,0,0,0};
specularPower=0;
PixelShaderID="Normal";
VertexShaderID="Basic";

Binary file not shown.

View File

@ -0,0 +1,10 @@
Density=2400;
rough=0;
dust=0;
bulletPenetrability=50;
soundEnviron=Empty;
isWater=false;
friction=0.1;
restitution=0.1;
impact = Hit_Glass;
soundHit = glass;

View File

@ -0,0 +1 @@
surfaceInfo="z\ace\addons\apl\data\glass_House.bisurf";

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

@ -0,0 +1,10 @@
Density=1380;
rough=0.1;
dust=0;
bulletPenetrability=150;
soundEnviron=Empty;
isWater=false;
friction=0.7;
restitution=0.3;
impact = default_Mat;
soundHit = plastic;

View File

@ -0,0 +1,4 @@
surfaceInfo="z\ace\addons\apl\data\plastic.bisurf";
diffuse[]={0.5,0.5,1.0,1.000000};
ambient[]={0.5,0.5,1.0,1.000000};

Binary file not shown.

BIN
addons/apl/data/plech.paa Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1 @@
z\ace\addons\atragmx

View File

@ -4,13 +4,13 @@ class CfgVehicles {
class ACE_SelfActions { class ACE_SelfActions {
class ACE_Equipment { class ACE_Equipment {
class GVAR(open) { class GVAR(open) {
displayName = "$STR_ACE_ATragMX_OpenATragMXDialog"; displayName = CSTRING(OpenATragMXDialog);
condition = QUOTE(call FUNC(can_show)); condition = QUOTE(call FUNC(can_show));
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 = PATHTOF(UI\ATRAG_Icon.paa);
exceptions[] = {"notOnMap", "isNotInside"}; exceptions[] = {"notOnMap", "isNotInside", "isNotSitting"};
}; };
}; };
}; };

View File

@ -6,8 +6,8 @@ class CfgWeapons {
class ACE_ATragMX: ACE_ItemCore { class ACE_ATragMX: ACE_ItemCore {
author = "Ruthberg"; author = "Ruthberg";
scope = 2; scope = 2;
displayName = "$STR_ACE_ATragMX_Name"; displayName = CSTRING(Name);
descriptionShort = "$STR_ACE_ATragMX_Description"; descriptionShort = CSTRING(Description);
model = PATHTOF(data\tdsrecon.p3d); model = PATHTOF(data\tdsrecon.p3d);
picture = PATHTOF(UI\ATRAG_Icon.paa); picture = PATHTOF(UI\ATRAG_Icon.paa);
icon = "iconObject_circle"; icon = "iconObject_circle";

View File

@ -142,6 +142,7 @@ class ATragMX_Display {
name="ATragMX_Display"; name="ATragMX_Display";
idd=-1; idd=-1;
onLoad="uiNamespace setVariable ['ATragMX_Display', (_this select 0)]"; onLoad="uiNamespace setVariable ['ATragMX_Display', (_this select 0)]";
onUnload=QUOTE(_this call FUNC(on_close_dialog));
movingEnable=1; movingEnable=1;
controlsBackground[]={}; controlsBackground[]={};
objects[]={}; objects[]={};
@ -151,7 +152,7 @@ class ATragMX_Display {
type=0; type=0;
font="TahomaB"; font="TahomaB";
SizeEX=0.025; SizeEX=0.025;
idc=-1; idc=720000;
style=48; style=48;
x=0.55*safezoneW+safezoneX-0.256; x=0.55*safezoneW+safezoneX-0.256;
y=0.265*safezoneH+safezoneY-0.1; y=0.265*safezoneH+safezoneY-0.1;
@ -159,7 +160,7 @@ class ATragMX_Display {
h=1.024*4/3; h=1.024*4/3;
colorBackground[]={1,1,1,1}; colorBackground[]={1,1,1,1};
colorText[]={1,1,1,1}; colorText[]={1,1,1,1};
text=PATHTOF(UI\atrag.paa); text=PATHTOF(UI\atrag_d.paa);
}; };
class POWER: ATragMX_RscButton { class POWER: ATragMX_RscButton {
idc=-1; idc=-1;

Binary file not shown.

View File

@ -6,39 +6,41 @@ if ((profileNamespace getVariable ["ACE_ATragMX_profileNamespaceVersion", 0]) ==
GVAR(gunList) = profileNamespace getVariable "ACE_ATragMX_gunList"; GVAR(gunList) = profileNamespace getVariable "ACE_ATragMX_gunList";
} else { } else {
// Profile Name, Muzzle Velocity, Zero Range, Scope Base Angle, AirFriction, Bore Height, Scope Unit, Scope Click Unit, Scope Click Number, Maximum Elevation, Dialed Elevation, Dialed Windage, Mass, Bullet Diameter, Rifle Twist, BC, Drag Model, Atmosphere Model // Profile Name, Muzzle Velocity, Zero Range, Scope Base Angle, AirFriction, Bore Height, Scope Unit, Scope Click Unit, Scope Click Number, Maximum Elevation, Dialed Elevation, Dialed Windage, Mass, Bullet Diameter, Rifle Twist, BC, Drag Model, Atmosphere Model
GVAR(gunList) = [["12.7x108mm" , 820, 100, 0.0657, -0.0006400, 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.0612, -0.0003740, 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.0623, -0.0006000, 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.3395, -0.0001400, 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.0571, -0.0003950, 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.0619, -0.0010600, 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.0598, -0.0006060, 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.0677, -0.0005350, 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" , 880, 100, 0.0601, -0.0006730, 3.81, 0, 2, 10, 120, 0, 0, 16.39, 8.58, 25.40, 0.290, 7, "ICAO"], [".338LM API526" , 895, 100, 0.0588865, -0.00069611, 3.81, 0, 2, 10, 120, 0, 0, 16.39, 8.58, 25.40, 0.560, 1, "ASM" ],
[".300WM Mk248 Mod 0", 900, 100, 0.0584, -0.0008300, 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.0611, -0.0008150, 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.0622, -0.0007600, 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.0692, -0.0010230, 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.0679, -0.0010350, 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.0710, -0.0008525, 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.0585, -0.0010300, 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 Subsonic", 320, 100, 0.3060, -0.0004910, 3.81, 0, 2, 10, 120, 0, 0, 12.96, 7.82, 25.40, 0.235, 7, "ICAO"], ["7.62x51mm M993" , 930, 100, 0.0570316, -0.00107148, 3.81, 0, 2, 10, 120, 0, 0, 8.230, 7.82, 25.40, 0.359, 1, "ICAO"],
["7.62x51mm Subsonic", 320, 100, 0.3059680, -0.00049899, 3.81, 0, 2, 10, 120, 0, 0, 12.96, 7.82, 25.40, 0.235, 7, "ICAO"],
["6.5x39mm" , 800, 100, 0.0683, -0.0007850, 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.0682, -0.0007710, 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.0637, -0.0006510, 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.0626, -0.0012650, 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.0671, -0.0011250, 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.0616, -0.0011200, 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" ]];
[] call FUNC(clear_user_data); [] call FUNC(clear_user_data);
profileNamespace setVariable ["ACE_ATragMX_gunList", GVAR(gunList)]; profileNamespace setVariable ["ACE_ATragMX_gunList", GVAR(gunList)];

View File

@ -4,7 +4,6 @@ ADDON = false;
PREP(add_new_gun); PREP(add_new_gun);
PREP(calculate_range_card); PREP(calculate_range_card);
PREP(calculate_scope_base_angle);
PREP(calculate_solution); PREP(calculate_solution);
PREP(calculate_target_range_assist); PREP(calculate_target_range_assist);
PREP(calculate_target_solution); PREP(calculate_target_solution);
@ -68,5 +67,6 @@ PREP(update_target_data);
PREP(update_target_selection); PREP(update_target_selection);
PREP(update_unit_selection); PREP(update_unit_selection);
PREP(update_zero_range); PREP(update_zero_range);
PREP(on_close_dialog);
ADDON = true; ADDON = true;

View File

@ -47,16 +47,16 @@ _temperature = GVAR(temperature);
_barometricPressure = GVAR(barometricPressure); _barometricPressure = GVAR(barometricPressure);
_relativeHumidity = GVAR(relativeHumidity); _relativeHumidity = GVAR(relativeHumidity);
if (!GVAR(atmosphereModeTBH)) then { if (!GVAR(atmosphereModeTBH)) then {
_barometricPressure = 1013.25 * exp(-(_altitude) / 7990); _barometricPressure = 1013.25 * (1 - (0.0065 * _altitude) / (273.15 + _temperature + 0.0065 * _altitude)) ^ 5.255754495;
_relativeHumidity = 50; _relativeHumidity = 50;
}; };
private ["_bulletLength", "_stabilityFactor"]; private ["_bulletLength", "_stabilityFactor"];
_bulletLength = 1.8; _bulletLength = 45.72;
_stabilityFactor = 1.5; _stabilityFactor = 1.5;
if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then { if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then {
if (_bulletDiameter > 0 && _bulletLength > 0 && _bulletMass > 0 && _barrelTwist > 0) then { if (_bulletDiameter > 0 && _bulletLength > 0 && _bulletMass > 0 && _barrelTwist > 0) then {
_stabilityFactor = [_bulletDiameter / 10 / 2.54, _bulletLength, _bulletMass * 15.4323584, _barrelTwist / 2.54, _muzzleVelocity, _temperature, _barometricPressure] call EFUNC(advanced_ballistics,calculateStabilityFactor); _stabilityFactor = [_bulletDiameter, _bulletLength, _bulletMass, _barrelTwist * 10, _muzzleVelocity, _temperature, _barometricPressure] call EFUNC(advanced_ballistics,calculateStabilityFactor);
}; };
}; };

View File

@ -1,40 +0,0 @@
/*
* Author: Ruthberg
* Calculates a new scope base angle
*
* Arguments:
* 0: Bullet mass <NUMBER>
* 1: Bore height <NUMBER>
* 2: air friction <NUMBER>
* 3: muzzle velocity <NUMBER>
* 4: zero range <NUMBER>
*
* Return Value:
* scope base angle <NUMBER>
*
* Example:
* call ace_atragmx_calculate_scope_base_angle
*
* Public: No
*/
#include "script_component.hpp"
private ["_bulletMass", "_boreHeight", "_airFriction", "_muzzleVelocity", "_zeroRange"];
_bulletMass = _this select 0;
_boreHeight = _this select 1;
_airFriction = _this select 2;
_muzzleVelocity = _this select 3;
_zeroRange = _this select 4;
private ["_scopeBaseAngle"];
_scopeBaseAngle = 0;
private ["_temperature", "_barometricPressure", "_relativeHumidity"];
_temperature = 15;
_barometricPressure = 1013.25;
_relativeHumidity = 0;
private ["_result"];
_result = [_scopeBaseAngle, _bulletMass, _boreHeight, _airFriction, _muzzleVelocity, _temperature, _barometricPressure, _relativeHumidity, 1000, [0, 0], 0, 0, 0, _zeroRange, _airFriction, 1, "ICAO", false, 1.5, 0, 0, 0] call FUNC(calculate_solution);
_scopeBaseAngle + (_result select 0) / 60

View File

@ -37,7 +37,7 @@
* 8: Spin drift (MOA) <NUMBER> * 8: Spin drift (MOA) <NUMBER>
* *
* Example: * Example:
* call ace_atragmx_calculate_target_range_assist * call ace_atragmx_calculate_solution
* *
* Public: No * Public: No
*/ */

View File

@ -47,16 +47,16 @@ _temperature = GVAR(temperature);
_barometricPressure = GVAR(barometricPressure); _barometricPressure = GVAR(barometricPressure);
_relativeHumidity = GVAR(relativeHumidity); _relativeHumidity = GVAR(relativeHumidity);
if (!GVAR(atmosphereModeTBH)) then { if (!GVAR(atmosphereModeTBH)) then {
_barometricPressure = 1013.25 * exp(-(_altitude) / 7990); _barometricPressure = 1013.25 * (1 - (0.0065 * _altitude) / (273.15 + _temperature + 0.0065 * _altitude)) ^ 5.255754495;
_relativeHumidity = 50; _relativeHumidity = 50;
}; };
private ["_bulletLength", "_stabilityFactor"]; private ["_bulletLength", "_stabilityFactor"];
_bulletLength = 1.8; _bulletLength = 45.72;
_stabilityFactor = 1.5; _stabilityFactor = 1.5;
if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then { if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then {
if (_bulletDiameter > 0 && _bulletLength > 0 && _bulletMass > 0 && _barrelTwist > 0) then { if (_bulletDiameter > 0 && _bulletLength > 0 && _bulletMass > 0 && _barrelTwist > 0) then {
_stabilityFactor = [_bulletDiameter / 10 / 2.54, _bulletLength, _bulletMass * 15.4323584, _barrelTwist / 2.54, _muzzleVelocity, _temperature, _barometricPressure] call EFUNC(advanced_ballistics,calculateStabilityFactor); _stabilityFactor = [_bulletDiameter, _bulletLength, _bulletMass, _barrelTwist * 10, _muzzleVelocity, _temperature, _barometricPressure] call EFUNC(advanced_ballistics,calculateStabilityFactor);
}; };
}; };

View File

@ -15,7 +15,10 @@
*/ */
#include "script_component.hpp" #include "script_component.hpp"
//if (dialog) exitWith { false }; #define __dsp (uiNamespace getVariable "ATragMX_Display")
#define __ctrlBackground (__dsp displayCtrl 720000)
if (GVAR(active)) exitWith { false };
if (underwater ACE_player) exitWith { false }; if (underwater ACE_player) exitWith { false };
if (!("ACE_ATragMX" in (uniformItems ACE_player)) && !("ACE_ATragMX" in (vestItems ACE_player))) exitWith { false }; if (!("ACE_ATragMX" in (uniformItems ACE_player)) && !("ACE_ATragMX" in (vestItems ACE_player))) exitWith { false };
@ -47,4 +50,13 @@ GVAR(showTargetSpeedAssistTimer) call FUNC(show_target_speed_assist_timer);
lbAdd [6000, _x select 0]; lbAdd [6000, _x select 0];
} forEach GVAR(gunList); } forEach GVAR(gunList);
GVAR(active) = true;
GVAR(DialogPFH) = [{
if (!GVAR(active)) exitWith {
[_this select 1] call cba_fnc_removePerFrameHandler;
};
__ctrlBackground ctrlSetText format [QUOTE(PATHTOF(UI\ATRAG_%1.paa)), ["N", "D"] select (call EFUNC(common,ambientBrightness))];
}, 60, []] call cba_fnc_addPerFrameHandler;
true true

View File

@ -15,6 +15,8 @@
*/ */
#include "script_component.hpp" #include "script_component.hpp"
GVAR(active) = false;
GVAR(workingMemory) = +(GVAR(gunList) select 0); GVAR(workingMemory) = +(GVAR(gunList) select 0);
GVAR(scopeUnits) = ["MILs", "TMOA", "SMOA", "Clicks"]; GVAR(scopeUnits) = ["MILs", "TMOA", "SMOA", "Clicks"];

View File

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

View File

@ -59,7 +59,7 @@ if (GVAR(currentUnit) == 1) then {
private ["_boreHeight", "_bulletMass", "_bulletDiameter", "_airFriction", "_rifleTwist", "_muzzleVelocity", "_zeroRange"]; private ["_boreHeight", "_bulletMass", "_bulletDiameter", "_airFriction", "_rifleTwist", "_muzzleVelocity", "_zeroRange"];
_boreHeight = parseNumber(ctrlText 120000); _boreHeight = parseNumber(ctrlText 120000);
_bulletMass = parseNumber(ctrlText 120010); _bulletMass = parseNumber(ctrlText 120010);
_bulletDiameter = parseNumber(ctrlText 120020); _bulletDiameter = parseNumber(ctrlText 120020) * 10;
if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then { if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then {
_airFriction = 0.1 max parseNumber(ctrlText 120030) min 2; _airFriction = 0.1 max parseNumber(ctrlText 120030) min 2;
} else { } else {
@ -71,7 +71,7 @@ _zeroRange = parseNumber (ctrlText 120060);
if (GVAR(currentUnit) != 2) then { if (GVAR(currentUnit) != 2) then {
_boreHeight = _boreHeight * 2.54; _boreHeight = _boreHeight * 2.54;
_bulletMass = _bulletMass * 0.06479891; _bulletMass = _bulletMass * 0.06479891;
_bulletDiameter = _bulletDiameter * 10 * 2.54; _bulletDiameter = _bulletDiameter * 2.54;
_rifleTwist = _rifleTwist * 2.54; _rifleTwist = _rifleTwist * 2.54;
_muzzleVelocity = _muzzleVelocity / 3.2808399; _muzzleVelocity = _muzzleVelocity / 3.2808399;
}; };
@ -95,36 +95,6 @@ if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) t
GVAR(workingMemory) set [1, _muzzleVelocity]; GVAR(workingMemory) set [1, _muzzleVelocity];
GVAR(workingMemory) set [2, _zeroRange]; GVAR(workingMemory) set [2, _zeroRange];
private ["_elevationCur", "_windageCur", "_clickSize", "_clickNumber", "_clickInterval"];
_elevationCur = GVAR(workingMemory) select 10;
_windageCur = GVAR(workingMemory) select 11;
switch (GVAR(currentScopeUnit)) do {
case 0: {
_elevationCur = _elevationCur * 3.38;
_windageCur = _windageCur * 3.38;
};
case 2: {
_elevationCur = _elevationCur / 1.047;
_windageCur = _windageCur / 1.047;
};
case 3: {
switch (GVAR(workingMemory) select 7) do {
case 0: { _clickSize = 1; };
case 1: { _clickSize = 1 / 1.047; };
case 2: { _clickSize = 3.38; };
};
_clickNumber = GVAR(workingMemory) select 8;
_clickInterval = _clickSize / _clickNumber;
_elevationCur = Round(_elevationCur / _clickInterval);
_windageCur = Round(_windageCur / _clickInterval);
};
};
GVAR(workingMemory) set [10, _elevationCur];
GVAR(workingMemory) set [11, _windageCur];
[] call FUNC(update_gun); [] call FUNC(update_gun);
[] call FUNC(update_gun_ammo_data); [] call FUNC(update_gun_ammo_data);
[] call FUNC(update_atmosphere); [] call FUNC(update_atmosphere);

View File

@ -30,7 +30,7 @@ if !(ctrlVisible 9000) then {
if (!(GVAR(speedAssistTimer))) exitWith { if (!(GVAR(speedAssistTimer))) exitWith {
GVAR(speedAssistTimer) = true; GVAR(speedAssistTimer) = true;
ctrlSetText [8006, Str(Round((time - _startTime) * 10) / 10)]; ctrlSetText [8006, Str(Round((ACE_time - _startTime) * 10) / 10)];
[] call FUNC(calculate_target_speed_assist); [] call FUNC(calculate_target_speed_assist);
@ -40,7 +40,7 @@ if !(ctrlVisible 9000) then {
[_this select 1] call cba_fnc_removePerFrameHandler; [_this select 1] call cba_fnc_removePerFrameHandler;
}; };
ctrlSetText [9001, Str(Round((time - _startTime) * 10) / 10)]; ctrlSetText [9001, Str(Round((ACE_time - _startTime) * 10) / 10)];
}, 0.1, [time]] call CBA_fnc_addPerFrameHandler; }, 0.1, [ACE_time]] call CBA_fnc_addPerFrameHandler;
}; };

View File

@ -30,7 +30,7 @@ if (GVAR(currentUnit) != 2) then {
if (GVAR(currentUnit) != 2) then { if (GVAR(currentUnit) != 2) then {
ctrlSetText [120020, Str(Round((GVAR(workingMemory) select 13) / 10 / 2.54 * 1000) / 1000)]; ctrlSetText [120020, Str(Round((GVAR(workingMemory) select 13) / 10 / 2.54 * 1000) / 1000)];
} else { } else {
ctrlSetText [120020, Str(Round((GVAR(workingMemory) select 13) * 1000) / 1000)]; ctrlSetText [120020, Str(Round((GVAR(workingMemory) select 13) / 10 * 1000) / 1000)];
}; };
if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then { if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then {
ctrlSetText [120030, Str(Round((GVAR(workingMemory) select 15) * 1000) / 1000)]; ctrlSetText [120030, Str(Round((GVAR(workingMemory) select 15) * 1000) / 1000)];

View File

@ -15,7 +15,7 @@
*/ */
#include "script_component.hpp" #include "script_component.hpp"
private ["_range", "_elevation", "_windage1", "_windage2", "_clickSize", "_clickNumber", "_clickInterval", "_lead", "_TOF", "_velocity", "_kineticEnergy", "_rangeOutput", "_elevationOutput", "_windageOutput", "_lastColumnOutput"]; private ["_range", "_elevation", "_windage1", "_windage2", "_clickSize", "_clickNumber", "_clickInterval", "_lead", "_TOF", "_velocity", "_kineticEnergy", "_rangeOutput", "_elevationOutput", "_windageOutput", "_lastColumnOutput", "_speedOfSound"];
_lastColumnOutput = ""; _lastColumnOutput = "";
if (GVAR(showWind2) && GVAR(rangeCardCurrentColumn) == 0) then { if (GVAR(showWind2) && GVAR(rangeCardCurrentColumn) == 0) then {
@ -32,6 +32,8 @@ if (GVAR(currentUnit) == 1) then {
lnbClear 5007; lnbClear 5007;
_speedOfSound = GVAR(temperature) call EFUNC(weather,calculateSpeedOfSound);
{ {
_range = _x select 0; _range = _x select 0;
_elevation = _x select 1; _elevation = _x select 1;
@ -72,7 +74,7 @@ lnbClear 5007;
_windageOutput = Str(Round(_windage1 * 100) / 100); _windageOutput = Str(Round(_windage1 * 100) / 100);
_rangeOutput = Str(_range); _rangeOutput = Str(_range);
if (_velocity < 340.29) then { if (_velocity < _speedOfSound) then {
_rangeOutput = _rangeOutput + "*"; _rangeOutput = _rangeOutput + "*";
}; };

View File

@ -1,11 +1,36 @@
["ACE3 Equipment", QGVAR(ATragMXDialogKey), localize "STR_ACE_ATragMX_ATragMXDialogKey", ["ACE3 Equipment", QGVAR(ATragMXDialogKey), localize LSTRING(ATragMXDialogKey),
{ {
// Conditions: canInteract // Conditions: canInteract
if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false}; if !([ACE_player, objNull, ["notOnMap", "isNotInside", "isNotSitting"]] call EFUNC(common,canInteractWith)) exitWith {false};
if (GVAR(active)) exitWith {
closeDialog 0;
false
};
// Statement // Statement
[] call FUNC(create_dialog); [] call FUNC(create_dialog);
false false
}, },
{false}, {false},
[0, [false, false, false]], false, 0] call CBA_fnc_addKeybind; // (empty default key) [0, [false, false, false]], false, 0] call CBA_fnc_addKeybind; // (empty default key)
//Add deviceKey entry:
private ["_conditonCode", "_toggleCode", "_closeCode"];
_conditonCode = {
[] call FUNC(can_show);
};
_toggleCode = {
// Conditions: canInteract
if !([ACE_player, objNull, ["notOnMap", "isNotInside", "isNotSitting"]] call EFUNC(common,canInteractWith)) exitWith {};
if (GVAR(active)) exitWith {
closeDialog 0;
};
// Statement
[] call FUNC(create_dialog);
};
_closeCode = {
if (GVAR(active)) exitWith {
closeDialog 0;
};
};
[(localize LSTRING(Name)), QUOTE(PATHTOF(UI\ATRAG_Icon.paa)), _conditonCode, _toggleCode, _closeCode] call EFUNC(common,deviceKeyRegisterNew);

View File

@ -11,4 +11,4 @@
#include "\z\ace\addons\main\script_macros.hpp" #include "\z\ace\addons\main\script_macros.hpp"
#define ATRAGMX_PROFILE_NAMESPACE_VERSION 1.4 #define ATRAGMX_PROFILE_NAMESPACE_VERSION 1.7

View File

@ -1 +1 @@
z\ace\Addons\attach z\ace\addons\attach

View File

@ -3,7 +3,7 @@
class ACE_Actions { \ class ACE_Actions { \
class ACE_MainActions { \ class ACE_MainActions { \
class GVAR(AttachVehicle) { \ class GVAR(AttachVehicle) { \
displayName = "$STR_ACE_Attach_AttachDetach"; \ displayName = CSTRING(AttachDetach); \
condition = QUOTE(_this call FUNC(canAttach)); \ condition = QUOTE(_this call FUNC(canAttach)); \
insertChildren = QUOTE(_this call FUNC(getChildrenAttachActions)); \ insertChildren = QUOTE(_this call FUNC(getChildrenAttachActions)); \
exceptions[] = {}; \ exceptions[] = {}; \
@ -13,7 +13,7 @@
distance = 4.5; \ distance = 4.5; \
}; \ }; \
class GVAR(DetachVehicle) { \ class GVAR(DetachVehicle) { \
displayName = "$STR_ACE_Attach_Detach"; \ displayName = CSTRING(Detach); \
condition = QUOTE(_this call FUNC(canDetach)); \ condition = QUOTE(_this call FUNC(canDetach)); \
statement = QUOTE(_this call FUNC(detach) ); \ statement = QUOTE(_this call FUNC(detach) ); \
exceptions[] = {}; \ exceptions[] = {}; \
@ -54,7 +54,7 @@ class CfgVehicles {
class ACE_SelfActions { class ACE_SelfActions {
class ACE_Equipment { class ACE_Equipment {
class GVAR(Attach) { class GVAR(Attach) {
displayName = "$STR_ACE_Attach_AttachDetach"; displayName = CSTRING(AttachDetach);
condition = QUOTE(_this call FUNC(canAttach)); condition = QUOTE(_this call FUNC(canAttach));
insertChildren = QUOTE(_this call FUNC(getChildrenAttachActions)); insertChildren = QUOTE(_this call FUNC(getChildrenAttachActions));
exceptions[] = {"isNotDragging"}; exceptions[] = {"isNotDragging"};
@ -64,7 +64,7 @@ class CfgVehicles {
// hotkey = "T"; // hotkey = "T";
}; };
class GVAR(Detach) { class GVAR(Detach) {
displayName = "$STR_ACE_Attach_Detach"; displayName = CSTRING(Detach);
condition = QUOTE(_this call FUNC(canDetach)); condition = QUOTE(_this call FUNC(canDetach));
statement = QUOTE(_this call FUNC(detach)); statement = QUOTE(_this call FUNC(detach));
exceptions[] = {"isNotDragging"}; exceptions[] = {"isNotDragging"};
@ -87,9 +87,9 @@ class CfgVehicles {
class NVGMarker { class NVGMarker {
diffuse[] = {0.006, 0.006, 0.006, 1}; diffuse[] = {0.006, 0.006, 0.006, 1};
ambient[] = {0.005, 0.005, 0.005, 1}; ambient[] = {0.005, 0.005, 0.005, 1};
brightness = 0.2; brightness = 0.1;
name = "pozicni blik"; name = "pozicni blik";
drawLightSize = 0.2; drawLightSize = 0.1;
drawLightCenterSize = 0.003; drawLightCenterSize = 0.003;
activeLight = 0; activeLight = 0;
blinking=1; blinking=1;
@ -112,7 +112,7 @@ class CfgVehicles {
magazines[] = {}; magazines[] = {};
nvTarget = 1; nvTarget = 1;
destrType = "DestructNo"; destrType = "DestructNo";
brightness = 20; brightness = 10;
}; };
class NATO_Box_Base; class NATO_Box_Base;

View File

@ -5,10 +5,10 @@ class CfgWeapons {
class ACE_IR_Strobe_Item: ACE_ItemCore { class ACE_IR_Strobe_Item: ACE_ItemCore {
ACE_attachable = "ACE_IR_Strobe_Effect"; ACE_attachable = "ACE_IR_Strobe_Effect";
author = "$STR_ACE_Common_ACETeam"; author = ECSTRING(common,ACETeam);
scope = 2; scope = 2;
displayName = "$STR_ACE_IrStrobe_Name"; displayName = CSTRING(IrStrobe_Name);
descriptionShort = "$STR_ACE_IrStrobe_Description"; descriptionShort = CSTRING(IrStrobe_Description);
model = "\A3\weapons_F\ammo\mag_univ.p3d"; model = "\A3\weapons_F\ammo\mag_univ.p3d";
picture = PATHTOF(UI\irstrobe_item.paa); picture = PATHTOF(UI\irstrobe_item.paa);

View File

@ -37,7 +37,7 @@ if (_itemVehClass == "") then {
if (_itemVehClass == "") exitWith {ERROR("no ACE_Attachable for Item");}; if (_itemVehClass == "") exitWith {ERROR("no ACE_Attachable for Item");};
_onAtachText = format [localize "STR_ACE_Attach_Item_Attached", _onAtachText]; _onAtachText = format [localize LSTRING(Item_Attached), _onAtachText];
if (_unit == _attachToVehicle) then { //Self Attachment if (_unit == _attachToVehicle) then { //Self Attachment
_unit removeItem _itemClassname; // Remove item _unit removeItem _itemClassname; // Remove item
@ -55,11 +55,11 @@ if (_unit == _attachToVehicle) then { //Self Attachment
[_unit, QGVAR(vehAttach), true] call EFUNC(common,setForceWalkStatus); [_unit, QGVAR(vehAttach), true] call EFUNC(common,setForceWalkStatus);
//MenuBack isn't working for now (localize "STR_ACE_Attach_CancelAction") //MenuBack isn't working for now (localize "STR_ACE_Attach_CancelAction")
[{[localize "STR_ACE_Attach_PlaceAction", ""] call EFUNC(interaction,showMouseHint)}, [], 0, 0] call EFUNC(common,waitAndExecute); [{[localize LSTRING(PlaceAction), ""] call EFUNC(interaction,showMouseHint)}, []] call EFUNC(common,execNextFrame);
_unit setVariable [QGVAR(placeActionEH), [_unit, "DefaultAction", {true}, {GVAR(placeAction) = 1;}] call EFUNC(common,AddActionEventHandler)]; _unit setVariable [QGVAR(placeActionEH), [_unit, "DefaultAction", {true}, {GVAR(placeAction) = 1;}] call EFUNC(common,AddActionEventHandler)];
// _unit setVariable [QGVAR(cancelActionEH), [_unit, "MenuBack", {true}, {GVAR(placeAction) = 0;}] call EFUNC(common,AddActionEventHandler)]; // _unit setVariable [QGVAR(cancelActionEH), [_unit, "MenuBack", {true}, {GVAR(placeAction) = 0;}] call EFUNC(common,AddActionEventHandler)];
_actionID = _unit addAction [format ["<t color='#FF0000'>%1</t>", localize "STR_ACE_Attach_CancelAction"], {GVAR(placeAction) = 0}]; _actionID = _unit addAction [format ["<t color='#FF0000'>%1</t>", localize LSTRING(CancelAction)], {GVAR(placeAction) = 0}];
[{ [{
private "_startingPosition"; private "_startingPosition";

View File

@ -49,7 +49,7 @@ if (isNull _attachedObject || {_itemName == ""}) exitWith {ERROR("Could not find
// Exit if can't add the item // Exit if can't add the item
if !(_unit canAdd _itemName) exitWith { if !(_unit canAdd _itemName) exitWith {
[localize "STR_ACE_Attach_Inventory_Full"] call EFUNC(common,displayTextStructured); [localize LSTRING(Inventory_Full)] call EFUNC(common,displayTextStructured);
}; };
// Add item to inventory // Add item to inventory
@ -60,7 +60,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], 0.5, 0] call EFUNC(common,waitAndExecute); [{deleteVehicle (_this select 0)}, [_attachedObject], 2] call EFUNC(common,waitAndExecute);
} else { } else {
// Delete attached item // Delete attached item
deleteVehicle _attachedObject; deleteVehicle _attachedObject;
@ -78,4 +78,4 @@ if (_itemDisplayName == "") then {
_itemDisplayName = getText (configFile >> "CfgMagazines" >> _itemName >> "displayName"); _itemDisplayName = getText (configFile >> "CfgMagazines" >> _itemName >> "displayName");
}; };
[format [localize "STR_ACE_Attach_Item_Detached", _itemDisplayName]] call EFUNC(common,displayTextStructured); [format [localize LSTRING(Item_Detached), _itemDisplayName]] call EFUNC(common,displayTextStructured);

View File

@ -74,7 +74,7 @@ _closeInDistance = (_closeInMax + _closeInMin) / 2;
//Checks (too close to center or can't attach) //Checks (too close to center or can't attach)
if (((_startDistanceFromCenter - _closeInDistance) < 0.1) || {!([_attachToVehicle, _unit, _itemClassname] call FUNC(canAttach))}) exitWith { if (((_startDistanceFromCenter - _closeInDistance) < 0.1) || {!([_attachToVehicle, _unit, _itemClassname] call FUNC(canAttach))}) exitWith {
TRACE_2("no valid spot found",_closeInDistance,_startDistanceFromCenter); TRACE_2("no valid spot found",_closeInDistance,_startDistanceFromCenter);
[localize "STR_ACE_Attach_Failed"] call EFUNC(common,displayTextStructured); [localize LSTRING(Failed)] call EFUNC(common,displayTextStructured);
}; };
//Move it out slightly, for visability sake (better to look a little funny than be embedded//sunk in the hull and be useless) //Move it out slightly, for visability sake (better to look a little funny than be embedded//sunk in the hull and be useless)

View File

@ -1,5 +1,5 @@
#define COMPONENT attach #define COMPONENT attach
#include "\z\ace\Addons\main\script_mod.hpp" #include "\z\ace\addons\main\script_mod.hpp"
#ifdef DEBUG_ENABLED_ATTACH #ifdef DEBUG_ENABLED_ATTACH
#define DEBUG_MODE_FULL #define DEBUG_MODE_FULL
@ -9,4 +9,4 @@
#define DEBUG_SETTINGS DEBUG_SETTINGS_ATTACH #define DEBUG_SETTINGS DEBUG_SETTINGS_ATTACH
#endif #endif
#include "\z\ace\Addons\main\script_macros.hpp" #include "\z\ace\addons\main\script_macros.hpp"

View File

@ -121,7 +121,7 @@
<Hungarian>Nincs több hely</Hungarian> <Hungarian>Nincs több hely</Hungarian>
<Russian>В инвентаре нет места</Russian> <Russian>В инвентаре нет места</Russian>
</Key> </Key>
<Key ID="STR_ACE_IrStrobe_Name"> <Key ID="STR_ACE_Attach_IrStrobe_Name">
<English>IR Strobe</English> <English>IR Strobe</English>
<German>IR-Stroboskop</German> <German>IR-Stroboskop</German>
<Spanish>Marcador IR</Spanish> <Spanish>Marcador IR</Spanish>
@ -133,7 +133,7 @@
<Hungarian>Infravörös jeladó</Hungarian> <Hungarian>Infravörös jeladó</Hungarian>
<Russian>ИК-маяк</Russian> <Russian>ИК-маяк</Russian>
</Key> </Key>
<Key ID="STR_ACE_IrStrobe_Description"> <Key ID="STR_ACE_Attach_IrStrobe_Description">
<English>IR Strobe allows you to signal your position through a pulsating beacon only visible with NVGs.</English> <English>IR Strobe allows you to signal your position through a pulsating beacon only visible with NVGs.</English>
<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>
@ -179,7 +179,7 @@
<Portuguese>Erro ao fixar</Portuguese> <Portuguese>Erro ao fixar</Portuguese>
<Polish>Przyczepianie nie powiodło się</Polish> <Polish>Przyczepianie nie powiodło się</Polish>
<Hungarian>Hozzácsatolás sikertelen</Hungarian> <Hungarian>Hozzácsatolás sikertelen</Hungarian>
<Italian>Impossibile Attaccare</Italian> <Italian>Non si attacca</Italian>
</Key> </Key>
<Key ID="STR_ACE_Attach_Item_Attached"> <Key ID="STR_ACE_Attach_Item_Attached">
<English>%1&lt;br/&gt;Attached</English> <English>%1&lt;br/&gt;Attached</English>

View File

@ -20,127 +20,127 @@ class CfgAmmo {
}; };
class B_556x45_Ball : BulletBase { class B_556x45_Ball : BulletBase {
airFriction=-0.001265; airFriction=-0.00126466;
hit=8; hit=8;
typicalSpeed=750; typicalSpeed=750;
tracerStartTime = 0.073; //M856 tracer burns out to 800m tracerStartTime=0.073; // M856 tracer burns out to 800m
tracerEndTime = 1.579; //Time in seconds calculated with ballistics calculator tracerEndTime=1.57123; // Time in seconds calculated with ballistics calculator
ACE_caliber=0.224; ACE_caliber=5.69;
ACE_bulletLength=0.906; ACE_bulletLength=23.012;
ACE_bulletMass=62; ACE_bulletMass=4.0176;
ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75}; ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75};
ACE_ballisticCoefficients[]={0.151}; ACE_ballisticCoefficients[]={0.151};
ACE_velocityBoundaries[]={}; ACE_velocityBoundaries[]={};
ACE_standardAtmosphere="ASM"; ACE_standardAtmosphere="ASM";
ACE_dragModel=7; ACE_dragModel=7;
ACE_muzzleVelocities[]={723, 764, 796, 825, 843, 866, 878, 892, 906, 915, 922, 900}; ACE_muzzleVelocities[]={723, 764, 796, 825, 843, 866, 878, 892, 906, 915, 922, 900};
ACE_barrelLengths[]={8.3, 9.4, 10.6, 11.8, 13.0, 14.2, 15.4, 16.5, 17.7, 18.9, 20.0, 24.0}; ACE_barrelLengths[]={210.82, 238.76, 269.24, 299.72, 330.2, 360.68, 391.16, 419.1, 449.58, 480.06, 508.0, 609.6};
}; };
class ACE_556x45_Ball_Mk262 : B_556x45_Ball { class ACE_556x45_Ball_Mk262 : B_556x45_Ball {
airFriction=-0.001125; airFriction=-0.00109563;
caliber=0.8; caliber=0.8;
deflecting=18; deflecting=18;
hit=11; hit=11;
typicalSpeed=836; typicalSpeed=836;
ACE_caliber=0.224; ACE_caliber=5.69;
ACE_bulletLength=0.906; ACE_bulletLength=23.012;
ACE_bulletMass=77; ACE_bulletMass=4.9896;
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
ACE_ballisticCoefficients[]={0.361}; ACE_ballisticCoefficients[]={0.361};
ACE_velocityBoundaries[]={}; ACE_velocityBoundaries[]={};
ACE_standardAtmosphere="ASM"; ACE_standardAtmosphere="ASM";
ACE_dragModel=1; ACE_dragModel=1;
ACE_muzzleVelocities[]={624, 816, 832, 838}; ACE_muzzleVelocities[]={624, 816, 832, 838};
ACE_barrelLengths[]={7.5, 14.5, 18, 20}; ACE_barrelLengths[]={190.5, 368.3, 457.2, 508.0};
}; };
class ACE_556x45_Ball_Mk318 : B_556x45_Ball { class ACE_556x45_Ball_Mk318 : B_556x45_Ball {
airFriction=-0.001120; airFriction=-0.00123318;
caliber=0.8; caliber=0.8;
deflecting=18; deflecting=18;
hit=9; hit=9;
typicalSpeed=886; typicalSpeed=886;
ACE_caliber=0.224; ACE_caliber=5.69;
ACE_bulletLength=0.906; ACE_bulletLength=23.012;
ACE_bulletMass=62; ACE_bulletMass=4.0176;
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
ACE_ballisticCoefficients[]={0.307}; ACE_ballisticCoefficients[]={0.307};
ACE_velocityBoundaries[]={}; ACE_velocityBoundaries[]={};
ACE_standardAtmosphere="ASM"; ACE_standardAtmosphere="ASM";
ACE_dragModel=1; ACE_dragModel=1;
ACE_muzzleVelocities[]={780, 886, 950}; ACE_muzzleVelocities[]={780, 886, 950};
ACE_barrelLengths[]={10, 15.5, 20}; ACE_barrelLengths[]={254.0, 393.7, 508.0};
}; };
class ACE_556x45_Ball_M995_AP : B_556x45_Ball { class ACE_556x45_Ball_M995_AP : B_556x45_Ball {
airFriction=-0.001120; airFriction=-0.00123272;
caliber=1.6; caliber=1.6;
deflecting=18; deflecting=18;
hit=6; hit=6;
typicalSpeed=886; typicalSpeed=869;
ACE_caliber=0.224; ACE_caliber=5.69;
ACE_bulletLength=0.906; ACE_bulletLength=23.012;
ACE_bulletMass=46; ACE_bulletMass=4.5359237;
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
ACE_ballisticCoefficients[]={0.151}; ACE_ballisticCoefficients[]={0.310};
ACE_velocityBoundaries[]={}; ACE_velocityBoundaries[]={};
ACE_standardAtmosphere="ASM"; ACE_standardAtmosphere="ASM";
ACE_dragModel=7; ACE_dragModel=1;
ACE_muzzleVelocities[]={950, 1030, 1040}; ACE_muzzleVelocities[]={820, 865, 880};
ACE_barrelLengths[]={10, 15.5, 20}; ACE_barrelLengths[]={254.0, 368.3, 508.0};
}; };
class B_556x45_Ball_Tracer_Red; class B_556x45_Ball_Tracer_Red;
class ACE_B_556x45_Ball_Tracer_Dim: B_556x45_Ball_Tracer_Red { class ACE_B_556x45_Ball_Tracer_Dim: B_556x45_Ball_Tracer_Red {
nvgOnly = 1; nvgOnly = 1;
}; };
class ACE_545x39_Ball_7N6M : B_556x45_Ball { class ACE_545x39_Ball_7N6M : B_556x45_Ball {
airFriction=-0.001162; airFriction=-0.00114744;
caliber=0.6; caliber=0.6;
deflecting=18; deflecting=18;
hit=7; hit=7;
typicalSpeed=880; typicalSpeed=880;
ACE_caliber=0.220; ACE_caliber=5.588;
ACE_bulletLength=0.85; ACE_bulletLength=21.59;
ACE_bulletMass=52.9; ACE_bulletMass=3.42792;
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
ACE_ballisticCoefficients[]={0.168}; ACE_ballisticCoefficients[]={0.168};
ACE_velocityBoundaries[]={}; ACE_velocityBoundaries[]={};
ACE_standardAtmosphere="ICAO"; ACE_standardAtmosphere="ICAO";
ACE_dragModel=7; ACE_dragModel=7;
ACE_muzzleVelocities[]={780, 880, 920}; ACE_muzzleVelocities[]={780, 880, 920};
ACE_barrelLengths[]={10, 16.3, 20}; ACE_barrelLengths[]={254.0, 414.02, 508.0};
}; };
class B_556x45_Ball_Tracer_Green; class B_556x45_Ball_Tracer_Green;
class ACE_545x39_Ball_7T3M : B_556x45_Ball_Tracer_Green { class ACE_545x39_Ball_7T3M : B_556x45_Ball_Tracer_Green {
airFriction=-0.001162; airFriction=-0.00114744;
caliber=0.6; caliber=0.6;
deflecting=18; deflecting=18;
hit=7; hit=7;
typicalSpeed=883; typicalSpeed=883;
tracerStartTime = 0.073; //7T3M tracer burns out to 850m tracerStartTime=0.073; // 7T3M tracer burns out to 850m
tracerEndTime = 1.736; //Time in seconds calculated with ballistics calculator tracerEndTime=1.70236; // Time in seconds calculated with ballistics calculator
ACE_caliber=0.220; ACE_caliber=5.588;
ACE_bulletLength=0.85; ACE_bulletLength=21.59;
ACE_bulletMass=49.8; ACE_bulletMass=3.22704;
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
ACE_ballisticCoefficients[]={0.168}; ACE_ballisticCoefficients[]={0.168};
ACE_velocityBoundaries[]={}; ACE_velocityBoundaries[]={};
ACE_standardAtmosphere="ICAO"; ACE_standardAtmosphere="ICAO";
ACE_dragModel=7; ACE_dragModel=7;
ACE_muzzleVelocities[]={785, 883, 925}; ACE_muzzleVelocities[]={785, 883, 925};
ACE_barrelLengths[]={10, 16.3, 20}; ACE_barrelLengths[]={254.0, 414.02, 508.0};
}; };
class B_65x39_Caseless : BulletBase { class B_65x39_Caseless : BulletBase {
airFriction=-0.000785; airFriction=-0.00075308;
typicalSpeed=800; typicalSpeed=800;
ACE_caliber=0.264; ACE_caliber=6.706;
ACE_bulletLength=1.295; ACE_bulletLength=32.893;
ACE_bulletMass=123; ACE_bulletMass=7.9704;
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
ACE_ballisticCoefficients[]={0.263}; ACE_ballisticCoefficients[]={0.263};
ACE_velocityBoundaries[]={}; ACE_velocityBoundaries[]={};
ACE_standardAtmosphere="ICAO"; ACE_standardAtmosphere="ICAO";
ACE_dragModel=7; ACE_dragModel=7;
ACE_muzzleVelocities[]={730, 760, 788, 800, 810, 830}; ACE_muzzleVelocities[]={730, 760, 788, 800, 810, 830};
ACE_barrelLengths[]={10, 16, 20, 24, 26, 30}; ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4, 762.0};
}; };
class B_65x39_Case_yellow; class B_65x39_Case_yellow;
class ACE_65x39_Caseless_Tracer_Dim : B_65x39_Case_yellow { class ACE_65x39_Caseless_Tracer_Dim : B_65x39_Case_yellow {
@ -151,442 +151,442 @@ class CfgAmmo {
nvgOnly = 1; nvgOnly = 1;
}; };
class ACE_65x47_Ball_Scenar: B_65x39_Caseless { class ACE_65x47_Ball_Scenar: B_65x39_Caseless {
airFriction=-0.00078; airFriction=-0.00067037;
typicalSpeed=820 ; typicalSpeed=820 ;
caliber=0.9; caliber=0.9;
ACE_caliber=0.264; ACE_caliber=6.706;
ACE_bulletLength=1.364; ACE_bulletLength=34.646;
ACE_bulletMass=139; ACE_bulletMass=9.0072;
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
ACE_ballisticCoefficients[]={0.290}; ACE_ballisticCoefficients[]={0.290};
ACE_velocityBoundaries[]={}; ACE_velocityBoundaries[]={};
ACE_standardAtmosphere="ICAO"; ACE_standardAtmosphere="ICAO";
ACE_dragModel=7; ACE_dragModel=7;
ACE_muzzleVelocities[]={730, 760, 790, 820, 830}; ACE_muzzleVelocities[]={730, 760, 790, 820, 830};
ACE_barrelLengths[]={10, 16, 20, 24, 26}; ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4};
}; };
class ACE_65_Creedmor_Ball: B_65x39_Caseless { class ACE_65_Creedmor_Ball: B_65x39_Caseless {
airFriction=-0.000651; airFriction=-0.00060887;
typicalSpeed=860 ; typicalSpeed=860 ;
caliber=1.1; caliber=1.1;
ACE_caliber=0.264; ACE_caliber=6.706;
ACE_bulletLength=1.426; ACE_bulletLength=36.22;
ACE_bulletMass=140; ACE_bulletMass=9.072;
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
ACE_ballisticCoefficients[]={0.317}; ACE_ballisticCoefficients[]={0.317};
ACE_velocityBoundaries[]={}; ACE_velocityBoundaries[]={};
ACE_standardAtmosphere="ICAO"; ACE_standardAtmosphere="ICAO";
ACE_dragModel=7; ACE_dragModel=7;
ACE_muzzleVelocities[]={750, 820, 840, 852, 860}; ACE_muzzleVelocities[]={750, 820, 840, 852, 860};
ACE_barrelLengths[]={10, 16, 20, 24, 26}; ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4};
}; };
class B_762x51_Ball : BulletBase { class B_762x51_Ball : BulletBase {
airFriction=-0.001035; airFriction=-0.00100957;
typicalSpeed=833; typicalSpeed=833;
hit=9; hit=9;
tracerStartTime = 0.073; //Based on the British L5A1 which burns out to 1000m tracerStartTime=0.073; // Based on the British L5A1 which burns out to 1000m
tracerEndTime = 2.058; //Time in seconds calculated with ballistics calculator tracerEndTime=2.15957; // Time in seconds calculated with ballistics calculator
ACE_caliber=0.308; ACE_caliber=7.823;
ACE_bulletLength=1.14; ACE_bulletLength=28.956;
ACE_bulletMass=146; ACE_bulletMass=9.4608;
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
ACE_ballisticCoefficients[]={0.2}; ACE_ballisticCoefficients[]={0.2};
ACE_velocityBoundaries[]={}; ACE_velocityBoundaries[]={};
ACE_standardAtmosphere="ICAO"; ACE_standardAtmosphere="ICAO";
ACE_dragModel=7; ACE_dragModel=7;
ACE_muzzleVelocities[]={700, 800, 820, 833, 845}; ACE_muzzleVelocities[]={700, 800, 820, 833, 845};
ACE_barrelLengths[]={10, 16, 20, 24, 26}; ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4};
}; };
class B_762x51_Tracer_Yellow; class B_762x51_Tracer_Yellow;
class ACE_B_762x51_Tracer_Dim: B_762x51_Tracer_Yellow { class ACE_B_762x51_Tracer_Dim: B_762x51_Tracer_Yellow {
nvgOnly = 1; nvgOnly = 1;
}; };
class ACE_762x51_Ball_M118LR : B_762x51_Ball { class ACE_762x51_Ball_M118LR : B_762x51_Ball {
airFriction=-0.0008525; airFriction=-0.00082828;
caliber=1.8; caliber=1.8;
hit=16; hit=16;
typicalSpeed=790; typicalSpeed=790;
ACE_caliber=0.308; ACE_caliber=7.823;
ACE_bulletLength=1.24; ACE_bulletLength=31.496;
ACE_bulletMass=175; ACE_bulletMass=11.34;
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
ACE_ballisticCoefficients[]={0.243}; ACE_ballisticCoefficients[]={0.243};
ACE_velocityBoundaries[]={}; ACE_velocityBoundaries[]={};
ACE_standardAtmosphere="ICAO"; ACE_standardAtmosphere="ICAO";
ACE_dragModel=7; ACE_dragModel=7;
ACE_muzzleVelocities[]={750, 780, 790, 794}; ACE_muzzleVelocities[]={750, 780, 790, 794};
ACE_barrelLengths[]={16, 20, 24, 26}; ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4};
}; };
class ACE_762x51_Ball_Mk316_Mod_0 : B_762x51_Ball { class ACE_762x51_Ball_Mk316_Mod_0 : B_762x51_Ball {
airFriction=-0.0008525; airFriction=-0.00082029;
caliber=1.8; caliber=1.8;
hit=16; hit=16;
typicalSpeed=790; typicalSpeed=790;
ACE_caliber=0.308; ACE_caliber=7.823;
ACE_bulletLength=1.24; ACE_bulletLength=31.496;
ACE_bulletMass=175; ACE_bulletMass=11.34;
ACE_ammoTempMuzzleVelocityShifts[]={-5.3, -5.1, -4.6, -4.2, -3.4, -2.6, -1.4, -0.3, 1.4, 3.0, 5.2}; ACE_ammoTempMuzzleVelocityShifts[]={-5.3, -5.1, -4.6, -4.2, -3.4, -2.6, -1.4, -0.3, 1.4, 3.0, 5.2};
ACE_ballisticCoefficients[]={0.243}; ACE_ballisticCoefficients[]={0.243};
ACE_velocityBoundaries[]={}; ACE_velocityBoundaries[]={};
ACE_standardAtmosphere="ICAO"; ACE_standardAtmosphere="ICAO";
ACE_dragModel=7; ACE_dragModel=7;
ACE_muzzleVelocities[]={775, 790, 805, 810}; ACE_muzzleVelocities[]={775, 790, 805, 810};
ACE_barrelLengths[]={16, 20, 24, 26}; ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4};
}; };
class ACE_762x51_Ball_Mk319_Mod_0 : B_762x51_Ball { class ACE_762x51_Ball_Mk319_Mod_0 : B_762x51_Ball {
airFriction=-0.00103; airFriction=-0.00102338;
caliber=1.5; caliber=1.5;
hit=14; hit=14;
typicalSpeed=900; typicalSpeed=900;
ACE_caliber=0.308; ACE_caliber=7.823;
ACE_bulletLength=1.24; ACE_bulletLength=31.496;
ACE_bulletMass=130; ACE_bulletMass=8.424;
ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
ACE_ballisticCoefficients[]={0.377}; ACE_ballisticCoefficients[]={0.377};
ACE_velocityBoundaries[]={}; ACE_velocityBoundaries[]={};
ACE_standardAtmosphere="ICAO"; ACE_standardAtmosphere="ICAO";
ACE_dragModel=1; ACE_dragModel=1;
ACE_muzzleVelocities[]={838, 892, 910}; ACE_muzzleVelocities[]={838, 892, 910};
ACE_barrelLengths[]={13, 16, 20}; ACE_barrelLengths[]={330.2, 406.4, 508.0};
}; };
class ACE_762x51_Ball_M993_AP : B_762x51_Ball { class ACE_762x51_Ball_M993_AP : B_762x51_Ball {
airFriction=-0.00103; airFriction=-0.00107148;
caliber=2.2; caliber=2.2;
hit=11; hit=11;
typicalSpeed=930; typicalSpeed=910;
ACE_caliber=0.308; ACE_caliber=7.823;
ACE_bulletLength=1.24; ACE_bulletLength=31.496;
ACE_bulletMass=127; ACE_bulletMass=8.22946157;
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
ACE_ballisticCoefficients[]={0.377}; ACE_ballisticCoefficients[]={0.359};
ACE_velocityBoundaries[]={}; ACE_velocityBoundaries[]={};
ACE_standardAtmosphere="ICAO"; ACE_standardAtmosphere="ICAO";
ACE_dragModel=1; ACE_dragModel=1;
ACE_muzzleVelocities[]={875, 910, 930}; ACE_muzzleVelocities[]={875, 910, 930};
ACE_barrelLengths[]={13, 16, 20}; ACE_barrelLengths[]={330.2, 406.4, 508.0};
}; };
class ACE_762x51_Ball_Subsonic : B_762x51_Ball { class ACE_762x51_Ball_Subsonic : B_762x51_Ball {
airFriction=-0.000535; airFriction=-0.00049899;
caliber=1; caliber=1;
hit=6; hit=6;
typicalSpeed=320; typicalSpeed=320;
ACE_caliber=0.308; ACE_caliber=7.823;
ACE_bulletLength=1.340; ACE_bulletLength=34.036;
ACE_bulletMass=200; ACE_bulletMass=12.96;
ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
ACE_ballisticCoefficients[]={0.235}; ACE_ballisticCoefficients[]={0.235};
ACE_velocityBoundaries[]={}; ACE_velocityBoundaries[]={};
ACE_standardAtmosphere="ICAO"; ACE_standardAtmosphere="ICAO";
ACE_dragModel=7; ACE_dragModel=7;
ACE_muzzleVelocities[]={305, 325, 335, 340}; ACE_muzzleVelocities[]={305, 325, 335, 340};
ACE_barrelLengths[]={16, 20, 24, 26}; ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4};
}; };
class ACE_30_06_M1_Ball : B_762x51_Ball { class ACE_30_06_M1_Ball : B_762x51_Ball {
airFriction=-0.0009; airFriction=-0.00080900;
typicalSpeed=800; typicalSpeed=800;
caliber=2.0; caliber=2.0;
hit=10; hit=10;
ACE_caliber=0.308; ACE_caliber=7.823;
ACE_bulletLength=1.21; ACE_bulletLength=30.734;
ACE_bulletMass=174; ACE_bulletMass=11.2752;
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
ACE_ballisticCoefficients[]={0.494}; ACE_ballisticCoefficients[]={0.494};
ACE_velocityBoundaries[]={}; ACE_velocityBoundaries[]={};
ACE_standardAtmosphere="ASM"; ACE_standardAtmosphere="ASM";
ACE_dragModel=1; ACE_dragModel=1;
ACE_muzzleVelocities[]={700, 785, 800, 830, 840}; ACE_muzzleVelocities[]={700, 785, 800, 830, 840};
ACE_barrelLengths[]={10, 16, 20, 24, 26}; ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4};
}; };
class ACE_7_Remington_Magnum_Ball : B_762x51_Ball { class ACE_7_Remington_Magnum_Ball : B_762x51_Ball {
airFriction=-0.0008; airFriction=-0.00056738;
typicalSpeed=820; typicalSpeed=820;
caliber=2.1; caliber=2.1;
hit=8; hit=8;
ACE_caliber=0.284; ACE_caliber=7.214;
ACE_bulletLength=1.529; ACE_bulletLength=38.837;
ACE_bulletMass=180; ACE_bulletMass=11.664;
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
ACE_ballisticCoefficients[]={0.345}; ACE_ballisticCoefficients[]={0.345};
ACE_velocityBoundaries[]={}; ACE_velocityBoundaries[]={};
ACE_standardAtmosphere="ICAO"; ACE_standardAtmosphere="ICAO";
ACE_dragModel=7; ACE_dragModel=7;
ACE_muzzleVelocities[]={720, 780, 812, 822, 830}; ACE_muzzleVelocities[]={720, 780, 812, 822, 830};
ACE_barrelLengths[]={10, 16, 20, 24, 26}; ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4};
}; };
class ACE_243_Winchester_Ball : B_762x51_Ball { class ACE_243_Winchester_Ball : B_762x51_Ball {
airFriction=-0.00095; airFriction=-0.00067875;
typicalSpeed=915; typicalSpeed=915;
caliber=2.3; caliber=2.3;
hit=6; hit=6;
ACE_caliber=0.243; ACE_caliber=6.172;
ACE_bulletLength=1.282; ACE_bulletLength=32.563;
ACE_bulletMass=180; ACE_bulletMass=11.664;
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
ACE_ballisticCoefficients[]={0.278}; ACE_ballisticCoefficients[]={0.278};
ACE_velocityBoundaries[]={}; ACE_velocityBoundaries[]={};
ACE_standardAtmosphere="ICAO"; ACE_standardAtmosphere="ICAO";
ACE_dragModel=7; ACE_dragModel=7;
ACE_muzzleVelocities[]={830, 875, 900, 915, 920}; ACE_muzzleVelocities[]={830, 875, 900, 915, 920};
ACE_barrelLengths[]={10, 16, 20, 24, 26}; ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4};
}; };
class ACE_762x67_Ball_Mk248_Mod_0 : B_762x51_Ball { class ACE_762x67_Ball_Mk248_Mod_0 : B_762x51_Ball {
airFriction=-0.000830; airFriction=-0.00070530;
caliber=1.8; caliber=1.8;
hit=17; hit=17;
typicalSpeed=900; typicalSpeed=900;
ACE_caliber=0.308; ACE_caliber=7.823;
ACE_bulletLength=1.353; ACE_bulletLength=34.366;
ACE_bulletMass=190; ACE_bulletMass=12.312;
ACE_ammoTempMuzzleVelocityShifts[]={-5.3, -5.1, -4.6, -4.2, -3.4, -2.6, -1.4, -0.3, 1.4, 3.0, 5.2}; ACE_ammoTempMuzzleVelocityShifts[]={-5.3, -5.1, -4.6, -4.2, -3.4, -2.6, -1.4, -0.3, 1.4, 3.0, 5.2};
ACE_ballisticCoefficients[]={0.268}; ACE_ballisticCoefficients[]={0.268};
ACE_velocityBoundaries[]={}; ACE_velocityBoundaries[]={};
ACE_standardAtmosphere="ICAO"; ACE_standardAtmosphere="ICAO";
ACE_dragModel=7; ACE_dragModel=7;
ACE_muzzleVelocities[]={865, 900, 924}; ACE_muzzleVelocities[]={865, 900, 924};
ACE_barrelLengths[]={20, 24, 26}; ACE_barrelLengths[]={508.0, 609.6, 660.4};
}; };
class ACE_762x67_Ball_Mk248_Mod_1 : B_762x51_Ball { class ACE_762x67_Ball_Mk248_Mod_1 : B_762x51_Ball {
airFriction=-0.000815; airFriction=-0.00061188;
caliber=1.9; caliber=1.9;
hit=18; hit=18;
typicalSpeed=867; typicalSpeed=867;
ACE_caliber=0.308; ACE_caliber=7.823;
ACE_bulletLength=1.489; ACE_bulletLength=37.821;
ACE_bulletMass=220; ACE_bulletMass=14.256;
ACE_ammoTempMuzzleVelocityShifts[]={-5.3, -5.1, -4.6, -4.2, -3.4, -2.6, -1.4, -0.3, 1.4, 3.0, 5.2}; ACE_ammoTempMuzzleVelocityShifts[]={-5.3, -5.1, -4.6, -4.2, -3.4, -2.6, -1.4, -0.3, 1.4, 3.0, 5.2};
ACE_ballisticCoefficients[]={0.310}; ACE_ballisticCoefficients[]={0.310};
ACE_velocityBoundaries[]={}; ACE_velocityBoundaries[]={};
ACE_standardAtmosphere="ICAO"; ACE_standardAtmosphere="ICAO";
ACE_dragModel=7; ACE_dragModel=7;
ACE_muzzleVelocities[]={847, 867, 877}; ACE_muzzleVelocities[]={847, 867, 877};
ACE_barrelLengths[]={20, 24, 26}; ACE_barrelLengths[]={508.0, 609.6, 660.4};
}; };
class ACE_762x67_Ball_Berger_Hybrid_OTM : B_762x51_Ball { class ACE_762x67_Ball_Berger_Hybrid_OTM : B_762x51_Ball {
airFriction=-0.00076; airFriction=-0.00053733;
caliber=2.0; caliber=2.0;
hit=19; hit=19;
typicalSpeed=853; typicalSpeed=853;
ACE_caliber=0.308; ACE_caliber=7.823;
ACE_bulletLength=1.602; ACE_bulletLength=40.691;
ACE_bulletMass=230; ACE_bulletMass=14.904;
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
ACE_ballisticCoefficients[]={0.368}; ACE_ballisticCoefficients[]={0.368};
ACE_velocityBoundaries[]={}; ACE_velocityBoundaries[]={};
ACE_standardAtmosphere="ICAO"; ACE_standardAtmosphere="ICAO";
ACE_dragModel=7; ACE_dragModel=7;
ACE_muzzleVelocities[]={800, 853, 884}; ACE_muzzleVelocities[]={800, 853, 884};
ACE_barrelLengths[]={20, 24, 26}; ACE_barrelLengths[]={508.0, 609.6, 660.4};
}; };
class B_762x54_Ball: B_762x51_Ball { class B_762x54_Ball: B_762x51_Ball {
airFriction=-0.001023; airFriction=-0.00100023;
typicalSpeed=820; typicalSpeed=820;
ACE_caliber=0.312; ACE_caliber=7.925;
ACE_bulletLength=1.14; ACE_bulletLength=28.956;
ACE_bulletMass=152; ACE_bulletMass=9.8496;
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
ACE_ballisticCoefficients[]={0.4}; ACE_ballisticCoefficients[]={0.4};
ACE_velocityBoundaries[]={}; ACE_velocityBoundaries[]={};
ACE_standardAtmosphere="ICAO"; ACE_standardAtmosphere="ICAO";
ACE_dragModel=1; ACE_dragModel=1;
ACE_muzzleVelocities[]={700, 800, 820, 833}; ACE_muzzleVelocities[]={700, 800, 820, 833};
ACE_barrelLengths[]={16, 20, 24, 26}; ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4};
}; };
class ACE_762x54_Ball_7N14 : B_762x51_Ball { class ACE_762x54_Ball_7N14 : B_762x51_Ball {
airFriction=-0.001023; airFriction=-0.00100023;
caliber=1.5; caliber=1.5;
hit=15; hit=15;
typicalSpeed=820; typicalSpeed=820;
ACE_caliber=0.312; ACE_caliber=7.925;
ACE_bulletLength=1.14; ACE_bulletLength=28.956;
ACE_bulletMass=152; ACE_bulletMass=9.8496;
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
ACE_ballisticCoefficients[]={0.4}; ACE_ballisticCoefficients[]={0.4};
ACE_velocityBoundaries[]={}; ACE_velocityBoundaries[]={};
ACE_standardAtmosphere="ICAO"; ACE_standardAtmosphere="ICAO";
ACE_dragModel=1; ACE_dragModel=1;
ACE_muzzleVelocities[]={700, 800, 820, 833}; ACE_muzzleVelocities[]={700, 800, 820, 833};
ACE_barrelLengths[]={16, 20, 24, 26}; ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4};
}; };
class B_762x54_Tracer_Green; class B_762x54_Tracer_Green;
class ACE_762x54_Ball_7T2 : B_762x54_Tracer_Green { class ACE_762x54_Ball_7T2 : B_762x54_Tracer_Green {
airFriction=-0.001023; airFriction=-0.00103989;
caliber=1.5; caliber=1.5;
hit=15; hit=15;
typicalSpeed=800; typicalSpeed=800;
tracerStartTime = 0.073; //Based on the 7T2 which burns three seconds tracerStartTime=0.073; // Based on the 7T2 which burns three seconds
tracerEndTime = 3; tracerEndTime=3;
ACE_caliber=0.312; ACE_caliber=7.925;
ACE_bulletLength=1.14; ACE_bulletLength=28.956;
ACE_bulletMass=149; ACE_bulletMass=9.6552;
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
ACE_ballisticCoefficients[]={0.395}; ACE_ballisticCoefficients[]={0.395};
ACE_velocityBoundaries[]={}; ACE_velocityBoundaries[]={};
ACE_standardAtmosphere="ICAO"; ACE_standardAtmosphere="ICAO";
ACE_dragModel=1; ACE_dragModel=1;
ACE_muzzleVelocities[]={680, 750, 798, 800}; ACE_muzzleVelocities[]={680, 750, 798, 800};
ACE_barrelLengths[]={16, 20, 24, 26}; ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4};
}; };
class ACE_762x35_Ball : B_762x51_Ball { class ACE_762x35_Ball : B_762x51_Ball {
airFriction=-0.000821; airFriction=-0.00128942;
caliber=1.5; caliber=1.5;
hit=11; hit=11;
typicalSpeed=790; typicalSpeed=790;
ACE_caliber=0.308; ACE_caliber=7.823;
ACE_bulletLength=1.153; ACE_bulletLength=29.286;
ACE_bulletMass=125; ACE_bulletMass=8.1;
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
ACE_ballisticCoefficients[]={0.349, 0.338, 0.330, 0.310}; ACE_ballisticCoefficients[]={0.349, 0.338, 0.330, 0.310};
ACE_velocityBoundaries[]={792, 610, 488}; ACE_velocityBoundaries[]={792, 610, 488};
ACE_standardAtmosphere="ICAO"; ACE_standardAtmosphere="ICAO";
ACE_dragModel=1; ACE_dragModel=1;
ACE_muzzleVelocities[]={620, 655, 675}; ACE_muzzleVelocities[]={620, 655, 675};
ACE_barrelLengths[]={9, 16, 20}; ACE_barrelLengths[]={228.6, 406.4, 508.0};
}; };
class ACE_762x39_Ball : B_762x51_Ball { class ACE_762x39_Ball : B_762x51_Ball {
airFriction=-0.0015168; airFriction=-0.00151621;
hit=12; hit=12;
caliber=1.5; caliber=1.5;
typicalSpeed=716; typicalSpeed=716;
ACE_caliber=0.308; ACE_caliber=7.823;
ACE_bulletLength=1.14; ACE_bulletLength=28.956;
ACE_bulletMass=123; ACE_bulletMass=7.9704;
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
ACE_ballisticCoefficients[]={0.275}; ACE_ballisticCoefficients[]={0.275};
ACE_velocityBoundaries[]={}; ACE_velocityBoundaries[]={};
ACE_standardAtmosphere="ICAO"; ACE_standardAtmosphere="ICAO";
ACE_dragModel=1; ACE_dragModel=1;
ACE_muzzleVelocities[]={650, 716, 750}; ACE_muzzleVelocities[]={650, 716, 750};
ACE_barrelLengths[]={10, 16.3, 20}; ACE_barrelLengths[]={254.0, 414.02, 508.0};
}; };
class ACE_762x39_Ball_57N231P : B_762x54_Tracer_Green { class ACE_762x39_Ball_57N231P : B_762x54_Tracer_Green {
airFriction=-0.0015168; airFriction=-0.00151621;
hit=12; hit=12;
caliber=1.5; caliber=1.5;
typicalSpeed=716; typicalSpeed=716;
tracerStartTime = 0.073; //57N231P tracer burns out to 800m tracerStartTime = 0.073; //57N231P tracer burns out to 800m
tracerEndTime = 2.082; //Time in seconds calculated with ballistics calculator tracerEndTime = 2.082; //Time in seconds calculated with ballistics calculator
ACE_caliber=0.308; ACE_caliber=7.823;
ACE_bulletLength=1.14; ACE_bulletLength=28.956;
ACE_bulletMass=117; ACE_bulletMass=7.5816;
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
ACE_ballisticCoefficients[]={0.275}; ACE_ballisticCoefficients[]={0.275};
ACE_velocityBoundaries[]={}; ACE_velocityBoundaries[]={};
ACE_standardAtmosphere="ICAO"; ACE_standardAtmosphere="ICAO";
ACE_dragModel=1; ACE_dragModel=1;
ACE_muzzleVelocities[]={650, 716, 750}; ACE_muzzleVelocities[]={650, 716, 750};
ACE_barrelLengths[]={10, 16.3, 20}; ACE_barrelLengths[]={254.0, 414.02, 508.0};
}; };
class B_9x21_Ball : BulletBase { class B_9x21_Ball : BulletBase {
airFriction=-0.00125; airFriction=-0.00226847;
typicalSpeed=390; typicalSpeed=390;
hit=6; hit=6;
ACE_caliber=0.356; ACE_caliber=9.042;
ACE_bulletLength=0.610; ACE_bulletLength=15.494;
ACE_bulletMass=115; ACE_bulletMass=7.452;
ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
ACE_ballisticCoefficients[]={0.17}; ACE_ballisticCoefficients[]={0.17};
ACE_velocityBoundaries[]={}; ACE_velocityBoundaries[]={};
ACE_standardAtmosphere="ICAO"; ACE_standardAtmosphere="ICAO";
ACE_dragModel=1; ACE_dragModel=1;
ACE_muzzleVelocities[]={440, 460, 480}; ACE_muzzleVelocities[]={440, 460, 480};
ACE_barrelLengths[]={4, 5, 9}; ACE_barrelLengths[]={101.6, 127.0, 228.6};
}; };
class ACE_9x18_Ball_57N181S : B_9x21_Ball { class ACE_9x18_Ball_57N181S : B_9x21_Ball {
hit=5; hit=5;
airFriction=-0.001234; airFriction=-0.00190333;
typicalSpeed=298; typicalSpeed=298;
ACE_caliber=0.365; ACE_caliber=9.271;
ACE_bulletLength=0.610; ACE_bulletLength=15.494;
ACE_bulletMass=92.6; ACE_bulletMass=6.00048;
ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
ACE_ballisticCoefficients[]={0.125}; ACE_ballisticCoefficients[]={0.125};
ACE_velocityBoundaries[]={}; ACE_velocityBoundaries[]={};
ACE_standardAtmosphere="ICAO"; ACE_standardAtmosphere="ICAO";
ACE_dragModel=1; ACE_dragModel=1;
ACE_muzzleVelocities[]={298, 330, 350}; ACE_muzzleVelocities[]={298, 330, 350};
ACE_barrelLengths[]={3.8, 5, 9}; ACE_barrelLengths[]={96.52, 127.0, 228.6};
}; };
class ACE_9x19_Ball : B_9x21_Ball { class ACE_9x19_Ball : B_9x21_Ball {
airFriction=-0.001234; airFriction=-0.0018577;
typicalSpeed=370; typicalSpeed=370;
hit=6; hit=6;
ACE_caliber=0.355; ACE_caliber=9.017;
ACE_bulletLength=0.610; ACE_bulletLength=15.494;
ACE_bulletMass=124; ACE_bulletMass=8.0352;
ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
ACE_ballisticCoefficients[]={0.165}; ACE_ballisticCoefficients[]={0.165};
ACE_velocityBoundaries[]={}; ACE_velocityBoundaries[]={};
ACE_standardAtmosphere="ASM"; ACE_standardAtmosphere="ASM";
ACE_dragModel=1; ACE_dragModel=1;
ACE_muzzleVelocities[]={340, 370, 400}; ACE_muzzleVelocities[]={340, 370, 400};
ACE_barrelLengths[]={4, 5, 9}; ACE_barrelLengths[]={101.6, 127.0, 228.6};
}; };
class ACE_10x25_Ball : B_9x21_Ball { class ACE_10x25_Ball : B_9x21_Ball {
airFriction=-0.00168; airFriction=-0.00181928;
typicalSpeed=425; typicalSpeed=425;
hit=7; hit=7;
ACE_caliber=0.5; ACE_caliber=12.7;
ACE_bulletLength=0.764; ACE_bulletLength=19.406;
ACE_bulletMass=165; ACE_bulletMass=10.692;
ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
ACE_ballisticCoefficients[]={0.189}; ACE_ballisticCoefficients[]={0.189};
ACE_velocityBoundaries[]={}; ACE_velocityBoundaries[]={};
ACE_standardAtmosphere="ICAO"; ACE_standardAtmosphere="ICAO";
ACE_dragModel=1; ACE_dragModel=1;
ACE_muzzleVelocities[]={360, 400, 430}; ACE_muzzleVelocities[]={360, 400, 430};
ACE_barrelLengths[]={4, 4.61, 9}; ACE_barrelLengths[]={101.6, 117.094, 228.6};
}; };
class ACE_765x17_Ball: B_9x21_Ball { class ACE_765x17_Ball: B_9x21_Ball {
airFriction=-0.001213; airFriction=-0.00163356;
typicalSpeed=282; typicalSpeed=282;
hit=7; hit=7;
ACE_caliber=0.3125; ACE_caliber=7.938;
ACE_bulletLength=0.610; ACE_bulletLength=15.494;
ACE_bulletMass=65; ACE_bulletMass=4.212;
ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
ACE_ballisticCoefficients[]={0.118}; ACE_ballisticCoefficients[]={0.118};
ACE_velocityBoundaries[]={}; ACE_velocityBoundaries[]={};
ACE_standardAtmosphere="ASM"; ACE_standardAtmosphere="ASM";
ACE_dragModel=1; ACE_dragModel=1;
ACE_muzzleVelocities[]={282, 300, 320}; ACE_muzzleVelocities[]={282, 300, 320};
ACE_barrelLengths[]={4, 5, 9}; ACE_barrelLengths[]={101.6, 127.0, 228.6};
}; };
class ACE_303_Ball : ACE_762x51_Ball_M118LR { class ACE_303_Ball : ACE_762x51_Ball_M118LR {
airFriction=-0.00083; airFriction=-0.0008349;
typicalSpeed=761; typicalSpeed=761;
caliber=2.0; caliber=2.0;
ACE_caliber=0.311; ACE_caliber=7.899;
ACE_bulletLength=1.227; ACE_bulletLength=31.166;
ACE_bulletMass=174; ACE_bulletMass=11.2752;
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
ACE_ballisticCoefficients[]={0.499, 0.493, 0.48}; ACE_ballisticCoefficients[]={0.499, 0.493, 0.48};
ACE_velocityBoundaries[]={671, 549}; ACE_velocityBoundaries[]={671, 549};
ACE_standardAtmosphere="ASM"; ACE_standardAtmosphere="ASM";
ACE_dragModel=1; ACE_dragModel=1;
ACE_muzzleVelocities[]={748, 761, 765}; ACE_muzzleVelocities[]={748, 761, 765};
ACE_barrelLengths[]={20, 24, 26}; ACE_barrelLengths[]={508.0, 609.6, 660.4};
}; };
class B_93x64_Ball : BulletBase { class B_93x64_Ball : BulletBase {
airFriction=-0.00106; airFriction=-0.00108571;
typicalSpeed=880; typicalSpeed=880;
ACE_caliber=0.366; ACE_caliber=9.296;
ACE_bulletLength=1.350; ACE_bulletLength=34.29;
ACE_bulletMass=230; ACE_bulletMass=14.904;
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
ACE_ballisticCoefficients[]={0.368}; ACE_ballisticCoefficients[]={0.368};
ACE_velocityBoundaries[]={}; ACE_velocityBoundaries[]={};
ACE_standardAtmosphere="ASM"; ACE_standardAtmosphere="ASM";
ACE_dragModel=1; ACE_dragModel=1;
ACE_muzzleVelocities[]={850, 870, 880}; ACE_muzzleVelocities[]={850, 870, 880};
ACE_barrelLengths[]={20, 24.41, 26}; ACE_barrelLengths[]={508.0, 620.014, 660.4};
}; };
class B_408_Ball : BulletBase { class B_408_Ball : BulletBase {
timeToLive=10; timeToLive=10;
airFriction=-0.000395; airFriction=-0.00038944;
typicalSpeed=910; typicalSpeed=910;
ACE_caliber=0.408; ACE_caliber=10.363;
ACE_bulletLength=2.126; ACE_bulletLength=54.0;
ACE_bulletMass=410; ACE_bulletMass=26.568;
ACE_transonicStabilityCoef=1; ACE_transonicStabilityCoef=1;
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
ACE_ballisticCoefficients[]={0.97}; ACE_ballisticCoefficients[]={0.97};
@ -594,170 +594,171 @@ class CfgAmmo {
ACE_standardAtmosphere="ASM"; ACE_standardAtmosphere="ASM";
ACE_dragModel=1; ACE_dragModel=1;
ACE_muzzleVelocities[]={910}; ACE_muzzleVelocities[]={910};
ACE_barrelLengths[]={29}; ACE_barrelLengths[]={736.6};
}; };
class ACE_106x83mm_Ball : B_408_Ball { class ACE_106x83mm_Ball : B_408_Ball {
timeToLive=10; timeToLive=10;
ACE_caliber=0.416; airFriction=-0.00052047;
ACE_bulletLength=2.089; ACE_caliber=10.566;
ACE_bulletMass=398; ACE_bulletLength=53.061;
ACE_bulletMass=25.7904;
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
ACE_ballisticCoefficients[]={0.72}; ACE_ballisticCoefficients[]={0.72};
ACE_velocityBoundaries[]={}; ACE_velocityBoundaries[]={};
ACE_standardAtmosphere="ASM"; ACE_standardAtmosphere="ASM";
ACE_dragModel=1; ACE_dragModel=1;
ACE_muzzleVelocities[]={960}; ACE_muzzleVelocities[]={960};
ACE_barrelLengths[]={29}; ACE_barrelLengths[]={736.6};
}; };
class B_338_Ball : BulletBase { class B_338_Ball : BulletBase {
timeToLive=10; timeToLive=10;
airFriction=-0.000606; airFriction=-0.00059133;
typicalSpeed=915; typicalSpeed=915;
ACE_caliber=0.338; ACE_caliber=8.585;
ACE_bulletLength=1.558; ACE_bulletLength=39.573;
ACE_bulletMass=250; ACE_bulletMass=16.2;
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
ACE_ballisticCoefficients[]={0.322}; ACE_ballisticCoefficients[]={0.322};
ACE_velocityBoundaries[]={}; ACE_velocityBoundaries[]={};
ACE_standardAtmosphere="ICAO"; ACE_standardAtmosphere="ICAO";
ACE_dragModel=7; ACE_dragModel=7;
ACE_muzzleVelocities[]={880, 915, 925}; ACE_muzzleVelocities[]={880, 915, 925};
ACE_barrelLengths[]={20, 26, 28}; ACE_barrelLengths[]={508.0, 660.4, 711.2};
}; };
class B_338_NM_Ball : BulletBase { class B_338_NM_Ball : BulletBase {
airFriction=-0.000537; airFriction=-0.00052201;
typicalSpeed=820; typicalSpeed=820;
ACE_caliber=0.338; ACE_caliber=8.585;
ACE_bulletLength=1.70; ACE_bulletLength=43.18;
ACE_bulletMass=300; ACE_bulletMass=19.44;
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
ACE_ballisticCoefficients[]={0.381}; ACE_ballisticCoefficients[]={0.381};
ACE_velocityBoundaries[]={}; ACE_velocityBoundaries[]={};
ACE_standardAtmosphere="ICAO"; ACE_standardAtmosphere="ICAO";
ACE_dragModel=7; ACE_dragModel=7;
ACE_muzzleVelocities[]={790, 807, 820}; ACE_muzzleVelocities[]={790, 807, 820};
ACE_barrelLengths[]={20, 24, 26}; ACE_barrelLengths[]={508.0, 609.6, 660.4};
}; };
class ACE_338_Ball : B_338_Ball { class ACE_338_Ball : B_338_Ball {
timeToLive=10; timeToLive=10;
airFriction=-0.000535; airFriction=-0.00052190;
typicalSpeed=826; typicalSpeed=826;
ACE_caliber=0.338; ACE_caliber=8.585;
ACE_bulletLength=1.70; ACE_bulletLength=43.18;
ACE_bulletMass=300; ACE_bulletMass=19.44;
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
ACE_ballisticCoefficients[]={0.381}; ACE_ballisticCoefficients[]={0.381};
ACE_velocityBoundaries[]={}; ACE_velocityBoundaries[]={};
ACE_standardAtmosphere="ICAO"; ACE_standardAtmosphere="ICAO";
ACE_dragModel=7; ACE_dragModel=7;
ACE_muzzleVelocities[]={800, 820, 826, 830}; ACE_muzzleVelocities[]={800, 820, 826, 830};
ACE_barrelLengths[]={20, 24, 26.5, 28}; ACE_barrelLengths[]={508.0, 609.6, 673.1, 711.2};
}; };
class ACE_338_Ball_API526 : B_338_Ball { class ACE_338_Ball_API526 : B_338_Ball {
timeToLive=10; timeToLive=10;
airFriction=-0.000673; airFriction=-0.00069611;
caliber=2.8; caliber=2.8;
typicalSpeed=826; typicalSpeed=895;
ACE_caliber=0.338; ACE_caliber=8.585;
ACE_bulletLength=1.535; ACE_bulletLength=38.989;
ACE_bulletMass=253; ACE_bulletMass=16.3941242;
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
ACE_ballisticCoefficients[]={0.290}; ACE_ballisticCoefficients[]={0.560};
ACE_velocityBoundaries[]={}; ACE_velocityBoundaries[]={};
ACE_standardAtmosphere="ICAO"; ACE_standardAtmosphere="ICAO";
ACE_dragModel=7; ACE_dragModel=1;
ACE_muzzleVelocities[]={880, 915, 925}; ACE_muzzleVelocities[]={880, 915, 925};
ACE_barrelLengths[]={20, 26, 28}; ACE_barrelLengths[]={508.0, 660.4, 711.2};
}; };
class B_127x54_Ball : BulletBase { class B_127x54_Ball : BulletBase {
airFriction=-0.00014; airFriction=-0.00019268;
typicalSpeed=300; typicalSpeed=300;
ACE_caliber=0.510; ACE_caliber=12.954;
ACE_bulletLength=2.540; ACE_bulletLength=64.516;
ACE_bulletMass=750; ACE_bulletMass=48.6;
ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
ACE_ballisticCoefficients[]={1.050}; ACE_ballisticCoefficients[]={1.050};
ACE_velocityBoundaries[]={}; ACE_velocityBoundaries[]={};
ACE_standardAtmosphere="ASM"; ACE_standardAtmosphere="ASM";
ACE_dragModel=1; ACE_dragModel=1;
ACE_muzzleVelocities[]={300}; ACE_muzzleVelocities[]={300};
ACE_barrelLengths[]={17.2}; ACE_barrelLengths[]={436.88};
}; };
class B_127x99_Ball : BulletBase { class B_127x99_Ball : BulletBase {
timeToLive=10; timeToLive=10;
airFriction=-0.0006; airFriction=-0.00057503;
typicalSpeed=900; typicalSpeed=900;
ACE_caliber=0.510; ACE_caliber=12.954;
ACE_bulletLength=2.310; ACE_bulletLength=58.674;
ACE_bulletMass=647; ACE_bulletMass=41.9256;
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
ACE_ballisticCoefficients[]={0.670}; ACE_ballisticCoefficients[]={0.670};
ACE_velocityBoundaries[]={}; ACE_velocityBoundaries[]={};
ACE_standardAtmosphere="ASM"; ACE_standardAtmosphere="ASM";
ACE_dragModel=1; ACE_dragModel=1;
ACE_muzzleVelocities[]={900}; ACE_muzzleVelocities[]={900};
ACE_barrelLengths[]={29}; ACE_barrelLengths[]={736.6};
}; };
class ACE_127x99_API : BulletBase { class ACE_127x99_API : BulletBase {
timeToLive=10; timeToLive=10;
airFriction=-0.0006; airFriction=-0.00057503;
typicalSpeed=900; typicalSpeed=900;
hit=25; hit=25;
caliber=4.0; caliber=4.0;
ACE_caliber=0.510; ACE_caliber=12.954;
ACE_bulletLength=2.310; ACE_bulletLength=58.674;
ACE_bulletMass=648; ACE_bulletMass=41.9904;
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
ACE_ballisticCoefficients[]={0.670}; ACE_ballisticCoefficients[]={0.670};
ACE_velocityBoundaries[]={}; ACE_velocityBoundaries[]={};
ACE_standardAtmosphere="ASM"; ACE_standardAtmosphere="ASM";
ACE_dragModel=1; ACE_dragModel=1;
ACE_muzzleVelocities[]={900}; ACE_muzzleVelocities[]={900};
ACE_barrelLengths[]={29}; ACE_barrelLengths[]={736.6};
}; };
class ACE_127x99_Ball_AMAX : B_127x99_Ball { class ACE_127x99_Ball_AMAX : B_127x99_Ball {
timeToLive=10; timeToLive=10;
airFriction=-0.000374; airFriction=-0.00036645;
typicalSpeed=860; typicalSpeed=860;
caliber=3.0; caliber=3.0;
ACE_caliber=0.510; ACE_caliber=12.954;
ACE_bulletLength=2.540; ACE_bulletLength=64.516;
ACE_bulletMass=750; ACE_bulletMass=48.6;
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
ACE_ballisticCoefficients[]={1.050}; ACE_ballisticCoefficients[]={1.050};
ACE_velocityBoundaries[]={}; ACE_velocityBoundaries[]={};
ACE_standardAtmosphere="ASM"; ACE_standardAtmosphere="ASM";
ACE_dragModel=1; ACE_dragModel=1;
ACE_muzzleVelocities[]={860}; ACE_muzzleVelocities[]={860};
ACE_barrelLengths[]={29}; ACE_barrelLengths[]={736.6};
}; };
class B_127x108_Ball : BulletBase { class B_127x108_Ball : BulletBase {
timeToLive=10; timeToLive=10;
airFriction=-0.00064; airFriction=-0.00063800;
typicalSpeed=820; typicalSpeed=820;
ACE_caliber=0.511; ACE_caliber=12.979;
ACE_bulletLength=2.520; ACE_bulletLength=64.008;
ACE_bulletMass=745; ACE_bulletMass=48.276;
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
ACE_ballisticCoefficients[]={0.63}; ACE_ballisticCoefficients[]={0.63};
ACE_velocityBoundaries[]={}; ACE_velocityBoundaries[]={};
ACE_standardAtmosphere="ASM"; ACE_standardAtmosphere="ASM";
ACE_dragModel=1; ACE_dragModel=1;
ACE_muzzleVelocities[]={820}; ACE_muzzleVelocities[]={820};
ACE_barrelLengths[]={28.7}; ACE_barrelLengths[]={728.98};
}; };
class B_45ACP_Ball : BulletBase { class B_45ACP_Ball : BulletBase {
airFriction=-0.0007182; airFriction=-0.00081221;
typicalSpeed=250; typicalSpeed=250;
ACE_caliber=0.452; ACE_caliber=11.481;
ACE_bulletLength=0.68; ACE_bulletLength=17.272;
ACE_bulletMass=230; ACE_bulletMass=14.904;
ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
ACE_ballisticCoefficients[]={0.195}; ACE_ballisticCoefficients[]={0.195};
ACE_velocityBoundaries[]={}; ACE_velocityBoundaries[]={};
ACE_standardAtmosphere="ASM"; ACE_standardAtmosphere="ASM";
ACE_dragModel=1; ACE_dragModel=1;
ACE_muzzleVelocities[]={230, 250, 285}; ACE_muzzleVelocities[]={230, 250, 285};
ACE_barrelLengths[]={4, 5, 9}; ACE_barrelLengths[]={101.6, 127.0, 228.6};
}; };
}; };

View File

@ -12,75 +12,75 @@ class CfgMagazines {
initSpeed = 760; initSpeed = 760;
}; };
class ACE_100Rnd_65x39_caseless_mag_Tracer_Dim: 100Rnd_65x39_caseless_mag_Tracer { class ACE_100Rnd_65x39_caseless_mag_Tracer_Dim: 100Rnd_65x39_caseless_mag_Tracer {
author = "$STR_ACE_Common_ACETeam"; author = ECSTRING(common,ACETeam);
ammo = "ACE_65x39_Caseless_Tracer_Dim"; ammo = "ACE_65x39_Caseless_Tracer_Dim";
displayName = "$STR_ACE_100Rnd_65x39_caseless_mag_Tracer_DimName"; displayName = CSTRING(100Rnd_65x39_caseless_mag_Tracer_DimName);
displayNameShort = "$STR_ACE_100Rnd_65x39_caseless_mag_Tracer_DimNameShort"; displayNameShort = CSTRING(100Rnd_65x39_caseless_mag_Tracer_DimNameShort);
descriptionShort = "$STR_ACE_100Rnd_65x39_caseless_mag_Tracer_DimDescription"; descriptionShort = CSTRING(100Rnd_65x39_caseless_mag_Tracer_DimDescription);
picture = "\A3\weapons_f\data\ui\m_100rnd_65x39_yellow_ca.paa"; picture = "\A3\weapons_f\data\ui\m_100rnd_65x39_yellow_ca.paa";
}; };
class 200Rnd_65x39_cased_Box: 100Rnd_65x39_caseless_mag { class 200Rnd_65x39_cased_Box: 100Rnd_65x39_caseless_mag {
initSpeed = 760; initSpeed = 760;
}; };
class ACE_200Rnd_65x39_cased_Box_Tracer_Dim: 200Rnd_65x39_cased_Box { class ACE_200Rnd_65x39_cased_Box_Tracer_Dim: 200Rnd_65x39_cased_Box {
author = "$STR_ACE_Common_ACETeam"; author = ECSTRING(common,ACETeam);
ammo = "ACE_65x39_Caseless_Tracer_Dim"; ammo = "ACE_65x39_Caseless_Tracer_Dim";
displayName = "$STR_ACE_200Rnd_65x39_cased_Box_Tracer_DimName"; displayName = CSTRING(200Rnd_65x39_cased_Box_Tracer_DimName);
displayNameShort = "$STR_ACE_200Rnd_65x39_cased_Box_Tracer_DimNameShort"; displayNameShort = CSTRING(200Rnd_65x39_cased_Box_Tracer_DimNameShort);
descriptionShort = "$STR_ACE_200Rnd_65x39_cased_Box_Tracer_DimDescription"; descriptionShort = CSTRING(200Rnd_65x39_cased_Box_Tracer_DimDescription);
picture = "\A3\weapons_f\data\ui\m_200rnd_65x39_yellow_ca.paa"; picture = "\A3\weapons_f\data\ui\m_200rnd_65x39_yellow_ca.paa";
}; };
class 30Rnd_65x39_caseless_mag_Tracer; class 30Rnd_65x39_caseless_mag_Tracer;
class ACE_30Rnd_65x39_caseless_mag_Tracer_Dim: 30Rnd_65x39_caseless_mag_Tracer { class ACE_30Rnd_65x39_caseless_mag_Tracer_Dim: 30Rnd_65x39_caseless_mag_Tracer {
author = "$STR_ACE_Common_ACETeam"; author = ECSTRING(common,ACETeam);
ammo = "ACE_65x39_Caseless_Tracer_Dim"; ammo = "ACE_65x39_Caseless_Tracer_Dim";
displayName = "$STR_ACE_30Rnd_65x39_caseless_mag_Tracer_DimName"; displayName = CSTRING(30Rnd_65x39_caseless_mag_Tracer_DimName);
displayNameShort = "$STR_ACE_30Rnd_65x39_caseless_mag_Tracer_DimNameShort"; displayNameShort = CSTRING(30Rnd_65x39_caseless_mag_Tracer_DimNameShort);
descriptionShort = "$STR_ACE_30Rnd_65x39_caseless_mag_Tracer_DimDescription"; descriptionShort = CSTRING(30Rnd_65x39_caseless_mag_Tracer_DimDescription);
}; };
class 30Rnd_65x39_caseless_green_mag_Tracer; class 30Rnd_65x39_caseless_green_mag_Tracer;
class ACE_30Rnd_65x39_caseless_green_mag_Tracer_Dim: 30Rnd_65x39_caseless_green_mag_Tracer { class ACE_30Rnd_65x39_caseless_green_mag_Tracer_Dim: 30Rnd_65x39_caseless_green_mag_Tracer {
author = "$STR_ACE_Common_ACETeam"; author = ECSTRING(common,ACETeam);
ammo = "ACE_65x39_Caseless_green_Tracer_Dim"; ammo = "ACE_65x39_Caseless_green_Tracer_Dim";
displayName = "$STR_ACE_30Rnd_65x39_caseless_green_mag_Tracer_DimName"; displayName = CSTRING(30Rnd_65x39_caseless_green_mag_Tracer_DimName);
displayNameShort = "$STR_ACE_30Rnd_65x39_caseless_green_mag_Tracer_DimNameShort"; displayNameShort = CSTRING(30Rnd_65x39_caseless_green_mag_Tracer_DimNameShort);
descriptionShort = "$STR_ACE_30Rnd_65x39_caseless_green_mag_Tracer_DimDescription"; descriptionShort = CSTRING(30Rnd_65x39_caseless_green_mag_Tracer_DimDescription);
}; };
class 30Rnd_556x45_Stanag: CA_Magazine { class 30Rnd_556x45_Stanag: CA_Magazine {
}; };
class ACE_30Rnd_556x45_Stanag_M995_AP_mag: 30Rnd_556x45_Stanag { class ACE_30Rnd_556x45_Stanag_M995_AP_mag: 30Rnd_556x45_Stanag {
author = "$STR_ACE_Common_ACETeam"; author = ECSTRING(common,ACETeam);
ammo = "ACE_556x45_Ball_M995_AP"; ammo = "ACE_556x45_Ball_M995_AP";
displayName = "$STR_ACE_30Rnd_556x45_Stanag_M995_AP_mag_Name"; displayName = CSTRING(30Rnd_556x45_Stanag_M995_AP_mag_Name);
displayNameShort = "$STR_ACE_30Rnd_556x45_Stanag_M995_AP_mag_NameShort"; displayNameShort = CSTRING(30Rnd_556x45_Stanag_M995_AP_mag_NameShort);
descriptionShort = "$STR_ACE_30Rnd_556x45_Stanag_M995_AP_mag_Description"; descriptionShort = CSTRING(30Rnd_556x45_Stanag_M995_AP_mag_Description);
initSpeed = 1046; initSpeed = 865;
}; };
class ACE_30Rnd_556x45_Stanag_Mk262_mag: 30Rnd_556x45_Stanag { class ACE_30Rnd_556x45_Stanag_Mk262_mag: 30Rnd_556x45_Stanag {
author = "$STR_ACE_Common_ACETeam"; author = ECSTRING(common,ACETeam);
ammo = "ACE_556x45_Ball_Mk262"; ammo = "ACE_556x45_Ball_Mk262";
displayName = "$STR_ACE_30Rnd_556x45_Stanag_Mk262_mag_Name"; displayName = CSTRING(30Rnd_556x45_Stanag_Mk262_mag_Name);
displayNameShort = "$STR_ACE_30Rnd_556x45_Stanag_Mk262_mag_NameShort"; displayNameShort = CSTRING(30Rnd_556x45_Stanag_Mk262_mag_NameShort);
descriptionShort = "$STR_ACE_30Rnd_556x45_Stanag_Mk262_mag_Description"; descriptionShort = CSTRING(30Rnd_556x45_Stanag_Mk262_mag_Description);
initSpeed = 832; initSpeed = 832;
}; };
class ACE_30Rnd_556x45_Stanag_Mk318_mag: 30Rnd_556x45_Stanag { class ACE_30Rnd_556x45_Stanag_Mk318_mag: 30Rnd_556x45_Stanag {
author = "$STR_ACE_Common_ACETeam"; author = ECSTRING(common,ACETeam);
ammo = "ACE_556x45_Ball_Mk318"; ammo = "ACE_556x45_Ball_Mk318";
displayName = "$STR_ACE_30Rnd_556x45_Stanag_Mk318_mag_Name"; displayName = CSTRING(30Rnd_556x45_Stanag_Mk318_mag_Name);
displayNameShort = "$STR_ACE_30Rnd_556x45_Stanag_Mk318_mag_NameShort"; displayNameShort = CSTRING(30Rnd_556x45_Stanag_Mk318_mag_NameShort);
descriptionShort = "$STR_ACE_30Rnd_556x45_Stanag_Mk318_mag_Description"; descriptionShort = CSTRING(30Rnd_556x45_Stanag_Mk318_mag_Description);
initSpeed = 922; initSpeed = 922;
}; };
class 30Rnd_556x45_Stanag_Tracer_Red: 30Rnd_556x45_Stanag { class 30Rnd_556x45_Stanag_Tracer_Red: 30Rnd_556x45_Stanag {
}; };
class ACE_30Rnd_556x45_Stanag_Tracer_Dim: 30Rnd_556x45_Stanag_Tracer_Red { class ACE_30Rnd_556x45_Stanag_Tracer_Dim: 30Rnd_556x45_Stanag_Tracer_Red {
author = "$STR_ACE_Common_ACETeam"; author = ECSTRING(common,ACETeam);
ammo = "ACE_B_556x45_Ball_Tracer_Dim"; ammo = "ACE_B_556x45_Ball_Tracer_Dim";
displayName = "$STR_ACE_30Rnd_556x45_mag_Tracer_DimName"; displayName = CSTRING(30Rnd_556x45_mag_Tracer_DimName);
displayNameShort = "$STR_ACE_30Rnd_556x45_mag_Tracer_DimNameShort"; displayNameShort = CSTRING(30Rnd_556x45_mag_Tracer_DimNameShort);
descriptionShort = "$STR_ACE_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";
}; };
@ -97,180 +97,180 @@ class CfgMagazines {
initSpeed = 833; initSpeed = 833;
}; };
class ACE_20Rnd_762x51_Mag_Tracer: 20Rnd_762x51_Mag { class ACE_20Rnd_762x51_Mag_Tracer: 20Rnd_762x51_Mag {
author = "$STR_ACE_Common_ACETeam"; author = ECSTRING(common,ACETeam);
ammo = "B_762x51_Tracer_Red"; ammo = "B_762x51_Tracer_Red";
displayName = "$STR_ACE_20Rnd_762x51_mag_TracerName"; displayName = CSTRING(20Rnd_762x51_mag_TracerName);
displayNameShort = "$STR_ACE_20Rnd_762x51_mag_TracerNameShort"; displayNameShort = CSTRING(20Rnd_762x51_mag_TracerNameShort);
descriptionShort = "$STR_ACE_20Rnd_762x51_mag_TracerDescription"; descriptionShort = CSTRING(20Rnd_762x51_mag_TracerDescription);
tracersEvery = 1; tracersEvery = 1;
}; };
class ACE_20Rnd_762x51_Mag_Tracer_Dim: ACE_20Rnd_762x51_Mag_Tracer { class ACE_20Rnd_762x51_Mag_Tracer_Dim: ACE_20Rnd_762x51_Mag_Tracer {
author = "$STR_ACE_Common_ACETeam"; author = ECSTRING(common,ACETeam);
ammo = "ACE_B_762x51_Tracer_Dim"; ammo = "ACE_B_762x51_Tracer_Dim";
displayName = "$STR_ACE_20Rnd_762x51_mag_Tracer_DimName"; displayName = CSTRING(20Rnd_762x51_mag_Tracer_DimName);
displayNameShort = "$STR_ACE_20Rnd_762x51_mag_Tracer_DimNameShort"; displayNameShort = CSTRING(20Rnd_762x51_mag_Tracer_DimNameShort);
descriptionShort = "$STR_ACE_20Rnd_762x51_mag_Tracer_DimDescription"; descriptionShort = CSTRING(20Rnd_762x51_mag_Tracer_DimDescription);
}; };
class ACE_20Rnd_762x51_Mag_SD: 20Rnd_762x51_Mag { class ACE_20Rnd_762x51_Mag_SD: 20Rnd_762x51_Mag {
author = "$STR_ACE_Common_ACETeam"; author = ECSTRING(common,ACETeam);
ammo = "ACE_762x51_Ball_Subsonic"; ammo = "ACE_762x51_Ball_Subsonic";
displayName = "$STR_ACE_20Rnd_762x51_mag_SDName"; displayName = CSTRING(20Rnd_762x51_mag_SDName);
displayNameShort = "$STR_ACE_20Rnd_762x51_mag_SDNameShort"; displayNameShort = CSTRING(20Rnd_762x51_mag_SDNameShort);
descriptionShort = "$STR_ACE_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 = "$STR_ACE_Common_ACETeam"; author = ECSTRING(common,ACETeam);
ammo = "ACE_762x51_Ball_M118LR"; ammo = "ACE_762x51_Ball_M118LR";
count = 10; count = 10;
displayName = "$STR_ACE_10Rnd_762x51_M118LR_Mag_Name"; displayName = CSTRING(10Rnd_762x51_M118LR_Mag_Name);
displayNameShort = "$STR_ACE_10Rnd_762x51_M118LR_Mag_NameShort"; displayNameShort = CSTRING(10Rnd_762x51_M118LR_Mag_NameShort);
descriptionShort = "$STR_ACE_10Rnd_762x51_M118LR_Mag_Description"; descriptionShort = CSTRING(10Rnd_762x51_M118LR_Mag_Description);
initSpeed = 780; initSpeed = 780;
}; };
class ACE_10Rnd_762x51_Mk316_Mod_0_Mag: 10Rnd_762x51_Mag { class ACE_10Rnd_762x51_Mk316_Mod_0_Mag: 10Rnd_762x51_Mag {
author = "$STR_ACE_Common_ACETeam"; author = ECSTRING(common,ACETeam);
ammo = "ACE_762x51_Ball_Mk316_Mod_0"; ammo = "ACE_762x51_Ball_Mk316_Mod_0";
count = 10; count = 10;
displayName = "$STR_ACE_10Rnd_762x51_Mk316_Mod_0_Mag_Name"; displayName = CSTRING(10Rnd_762x51_Mk316_Mod_0_Mag_Name);
displayNameShort = "$STR_ACE_10Rnd_762x51_Mk316_Mod_0_Mag_NameShort"; displayNameShort = CSTRING(10Rnd_762x51_Mk316_Mod_0_Mag_NameShort);
descriptionShort = "$STR_ACE_10Rnd_762x51_Mk316_Mod_0_Mag_Description"; descriptionShort = CSTRING(10Rnd_762x51_Mk316_Mod_0_Mag_Description);
initSpeed = 790; initSpeed = 790;
}; };
class ACE_10Rnd_762x51_Mk319_Mod_0_Mag: 10Rnd_762x51_Mag { class ACE_10Rnd_762x51_Mk319_Mod_0_Mag: 10Rnd_762x51_Mag {
author = "$STR_ACE_Common_ACETeam"; author = ECSTRING(common,ACETeam);
ammo = "ACE_762x51_Ball_Mk319_Mod_0"; ammo = "ACE_762x51_Ball_Mk319_Mod_0";
count = 10; count = 10;
displayName = "$STR_ACE_10Rnd_762x51_Mk319_Mod_0_Mag_Name"; displayName = CSTRING(10Rnd_762x51_Mk319_Mod_0_Mag_Name);
displayNameShort = "$STR_ACE_10Rnd_762x51_Mk319_Mod_0_Mag_NameShort"; displayNameShort = CSTRING(10Rnd_762x51_Mk319_Mod_0_Mag_NameShort);
descriptionShort = "$STR_ACE_10Rnd_762x51_Mk319_Mod_0_Mag_Description"; descriptionShort = CSTRING(10Rnd_762x51_Mk319_Mod_0_Mag_Description);
initSpeed = 900; initSpeed = 900;
}; };
class ACE_10Rnd_762x51_M993_AP_Mag: 10Rnd_762x51_Mag { class ACE_10Rnd_762x51_M993_AP_Mag: 10Rnd_762x51_Mag {
author = "$STR_ACE_Common_ACETeam"; author = ECSTRING(common,ACETeam);
ammo = "ACE_762x51_Ball_M993_AP"; ammo = "ACE_762x51_Ball_M993_AP";
count = 10; count = 10;
displayName = "$STR_ACE_10Rnd_762x51_M993_AP_Mag_Name"; displayName = CSTRING(10Rnd_762x51_M993_AP_Mag_Name);
displayNameShort = "$STR_ACE_10Rnd_762x51_M993_AP_Mag_NameShort"; displayNameShort = CSTRING(10Rnd_762x51_M993_AP_Mag_NameShort);
descriptionShort = "$STR_ACE_10Rnd_762x51_M993_AP_Mag_Description"; descriptionShort = CSTRING(10Rnd_762x51_M993_AP_Mag_Description);
initSpeed = 920; initSpeed = 920;
}; };
class ACE_20Rnd_762x51_M118LR_Mag: 20Rnd_762x51_Mag { class ACE_20Rnd_762x51_M118LR_Mag: 20Rnd_762x51_Mag {
author = "$STR_ACE_Common_ACETeam"; author = ECSTRING(common,ACETeam);
ammo = "ACE_762x51_Ball_M118LR"; ammo = "ACE_762x51_Ball_M118LR";
displayName = "$STR_ACE_20Rnd_762x51_M118LR_Mag_Name"; displayName = CSTRING(20Rnd_762x51_M118LR_Mag_Name);
displayNameShort = "$STR_ACE_20Rnd_762x51_M118LR_Mag_NameShort"; displayNameShort = CSTRING(20Rnd_762x51_M118LR_Mag_NameShort);
descriptionShort = "$STR_ACE_20Rnd_762x51_M118LR_Mag_Description"; descriptionShort = CSTRING(20Rnd_762x51_M118LR_Mag_Description);
initSpeed = 780; initSpeed = 780;
}; };
class ACE_20Rnd_762x51_Mk316_Mod_0_Mag: 20Rnd_762x51_Mag { class ACE_20Rnd_762x51_Mk316_Mod_0_Mag: 20Rnd_762x51_Mag {
author = "$STR_ACE_Common_ACETeam"; author = ECSTRING(common,ACETeam);
ammo = "ACE_762x51_Ball_Mk316_Mod_0"; ammo = "ACE_762x51_Ball_Mk316_Mod_0";
count = 20; count = 20;
displayName = "$STR_ACE_20Rnd_762x51_Mk316_Mod_0_Mag_Name"; displayName = CSTRING(20Rnd_762x51_Mk316_Mod_0_Mag_Name);
displayNameShort = "$STR_ACE_20Rnd_762x51_Mk316_Mod_0_Mag_NameShort"; displayNameShort = CSTRING(20Rnd_762x51_Mk316_Mod_0_Mag_NameShort);
descriptionShort = "$STR_ACE_20Rnd_762x51_Mk316_Mod_0_Mag_Description"; descriptionShort = CSTRING(20Rnd_762x51_Mk316_Mod_0_Mag_Description);
initSpeed = 790; initSpeed = 790;
}; };
class ACE_20Rnd_762x51_Mk319_Mod_0_Mag: 20Rnd_762x51_Mag { class ACE_20Rnd_762x51_Mk319_Mod_0_Mag: 20Rnd_762x51_Mag {
author = "$STR_ACE_Common_ACETeam"; author = ECSTRING(common,ACETeam);
ammo = "ACE_762x51_Ball_Mk319_Mod_0"; ammo = "ACE_762x51_Ball_Mk319_Mod_0";
displayName = "$STR_ACE_20Rnd_762x51_Mk319_Mod_0_Mag_Name"; displayName = CSTRING(20Rnd_762x51_Mk319_Mod_0_Mag_Name);
displayNameShort = "$STR_ACE_20Rnd_762x51_Mk319_Mod_0_Mag_NameShort"; displayNameShort = CSTRING(20Rnd_762x51_Mk319_Mod_0_Mag_NameShort);
descriptionShort = "$STR_ACE_20Rnd_762x51_Mk319_Mod_0_Mag_Description"; descriptionShort = CSTRING(20Rnd_762x51_Mk319_Mod_0_Mag_Description);
initSpeed = 900; initSpeed = 900;
}; };
class ACE_20Rnd_762x51_M993_AP_Mag: 20Rnd_762x51_Mag { class ACE_20Rnd_762x51_M993_AP_Mag: 20Rnd_762x51_Mag {
author = "$STR_ACE_Common_ACETeam"; author = ECSTRING(common,ACETeam);
ammo = "ACE_762x51_Ball_M993_AP"; ammo = "ACE_762x51_Ball_M993_AP";
count = 20; count = 20;
displayName = "$STR_ACE_20Rnd_762x51_M993_AP_Mag_Name"; displayName = CSTRING(20Rnd_762x51_M993_AP_Mag_Name);
displayNameShort = "$STR_ACE_20Rnd_762x51_M993_AP_Mag_NameShort"; displayNameShort = CSTRING(20Rnd_762x51_M993_AP_Mag_NameShort);
descriptionShort = "$STR_ACE_20Rnd_762x51_M993_AP_Mag_Description"; descriptionShort = CSTRING(20Rnd_762x51_M993_AP_Mag_Description);
initSpeed = 920; initSpeed = 920;
}; };
class ACE_20Rnd_762x67_Mk248_Mod_0_Mag: 20Rnd_762x51_Mag { class ACE_20Rnd_762x67_Mk248_Mod_0_Mag: 20Rnd_762x51_Mag {
author = "$STR_ACE_Common_ACETeam"; author = ECSTRING(common,ACETeam);
ammo = "ACE_762x67_Ball_Mk248_Mod_0"; ammo = "ACE_762x67_Ball_Mk248_Mod_0";
displayName = "$STR_ACE_20Rnd_762x67_Mk248_Mod_0_Mag_Name"; displayName = CSTRING(20Rnd_762x67_Mk248_Mod_0_Mag_Name);
displayNameShort = "$STR_ACE_20Rnd_762x67_Mk248_Mod_0_Mag_NameShort"; displayNameShort = CSTRING(20Rnd_762x67_Mk248_Mod_0_Mag_NameShort);
descriptionShort = "$STR_ACE_20Rnd_762x67_Mk248_Mod_0_Mag_Description"; descriptionShort = CSTRING(20Rnd_762x67_Mk248_Mod_0_Mag_Description);
initSpeed = 900; initSpeed = 900;
}; };
class ACE_20Rnd_762x67_Mk248_Mod_1_Mag: 20Rnd_762x51_Mag { class ACE_20Rnd_762x67_Mk248_Mod_1_Mag: 20Rnd_762x51_Mag {
author = "$STR_ACE_Common_ACETeam"; author = ECSTRING(common,ACETeam);
ammo = "ACE_762x67_Ball_Mk248_Mod_1"; ammo = "ACE_762x67_Ball_Mk248_Mod_1";
displayName = "$STR_ACE_20Rnd_762x67_Mk248_Mod_1_Mag_Name"; displayName = CSTRING(20Rnd_762x67_Mk248_Mod_1_Mag_Name);
displayNameShort = "$STR_ACE_20Rnd_762x67_Mk248_Mod_1_Mag_NameShort"; displayNameShort = CSTRING(20Rnd_762x67_Mk248_Mod_1_Mag_NameShort);
descriptionShort = "$STR_ACE_20Rnd_762x67_Mk248_Mod_1_Mag_Description"; descriptionShort = CSTRING(20Rnd_762x67_Mk248_Mod_1_Mag_Description);
initSpeed = 880; initSpeed = 880;
}; };
class ACE_20Rnd_762x67_Berger_Hybrid_OTM_Mag: 20Rnd_762x51_Mag { class ACE_20Rnd_762x67_Berger_Hybrid_OTM_Mag: 20Rnd_762x51_Mag {
author = "$STR_ACE_Common_ACETeam"; author = ECSTRING(common,ACETeam);
ammo = "ACE_762x67_Ball_Berger_Hybrid_OTM"; ammo = "ACE_762x67_Ball_Berger_Hybrid_OTM";
displayName = "$STR_ACE_20Rnd_762x67_Berger_Hybrid_OTM_Mag_Name"; displayName = CSTRING(20Rnd_762x67_Berger_Hybrid_OTM_Mag_Name);
displayNameShort = "$STR_ACE_20Rnd_762x67_Berger_Hybrid_OTM_Mag_NameShort"; displayNameShort = CSTRING(20Rnd_762x67_Berger_Hybrid_OTM_Mag_NameShort);
descriptionShort = "$STR_ACE_20Rnd_762x67_Berger_Hybrid_OTM_Mag_Description"; descriptionShort = CSTRING(20Rnd_762x67_Berger_Hybrid_OTM_Mag_Description);
initSpeed = 832; initSpeed = 832;
}; };
class ACE_30Rnd_65x47_Scenar_mag: 30Rnd_65x39_caseless_mag { class ACE_30Rnd_65x47_Scenar_mag: 30Rnd_65x39_caseless_mag {
author = "$STR_ACE_Common_ACETeam"; author = ECSTRING(common,ACETeam);
ammo = "ACE_65x47_Ball_Scenar"; ammo = "ACE_65x47_Ball_Scenar";
displayName = "$STR_ACE_30Rnd_65x47_Scenar_mag_Name"; displayName = CSTRING(30Rnd_65x47_Scenar_mag_Name);
displayNameShort = "$STR_ACE_30Rnd_65x47_Scenar_mag_NameShort"; displayNameShort = CSTRING(30Rnd_65x47_Scenar_mag_NameShort);
descriptionShort = "$STR_ACE_30Rnd_65x47_Scenar_mag_Description"; descriptionShort = CSTRING(30Rnd_65x47_Scenar_mag_Description);
}; };
class ACE_30Rnd_65_Creedmor_mag: 30Rnd_65x39_caseless_mag { class ACE_30Rnd_65_Creedmor_mag: 30Rnd_65x39_caseless_mag {
author = "$STR_ACE_Common_ACETeam"; author = ECSTRING(common,ACETeam);
ammo = "ACE_65_Creedmor_Ball"; ammo = "ACE_65_Creedmor_Ball";
displayName = "$STR_ACE_30Rnd_65_Creedmor_mag_Name"; displayName = CSTRING(30Rnd_65_Creedmor_mag_Name);
displayNameShort = "$STR_ACE_30Rnd_65_Creedmor_mag_NameShort"; displayNameShort = CSTRING(30Rnd_65_Creedmor_mag_NameShort);
descriptionShort = "$STR_ACE_30Rnd_65_Creedmor_mag_Description"; descriptionShort = CSTRING(30Rnd_65_Creedmor_mag_Description);
}; };
class 10Rnd_338_Mag; class 10Rnd_338_Mag;
class ACE_10Rnd_338_300gr_HPBT_Mag: 10Rnd_338_Mag { class ACE_10Rnd_338_300gr_HPBT_Mag: 10Rnd_338_Mag {
author = "$STR_ACE_Common_ACETeam"; author = ECSTRING(common,ACETeam);
ammo = "ACE_338_Ball"; ammo = "ACE_338_Ball";
displayName = "$STR_ACE_10Rnd_338_300gr_HPBT_Mag_Name"; displayName = CSTRING(10Rnd_338_300gr_HPBT_Mag_Name);
displayNameShort = "$STR_ACE_10Rnd_338_300gr_HPBT_Mag_NameShort"; displayNameShort = CSTRING(10Rnd_338_300gr_HPBT_Mag_NameShort);
descriptionShort = "$STR_ACE_10Rnd_338_300gr_HPBT_Mag_Description"; descriptionShort = CSTRING(10Rnd_338_300gr_HPBT_Mag_Description);
initSpeed = 800; initSpeed = 800;
}; };
class ACE_10Rnd_338_API526_Mag: 10Rnd_338_Mag { class ACE_10Rnd_338_API526_Mag: 10Rnd_338_Mag {
author = "$STR_ACE_Common_ACETeam"; author = ECSTRING(common,ACETeam);
ammo = "ACE_338_Ball_API526"; ammo = "ACE_338_Ball_API526";
displayName = "$STR_ACE_10Rnd_338_API526_Mag_Name"; displayName = CSTRING(10Rnd_338_API526_Mag_Name);
displayNameShort = "$STR_ACE_10Rnd_338_API526_Mag_NameShort"; displayNameShort = CSTRING(10Rnd_338_API526_Mag_NameShort);
descriptionShort = "$STR_ACE_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 = "$STR_ACE_Common_ACETeam"; author = ECSTRING(common,ACETeam);
ammo = "B_127x99_Ball"; ammo = "B_127x99_Ball";
displayName = "$STR_ACE_5Rnd_127x99_Mag_Name"; displayName = CSTRING(5Rnd_127x99_Mag_Name);
displayNameShort = "$STR_ACE_5Rnd_127x99_Mag_NameShort"; displayNameShort = CSTRING(5Rnd_127x99_Mag_NameShort);
descriptionShort = "$STR_ACE_5Rnd_127x99_Mag_Description"; descriptionShort = CSTRING(5Rnd_127x99_Mag_Description);
initSpeed = 900; initSpeed = 900;
}; };
class ACE_5Rnd_127x99_API_Mag: 5Rnd_127x108_Mag { class ACE_5Rnd_127x99_API_Mag: 5Rnd_127x108_Mag {
author = "$STR_ACE_Common_ACETeam"; author = ECSTRING(common,ACETeam);
ammo = "ACE_127x99_API"; ammo = "ACE_127x99_API";
displayName = "$STR_ACE_5Rnd_127x99_API_Mag_Name"; displayName = CSTRING(5Rnd_127x99_API_Mag_Name);
displayNameShort = "$STR_ACE_5Rnd_127x99_API_Mag_NameShort"; displayNameShort = CSTRING(5Rnd_127x99_API_Mag_NameShort);
descriptionShort = "$STR_ACE_5Rnd_127x99_API_Mag_Description"; descriptionShort = CSTRING(5Rnd_127x99_API_Mag_Description);
initSpeed = 900; initSpeed = 900;
}; };
class ACE_5Rnd_127x99_AMAX_Mag: 5Rnd_127x108_Mag { class ACE_5Rnd_127x99_AMAX_Mag: 5Rnd_127x108_Mag {
author = "$STR_ACE_Common_ACETeam"; author = ECSTRING(common,ACETeam);
ammo = "ACE_127x99_Ball_AMAX"; ammo = "ACE_127x99_Ball_AMAX";
displayName = "$STR_ACE_5Rnd_127x99_AMAX_Mag_Name"; displayName = CSTRING(5Rnd_127x99_AMAX_Mag_Name);
displayNameShort = "$STR_ACE_5Rnd_127x99_AMAX_Mag_NameShort"; displayNameShort = CSTRING(5Rnd_127x99_AMAX_Mag_NameShort);
descriptionShort = "$STR_ACE_5Rnd_127x99_AMAX_Mag_Description"; descriptionShort = CSTRING(5Rnd_127x99_AMAX_Mag_Description);
initSpeed = 860; initSpeed = 860;
}; };
@ -279,11 +279,11 @@ class CfgMagazines {
initSpeed = 450; initSpeed = 450;
}; };
class ACE_30Rnd_9x19_mag: 30Rnd_9x21_Mag { class ACE_30Rnd_9x19_mag: 30Rnd_9x21_Mag {
author = "$STR_ACE_Common_ACETeam"; author = ECSTRING(common,ACETeam);
ammo = "ACE_9x19_Ball"; ammo = "ACE_9x19_Ball";
displayName = "$STR_ACE_30Rnd_9x19_mag_Name"; displayName = CSTRING(30Rnd_9x19_mag_Name);
displayNameShort = "$STR_ACE_30Rnd_9x19_mag_NameShort"; displayNameShort = CSTRING(30Rnd_9x19_mag_NameShort);
descriptionShort = "$STR_ACE_30Rnd_9x19_mag_Description"; descriptionShort = CSTRING(30Rnd_9x19_mag_Description);
initSpeed = 370; initSpeed = 370;
}; };
@ -311,11 +311,11 @@ class CfgMagazines {
initSpeed = 450; initSpeed = 450;
}; };
class ACE_16Rnd_9x19_mag: 16Rnd_9x21_Mag { class ACE_16Rnd_9x19_mag: 16Rnd_9x21_Mag {
author = "$STR_ACE_Common_ACETeam"; author = ECSTRING(common,ACETeam);
ammo = "ACE_9x19_Ball"; ammo = "ACE_9x19_Ball";
displayName = "$STR_ACE_16Rnd_9x19_mag_Name"; displayName = CSTRING(16Rnd_9x19_mag_Name);
displayNameShort = "$STR_ACE_16Rnd_9x19_mag_NameShort"; displayNameShort = CSTRING(16Rnd_9x19_mag_NameShort);
descriptionShort = "$STR_ACE_16Rnd_9x19_mag_Description"; descriptionShort = CSTRING(16Rnd_9x19_mag_Description);
initSpeed = 370; initSpeed = 370;
}; };
@ -323,11 +323,11 @@ class CfgMagazines {
initSpeed = 800; initSpeed = 800;
}; };
class ACE_10Rnd_762x54_Tracer_mag: 10Rnd_762x54_Mag { class ACE_10Rnd_762x54_Tracer_mag: 10Rnd_762x54_Mag {
author = "$STR_ACE_Common_ACETeam"; author = ECSTRING(common,ACETeam);
ammo = "ACE_762x54_Ball_7T2"; ammo = "ACE_762x54_Ball_7T2";
displayName = "$STR_ACE_10Rnd_762x54_Tracer_mag_Name"; displayName = CSTRING(10Rnd_762x54_Tracer_mag_Name);
displayNameShort = "$STR_ACE_10Rnd_762x54_Tracer_mag_NameShort"; displayNameShort = CSTRING(10Rnd_762x54_Tracer_mag_NameShort);
descriptionShort = "$STR_ACE_10Rnd_762x54_Tracer_mag_Description"; descriptionShort = CSTRING(10Rnd_762x54_Tracer_mag_Description);
initSpeed = 800; initSpeed = 800;
tracersEvery = 1; tracersEvery = 1;
}; };

View File

@ -2,7 +2,7 @@
class CfgVehicles { class CfgVehicles {
class Sign_F; class Sign_F;
class ACE_TargetWall: Sign_F { class ACE_TargetWall: Sign_F {
author = "$STR_ACE_Common_ACETeam"; author = ECSTRING(common,ACETeam);
scope = 0; scope = 0;
class Eventhandlers { class Eventhandlers {
init = QUOTE(_this call COMPILE_FILE(scripts\initTargetWall)); init = QUOTE(_this call COMPILE_FILE(scripts\initTargetWall));
@ -190,9 +190,9 @@ class CfgVehicles {
class ACE_Box_Ammo: NATO_Box_Base { class ACE_Box_Ammo: NATO_Box_Base {
scope = 2; scope = 2;
accuracy = 1000; accuracy = 1000;
displayName = "[ACE] Ammo Supply Crate"; displayName = CSTRING(AmmoSupplyCrate_DisplayName);
model = "\A3\weapons_F\AmmoBoxes\AmmoBox_F"; model = "\A3\weapons_F\AmmoBoxes\AmmoBox_F";
author = "$STR_ACE_Common_ACETeam"; author = ECSTRING(common,ACETeam);
class TransportMagazines { class TransportMagazines {
MACRO_ADDMAGAZINE(ACE_20Rnd_762x51_Mag_SD,4); MACRO_ADDMAGAZINE(ACE_20Rnd_762x51_Mag_SD,4);
MACRO_ADDMAGAZINE(ACE_10Rnd_762x51_M993_AP_Mag,4); MACRO_ADDMAGAZINE(ACE_10Rnd_762x51_M993_AP_Mag,4);
@ -225,5 +225,27 @@ class CfgVehicles {
MACRO_ADDMAGAZINE(ACE_5Rnd_127x99_API_Mag,4); MACRO_ADDMAGAZINE(ACE_5Rnd_127x99_API_Mag,4);
MACRO_ADDMAGAZINE(ACE_5Rnd_127x99_AMAX_Mag,4); MACRO_ADDMAGAZINE(ACE_5Rnd_127x99_AMAX_Mag,4);
}; };
class AnimationSources {
class Ammo_source {
source = "user";
animPeriod = 1;
initPhase = 0;
};
class AmmoOrd_source {
source = "user";
animPeriod = 1;
initPhase = 1;
};
class Grenades_source {
source = "user";
animPeriod = 1;
initPhase = 1;
};
class Support_source {
source = "user";
animPeriod = 1;
initPhase = 1;
};
};
}; };
}; };

View File

@ -1,16 +1,13 @@
class Single;
class Burst;
class FullAuto;
class Mode_SemiAuto; class Mode_SemiAuto;
class Mode_Burst;
class Mode_FullAuto; class Mode_FullAuto;
class CfgWeapons { class CfgWeapons {
class DMR_02_base_F;
class DMR_03_base_F;
class DMR_04_base_F;
class DMR_05_base_F;
class DMR_06_base_F;
class GM6_base_F;
class LMG_RCWS; class LMG_RCWS;
class LRR_base_F;
class MGun; class MGun;
class MGunCore; class MGunCore;
class MMG_01_base_F; class MMG_01_base_F;
@ -22,11 +19,57 @@ class CfgWeapons {
/* Long Rifles */ /* Long Rifles */
class EBR_base_F: Rifle_Long_Base_F { class GM6_base_F: Rifle_Long_Base_F {
class WeaponSlotsInfo: WeaponSlotsInfo { class Single: Mode_SemiAuto {
class MuzzleSlot: MuzzleSlot { dispersion = 0.00029; // radians. Equal to 1.00 MOA.
compatibleItems[] += {"ACE_muzzle_mzls_B"}; };
}; };
class LRR_base_F: Rifle_Long_Base_F {
class Single: Mode_SemiAuto {
dispersion = 0.00020; // radians. Equal to 0.70 MOA.
};
};
class DMR_06_base_F: Rifle_Long_Base_F {
class Single: Mode_SemiAuto {
dispersion = 0.00029; // radians. Equal to 1.00 MOA.
};
class FullAuto: Mode_FullAuto {
dispersion = 0.00029; // radians. Equal to 1.00 MOA.
};
};
class DMR_05_base_F: Rifle_Long_Base_F {
class Single: Mode_SemiAuto {
dispersion = 0.00029; // radians. Equal to 1.00 MOA.
};
class FullAuto: Mode_FullAuto {
dispersion = 0.00029; // radians. Equal to 1.00 MOA.
};
};
class DMR_04_base_F: Rifle_Long_Base_F {
class Single: Mode_SemiAuto {
dispersion = 0.00029; // radians. Equal to 1.00 MOA.
};
};
class DMR_03_base_F: Rifle_Long_Base_F {
class Single: Mode_SemiAuto {
dispersion = 0.00032; // radians. Equal to 1.10 MOA.
};
class FullAuto: Mode_FullAuto {
dispersion = 0.00032; // radians. Equal to 1.10 MOA.
};
};
class DMR_02_base_F: Rifle_Long_Base_F {
class Single: Mode_SemiAuto {
dispersion = 0.000262; // radians. Equal to 0.90 MOA.
}; };
}; };
@ -36,6 +79,24 @@ class CfgWeapons {
compatibleItems[] += {"ACE_muzzle_mzls_B"}; compatibleItems[] += {"ACE_muzzle_mzls_B"};
}; };
}; };
class Single: Mode_SemiAuto {
dispersion = 0.0004; // radians. Equal to 1.375 MOA.
};
};
class EBR_base_F: Rifle_Long_Base_F {
class WeaponSlotsInfo: WeaponSlotsInfo {
class MuzzleSlot: MuzzleSlot {
compatibleItems[] += {"ACE_muzzle_mzls_B"};
};
};
class Single: Mode_SemiAuto {
dispersion = 0.00029; // radians. Equal to 1.00 MOA.
};
class FullAuto: Mode_FullAuto {
dispersion = 0.00029; // radians. Equal to 1.00 MOA.
};
}; };
/* MX */ /* MX */
@ -46,14 +107,6 @@ class CfgWeapons {
compatibleItems[] += {"ACE_muzzle_mzls_H"}; compatibleItems[] += {"ACE_muzzle_mzls_H"};
}; };
}; };
class Single: Mode_SemiAuto {
dispersion = 0.000800; // radians. Equal to 2.75 MOA.
// Based on widely cited 2 MOA figure for new 5.56 ACR.
};
class FullAuto: Mode_FullAuto {
dispersion = 0.00147; // radians. Equal to 5.1 MOA.
};
}; };
class arifle_MX_SW_F: arifle_MX_Base_F { class arifle_MX_SW_F: arifle_MX_Base_F {
magazines[] = { magazines[] = {
@ -65,8 +118,8 @@ class CfgWeapons {
"ACE_30Rnd_65x39_caseless_mag_Tracer_Dim" "ACE_30Rnd_65x39_caseless_mag_Tracer_Dim"
}; };
initSpeed = -1.0; initSpeed = -1.0;
ACE_barrelTwist=9; ACE_barrelTwist=228.6;
ACE_barrelLength=16.0; ACE_barrelLength=406.4;
class WeaponSlotsInfo: WeaponSlotsInfo { class WeaponSlotsInfo: WeaponSlotsInfo {
class MuzzleSlot: MuzzleSlot { class MuzzleSlot: MuzzleSlot {
// Shit is broken again // Shit is broken again
@ -74,14 +127,6 @@ class CfgWeapons {
compatibleItems[] = {"muzzle_snds_H","muzzle_snds_H_SW","ACE_muzzle_mzls_H"}; compatibleItems[] = {"muzzle_snds_H","muzzle_snds_H_SW","ACE_muzzle_mzls_H"};
}; };
}; };
class Single: Mode_SemiAuto {
dispersion = 0.000800; // radians. Equal to 2.75 MOA.
// Based on widely cited 2 MOA figure for new 5.56 ACR.
};
class manual: FullAuto {
dispersion = 0.00147; // radians. Equal to 5.1 MOA.
};
}; };
class arifle_MXM_F: arifle_MX_Base_F { class arifle_MXM_F: arifle_MX_Base_F {
magazines[] = { magazines[] = {
@ -92,15 +137,14 @@ class CfgWeapons {
"ACE_30Rnd_65_Creedmor_mag" "ACE_30Rnd_65_Creedmor_mag"
}; };
initSpeed = -1.018; initSpeed = -1.018;
ACE_barrelTwist=9; ACE_barrelTwist=228.6;
ACE_barrelLength=18; ACE_barrelLength=457.2;
class Single: Single { class Single: Single {
dispersion = 0.00029; // radians. Equal to 1 MOA. dispersion = 0.000436; // radians. Equal to 1.50 MOA.
// 6.5mm is easily capable of this in a half-tuned rifle.
}; };
class FullAuto: FullAuto { class FullAuto: FullAuto {
dispersion = 0.000800; // radians. Equal to 2.75 MOA. dispersion = 0.000436; // radians. Equal to 1.50 MOA.
}; };
}; };
@ -112,15 +156,6 @@ class CfgWeapons {
compatibleItems[] += {"ACE_muzzle_mzls_H"}; compatibleItems[] += {"ACE_muzzle_mzls_H"};
}; };
}; };
class Single: Mode_SemiAuto {
dispersion = 0.000800; // radians. Equal to 2.75 MOA.
// Based on widely cited 2 MOA figure for new 5.56 ACR?
// Use your imagination for fictional weapons!
};
class FullAuto: Mode_FullAuto {
dispersion = 0.00147; // radians. Equal to 5.1 MOA.
};
}; };
@ -137,15 +172,8 @@ class CfgWeapons {
compatibleItems[] += {"ACE_muzzle_mzls_H"}; compatibleItems[] += {"ACE_muzzle_mzls_H"};
}; };
}; };
ACE_barrelTwist=7; ACE_barrelTwist=177.8;
ACE_barrelLength=12.5; ACE_barrelLength=317.5;
class manual: Mode_FullAuto {
dispersion = 0.00175; // radians. Equal to 6 MOA.
};
class Single: manual {
dispersion = 0.00175; // radians. Equal to 6 MOA.
};
}; };
class LMG_Zafir_F: Rifle_Long_Base_F { class LMG_Zafir_F: Rifle_Long_Base_F {
initSpeed = -1.0; initSpeed = -1.0;
@ -154,15 +182,8 @@ class CfgWeapons {
compatibleItems[] += {"ACE_muzzle_mzls_B"}; compatibleItems[] += {"ACE_muzzle_mzls_B"};
}; };
}; };
ACE_barrelTwist=12; ACE_barrelTwist=304.8;
ACE_barrelLength=18.1; ACE_barrelLength=459.74;
class FullAuto: Mode_FullAuto {
dispersion = 0.00175; // radians. Equal to 6 MOA.
};
class Single: Mode_SemiAuto {
dispersion = 0.00175; // radians. Equal to 6 MOA.
};
}; };
@ -173,13 +194,6 @@ class CfgWeapons {
compatibleItems[] += {"ACE_muzzle_mzls_L"}; compatibleItems[] += {"ACE_muzzle_mzls_L"};
}; };
}; };
class Single: Mode_SemiAuto {
dispersion = 0.000727; // radians. Equal to 2.5 MOA, about the limit of mass-produced M855.
};
class FullAuto: Mode_FullAuto {
dispersion = 0.00147; // radians. Equal to 5.1 MOA.
};
}; };
class mk20_base_F: Rifle_Base_F { class mk20_base_F: Rifle_Base_F {
class WeaponSlotsInfo: WeaponSlotsInfo { class WeaponSlotsInfo: WeaponSlotsInfo {
@ -187,14 +201,6 @@ class CfgWeapons {
compatibleItems[] += {"ACE_muzzle_mzls_L"}; compatibleItems[] += {"ACE_muzzle_mzls_L"};
}; };
}; };
class Single: Mode_SemiAuto {
dispersion = 0.0008727; // radians. Equal to 3 MOA, about the limit of mass-produced M855 plus
// some extra for these worn out Greek Army service rifles.
};
class FullAuto: Mode_FullAuto {
dispersion = 0.00147; // radians. Equal to 5.1 MOA.
};
}; };
@ -202,12 +208,15 @@ class CfgWeapons {
class SDAR_base_F: Rifle_Base_F { class SDAR_base_F: Rifle_Base_F {
initSpeed = -0.989; initSpeed = -0.989;
class Single: Mode_SemiAuto { class Single: Mode_SemiAuto {
dispersion = 0.0008727; // radians. Equal to 3 MOA, about the limit of mass-produced M855 plus dispersion = 0.0008727; // radians. Equal to 3 MOA.
// some extra because Kel-Tec. };
class Burst: Mode_Burst {
dispersion = 0.0008727; // radians. Equal to 3 MOA.
}; };
class FullAuto: Mode_FullAuto { class FullAuto: Mode_FullAuto {
dispersion = 0.00147; // radians. Equal to 5.1 MOA. dispersion = 0.0008727; // radians. Equal to 3 MOA.
}; };
}; };
class pdw2000_base_F: Rifle_Base_F { class pdw2000_base_F: Rifle_Base_F {
@ -241,8 +250,8 @@ class CfgWeapons {
class hgun_P07_F: Pistol_Base_F { class hgun_P07_F: Pistol_Base_F {
initSpeed = -0.9778; initSpeed = -0.9778;
ACE_barrelTwist=10; ACE_barrelTwist=254.0;
ACE_barrelLength=4; ACE_barrelLength=101.6;
class WeaponSlotsInfo: WeaponSlotsInfo { class WeaponSlotsInfo: WeaponSlotsInfo {
class MuzzleSlot: MuzzleSlot { class MuzzleSlot: MuzzleSlot {
linkProxy = "\A3\data_f\proxies\weapon_slots\MUZZLE"; linkProxy = "\A3\data_f\proxies\weapon_slots\MUZZLE";
@ -253,8 +262,8 @@ class CfgWeapons {
class hgun_Rook40_F: Pistol_Base_F { class hgun_Rook40_F: Pistol_Base_F {
initSpeed = -1.0; initSpeed = -1.0;
ACE_barrelTwist=10; ACE_barrelTwist=254.0;
ACE_barrelLength=4.4; ACE_barrelLength=111.76;
class WeaponSlotsInfo: WeaponSlotsInfo { class WeaponSlotsInfo: WeaponSlotsInfo {
class MuzzleSlot: MuzzleSlot { class MuzzleSlot: MuzzleSlot {
linkProxy = "\A3\data_f\proxies\weapon_slots\MUZZLE"; linkProxy = "\A3\data_f\proxies\weapon_slots\MUZZLE";
@ -265,8 +274,8 @@ class CfgWeapons {
class hgun_ACPC2_F: Pistol_Base_F { class hgun_ACPC2_F: Pistol_Base_F {
initSpeed = -1.0; initSpeed = -1.0;
ACE_barrelTwist=16; ACE_barrelTwist=406.4;
ACE_barrelLength=5; ACE_barrelLength=127.0;
class WeaponSlotsInfo: WeaponSlotsInfo { class WeaponSlotsInfo: WeaponSlotsInfo {
class MuzzleSlot: MuzzleSlot { class MuzzleSlot: MuzzleSlot {
compatibleItems[] += {"ACE_muzzle_mzls_smg_01"}; compatibleItems[] += {"ACE_muzzle_mzls_smg_01"};
@ -276,8 +285,8 @@ class CfgWeapons {
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=16; ACE_barrelTwist=406.4;
ACE_barrelLength=4.5; ACE_barrelLength=114.3;
class WeaponSlotsInfo: WeaponSlotsInfo { class WeaponSlotsInfo: WeaponSlotsInfo {
class MuzzleSlot: MuzzleSlot { class MuzzleSlot: MuzzleSlot {
compatibleItems[] += {"ACE_muzzle_mzls_smg_01"}; compatibleItems[] += {"ACE_muzzle_mzls_smg_01"};
@ -287,8 +296,8 @@ class CfgWeapons {
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=16; ACE_barrelTwist=406.4;
ACE_barrelLength=3; ACE_barrelLength=76.2;
/* /*
class WeaponSlotsInfo: WeaponSlotsInfo { class WeaponSlotsInfo: WeaponSlotsInfo {
class MuzzleSlot { class MuzzleSlot {
@ -300,8 +309,8 @@ class CfgWeapons {
}; };
class hgun_PDW2000_F: pdw2000_base_F { class hgun_PDW2000_F: pdw2000_base_F {
initSpeed = -1.157; initSpeed = -1.157;
ACE_barrelTwist=9; ACE_barrelTwist=228.6;
ACE_barrelLength=7; ACE_barrelLength=177.8;
}; };
class arifle_Katiba_F: arifle_katiba_Base_F { class arifle_Katiba_F: arifle_katiba_Base_F {
magazines[] = { magazines[] = {
@ -310,8 +319,8 @@ class CfgWeapons {
"ACE_30Rnd_65x39_caseless_green_mag_Tracer_Dim" "ACE_30Rnd_65x39_caseless_green_mag_Tracer_Dim"
}; };
initSpeed = -1.08; initSpeed = -1.08;
ACE_barrelTwist=8; ACE_barrelTwist=203.2;
ACE_barrelLength=28.7; ACE_barrelLength=728.98;
}; };
class arifle_Katiba_C_F: arifle_katiba_Base_F { class arifle_Katiba_C_F: arifle_katiba_Base_F {
magazines[] = { magazines[] = {
@ -320,8 +329,8 @@ class CfgWeapons {
"ACE_30Rnd_65x39_caseless_green_mag_Tracer_Dim" "ACE_30Rnd_65x39_caseless_green_mag_Tracer_Dim"
}; };
initSpeed = -1.07; initSpeed = -1.07;
ACE_barrelTwist=8; ACE_barrelTwist=203.2;
ACE_barrelLength=26.8; ACE_barrelLength=680.72;
}; };
class arifle_Katiba_GL_F: arifle_katiba_Base_F { class arifle_Katiba_GL_F: arifle_katiba_Base_F {
magazines[] = { magazines[] = {
@ -330,8 +339,8 @@ class CfgWeapons {
"ACE_30Rnd_65x39_caseless_green_mag_Tracer_Dim" "ACE_30Rnd_65x39_caseless_green_mag_Tracer_Dim"
}; };
initSpeed = -1.08; initSpeed = -1.08;
ACE_barrelTwist=8; ACE_barrelTwist=203.2;
ACE_barrelLength=28.7; ACE_barrelLength=728.98;
}; };
class arifle_MX_F: arifle_MX_Base_F { class arifle_MX_F: arifle_MX_Base_F {
magazines[] = { magazines[] = {
@ -340,8 +349,8 @@ class CfgWeapons {
"ACE_30Rnd_65x39_caseless_mag_Tracer_Dim" "ACE_30Rnd_65x39_caseless_mag_Tracer_Dim"
}; };
initSpeed = -0.99; initSpeed = -0.99;
ACE_barrelTwist=9; ACE_barrelTwist=228.6;
ACE_barrelLength=14.5; ACE_barrelLength=368.3;
}; };
class arifle_MX_GL_F: arifle_MX_Base_F { class arifle_MX_GL_F: arifle_MX_Base_F {
magazines[] = { magazines[] = {
@ -350,13 +359,13 @@ class CfgWeapons {
"ACE_30Rnd_65x39_caseless_mag_Tracer_Dim" "ACE_30Rnd_65x39_caseless_mag_Tracer_Dim"
}; };
initSpeed = -0.99; initSpeed = -0.99;
ACE_barrelTwist=9; ACE_barrelTwist=228.6;
ACE_barrelLength=14.5; ACE_barrelLength=368.3;
}; };
/* /*
class arifle_MX_SW_F: arifle_MX_Base_F { class arifle_MX_SW_F: arifle_MX_Base_F {
ACE_barrelTwist=9; ACE_barrelTwist=228.6;
ACE_barrelLength=16.0; ACE_barrelLength=406.4;
}; };
*/ */
class arifle_MXC_F: arifle_MX_Base_F { class arifle_MXC_F: arifle_MX_Base_F {
@ -366,13 +375,13 @@ class CfgWeapons {
"ACE_30Rnd_65x39_caseless_mag_Tracer_Dim" "ACE_30Rnd_65x39_caseless_mag_Tracer_Dim"
}; };
initSpeed = -0.965; initSpeed = -0.965;
ACE_barrelTwist=8; ACE_barrelTwist=203.2;
ACE_barrelLength=10.5; ACE_barrelLength=266.7;
}; };
/* /*
class arifle_MXM_F: arifle_MX_Base_F { class arifle_MXM_F: arifle_MX_Base_F {
ACE_barrelTwist=9; ACE_barrelTwist=228.6;
ACE_barrelLength=18; ACE_barrelLength=457.2;
}; };
*/ */
class arifle_SDAR_F: SDAR_base_F { class arifle_SDAR_F: SDAR_base_F {
@ -388,13 +397,13 @@ class CfgWeapons {
"ACE_30Rnd_556x45_Stanag_Tracer_Dim" "ACE_30Rnd_556x45_Stanag_Tracer_Dim"
}; };
initSpeed = -0.989; initSpeed = -0.989;
ACE_barrelTwist=11.25; ACE_barrelTwist=285.75;
ACE_barrelLength=18; ACE_barrelLength=457.2;
}; };
class SMG_02_F: SMG_02_base_F { class SMG_02_F: SMG_02_base_F {
initSpeed = -1.054; initSpeed = -1.054;
ACE_barrelTwist=10; ACE_barrelTwist=254.0;
ACE_barrelLength=7.7; ACE_barrelLength=195.58;
}; };
class arifle_TRG20_F: Tavor_base_F { class arifle_TRG20_F: Tavor_base_F {
magazines[] = { magazines[] = {
@ -408,8 +417,8 @@ class CfgWeapons {
"ACE_30Rnd_556x45_Stanag_Tracer_Dim" "ACE_30Rnd_556x45_Stanag_Tracer_Dim"
}; };
initSpeed = -0.95; initSpeed = -0.95;
ACE_barrelTwist=7; ACE_barrelTwist=177.8;
ACE_barrelLength=15; ACE_barrelLength=381.0;
}; };
class arifle_TRG21_F: Tavor_base_F { class arifle_TRG21_F: Tavor_base_F {
magazines[] = { magazines[] = {
@ -423,8 +432,8 @@ class CfgWeapons {
"ACE_30Rnd_556x45_Stanag_Tracer_Dim" "ACE_30Rnd_556x45_Stanag_Tracer_Dim"
}; };
initSpeed = -0.989; initSpeed = -0.989;
ACE_barrelTwist=7; ACE_barrelTwist=177.8;
ACE_barrelLength=18.1; ACE_barrelLength=459.74;
}; };
class arifle_TRG21_GL_F: arifle_TRG21_F { class arifle_TRG21_GL_F: arifle_TRG21_F {
magazines[] = { magazines[] = {
@ -438,13 +447,13 @@ class CfgWeapons {
"ACE_30Rnd_556x45_Stanag_Tracer_Dim" "ACE_30Rnd_556x45_Stanag_Tracer_Dim"
}; };
initSpeed = -0.989; initSpeed = -0.989;
ACE_barrelTwist=7; ACE_barrelTwist=177.8;
ACE_barrelLength=18.1; ACE_barrelLength=459.74;
}; };
/* /*
class LMG_Zafir_F: Rifle_Long_Base_F { class LMG_Zafir_F: Rifle_Long_Base_F {
ACE_barrelTwist=12; ACE_barrelTwist=304.8;
ACE_barrelLength=18.1; ACE_barrelLength=459.74;
}; };
*/ */
class arifle_Mk20_F: mk20_base_F { class arifle_Mk20_F: mk20_base_F {
@ -459,8 +468,8 @@ class CfgWeapons {
"ACE_30Rnd_556x45_Stanag_Tracer_Dim" "ACE_30Rnd_556x45_Stanag_Tracer_Dim"
}; };
initSpeed = -0.98; initSpeed = -0.98;
ACE_barrelTwist=7; ACE_barrelTwist=177.8;
ACE_barrelLength=17.4; ACE_barrelLength=441.96;
}; };
class arifle_Mk20C_F: mk20_base_F { class arifle_Mk20C_F: mk20_base_F {
magazines[] = { magazines[] = {
@ -474,8 +483,8 @@ class CfgWeapons {
"ACE_30Rnd_556x45_Stanag_Tracer_Dim" "ACE_30Rnd_556x45_Stanag_Tracer_Dim"
}; };
initSpeed = -0.956; initSpeed = -0.956;
ACE_barrelTwist=7; ACE_barrelTwist=177.8;
ACE_barrelLength=16; ACE_barrelLength=406.4;
}; };
class arifle_Mk20_GL_F: mk20_base_F { class arifle_Mk20_GL_F: mk20_base_F {
magazines[] = { magazines[] = {
@ -489,13 +498,13 @@ class CfgWeapons {
"ACE_30Rnd_556x45_Stanag_Tracer_Dim" "ACE_30Rnd_556x45_Stanag_Tracer_Dim"
}; };
initSpeed = -0.956; initSpeed = -0.956;
ACE_barrelTwist=7; ACE_barrelTwist=177.8;
ACE_barrelLength=16; ACE_barrelLength=406.4;
}; };
class SMG_01_F: SMG_01_Base { class SMG_01_F: SMG_01_Base {
initSpeed = -1.016; initSpeed = -1.016;
ACE_barrelTwist=16; ACE_barrelTwist=406.4;
ACE_barrelLength=5.5; ACE_barrelLength=139.7;
}; };
class srifle_DMR_01_F: DMR_01_base_F { class srifle_DMR_01_F: DMR_01_base_F {
magazines[] = { magazines[] = {
@ -503,8 +512,8 @@ class CfgWeapons {
"ACE_10Rnd_762x54_Tracer_mag" "ACE_10Rnd_762x54_Tracer_mag"
}; };
initSpeed = -1.025; initSpeed = -1.025;
ACE_barrelTwist=9.5; ACE_barrelTwist=241.3;
ACE_barrelLength=24; ACE_barrelLength=609.6;
}; };
class srifle_EBR_F: EBR_base_F { class srifle_EBR_F: EBR_base_F {
magazines[] = { magazines[] = {
@ -518,20 +527,20 @@ class CfgWeapons {
"ACE_20Rnd_762x51_Mag_SD" "ACE_20Rnd_762x51_Mag_SD"
}; };
initSpeed = -0.9724; initSpeed = -0.9724;
ACE_barrelTwist=12; ACE_barrelTwist=304.8;
ACE_barrelLength=18; ACE_barrelLength=457.2;
}; };
/* /*
class LMG_Mk200_F: Rifle_Long_Base_F { class LMG_Mk200_F: Rifle_Long_Base_F {
initSpeed = -1.0; initSpeed = -1.0;
ACE_barrelTwist=7; ACE_barrelTwist=177.8;
ACE_barrelLength=12.5; ACE_barrelLength=317.5;
}; };
*/ */
class srifle_LRR_F: LRR_base_F { class srifle_LRR_F: LRR_base_F {
initSpeed = -1.0; initSpeed = -1.0;
ACE_barrelTwist=13; ACE_barrelTwist=330.2;
ACE_barrelLength=29; ACE_barrelLength=736.6;
}; };
class srifle_GM6_F: GM6_base_F { class srifle_GM6_F: GM6_base_F {
magazines[] = { magazines[] = {
@ -542,8 +551,8 @@ class CfgWeapons {
"ACE_5Rnd_127x99_AMAX_Mag" "ACE_5Rnd_127x99_AMAX_Mag"
}; };
initSpeed = -1.0; initSpeed = -1.0;
ACE_barrelTwist=15; ACE_barrelTwist=381.0;
ACE_barrelLength=36.6; ACE_barrelLength=730;
}; };
class srifle_DMR_02_F: DMR_02_base_F { class srifle_DMR_02_F: DMR_02_base_F {
magazines[] = { magazines[] = {
@ -555,8 +564,8 @@ class CfgWeapons {
"ACE_20Rnd_762x67_Berger_Hybrid_OTM_Mag" "ACE_20Rnd_762x67_Berger_Hybrid_OTM_Mag"
}; };
initSpeed = -0.962; initSpeed = -0.962;
ACE_barrelTwist=10; ACE_barrelTwist=254.0;
ACE_barrelLength=20; ACE_barrelLength=508.0;
}; };
class srifle_DMR_03_F: DMR_03_base_F { class srifle_DMR_03_F: DMR_03_base_F {
magazines[] = { magazines[] = {
@ -570,18 +579,18 @@ class CfgWeapons {
"ACE_20Rnd_762x51_Mag_SD" "ACE_20Rnd_762x51_Mag_SD"
}; };
initSpeed = -0.9843; initSpeed = -0.9843;
ACE_barrelTwist=10; ACE_barrelTwist=254.0;
ACE_barrelLength=20; ACE_barrelLength=508.0;
}; };
class srifle_DMR_04_F: DMR_04_base_F { class srifle_DMR_04_F: DMR_04_base_F {
initSpeed = -1.0; initSpeed = -1.0;
ACE_barrelTwist=8; ACE_barrelTwist=203.2;
ACE_barrelLength=17.72; ACE_barrelLength=450.088;
}; };
class srifle_DMR_05_blk_F: DMR_05_base_F { class srifle_DMR_05_blk_F: DMR_05_base_F {
initSpeed = -1.0; initSpeed = -1.0;
ACE_barrelTwist=14.17; ACE_barrelTwist=359.918;
ACE_barrelLength=24.41; ACE_barrelLength=620.014;
}; };
class srifle_DMR_06_camo_F: DMR_06_base_F { class srifle_DMR_06_camo_F: DMR_06_base_F {
magazines[] = { magazines[] = {
@ -595,18 +604,18 @@ class CfgWeapons {
"ACE_20Rnd_762x51_Mag_SD" "ACE_20Rnd_762x51_Mag_SD"
}; };
initSpeed = -0.9916; initSpeed = -0.9916;
ACE_barrelTwist=12; ACE_barrelTwist=304.8;
ACE_barrelLength=22; ACE_barrelLength=558.8;
}; };
class MMG_01_hex_F: MMG_01_base_F { class MMG_01_hex_F: MMG_01_base_F {
initSpeed = -1.0; initSpeed = -1.0;
ACE_barrelTwist=14.17; ACE_barrelTwist=359.918;
ACE_barrelLength=21.65; ACE_barrelLength=549.91;
}; };
class MMG_02_camo_F: MMG_02_base_F { class MMG_02_camo_F: MMG_02_base_F {
initSpeed = -1.0; initSpeed = -1.0;
ACE_barrelTwist=9.25; ACE_barrelTwist=234.95;
ACE_barrelLength=24; ACE_barrelLength=609.6;
}; };
class HMG_127 : LMG_RCWS { class HMG_127 : LMG_RCWS {
@ -615,8 +624,8 @@ class CfgWeapons {
}; };
class HMG_M2: HMG_01 { class HMG_M2: HMG_01 {
initSpeed = -1.0; initSpeed = -1.0;
ACE_barrelTwist=12; ACE_barrelTwist=304.8;
ACE_barrelLength=45; ACE_barrelLength=1143.0;
}; };
/* Silencers */ /* Silencers */
@ -642,11 +651,11 @@ class CfgWeapons {
}; };
class MuzzleCoef { class MuzzleCoef {
dispersionCoef = "0.8f"; dispersionCoef = "0.95f";
artilleryDispersionCoef = "1.0f"; artilleryDispersionCoef = "1.0f";
fireLightCoef = "0.5f"; fireLightCoef = "0.5f";
recoilCoef = "1.0f"; recoilCoef = "0.95f";
recoilProneCoef = "1.0f"; recoilProneCoef = "0.95f";
minRangeCoef = "1.0f"; minRangeCoef = "1.0f";
minRangeProbabCoef = "1.0f"; minRangeProbabCoef = "1.0f";
midRangeCoef = "1.0f"; midRangeCoef = "1.0f";
@ -675,11 +684,11 @@ class CfgWeapons {
}; };
class MuzzleCoef { class MuzzleCoef {
dispersionCoef = "0.8f"; dispersionCoef = "0.95f";
artilleryDispersionCoef = "1.0f"; artilleryDispersionCoef = "1.0f";
fireLightCoef = "0.5f"; fireLightCoef = "0.5f";
recoilCoef = "1.0f"; recoilCoef = "0.95f";
recoilProneCoef = "1.0f"; recoilProneCoef = "0.95f";
minRangeCoef = "1.0f"; minRangeCoef = "1.0f";
minRangeProbabCoef = "1.0f"; minRangeProbabCoef = "1.0f";
midRangeCoef = "1.0f"; midRangeCoef = "1.0f";
@ -708,11 +717,11 @@ class CfgWeapons {
}; };
class MuzzleCoef { class MuzzleCoef {
dispersionCoef = "0.8f"; dispersionCoef = "0.95f";
artilleryDispersionCoef = "1.0f"; artilleryDispersionCoef = "1.0f";
fireLightCoef = "0.5f"; fireLightCoef = "0.5f";
recoilCoef = "1.0f"; recoilCoef = "0.95f";
recoilProneCoef = "1.0f"; recoilProneCoef = "0.95f";
minRangeCoef = "1.0f"; minRangeCoef = "1.0f";
minRangeProbabCoef = "1.0f"; minRangeProbabCoef = "1.0f";
midRangeCoef = "1.0f"; midRangeCoef = "1.0f";
@ -741,11 +750,11 @@ class CfgWeapons {
}; };
class MuzzleCoef { class MuzzleCoef {
dispersionCoef = "0.8f"; dispersionCoef = "0.95f";
artilleryDispersionCoef = "1.0f"; artilleryDispersionCoef = "1.0f";
fireLightCoef = "0.5f"; fireLightCoef = "0.5f";
recoilCoef = "1.0f"; recoilCoef = "0.95f";
recoilProneCoef = "1.0f"; recoilProneCoef = "0.95f";
minRangeCoef = "1.0f"; minRangeCoef = "1.0f";
minRangeProbabCoef = "1.0f"; minRangeProbabCoef = "1.0f";
midRangeCoef = "1.0f"; midRangeCoef = "1.0f";
@ -774,11 +783,11 @@ class CfgWeapons {
}; };
class MuzzleCoef { class MuzzleCoef {
dispersionCoef = "0.8f"; dispersionCoef = "0.95f";
artilleryDispersionCoef = "1.0f"; artilleryDispersionCoef = "1.0f";
fireLightCoef = "0.5f"; fireLightCoef = "0.5f";
recoilCoef = "1.0f"; recoilCoef = "0.95f";
recoilProneCoef = "1.0f"; recoilProneCoef = "0.95f";
minRangeCoef = "1.0f"; minRangeCoef = "1.0f";
minRangeProbabCoef = "1.0f"; minRangeProbabCoef = "1.0f";
midRangeCoef = "1.0f"; midRangeCoef = "1.0f";
@ -807,11 +816,11 @@ class CfgWeapons {
}; };
class MuzzleCoef { class MuzzleCoef {
dispersionCoef = "0.8f"; dispersionCoef = "0.95f";
artilleryDispersionCoef = "1.0f"; artilleryDispersionCoef = "1.0f";
fireLightCoef = "0.5f"; fireLightCoef = "0.5f";
recoilCoef = "1.0f"; recoilCoef = "0.95f";
recoilProneCoef = "1.0f"; recoilProneCoef = "0.95f";
minRangeCoef = "1.0f"; minRangeCoef = "1.0f";
minRangeProbabCoef = "1.0f"; minRangeProbabCoef = "1.0f";
midRangeCoef = "1.0f"; midRangeCoef = "1.0f";
@ -840,11 +849,11 @@ class CfgWeapons {
}; };
class MuzzleCoef { class MuzzleCoef {
dispersionCoef = "0.8f"; dispersionCoef = "0.95f";
artilleryDispersionCoef = "1.0f"; artilleryDispersionCoef = "1.0f";
fireLightCoef = "0.5f"; fireLightCoef = "0.5f";
recoilCoef = "1.0f"; recoilCoef = "0.95f";
recoilProneCoef = "1.0f"; recoilProneCoef = "0.95f";
minRangeCoef = "1.0f"; minRangeCoef = "1.0f";
minRangeProbabCoef = "1.0f"; minRangeProbabCoef = "1.0f";
midRangeCoef = "1.0f"; midRangeCoef = "1.0f";
@ -873,11 +882,11 @@ class CfgWeapons {
}; };
class MuzzleCoef { class MuzzleCoef {
dispersionCoef = "0.8f"; dispersionCoef = "0.95f";
artilleryDispersionCoef = "1.0f"; artilleryDispersionCoef = "1.0f";
fireLightCoef = "0.5f"; fireLightCoef = "0.5f";
recoilCoef = "1.0f"; recoilCoef = "0.95f";
recoilProneCoef = "1.0f"; recoilProneCoef = "0.95f";
minRangeCoef = "1.0f"; minRangeCoef = "1.0f";
minRangeProbabCoef = "1.0f"; minRangeProbabCoef = "1.0f";
midRangeCoef = "1.0f"; midRangeCoef = "1.0f";
@ -906,11 +915,11 @@ class CfgWeapons {
}; };
class MuzzleCoef { class MuzzleCoef {
dispersionCoef = "0.8f"; dispersionCoef = "0.95f";
artilleryDispersionCoef = "1.0f"; artilleryDispersionCoef = "1.0f";
fireLightCoef = "0.5f"; fireLightCoef = "0.5f";
recoilCoef = "1.0f"; recoilCoef = "0.95f";
recoilProneCoef = "1.0f"; recoilProneCoef = "0.95f";
minRangeCoef = "1.0f"; minRangeCoef = "1.0f";
minRangeProbabCoef = "1.0f"; minRangeProbabCoef = "1.0f";
midRangeCoef = "1.0f"; midRangeCoef = "1.0f";

View File

@ -1,12 +1,12 @@
ace_ballistics ace_ballistics
============== ==============
Changes to weapon and ammunition values. Changes to weapon, magazine and ammunition values.
## Maintainers ## Maintainers
The people responsible for merging changes to this component or answering potential questions. The people responsible for merging changes to this component or answering potential questions.
- [Ruthberg] (http://github.com/Ulteq)
- [KoffeinFlummi](https://github.com/KoffeinFlummi) - [KoffeinFlummi](https://github.com/KoffeinFlummi)
- [commy2](https://github.com/commy2) - [commy2](https://github.com/commy2)

View File

@ -6,8 +6,7 @@ class CfgPatches {
weapons[] = {}; weapons[] = {};
requiredVersion = REQUIRED_VERSION; requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_common"}; requiredAddons[] = {"ace_common"};
author[] = {"TaoSensai","commy2","Ruthberg"}; author[] = {"commy2","Ruthberg"};
authorUrl = "https://github.com/Taosenai/tmr";
VERSION_CONFIG; VERSION_CONFIG;
}; };
}; };

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,14 @@
class ACE_Settings {
class GVAR(allowHandcuffOwnSide) {
displayName = CSTRING(ModuleSettings_handcuffSide_name);
description = CSTRING(ModuleSettings_handcuffSide_description);
typeName = "BOOL";
value = 1;
};
class GVAR(allowSurrender) {
displayName = CSTRING(ModuleSettings_allowSurrender_name);
description = CSTRING(ModuleSettings_allowSurrender_description);
typeName = "BOOL";
value = 1;
};
};

View File

@ -4,7 +4,7 @@ class CfgVehicles {
class ACE_Actions { class ACE_Actions {
class ACE_ApplyHandcuffs { class ACE_ApplyHandcuffs {
displayName = "$STR_ACE_Captives_SetCaptive"; displayName = CSTRING(SetCaptive);
selection = "righthand"; selection = "righthand";
distance = 2; distance = 2;
condition = QUOTE([ARR_2(_player, _target)] call FUNC(canApplyHandcuffs)); condition = QUOTE([ARR_2(_player, _target)] call FUNC(canApplyHandcuffs));
@ -13,7 +13,7 @@ class CfgVehicles {
icon = QUOTE(PATHTOF(UI\handcuff_ca.paa)); icon = QUOTE(PATHTOF(UI\handcuff_ca.paa));
}; };
class ACE_RemoveHandcuffs { class ACE_RemoveHandcuffs {
displayName = "$STR_ACE_Captives_ReleaseCaptive"; displayName = CSTRING(ReleaseCaptive);
selection = "righthand"; selection = "righthand";
distance = 2; distance = 2;
condition = QUOTE([ARR_2(_player, _target)] call FUNC(canRemoveHandcuffs)); condition = QUOTE([ARR_2(_player, _target)] call FUNC(canRemoveHandcuffs));
@ -24,7 +24,7 @@ class CfgVehicles {
class ACE_MainActions { class ACE_MainActions {
class ACE_EscortCaptive { class ACE_EscortCaptive {
displayName = "$STR_ACE_Captives_EscortCaptive"; displayName = CSTRING(EscortCaptive);
distance = 4; distance = 4;
condition = QUOTE([ARR_2(_player, _target)] call FUNC(canEscortCaptive)); condition = QUOTE([ARR_2(_player, _target)] call FUNC(canEscortCaptive));
statement = QUOTE([ARR_3(_player, _target, true)] call FUNC(doEscortCaptive)); statement = QUOTE([ARR_3(_player, _target, true)] call FUNC(doEscortCaptive));
@ -35,7 +35,7 @@ class CfgVehicles {
hotkey = "E"; hotkey = "E";
}; };
class ACE_StopEscorting { class ACE_StopEscorting {
displayName = "$STR_ACE_Captives_StopEscorting"; displayName = CSTRING(StopEscorting);
distance = 4; distance = 4;
condition = QUOTE([ARR_2(_player, _target)] call FUNC(canStopEscorting)); condition = QUOTE([ARR_2(_player, _target)] call FUNC(canStopEscorting));
statement = QUOTE([ARR_3(_player,_target, false)] call FUNC(doEscortCaptive)); statement = QUOTE([ARR_3(_player,_target, false)] call FUNC(doEscortCaptive));
@ -46,7 +46,7 @@ class CfgVehicles {
hotkey = "E"; hotkey = "E";
}; };
class ACE_LoadCaptive { class ACE_LoadCaptive {
displayName = "$STR_ACE_Captives_LoadCaptive"; displayName = CSTRING(LoadCaptive);
distance = 4; distance = 4;
condition = QUOTE([ARR_3(_player, _target, objNull)] call FUNC(canLoadCaptive)); condition = QUOTE([ARR_3(_player, _target, objNull)] call FUNC(canLoadCaptive));
statement = QUOTE([ARR_3(_player, _target, objNull)] call FUNC(doLoadCaptive)); statement = QUOTE([ARR_3(_player, _target, objNull)] call FUNC(doLoadCaptive));
@ -56,22 +56,19 @@ class CfgVehicles {
priority = 2.2; priority = 2.2;
hotkey = "L"; hotkey = "L";
}; };
class ACE_FriskPerson { class GVAR(UnloadCaptive) {
displayName = "$STR_ACE_Captives_FriskPerson"; displayName = CSTRING(UnloadCaptive);
distance = 2; distance = 4;
condition = QUOTE([ARR_2(_player, _target)] call FUNC(canFriskPerson)); condition = QUOTE([ARR_2(_player, _target)] call FUNC(canUnloadCaptive));
statement = QUOTE([ARR_2(_player, _target)] call FUNC(doFriskPerson)); statement = QUOTE([ARR_2(_player, _target)] call FUNC(doUnloadCaptive));
showDisabled = 0; priority = 1.2;
//icon = ""; //@todo
priority = 3;
hotkey = "F";
}; };
}; };
}; };
class ACE_SelfActions { class ACE_SelfActions {
class ACE_StopEscortingSelf { class ACE_StopEscortingSelf {
displayName = "$STR_ACE_Captives_StopEscorting"; displayName = CSTRING(StopEscorting);
condition = QUOTE([ARR_2(_player, objNull)] call FUNC(canStopEscorting)); condition = QUOTE([ARR_2(_player, objNull)] call FUNC(canStopEscorting));
statement = QUOTE([ARR_3(_player,objNull, false)] call FUNC(doEscortCaptive)); statement = QUOTE([ARR_3(_player,objNull, false)] call FUNC(doEscortCaptive));
exceptions[] = {"isNotEscorting"}; exceptions[] = {"isNotEscorting"};
@ -80,20 +77,22 @@ class CfgVehicles {
hotkey = "C"; hotkey = "C";
}; };
class ACE_StartSurrenderingSelf { class ACE_StartSurrenderingSelf {
displayName = "$STR_ACE_Captives_StartSurrendering"; displayName = CSTRING(StartSurrendering);
condition = QUOTE([ARR_2(_player, true)] call FUNC(canSurrender)); condition = QUOTE([ARR_2(_player, true)] call FUNC(canSurrender));
statement = QUOTE([ARR_2(_player, true)] call FUNC(setSurrendered)); statement = QUOTE([ARR_2(_player, true)] call FUNC(setSurrendered));
exceptions[] = {}; exceptions[] = {};
showDisabled = 0; showDisabled = 0;
priority = 0; priority = 0;
icon = QUOTE(PATHTOF(UI\Surrender_ca.paa));
}; };
class ACE_StopSurrenderingSelf { class ACE_StopSurrenderingSelf {
displayName = "$STR_ACE_Captives_StopSurrendering"; displayName = CSTRING(StopSurrendering);
condition = QUOTE([ARR_2(_player, false)] call FUNC(canSurrender)); condition = QUOTE([ARR_2(_player, false)] call FUNC(canSurrender));
statement = QUOTE([ARR_2(_player, false)] call FUNC(setSurrendered)); statement = QUOTE([ARR_2(_player, false)] call FUNC(setSurrendered));
exceptions[] = {"isNotSurrendering"}; exceptions[] = {"isNotSurrendering"};
showDisabled = 0; showDisabled = 0;
priority = 0; priority = 0;
icon = QUOTE(PATHTOF(UI\Surrender_ca.paa));
}; };
}; };
}; };
@ -102,20 +101,13 @@ class CfgVehicles {
class ACE_Actions { \ class ACE_Actions { \
class ACE_MainActions { \ class ACE_MainActions { \
class GVAR(LoadCaptive) { \ class GVAR(LoadCaptive) { \
displayName = "$STR_ACE_Captives_LoadCaptive"; \ displayName = CSTRING(LoadCaptive); \
distance = 4; \ distance = 4; \
condition = QUOTE([ARR_3(_player, objNull, _target)] call FUNC(canLoadCaptive)); \ condition = QUOTE([ARR_3(_player, objNull, _target)] call FUNC(canLoadCaptive)); \
statement = QUOTE([ARR_3(_player, objNull, _target)] call FUNC(doLoadCaptive)); \ statement = QUOTE([ARR_3(_player, objNull, _target)] call FUNC(doLoadCaptive)); \
exceptions[] = {"isNotEscorting"}; \ exceptions[] = {"isNotEscorting"}; \
priority = 1.2; \ priority = 1.2; \
}; \ }; \
class GVAR(UnloadCaptive) { \
displayName = "$STR_ACE_Captives_UnloadCaptive"; \
distance = 4; \
condition = QUOTE([ARR_2(_player, _target)] call FUNC(canUnloadCaptive)); \
statement = QUOTE([ARR_2(_player, _target)] call FUNC(doUnloadCaptive)); \
priority = 1.2; \
}; \
}; \ }; \
}; };
@ -159,21 +151,48 @@ class CfgVehicles {
}; };
class GVAR(ModuleSurrender): Module_F { class GVAR(ModuleSurrender): Module_F {
author = "$STR_ACE_Common_ACETeam"; author = ECSTRING(common,ACETeam);
category = "ACE"; category = "ACE";
displayName = "Make Unit Surrender"; displayName = CSTRING(ModuleSurrender_DisplayName); //Make Unit Surrender
function = QUOTE(DFUNC(moduleSurrender)); function = QFUNC(moduleSurrender);
scope = 2; //show in editor scope = 2; //show in editor
scopeCurator = 2; //show in zeus
curatorCost = 0; //???
isGlobal = 1; //run global isGlobal = 1; //run global
isTriggerActivated = 1; //Wait for triggers isTriggerActivated = 1; //Wait for triggers
icon = QUOTE(PATHTOF(UI\Icon_Module_Make_Unit_Surrender_ca.paa)); icon = QUOTE(PATHTOF(UI\Icon_Module_Make_Unit_Surrender_ca.paa));
functionPriority = 0; functionPriority = 0;
class Arguments {}; class Arguments {};
class ModuleDescription: ModuleDescription { class ModuleDescription: ModuleDescription {
description = "Sync a unit to make them surrender.<br/>Source: ace_captives"; description = CSTRING(ModuleSurrender_Description); //Sync a unit to make them surrender.<br/>Source: ace_captives
sync[] = {"AnyAI"}; sync[] = {"AnyAI"};
}; };
}; };
class ACE_Module: Module_F {};
class GVAR(moduleSettings): ACE_Module {
author = ECSTRING(common,ACETeam);
category = "ACE";
displayName = CSTRING(ModuleSettings_DisplayName);
function = QFUNC(moduleSettings);
scope = 2;
icon = QUOTE(PATHTOF(UI\Icon_Module_settings_ca.paa));
isGlobal = 1;
class Arguments {
class allowHandcuffOwnSide {
displayName = CSTRING(ModuleSettings_handcuffSide_name);
description = CSTRING(ModuleSettings_handcuffSide_description);
typeName = "BOOL";
defaultValue = 1;
};
class allowSurrender {
displayName = CSTRING(ModuleSettings_allowSurrender_name);
description = CSTRING(ModuleSettings_allowSurrender_description);
typeName = "BOOL";
defaultValue = 1;
};
};
class ModuleDescription: ModuleDescription {
description = CSTRING(ModuleSettings_Description);
sync[] = {};
};
};
}; };

View File

@ -3,8 +3,8 @@ class CfgWeapons {
class InventoryItem_Base_F; class InventoryItem_Base_F;
class ACE_CableTie: ACE_ItemCore { class ACE_CableTie: ACE_ItemCore {
displayName = "$STR_ACE_Captives_CableTie"; displayName = CSTRING(CableTie);
descriptionShort = "$STR_ACE_Captives_CableTieDescription"; descriptionShort = CSTRING(CableTieDescription);
model = QUOTE(PATHTOF(models\ace_cabletie.p3d)); model = QUOTE(PATHTOF(models\ace_cabletie.p3d));
picture = QUOTE(PATHTOF(UI\ace_cabletie_ca.paa)); picture = QUOTE(PATHTOF(UI\ace_cabletie_ca.paa));
scope = 2; scope = 2;

Binary file not shown.

Binary file not shown.

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