Merge branch 'medical-rewrite' into medical-rewrite-effects

This commit is contained in:
PabstMirror 2017-03-02 18:01:40 -06:00
commit 2e47bad280
54 changed files with 507 additions and 357 deletions

View File

@ -3,8 +3,10 @@
**ACE3 Version:** `3.x.x` (stable / dev + commit hash)
**Mods:**
- `@CBA_A3`
- `@ace`
```
- CBA_A3
- ace
```
**Description:**
- Add a detailed description of the error. This makes it easier for us to fix the issue.

View File

@ -24,6 +24,7 @@ PREP(cycle_target_speed_direction);
PREP(delete_gun);
PREP(evaluate_option_menu_input);
PREP(init);
PREP(initGunList);
PREP(insert_c1_ballistic_coefficient_data);
PREP(insert_muzzle_velocity_data);
PREP(parse_input);

View File

@ -2,62 +2,7 @@
#include "initKeybinds.sqf"
if ((profileNamespace getVariable ["ACE_ATragMX_profileNamespaceVersion", 0]) == ATRAGMX_PROFILE_NAMESPACE_VERSION && count (profileNamespace getVariable ["ACE_ATragMX_gunList", []]) > 0) then {
GVAR(gunList) = profileNamespace getVariable "ACE_ATragMX_gunList";
} else {
// Profile Name, Muzzle Velocity, Zero Range, Scope Base Angle, AirFriction, Bore Height, Scope Unit, Scope Click Unit, Scope Click Number, Maximum Elevation, Dialed Elevation, Dialed Windage, Mass, Bullet Diameter, Rifle Twist, BC, Drag Model, Atmosphere Model, Muzzle Velocity vs. Temperature Interpolation, C1 Ballistic Coefficient vs. Distance Interpolation, Persistent
GVAR(gunList) = [["12.7x108mm" , 812, 100, 0.0666557, -0.00063800, 3.81, 0, 2, 10, 120, 0, 0, 48.28, 12.7, 38.10, 0.630, 1, "ASM" , [[-15,793],[0,800],[10,807],[15,812],[25,826],[30,835],[35,846]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
["12.7x99mm AMAX" , 852, 100, 0.0615965, -0.00036645, 3.81, 0, 2, 10, 120, 0, 0, 48.60, 12.7, 38.10, 1.050, 1, "ASM" , [[-15,833],[0,840],[10,847],[15,852],[25,866],[30,875],[35,886]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
["12.7x99mm" , 892, 100, 0.0588284, -0.00057503, 3.81, 0, 2, 10, 120, 0, 0, 41.92, 12.7, 38.10, 0.670, 1, "ASM" , [[-15,873],[0,880],[10,887],[15,892],[25,906],[30,915],[35,926]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
["12.7x54mm" , 299, 100, 0.3406920, -0.00019268, 3.81, 0, 2, 10, 120, 0, 0, 48.60, 12.7, 24.13, 1.050, 1, "ASM" , [[-15,297],[0,298],[10,299],[15,299],[25,301],[30,302],[35,303]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
[".50 Beowulf" , 562, 100, 0.1262000, -0.00202645, 3.81, 0, 2, 10, 120, 0, 0, 21.71, 12.7, 50.80, 0.210, 1, "ASM" , [[-15,560],[0,561],[10,562],[15,562],[25,564],[30,565],[35,566]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
[".408 CheyTac 305gr", 1059, 100, 0.0482146, -0.00063655, 3.81, 0, 2, 10, 120, 0, 0, 19.76, 10.4, 33.02, 0.569, 1, "ICAO", [[-15,1040],[0,1047],[10,1054],[15,1059],[25,1073],[30,1082],[35,1093]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
[".408 CheyTac 419gr", 859, 100, 0.0611842, -0.00044958, 3.81, 0, 2, 10, 120, 0, 0, 27.15, 10.4, 33.02, 0.866, 1, "ICAO", [[-15,840],[0,847],[10,854],[15,859],[25,873],[30,882],[35,893]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
["9.3×64mm" , 862, 100, 0.0627652, -0.00108571, 3.81, 0, 2, 10, 120, 0, 0, 14.90, 9.30, 35.56, 0.368, 1, "ASM" , [[-15,843],[0,850],[10,857],[15,862],[25,876],[30,885],[35,896]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
[".338LM 250gr" , 872, 100, 0.0604821, -0.00059133, 3.81, 0, 2, 10, 120, 0, 0, 16.20, 8.58, 25.40, 0.645, 1, "ICAO", [[-15,853],[0,860],[10,867],[15,872],[25,886],[30,895],[35,906]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
[".338LM 300gr" , 792, 100, 0.0685883, -0.00052190, 3.81, 0, 2, 10, 120, 0, 0, 19.44, 8.58, 25.40, 0.759, 1, "ICAO", [[-15,773],[0,780],[10,787],[15,792],[25,806],[30,815],[35,826]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
[".338LM API526" , 872, 100, 0.0602535, -0.00069611, 3.81, 0, 2, 10, 120, 0, 0, 16.39, 8.58, 25.40, 0.760, 1, "ICAO", [[-15,853],[0,860],[10,867],[15,872],[25,886],[30,895],[35,906]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
[".300WM Mk248 Mod0" , 857, 100, 0.0621425, -0.00070530, 3.81, 0, 2, 10, 120, 0, 0, 12.31, 7.80, 25.40, 0.537, 1, "ICAO", [[-15,838],[0,845],[10,852],[15,857],[25,871],[30,880],[35,891]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
[".300WM Mk248 Mod1" , 839, 100, 0.0637038, -0.00061188, 3.81, 0, 2, 10, 120, 0, 0, 14.26, 7.80, 25.40, 0.619, 1, "ICAO", [[-15,820],[0,827],[10,834],[15,839],[25,853],[30,862],[35,873]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
[".300WM Berger OTM" , 792, 100, 0.0686968, -0.00053733, 3.81, 0, 2, 10, 120, 0, 0, 14.90, 7.80, 25.40, 0.715, 1, "ICAO", [[-15,773],[0,780],[10,787],[15,792],[25,806],[30,815],[35,826]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
["7.62x54mmR" , 812, 100, 0.0678441, -0.00100023, 3.81, 0, 2, 10, 120, 0, 0, 9.849, 7.92, 24.13, 0.400, 1, "ICAO", [[-15,793],[0,800],[10,807],[15,812],[25,826],[30,835],[35,846]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
["7.62x51mm M80" , 802, 100, 0.0690229, -0.00100957, 3.81, 0, 2, 10, 120, 0, 0, 9.461, 7.82, 25.40, 0.398, 1, "ICAO", [[-15,783],[0,790],[10,797],[15,802],[25,816],[30,825],[35,836]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
["7.62x51mm M118LR" , 757, 100, 0.0739989, -0.00082828, 3.81, 0, 2, 10, 120, 0, 0, 11.34, 7.82, 25.40, 0.482, 1, "ICAO", [[-15,738],[0,745],[10,752],[15,757],[25,771],[30,780],[35,791]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
["7.62x51mm Mk316" , 781, 100, 0.0709422, -0.00082029, 3.81, 0, 2, 10, 120, 0, 0, 11.34, 7.82, 25.40, 0.483, 1, "ICAO", [[-15,777],[0,778],[10,779],[15,781],[25,783],[30,785],[35,787]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
["7.62x51mm Mk319" , 900, 100, 0.0593025, -0.00102338, 3.81, 0, 2, 10, 120, 0, 0, 8.424, 7.82, 25.40, 0.377, 1, "ICAO", [[-15,898],[0,899],[10,900],[15,900],[25,902],[30,903],[35,904]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
["7.62x51mm M993" , 912, 100, 0.0585007, -0.00107148, 3.81, 0, 2, 10, 120, 0, 0, 8.230, 7.82, 25.40, 0.359, 1, "ICAO", [[-15,893],[0,900],[10,907],[15,912],[25,926],[30,935],[35,946]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
["7.62x51mm Subsonic", 314, 100, 0.3168140, -0.00049899, 3.81, 0, 2, 10, 120, 0, 0, 12.96, 7.82, 25.40, 0.502, 1, "ICAO", [[-15,312],[0,313],[10,314],[15,314],[25,316],[30,317],[35,318]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
["7.62x39mm" , 708, 100, 0.0846559, -0.00151621, 3.81, 0, 2, 10, 120, 0, 0, 7.970, 7.82, 25.40, 0.275, 1, "ICAO", [[-15,689],[0,696],[10,703],[15,708],[25,722],[30,731],[35,742]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
["6.5x39mm" , 766, 100, 0.0725986, -0.00075308, 3.81, 0, 2, 10, 120, 0, 0, 7.970, 6.71, 22.86, 0.524, 1, "ICAO", [[-15,747],[0,754],[10,761],[15,766],[25,780],[30,789],[35,800]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
["6.5x47mm Lapua" , 767, 100, 0.0722256, -0.00067037, 3.81, 0, 2, 10, 120, 0, 0, 9.007, 6.71, 22.86, 0.577, 1, "ICAO", [[-15,748],[0,755],[10,762],[15,767],[25,781],[30,790],[35,801]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
["6.5mm Creedmor" , 822, 100, 0.0655022, -0.00060887, 3.81, 0, 2, 10, 120, 0, 0, 9.072, 6.71, 22.86, 0.632, 1, "ICAO", [[-15,803],[0,810],[10,817],[15,822],[25,836],[30,845],[35,856]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
["5.8x42mm DBP87" , 942, 100, 0.0566639, -0.00117956, 3.81, 0, 2, 10, 120, 0, 0, 4.150, 5.99, 24.40, 0.313, 1, "ICAO", [[-15,923],[0,930],[10,937],[15,942],[25,956],[30,965],[35,976]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
["5.56x45mm M855" , 862, 100, 0.0635456, -0.00126466, 3.81, 0, 2, 10, 120, 0, 0, 4.018, 5.70, 17.78, 0.302, 1, "ASM" , [[-15,843],[0,849],[10,857],[15,862],[25,876],[30,885],[35,898]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
["5.56x45mm Mk262" , 812, 100, 0.0682606, -0.00109563, 3.81, 0, 2, 10, 120, 0, 0, 4.990, 5.70, 17.78, 0.361, 1, "ASM" , [[-15,793],[0,800],[10,807],[15,812],[25,826],[30,835],[35,846]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
["5.56x45mm Mk318" , 872, 100, 0.0624569, -0.00123318, 3.81, 0, 2, 10, 120, 0, 0, 4.018, 5.70, 17.78, 0.307, 1, "ASM" , [[-15,853],[0,860],[10,867],[15,872],[25,886],[30,895],[35,906]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
["5.56x45mm M995" , 861, 100, 0.0635355, -0.00123272, 3.81, 0, 2, 10, 120, 0, 0, 4.536, 5.70, 17.78, 0.310, 1, "ASM" , [[-15,842],[0,849],[10,856],[15,861],[25,875],[30,884],[35,895]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
["5.45x39mm 7N6M" , 727, 100, 0.0801269, -0.00116278, 3.81, 0, 2, 10, 120, 0, 0, 3.428, 5.59, 16.00, 0.336, 1, "ICAO", [[-15,708],[0,715],[10,722],[15,727],[25,741],[30,750],[35,761]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true]];
[] call FUNC(clear_user_data);
profileNamespace setVariable ["ACE_ATragMX_gunList", GVAR(gunList)];
};
[] call FUNC(init);
[] call FUNC(restore_user_data);
[] call FUNC(read_gun_list_entries_from_config);
GVAR(active) = false;
GVAR(initialised) = false;
[QEGVAR(vector,rangefinderData), {_this call FUNC(sord)}] call CBA_fnc_addEventHandler;

View File

@ -18,6 +18,16 @@
#define __dsp (uiNamespace getVariable "ATragMX_Display")
#define __ctrlBackground (__dsp displayCtrl 720000)
// Do all initialisation now
if (!GVAR(initialised)) then {
[] call FUNC(initGunList);
[] call FUNC(init);
[] call FUNC(restore_user_data);
[] call FUNC(read_gun_list_entries_from_config);
GVAR(initialised) = true;
TRACE_1("",GVAR(initialised));
};
if (GVAR(active)) exitWith { false };
if (underwater ACE_player) exitWith { false };
if (!("ACE_ATragMX" in (uniformItems ACE_player)) && !("ACE_ATragMX" in (vestItems ACE_player))) exitWith { false };

View File

@ -15,7 +15,6 @@
*/
#include "script_component.hpp"
GVAR(active) = false;
GVAR(workingMemory) = +(GVAR(gunList) select 0);

View File

@ -0,0 +1,83 @@
/*
* Author: Ruthberg
* Inits the gun list from user profile
*
* Arguments:
* Nothing
*
* Return Value:
* Nothing
*
* Example:
* call ace_atragmx_fnc_initGunList
*
* Public: No
*/
#include "script_component.hpp"
LOG_2("Trying to load gunlist from profile [Version: %1][Count: %2]", profileNamespace getVariable [ARR_2(QGVAR(profileNamespaceVersion), 'none')], count (profileNamespace getVariable [ARR_2(QGVAR(gunList), [])]));
private _resetGunList = true;
if ((profileNamespace getVariable ["ACE_ATragMX_profileNamespaceVersion", 0]) == ATRAGMX_PROFILE_NAMESPACE_VERSION && {count (profileNamespace getVariable ["ACE_ATragMX_gunList", []]) > 0}) then {
GVAR(gunList) = profileNamespace getVariable "ACE_ATragMX_gunList";
_resetGunList = false;
{
// Verify each gun has correct param type
if (!(_x isEqualTypeArray ["", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "", [], [], false])) exitWith {
_resetGunList = true;
};
} forEach GVAR(gunList);
};
if (_resetGunList) then {
WARNING("Reseting Profile Gunlist");
// Profile Name, Muzzle Velocity, Zero Range, Scope Base Angle, AirFriction, Bore Height, Scope Unit, Scope Click Unit, Scope Click Number, Maximum Elevation, Dialed Elevation, Dialed Windage, Mass, Bullet Diameter, Rifle Twist, BC, Drag Model, Atmosphere Model, Muzzle Velocity vs. Temperature Interpolation, C1 Ballistic Coefficient vs. Distance Interpolation, Persistent
GVAR(gunList) = [["12.7x108mm" , 812, 100, 0.0666557, -0.00063800, 3.81, 0, 2, 10, 120, 0, 0, 48.28, 12.7, 38.10, 0.630, 1, "ASM" , [[-15,793],[0,800],[10,807],[15,812],[25,826],[30,835],[35,846]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
["12.7x99mm AMAX" , 852, 100, 0.0615965, -0.00036645, 3.81, 0, 2, 10, 120, 0, 0, 48.60, 12.7, 38.10, 1.050, 1, "ASM" , [[-15,833],[0,840],[10,847],[15,852],[25,866],[30,875],[35,886]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
["12.7x99mm" , 892, 100, 0.0588284, -0.00057503, 3.81, 0, 2, 10, 120, 0, 0, 41.92, 12.7, 38.10, 0.670, 1, "ASM" , [[-15,873],[0,880],[10,887],[15,892],[25,906],[30,915],[35,926]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
["12.7x54mm" , 299, 100, 0.3406920, -0.00019268, 3.81, 0, 2, 10, 120, 0, 0, 48.60, 12.7, 24.13, 1.050, 1, "ASM" , [[-15,297],[0,298],[10,299],[15,299],[25,301],[30,302],[35,303]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
[".50 Beowulf" , 562, 100, 0.1262000, -0.00202645, 3.81, 0, 2, 10, 120, 0, 0, 21.71, 12.7, 50.80, 0.210, 1, "ASM" , [[-15,560],[0,561],[10,562],[15,562],[25,564],[30,565],[35,566]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
[".408 CheyTac 305gr", 1059, 100, 0.0482146, -0.00063655, 3.81, 0, 2, 10, 120, 0, 0, 19.76, 10.4, 33.02, 0.569, 1, "ICAO", [[-15,1040],[0,1047],[10,1054],[15,1059],[25,1073],[30,1082],[35,1093]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
[".408 CheyTac 419gr", 859, 100, 0.0611842, -0.00044958, 3.81, 0, 2, 10, 120, 0, 0, 27.15, 10.4, 33.02, 0.866, 1, "ICAO", [[-15,840],[0,847],[10,854],[15,859],[25,873],[30,882],[35,893]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
["9.3×64mm" , 862, 100, 0.0627652, -0.00108571, 3.81, 0, 2, 10, 120, 0, 0, 14.90, 9.30, 35.56, 0.368, 1, "ASM" , [[-15,843],[0,850],[10,857],[15,862],[25,876],[30,885],[35,896]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
[".338LM 250gr" , 872, 100, 0.0604821, -0.00059133, 3.81, 0, 2, 10, 120, 0, 0, 16.20, 8.58, 25.40, 0.645, 1, "ICAO", [[-15,853],[0,860],[10,867],[15,872],[25,886],[30,895],[35,906]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
[".338LM 300gr" , 792, 100, 0.0685883, -0.00052190, 3.81, 0, 2, 10, 120, 0, 0, 19.44, 8.58, 25.40, 0.759, 1, "ICAO", [[-15,773],[0,780],[10,787],[15,792],[25,806],[30,815],[35,826]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
[".338LM API526" , 872, 100, 0.0602535, -0.00069611, 3.81, 0, 2, 10, 120, 0, 0, 16.39, 8.58, 25.40, 0.760, 1, "ICAO", [[-15,853],[0,860],[10,867],[15,872],[25,886],[30,895],[35,906]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
[".300WM Mk248 Mod0" , 857, 100, 0.0621425, -0.00070530, 3.81, 0, 2, 10, 120, 0, 0, 12.31, 7.80, 25.40, 0.537, 1, "ICAO", [[-15,838],[0,845],[10,852],[15,857],[25,871],[30,880],[35,891]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
[".300WM Mk248 Mod1" , 839, 100, 0.0637038, -0.00061188, 3.81, 0, 2, 10, 120, 0, 0, 14.26, 7.80, 25.40, 0.619, 1, "ICAO", [[-15,820],[0,827],[10,834],[15,839],[25,853],[30,862],[35,873]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
[".300WM Berger OTM" , 792, 100, 0.0686968, -0.00053733, 3.81, 0, 2, 10, 120, 0, 0, 14.90, 7.80, 25.40, 0.715, 1, "ICAO", [[-15,773],[0,780],[10,787],[15,792],[25,806],[30,815],[35,826]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
["7.62x54mmR" , 812, 100, 0.0678441, -0.00100023, 3.81, 0, 2, 10, 120, 0, 0, 9.849, 7.92, 24.13, 0.400, 1, "ICAO", [[-15,793],[0,800],[10,807],[15,812],[25,826],[30,835],[35,846]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
["7.62x51mm M80" , 802, 100, 0.0690229, -0.00100957, 3.81, 0, 2, 10, 120, 0, 0, 9.461, 7.82, 25.40, 0.398, 1, "ICAO", [[-15,783],[0,790],[10,797],[15,802],[25,816],[30,825],[35,836]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
["7.62x51mm M118LR" , 757, 100, 0.0739989, -0.00082828, 3.81, 0, 2, 10, 120, 0, 0, 11.34, 7.82, 25.40, 0.482, 1, "ICAO", [[-15,738],[0,745],[10,752],[15,757],[25,771],[30,780],[35,791]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
["7.62x51mm Mk316" , 781, 100, 0.0709422, -0.00082029, 3.81, 0, 2, 10, 120, 0, 0, 11.34, 7.82, 25.40, 0.483, 1, "ICAO", [[-15,777],[0,778],[10,779],[15,781],[25,783],[30,785],[35,787]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
["7.62x51mm Mk319" , 900, 100, 0.0593025, -0.00102338, 3.81, 0, 2, 10, 120, 0, 0, 8.424, 7.82, 25.40, 0.377, 1, "ICAO", [[-15,898],[0,899],[10,900],[15,900],[25,902],[30,903],[35,904]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
["7.62x51mm M993" , 912, 100, 0.0585007, -0.00107148, 3.81, 0, 2, 10, 120, 0, 0, 8.230, 7.82, 25.40, 0.359, 1, "ICAO", [[-15,893],[0,900],[10,907],[15,912],[25,926],[30,935],[35,946]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
["7.62x51mm Subsonic", 314, 100, 0.3168140, -0.00049899, 3.81, 0, 2, 10, 120, 0, 0, 12.96, 7.82, 25.40, 0.502, 1, "ICAO", [[-15,312],[0,313],[10,314],[15,314],[25,316],[30,317],[35,318]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
["7.62x39mm" , 708, 100, 0.0846559, -0.00151621, 3.81, 0, 2, 10, 120, 0, 0, 7.970, 7.82, 25.40, 0.275, 1, "ICAO", [[-15,689],[0,696],[10,703],[15,708],[25,722],[30,731],[35,742]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
["6.5x39mm" , 766, 100, 0.0725986, -0.00075308, 3.81, 0, 2, 10, 120, 0, 0, 7.970, 6.71, 22.86, 0.524, 1, "ICAO", [[-15,747],[0,754],[10,761],[15,766],[25,780],[30,789],[35,800]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
["6.5x47mm Lapua" , 767, 100, 0.0722256, -0.00067037, 3.81, 0, 2, 10, 120, 0, 0, 9.007, 6.71, 22.86, 0.577, 1, "ICAO", [[-15,748],[0,755],[10,762],[15,767],[25,781],[30,790],[35,801]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
["6.5mm Creedmor" , 822, 100, 0.0655022, -0.00060887, 3.81, 0, 2, 10, 120, 0, 0, 9.072, 6.71, 22.86, 0.632, 1, "ICAO", [[-15,803],[0,810],[10,817],[15,822],[25,836],[30,845],[35,856]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
["5.8x42mm DBP87" , 942, 100, 0.0566639, -0.00117956, 3.81, 0, 2, 10, 120, 0, 0, 4.150, 5.99, 24.40, 0.313, 1, "ICAO", [[-15,923],[0,930],[10,937],[15,942],[25,956],[30,965],[35,976]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
["5.56x45mm M855" , 862, 100, 0.0635456, -0.00126466, 3.81, 0, 2, 10, 120, 0, 0, 4.018, 5.70, 17.78, 0.302, 1, "ASM" , [[-15,843],[0,849],[10,857],[15,862],[25,876],[30,885],[35,898]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
["5.56x45mm Mk262" , 812, 100, 0.0682606, -0.00109563, 3.81, 0, 2, 10, 120, 0, 0, 4.990, 5.70, 17.78, 0.361, 1, "ASM" , [[-15,793],[0,800],[10,807],[15,812],[25,826],[30,835],[35,846]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
["5.56x45mm Mk318" , 872, 100, 0.0624569, -0.00123318, 3.81, 0, 2, 10, 120, 0, 0, 4.018, 5.70, 17.78, 0.307, 1, "ASM" , [[-15,853],[0,860],[10,867],[15,872],[25,886],[30,895],[35,906]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
["5.56x45mm M995" , 861, 100, 0.0635355, -0.00123272, 3.81, 0, 2, 10, 120, 0, 0, 4.536, 5.70, 17.78, 0.310, 1, "ASM" , [[-15,842],[0,849],[10,856],[15,861],[25,875],[30,884],[35,895]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
["5.45x39mm 7N6M" , 727, 100, 0.0801269, -0.00116278, 3.81, 0, 2, 10, 120, 0, 0, 3.428, 5.59, 16.00, 0.336, 1, "ICAO", [[-15,708],[0,715],[10,722],[15,727],[25,741],[30,750],[35,761]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true]];
[] call FUNC(clear_user_data);
profileNamespace setVariable ["ACE_ATragMX_gunList", GVAR(gunList)];
};

View File

@ -17,6 +17,8 @@
*/
#include "script_component.hpp"
if (!GVAR(initialised)) exitWith {};
params ["_slopeDistance", "_azimuth", "_inclination"];
GVAR(inclinationAngle) set [GVAR(currentTarget), round(_inclination)];

View File

@ -112,8 +112,8 @@ class CfgWeapons {
"ACE_30Rnd_65x39_caseless_mag_Tracer_Dim"
};
initSpeed = -1.0;
ACE_barrelTwist=228.6;
ACE_barrelLength=406.4;
ACE_barrelTwist = 228.6;
ACE_barrelLength = 406.4;
};
class arifle_MXM_F: arifle_MX_Base_F {
magazines[] = {
@ -124,8 +124,8 @@ class CfgWeapons {
"ACE_30Rnd_65_Creedmor_mag"
};
initSpeed = -1.01842;
ACE_barrelTwist=228.6;
ACE_barrelLength=457.2;
ACE_barrelTwist = 228.6;
ACE_barrelLength = 457.2;
class Single: Single {
dispersion = 0.000436; // radians. Equal to 1.50 MOA.
};
@ -154,13 +154,13 @@ class CfgWeapons {
"ACE_30Rnd_556x45_Stanag_Tracer_Dim"
};
initSpeed = -0.859238;
ACE_barrelTwist=177.8;
ACE_barrelLength=264.0;
ACE_barrelTwist = 177.8;
ACE_barrelLength = 264.0;
};
class arifle_SPAR_02_base_F: Rifle_Base_F {
initSpeed = -0.934282;
ACE_barrelTwist=177.8;
ACE_barrelLength=368.0;
ACE_barrelTwist = 177.8;
ACE_barrelLength = 368.0;
};
class arifle_SPAR_03_base_F: Rifle_Base_F {
magazines[] = {
@ -174,8 +174,8 @@ class CfgWeapons {
"ACE_20Rnd_762x51_Mag_SD"
};
initSpeed = -0.984394;
ACE_barrelTwist=279.4;
ACE_barrelLength=508.0;
ACE_barrelTwist = 279.4;
ACE_barrelLength = 508.0;
};
/* Other */
@ -186,18 +186,18 @@ class CfgWeapons {
"ACE_200Rnd_65x39_cased_Box_Tracer_Dim"
};
initSpeed = -0.976974;
ACE_barrelTwist=177.8;
ACE_barrelLength=317.5;
ACE_barrelTwist = 177.8;
ACE_barrelLength = 317.5;
};
class LMG_Zafir_F: Rifle_Long_Base_F {
initSpeed = -1.00333;
ACE_barrelTwist=304.8;
ACE_barrelLength=459.74;
ACE_barrelTwist = 304.8;
ACE_barrelLength = 459.74;
};
class LMG_03_base_F: Rifle_Long_Base_F {
initSpeed = -1.02002;
ACE_barrelTwist=177.8;
ACE_barrelLength=414.02;
ACE_barrelTwist = 177.8;
ACE_barrelLength = 414.02;
};
class Tavor_base_F: Rifle_Base_F {};
class mk20_base_F: Rifle_Base_F {};
@ -225,51 +225,51 @@ class CfgWeapons {
class hgun_P07_F: Pistol_Base_F {
initSpeed = -1.0;
ACE_barrelTwist=254.0;
ACE_barrelLength=101.6;
ACE_barrelTwist = 254.0;
ACE_barrelLength = 101.6;
};
class hgun_Rook40_F: Pistol_Base_F {
initSpeed = -1.03077;
ACE_barrelTwist=254.0;
ACE_barrelLength=111.76;
ACE_barrelTwist = 254.0;
ACE_barrelLength = 111.76;
};
class hgun_ACPC2_F: Pistol_Base_F {
initSpeed = -1.0;
ACE_barrelTwist=406.4;
ACE_barrelLength=127.0;
ACE_barrelTwist = 406.4;
ACE_barrelLength = 127.0;
};
class hgun_Pistol_heavy_01_F: Pistol_Base_F {
initSpeed = -0.96;
ACE_barrelTwist=406.4;
ACE_barrelLength=114.3;
ACE_barrelTwist = 406.4;
ACE_barrelLength = 114.3;
};
class hgun_Pistol_heavy_02_F: Pistol_Base_F {
initSpeed = -0.92;
ACE_barrelTwist=406.4;
ACE_barrelLength=76.2;
ACE_barrelTwist = 406.4;
ACE_barrelLength = 76.2;
};
class hgun_Pistol_01_F: Pistol_Base_F {
initSpeed = -0.974359;
ACE_barrelTwist=254.0;
ACE_barrelLength=93.5;
ACE_barrelTwist = 254.0;
ACE_barrelLength = 93.5;
};
class pdw2000_base_F: Rifle_Short_Base_F {
initSpeed = -1.09615;
ACE_barrelTwist=228.6;
ACE_barrelLength=177.8;
ACE_barrelTwist = 228.6;
ACE_barrelLength = 177.8;
};
/* Rifles */
class arifle_AKS_base_F: Rifle_Base_F {
initSpeed = -1.0;
ACE_barrelTwist=160.02;
ACE_barrelLength=206.5;
ACE_barrelTwist = 160.02;
ACE_barrelLength = 206.5;
};
class arifle_AKM_base_F: Rifle_Base_F {
initSpeed = -1.0014;
@ -303,8 +303,8 @@ class CfgWeapons {
"ACE_30Rnd_65x39_caseless_green_mag_Tracer_Dim"
};
initSpeed = -1.08355;
ACE_barrelTwist=203.2;
ACE_barrelLength=728.98;
ACE_barrelTwist = 203.2;
ACE_barrelLength = 508.0;
};
class arifle_Katiba_C_F: arifle_katiba_Base_F {
magazines[] = {
@ -313,8 +313,8 @@ class CfgWeapons {
"ACE_30Rnd_65x39_caseless_green_mag_Tracer_Dim"
};
initSpeed = -1.07105;
ACE_barrelTwist=203.2;
ACE_barrelLength=680.72;
ACE_barrelTwist = 203.2;
ACE_barrelLength = 393.7;
};
class arifle_Katiba_GL_F: arifle_katiba_Base_F {
magazines[] = {
@ -323,8 +323,8 @@ class CfgWeapons {
"ACE_30Rnd_65x39_caseless_green_mag_Tracer_Dim"
};
initSpeed = -1.08355;
ACE_barrelTwist=203.2;
ACE_barrelLength=728.98;
ACE_barrelTwist = 203.2;
ACE_barrelLength = 508.0;
};
class arifle_MX_F: arifle_MX_Base_F {
magazines[] = {
@ -333,8 +333,8 @@ class CfgWeapons {
"ACE_30Rnd_65x39_caseless_mag_Tracer_Dim"
};
initSpeed = -0.990132;
ACE_barrelTwist=228.6;
ACE_barrelLength=368.3;
ACE_barrelTwist = 228.6;
ACE_barrelLength = 368.3;
};
class arifle_MX_GL_F: arifle_MX_Base_F {
magazines[] = {
@ -343,8 +343,8 @@ class CfgWeapons {
"ACE_30Rnd_65x39_caseless_mag_Tracer_Dim"
};
initSpeed = -0.99;
ACE_barrelTwist=228.6;
ACE_barrelLength=368.3;
ACE_barrelTwist = 228.6;
ACE_barrelLength = 368.3;
};
/*
class arifle_MX_SW_F: arifle_MX_Base_F {
@ -359,8 +359,8 @@ class CfgWeapons {
"ACE_30Rnd_65x39_caseless_mag_Tracer_Dim"
};
initSpeed = -0.963816;
ACE_barrelTwist=203.2;
ACE_barrelLength=266.7;
ACE_barrelTwist = 203.2;
ACE_barrelLength = 266.7;
};
/*
class arifle_MXM_F: arifle_MX_Base_F {
@ -383,18 +383,18 @@ class CfgWeapons {
"ACE_30Rnd_556x45_Stanag_Tracer_Dim"
};
initSpeed = -0.989;
ACE_barrelTwist=285.75;
ACE_barrelLength=457.2;
ACE_barrelTwist = 285.75;
ACE_barrelLength = 457.2;
};
class SMG_02_base_F: Rifle_Short_Base_F {
initSpeed = -1.10288;
ACE_barrelTwist=254.0;
ACE_barrelLength=195.58;
ACE_barrelTwist = 254.0;
ACE_barrelLength = 195.58;
};
class SMG_05_base_F: Rifle_Short_Base_F {
initSpeed = -1.04058;
ACE_barrelTwist=254.0;
ACE_barrelLength=115.0;
ACE_barrelTwist = 254.0;
ACE_barrelLength = 115.0;
};
class arifle_TRG20_F: Tavor_base_F {
magazines[] = {
@ -410,8 +410,8 @@ class CfgWeapons {
"ACE_30Rnd_556x45_Stanag_Tracer_Dim"
};
initSpeed = -0.95;
ACE_barrelTwist=177.8;
ACE_barrelLength=381.0;
ACE_barrelTwist = 177.8;
ACE_barrelLength = 381.0;
};
class arifle_TRG21_F: Tavor_base_F {
magazines[] = {
@ -427,8 +427,8 @@ class CfgWeapons {
"ACE_30Rnd_556x45_Stanag_Tracer_Dim"
};
initSpeed = -0.988043;
ACE_barrelTwist=177.8;
ACE_barrelLength=459.74;
ACE_barrelTwist = 177.8;
ACE_barrelLength = 459.74;
};
class arifle_TRG21_GL_F: arifle_TRG21_F {
magazines[] = {
@ -444,8 +444,8 @@ class CfgWeapons {
"ACE_30Rnd_556x45_Stanag_Tracer_Dim"
};
initSpeed = -0.988043;
ACE_barrelTwist=177.8;
ACE_barrelLength=459.74;
ACE_barrelTwist = 177.8;
ACE_barrelLength = 459.74;
};
/*
class LMG_Zafir_F: Rifle_Long_Base_F {
@ -467,8 +467,8 @@ class CfgWeapons {
"ACE_30Rnd_556x45_Stanag_Tracer_Dim"
};
initSpeed = -0.980978;
ACE_barrelTwist=177.8;
ACE_barrelLength=441.96;
ACE_barrelTwist = 177.8;
ACE_barrelLength = 441.96;
};
class arifle_Mk20C_F: mk20_base_F {
magazines[] = {
@ -484,8 +484,8 @@ class CfgWeapons {
"ACE_30Rnd_556x45_Stanag_Tracer_Dim"
};
initSpeed = -0.962648;
ACE_barrelTwist=177.8;
ACE_barrelLength=406.4;
ACE_barrelTwist = 177.8;
ACE_barrelLength = 406.4;
};
class arifle_Mk20_GL_F: mk20_base_F {
magazines[] = {
@ -501,13 +501,13 @@ class CfgWeapons {
"ACE_30Rnd_556x45_Stanag_Tracer_Dim"
};
initSpeed = -0.962648;
ACE_barrelTwist=177.8;
ACE_barrelLength=406.4;
ACE_barrelTwist = 177.8;
ACE_barrelLength = 406.4;
};
class SMG_01_Base: Rifle_Short_Base_F {
initSpeed = -1.0175;
ACE_barrelTwist=406.4;
ACE_barrelLength=139.7;
ACE_barrelTwist = 406.4;
ACE_barrelLength = 139.7;
};
class srifle_DMR_01_F: DMR_01_base_F {
magazines[] = {
@ -515,8 +515,8 @@ class CfgWeapons {
"ACE_10Rnd_762x54_Tracer_mag"
};
initSpeed = -1.025;
ACE_barrelTwist=241.3;
ACE_barrelLength=609.6;
ACE_barrelTwist = 241.3;
ACE_barrelLength = 609.6;
};
class srifle_EBR_F: EBR_base_F {
magazines[] = {
@ -530,8 +530,8 @@ class CfgWeapons {
"ACE_20Rnd_762x51_Mag_SD"
};
initSpeed = -0.972389;
ACE_barrelTwist=304.8;
ACE_barrelLength=457.2;
ACE_barrelTwist = 304.8;
ACE_barrelLength = 457.2;
};
/*
class LMG_Mk200_F: Rifle_Long_Base_F {
@ -546,8 +546,8 @@ class CfgWeapons {
"ACE_7Rnd_408_305gr_Mag"
};
initSpeed = -1.0;
ACE_barrelTwist=330.2;
ACE_barrelLength=736.6;
ACE_barrelTwist = 330.2;
ACE_barrelLength = 736.6;
};
class srifle_GM6_F: GM6_base_F {
magazines[] = {
@ -558,8 +558,8 @@ class CfgWeapons {
"ACE_5Rnd_127x99_AMAX_Mag"
};
initSpeed = -1.0;
ACE_barrelTwist=381.0;
ACE_barrelLength=730;
ACE_barrelTwist = 381.0;
ACE_barrelLength = 730;
};
class srifle_DMR_02_F: DMR_02_base_F {
magazines[] = {
@ -571,8 +571,8 @@ class CfgWeapons {
"ACE_20Rnd_762x67_Berger_Hybrid_OTM_Mag"
};
initSpeed = -0.961749;
ACE_barrelTwist=254.0;
ACE_barrelLength=508.0;
ACE_barrelTwist = 254.0;
ACE_barrelLength = 508.0;
};
class srifle_DMR_03_F: DMR_03_base_F {
magazines[] = {
@ -586,18 +586,18 @@ class CfgWeapons {
"ACE_20Rnd_762x51_Mag_SD"
};
initSpeed = -0.984394;
ACE_barrelTwist=254.0;
ACE_barrelLength=508.0;
ACE_barrelTwist = 254.0;
ACE_barrelLength = 508.0;
};
class srifle_DMR_04_F: DMR_04_base_F {
initSpeed = -1.0;
ACE_barrelTwist=203.2;
ACE_barrelLength=450.088;
ACE_barrelTwist = 203.2;
ACE_barrelLength = 450.088;
};
class srifle_DMR_05_blk_F: DMR_05_base_F {
initSpeed = -1.0;
ACE_barrelTwist=359.918;
ACE_barrelLength=620.014;
ACE_barrelTwist = 359.918;
ACE_barrelLength = 620.014;
};
class srifle_DMR_06_camo_F: DMR_06_base_F {
magazines[] = {
@ -611,18 +611,18 @@ class CfgWeapons {
"ACE_20Rnd_762x51_Mag_SD"
};
initSpeed = -0.992197;
ACE_barrelTwist=304.8;
ACE_barrelLength=558.8;
ACE_barrelTwist = 304.8;
ACE_barrelLength = 558.8;
};
class MMG_01_hex_F: MMG_01_base_F {
initSpeed = -0.997073;
ACE_barrelTwist=359.918;
ACE_barrelLength=549.91;
ACE_barrelTwist = 359.918;
ACE_barrelLength = 549.91;
};
class MMG_02_camo_F: MMG_02_base_F {
initSpeed = -1.0;
ACE_barrelTwist=234.95;
ACE_barrelLength=609.6;
ACE_barrelTwist = 234.95;
ACE_barrelLength = 609.6;
};
class HMG_127 : LMG_RCWS {
@ -631,8 +631,8 @@ class CfgWeapons {
};
class HMG_M2: HMG_01 {
initSpeed = -1.0;
ACE_barrelTwist=304.8;
ACE_barrelLength=1143.0;
ACE_barrelTwist = 304.8;
ACE_barrelLength = 1143.0;
};
/* Silencers */

View File

@ -22,81 +22,87 @@ if (_map in ["tanoa"]) exitWith { [-18, 0] };
if (_map in ["altis"]) exitWith { [40, 0] };
if (_map in ["stratis"]) exitWith { [40, 0] };
if (_map in ["abbottabad"]) exitWith { [34, 1256] }; //Abbottabad elevation 1256m (Wikipedia)
if (_map in ["abel"]) exitWith { [39, 0] }; //CWR2 Malden
if (_map in ["abbottabad"]) exitWith { [34, 1256] }; // Abbottabad elevation 1256m (Wikipedia)
if (_map in ["abel"]) exitWith { [39, 0] }; // CWR2 Malden
if (_map in ["abramia"]) exitWith { [60, 0] };
if (_map in ["af_kandahar_province"]) exitWith { [42, 0] };
if (_map in ["angel"]) exitWith { [38, 0] };
if (_map in ["anim_helvantis_v2"]) exitWith { [50, 0] };
if (_map in ["australia"]) exitWith { [-25, 0] };
if (_map in ["baranow", "ivachev", "panavo", "staszow"]) exitWith { [50, 148.1] }; //IFA3LITE - default elevationOffset
if (_map in ["baranow", "ivachev", "panavo", "staszow"]) exitWith { [50, 148.1] }; // IFA3LITE - default elevationOffset
if (_map in ["beketov"]) exitWith { [55, 0] };
if (_map in ["blud_cordelia"]) exitWith { [12, 5] }; // Trung Si
if (_map in ["bootcamp_acr"]) exitWith { [50, 0] };
if (_map in ["bornholm"]) exitWith { [55, 0] };
if (_map in ["bozcaada"]) exitWith { [40, 0] };
if (_map in ["cain"]) exitWith { [40, 0] }; //CWR2 Kolgujev
if (_map in ["cain"]) exitWith { [40, 0] }; // CWR2 Kolgujev
if (_map in ["caribou"]) exitWith { [68, 0] };
if (_map in ["cartercity"]) exitWith { [43, 130] }; //Pecher, based on Grozny (1995 - 1996) elevation 130m (Wikipedia)
if (_map in ["cartercity"]) exitWith { [43, 130] }; // Pecher, based on Grozny (1995 - 1996) elevation 130m (Wikipedia)
if (_map in ["catalina"]) exitWith { [33, 0] };
if (_map in ["chernarus", "chernarus_summer", "chernarus_winter"]) exitWith { [50, 0] };
if (_map in ["chernobylzone", "chernobylzonea2"]) exitWith { [51, 0] };
if (_map in ["clafghan"]) exitWith { [34, 640] };
if (_map in ["colleville"]) exitWith { [49, 0] }; //IFA3LITE, Omaha Beach 1944
if (_map in ["csj_lawlands", "uns_dong_ha"]) exitWith { [12, 0] }; //Unsung Mod
if (_map in ["csj_sea"]) exitWith { [15, 0] }; //Unsung Mod
if (_map in ["dakrong"]) exitWith { [16, 0] }; //Unsung Mod
if (_map in ["colleville"]) exitWith { [49, 0] }; // IFA3LITE, Omaha Beach 1944
if (_map in ["csj_lawlands", "uns_dong_ha"]) exitWith { [12, 0] }; // Unsung Mod
if (_map in ["csj_sea"]) exitWith { [15, 0] }; // Unsung Mod
if (_map in ["dakrong"]) exitWith { [16, 0] }; // Unsung Mod
if (_map in ["desert_e"]) exitWith { [40, 800] };
if (_map in ["desert_island"]) exitWith { [40, 0] }; //CWR2 Desert Island
if (_map in ["dya"]) exitWith { [34, 110] }; //Diyala Iraq - default elevationOffset
if (_map in ["eden"]) exitWith { [45, 0] }; //CWR2 Everon
if (_map in ["desert_island"]) exitWith { [40, 0] }; // CWR2 Desert Island
if (_map in ["dya"]) exitWith { [34, 110] }; // Diyala Iraq - default elevationOffset
if (_map in ["eden"]) exitWith { [45, 0] }; // CWR2 Everon
if (_map in ["esseker"]) exitWith { [43, 2000] };
if (_map in ["evergreen"]) exitWith { [41, 0] }; //Burgazada, Turkey - default elevationOffset
if (_map in ["evergreen"]) exitWith { [41, 0] }; // Burgazada, Turkey - default elevationOffset
if (_map in ["fallujah"]) exitWith { [33, 0] };
if (_map in ["fata"]) exitWith { [33, 1347] };
if (_map in ["gorgona"]) exitWith { [43, 0] };
if (_map in ["hellskitchen", "hellskitchens"]) exitWith { [32, 900] }; //Sangin summer, Sangin winter - Sangin elevation 888m (Wikipedia)
if (_map in ["hellskitchen", "hellskitchens"]) exitWith { [32, 900] }; // Sangin summer, Sangin winter - Sangin elevation 888m (Wikipedia)
if (_map in ["hindukush"]) exitWith { [36, 0] };
if (_map in ["i44_omaha_v2"]) exitWith { [49, 0] };
if (_map in ["imrali", "imralispring"]) exitWith { [40, 0] };
if (_map in ["intro"]) exitWith { [40, 0] };
if (_map in ["isladuala3"]) exitWith { [-19, 0] };
if (_map in ["jacobi"]) exitWith { [34, 2000] }; //default elevationOffset
if (_map in ["jacobi"]) exitWith { [34, 2000] }; // default elevationOffset
if (_map in ["kapaulio"]) exitWith { [0, 0] };
if (_map in ["kerama"]) exitWith { [26, 0] }; //Kerama Islands, Japan - default elevationOffset
if (_map in ["khe_sanh"]) exitWith { [17, 0] }; //Unsung Mod
if (_map in ["kerama"]) exitWith { [26, 0] }; // Kerama Islands, Japan - default elevationOffset
if (_map in ["khe_sanh"]) exitWith { [17, 0] }; // Unsung Mod
if (_map in ["kholm"]) exitWith { [36, 0] };
if (_map in ["kidal"]) exitWith { [18, 0] }; //Kidal, Mali - default elevationOffset
if (_map in ["kidal"]) exitWith { [18, 0] }; // Kidal, Mali - default elevationOffset
if (_map in ["koplic"]) exitWith { [42, 0] };
if (_map in ["kunduz"]) exitWith { [37, 0] };
if (_map in ["lingor", "lingor3"]) exitWith { [-4, 0] };
if (_map in ["lingor", "lingor3", "dingor"]) exitWith { [-4, 0] };
if (_map in ["lost", "lostw"]) exitWith { [60, 0] };
if (_map in ["malvinas"]) exitWith { [-52, 0] };
if (_map in ["marenice"]) exitWith { [51, 0] }; //CSA38 Mod (Czechoslovak army 1938 - Munich crisis), Lisatian Mountains.
if (_map in ["marenice"]) exitWith { [51, 0] }; // CSA38 Mod (Czechoslovak army 1938 - Munich crisis), Lisatian Mountains.
if (_map in ["mcn_aliabad"]) exitWith { [36, 0] };
if (_map in ["mcn_neaville", "mcn_neaville_winter"]) exitWith { [45, 0] }; // I44: Neaville, I44: Neaville (Winter)
if (_map in ["mef_alaska"]) exitWith { [60, 5] };
if (_map in ["mog"]) exitWith { [2, 0] }; //Mogadishu, Somalia
if (_map in ["mog"]) exitWith { [2, 0] }; // Mogadishu, Somalia
if (_map in ["mountains_acr"]) exitWith { [35, 2000] };
if (_map in ["mske"]) exitWith { [35, 0] }; // MSKE 2017
if (_map in ["nam2"]) exitWith { [14, 0] };
if (_map in ["namalsk"]) exitWith { [65, 0] };
if (_map in ["napf", "napfwinter"]) exitWith { [47, 0] };
if (_map in ["newyork_lumnuon"]) exitWith { [41, 5] }; //Governer´s Island, New York - default elevationOffset
if (_map in ["noe"]) exitWith { [45, 0] }; //CWR2 Nogova
if (_map in ["newyork_lumnuon"]) exitWith { [41, 5] }; // Governer´s Island, New York - default elevationOffset
if (_map in ["noe"]) exitWith { [45, 0] }; // CWR2 Nogova
if (_map in ["panthera3", "winthera3"]) exitWith { [46, 0] };
if (_map in ["phu_bai", "rockwall", "us101_cao_bang"]) exitWith { [14, 0] }; //Unsung Mod
if (_map in ["pianosa_aut"]) exitWith { [43, 0] }; //Pianosa, Italy - default elevationOffset
if (_map in ["pja305"]) exitWith { [0, 0] }; //G.O.S N'Ziwasogo
if (_map in ["pja306"]) exitWith { [35, 0] }; //G.O.S Kalu Khan
if (_map in ["pja307"]) exitWith { [17, 0] }; //F.S.F Daryah
if (_map in ["pja308"]) exitWith { [36, 0] }; //G.O.S Gunkizli
if (_map in ["pja310"]) exitWith { [36, 0] }; //G.O.S Al Rayak
if (_map in ["pja312"]) exitWith { [16, 0] }; //G.O.S Song Bin Tanh
if (_map in ["phu_bai", "rockwall", "us101_cao_bang"]) exitWith { [14, 0] }; // Unsung Mod
if (_map in ["pianosa_aut"]) exitWith { [43, 0] }; // Pianosa, Italy - default elevationOffset
if (_map in ["pja305"]) exitWith { [0, 0] }; // G.O.S N'Ziwasogo
if (_map in ["pja306"]) exitWith { [35, 0] }; // G.O.S Kalu Khan
if (_map in ["pja307"]) exitWith { [17, 0] }; // F.S.F Daryah
if (_map in ["pja308"]) exitWith { [36, 0] }; // G.O.S Gunkizli
if (_map in ["pja310"]) exitWith { [36, 0] }; // G.O.S Al Rayak
if (_map in ["pja312"]) exitWith { [16, 0] }; // G.O.S Song Bin Tanh
if (_map in ["pja314"]) exitWith { [46, 0] }; // G.O.S Leskovets
if (_map in ["plr_bulge"]) exitWith { [49, 0] }; // I44: Battle of the Bulge
if (_map in ["porquerolles"]) exitWith { [43, 0] };
if (_map in ["porto"]) exitWith { [40, 0] };
if (_map in ["provinggrounds_pmc"]) exitWith { [35, 100] };
if (_map in ["reshmaan"]) exitWith { [35, 2000] };
if (_map in ["rungsat"]) exitWith { [10, 0] }; //Unsung Mod
if (_map in ["rungsat"]) exitWith { [10, 0] }; // Unsung Mod
if (_map in ["sara", "sara_dbe1"]) exitWith { [40, 0] };
if (_map in ["saralite"]) exitWith { [40, 0] };
if (_map in ["sb3"]) exitWith { [53, 25] }; //TrpUebPl Einfelde Nord (Munster North Training Area, Germany) - default elevationOffset
if (_map in ["sb3"]) exitWith { [53, 25] }; // TrpUebPl Einfelde Nord (Munster North Training Area, Germany) - default elevationOffset
if (_map in ["sfp_sturko"]) exitWith { [56, 0] };
if (_map in ["sfp_wamako"]) exitWith { [14, 0] };
if (_map in ["shapur_baf"]) exitWith { [35, 100] };
@ -105,13 +111,13 @@ if (_map in ["takistan"]) exitWith { [35, 2000] };
if (_map in ["thirsk"]) exitWith { [65, 0] };
if (_map in ["tilos"]) exitWith { [36, 0] };
if (_map in ["uhao"]) exitWith { [21, 0] };
if (_map in ["uns_idv", "uns_ptv"]) exitWith { [13, 0] }; //Unsung Mod
if (_map in ["uns_idv", "uns_ptv"]) exitWith { [13, 0] }; // Unsung Mod
if (_map in ["utes"]) exitWith { [50, 0] };
if (_map in ["vt5"]) exitWith { [61, 100] }; //Valtatie 5, Finland - default elevationOffset
if (_map in ["vt5"]) exitWith { [61, 100] }; // Valtatie 5, Finland - default elevationOffset
if (_map in ["wake"]) exitWith { [19, 0] };
if (_map in ["waziristan"]) exitWith { [33, 0] };
if (_map in ["wintermap"]) exitWith { [61, 0] }; //Nordkvingo - default elevationOffset
if (_map in ["wintertown", "wintertowna3"]) exitWith { [39, 600] }; //U.S. state Kansas mean elevation 610m (Wikipedia)
if (_map in ["wintermap"]) exitWith { [61, 0] }; // Nordkvingo - default elevationOffset
if (_map in ["wintertown", "wintertowna3"]) exitWith { [39, 600] }; // U.S. state Kansas mean elevation 610m (Wikipedia)
if (_map in ["woodland_acr"]) exitWith { [50, 0] };
if (_map in ["xcam_prototype"]) exitWith { [35, 0] };
if (_map in ["xcam_taunus"]) exitWith { [50, 0] };

View File

@ -48,6 +48,7 @@ TRACE_2("Starting Embargo", _varName, _delay);
//If value at start of embargo doesn't equal current, then broadcast and start new embargo
if (!(_value isEqualTo _curValue)) then {
_this set [2, _curValue];
_this call FUNC(setVariablePublic);
};
}, _this, _delay] call CBA_fnc_waitAndExecute;

View File

@ -29,6 +29,16 @@ if (_state isEqualTo []) exitWith {
_state params ["_weapon", "_items", "_magazines"];
_unit addWeapon _weapon;
// Game will auto add magazines from player's inventory, put these back in player inventory as they will be overwritten
([_unit, _weapon] call EFUNC(common,getWeaponState)) params ["", "", "_addedMags", "_addedAmmo"];
{
if (((_x select 0) != "") && {(_addedMags select _forEachIndex) != ""}) then {
TRACE_2("Re-adding mag",_x,_addedMags select _forEachIndex);
_unit addMagazine [_addedMags select _forEachIndex, _addedAmmo select _forEachIndex];
};
} forEach _magazines;
removeAllPrimaryWeaponItems _unit;
{

View File

@ -1,4 +1,3 @@
class Extended_PreStart_EventHandlers {
class ADDON {
init = QUOTE(call COMPILE_FILE(XEH_preStart));

View File

@ -9,16 +9,18 @@ class CfgWeapons {
class InventoryFlashLightItem_Base_F;
class acc_pointer_IR: ItemCore {
ACE_nextModeClass = "ACE_acc_pointer_red";
ACE_modeDescription = CSTRING(IRLaser);
MRT_SwitchItemNextClass = "ACE_acc_pointer_red";
MRT_SwitchItemPrevClass = "ACE_acc_pointer_red";
MRT_switchItemHintText = CSTRING(IRLaser);
displayName = CSTRING(red);
descriptionUse = CSTRING(useLaser);
};
class ACE_acc_pointer_red: ItemCore {
ACE_nextModeClass = "acc_pointer_IR";
ACE_modeDescription = CSTRING(Laser);
MRT_SwitchItemNextClass = "acc_pointer_IR";
MRT_SwitchItemPrevClass = "acc_pointer_IR";
MRT_switchItemHintText = CSTRING(Laser);
ACE_laserpointer = 1;
@ -68,8 +70,9 @@ class CfgWeapons {
};
class ACE_acc_pointer_green_IR: acc_pointer_IR {
ACE_nextModeClass = "ACE_acc_pointer_green";
ACE_modeDescription = CSTRING(IRLaser);
MRT_SwitchItemNextClass = "ACE_acc_pointer_green";
MRT_SwitchItemPrevClass = "ACE_acc_pointer_green";
MRT_switchItemHintText = CSTRING(IRLaser);
author = ECSTRING(common,ACETeam);
_generalMacro = "ACE_acc_pointer_green";
@ -78,8 +81,9 @@ class CfgWeapons {
};
class ACE_acc_pointer_green: ACE_acc_pointer_red {
ACE_nextModeClass = "ACE_acc_pointer_green_IR";
ACE_modeDescription = CSTRING(Laser);
MRT_SwitchItemNextClass = "ACE_acc_pointer_green_IR";
MRT_SwitchItemPrevClass = "ACE_acc_pointer_green_IR";
MRT_switchItemHintText = CSTRING(Laser);
ACE_laserpointer = 2;

View File

@ -1,5 +1,3 @@
PREP(drawLaserpoint);
PREP(getNearUnits);
PREP(onDraw);
PREP(switchLaserLightMode);

View File

@ -2,7 +2,7 @@
#include "script_component.hpp"
// fixes laser when being captured. Needed, because the selectionPosition of the right hand is used
[QEGVAR(captives,setHandcuffed), {if (_this select 1) then {(_this select 0) action ["ace_gunLightOff", _this select 0]};}] call CBA_fnc_addEventHandler;
[QEGVAR(captives,setHandcuffed), {if (_this select 1) then {(_this select 0) action ["GunLightOff", _this select 0]};}] call CBA_fnc_addEventHandler;
if (!hasInterface) exitWith {};
@ -12,11 +12,18 @@ GVAR(laserClassesCache) = [] call CBA_fnc_createNamespace;
GVAR(redLaserUnits) = [];
GVAR(greenLaserUnits) = [];
#include "initKeybinds.sqf"
["ace_settingsInitialized", {
// if not enabled, dont't add draw eventhandler or PFEH (for performance)
if !(GVAR(enabled)) exitWith {};
// If not enabled, dont't add draw eventhandler or PFEH (for performance)
if (!GVAR(enabled)) exitWith {
["CBA_attachmentSwitched", {
params ["_unit", "_prevItem", "_newItem", "_currWeaponType"];
TRACE_4("CBA_attachmentSwitched eh",_unit,_prevItem,_newItem,_currWeaponType);
if ((getNumber (configFile >> "CfgWeapons" >> _newItem >> "ACE_laserpointer")) > 0) then {
TRACE_1("removing ACE_laserpointer",getNumber (configFile >> "CfgWeapons" >> _newItem >> "ACE_laserpointer"));
[1, "prev"] call CBA_accessory_fnc_switchAttachment;
};
}] call CBA_fnc_addEventHandler;
};
[{
private _oldNearUnits = GVAR(nearUnits);

View File

@ -1,54 +0,0 @@
/*
* Author: Commy2
* Switch between laser modes.
*
* Arguments:
* 0: Unit <OBJECT>
* 1: Weapon <STRING>
*
* Return Value:
* None
*
* Public: No
*/
#include "script_component.hpp"
params ["_unit", "_weapon"];
private _pointer = (_unit weaponAccessories _weapon) select 1;
if (_pointer == "") exitWith {};
private _config = configFile >> "CfgWeapons" >> _pointer;
private _nextPointer = getText (_config >> "ACE_nextModeClass");
if (_nextPointer == "") exitWith {};
//If system disabled, don't switch to a laser:
private _nextPointerIsLaser = getNumber (configFile >> "CfgWeapons" >> _nextPointer >> "ACE_laserpointer");
if ((!GVAR(enabled)) && {_nextPointerIsLaser == 1}) exitWith {};
// disable inheritance for this entry, because addons claim this as a base class for convenience
if !((_config >> "ACE_nextModeClass") in configProperties [_config, "true", false]) exitWith {};
_unit addWeaponItem [_weapon, _nextPointer];
private _error = false;
if ((_unit weaponAccessories _weapon) select 1 != _nextPointer) then {
ERROR("NextPointer not compatible");
_unit addWeaponItem [_weapon, _pointer];
_error = true;
};
if (!_error) then {
private _description = getText (configFile >> "CfgWeapons" >> _nextPointer >> "ACE_modeDescription");
private _picture = getText (configFile >> "CfgWeapons" >> _nextPointer >> "picture");
[_description, _picture] call EFUNC(common,displayTextPicture);
} else {
ERROR_3("Failed to add %1 to %2 - reverting to %3",_nextPointer,_weapon,_pointer);
};
playSound "ACE_Sound_Click";

View File

@ -1,13 +0,0 @@
// by commy2
["ACE3 Weapons", QGVAR(switchLaserLightMode), localize LSTRING(switchLaserLight),
{
// Conditions: canInteract
if !([ACE_player, objNull, ["isNotInside", "isNotSitting"]] call EFUNC(common,canInteractWith)) exitWith {false};
// Conditions: specific
if !([ACE_player] call CBA_fnc_canUseWeapon) exitWith {false};
[ACE_player, currentWeapon ACE_player] call FUNC(switchLaserLightMode);
true
},
{false}, [38, [false, true, false]], false] call CBA_fnc_addKeybind;

View File

@ -10,6 +10,7 @@ class CfgSettings {
//Warnings for missing RHS compat pbos
compat_rhs_afrf3[] = {"ace_compat_rhs_afrf3", {VERSION_AR}, "isClass (configFile >> 'CfgPatches' >> 'rhs_main')"};
compat_rhs_usf3[] = {"ace_compat_rhs_usf3", {VERSION_AR}, "isClass (configFile >> 'CfgPatches' >> 'rhsusf_main')"};
compat_rhs_gref3[] = {"ace_compat_rhs_gref3", {VERSION_AR}, "isClass (configFile >> 'CfgPatches' >> 'rhsgref_main')"};
};
};
};

View File

@ -10,7 +10,7 @@
// MINIMAL required version for the Mod. Components can specify others..
#define REQUIRED_VERSION 1.64
#define REQUIRED_CBA_VERSION {3,1,2}
#define REQUIRED_CBA_VERSION {3,2,1}
#ifdef COMPONENT_BEAUTIFIED
#define COMPONENT_NAME QUOTE(ACE3 - COMPONENT_BEAUTIFIED)

View File

@ -27,7 +27,7 @@
<Czech>Žádné zranění na této části těla...</Czech>
<Portuguese>Nenhum ferimento nesta parte do corpo...</Portuguese>
<Japanese>怪我をしていない</Japanese>
<Korean>에는 부상이 없습니다...</Korean>
<Korean> 부위에는 부상이 없습니다...</Korean>
</Key>
<Key ID="STR_ACE_Medical_Inject_Adenosine">
<English>Inject Adenosine</English>
@ -1554,7 +1554,7 @@
<Czech>Použít osobní lékárničku (PAK)</Czech>
<Italian>Usa il pronto soccorso personale</Italian>
<Japanese>応急処置キットをつかう</Japanese>
<Korean>개 응급 키트사용하기</Korean>
<Korean> 응급 키트사용하기</Korean>
</Key>
<Key ID="STR_ACE_Medical_SurgicalKit_Display">
<English>Surgical Kit</English>
@ -1624,7 +1624,7 @@
<Portuguese>Saco para cadáver</Portuguese>
<Czech>Pytel na mrtvoly</Czech>
<Japanese>死体袋</Japanese>
<Korean>시체 운반 부대</Korean>
<Korean>시체 가방</Korean>
</Key>
<Key ID="STR_ACE_Medical_Bodybag_Desc_Short">
<English>A bodybag for dead bodies</English>
@ -1638,7 +1638,7 @@
<Portuguese>Um saco para corpos mortos</Portuguese>
<Czech>Pytel na mrtvoly</Czech>
<Japanese>死体袋は死体を入れるためにつかいます</Japanese>
<Korean>시체를 운반할때 쓰는 부대입니다</Korean>
<Korean>시체를 운반할때 쓰는 가방입니다</Korean>
</Key>
<Key ID="STR_ACE_Medical_Bodybag_Desc_Use">
<English>A bodybag for dead bodies</English>
@ -1652,7 +1652,7 @@
<Portuguese>Um saco para corpos mortos.</Portuguese>
<Czech>Pytel na mrtvoly</Czech>
<Japanese>死体袋は死体を入れるためにつかいます</Japanese>
<Korean>시체를 운반할때 쓰는 부대입니다</Korean>
<Korean>시체를 운반할때 쓰는 가방입니다</Korean>
</Key>
<Key ID="STR_ACE_Medical_Check_Bloodpressure">
<English>Blood Pressure</English>
@ -2198,7 +2198,7 @@
<Czech>Je v bolestech</Czech>
<Portuguese>Ele está com dor</Portuguese>
<Japanese>彼には痛みがあるようだ</Japanese>
<Korean>고통스럽</Korean>
<Korean>통증이 있</Korean>
</Key>
<Key ID="STR_ACE_Medical_noPain">
<English>He is not in pain</English>
@ -2212,7 +2212,7 @@
<Czech>Nemá žádné bolesti</Czech>
<Portuguese>Ele não está com dor</Portuguese>
<Japanese>彼には痛みがないようだ</Japanese>
<Korean>고통스럽지 않</Korean>
<Korean>통증이 없</Korean>
</Key>
<Key ID="STR_ACE_Medical_Bandaged">
<English>Bandaged</English>
@ -2436,7 +2436,7 @@
<Portuguese>Colocar corpo dentro do saco para cadáver</Portuguese>
<Czech>Umístni tělo do pytle na mrtvoly</Czech>
<Japanese>死体袋に入れる</Japanese>
<Korean>시체 운반 부대에 담기</Korean>
<Korean>시체 가방에 담기</Korean>
</Key>
<Key ID="STR_ACE_Medical_PlacingInBodyBag">
<English>Placing body in bodybag...</English>
@ -2450,7 +2450,7 @@
<Portuguese>Colocando corpo dentro do saco para cadáver...</Portuguese>
<Czech>Umístňuji tělo do pytle na mrtvoly...</Czech>
<Japanese>死体袋へ梱包中・・・</Japanese>
<Korean>시체 운반 부대에 담는중...</Korean>
<Korean>시체 가방에 담는중...</Korean>
</Key>
<Key ID="STR_ACE_Medical_Activity_bandagedPatient">
<English>%1 has bandaged patient</English>
@ -2577,7 +2577,7 @@
<Czech>Velmi lehce raněn</Czech>
<Portuguese>Muito levemente ferido</Portuguese>
<Japanese>かなり浅い傷</Japanese>
<Korean>부상</Korean>
<Korean>매우 가벼운 부상</Korean>
</Key>
<Key ID="STR_ACE_Medical_Head">
<English>Head</English>
@ -2814,7 +2814,7 @@
<Hungarian>Milyen komplex legyen az orvosi szimuláció?</Hungarian>
<Italian>Qual'è il livello di simulazione medica?</Italian>
<Japanese>治療の再現度は?</Japanese>
<Korean>치료 시뮬레이션 정도?</Korean>
<Korean>의료 시뮬레이션의 수준</Korean>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_medicSetting_DisplayName">
<English>Medics setting</English>
@ -3128,7 +3128,7 @@
<Hungarian>Engedélyezve</Hungarian>
<Italian>Abilitato per</Italian>
<Japanese>次を有効化</Japanese>
<Korean>다음을 활성</Korean>
<Korean>활성</Korean>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_enableFor_Description">
<English>Select what units the advanced medical system will be enabled for</English>
@ -3310,7 +3310,7 @@
<Hungarian>Csak orvosok</Hungarian>
<Italian>Solo medici</Italian>
<Japanese>衛生兵のみ</Japanese>
<Korean>오직 의무병만</Korean>
<Korean>의무병만</Korean>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_Special">
<English>Doctors only</English>

View File

@ -35,6 +35,12 @@ class CfgVehicles {
typeName = "STRING";
defaultValue = "";
};
class SetName {
displayName = CSTRING(SetName_DisplayName);
description = CSTRING(SetName_Description);
typeName = "STRING";
defaultValue = "";
};
class Duration {
displayName = CSTRING(Duration_DisplayName);
description = CSTRING(Duration_Description);

View File

@ -8,24 +8,25 @@
* 2: Image Paths <ARRAY>
* 3: Action Names <ARRAY>
* 4: Slide Duration <NUMBER> (0 disables automatic transitions)
* 5: Set Name <STRING> (default: localized "Slides")
*
* Return Value:
* None
*
* Example:
* [[object1, object2, object3], [controller1], ["images\image1.paa", "images\image2.paa"], ["Action1", "Action2"], 5] call ace_slideshow_fnc_createSlideshow
* [[object1, object2, object3], [controller1], ["images\image1.paa", "images\image2.paa"], ["Action1", "Action2"], 5, "My Slides"] call ace_slideshow_fnc_createSlideshow
*
* Public: Yes
*/
#include "script_component.hpp"
private ["_currentSlideshow", "_slidesAction", "_varString"];
params [
["_objects", [], [[]] ],
["_controllers", [], [[]] ],
["_images", [], [[]] ],
["_names", [], [[]] ],
["_duration", 0, [0]]
["_duration", 0, [0]],
["_setName", localize LSTRING(Interaction), [""]]
];
// Verify data
@ -41,7 +42,7 @@ if (_controllers isEqualTo []) then {
_controllers = _objects;
};
TRACE_4("Information",_objects,_controllers,_images,_names);
TRACE_5("Information",_objects,_controllers,_images,_names,_setName);
if (isServer) then {
// Default images on whiteboards (first image)
@ -53,7 +54,7 @@ if (isServer) then {
GVAR(slideshows) = GVAR(slideshows) + 1;
};
_currentSlideshow = GVAR(slideshows); // Local variable in case GVAR gets changed during execution of below code
private _currentSlideshow = GVAR(slideshows); // Local variable in case GVAR gets changed during execution of below code
// If interaction menu module is not present, set default duration value
if !(["ace_interact_menu"] call EFUNC(common,isModLoaded)) then {
@ -64,8 +65,22 @@ if !(["ace_interact_menu"] call EFUNC(common,isModLoaded)) then {
// Add interactions if automatic transitions are disabled, else setup automatic transitions
if (_duration == 0) then {
{
if (_setName == "") then {
_setName = localize LSTRING(Interaction);
};
// Add Slides sub-action and populate with images
_slidesAction = [QGVAR(Slides), localize LSTRING(Interaction), "", {}, {true}, {(_this select 2) call FUNC(addSlideActions)}, [_objects, _images, _names, _x, _currentSlideshow], [0, 0, 0], 2] call EFUNC(interact_menu,createAction);
private _slidesAction = [
format [QGVAR(slideshow%1), _currentSlideshow],
_setName,
"",
{},
{true},
{(_this select 2) call FUNC(addSlideActions)},
[_objects, _images, _names, _x, _currentSlideshow],
[0, 0, 0],
2
] call EFUNC(interact_menu,createAction);
[_x, 0, ["ACE_MainActions"], _slidesAction] call EFUNC(interact_menu,addActionToObject);
nil
} count _controllers;
@ -73,7 +88,7 @@ if (_duration == 0) then {
if !(isServer) exitWith {};
// Formatted GVAR string (multiple modules support)
_varString = format [QGVAR(slideshow%1), _currentSlideshow];
private _varString = format [QGVAR(slideshow%1), _currentSlideshow];
TRACE_1("Current Slide",_varString);
// Set formatted GVAR to first slide

View File

@ -17,18 +17,18 @@
// Exit on Headless Client
if (!hasInterface && !isDedicated) exitWith {};
private ["_objects", "_controllers", "_images", "_names", "_duration"];
params [["_logic", objNull, [objNull]], "_units", "_activated"];
if !(_activated) exitWith {};
if (isNull _logic) exitWith {};
// Extract variables from logic
_objects = [_logic getVariable ["Objects", ""], true, true] call EFUNC(common,parseList);
_controllers = [_logic getVariable ["Controllers", ""], true, true] call EFUNC(common,parseList);
_images = [_logic getVariable ["Images", ""], false, false] call EFUNC(common,parseList);
_names = [_logic getVariable ["Names", ""], false, false] call EFUNC(common,parseList);
_duration = _logic getVariable ["Duration", 0];
private _objects = [_logic getVariable ["Objects", ""], true, true] call EFUNC(common,parseList);
private _controllers = [_logic getVariable ["Controllers", ""], true, true] call EFUNC(common,parseList);
private _images = [_logic getVariable ["Images", ""], false, false] call EFUNC(common,parseList);
private _names = [_logic getVariable ["Names", ""], false, false] call EFUNC(common,parseList);
private _setName = _logic getVariable ["SetName", ""];
private _duration = _logic getVariable ["Duration", 0];
// Objects synced to the module
{
@ -37,6 +37,6 @@ _duration = _logic getVariable ["Duration", 0];
} count (synchronizedObjects _logic);
// Prepare with actions
[_objects, _controllers, _images, _names, _duration] call FUNC(createSlideshow);
[_objects, _controllers, _images, _names, _duration, _setName] call FUNC(createSlideshow);
INFO_1("Slideshow Module Initialized on %1 Objects", count _objects);

View File

@ -44,18 +44,18 @@
<Korean>물체</Korean>
</Key>
<Key ID="STR_ACE_Slideshow_Objects_Description">
<English>Object names (can also be synchronized objects) slide-show will be displayed on, separated by commas if multiple. Reference INFO for object support.</English>
<German>Objektnamen (können auch synchronisierte Objekte sein) auf denen die Diavorführung abgepielt wird. Werden ggf. durch Kommata getrennt. Weiteres in der INFO für unterstützte Objekte.</German>
<English>Object names (can also be synchronized objects) slide-show will be displayed on, separated by commas if multiple.</English>
<German>Objektnamen (können auch synchronisierte Objekte sein) auf denen die Diavorführung abgepielt wird. Werden ggf. durch Kommata getrennt.</German>
<French>Nom d'objets (peuvent aussi être des objets synchronisés) sur lesquels les diaporamas vont être affichées, séparation par virgule si plusieurs.</French>
<Polish>Nazwy obiektów (mogą to też być zsynchronizowane obiekty) na których pokaz slajdów zostanie pokazany, oddzielony przecinkiem jeżeli jest ich więcej niż 1. Sprawdź opis modułu aby dowiedzieć się jakie obiekty są wspierane przez moduł.</Polish>
<Hungarian>Objektum nevek (szinkronizált is lehet) amik a vetítésen megjelennek, több darab esetén vesszővel elválasztva. Objektumtámogatásért az INFO-t tekintsd meg.</Hungarian>
<Portuguese>Nomes dos objetos (também podem ser objetos sincronizados) em que a apresentação de slides será mostrada, separado por vírgulas se for mais de um. Referência INFO para suporte do objeto.</Portuguese>
<Russian>Имена объектов (так же могут использоваться синхронизированные объекты), на которых будет отображаться слайд-шоу, разделенные запятыми. Посмотрите описание, чтобы понять, какие объекты поддерживаются.</Russian>
<Spanish>Los nombres de objetos (también pueden ser objetos sincronizados) de diapositivas se mostrarán en, separados por comas. Referencia INFO para el soporte del objeto.</Spanish>
<Czech>Jména objektů (lze také použít synchronizované objekty) které se budou zobrazovat v prezentaci, oddělit čárkou pokud jich je více. Zkontrolujte POPIS abyste zjistili, zda je objekt podporován modulem.</Czech>
<Italian>Nomi di oggetti (possono anche essere oggetti sincronizzati) che verranno usati per la presentazione di diapositive, separato da virgole se più di uno. Fai riferimento ad INFO per gli oggetti supportati.</Italian>
<Polish>Nazwy obiektów (mogą to też być zsynchronizowane obiekty) na których pokaz slajdów zostanie pokazany, oddzielony przecinkiem jeżeli jest ich więcej niż 1.</Polish>
<Hungarian>Objektum nevek (szinkronizált is lehet) amik a vetítésen megjelennek, több darab esetén vesszővel elválasztva.</Hungarian>
<Portuguese>Nomes dos objetos (também podem ser objetos sincronizados) em que a apresentação de slides será mostrada, separado por vírgulas se for mais de um.</Portuguese>
<Russian>Имена объектов (так же могут использоваться синхронизированные объекты), на которых будет отображаться слайд-шоу, разделенные запятыми.</Russian>
<Spanish>Los nombres de objetos (también pueden ser objetos sincronizados) de diapositivas se mostrarán en, separados por comas.</Spanish>
<Czech>Jména objektů (lze také použít synchronizované objekty) které se budou zobrazovat v prezentaci, oddělit čárkou pokud jich je více.</Czech>
<Italian>Nomi di oggetti (possono anche essere oggetti sincronizzati) che verranno usati per la presentazione di diapositive, separato da virgole se più di uno.</Italian>
<Japanese>スライドショーを表示するオブジェクト名 (オブジェクトとの同期も可)。複数ある場合はコンマで区切れます</Japanese>
<Korean>슬라이드 쇼가 보여질 물체(동기화 되는 물체도 가능합니다) 명칭, 다수의 경우 쉼표로 구분합니다. 자세한 물체목록은 INFO에서 확인하십시요.</Korean>
<Korean>슬라이드 쇼가 보여질 물체(동기화 되는 물체도 가능합니다) 명칭, 다수의 경우 쉼표로 구분합니다.</Korean>
</Key>
<Key ID="STR_ACE_Slideshow_Controllers_DisplayName">
<English>Controllers</English>
@ -139,6 +139,12 @@
<Japanese>画像を操作できるインタラクション エントリ名の一覧を入力してください。コンマで区切り複数を指定できます。</Japanese>
<Korean>상호작용 메세지에 쓰일 명칭입니다, 쉼표로 구분합니다, 이미지의 순서입니다.</Korean>
</Key>
<Key ID="STR_ACE_Slideshow_SetName_DisplayName">
<English>Set Name</English>
</Key>
<Key ID="STR_ACE_Slideshow_SetName_Description">
<English>Name that will be used for main interaction entry (to distinguish multiple slideshows). Default: "Slides"</English>
</Key>
<Key ID="STR_ACE_Slideshow_Duration_DisplayName">
<English>Slide Duration</English>
<French>Durée d'une diapositive</French>

View File

@ -20,6 +20,7 @@ PREP(moduleSurrender);
PREP(moduleTeleportPlayers);
PREP(moduleUnconscious);
PREP(moduleZeusSettings);
PREP(showMessage);
PREP(ui_attributeCargo);
//PREP(ui_attributePosition);
PREP(ui_attributeRadius);

View File

@ -19,27 +19,27 @@ params ["_logic", "_units", "_activated"];
if !(_activated && {local _logic}) exitWith {};
if !(["ace_fastroping"] call EFUNC(common,isModLoaded)) then {
[LSTRING(RequiresAddon)] call EFUNC(common,displayTextStructured);
[LSTRING(RequiresAddon)] call FUNC(showMessage);
} else {
(GETMVAR(BIS_fnc_curatorObjectPlaced_mouseOver,[""])) params ["_mouseOverType", "_mouseOverUnit"];
if (_mouseOverType != "OBJECT") then {
[LSTRING(NothingSelected)] call EFUNC(common,displayTextStructured);
[LSTRING(NothingSelected)] call FUNC(showMessage);
} else {
if !(alive _mouseOverUnit) then {
[LSTRING(OnlyAlive)] call EFUNC(common,displayTextStructured);
[LSTRING(OnlyAlive)] call FUNC(showMessage);
} else {
private _config = configFile >> "CfgVehicles" >> typeOf _mouseOverUnit;
private _displayName = getText (_config >> "displayName");
if !(isNumber (_config >> QEGVAR(fastroping,enabled))) then {
[[LSTRING(NotFastRopeCompatible), _displayName]] call EFUNC(common,displayTextStructured);
[LSTRING(NotFastRopeCompatible), _displayName] call FUNC(showMessage);
} else {
private _fries = GETVAR(_mouseOverUnit,EGVAR(fastroping,FRIES),objNull);
if (isNull _fries) then {
[QGVAR(equipFries), [_mouseOverUnit]] call CBA_fnc_serverEvent;
} else {
if ([_mouseOverUnit] call EFUNC(fastroping,canCutRopes)) then {
[[LSTRING(CantRemoveFRIES), _displayName]] call EFUNC(common,displayTextStructured);
[LSTRING(CantRemoveFRIES), _displayName] call FUNC(showMessage);
} else {
[_mouseOverUnit] call EFUNC(fastroping,cutRopes);
deleteVehicle _fries;

View File

@ -19,18 +19,18 @@ params ["_logic", "_units", "_activated"];
if !(_activated && local _logic) exitWith {};
if !(["ace_cargo"] call EFUNC(common,isModLoaded) && ["ace_repair"] call EFUNC(common,isModLoaded)) then {
[LSTRING(RequiresAddon)] call EFUNC(common,displayTextStructured);
[LSTRING(RequiresAddon)] call FUNC(showMessage);
} else {
(GETMVAR(bis_fnc_curatorObjectPlaced_mouseOver,[""])) params ["_mouseOverType", "_mouseOverUnit"];
if (_mouseOverType != "OBJECT") then {
[LSTRING(NothingSelected)] call EFUNC(common,displayTextStructured);
[LSTRING(NothingSelected)] call FUNC(showMessage);
} else {
if !(alive _mouseOverUnit) then {
[LSTRING(OnlyAlive)] call EFUNC(common,displayTextStructured);
[LSTRING(OnlyAlive)] call FUNC(showMessage);
} else {
if (getNumber (configFile >> "CfgVehicles" >> "ACE_Track" >> QEGVAR(cargo,size)) > [_mouseOverUnit] call EFUNC(cargo,getCargoSpaceLeft)) then {
[LSTRING(OnlyEnoughCargoSpace)] call EFUNC(common,displayTextStructured);
[LSTRING(OnlyEnoughCargoSpace)] call FUNC(showMessage);
} else {
["ace_addCargo", ["ACE_Track", _mouseOverUnit, 1, true]] call CBA_fnc_localEvent;
};

View File

@ -19,18 +19,18 @@ params ["_logic", "_units", "_activated"];
if !(_activated && local _logic) exitWith {};
if !(["ace_cargo"] call EFUNC(common,isModLoaded) && ["ace_repair"] call EFUNC(common,isModLoaded)) then {
[LSTRING(RequiresAddon)] call EFUNC(common,displayTextStructured);
[LSTRING(RequiresAddon)] call FUNC(showMessage);
} else {
(GETMVAR(bis_fnc_curatorObjectPlaced_mouseOver,[""])) params ["_mouseOverType", "_mouseOverUnit"];
if (_mouseOverType != "OBJECT") then {
[LSTRING(NothingSelected)] call EFUNC(common,displayTextStructured);
[LSTRING(NothingSelected)] call FUNC(showMessage);
} else {
if !(alive _mouseOverUnit) then {
[LSTRING(OnlyAlive)] call EFUNC(common,displayTextStructured);
[LSTRING(OnlyAlive)] call FUNC(showMessage);
} else {
if (getNumber (configFile >> "CfgVehicles" >> "ACE_Wheel" >> QEGVAR(cargo,size)) > [_mouseOverUnit] call EFUNC(cargo,getCargoSpaceLeft)) then {
[LSTRING(OnlyEnoughCargoSpace)] call EFUNC(common,displayTextStructured);
[LSTRING(OnlyEnoughCargoSpace)] call FUNC(showMessage);
} else {
["ace_addCargo", ["ACE_Wheel", _mouseOverUnit, 1, true]] call CBA_fnc_localEvent;
};

View File

@ -21,20 +21,20 @@ private ["_mouseOver", "_unit", "_captive"];
if !(_activated && local _logic) exitWith {};
if (isNil QEFUNC(captives,setHandcuffed)) then {
[LSTRING(RequiresAddon)] call EFUNC(common,displayTextStructured);
[LSTRING(RequiresAddon)] call FUNC(showMessage);
} else {
_mouseOver = GETMVAR(bis_fnc_curatorObjectPlaced_mouseOver,[""]);
if ((_mouseOver select 0) != "OBJECT") then {
[LSTRING(NothingSelected)] call EFUNC(common,displayTextStructured);
[LSTRING(NothingSelected)] call FUNC(showMessage);
} else {
_unit = effectivecommander (_mouseOver select 1);
if !(_unit isKindOf "CAManBase") then {
[LSTRING(OnlyInfantry)] call EFUNC(common,displayTextStructured);
[LSTRING(OnlyInfantry)] call FUNC(showMessage);
} else {
if !(alive _unit) then {
[LSTRING(OnlyAlive)] call EFUNC(common,displayTextStructured);
[LSTRING(OnlyAlive)] call FUNC(showMessage);
} else {
_captive = GETVAR(_unit,EGVAR(captives,isHandcuffed),false);
// Event initalized by ACE_Captives

View File

@ -27,7 +27,7 @@ scopeName "Main";
private _fnc_errorAndClose = {
params ["_msg"];
deleteVehicle _logic;
[_msg] call EFUNC(common,displayTextStructured);
[_msg] call FUNC(showMessage);
breakOut "Main";
};

View File

@ -21,23 +21,23 @@ private ["_mouseOver", "_unit", "_medicN"];
if !(_activated && local _logic) exitWith {};
if !(["ACE_Medical"] call EFUNC(common,isModLoaded)) then {
[LSTRING(RequiresAddon)] call EFUNC(common,displayTextStructured);
[LSTRING(RequiresAddon)] call FUNC(showMessage);
} else {
_mouseOver = GETMVAR(bis_fnc_curatorObjectPlaced_mouseOver,[""]);
if ((_mouseOver select 0) != "OBJECT") then {
[LSTRING(NothingSelected)] call EFUNC(common,displayTextStructured);
[LSTRING(NothingSelected)] call FUNC(showMessage);
} else {
_unit = effectivecommander (_mouseOver select 1);
if !(_unit isKindOf "CAManBase") then {
[LSTRING(OnlyInfantry)] call EFUNC(common,displayTextStructured);
[LSTRING(OnlyInfantry)] call FUNC(showMessage);
} else {
if !(alive _unit) then {
[LSTRING(OnlyAlive)] call EFUNC(common,displayTextStructured);
[LSTRING(OnlyAlive)] call FUNC(showMessage);
} else {
if (GETVAR(_unit,EGVAR(captives,isHandcuffed),false)) then {
[LSTRING(OnlyNonCaptive)] call EFUNC(common,displayTextStructured);
[LSTRING(OnlyNonCaptive)] call FUNC(showMessage);
} else {
_medicN = GETVAR(_unit,EGVAR(medical,medicClass),0);
if (_medicN < 1) then {

View File

@ -21,23 +21,23 @@ private ["_mouseOver", "_unit"];
if !(_activated && local _logic) exitWith {};
if !(["ACE_Medical"] call EFUNC(common,isModLoaded)) then {
[LSTRING(RequiresAddon)] call EFUNC(common,displayTextStructured);
[LSTRING(RequiresAddon)] call FUNC(showMessage);
} else {
_mouseOver = GETMVAR(bis_fnc_curatorObjectPlaced_mouseOver,[""]);
if ((_mouseOver select 0) != "OBJECT") then {
[LSTRING(NothingSelected)] call EFUNC(common,displayTextStructured);
[LSTRING(NothingSelected)] call FUNC(showMessage);
} else {
_unit = (_mouseOver select 1);
if (_unit isKindOf "Man" || {!(_unit isKindOf "Building")}) then {
[LSTRING(OnlyStructures)] call EFUNC(common,displayTextStructured);
[LSTRING(OnlyStructures)] call FUNC(showMessage);
} else {
if !(alive _unit) then {
[LSTRING(OnlyAlive)] call EFUNC(common,displayTextStructured);
[LSTRING(OnlyAlive)] call FUNC(showMessage);
} else {
if (GETVAR(_unit,EGVAR(captives,isHandcuffed),false)) then {
[LSTRING(OnlyNonCaptive)] call EFUNC(common,displayTextStructured);
[LSTRING(OnlyNonCaptive)] call FUNC(showMessage);
} else {
if (!(GETVAR(_unit,EGVAR(medical,isMedicalFacility),false))) then {
_unit setVariable [QEGVAR(medical,isMedicalFacility), true, true];

View File

@ -21,23 +21,23 @@ private ["_mouseOver", "_unit", "_medicN"];
if !(_activated && local _logic) exitWith {};
if !(["ACE_Medical"] call EFUNC(common,isModLoaded)) then {
[LSTRING(RequiresAddon)] call EFUNC(common,displayTextStructured);
[LSTRING(RequiresAddon)] call FUNC(showMessage);
} else {
_mouseOver = GETMVAR(bis_fnc_curatorObjectPlaced_mouseOver,[""]);
if ((_mouseOver select 0) != "OBJECT") then {
[LSTRING(NothingSelected)] call EFUNC(common,displayTextStructured);
[LSTRING(NothingSelected)] call FUNC(showMessage);
} else {
_unit = (_mouseOver select 1);
if (_unit isKindOf "Man" || {_unit isKindOf "Building"}) then {
[LSTRING(OnlyVehicles)] call EFUNC(common,displayTextStructured);
[LSTRING(OnlyVehicles)] call FUNC(showMessage);
} else {
if !(alive _unit) then {
[LSTRING(OnlyAlive)] call EFUNC(common,displayTextStructured);
[LSTRING(OnlyAlive)] call FUNC(showMessage);
} else {
if (GETVAR(_unit,EGVAR(captives,isHandcuffed),false)) then {
[LSTRING(OnlyNonCaptive)] call EFUNC(common,displayTextStructured);
[LSTRING(OnlyNonCaptive)] call FUNC(showMessage);
} else {
_medicN = GETVAR(_unit,EGVAR(medical,medicClass),0);
if (_medicN < 1) then {

View File

@ -19,7 +19,7 @@ if !(local _logic) exitWith {};
private _object = attachedTo _logic;
if (isNull _object) then {
[LSTRING(NothingSelected)] call EFUNC(common,displayTextStructured);
[LSTRING(NothingSelected)] call FUNC(showMessage);
} else {
[QEGVAR(common,enableSimulationGlobal), [_object, !(simulationEnabled _object)]] call CBA_fnc_serverEvent;
};

View File

@ -21,23 +21,23 @@ private ["_mouseOver", "_unit", "_surrendering"];
if !(_activated && local _logic) exitWith {};
if (isNil QEFUNC(captives,setSurrendered)) then {
[LSTRING(RequiresAddon)] call EFUNC(common,displayTextStructured);
[LSTRING(RequiresAddon)] call FUNC(showMessage);
} else {
_mouseOver = GETMVAR(bis_fnc_curatorObjectPlaced_mouseOver,[""]);
if ((_mouseOver select 0) != "OBJECT") then {
[LSTRING(NothingSelected)] call EFUNC(common,displayTextStructured);
[LSTRING(NothingSelected)] call FUNC(showMessage);
} else {
_unit = effectivecommander (_mouseOver select 1);
if !(_unit isKindOf "CAManBase") then {
[LSTRING(OnlyInfantry)] call EFUNC(common,displayTextStructured);
[LSTRING(OnlyInfantry)] call FUNC(showMessage);
} else {
if !(alive _unit) then {
[LSTRING(OnlyAlive)] call EFUNC(common,displayTextStructured);
[LSTRING(OnlyAlive)] call FUNC(showMessage);
} else {
if (GETVAR(_unit,EGVAR(captives,isHandcuffed),false)) then {
[LSTRING(OnlyNonCaptive)] call EFUNC(common,displayTextStructured);
[LSTRING(OnlyNonCaptive)] call FUNC(showMessage);
} else {
_surrendering = GETVAR(_unit,EGVAR(captives,isSurrendering),false);
// Event initalized by ACE_Captives

View File

@ -21,20 +21,20 @@ private ["_mouseOver", "_unit", "_conscious"];
if !(_activated && local _logic) exitWith {};
if (isNil QEFUNC(medical,setUnconscious)) then {
[LSTRING(RequiresAddon)] call EFUNC(common,displayTextStructured);
[LSTRING(RequiresAddon)] call FUNC(showMessage);
} else {
_mouseOver = GETMVAR(bis_fnc_curatorObjectPlaced_mouseOver,[""]);
if ((_mouseOver select 0) != "OBJECT") then {
[LSTRING(NothingSelected)] call EFUNC(common,displayTextStructured);
[LSTRING(NothingSelected)] call FUNC(showMessage);
} else {
_unit = effectivecommander (_mouseOver select 1);
if !(_unit isKindOf "CAManBase") then {
[LSTRING(OnlyInfantry)] call EFUNC(common,displayTextStructured);
[LSTRING(OnlyInfantry)] call FUNC(showMessage);
} else {
if !(alive _unit) then {
[LSTRING(OnlyAlive)] call EFUNC(common,displayTextStructured);
[LSTRING(OnlyAlive)] call FUNC(showMessage);
} else {
_conscious = GETVAR(_unit,ACE_isUnconscious,false);
// Function handles locality for me

View File

@ -0,0 +1,24 @@
/*
* Author: 654wak654
* Shows a zeus message through the BIS function, handles localization.
* If multiple args are given, they get formatted.
*
* Arguments:
* 0: The message <STRING>
* N: Anything <ANY><OPTIONAL>
*
* Return Value:
* Nothing
*
* Example:
* ["something"] call ace_zeus_fnc_showMessage
* ["something %1 in %2", "strange", getPos neighborhood] call ace_zeus_fnc_showMessage
*
* Public: Yes
*/
#include "script_component.hpp"
if (!(_this isEqualTypeParams [""])) exitWith {ERROR_1("First arg must be string [%1]",_this);};
private _message = _this apply {if ((_x isEqualType "") && {isLocalized _x}) then {localize _x} else {_x}};
[objNull, format _message] call BIS_fnc_showCuratorFeedbackMessage;

View File

@ -28,7 +28,7 @@ private _fnc_errorAndClose = {
params ["_msg"];
_display closeDisplay 0;
deleteVehicle _logic;
[_msg] call EFUNC(common,displayTextStructured);
[_msg] call FUNC(showMessage);
breakOut "Main";
};

View File

@ -33,7 +33,7 @@ private _fnc_errorAndClose = {
params ["_msg"];
_display closeDisplay 0;
deleteVehicle _logic;
[_msg] call EFUNC(common,displayTextStructured);
[_msg] call FUNC(showMessage);
breakOut "Main";
};

View File

@ -28,7 +28,7 @@ private _fnc_errorAndClose = {
params ["_msg"];
_display closeDisplay 0;
deleteVehicle _logic;
[_msg] call EFUNC(common,displayTextStructured);
[_msg] call FUNC(showMessage);
breakOut "Main";
};

View File

@ -28,7 +28,7 @@ private _fnc_errorAndClose = {
params ["_msg"];
_display closeDisplay 0;
deleteVehicle _logic;
[_msg] call EFUNC(common,displayTextStructured);
[_msg] call FUNC(showMessage);
breakOut "Main";
};

View File

@ -450,6 +450,10 @@
`ace_rearm`, `ace_refuel`, `ace_repair`, `rhs_c_weapons`, `rhs_c_troops`, `rhs_c_bmd`, `rhs_c_bmp`, `rhs_c_bmp3`, `rhs_c_a2port_armor`, `rhs_c_btr`, `rhs_c_sprut`, `rhs_c_t72`, `rhs_c_tanks`, `rhs_c_a2port_air`, `rhs_c_a2port_car`, `rhs_c_cars`, `rhs_c_trucks`, `rhs_c_2s3`, `rhs_c_rva`, `rhs_c_heavyweapons`
{% endif %}
{% if include.component == "compat_rhs_gref3" %}
`rhsgref_main`, `rhsgref_c_weapons`
{% endif %}
{% if include.component == "compat_rhs_usf3" %}
`ace_javelin`, `ace_rearm`, `ace_refuel`, `ace_repair`, `rhsusf_c_weapons`, `rhsusf_c_troops`, `rhsusf_c_m1a1`, `rhsusf_c_m1a2`, `RHS_US_A2_AirImport`, `rhsusf_c_m109`, `rhsusf_c_HEMTT_A4`, `rhsusf_c_hmmwv`, `rhsusf_c_rg33`, `rhsusf_c_fmtv`, `rhsusf_c_m113`, `RHS_US_A2Port_Armor`, `rhsusf_c_melb`
{% endif %}

View File

@ -0,0 +1,48 @@
---
title: ACEREP &#35;00008
description: Status report on ACE3 version 3.9.0
parent: posts
image: /img/news/170221_csatconvoy.jpg
author: bux
layout: post
---
Another year, another release. 3.9.0 is the first release of 2017 and we'd like to thank everyone who has helped us to make it a smooth one.
<!--more-->
<blockquote class="twitter-tweet" data-lang="en"><p lang="en" dir="ltr">2017&#39;s first <a href="https://twitter.com/hashtag/ACE3?src=hash">#ACE3</a> release: v3.9.0<br>Change log and download: <a href="https://t.co/NX6chXO3th">https://t.co/NX6chXO3th</a><br>Steam and PwS will follow shortly (hopefully) :)<br>~bux</p>&mdash; ACE3Mod (@ACE3Mod) <a href="https://twitter.com/ACE3Mod/status/831616907585400832">February 14, 2017</a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
The release candidate testing was very successful and we have received important feedback helping us to fix some issues beforehand.
<div class="row">
<div class="small-12 columns">
<img src="{{site.baseUrl}}/img/news/170221_csatconvoy.jpg" alt="CSAT driving a convoy through one of Tanoa's villages while two CSAT soldiers are arresting two civilians."/>
</div>
</div>
This update mainly features quite a lot of bug and compatibility fixes as well as necessary changes for the next Arma 3 update. In particular we've added the 64bit compatible DLL files. Though, don't expect any dramatic performance increases as the DLLs were just rebuilt to make them compatible.
A new component has been added which removes the restriction for picking up and wearing enemy uniforms. You can find it in the `/optionals` folder in ACE3 and to use it you could e.g. copy it to the `/addons` folder. We've decided to put it into optionals because being able to wear an enemy's uniform isn't always the desired behavior for everyone.
We have invested some time in polishing the ballistic features of ACE3. As an example the range cards and the ATragMX now respect the distance between the center of the bore and the center of the scope to more accurately calculate firing solutions. If you're an addon maker [we've added new config entries which can be added to your addon or a compatibility patch](/wiki/framework/scopes-framework.html). And as an added benefit, shooting with this change is even more accurate than in vanilla.
Speaking of the ATragMX it is now closer to the real life counter part than ever before: It now features a muzzle velocity/temperature interpolation, calculating muzzle velocity by factoring in powder burn rates at different temperatures and the "Truing Drop" feature which helps a shooter calculate a better flight path based on actual shooting results. And because "our" ATragMX is models closely to the real world one you could even use the [real manual to read about those features](https://www.horusvision.com/download/manual_Horus_ATrag-v385.pdf){:target="_blank"}.
And even Zeus got a little love in this update. You can find new helper modules in the Zeus interface like teleporting players, adding FRIES to a helicopter, toggle the simulation of objects and more. The modules have been cleaned up into distinct categories to make them easier to find.
<div class="row">
<div class="small-12 columns">
<img src="{{site.baseUrl}}/img/news/170221_Zeus.jpg" alt="Showcasing the Zeus interface with the new ACE3 sections and utility modules. A helicopter is getting FRIES attached using ACE3 Zeus."/>
</div>
</div>
As mentioned in our [last ACEREP](/2016/11/04/ace3-version381.html) we're still working on our big medical rewrite. Progress though has stalled a little bit due to the holidays and real life occupations. But it's already in quite a good state. More on that will follow in a future ACEREP.
## The End Things
The full (and funny) changelog for ACE3 v3.9.0 can be found here: [https://github.com/acemod/ACE3/releases/v3.9.0](https://github.com/acemod/ACE3/releases/v3.9.0){:target="_blank"}
We are still in need for translations for some languages within the ACE3 project. Please have a look at [this GitHub issue to track the progress and what languages lack translations](https://github.com/acemod/ACE3/issues/367){:target="_blank"}. Any and all help with this is very appreciated.
Make sure to [follow us on twitter](https://twitter.com/intent/follow?screen_name=ace3mod&tw_p=followbutton){:target="_blank"} and to [like our facebook page](https://www.facebook.com/ACE3Mod/){:target="_blank"}.

Binary file not shown.

After

Width:  |  Height:  |  Size: 266 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 236 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 266 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 236 KiB

View File

@ -13,14 +13,17 @@ version:
---
## 1. Overview
This adds the ability to have images shown on some objects and have other objects being used as remotes.
Please note that only objects with hiddenSelection 0 can be used to render images (whiteboard, TV, PC Screen being the most notable examples).
## 2. Usage
Note that this sections is for users, for mission makers refer to [the entry in mission-tools](../missionmaker/mission-tools.html)
Also if no remotes are defined the "screen" object itself becomes the remote.
### 2.1 Switching between images
- Look at the object used as a remote and use the interaction menu <kbd>&nbsp;Win</kbd> (ACE3 default).
- Select the action that correspond to the image you want (the name of the action depends on the mission maker).

View File

@ -44,11 +44,14 @@ Important notes:
2 | Image Paths | Array | Required (paths must use backslash `\`)
3 | Action Names | Array | Required
4 | Slide Duration | Number | Optional (default: `0`, `0` disables automatic transitions)
5 | Set Name | String | Optional (default: localized `"Slides"`)
**R** | None | None | Return value
_Note: Set Name argument added in 3.9.1._
#### 2.1.1 Example
`[[object1, object2], [controller1], ["images\image1.paa", "images\image2.paa"], ["Action1", "Action2"], 5] call ace_slideshow_fnc_createSlideshow;`
`[[object1, object2], [controller1], ["images\image1.paa", "images\image2.paa"], ["Action1", "Action2"], 5, "My Slides"] call ace_slideshow_fnc_createSlideshow;`
| Arguments | Explanation
---| --------- | -----------
@ -57,3 +60,4 @@ Important notes:
2 | `["images\image1.paa", "images\image2.paa"]` | Paths to images projected on screen objects
3 | `["Action1", "Action2"]` | Action names for interaction menu if automatic transitions are not enabled
4 | `5` | 5s slide duration before change to next image
5 | `"My Slides"` | Main interaction point name, for easier distinguishing of multiple slideshow sets

View File

@ -20,6 +20,12 @@ In an event when a Headless Clients disconnects during the mission (is kicked, l
A server admin or mission maker can also define the minimal delay between transfers, in order to minimize the desync due to changes in locality of many units. Log can also be enabled to keep track of the transfers (_note: it is counting groups and not units_). That can be set through [ACE3 Settings](../framework/settings-framework.html) or a mission module.
### 1.1 End Mission
Since ACEX v3.1.0 Headless component supports automatic ending of mission when Headless Clients are connencted but no players are present. It is basically `server.cfg` setting `persistent = 1;` with Headless Client support.
As of ACEX v3.2.0 this feature can also be enabled without enabling AI distribution (overall setting).
## 2. Scripting
@ -34,7 +40,10 @@ this setVariable ["acex_headless_blacklist", true];
## 3. Limitations
Some Arma 3 features are incompatible, this is up to BI to add support. Disable transferring for units using the following features to ensure expected functionality.
Some Arma 3 features are incompatible, this is up to BI to add support. Disable transferring for units using the following features to ensure expected functionality:
- Vanilla Support Modules will stop functioning
- Triggers synchronized with waypoints will no longer be respected (waypoint will not change status based on the trigger condition)
- Vanilla Support Modules (will stop functioning)
Additionally, groups will not be transferred due to lack of support if they:
- Have waypoints with synchronized triggers (waypoint would not change status based on trigger condition) (added in ACEX v3.2.0)

View File

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

View File

@ -0,0 +1,6 @@
class CfgAmmo {
class GrenadeHand;
class rhsgref_ammo_rkg3em: GrenadeHand { // Scripted shaped charge
ace_frag_force = 0;
};
};

View File

@ -0,0 +1,16 @@
#include "script_component.hpp"
class CfgPatches {
class ADDON {
name = COMPONENT_NAME;
units[] = {};
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"rhsgref_main", "rhsgref_c_weapons"};
author = ECSTRING(common,ACETeam);
url = ECSTRING(main,URL);
VERSION_CONFIG;
};
};
#include "CfgAmmo.hpp"

View File

@ -0,0 +1,6 @@
#define COMPONENT compat_rhs_gref3
#define COMPONENT_BEAUTIFIED RHS GREF Compatibility
#include "\z\ace\addons\main\script_mod.hpp"
#include "\z\ace\addons\main\script_macros.hpp"