Merge branch 'master' into medicalImprovements

This commit is contained in:
Glowbal 2015-04-26 11:20:04 +02:00
commit b266734f6e
19 changed files with 730 additions and 338 deletions

View File

@ -1,48 +1,83 @@
<p align="center">
<img src="https://github.com/acemod/ACE3/blob/master/extras/assets/logo/black/ACE3-Logo.jpg" height="80" />
<img src="https://github.com/acemod/ACE3/blob/master/extras/assets/logo/black/ACE3-Logo.jpg"
height="112">
</p>
<p align="center">
<a href="https://github.com/acemod/ACE3/releases">
<img src="http://img.shields.io/badge/release-3.0-green.svg?style=flat" alt="ACE version">
<img src="http://img.shields.io/badge/Version-3.0.0-blue.svg?style=flat"
alt="ACE version">
</a>
<a href="#">
<img src="http://img.shields.io/badge/download-22_MB-blue.svg?style=flat" alt="ACE download">
<a href="https://github.com/acemod/ACE3/archive/master.zip">
<img src="http://img.shields.io/badge/Download-48.3_MB-green.svg?style=flat"
alt="ACE download">
</a>
<a href="https://github.com/acemod/ACE3/issues">
<img src="http://img.shields.io/github/issues/acemod/ACE3.svg?style=flat" alt="ACE issues">
<img src="http://img.shields.io/github/issues-raw/acemod/ACE3.svg?style=flat&label=Issues"
alt="ACE issues">
</a>
<a href="http://forums.bistudio.com/showthread.php?190433-ACE3-A-collaborative-merger-between-AGM-CSE-and-ACE&p=2910796&viewfull=1#post2910796">
<img src="https://img.shields.io/badge/BIF-Thread-lightgrey.svg?style=flat"
alt="BIF thread">
</a>
<a href="https://github.com/acemod/ACE3/blob/master/LICENSE">
<img src="http://img.shields.io/badge/license-GPLv2-red.svg?style=flat" alt="ACE license">
<img src="http://img.shields.io/badge/License-GPLv2-red.svg?style=flat"
alt="ACE license">
</a>
</p>
<p align="center"><sup><strong>Requires the latest version of <a href="http://www.armaholic.com/page.php?id=18767">CBA A3</a> | <a href="#">BIF thread</a></strong></sup></p>
<p align="center"><sup><strong>Requires the latest version of <a href="http://www.armaholic.com/page.php?id=18767">CBA A3</a>. Visit us on <a href="https://www.facebook.com/ACE3Mod">Facebook</a> | <a href="https://www.youtube.com/c/ACE3Mod">YouTube</a> | <a href="https://twitter.com/ACE3Mod">Twitter</a> | <a href="http://www.reddit.com/r/arma/search?q=ACE&restrict_sr=on&sort=new&t=all">Reddit</a></strong></sup></p>
**ACE3** is a joint effort by the teams behind **ACE2**, **AGM** and **CSE** to improve the realism and authenticity of Arma 3.
This mod is entirely **open-source**, and everyone is free to propose changes or maintain their own, customized version as long as they make their changes open to the public in accordance with the GNU General Public License (for more information check the license file attached to this project).
The project is entirely **open-source** and all contributions are welcome. Feel free to maintain your own custom version, so long as the changes you make are open to the public in accordance with the GNU General Public License ([GPLv2](https://github.com/acemod/ACE3/blob/master/LICENSE)).
The mod is **built modularly** — almost any PBO can be removed, thus a team can maintain its own tailored version of ACE, which excludes a select number of components that they don't like, or which conflict with other add-ons. Components themselves, like e.g. the medical system, also include various customization options, allowing mission designers to tweak the overall experience.
The mod is **built modularly**, so almost any included PBO can be easily removed from the configuration. This way, a team can maintain its own tailored version of ACE by simply excluding any components they don't need, or those possibly in conflict with other add-ons. Modules themselves, e.g. the medical system, also include various customization options, allowing mission designers to tweak the overall experience.
### Features
* Improved medical system
* Logistics system including cargo transport and vehicle maintenance
* Explosives system including different trigger types
* Captivity system
* Realistic names for vehicles and weapons
* Realistic ballistics including wind and humidity
* Backblast simulation
* A fire control system for armored vehicles and helicopters
***and more...***
### Core features
* Brand new 3D interaction/action system
* Performance and reliability framework
* Focus on modularity and customization
* New flexible client and server settings & configuration
* Improved medical system with various levels (basic/advanced) focus on gameplay/realism
* Proper & consistent network-synced weather
* Wind and weather-based ballistics
* Captivity system
* Explosives system, including different trigger types
* Map screen improvements marker placement and map tools
* Advanced missile guidance and laser designation
#### Guides & How-Tos
If you installed ACE3, but have trouble understanding how it all works, or where to start — see [Getting Started](https://github.com/acemod/ACE3/blob/master/documentation/user/getting-started.md).
#### Additional features
* Carrying and dragging
* Realistic names for vehicles and weapons
* A fire control system (FCS) for armored vehicles and helicopters
* Realistic ballistics/FCS calculated in C/C++ extensions
* Backblast area and overpressure simulation
* Disposable launchers
* Realistic G-forces
* Vehicle locking
* Realistic night and thermal vision modes
* Magazine repacking
* Realistic weapon overheating mechanic
* Combat deafness (temporary loss of hearing) simulation
* Improved ragdoll physics
* Improved interactions for AARs and ammo bearers
* Adjustable sniper scopes
* No idle animation with lowered weapon
* No talking player avatar
* Jumping over obstacles, climbing over walls and cutting down fences
* Vector, MicroDAGR and Kestrel devices<br>
***and much more...***
### Guides & how-tos
If you installed ACE3 but have trouble understanding how it all works, or where to start, read this first:
* [Getting started](http://ace3mod.com/wiki/user/getting-started.html)
#### Contributing
If you want to help put with the ongoing development, you can do so by looking for possible bugs or by contributing new features. To contribute something to ACE, simply fork this repository and submit your pull requests for review by other collaborators. In the process, please add yourself to the author array of any .pbo you will be editing and the AUTHORS.txt file; including a valid email address.
You can help out with the ongoing development by looking for potential bugs in our code base, or by contributing new features. To contribute something to ACE, simply fork this repository and submit your pull requests for review by other collaborators. Remember to add yourself to the author array of any PBO you will be editing and the [`AUTHORS.txt`](https://github.com/acemod/ACE3/blob/master/AUTHORS.txt) file; including a valid email address.
To report a bug, propose a feature, or suggest a change to the existing one — please, use our [Issue Tracker](https://github.com/acemod/ACE3/issues). See [this link](http://ace3mod.com/wiki/user/how-to-report-an-issue.html) for details.
Please, use our [Issue Tracker](https://github.com/acemod/ACE3/issues) to report a bug, propose a feature, or suggest changes to the existing ones. See also:
* [How to report an issue](http://ace3mod.com/wiki/user/how-to-report-an-issue.html)
* [How to make a feature request](http://ace3mod.com/wiki/user/how-to-make-a-feature-request.html)
#### Testing & Building
If you want to help us test the latest development changes, feel free to download our master branch, using either git — if familiar with the process — or directly, by following [this link](https://github.com/acemod/ACE3/archive/master.zip).
To find out how to set up your development environment and build a version of ACE for testing, follow [these instructions](https://github.com/acemod/ACE3/blob/master/documentation/development/setting-up-the-development-environment.md).
#### Testing & building
To help us test the latest development changes, download our master branch ([directly](https://github.com/acemod/ACE3/archive/master.zip), or [with git](https://help.github.com/articles/fetching-a-remote/)), then assemble a test build:
* [Setting up the development environment](http://ace3mod.com/wiki/development/setting-up-the-development-environment.html) step-by-step instructions on how to properly setup and build a version of ACE for testing purposes.

View File

@ -572,7 +572,6 @@ class CfgAmmo {
ACE_caliber=0.366;
ACE_bulletLength=1.350;
ACE_bulletMass=230;
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_ballisticCoefficients[]={0.368};
ACE_velocityBoundaries[]={};

View File

@ -101,25 +101,20 @@ class CfgVehicles {
#define MACRO_LOADUNLOADCAPTIVE \
class ACE_Actions { \
class ACE_MainActions { \
selection = ""; \
class ACE_LoadCaptive { \
class GVAR(LoadCaptive) { \
displayName = "$STR_ACE_Captives_LoadCaptive"; \
distance = 4; \
condition = QUOTE([ARR_3(_player, objNull, _target)] call FUNC(canLoadCaptive)); \
statement = QUOTE([ARR_3(_player, objNull, _target)] call FUNC(doLoadCaptive)); \
exceptions[] = {"isNotEscorting"}; \
showDisabled = 0; \
priority = 1.2; \
hotkey = "L"; \
}; \
class ACE_UnloadCaptive { \
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)); \
showDisabled = 0; \
priority = 1.2; \
hotkey = "C"; \
}; \
}; \
};

View File

@ -22,7 +22,7 @@ PARAMS_3(_unit,_target,_state);
if (_state) then {
if (_unit getVariable [QGVAR(isEscorting), false]) exitWith {};
[_unit, _target] call EFUNC(common,claim);
[_unit, _target, false] call EFUNC(common,claim);
_unit setVariable [QGVAR(isEscorting), true, true];
_target attachTo [_unit, [0, 1, 0]];
@ -34,8 +34,7 @@ if (_state) then {
{[(_this select 0), ((_this select 0) getVariable [QGVAR(escortedUnit), objNull]), false] call FUNC(doEscortCaptive);},
nil, 20, false, true, "", QUOTE(!isNull (GETVAR(_target,QGVAR(escortedUnit),objNull)))];
private "_escortFnc";
_escortFnc = {
[{
EXPLODE_3_PVT((_this select 0),_unit,_target,_actionID);
if (_unit getVariable [QGVAR(isEscorting), false]) then {
if (!alive _target || {!alive _unit} || {!canStand _target} || {!canStand _unit} || {_target getVariable ["ACE_isUnconscious", false]} || {_unit getVariable ["ACE_isUnconscious", false]} || {!isNull (attachedTo _unit)}) then {
@ -45,13 +44,12 @@ if (_state) then {
if (!(_unit getVariable [QGVAR(isEscorting), false])) then {
[(_this select 1)] call cba_fnc_removePerFrameHandler;
[objNull, _target] call EFUNC(common,claim);
[objNull, _target, false] call EFUNC(common,claim);
detach _target;
_unit removeAction _actionID;
_unit setVariable [QGVAR(escortedUnit), objNull, true];
};
};
[_escortFnc, 0, [_unit, _target, _actionID]] call CBA_fnc_addPerFrameHandler;
}, 0, [_unit, _target, _actionID]] call CBA_fnc_addPerFrameHandler;
} else {
_unit setVariable [QGVAR(isEscorting), false, true];

View File

@ -19,7 +19,7 @@ class CfgAmmo {
airFriction = 0.04;
laserLock = 0;
};
class GrenadeBase;
class Grenade;
class GrenadeHand: Grenade {
@ -42,24 +42,24 @@ class CfgAmmo {
class SmokeShell: GrenadeHand {
GVAR(skip) = 1;
};
class RocketBase;
//class R_Hydra_HE: RocketBase {
// GVAR(skip) = 1;
//};
//class R_57mm_HE: RocketBase {
// GVAR(skip) = 1;
//};
class R_80mm_HE: RocketBase {
GVAR(skip) = 1;
};
//class R_S8T_AT: RocketBase {
// GVAR(skip) = 1;
//};
class BombCore;
class Bo_Mk82: BombCore {
GVAR(classes)[] = {"ACE_frag_large", "ACE_frag_large", "ACE_frag_large_HD", "ACE_frag_large", "ACE_frag_huge", "ACE_frag_huge_HD", "ACE_frag_huge"};
@ -68,13 +68,13 @@ class CfgAmmo {
GVAR(gurney_c) = 2320;
GVAR(gurney_k) = 1/2;
};
class G_40mm_HE: GrenadeBase {
GVAR(skip) = 0;
GVAR(force) = 1;
};
class ACE_G_40mm_HEDP: G_40mm_HE {
GVAR(classes)[] = {"ACE_frag_tiny_HD"};
GVAR(metal) = 200;
@ -96,19 +96,47 @@ class CfgAmmo {
GVAR(skip) = 0;
GVAR(force) = 1;
};
// curator ammo entries
class Sh_82mm_AMOS;
class ModuleOrdnanceMortar_F_Ammo: Sh_82mm_AMOS {
GVAR(classes)[] = {"ACE_frag_medium", "ACE_frag_medium_HD"};
GVAR(metal) = 800;
GVAR(charge) = 4200;
GVAR(gurney_c) = 2320;
GVAR(gurney_k) = 1/2;
};
class Sh_155mm_AMOS;
class ModuleOrdnanceHowitzer_F_ammo: Sh_155mm_AMOS {
GVAR(classes)[] = {"ACE_frag_large", "ACE_frag_large", "ACE_frag_large_HD", "ACE_frag_large", "ACE_frag_huge", "ACE_frag_huge_HD", "ACE_frag_huge"};
GVAR(metal) = 1950;
GVAR(charge) = 15800;
GVAR(gurney_c) = 2320;
GVAR(gurney_k) = 1/2;
};
//class R_230mm_HE;
//class ModuleOrdnanceRocket_F_ammo: R_230mm_HE {
//};
//class R_230mm_fly;
//class ModuleOrdnanceRocket_F_subammo: R_230mm_fly {
//};
// end of curator ammo entries
//class R_SMAW_HEDP;
//class R_MEEWS_HEDP : R_SMAW_HEDP {
// GVAR(force) = 1;
// GVAR(multiplier) = 1.2;
//};
//class MissileBase;
//class M_Hellfire_AT: MissileBase {
// GVAR(force) = 1;
// GVAR(multiplier) = 1.75;
//};
/*
class B_762x51_Ball;
class ACE_frag_base: B_762x51_Ball { ////TODO: B_762x45_Ball no longer exists, is this a valid replacement?
@ -263,51 +291,51 @@ class CfgAmmo {
bulletFly8[] = {"A3\sounds_f\weapons\hits\bullet_by_8.wav",1,1,35};
bulletFly[] = {"bulletFly1",0.166,"bulletFly2",0.166,"bulletFly3",0.166,"bulletFly4",0.166,"bulletFly5",0.166,"bulletFly6",0.167,"bulletFly7",0.166,"bulletFly8",0.167};
supersonicCrackNear[] = {"A3\sounds_f\weapons\hits\sscrack1.wav",1,1,35};
supersonicCrackFar[] = {"A3\sounds_f\weapons\hits\sscrack2.wav",1,1,135};
supersonicCrackFar[] = {"A3\sounds_f\weapons\hits\sscrack2.wav",1,1,135};
};
*/
class B_65x39_Caseless;
class ACE_frag_base: B_65x39_Caseless {
timeToLive = 12;
typicalSpeed = 1500;
deflecting = 65;
};
class ACE_frag_tiny: ACE_frag_base {
hit = 6;
airFriction = BASE_DRAG;
caliber = 0.75;
};
class ACE_frag_tiny_HD: ACE_frag_base {
hit = 6;
airFriction = BASE_DRAG_HD;
caliber = 0.75;
};
class ACE_frag_small: ACE_frag_base {
hit = 12;
airFriction = BASE_DRAG*0.9;
};
class ACE_frag_small_HD: ACE_frag_base {
hit = 12;
airFriction = BASE_DRAG_HD*0.9;
};
class ACE_frag_medium: ACE_frag_base {
hit = 14;
airFriction = BASE_DRAG*0.75;
caliber = 1.2;
};
class ACE_frag_medium_HD: ACE_frag_base {
hit = 14;
airFriction = BASE_DRAG_HD*0.75;
caliber = 1.2;
};
class ACE_frag_large: ACE_frag_base {
hit = 28;
indirectHit = 2;
@ -315,19 +343,19 @@ class CfgAmmo {
airFriction = BASE_DRAG*0.65;
caliber = 2;
explosive = 0;
};
class ACE_frag_large_HD: ACE_frag_large {
hit = 28;
indirectHit = 2;
indirectHitRange = 0.25;
airFriction = BASE_DRAG_HD*0.65;
caliber = 2;
};
class ACE_frag_huge: ACE_frag_large {
hit = 40;
indirectHit = 4;
@ -335,7 +363,7 @@ class CfgAmmo {
airFriction = BASE_DRAG*0.5;
caliber = 2.8;
};
class ACE_frag_huge_HD: ACE_frag_large {
hit = 40;
indirectHit = 4;
@ -343,19 +371,19 @@ class CfgAmmo {
airFriction = BASE_DRAG_HD*0.5;
caliber = 2.8;
};
class ACE_frag_spall_small: ACE_frag_small {
timeToLive = 0.1;
};
class ACE_frag_spall_medium: ACE_frag_medium {
timeToLive = 0.15;
};
class ACE_frag_spall_large: ACE_frag_large {
timeToLive = 0.25;
};
class ACE_frag_spall_huge: ACE_frag_huge {
timeToLive = 0.3;
};

View File

@ -26,6 +26,9 @@ GVAR(tracesStarted) = false;
GVAR(traceID) = -1;
GVAR(autoTrace) = true;
// TODO setting
GVAR(enabled) = true;
// * Other Shit */
PREP(frag_trace);

View File

@ -3,11 +3,11 @@
#ifdef DEBUG_MODE_FULL
GVAR(traceFrags) = true;
#endif
// player sideChat "WAAAAAAAAAAAAAAAAAAAAA";
private ["_params", "_initialData", "_hpData", "_roundType", "_round", "_object", "_caliber", "_explosive",
"_idh", "_alive", "_exit", "_vm", "_velocity", "_unitDir", "_oldVelocity", "_curVelocity", "_diff", "_polar",
"_pos", "_spallPos", "_i", "_pos1", "_pos2", "_blah", "_data", "_spallPolar", "_c", "_warn", "_m", "_k",
"_gC", "_shellType", "_fragPower", "_spread", "_spallCount", "_elev", "_dir", "_vel", "_spallFragVect",
// ACE_player sideChat "WAAAAAAAAAAAAAAAAAAAAA";
private ["_params", "_initialData", "_hpData", "_roundType", "_round", "_object", "_caliber", "_explosive",
"_idh", "_alive", "_exit", "_vm", "_velocity", "_unitDir", "_oldVelocity", "_curVelocity", "_diff", "_polar",
"_pos", "_spallPos", "_i", "_pos1", "_pos2", "_blah", "_data", "_spallPolar", "_c", "_warn", "_m", "_k",
"_gC", "_shellType", "_fragPower", "_spread", "_spallCount", "_elev", "_dir", "_vel", "_spallFragVect",
"_fragment"];
@ -40,21 +40,21 @@ if(!alive _round && (_initialData select 6) == 1) then {
};
if(_alive || {_caliber >= 2.5} || {(_explosive > 0 && {_idh >= 1})}) then {
// player sideChat format["BBBB"];
// ACE_player sideChat format["BBBB"];
_exit = false;
_vm = 1;
_velocity = _initialData select 5;
_oldVelocity = _velocity call BIS_fnc_magnitude;
_curVelocity = (velocity _round) call BIS_fnc_magnitude;
if(alive _round) then {
_diff = _velocity vectorDiff (velocity _round);
_polar = _diff call CBA_fnc_vect2polar;
// player sideChat format["polar: %1", _polar];
// ACE_player sideChat format["polar: %1", _polar];
if((abs(_polar select 1) > 45 || abs(_polar select 2) > 45)) then {
if(_caliber < 2.5) then {
// player sideChat format["exit!"];
// ACE_player sideChat format["exit!"];
_exit = true;
} else {
_vm = 1-(_curVelocity/_oldVelocity);
@ -78,20 +78,20 @@ if(_alive || {_caliber >= 2.5} || {(_explosive > 0 && {_idh >= 1})}) then {
];
// _blah = [_object, "FIRE"] intersect [_object worldToModel (ASLtoATL _pos1), _object worldToModel (ASLtoATL _pos2)];
// diag_log text format["b: %1", _blah];
// _data = [nil, nil, nil, 1, [[ASLtoATL _pos1, 1], [ASLtoATL _pos2, 1]]];
// NOU_TRACES set[(count NOU_TRACES), _data];
if(!lineIntersects [_pos1, _pos2]) exitWith {
// player sideChat format["FOUND!"];
// ACE_player sideChat format["FOUND!"];
_spallPos = _pos2;
};
};
if(!isNil "_spallPos") then {
_spallPolar = _velocity call CBA_fnc_vect2polar;
if(_explosive > 0) then {
// player sideChat format["EXPLOSIVE!"];
// ACE_player sideChat format["EXPLOSIVE!"];
_warn = false;
_c = getNumber(configFile >> "CfgAmmo" >> _roundType >> "ACE_frag_CHARGE");
if(_c == 0) then { _c = 1; _warn = true;};
@ -109,7 +109,7 @@ if(_alive || {_caliber >= 2.5} || {(_explosive > 0 && {_idh >= 1})}) then {
_fragPower = (((_m/_c)+_k)^-(1/2))*_gC;
_spallPolar set[0, _fragPower*0.66];
};
_fragTypes = [
"ACE_frag_spall_small", "ACE_frag_spall_small", "ACE_frag_spall_small",
"ACE_frag_spall_small","ACE_frag_spall_medium","ACE_frag_spall_medium","ACE_frag_spall_medium",
@ -117,7 +117,7 @@ if(_alive || {_caliber >= 2.5} || {(_explosive > 0 && {_idh >= 1})}) then {
"ACE_frag_spall_huge"
];
// diag_log text format["SPALL POWER: %1", _spallPolar select 0];
_spread = 15+(random 25);
_spallCount = 5+(random 10);
@ -130,14 +130,14 @@ if(_alive || {_caliber >= 2.5} || {(_explosive > 0 && {_idh >= 1})}) then {
_dir = _dir % 360;
_vel = (_spallPolar select 0)*0.33*_vm;
_vel = (_vel-(_vel*0.25))+(random (_vel*0.5));
_spallFragVect = [_vel, _dir, _elev] call CBA_fnc_polar2vect;
_fragType = round (random ((count _fragTypes)-1));
_fragment = (_fragTypes select _fragType) createVehicleLocal [0,0,10000];
_fragment setPosASL _spallPos;
_fragment setVelocity _spallFragVect;
if(GVAR(traceFrags)) then {
[player, _fragment, [1,0.5,0,1]] call FUNC(addTrack);
[ACE_player, _fragment, [1,0.5,0,1]] call FUNC(addTrack);
};
};
_spread = 5+(random 5);
@ -151,14 +151,14 @@ if(_alive || {_caliber >= 2.5} || {(_explosive > 0 && {_idh >= 1})}) then {
_dir = _dir % 360;
_vel = (_spallPolar select 0)*0.55*_vm;
_vel = (_vel-(_vel*0.25))+(random (_vel*0.5));
_spallFragVect = [_vel, _dir, _elev] call CBA_fnc_polar2vect;
_fragType = round (random ((count _fragTypes)-1));
_fragment = (_fragTypes select _fragType) createVehicleLocal [0,0,10000];
_fragment setPosASL _spallPos;
_fragment setVelocity _spallFragVect;
if(GVAR(traceFrags)) then {
[player, _fragment, [1,0,0,1]] call FUNC(addTrack);
[ACE_player, _fragment, [1,0,0,1]] call FUNC(addTrack);
};
};
};

View File

@ -1,6 +1,6 @@
#include "script_component.hpp"
private ["_gun", "_type", "_round", "_doFragTrack", "_doSpall"];
if !(isNil QGVAR(enabled) && {GVAR(enabled)}) exitWith {};
if !(!isNil QGVAR(enabled) && {GVAR(enabled)}) exitWith {};
_gun = _this select 0;
_type = _this select 4;
@ -11,10 +11,10 @@ if(_round in GVAR(blackList)) exitWith {
};
_doFragTrack = false;
if(_gun == player) then {
if(_gun == ACE_player) then {
_doFragTrack = true;
} else {
if((gunner _gun) == player) then {
if((gunner _gun) == ACE_player) then {
_doFragTrack = true;
} else {
if(local _gun && {!(isPlayer (gunner _gun))} && {!(isPlayer _gun)}) then {
@ -28,14 +28,18 @@ if(_doSpall) then {
GVAR(spallHPData) = [];
};
if(GVAR(spallIsTrackingCount) > 5) then {
// player sideChat "LIMT!";
// ACE_player sideChat "LIMT!";
_doSpall = false;
} else {
GVAR(spallIsTrackingCount) = GVAR(spallIsTrackingCount) + 1;
};
};
// player sideChat format["c: %1", GVAR(spallIsTrackingCount)];
[player, _round, [1,0,0,1]] call nou_fnc_addTrack;
// ACE_player sideChat format["c: %1", GVAR(spallIsTrackingCount)];
#ifdef DEBUG_MODE_FULL
[ACE_player, _round, [1,0,0,1]] call FUNC(addTrack);
#endif
if(_doFragTrack && alive _round) then {
GVAR(trackedObjects) pushBack _round;
_spallTrack = [];
@ -44,5 +48,5 @@ if(_doFragTrack && alive _round) then {
if(_doSpall) then {
[_round, 2, _spallTrack, _spallTrackID] call FUNC(spallTrack);
};
// player sideChat "WTF2";
// ACE_player sideChat "WTF2";
};

View File

@ -9,14 +9,14 @@
if(!isServer) exitWith { };
// _startTime = diag_tickTime;
private ["_round", "_lastPos", "_lastVel", "_shellType", "_gun", "_fragTypes", "_warn", "_atlPos", "_isArmed",
"_fuseDist", "_indirectHitRange", "_fragRange", "_c", "_m", "_k", "_gC", "_fragPower", "_fragPowerRandom",
"_manObjects", "_objects", "_crew", "_fragCount", "_fragArcs", "_doRandom", "_target", "_boundingBox",
"_targetPos", "_distance", "_add", "_bbX", "_bbY", "_bbZ", "_cubic", "_targetVel", "_baseVec", "_dir",
"_currentCount", "_count", "_vecVar", "_i", "_vec", "_fp", "_vel", "_fragType", "_fragObj", "_randomCount",
private ["_round", "_lastPos", "_lastVel", "_shellType", "_gun", "_fragTypes", "_warn", "_atlPos", "_isArmed",
"_fuseDist", "_indirectHitRange", "_fragRange", "_c", "_m", "_k", "_gC", "_fragPower", "_fragPowerRandom",
"_manObjects", "_objects", "_crew", "_fragCount", "_fragArcs", "_doRandom", "_target", "_boundingBox",
"_targetPos", "_distance", "_add", "_bbX", "_bbY", "_bbZ", "_cubic", "_targetVel", "_baseVec", "_dir",
"_currentCount", "_count", "_vecVar", "_i", "_vec", "_fp", "_vel", "_fragType", "_fragObj", "_randomCount",
"_sectorSize", "_sectorOffset", "_randomDir"];
_round = _this select 0;
_lastPos = _this select 1;
_lastVel = _this select 2;
@ -108,8 +108,8 @@ _fragArcs = [];
_fragArcs set[360, 0];
#ifdef DEBUG_MODE_FULL
player sideChat format["_fragRange: %1", _fragRange];
player sideChat format["_objects: %1", _objects];
ACE_player sideChat format["_fragRange: %1", _fragRange];
ACE_player sideChat format["_objects: %1", _objects];
#endif
_doRandom = false;
if(_isArmed && (count _objects) > 0) then {
@ -127,16 +127,16 @@ if(_isArmed && (count _objects) > 0) then {
_cubic = _bbX*_bbY*_bbZ;
if(_cubic > 1) then {
_doRandom = true;
_targetVel = (velocity _target);
_targetPos set[0, (_targetPos select 0)+((_targetVel select 0)*(_distance/_fragPower))];
_targetPos set[1, (_targetPos select 1)+((_targetVel select 1)*(_distance/_fragPower))];
_targetPos set[2, (_targetPos select 2)+_add];
_baseVec = _lastPos vectorFromTo _targetPos;
_dir = floor(_baseVec call CBA_fnc_vectDir);
_currentCount = _fragArcs select _dir;
if(isNil "_currentCount") then {
@ -153,18 +153,18 @@ if(_isArmed && (count _objects) > 0) then {
};
for "_i" from 1 to _count do {
_vec = +_baseVec;
_vec set[0, (_vec select 0)-(_vecVar/2)+(random _vecVar)];
_vec set[1, (_vec select 1)-(_vecVar/2)+(random _vecVar)];
_vec set[2, (_vec select 2)-(_vecVar/2)+(random _vecVar)];
_fp = (_fragPower-(random (_fragPowerRandom)));
_vel = [
(_vec select 0)*_fp,
(_vec select 1)*_fp,
(_vec select 2)*_fp
];
_fragType = round (random ((count _fragTypes)-1));
_fragObj = (_fragTypes select _fragType) createVehicleLocal [0,0,10000];
// diag_log text format["fp: %1 %2", _fp, typeOf _fragObj];
@ -176,7 +176,7 @@ if(_isArmed && (count _objects) > 0) then {
GVAR(traceFrags) = true;
#endif
if(GVAR(traceFrags)) then {
[player, _fragObj, [1,0,0,1]] call FUNC(addTrack);
[ACE_player, _fragObj, [1,0,0,1]] call FUNC(addTrack);
};
_fragCount = _fragCount + 1;
_currentCount = _currentCount + 1;
@ -198,15 +198,15 @@ if(_isArmed && (count _objects) > 0) then {
_sectorOffset = 360 * (_i - 1) / (_randomCount max 1);
_randomDir = random(_sectorSize);
_vec = [cos(_sectorOffset + _randomDir), sin(_sectorOffset + _randomDir), sin(30 - (random 45))];
_fp = (_fragPower-(random (_fragPowerRandom)));
_vel = [
(_vec select 0)*_fp,
(_vec select 1)*_fp,
(_vec select 2)*_fp
];
_fragType = round (random ((count _fragTypes)-1));
_fragObj = (_fragTypes select _fragType) createVehicleLocal [0,0,10000];
_fragObj setPosASL _lastPos;
@ -217,14 +217,14 @@ if(_isArmed && (count _objects) > 0) then {
GVAR(traceFrags) = true;
#endif
if(GVAR(traceFrags)) then {
[player, _fragObj, [1,0.5,0,1]] call FUNC(addTrack);
[ACE_player, _fragObj, [1,0.5,0,1]] call FUNC(addTrack);
};
_fragCount = _fragCount + 1;
};
};
};
// #ifdef DEBUG_MODE_FULL
// player sideChat format["total frags: %1", GVAR(TOTALFRAGS)];
// player sideChat format["tracks: %1", (count GVAR(trackedObjects))];
// ACE_player sideChat format["total frags: %1", GVAR(TOTALFRAGS)];
// ACE_player sideChat format["tracks: %1", (count GVAR(trackedObjects))];
// #endif
// _endTime = diag_tickTime;

View File

@ -53,7 +53,9 @@ _recurseFnc = {
if (_condition == "") then {_condition = "true"};
// Add canInteract (including exceptions) and canInteractWith to condition
_condition = _condition + format [QUOTE( && {[ARR_3(ACE_player, _target, %1)] call EFUNC(common,canInteractWith)} ), getArray (_entryCfg >> "exceptions")];
if ((configName _entryCfg) != "ACE_MainActions") then {
_condition = _condition + format [QUOTE( && {[ARR_3(ACE_player, _target, %1)] call EFUNC(common,canInteractWith)} ), getArray (_entryCfg >> "exceptions")];
};
_insertChildren = compile (getText (_entryCfg >> "insertChildren"));
_modifierFunction = compile (getText (_entryCfg >> "modifierFunction"));

View File

@ -5,11 +5,13 @@
<English>Litter Simulation Detail</English>
<Polish>Detale zużytych medykamentów</Polish>
<Spanish>Detalle de simulación de basura</Spanish>
<Russian>Количество мусора от медицины</Russian>
</Key>
<Key ID="STR_ACE_Medical_litterSimulationDetail_Desc">
<English>Litter simulation detail level sets the number of litter items which will be locally spawned in the client. Excessive amounts in local areas could cause FPS lag, so this is a client only setting.</English>
<Polish>Opcja ta ustawia liczbę zużytych medykamentów, jakie pojawiają się lokalnie wokół gracza. Ich zbyt duża ilość może spowodować spadki FPS, dlatego jest to ustawienie tylko po stronie klienta.</Polish>
<Spanish>Detalle simulación de basura establece el número de artículos de basura que se generan a nivel local en el cliente. Las cantidades excesivas en áreas locales podrían causar caída de rendimiento, así que esto es un ajuste de cliente únicamente.</Spanish>
<Russian>Устанавливает количество мусора, который появляется после использования мед. препаратов. Большое количество мусора может уменьшить производительность, поэтому данная настройка локальна для клиента.</Russian>
</Key>
<Key ID="STR_ACE_Medical_Inject_Atropine">
<English>Inject Atropine</English>
@ -1658,4 +1660,4 @@
<French>Aberration chromatique</French>
</Key>
</Package>
</Project>
</Project>

View File

@ -3,6 +3,8 @@
ADDON = false;
PREP(moduleInit);
PREP(bi_moduleProjectile);
GVAR(moduleInitCollection) = [];
ADDON = true;

View File

@ -23,6 +23,9 @@ class CfgVehicles {
init = QUOTE(_this call DFUNC(moduleInit));
};
};
class ModuleOrdnance_F: Module_F {
function = "ace_modules_fnc_bi_moduleProjectile";
};
};
#include "CfgEventHandlers.hpp"

View File

@ -0,0 +1,191 @@
/*
* Author: Bohemia Interactive
* Module function for spawning projectiles
* Used by Curator artillery modules etc
*
* Arguments:
* 0: The logic object <OBJECT>
*
* Return Value:
* nil
*
* Public: No
*/
_fnc_scriptNameParentTemp = if !(isnil '_fnc_scriptName') then {_fnc_scriptName} else {'BIS_fnc_moduleProjectile'};
private ['_fnc_scriptNameParent'];
_fnc_scriptNameParent = _fnc_scriptNameParentTemp;
_fnc_scriptNameParentTemp = nil;
private ['_fnc_scriptName'];
_fnc_scriptName = 'BIS_fnc_moduleProjectile';
scriptname _fnc_scriptName;
private ["_logic", "_units", "_activated"];
_logic = _this select 0;
_units = _this select 1;
_activated = _this select 2;
if ({local _x} count (objectcurators _logic) > 0) then {
//--- Reveal the circle to curators
_logic hideobject false;
_logic setpos position _logic;
};
if !(isserver) exitwith {};
if (_activated) then {
_ammo = _logic getvariable ["type",gettext (configfile >> "cfgvehicles" >> typeof _logic >> "ammo")];
if (_ammo != "") then {
_cfgAmmo = configfile >> "cfgammo" >> _ammo;
//if !(isclass _cfgAmmo) exitwith {["CfgAmmo class '%1' not found.",_ammo] call bis_fnc_error;};
_dirVar = _fnc_scriptname + typeof _logic;
_logic setdir (missionnamespace getvariable [_dirVar,direction _logic]); //--- Restore custom direction
_pos = getposatl _logic;
_posAmmo = +_pos;
_posAmmo set [2,0];
_dir = direction _logic;
_simulation = tolower gettext (configfile >> "cfgammo" >> _ammo >> "simulation");
_altitude = 0;
_velocity = [];
_attach = false;
_radio = "";
_delay = 60;
_sound = "";
_soundSourceClass = "";
_hint = [];
_shakeStrength = 0;
_shakeRadius = 0;
switch (_simulation) do {
case "shotshell": {
_altitude = 1000;
_velocity = [0,0,-100];
_radio = "SentGenIncoming";
_sounds = if (getnumber (_cfgAmmo >> "hit") < 200) then {["mortar1","mortar2"]} else {["shell1","shell2","shell3","shell4"]};
_sound = _sounds call bis_fnc_selectrandom;
_hint = ["Curator","PlaceOrdnance"];
_shakeStrength = 0.01;
_shakeRadius = 300;
};
case "shotsubmunitions": {
_posAmmo = [_posAmmo,500,_dir + 180] call bis_fnc_relpos;
_altitude = 1000 - ((getterrainheightasl _posAmmo) - (getterrainheightasl _pos));
_posAmmo set [2,_altitude];
_velocity = [sin _dir * 68,cos _dir * 68,-100];
_radio = "SentGenIncoming";
_hint = ["Curator","PlaceOrdnance"];
_shakeStrength = 0.02;
_shakeRadius = 500;
};
case "shotilluminating": {
_altitude = 66;
_velocity = [wind select 0,wind select 1,30];
_sound = "SN_Flare_Fired_4";
_soundSourceClass = "SoundFlareLoop_F";
};
case "shotnvgmarker";
case "shotsmokex": {
_altitude = 0;
_velocity = [0,0,0];
_attach = true;
};
default {["Ammo simulation '%1' is not supported",_simulation] call bis_fnc_error;};
};
_fnc_playRadio = {
if (_radio != "") then {
_entities = (getposatl _logic) nearentities ["All",100];
_sides = [];
{
if (isplayer _x) then {
_side = side group _x;
if (_side in [east,west,resistance,civilian]) then {
//--- Play radio (only if it wasn't played recently)
if (time > _x getvariable ["BIS_fnc_moduleProjectile_radio",-_delay]) then {
[[_side,_radio,"side"],"bis_fnc_sayMessage",_x] call bis_fnc_mp;
_x setvariable ["BIS_fnc_moduleProjectile_radio",time + _delay];
};
};
};
} foreach _entities;
};
};
if (count _hint > 0) then {
[[_hint,nil,nil,nil,nil,nil,nil,true],"bis_fnc_advHint",objectcurators _logic] call bis_fnc_mp;
};
if (count _velocity == 3) then {
_altitude = (_logic getvariable ["altitude",_altitude]) call bis_fnc_parsenumber;
_radio = _logic getvariable ["radio",_radio];
//--- Create projectile
_posAmmo set [2,_altitude];
_projectile = createvehicle [_ammo,_posAmmo,[],0,"none"];
_projectile setpos _posAmmo;
_projectile setvelocity _velocity;
if (_attach) then {_projectile attachto [_logic,[0,0,_altitude]];};
// This is our addition to this function
if (!isnil "ace_frag_fnc_addManualTrack") then {
[_projectile] call ace_frag_fnc_addManualTrack
};
//--- Play sound
if (_sound != "") then {[[_logic,_sound,"say3D"],"bis_fnc_sayMessage"] call bis_fnc_mp;};
//--- Create sound source
_soundSource = if (_soundSourceClass != "") then {createSoundSource [_soundSourceClass,_pos,[],0]} else {objnull};
//--- Play radio warning
[] call _fnc_playRadio;
//--- Update
if (_attach) then {
waituntil {
_soundSource setposatl getposatl _projectile;
sleep 1;
isnull _projectile || isnull _logic
};
} else {
waituntil {
_soundSource setposatl getposatl _projectile;
if (getposatl _logic distance _pos > 0 || direction _logic != _dir) then {
_posNew = getposasl _logic;
_dirDiff = direction _logic - _dir;
_posNew = [_posNew,[getposasl _projectile,_pos] call bis_fnc_distance2d,direction _logic + 180] call bis_fnc_relpos;
_posNew set [2,getposasl _projectile select 2];
_projectile setvelocity ([velocity _projectile,-_dirDiff] call bis_fnc_rotatevector2d);
_projectile setposasl _posNew;
_pos = getposatl _logic;
_dir = direction _logic;
missionnamespace setvariable [_dirVar,_dir];
};
sleep 0.1;
isnull _projectile || isnull _logic
};
};
deletevehicle _projectile;
deletevehicle _soundSource;
if (count objectcurators _logic > 0) then {
//--- Delete curator spawned logic
if (_shakeStrength > 0) then {
if (_simulation == "shotsubmunitions") then {sleep 0.5;};
[[_shakeStrength,0.7,[position _logic,_shakeRadius]],"bis_fnc_shakeCuratorCamera"] call bis_fnc_mp;
};
deletevehicle _logic;
} else {
//--- Repeat to achieve permanent effect
_repeat = _logic getvariable ["repeat",0] > 0;
if (_repeat) then {
[_logic,_units,_activated] call bis_fnc_moduleprojectile;
} else {
deletevehicle _logic;
};
};
} else {
deletevehicle _logic;
};
} else {
["Cannot create projectile, 'ammo' config attribute is missing in %1",typeof _logic] call bis_fnc_error;
};
};

View File

@ -0,0 +1,48 @@
<p align="center">
<img src="https://github.com/acemod/ACE3/blob/master/extras/assets/logo/black/ACE3-Logo.jpg" height="80" />
</p>
<p align="center">
<a href="https://github.com/acemod/ACE3/releases">
<img src="http://img.shields.io/badge/release-3.0-green.svg?style=flat" alt="ACE version">
</a>
<a href="#">
<img src="http://img.shields.io/badge/download-22_MB-blue.svg?style=flat" alt="ACE download">
</a>
<a href="https://github.com/acemod/ACE3/issues">
<img src="http://img.shields.io/github/issues/acemod/ACE3.svg?style=flat" alt="ACE issues">
</a>
<a href="https://github.com/acemod/ACE3/blob/master/LICENSE">
<img src="http://img.shields.io/badge/license-GPLv2-red.svg?style=flat" alt="ACE license">
</a>
</p>
<p align="center"><sup><strong>Benötigt eine Aktuelle Version von <a href="http://www.armaholic.com/page.php?id=18767">CBA A3</a> | <a href="#">BIF thread</a></strong></sup></p>
**ACE3** ist ein Gemeinschaftsprojekt der sich zusammengeschlossenen Moddinggruppen von **ACE2**, **AGM** und **CSE** mit dem Ziel den Realismus und die Spieltiefe von Arma 3 zu steigern.
Da die MOD vollkommen als **open-source** Projekt gestaltet ist, steht es jedem frei Änderungen vorzuschlagen, oder seine eigene, modifizierte Version zu erstellen, solange diese ebenfalls der Öffentlichkeit zugänglich ist und mit GNU General Public License übereinstimmt. (Weitere Informationen ist der Lizenzdatei in diesem Projekt entnehmbar)
Die Mod ist **modular gestaltet** — beinahe jede PBO kann entfernt werden, sodass jede Gemeinschaft ihre eigene Version der Mod unterhalten kann. Dies kann zum Beispiel einige Funktionalitäten ausschließen, da das Feature nicht gewünscht ist, oder es mit einer anderen MOD in Konflikt gerät etc. .Ebenfalls können viele Einstellungen vom Missionsersteller vorgenommen werden (u.a. am medizinischem System), sodass eine individuelle Erfahrung gewährleistet wird.
### Features
* Verbessertes medizinisches System
* Logistik System: U.a. Transport und Fahrzeugreparatur
* Sprengstoffsystem mit unterschiedlichen Zündern
* Gefangenensystem
* Reale Namen für Arma 3 Fahrzeuge und Waffen
* Realistisches, ballistisches Verhalten (Wind und Luftfeuchtigkeit)
* Simulation der Rückstrahlzone
* Ein Feuerleitsystem für gepanzerte Fahrzeuge und Hubschrauber
***und noch viel mehr...***
#### Anleitungen
Du hast ACE3 installiert, hast aber keine Ahnung was und wie alles funktioniert und wo sich was befindet? [Erste Schritte](https://github.com/acemod/ACE3/blob/master/documentation/user/getting-started.md).
#### Mitwirken
Wenn du bei der Entwicklung der MOD mithelfen möchtest, so kannst du dies tun, indem du nach Fehlern Ausschau hältst, oder neue Funktionen vorschlägst. Um etwas beizutragen, "Forke" einfach dieses Archiv (bzw. repository) und erstelle deine "Pull-Request", welche von anderen Entwicklern und Beiträgern überprüft wird. Bitte trage dich dabei in "AUTHORS.txt" mit deinem Nutzernamen und einer gütligen Email-Adresse ein.
Um einen Fehler oder ein Feature zu melden bzw. ein bereits Bestehendes zu ändern - nutze unseren [Issue Tracker](https://github.com/acemod/ACE3/issues).
#### Testen & MOD erstellen
Wenn du die neusten Entwicklungen erleben und uns dabei helfen möchtest bestehende Fehler zu entdecken, lade dir einfach die "Master Branch" herunter. Entweder nutzt du Git - wenn die Schritte bekannt sind - oder du lädst es dir direkt über [diesen Link] (https://github.com/acemod/ACE3/archive/master.zip) herunter.
Wie du deine eigene Entwicklungsumgebung und eine Testversion von ACE erstellst folge [dieser Anleitung](https://github.com/acemod/ACE3/blob/master/documentation/development/setting-up-the-development-environment.md).

View File

@ -46,17 +46,20 @@ ace_gforcecoef
ace_protection
ace_scopeadjust_horizontal
ace_scopeadjust_vertical
ace_scopeadjust_increment
ace_isusedlauncher
ace_attachable
ace_range
ace_detonator
ace_barrelTwist
ace_twistDirection
ace_barrelLength
```
### CfgAmmo
```c++
ace_bulletmass
ace_recoil_shakemultiplier
ace_frag_skip
ace_frag_force
@ -68,6 +71,17 @@ ace_frag_gurney_k
ace_explodeondefuse
ace_explosive
ace_fcs_airburst
ace_caliber
ace_bulletlength
ace_bulletmass
ace_transonicstabilitycoef
ace_ammotempmuzzlevelocityshifts
ace_ballisticcoefficients
ace_velocityboundaries
ace_standardatmosphere
ace_dragmodel
ace_muzzlevelocities
ace_barrellengths
```

View File

@ -1,20 +1,90 @@
---
layout: wiki
title: Getting Started
title: Getting started
group: user
order: 0
parent: wiki
---
<div class="panel callout">
<h5>Note:</h5>
<p>This page is currently under construction.</p>
</div>
**This page will get updated soon.**
Downloaded ACE3 and have no idea where to start? This page serves as a document to help new players get started with things like the medical system, or how to adjust your scope.
### Table of contents
1. [Vector 21](#vector-21)
## Table of Contents
### Vector 21
*Part of: ace_vector*
1. [xx](#xx)
2. [yy](#yy)
3. [zz](#zz)
ACE3 adds a realistic depiction of the Vector 21 rangefinder to the game. Unlike other rangefinders, it doesn't just magically show you the range to your target, but in exchange allows you to do alot of things with it that the other choices in Arma do not offer. The Vector's functions include, but are not limited to:
- Distance to a target
- Azimuth to a target
- Horizontal and vertical distance to a target
- Distance between 2 targets
- Angle between 2 targets
- Switching between feet and meters
- Switching between degrees and mils
...
## What ACE3 has to offer
The Vector is controlled with 2 keys: the azimuth key and the range key; <kbd>Tab</kbd> and <kbd>R</kbd> by default. First you bring it up like every other binocular in the game and then, while looking through it you can access all the different functions.
The Vector 21 rangefinder has the following usage modes:
1. Slope distance
2. Azimuth
3. Slope distance & Azimuth
4. Horizontal distance and height difference
5. Azimuth & Inclination
6. Distance between two points
7. Horizontal & vertical distance between two points
8. Horizontal distance & azimuth between two points
9. Fall of shot
#### 1. Slope distance
<img src="{{ site.baseurl }}/img/wiki/user/vector1.png" alt="Measuring Slope distance" />
Press and hold the "Distance" key until the red pointing circle appears. Sight the circle on the object and release the key.
#### 2. Azimuth
<img src="{{ site.baseurl }}/img/wiki/user/vector2.png" alt="Measuring Azimuth" />
Press and hold the "Azimuth" key until the red pointing circle appears. Sight the circle on the object and release the key.
#### 3. Slope distance and Azimuth
<img src="{{ site.baseurl }}/img/wiki/user/vector3.png" alt="Measuring Slope distance and Azimuth" />
Press and hold both the "Distance" and "Azimuth" key until the red pointing circle appears. Sight the circle on the object and release both keys.
#### 4. Horizontal distance and height difference
<img src="{{ site.baseurl }}/img/wiki/user/vector4.png" alt="Measuring Horizontal distance and height difference"/>
Tap the "Distance" key once then press and hold it until the red pointing circle appears. Sight the circle on the object and release the key.
#### 5. Azimuth and Inclination
<img src="{{ site.baseurl }}/img/wiki/user/vector5.png" alt="Measuring Azimuth and Inclination"/>
Tap the "Azimuth" key once then press and hold it until the red pointing circle appears. Sight the circle on the object and release the key.
#### 6. Distance between two points
<img src="{{ site.baseurl }}/img/wiki/user/vector6.png" alt="Measuring Distance between two points"/>
Press and hold the "Distance" key until the red pointing circle appears. Sight the circle on the first object and tap the "Azimuth" key while further holding the "Distance" key. The first measurement is confirmed ("1-P" = first point). Sight the second object and release the "Distance" key.
#### 7. Horizontal and vertical distance between two points
<img src="{{ site.baseurl }}/img/wiki/user/vector7.png" alt="Measuring Horizontal and vertical distance between two points"/>
Tap the "Distance" key once then press and hold it until the red pointing circle appears. Sight the circle on the object and tap the "Azimuth" key once. The first measurement is confirmed ("1-P" = first point). Sight the second object and release the "Distance" key.
#### 8. Horizontal distance and azimuth between two points
<img src="{{ site.baseurl }}/img/wiki/user/vector8.png" alt="Measuring Horizontal distance and azimuth between two points"/>
Press and hold the "Azimuth" key until the red pointing circle appears. Sight the circle on the first object and tap the "Distance" key while further holding the "Azimuth" key. The first measurement is confirmed ("1-P" = first point). Sight the second object and release the "Azimuth" key.
#### 9. Fall of shot
<img src="{{ site.baseurl }}/img/wiki/user/vector9.png" alt="Measuring Fall of shot"/>
Tap the "Azimuth" key once then press and hold it until the red pointing circle appears. Sight the circle on the object and tap the "Distance" key while further holding the "Azimuth" key. The first measurement is confirmed ("1-P" = first point). Sight the Fall of shot and release the "Azimuth" key. The left digits display the left (`L`)/right (`r`) correction value in meter and the right digits display the longer (`A` = add)/shorter (`d` = drop) correction value in meter. If the "Distance" key is tapped the height correction values will be displayed (`UP` and `dn`).

View File

@ -6,19 +6,17 @@ order: 11
parent: wiki
---
### Before requesting
### Background
ACE2, AGM and CSE had a lot of features implemented or planned. All of them are or have been evaluated for inclusion in ACE3 itself, and we'd like to port the majority of them eventually. However, due to time constraints, we have managed to finish only a fraction of the job so far.
ACE 2, AGM and CSE had a lot of features implemented or planned. All of them are or have been evaluated for inclusion in ACE3 itself, and we'd like to port the majority of them eventually. However, due to time constraints, we have only managed to do a fraction of the job so far.
There's really no point on making feature requests for anything included or planned for inclusion in ACE2, AGM or CSE. The majority of those things are been considered for porting or rewritting already.
Please refrain from making requests for any planned or existing features from either ACE2, AGM or CSE. Most of them are already being or have been considered for porting or a rewrite.
<div class="panel callout">
<h5>Please note:</h5>
<p>Due to the pace at which development is taking place, we are establishing a feature request embargo during the first week weeks prior and posterior to the first release. Feel free to add feature requests as described below, but don't expect them to be evaluated or discussed yet. Any dev activity on the feature request thread is highly unlikely during that period.</p>
<h5>Note:</h5>
<p>Due to our current work load, in the period of weeks prior and posterior to the first release, new feature requests are under embargo. Feel free to submit yours now, but don't expect them to be considered just yet. Any treatment or attention by developers towards the feature request thread is highly unlikely during this time.</p>
</div>
### Requesting a feature
In order to avoid duplicates and keep the issue tracker organized, we have created a common issue for <a href="{{ site.githubUrl }}/issues/414/" target="_blank">ACE 3 Feature requests</a>. Any and all relevant requests should be submitted there, where they will also get discussed and evaluated. Before adding a new one, make sure to check the previous entries from the thread and do a quick search for similar suggestions; please don't reiterate requests for features that had already been accepted for inclusion, or those which were disregarded earlier.
In order not to spam the issue tracker with duplicated requests, we have have created a single <a href="{{ site.githubUrl }}/issues/414/" target="_blank">Issue for feature request</a>. Any and all requests should be done there, where they will get discussed and evaluated. Before posting a new one, please make sure to check the previous entries on the thread and make a quick search; please don't reiterate requests that had already been either accepted for inclusion or disregarded.
Accepted feature requests may be moved to a separate issue by moderators for further discussion.
Following their approval, feature requests may be moved by moderators to a separate issue for further discussion.

View File

@ -7,198 +7,198 @@ parent: wiki
---
<table>
<thead>
<tr>
<th>PBO</th>
<th>Command</th>
<th>Shortcut</th>
</tr>
</thead>
<tbody>
<tr>
<td>ACE_Interaction</td>
<td>Interaction Menu</td>
<td><kbd>Win_Left</kbd></td>
</tr>
<tr>
<td>ACE_Interaction</td>
<td>Interaction Menu (Self)</td>
<td><kbd>Ctrl</kbd> <kbd>Win_Left</kbd></td>
</tr>
<tr>
<td>ACE_Interaction</td>
<td>Open / Close Door</td>
<td><kbd>Ctrl</kbd> <kbd>Space</kbd></td>
</tr>
<tr>
<td>ACE_Interaction</td>
<td>Tap Shoulder</td>
<td><kbd>Ctrl</kbd> <kbd>T</kbd></td>
</tr>
<tr>
<td>ACE_Logistics</td>
<td>Modifier Key</td>
<td><kbd>Ctrl_Left</kbd></td>
</tr>
<tr>
<td>ACE_Goggles</td>
<td>Wipe Goggles</td>
<td><kbd>Ctrl</kbd> <kbd>Shift</kbd> <kbd>T</kbd></td>
</tr>
<tr>
<td>ACE_Grenades</td>
<td>Switch Grenade Mode</td>
<td><kbd>8</kbd></td>
</tr>
<tr>
<td>ACE_NameTags</td>
<td>Show Names</td>
<td><kbd>Ctrl_Left</kbd></td>
</tr>
<tr>
<td>ACE_NightVision</td>
<td>Increase NVG Brightness</td>
<td><kbd>Alt</kbd> <kbd>Page Up</kbd></td>
</tr>
<tr>
<td>ACE_NightVision</td>
<td>Decrease NVG Brightness</td>
<td><kbd>Alt</kbd> <kbd>Page Down</kbd></td>
</tr>
<tr>
<td>ACE_Overheating</td>
<td>Clear jam</td>
<td><kbd>Shift</kbd> <kbd>R</kbd></td>
</tr>
<tr>
<td>ACE_Parachute</td>
<td>Show Altimeter</td>
<td><kbd>O</kbd></td>
</tr>
<tr>
<td>ACE_Reload</td>
<td>Check Ammo</td>
<td><kbd>Ctrl</kbd> <kbd>R</kbd></td>
</tr>
<tr>
<td>ACE_SafeMode</td>
<td>Safe Mode</td>
<td><kbd>`</kbd>(en) | <kbd>^</kbd>(de)</td>
</tr>
<tr>
<td>ACE_Scopes</td>
<td>Adjust Elevation Up</td>
<td><kbd>Page Up</kbd></td>
</tr>
<tr>
<td>ACE_Scopes</td>
<td>Adjust Elevation Down</td>
<td><kbd>Page Down</kbd></td>
</tr>
<tr>
<td>ACE_Scopes</td>
<td>Adjust Windage Left</td>
<td><kbd>Ctrl</kbd> <kbd>Page Up</kbd></td>
</tr>
<tr>
<td>ACE_Scopes</td>
<td>Adjust Windage Right</td>
<td><kbd>Ctrl</kbd> <kbd>Page Down</kbd></td>
</tr>
<tr>
<td>ACE_Vector</td>
<td>Vector - Azimuth Key</td>
<td><kbd>Tab</kbd></td>
</tr>
<tr>
<td>ACE_Vector</td>
<td>Vector - Distance Key</td>
<td><kbd>R</kbd></td>
</tr>
<tr>
<td>ACE_Vehicles</td>
<td>Speed Limiter</td>
<td><kbd>Del</kbd></td>
</tr>
<tr>
<td>ACE_WeaponSelect</td>
<td>Select Pistol</td>
<td><kbd>1</kbd></td>
</tr>
<tr>
<td>ACE_WeaponSelect</td>
<td>Select Rifle</td>
<td><kbd>2</kbd></td>
</tr>
<tr>
<td>ACE_WeaponSelect</td>
<td>Select Grenade Launcher</td>
<td><kbd>3</kbd></td>
</tr>
<tr>
<td>ACE_WeaponSelect</td>
<td>Select Binoculars</td>
<td><kbd>5</kbd></td>
</tr>
<tr>
<td>ACE_WeaponSelect</td>
<td>Select Frag Grenade</td>
<td><kbd>6</kbd></td>
</tr>
<tr>
<td>ACE_WeaponSelect</td>
<td>Select Non-Frag Grenade</td>
<td><kbd>7</kbd></td>
</tr>
<tr>
<td>ACE_WeaponSelect</td>
<td>Holster Weapon</td>
<td><kbd>0</kbd></td>
</tr>
<tr>
<td>ACE_WeaponSelect</td>
<td>Engine on</td>
<td><kbd>2</kbd></td>
</tr>
<tr>
<td>ACE_WeaponSelect</td>
<td>Engine off</td>
<td><kbd>1</kbd></td>
</tr>
<tr>
<td>ACE_WeaponSelect</td>
<td>Select Main Gun</td>
<td><kbd>3</kbd></td>
</tr>
<tr>
<td>ACE_WeaponSelect</td>
<td>Select Machine Gun</td>
<td><kbd>4</kbd></td>
</tr>
<tr>
<td>ACE_WeaponSelect</td>
<td>Select Missiles</td>
<td><kbd>5</kbd></td>
</tr>
<tr>
<td>ACE_WeaponSelect</td>
<td>Fire Smoke Launcher</td>
<td><kbd>9</kbd></td>
</tr>
<tr>
<td>ACE_FireControlSsystem</td>
<td>Lase Target / Measure Distance</td>
<td><kbd>Tab</kbd></td>
</tr>
<tr>
<td>ACE_FireControlSsystem</td>
<td>Adjust FCS Range (Up)</td>
<td><kbd>Page Up</kbd></td>
</tr>
<tr>
<td>ACE_FireControlSsystem</td>
<td>Adjust FCS Range (Down)</td>
<td><kbd>Page Down</kbd></td>
</tr>
</tbody>
</table>
<thead>
<tr>
<th>Shortcut</th>
<th>Action</th>
<th>PBO</th>
</tr>
</thead>
<tbody>
<tr>
<td><kbd>&nbsp;Win</kbd></td>
<td>Interaction menu</td>
<td><code>ACE_Interaction</code></td>
</tr>
<tr>
<td><kbd>Ctrl</kbd>+<kbd>&nbsp;Win</kbd></td>
<td>Self-interaction menu</td>
<td><code>ACE_Interaction</code></td>
</tr>
<tr>
<td><kbd>Ctrl</kbd>+<kbd>Space</kbd></td>
<td>Open/close door</td>
<td><code>ACE_Interaction</code></td>
</tr>
<tr>
<td><kbd>Ctrl</kbd>+<kbd>T</kbd></td>
<td>Tap on the shoulder</td>
<td><code>ACE_Interaction</code></td>
</tr>
<tr>
<td><kbd>Ctrl</kbd></td>
<td>Modifier key</td>
<td><code>ACE_Logistics</code></td>
</tr>
<tr>
<td><kbd>Ctrl</kbd>+<kbd>&nbsp;Shift</kbd>+<kbd>T</kbd></td>
<td>Wipe off goggles</td>
<td><code>ACE_Goggles</code></td>
</tr>
<tr>
<td><kbd>8</kbd></td>
<td>Switch grenade mode</td>
<td><code>ACE_Grenades</code></td>
</tr>
<tr>
<td><kbd>Ctrl</kbd></td>
<td>Show names</td>
<td><code>ACE_NameTags</code></td>
</tr>
<tr>
<td><kbd>Alt</kbd>+<kbd>Page&nbsp;Up</kbd></td>
<td>NVG: Increase brightness</td>
<td><code>ACE_NightVision</code></td>
</tr>
<tr>
<td><kbd>Alt</kbd>+<kbd>Page&nbsp;Down</kbd></td>
<td>NVG: Decrease brightness</td>
<td><code>ACE_NightVision</code></td>
</tr>
<tr>
<td><kbd>&nbsp;Shift</kbd>+<kbd>R</kbd></td>
<td>Clear firearm malfunction</td>
<td><code>ACE_Overheating</code></td>
</tr>
<tr>
<td><kbd>O</kbd></td>
<td>Altimeter</td>
<td><code>ACE_Parachute</code></td>
</tr>
<tr>
<td><kbd>Ctrl</kbd>+<kbd>R</kbd></td>
<td>Check ammunition</td>
<td><code>ACE_Reload</code></td>
</tr>
<tr>
<td><kbd>`</kbd></td>
<td>Safety toggle</td>
<td><code>ACE_SafeMode</code></td>
</tr>
<tr>
<td><kbd>Page&nbsp;Up</kbd></td>
<td>Scope: Elevation up</td>
<td><code>ACE_Scopes</code></td>
</tr>
<tr>
<td><kbd>Page&nbsp;Down</kbd></td>
<td>Scope: Elevation down</td>
<td><code>ACE_Scopes</code></td>
</tr>
<tr>
<td><kbd>Ctrl</kbd>+<kbd>Page&nbsp;Up</kbd></td>
<td>Scope: Windage left</td>
<td><code>ACE_Scopes</code></td>
</tr>
<tr>
<td><kbd>Ctrl</kbd>+<kbd>Page&nbsp;Down</kbd></td>
<td>Scope: Windage right</td>
<td><code>ACE_Scopes</code></td>
</tr>
<tr>
<td><kbd>Tab&nbsp;</kbd></td>
<td>Vector: Azimuth key</td>
<td><code>ACE_Vector</code></td>
</tr>
<tr>
<td><kbd>R</kbd></td>
<td>Vector: Distance key</td>
<td><code>ACE_Vector</code></td>
</tr>
<tr>
<td><kbd>Del</kbd></td>
<td>Speed limiter</td>
<td><code>ACE_Vehicles</code></td>
</tr>
<tr>
<td><kbd>1</kbd></td>
<td>Pistol</td>
<td><code>ACE_WeaponSelect</code></td>
</tr>
<tr>
<td><kbd>2</kbd></td>
<td>Rifle</td>
<td><code>ACE_WeaponSelect</code></td>
</tr>
<tr>
<td><kbd>3</kbd></td>
<td>Grenade launcher</td>
<td><code>ACE_WeaponSelect</code></td>
</tr>
<tr>
<td><kbd>5</kbd></td>
<td>Binoculars</td>
<td><code>ACE_WeaponSelect</code></td>
</tr>
<tr>
<td><kbd>6</kbd></td>
<td>Frag grenade</td>
<td><code>ACE_WeaponSelect</code></td>
</tr>
<tr>
<td><kbd>7</kbd></td>
<td>Non-frag grenade</td>
<td><code>ACE_WeaponSelect</code></td>
</tr>
<tr>
<td><kbd>0</kbd></td>
<td>Holster weapon</td>
<td><code>ACE_WeaponSelect</code></td>
</tr>
<tr>
<td><kbd>2</kbd></td>
<td>Engine on</td>
<td><code>ACE_WeaponSelect</code></td>
</tr>
<tr>
<td><kbd>1</kbd></td>
<td>Engine off</td>
<td><code>ACE_WeaponSelect</code></td>
</tr>
<tr>
<td><kbd>3</kbd></td>
<td>Primary weapon</td>
<td><code>ACE_WeaponSelect</code></td>
</tr>
<tr>
<td><kbd>4</kbd></td>
<td>Machine gun</td>
<td><code>ACE_WeaponSelect</code></td>
</tr>
<tr>
<td><kbd>5</kbd></td>
<td>Missiles</td>
<td><code>ACE_WeaponSelect</code></td>
</tr>
<tr>
<td><kbd>9</kbd></td>
<td>Fire smoke launcher</td>
<td><code>ACE_WeaponSelect</code></td>
</tr>
<tr>
<td><kbd>Tab&nbsp;</kbd></td>
<td>FCS: Lase target (measure distance)</td>
<td><code>ACE_FireControlSsystem</code></td>
</tr>
<tr>
<td><kbd>Page&nbsp;Up</kbd></td>
<td>FCS: Range up</td>
<td><code>ACE_FireControlSsystem</code></td>
</tr>
<tr>
<td><kbd>Page&nbsp;Down</kbd></td>
<td>FCS: Range down</td>
<td><code>ACE_FireControlSsystem</code></td>
</tr>
</tbody>
</table>