mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
CSW/Dragon cleanup and rearm compat (#7068)
* Dragon work cleanup remove unused p3ds add pos_gunner_dir/pos_gunner to static add [csw] prefix to arsenal version add sight interaction icons * Update fnc_staticWeaponInit_unloadExtraMags.sqf * ace_rearm compat allows pulling carry mags out of rearm trucks * Update fnc_ai_handleFired.sqf * Re-add 3den attributes * cleanup and move A2 staticweapon strings to ace_csw
This commit is contained in:
parent
7b13a75305
commit
8763184b6a
@ -1330,37 +1330,5 @@
|
|||||||
<Chinesesimp>玩家与AI</Chinesesimp>
|
<Chinesesimp>玩家与AI</Chinesesimp>
|
||||||
<Chinese>玩家與AI</Chinese>
|
<Chinese>玩家與AI</Chinese>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Common_playerOnly">
|
|
||||||
<English>Players only</English>
|
|
||||||
<Russian>Игроков</Russian>
|
|
||||||
<Polish>Tylko dla graczy</Polish>
|
|
||||||
<Spanish>Solo jugadores</Spanish>
|
|
||||||
<German>Nur Spieler</German>
|
|
||||||
<Czech>Pouze hráči</Czech>
|
|
||||||
<Portuguese>Somente jogadores</Portuguese>
|
|
||||||
<French>Joueur uniquement</French>
|
|
||||||
<Hungarian>Csak játékosok</Hungarian>
|
|
||||||
<Italian>Solo giocatori</Italian>
|
|
||||||
<Japanese>プレイヤーのみ</Japanese>
|
|
||||||
<Korean>플레이어만</Korean>
|
|
||||||
<Chinesesimp>只限玩家</Chinesesimp>
|
|
||||||
<Chinese>只限玩家</Chinese>
|
|
||||||
</Key>
|
|
||||||
<Key ID="STR_ACE_Common_playersAndAI">
|
|
||||||
<English>Players and AI</English>
|
|
||||||
<Russian>Игроков и ботов</Russian>
|
|
||||||
<Polish>Gracze oraz AI</Polish>
|
|
||||||
<Spanish>Jugadores e IA</Spanish>
|
|
||||||
<German>Spieler und KI</German>
|
|
||||||
<Czech>Hráči a AI</Czech>
|
|
||||||
<Portuguese>Jogadores e IA</Portuguese>
|
|
||||||
<French>Joueurs et IA</French>
|
|
||||||
<Hungarian>Játékosok és AI</Hungarian>
|
|
||||||
<Italian>Giocatori ed IA</Italian>
|
|
||||||
<Japanese>プレイヤーと AI</Japanese>
|
|
||||||
<Korean>플레이어 및 인공지능</Korean>
|
|
||||||
<Chinesesimp>玩家与AI</Chinesesimp>
|
|
||||||
<Chinese>玩家與AI</Chinese>
|
|
||||||
</Key>
|
|
||||||
</Package>
|
</Package>
|
||||||
</Project>
|
</Project>
|
||||||
|
38
addons/csw/Cfg3den.hpp
Normal file
38
addons/csw/Cfg3den.hpp
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
class ctrlCombo;
|
||||||
|
class Cfg3DEN {
|
||||||
|
class Attributes {
|
||||||
|
class Title;
|
||||||
|
class Combo: Title {
|
||||||
|
class Controls {
|
||||||
|
class Title;
|
||||||
|
class Value;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
class GVAR(assemblyModeControl): Combo {
|
||||||
|
class Controls: Controls {
|
||||||
|
class Title: Title {};
|
||||||
|
class Value: Value {
|
||||||
|
class Items {
|
||||||
|
class Disable {
|
||||||
|
text = "$STR_DISABLED";
|
||||||
|
value = 0;
|
||||||
|
};
|
||||||
|
class Enable {
|
||||||
|
text = "$STR_CONFIG_JOYSTICK_ENABLED";
|
||||||
|
value = 1;
|
||||||
|
};
|
||||||
|
class EnableAndEmpty {
|
||||||
|
text = CSTRING(eden_enableAndEmpty);
|
||||||
|
value = 2;
|
||||||
|
};
|
||||||
|
class Default {
|
||||||
|
text = "$STR_VEHICLE_DEFAULT";
|
||||||
|
value = 3;
|
||||||
|
default = 1;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
@ -1,17 +1,3 @@
|
|||||||
#define ENABLE_CSW_ATTRIBUTE class Attributes { \
|
|
||||||
class GVAR(enableCSW) { \
|
|
||||||
property = QGVAR(enableCSW); \
|
|
||||||
control = "Checkbox"; \
|
|
||||||
displayName = CSTRING(eden_enableCSW); \
|
|
||||||
tooltip = CSTRING(eden_enableCSW_tooltip); \
|
|
||||||
expression = QUOTE(_this setVariable[ARR_3(QQGVAR(enableCSW), _value, true)];); \
|
|
||||||
typeName = "BOOL"; \
|
|
||||||
condition = "objectVehicle"; \
|
|
||||||
defaultValue = true; \
|
|
||||||
}; \
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
class CfgVehicles {
|
class CfgVehicles {
|
||||||
class Man;
|
class Man;
|
||||||
class CAManBase: Man {
|
class CAManBase: Man {
|
||||||
@ -37,14 +23,14 @@ class CfgVehicles {
|
|||||||
accuracy = 1000;
|
accuracy = 1000;
|
||||||
destrType = "DestructDefault";
|
destrType = "DestructDefault";
|
||||||
|
|
||||||
ace_dragging_canDrag = 1;
|
EGVAR(dragging,canDrag) = 1;
|
||||||
ace_dragging_dragPosition[] = {0, 2, 0};
|
EGVAR(dragging,dragPosition)[] = {0, 2, 0};
|
||||||
ace_dragging_canCarry = 1;
|
EGVAR(dragging,canCarry) = 1;
|
||||||
ace_dragging_carryPosition[] = {0, 2, 0};
|
EGVAR(dragging,carryPosition)[] = {0, 2, 0};
|
||||||
|
|
||||||
class ACE_Actions {
|
class ACE_Actions {
|
||||||
class ACE_MainActions {
|
class ACE_MainActions {
|
||||||
displayName = CSTRING(Tripod_displayName);
|
displayName = CSTRING(genericTripod_displayName);
|
||||||
selection = "";
|
selection = "";
|
||||||
distance = 2.5;
|
distance = 2.5;
|
||||||
condition = "true";
|
condition = "true";
|
||||||
@ -90,7 +76,7 @@ class CfgVehicles {
|
|||||||
disassembleTo = QGVAR(kordCarryTripod);
|
disassembleTo = QGVAR(kordCarryTripod);
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
class GVAR(sag30Tripod): GVAR(m3Tripod) {
|
class GVAR(sag30Tripod): GVAR(baseTripod) {
|
||||||
author = ECSTRING(common,ACETeam);
|
author = ECSTRING(common,ACETeam);
|
||||||
scope = 2;
|
scope = 2;
|
||||||
model = QPATHTOEF(apl,ace_csw_tripod_ags30.p3d);
|
model = QPATHTOEF(apl,ace_csw_tripod_ags30.p3d);
|
||||||
@ -112,12 +98,12 @@ class CfgVehicles {
|
|||||||
author = ECSTRING(common,ACETeam);
|
author = ECSTRING(common,ACETeam);
|
||||||
scope = 2;
|
scope = 2;
|
||||||
model = QPATHTOEF(apl,ace_csw_tripod_spg9.p3d);
|
model = QPATHTOEF(apl,ace_csw_tripod_spg9.p3d);
|
||||||
displayName = CSTRING(spg9Tripod_displayName);
|
displayName = CSTRING(spg9_Tripod);
|
||||||
class ADDON {
|
class ADDON {
|
||||||
disassembleTo = QGVAR(spg9CarryTripod);
|
disassembleTo = QGVAR(spg9CarryTripod);
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
class GVAR(mortarBaseplate): GVAR(m3Tripod) {
|
class GVAR(mortarBaseplate): GVAR(baseTripod) {
|
||||||
author = ECSTRING(common,ACETeam);
|
author = ECSTRING(common,ACETeam);
|
||||||
scope = 2;
|
scope = 2;
|
||||||
model = QPATHTOEF(apl,ACE_CSW_mortarBaseplate.p3d);
|
model = QPATHTOEF(apl,ACE_CSW_mortarBaseplate.p3d);
|
||||||
@ -145,6 +131,7 @@ class CfgVehicles {
|
|||||||
class StaticMGWeapon: StaticWeapon {};
|
class StaticMGWeapon: StaticWeapon {};
|
||||||
|
|
||||||
class HMG_01_base_F: StaticMGWeapon {
|
class HMG_01_base_F: StaticMGWeapon {
|
||||||
|
// ENABLE_CSW_ATTRIBUTE;
|
||||||
class ADDON {
|
class ADDON {
|
||||||
enabled = 1;
|
enabled = 1;
|
||||||
proxyWeapon = QGVAR(HMG_Static);
|
proxyWeapon = QGVAR(HMG_Static);
|
||||||
@ -179,6 +166,7 @@ class CfgVehicles {
|
|||||||
|
|
||||||
class GMG_TriPod;
|
class GMG_TriPod;
|
||||||
class GMG_01_base_F: GMG_TriPod {
|
class GMG_01_base_F: GMG_TriPod {
|
||||||
|
// ENABLE_CSW_ATTRIBUTE;
|
||||||
class ADDON {
|
class ADDON {
|
||||||
enabled = 1;
|
enabled = 1;
|
||||||
proxyWeapon = QGVAR(GMG_20mm); // Weapon Proxy (Shorter Reload Time) [CfgWeapons]
|
proxyWeapon = QGVAR(GMG_20mm); // Weapon Proxy (Shorter Reload Time) [CfgWeapons]
|
||||||
@ -212,6 +200,7 @@ class CfgVehicles {
|
|||||||
|
|
||||||
|
|
||||||
class AT_01_base_F: StaticMGWeapon {
|
class AT_01_base_F: StaticMGWeapon {
|
||||||
|
// ENABLE_CSW_ATTRIBUTE;
|
||||||
class ADDON {
|
class ADDON {
|
||||||
enabled = 1;
|
enabled = 1;
|
||||||
proxyWeapon = QGVAR(Titan_AT_Static);
|
proxyWeapon = QGVAR(Titan_AT_Static);
|
||||||
@ -225,6 +214,7 @@ class CfgVehicles {
|
|||||||
};
|
};
|
||||||
|
|
||||||
class AA_01_base_F: StaticMGWeapon {
|
class AA_01_base_F: StaticMGWeapon {
|
||||||
|
// ENABLE_CSW_ATTRIBUTE;
|
||||||
class ADDON {
|
class ADDON {
|
||||||
enabled = 1;
|
enabled = 1;
|
||||||
proxyWeapon = QGVAR(Titan_AA_Static); // Weapon Proxy (Shorter Reload Time) [CfgWeapons]
|
proxyWeapon = QGVAR(Titan_AA_Static); // Weapon Proxy (Shorter Reload Time) [CfgWeapons]
|
||||||
@ -240,6 +230,7 @@ class CfgVehicles {
|
|||||||
|
|
||||||
class StaticMortar: StaticWeapon {};
|
class StaticMortar: StaticWeapon {};
|
||||||
class Mortar_01_base_F: StaticMortar {
|
class Mortar_01_base_F: StaticMortar {
|
||||||
|
// ENABLE_CSW_ATTRIBUTE;
|
||||||
class ADDON {
|
class ADDON {
|
||||||
enabled = 1;
|
enabled = 1;
|
||||||
magazineLocation = "";
|
magazineLocation = "";
|
||||||
|
@ -47,14 +47,14 @@ class CfgWeapons {
|
|||||||
modes[] = {};
|
modes[] = {};
|
||||||
picture = QPATHTOF(UI\Tripod_Icon.paa);
|
picture = QPATHTOF(UI\Tripod_Icon.paa);
|
||||||
};
|
};
|
||||||
|
|
||||||
class GVAR(kordCarryTripodLow): GVAR(kordCarryTripod) {
|
class GVAR(kordCarryTripodLow): GVAR(kordCarryTripod) {
|
||||||
class ADDON {
|
class ADDON {
|
||||||
deploy = QGVAR(kordTripodLow);
|
deploy = QGVAR(kordTripodLow);
|
||||||
};
|
};
|
||||||
displayName = CSTRING(kordTripodFoldedLow_displayName);
|
displayName = CSTRING(kordTripodFoldedLow_displayName);
|
||||||
};
|
};
|
||||||
|
|
||||||
class GVAR(m220CarryTripod): Launcher_Base_F {
|
class GVAR(m220CarryTripod): Launcher_Base_F {
|
||||||
class ADDON {
|
class ADDON {
|
||||||
type = "mount";
|
type = "mount";
|
||||||
@ -72,7 +72,7 @@ class CfgWeapons {
|
|||||||
modes[] = {};
|
modes[] = {};
|
||||||
picture = QPATHTOF(UI\Tripod_Icon.paa);
|
picture = QPATHTOF(UI\Tripod_Icon.paa);
|
||||||
};
|
};
|
||||||
|
|
||||||
class GVAR(spg9CarryTripod): Launcher_Base_F {
|
class GVAR(spg9CarryTripod): Launcher_Base_F {
|
||||||
class ADDON {
|
class ADDON {
|
||||||
type = "mount";
|
type = "mount";
|
||||||
@ -83,14 +83,14 @@ class CfgWeapons {
|
|||||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||||
mass = 260;
|
mass = 260;
|
||||||
};
|
};
|
||||||
displayName = CSTRING(spg9TripodFolded_displayName);
|
displayName = CSTRING(spg9_TripodFolded);
|
||||||
author = ECSTRING(common,ACETeam);
|
author = ECSTRING(common,ACETeam);
|
||||||
scope = 2;
|
scope = 2;
|
||||||
model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
|
model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
|
||||||
modes[] = {};
|
modes[] = {};
|
||||||
picture = QPATHTOF(UI\Tripod_Icon.paa);
|
picture = QPATHTOF(UI\Tripod_Icon.paa);
|
||||||
};
|
};
|
||||||
|
|
||||||
class GVAR(sag30CarryTripod): Launcher_Base_F {
|
class GVAR(sag30CarryTripod): Launcher_Base_F {
|
||||||
class ADDON {
|
class ADDON {
|
||||||
type = "mount";
|
type = "mount";
|
||||||
@ -108,7 +108,7 @@ class CfgWeapons {
|
|||||||
modes[] = {};
|
modes[] = {};
|
||||||
picture = QPATHTOF(UI\Tripod_Icon.paa);
|
picture = QPATHTOF(UI\Tripod_Icon.paa);
|
||||||
};
|
};
|
||||||
|
|
||||||
class GVAR(carryMortarBaseplate): Launcher_Base_F {
|
class GVAR(carryMortarBaseplate): Launcher_Base_F {
|
||||||
class ADDON {
|
class ADDON {
|
||||||
type = "mount";
|
type = "mount";
|
||||||
@ -119,7 +119,7 @@ class CfgWeapons {
|
|||||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||||
mass = 290; // M3A1 baseblate weight
|
mass = 290; // M3A1 baseblate weight
|
||||||
};
|
};
|
||||||
displayName = CSTRING(m224MortarBaseplate_displayName);
|
displayName = CSTRING(mortarBaseplateBag_displayName);
|
||||||
author = ECSTRING(common,ACETeam);
|
author = ECSTRING(common,ACETeam);
|
||||||
scope = 2;
|
scope = 2;
|
||||||
model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
|
model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
|
||||||
@ -225,26 +225,18 @@ class CfgWeapons {
|
|||||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||||
mass = 620; // M252 Mortar Weight
|
mass = 620; // M252 Mortar Weight
|
||||||
};
|
};
|
||||||
displayName = CSTRING(m224MortarBag_displayName);
|
displayName = CSTRING(mk6MortarBag_displayName);
|
||||||
author = ECSTRING(common,ACETeam);
|
author = ECSTRING(common,ACETeam);
|
||||||
scope = 2;
|
scope = 2;
|
||||||
model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
|
model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
|
||||||
modes[] = {};
|
modes[] = {};
|
||||||
picture = QPATHTOF(UI\StaticHGMG_Icon.paa);
|
picture = QPATHTOF(UI\StaticHGMG_Icon.paa);
|
||||||
};
|
};
|
||||||
|
|
||||||
// Proxy Weapons
|
|
||||||
|
|
||||||
class HMG_static;
|
// Proxy Weapons
|
||||||
class GVAR(HMG_Static): HMG_Static {
|
CREATE_CSW_PROXY(HMG_Static);
|
||||||
magazineReloadTime = 0.5;
|
CREATE_CSW_PROXY(GMG_20mm);
|
||||||
};
|
|
||||||
|
|
||||||
class GMG_20mm;
|
|
||||||
class GVAR(GMG_20mm): GMG_20mm {
|
|
||||||
magazineReloadTime = 0.5;
|
|
||||||
};
|
|
||||||
|
|
||||||
class missiles_titan_static;
|
class missiles_titan_static;
|
||||||
class EGVAR(javelin,Titan_Static): missiles_titan_static {}; // if ace_javelin does not exist, this will just inherit from the base weapon
|
class EGVAR(javelin,Titan_Static): missiles_titan_static {}; // if ace_javelin does not exist, this will just inherit from the base weapon
|
||||||
class GVAR(Titan_AT_Static): EGVAR(javelin,Titan_Static) {
|
class GVAR(Titan_AT_Static): EGVAR(javelin,Titan_Static) {
|
||||||
@ -254,8 +246,8 @@ class CfgWeapons {
|
|||||||
class GVAR(Titan_AA_Static) : missiles_titan_static {
|
class GVAR(Titan_AA_Static) : missiles_titan_static {
|
||||||
magazineReloadTime = 0.5;
|
magazineReloadTime = 0.5;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
class GVAR(staticAutoHMGCarry): Launcher_Base_F {
|
class GVAR(staticAutoHMGCarry): Launcher_Base_F {
|
||||||
class ADDON {
|
class ADDON {
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
TRACE_1("",QUOTE(ADDON));
|
TRACE_1("",QUOTE(ADDON));
|
||||||
|
|
||||||
|
PREP(aceRearmGetCarryMagazines);
|
||||||
|
|
||||||
PREP(ai_handleFired);
|
PREP(ai_handleFired);
|
||||||
|
|
||||||
PREP(assemble_canDeployTripod);
|
PREP(assemble_canDeployTripod);
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
#include "script_config_macros_csw.hpp"
|
||||||
|
|
||||||
class CfgPatches {
|
class CfgPatches {
|
||||||
class ADDON {
|
class ADDON {
|
||||||
@ -14,6 +15,7 @@ class CfgPatches {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#include "Cfg3den.hpp"
|
||||||
#include "CfgEventHandlers.hpp"
|
#include "CfgEventHandlers.hpp"
|
||||||
#include "CfgVehicles.hpp"
|
#include "CfgVehicles.hpp"
|
||||||
#include "CfgWeapons.hpp"
|
#include "CfgWeapons.hpp"
|
||||||
|
@ -1,53 +0,0 @@
|
|||||||
Settings:
|
|
||||||
|
|
||||||
defaultBehaviour:
|
|
||||||
Normal - Untouched [full mags, normal backpack disassemble]
|
|
||||||
Advanced - [Realistic mags, side unloading]
|
|
||||||
handleExtraMagazines
|
|
||||||
Extra magazines on ground
|
|
||||||
Ignore extra magazines
|
|
||||||
|
|
||||||
Vehicle:
|
|
||||||
3den attribute controls if [useSetting, normal or advanced]
|
|
||||||
|
|
||||||
configs:
|
|
||||||
|
|
||||||
CfgWeapons:
|
|
||||||
class GVAR(m3CarryTripod): Launcher_Base_F {
|
|
||||||
class ADDON {
|
|
||||||
type = "mount";
|
|
||||||
deployTime = 3;
|
|
||||||
pickupTime = 3;
|
|
||||||
deploy = QGVAR(m3Tripod);
|
|
||||||
};
|
|
||||||
|
|
||||||
class GVAR(staticATCarry): Launcher_Base_F {
|
|
||||||
class ADDON {
|
|
||||||
type = "weapon";
|
|
||||||
deployTime = 8;
|
|
||||||
pickupTime = 15;
|
|
||||||
class assembleTo {
|
|
||||||
tripodCfgVehicle = staticCfgVehicle;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CfgVehicles:
|
|
||||||
class GVAR(m3Tripod): // Tripod Example
|
|
||||||
class ADDON {
|
|
||||||
disassembleTo = QGVAR(m3CarryTripod);
|
|
||||||
|
|
||||||
|
|
||||||
class Mortar_01_base_F: // Static Weapon Example
|
|
||||||
class ADDON {
|
|
||||||
enabled = 1;
|
|
||||||
magazineLocation = "";
|
|
||||||
disassembleWeapon = ""; // secondary weapon classname
|
|
||||||
disassembleTurret = ""; // CfgVehicle
|
|
||||||
desiredAmmo = 100; //
|
|
||||||
ammoLoadTime = 5;
|
|
||||||
ammoUnloadTime = 5;
|
|
||||||
|
|
||||||
|
|
50
addons/csw/functions/fnc_aceRearmGetCarryMagazines.sqf
Normal file
50
addons/csw/functions/fnc_aceRearmGetCarryMagazines.sqf
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
#include "script_component.hpp"
|
||||||
|
/*
|
||||||
|
* Author: PabstMirror
|
||||||
|
* Helper function for ace_rearm; Gets magazines that should be loaded by csw
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* 0: Vehicle <OBJECT>
|
||||||
|
* 1: Specific Turret or pass bool to check all turrets <ARRAY><BOOL>(default: true)
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* [0: compatible veh mags, 1: carry mags] <ARRAY>
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* [cursorObject, [0]] call ace_csw_fnc_aceRearmGetCarryMagazines
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
|
||||||
|
params ["_vehicle", ["_targetTurret", true, [[], true]]];
|
||||||
|
|
||||||
|
if (!(_vehicle isKindOf "StaticWeapon")) exitWith { [[],[]] }; // limit to statics for now
|
||||||
|
// Assembly mode: [0=disabled, 1=enabled, 2=enabled&unload, 3=default]
|
||||||
|
if ((GVAR(ammoHandling) == 0) && {!([false, true, true, GVAR(defaultAssemblyMode)] select (_vehicle getVariable [QGVAR(assemblyMode), 3]))}) exitWith { [[],[]] };
|
||||||
|
|
||||||
|
private _turretMagsCSW = [];
|
||||||
|
private _allCarryMags = [];
|
||||||
|
{
|
||||||
|
private _turretPath = _x;
|
||||||
|
if ((_targetTurret isEqualTo true) || {_turretPath isEqualTo _targetTurret}) then {
|
||||||
|
{
|
||||||
|
private _weapon = _x;
|
||||||
|
{
|
||||||
|
private _xMag = _x;
|
||||||
|
private _carryMag = GVAR(vehicleMagCache) getVariable _xMag;
|
||||||
|
if (isNil "_carryMag") then {
|
||||||
|
private _groups = "getNumber (_x >> _xMag) == 1" configClasses (configFile >> QGVAR(groups));
|
||||||
|
_carryMag = configName (_groups param [0, configNull]);
|
||||||
|
GVAR(vehicleMagCache) setVariable [_x, _carryMag];
|
||||||
|
TRACE_2("setting cache",_xMag,_carryMag);
|
||||||
|
};
|
||||||
|
if (_carryMag != "") then {
|
||||||
|
_turretMagsCSW pushBackUnique _xMag;
|
||||||
|
_allCarryMags pushBackUnique _carryMag;
|
||||||
|
};
|
||||||
|
} forEach ([_weapon] call CBA_fnc_compatibleMagazines);
|
||||||
|
} forEach (_vehicle weaponsTurret _turretPath);
|
||||||
|
};
|
||||||
|
} forEach (allTurrets _vehicle);
|
||||||
|
|
||||||
|
[_turretMagsCSW, _allCarryMags]
|
@ -75,7 +75,7 @@ if (_bestAmmoToSend == -1) exitWith {ERROR("No ammo");};
|
|||||||
|
|
||||||
// Remove the mag from the source
|
// Remove the mag from the source
|
||||||
if (_reloadSource isKindOf "CaManBase") then {
|
if (_reloadSource isKindOf "CaManBase") then {
|
||||||
[_reloadSource, _reloadMag, _bestAmmoToSend] call ace_common_fnc_removeSpecificMagazine;
|
[_reloadSource, _reloadMag, _bestAmmoToSend] call EFUNC(common,removeSpecificMagazine);
|
||||||
} else {
|
} else {
|
||||||
[_reloadSource, _reloadMag, 1, _bestAmmoToSend] call CBA_fnc_removeMagazineCargo;
|
[_reloadSource, _reloadMag, 1, _bestAmmoToSend] call CBA_fnc_removeMagazineCargo;
|
||||||
};
|
};
|
||||||
|
@ -17,9 +17,10 @@
|
|||||||
|
|
||||||
params ["_staticWeapon"];
|
params ["_staticWeapon"];
|
||||||
|
|
||||||
private _assemblyMode = [false, true, GVAR(defaultAssemblyMode)] select (_staticWeapon getVariable [QGVAR(assemblyMode), 2]);
|
// Assembly mode: [0=disabled, 1=enabled, 2=enabled&unload, 3=default]
|
||||||
private _crewed = (crew _staticWeapon) isEqualTo [];
|
private _assemblyMode = [false, true, true, GVAR(defaultAssemblyMode)] select (_staticWeapon getVariable [QGVAR(assemblyMode), 3]);
|
||||||
|
private _notCrewed = (crew _staticWeapon) isEqualTo [];
|
||||||
private _deadCrew = !(alive (gunner _staticWeapon)); // need to eject body???
|
private _deadCrew = !(alive (gunner _staticWeapon)); // need to eject body???
|
||||||
|
|
||||||
_assemblyMode && {(!_crewed) || _deadCrew}
|
_assemblyMode && {_notCrewed || _deadCrew}
|
||||||
|
|
||||||
|
@ -33,8 +33,7 @@
|
|||||||
// Create a tripod
|
// Create a tripod
|
||||||
private _cswTripod = createVehicle [_tripodClassname, [0, 0, 0], [], 0, "NONE"];
|
private _cswTripod = createVehicle [_tripodClassname, [0, 0, 0], [], 0, "NONE"];
|
||||||
// Because the tripod can be a "full weapon" we disable any data that will allow it to be loaded
|
// Because the tripod can be a "full weapon" we disable any data that will allow it to be loaded
|
||||||
_cswTripod setVariable [QGVAR(assemblyMode), 1, true]; // Explicitly set advanced assembly mode and broadcast
|
_cswTripod setVariable [QGVAR(assemblyMode), 2, true]; // Explicitly set enabled&unload assembly mode and broadcast
|
||||||
_cswTripod setVariable [QGVAR(emptyWeapon), true, false]; // unload gun, shouldn't need broadcast for this as it will be local to us
|
|
||||||
if (!GVAR(defaultAssemblyMode)) then {
|
if (!GVAR(defaultAssemblyMode)) then {
|
||||||
TRACE_1("global disableVanillaAssembly event",_cswTripod); // handles it being assembled when setting is disabled
|
TRACE_1("global disableVanillaAssembly event",_cswTripod); // handles it being assembled when setting is disabled
|
||||||
[QGVAR(disableVanillaAssembly), [_cswTripod]] call CBA_fnc_globalEvent;
|
[QGVAR(disableVanillaAssembly), [_cswTripod]] call CBA_fnc_globalEvent;
|
||||||
|
@ -43,15 +43,18 @@
|
|||||||
[{
|
[{
|
||||||
params ["_assembledClassname", "_tripodDir", "_tripodPos"];
|
params ["_assembledClassname", "_tripodDir", "_tripodPos"];
|
||||||
private _csw = createVehicle [_assembledClassname, [0, 0, 0], [], 0, "NONE"];
|
private _csw = createVehicle [_assembledClassname, [0, 0, 0], [], 0, "NONE"];
|
||||||
_csw setVariable [QGVAR(assemblyMode), 1, true]; // Explicitly set advanced assembly mode and broadcast
|
// Assembly mode: [0=disabled, 1=enabled, 2=enabled&unload, 3=default]
|
||||||
_csw setVariable [QGVAR(emptyWeapon), true, false]; // unload gun, shouldn't need broadcast for this as it will be local to us
|
_csw setVariable [QGVAR(assemblyMode), 2, true]; // Explicitly set advanced assembly mode + unload, and broadcast
|
||||||
if (!GVAR(defaultAssemblyMode)) then {
|
if (!GVAR(defaultAssemblyMode)) then {
|
||||||
TRACE_1("global disableVanillaAssembly event",_csw); // handles it being assembled when setting is disabled
|
TRACE_1("global disableVanillaAssembly event",_csw); // handles it being assembled when setting is disabled
|
||||||
[QGVAR(disableVanillaAssembly), [_csw]] call CBA_fnc_globalEvent;
|
[QGVAR(disableVanillaAssembly), [_csw]] call CBA_fnc_globalEvent;
|
||||||
};
|
};
|
||||||
_csw setDir _tripodDir;
|
_csw setDir _tripodDir;
|
||||||
_csw setPosATL _tripodPos;
|
_csw setPosATL _tripodPos;
|
||||||
_csw setVectorUp (surfaceNormal _tripodPos);
|
if ((_tripodPos select 2) < 0.5) then {
|
||||||
|
_csw setVectorUp (surfaceNormal _tripodPos);
|
||||||
|
};
|
||||||
|
TRACE_2("csw placed",_csw,_assembledClassname);
|
||||||
}, [_assembledClassname, _tripodDir, _tripodPos]] call CBA_fnc_execNextFrame;
|
}, [_assembledClassname, _tripodDir, _tripodPos]] call CBA_fnc_execNextFrame;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -7,30 +7,33 @@
|
|||||||
* 0: Weapon <OBJECT>
|
* 0: Weapon <OBJECT>
|
||||||
* 1: Turret <ARRAY>
|
* 1: Turret <ARRAY>
|
||||||
* 2: Proxy weapon needed <BOOL>
|
* 2: Proxy weapon needed <BOOL>
|
||||||
|
* 2: Weapon should be emptied <BOOL>
|
||||||
*
|
*
|
||||||
* Return Value:
|
* Return Value:
|
||||||
* None
|
* None
|
||||||
*
|
*
|
||||||
* Example:
|
* Example:
|
||||||
* [weapon, [0], true] call ace_csw_fnc_proxyWeapon
|
* [weapon, [0], true, false] call ace_csw_fnc_proxyWeapon
|
||||||
*
|
*
|
||||||
* Public: No
|
* Public: No
|
||||||
*/
|
*/
|
||||||
|
|
||||||
params ["_staticWeapon", "_turret", "_needed"];
|
params ["_staticWeapon", "_turret", "_needed", "_emptyWeapon"];
|
||||||
|
TRACE_4("proxyWeapon",_staticWeapon,_turret,_needed,_emptyWeapon);
|
||||||
|
|
||||||
if (_staticWeapon getVariable [format [QGVAR(proxyHandled_%1), _turret], false]) exitWith { TRACE_1("proxy weapon already handled",_staticWeapon); };
|
if (_staticWeapon getVariable [format [QGVAR(proxyHandled_%1), _turret], false]) exitWith { TRACE_1("already handled",typeOf _staticWeapon); };
|
||||||
|
|
||||||
private _typeOf = typeOf _staticWeapon;
|
private _typeOf = typeOf _staticWeapon;
|
||||||
private _proxyWeapon = getText(configFile >> "CfgVehicles" >> _typeOf >> "ace_csw" >> "proxyWeapon");
|
private _proxyWeapon = getText(configFile >> "CfgVehicles" >> _typeOf >> "ace_csw" >> "proxyWeapon");
|
||||||
TRACE_5("proxyWeapon",_staticWeapon,_turret,_needed,_typeOf,_proxyWeapon);
|
|
||||||
|
|
||||||
if (_proxyWeapon == "") exitWith { TRACE_1("proxyWeapon not defined",_proxyWeapon); };
|
TRACE_2("",_typeOf,_proxyWeapon);
|
||||||
|
if (_proxyWeapon == "") exitWith {};
|
||||||
|
|
||||||
private _currentWeapon = (_staticWeapon weaponsTurret [0]) param [0, "#none"];
|
private _currentWeapon = (_staticWeapon weaponsTurret [0]) param [0, "#none"];
|
||||||
if ((missionNamespace getVariable [_proxyWeapon, objNull]) isEqualType {}) then { // check if string is a function
|
if ((missionNamespace getVariable [_proxyWeapon, objNull]) isEqualType {}) then { // check if string is a function
|
||||||
TRACE_1("Calling proxyWeapon function",_proxyWeapon);
|
TRACE_1("Calling proxyWeapon function",_proxyWeapon);
|
||||||
_proxyWeapon = [_staticWeapon, _turret, _currentWeapon, _needed] call (missionNamespace getVariable _proxyWeapon);
|
// This function may replace magazines or do other things to the static weapon
|
||||||
|
_proxyWeapon = [_staticWeapon, _turret, _currentWeapon, _needed, _emptyWeapon] call (missionNamespace getVariable _proxyWeapon);
|
||||||
_needed = _proxyWeapon != "";
|
_needed = _proxyWeapon != "";
|
||||||
};
|
};
|
||||||
if (!_needed) exitWith { TRACE_2("not needed",_needed,_proxyWeapon); };
|
if (!_needed) exitWith { TRACE_2("not needed",_needed,_proxyWeapon); };
|
||||||
|
@ -43,7 +43,7 @@ private _return = [];
|
|||||||
if (((getNumber (_carryGroup >> _x)) == 1) && {_loadInfo = [_vehicle, _turretPath, _carryMag, _player] call FUNC(reload_canLoadMagazine); _loadInfo select 0}) exitWith {
|
if (((getNumber (_carryGroup >> _x)) == 1) && {_loadInfo = [_vehicle, _turretPath, _carryMag, _player] call FUNC(reload_canLoadMagazine); _loadInfo select 0}) exitWith {
|
||||||
_return pushBack [_carryMag, _turretPath, _loadInfo];
|
_return pushBack [_carryMag, _turretPath, _loadInfo];
|
||||||
};
|
};
|
||||||
} forEach (getArray (configFile >> "CfgWeapons" >> _weapon >> "magazines"));
|
} forEach ([_weapon] call CBA_fnc_compatibleMagazines);
|
||||||
} forEach _carriedMagazines;
|
} forEach _carriedMagazines;
|
||||||
} forEach (_vehicle weaponsTurret _turretPath);
|
} forEach (_vehicle weaponsTurret _turretPath);
|
||||||
} forEach (allTurrets _vehicle);
|
} forEach (allTurrets _vehicle);
|
||||||
|
@ -52,7 +52,7 @@ if (_canAdd) then {
|
|||||||
TRACE_1("Removing emtpy mag",_loadedMag);
|
TRACE_1("Removing emtpy mag",_loadedMag);
|
||||||
_vehicle removeMagazinesTurret [_loadedMag, _turret];
|
_vehicle removeMagazinesTurret [_loadedMag, _turret];
|
||||||
};
|
};
|
||||||
[_vehicle, _turret, true] call FUNC(proxyWeapon); // Check if we need to add proxy weapon now
|
[_vehicle, _turret, true, false] call FUNC(proxyWeapon); // Check if we need to add proxy weapon now
|
||||||
private _newMag = [_vehicle, _turret, _carryMag] call FUNC(reload_getVehicleMagazine);
|
private _newMag = [_vehicle, _turret, _carryMag] call FUNC(reload_getVehicleMagazine);
|
||||||
TRACE_2("Adding new mag",_newMag,_ammoUsed);
|
TRACE_2("Adding new mag",_newMag,_ammoUsed);
|
||||||
_vehicle addMagazineTurret [_newMag, _turret, _ammoUsed];
|
_vehicle addMagazineTurret [_newMag, _turret, _ammoUsed];
|
||||||
|
@ -31,10 +31,13 @@ if (_configEnabled && {_staticWeapon turretLocal [0]}) then { // if turret is lo
|
|||||||
[{
|
[{
|
||||||
params ["_staticWeapon"];
|
params ["_staticWeapon"];
|
||||||
if (!alive _staticWeapon) exitWith { TRACE_1("dead/deleted",_staticWeapon); };
|
if (!alive _staticWeapon) exitWith { TRACE_1("dead/deleted",_staticWeapon); };
|
||||||
private _assemblyMode = [false, true, GVAR(defaultAssemblyMode)] select (_staticWeapon getVariable [QGVAR(assemblyMode), 2]);
|
// Assembly mode: [0=disabled, 1=enabled, 2=enabled&unload, 3=default]
|
||||||
|
private _assemblyModeIndex = _staticWeapon getVariable [QGVAR(assemblyMode), 3];
|
||||||
|
private _emptyWeapon = _assemblyModeIndex isEqualTo 2;
|
||||||
|
private _assemblyMode = [false, true, true, GVAR(defaultAssemblyMode)] select _assemblyModeIndex;
|
||||||
TRACE_2("turretLocal",_staticWeapon,_assemblyMode);
|
TRACE_2("turretLocal",_staticWeapon,_assemblyMode);
|
||||||
[_staticWeapon, [0], _assemblyMode] call FUNC(proxyWeapon);
|
[_staticWeapon, [0], _assemblyMode, _emptyWeapon] call FUNC(proxyWeapon);
|
||||||
[_staticWeapon, _assemblyMode] call FUNC(staticWeaponInit_unloadExtraMags);
|
[_staticWeapon, _assemblyMode, _emptyWeapon] call FUNC(staticWeaponInit_unloadExtraMags);
|
||||||
}, [_staticWeapon]] call CBA_fnc_execNextFrame; // need to wait a frame to allow setting object vars during assembly
|
}, [_staticWeapon]] call CBA_fnc_execNextFrame; // need to wait a frame to allow setting object vars during assembly
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -42,7 +45,7 @@ if (_assemblyConfig) then {
|
|||||||
[{
|
[{
|
||||||
params ["_staticWeapon"];
|
params ["_staticWeapon"];
|
||||||
if (!alive _staticWeapon) exitWith { TRACE_1("dead/deleted",_staticWeapon); };
|
if (!alive _staticWeapon) exitWith { TRACE_1("dead/deleted",_staticWeapon); };
|
||||||
private _assemblyMode = [false, true, GVAR(defaultAssemblyMode)] select (_staticWeapon getVariable [QGVAR(assemblyMode), 2]);
|
private _assemblyMode = [false, true, true, GVAR(defaultAssemblyMode)] select (_staticWeapon getVariable [QGVAR(assemblyMode), 3]);
|
||||||
TRACE_2("assemblyConfig present",_staticWeapon,_assemblyMode);
|
TRACE_2("assemblyConfig present",_staticWeapon,_assemblyMode);
|
||||||
if (_assemblyMode) then { // Disable vanilla assembly if assemblyMode eanbled
|
if (_assemblyMode) then { // Disable vanilla assembly if assemblyMode eanbled
|
||||||
[QGVAR(disableVanillaAssembly), [_staticWeapon]] call CBA_fnc_localEvent;
|
[QGVAR(disableVanillaAssembly), [_staticWeapon]] call CBA_fnc_localEvent;
|
||||||
@ -65,7 +68,7 @@ if (hasInterface && {!(_typeOf in GVAR(initializedStaticTypes))}) then {
|
|||||||
private _magazineLocation = getText (configFile >> "CfgVehicles" >> _typeOf >> QUOTE(ADDON) >> "magazineLocation");
|
private _magazineLocation = getText (configFile >> "CfgVehicles" >> _typeOf >> QUOTE(ADDON) >> "magazineLocation");
|
||||||
private _condition = { //IGNORE_PRIVATE_WARNING ["_target", "_player"];
|
private _condition = { //IGNORE_PRIVATE_WARNING ["_target", "_player"];
|
||||||
// If magazine handling is enabled or weapon assembly/disassembly is enabled we enable ammo handling
|
// If magazine handling is enabled or weapon assembly/disassembly is enabled we enable ammo handling
|
||||||
if ((GVAR(ammoHandling) == 0) && {!([false, true, GVAR(defaultAssemblyMode)] select (_staticWeapon getVariable [QGVAR(assemblyMode), 2]))}) exitWith { false };
|
if ((GVAR(ammoHandling) == 0) && {!([false, true, true, GVAR(defaultAssemblyMode)] select (_target getVariable [QGVAR(assemblyMode), 3]))}) exitWith { false };
|
||||||
[_player, _target, ["isNotSwimming", "isNotSitting"]] call EFUNC(common,canInteractWith)
|
[_player, _target, ["isNotSwimming", "isNotSitting"]] call EFUNC(common,canInteractWith)
|
||||||
};
|
};
|
||||||
private _childenCode = {
|
private _childenCode = {
|
||||||
|
@ -5,24 +5,19 @@
|
|||||||
*
|
*
|
||||||
* Arguments:
|
* Arguments:
|
||||||
* 0: Weapon <OBJECT>
|
* 0: Weapon <OBJECT>
|
||||||
|
* 1: Using advanced assembly <BOOL>
|
||||||
*
|
*
|
||||||
* Return Value:
|
* Return Value:
|
||||||
* None
|
* None
|
||||||
*
|
*
|
||||||
* Example:
|
* Example:
|
||||||
* [weapon] call ace_csw_fnc_staticWeaponInit_unloadExtraMags
|
* [cursorObject, false] call ace_csw_fnc_staticWeaponInit_unloadExtraMags
|
||||||
*
|
*
|
||||||
* Public: No
|
* Public: No
|
||||||
*/
|
*/
|
||||||
|
|
||||||
params ["_staticWeapon"];
|
params ["_staticWeapon", "_assemblyMode", "_emptyWeapon"];
|
||||||
TRACE_1("staticWeaponInit_unloadExtraMags",_staticWeapon);
|
TRACE_3("staticWeaponInit_unloadExtraMags",_staticWeapon,_assemblyMode,_emptyWeapon);
|
||||||
if (!alive _staticWeapon) exitWith {TRACE_1("dead/deleted",alive _staticWeapon);};
|
|
||||||
|
|
||||||
private _assemblyMode = [false, true, GVAR(defaultAssemblyMode)] select (_staticWeapon getVariable [QGVAR(assemblyMode), 2]);
|
|
||||||
private _emptyWeapon = _staticWeapon getVariable [QGVAR(emptyWeapon), false];
|
|
||||||
TRACE_2("",_assemblyMode,_emptyWeapon);
|
|
||||||
|
|
||||||
if (!_assemblyMode) exitWith {};
|
if (!_assemblyMode) exitWith {};
|
||||||
|
|
||||||
private _desiredAmmo = getNumber (configFile >> "CfgVehicles" >> (typeOf _staticWeapon) >> QUOTE(ADDON) >> "desiredAmmo");
|
private _desiredAmmo = getNumber (configFile >> "CfgVehicles" >> (typeOf _staticWeapon) >> QUOTE(ADDON) >> "desiredAmmo");
|
||||||
@ -31,7 +26,7 @@ if (_emptyWeapon) then {
|
|||||||
_desiredAmmo = 0;
|
_desiredAmmo = 0;
|
||||||
_storeExtraMagazines = false;
|
_storeExtraMagazines = false;
|
||||||
};
|
};
|
||||||
TRACE_2("settings",_desiredAmmo,_storeExtraMagazines);
|
TRACE_3("settings",_emptyWeapon,_desiredAmmo,_storeExtraMagazines);
|
||||||
|
|
||||||
private _magsToRemove = [];
|
private _magsToRemove = [];
|
||||||
private _loadedMagazineInfo = [];
|
private _loadedMagazineInfo = [];
|
||||||
|
@ -2,10 +2,10 @@
|
|||||||
#define COMPONENT_BEAUTIFIED Crew-Served Weapons
|
#define COMPONENT_BEAUTIFIED Crew-Served Weapons
|
||||||
#include "\z\ace\addons\main\script_mod.hpp"
|
#include "\z\ace\addons\main\script_mod.hpp"
|
||||||
|
|
||||||
#define FAST_PROGRESSBARS
|
// #define FAST_PROGRESSBARS
|
||||||
#define DEBUG_MODE_FULL
|
// #define DEBUG_MODE_FULL
|
||||||
#define DISABLE_COMPILE_CACHE
|
// #define DISABLE_COMPILE_CACHE
|
||||||
#define ENABLE_PERFORMANCE_COUNTERS
|
// #define ENABLE_PERFORMANCE_COUNTERS
|
||||||
|
|
||||||
#ifdef DEBUG_ENABLED_CSW
|
#ifdef DEBUG_ENABLED_CSW
|
||||||
#define DEBUG_MODE_FULL
|
#define DEBUG_MODE_FULL
|
||||||
|
15
addons/csw/script_config_macros_csw.hpp
Normal file
15
addons/csw/script_config_macros_csw.hpp
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#define CREATE_CSW_PROXY(weapon) class ##weapon; class GVAR(weapon): ##weapon { magazineReloadTime = 0.5; }
|
||||||
|
|
||||||
|
// Need to be careful about breaking Attributes inheritance, doesn't seem to be any standard
|
||||||
|
#define ENABLE_CSW_ATTRIBUTE class Attributes { \
|
||||||
|
class EGVAR(CSW,assemblyMode) { \
|
||||||
|
property = QEGVAR(CSW,assemblyMode); \
|
||||||
|
control = QEGVAR(CSW,assemblyModeControl); \
|
||||||
|
displayName = ECSTRING(CSW,eden_enableCSW); \
|
||||||
|
tooltip = ECSTRING(CSW,eden_enableCSW_tooltip); \
|
||||||
|
expression = QUOTE( if (_value != 3) then {_this setVariable [ARR_3('%s',_value,true)]} ); \
|
||||||
|
typeName = "NUMBER"; \
|
||||||
|
condition = "objectVehicle"; \
|
||||||
|
defaultValue = 3; \
|
||||||
|
}; \
|
||||||
|
}
|
@ -72,12 +72,6 @@
|
|||||||
<Key ID="STR_ACE_CSW_ammoHandling_description">
|
<Key ID="STR_ACE_CSW_ammoHandling_description">
|
||||||
<English>Allow loading and unloading magazines</English>
|
<English>Allow loading and unloading magazines</English>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_CSW_aiReloading_displayName">
|
|
||||||
<English>AI Reloading</English>
|
|
||||||
</Key>
|
|
||||||
<Key ID="STR_ACE_CSW_aiReloading_description">
|
|
||||||
<English>AI will attempt to reload static weapons with available ammo</English>
|
|
||||||
</Key>
|
|
||||||
<Key ID="STR_ACE_CSW_progressBarTimeCoefficent_displayName">
|
<Key ID="STR_ACE_CSW_progressBarTimeCoefficent_displayName">
|
||||||
<English>Interaction Time Coefficent</English>
|
<English>Interaction Time Coefficent</English>
|
||||||
</Key>
|
</Key>
|
||||||
@ -87,9 +81,6 @@
|
|||||||
<Key ID="STR_ACE_CSW_Pickup_displayName">
|
<Key ID="STR_ACE_CSW_Pickup_displayName">
|
||||||
<English>Pickup Tripod</English>
|
<English>Pickup Tripod</English>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_CSW_Move_displayName">
|
|
||||||
<English>Move Tripod</English>
|
|
||||||
</Key>
|
|
||||||
<Key ID="STR_ACE_CSW_MountWeapon_displayName">
|
<Key ID="STR_ACE_CSW_MountWeapon_displayName">
|
||||||
<English>Mount Weapon</English>
|
<English>Mount Weapon</English>
|
||||||
</Key>
|
</Key>
|
||||||
@ -99,12 +90,6 @@
|
|||||||
<Key ID="STR_ACE_CSW_AssembleCSW_progressBar">
|
<Key ID="STR_ACE_CSW_AssembleCSW_progressBar">
|
||||||
<English>Assembling Gun...</English>
|
<English>Assembling Gun...</English>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_CSW_LoadingAmmo_progressBar">
|
|
||||||
<English>Loading Ammo...</English>
|
|
||||||
</Key>
|
|
||||||
<Key ID="STR_ACE_CSW_UnloadingAmmo_progressBar">
|
|
||||||
<English>Unloading Ammo...</English>
|
|
||||||
</Key>
|
|
||||||
<Key ID="STR_ACE_CSW_PickupTripod_progressBar">
|
<Key ID="STR_ACE_CSW_PickupTripod_progressBar">
|
||||||
<English>Picking Up Tripod...</English>
|
<English>Picking Up Tripod...</English>
|
||||||
</Key>
|
</Key>
|
||||||
@ -117,32 +102,17 @@
|
|||||||
<Key ID="STR_ACE_CSW_eden_enableCSW_tooltip">
|
<Key ID="STR_ACE_CSW_eden_enableCSW_tooltip">
|
||||||
<English>Enables Crew Served ability on this weapon</English>
|
<English>Enables Crew Served ability on this weapon</English>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_CSW_genericDescription">
|
<Key ID="STR_ACE_CSW_eden_enableAndEmpty">
|
||||||
<English>Used to reload crew served weapons</English>
|
<English>Enabled and Leave Weapon Empty</English>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_CSW_StaticATWeapon_displayName">
|
<Key ID="STR_ACE_CSW_genericTripod_displayName">
|
||||||
<English>[CSW] Mini-Spike Launcher (AT)</English>
|
<English>Tripod</English>
|
||||||
</Key>
|
<French>Trépied</French>
|
||||||
<Key ID="STR_ACE_CSW_StaticAAWeapon_displayName">
|
<Spanish>Trípode</Spanish>
|
||||||
<English>[CSW] Mini-Spike Launcher (AA)</English>
|
<Italian>Treppiede</Italian>
|
||||||
</Key>
|
<Polish>Trójnóg</Polish>
|
||||||
<Key ID="STR_ACE_CSW_StaticHMGWeapon_displayName">
|
<German>Dreibein</German>
|
||||||
<English>[CSW] XM312</English>
|
<Turkish>Üçayak</Turkish>
|
||||||
</Key>
|
|
||||||
<Key ID="STR_ACE_CSW_StaticAutoHMGWeapon_displayName">
|
|
||||||
<English>[CSW] XM312A</English>
|
|
||||||
</Key>
|
|
||||||
<Key ID="STR_ACE_CSW_StaticHMGTallWeapon_displayName">
|
|
||||||
<English>[CSW] XM312 (High)</English>
|
|
||||||
</Key>
|
|
||||||
<Key ID="STR_ACE_CSW_StaticGMGWeapon_displayName">
|
|
||||||
<English>[CSW] XM307</English>
|
|
||||||
</Key>
|
|
||||||
<Key ID="STR_ACE_CSW_StaticAutoGMGWeapon_displayName">
|
|
||||||
<English>[CSW] XM307A</English>
|
|
||||||
</Key>
|
|
||||||
<Key ID="STR_ACE_CSW_StaticGMGTallWeapon_displayName">
|
|
||||||
<English>[CSW] XM307 (High)</English>
|
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_CSW_StaticATBag_displayName">
|
<Key ID="STR_ACE_CSW_StaticATBag_displayName">
|
||||||
<English>[CSW] Static Mini-Spike Launcher (AT)</English>
|
<English>[CSW] Static Mini-Spike Launcher (AT)</English>
|
||||||
@ -156,30 +126,12 @@
|
|||||||
<Key ID="STR_ACE_CSW_StaticAutoHMGBag_displayName">
|
<Key ID="STR_ACE_CSW_StaticAutoHMGBag_displayName">
|
||||||
<English>[CSW] Static XM312 Gun (Autonomous)</English>
|
<English>[CSW] Static XM312 Gun (Autonomous)</English>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_CSW_StaticHMGTallBag_displayName">
|
|
||||||
<English>[CSW] Static XM312 Gun (High)</English>
|
|
||||||
</Key>
|
|
||||||
<Key ID="STR_ACE_CSW_StaticGMGBag_displayName">
|
<Key ID="STR_ACE_CSW_StaticGMGBag_displayName">
|
||||||
<English>[CSW] Static XM307 Gun</English>
|
<English>[CSW] Static XM307 Gun</English>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_CSW_StaticAutoGMGBag_displayName">
|
<Key ID="STR_ACE_CSW_StaticAutoGMGBag_displayName">
|
||||||
<English>[CSW] Static XM307 Gun (Autonomous)</English>
|
<English>[CSW] Static XM307 Gun (Autonomous)</English>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_CSW_StaticGMGTallBag_displayName">
|
|
||||||
<English>[CSW] Static XM307 Gun (High)</English>
|
|
||||||
</Key>
|
|
||||||
<Key ID="STR_ACE_CSW_HMGStatic_displayName">
|
|
||||||
<English>[CSW] HMG Static</English>
|
|
||||||
</Key>
|
|
||||||
<Key ID="STR_ACE_CSW_GMGStatic_displayName">
|
|
||||||
<English>[CSW] GMG Static</English>
|
|
||||||
</Key>
|
|
||||||
<Key ID="STR_ACE_CSW_ATStatic_displayName">
|
|
||||||
<English>[CSW] AT Static</English>
|
|
||||||
</Key>
|
|
||||||
<Key ID="STR_ACE_CSW_AAStatic_displayName">
|
|
||||||
<English>[CSW] AA Static</English>
|
|
||||||
</Key>
|
|
||||||
<Key ID="STR_ACE_CSW_127x108_displayName">
|
<Key ID="STR_ACE_CSW_127x108_displayName">
|
||||||
<English>[CSW] 12.7x108mm HMG Belt</English>
|
<English>[CSW] 12.7x108mm HMG Belt</English>
|
||||||
</Key>
|
</Key>
|
||||||
@ -198,9 +150,6 @@
|
|||||||
<Key ID="STR_ACE_CSW_GMGBelt_displayName">
|
<Key ID="STR_ACE_CSW_GMGBelt_displayName">
|
||||||
<English>[CSW] 20mm Grenade GMG Belt</English>
|
<English>[CSW] 20mm Grenade GMG Belt</English>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_CSW_mag_127x108">
|
|
||||||
<English>[CSW] 12.7 x 108 mm Ammo Belt</English>
|
|
||||||
</Key>
|
|
||||||
<Key ID="STR_ACE_CSW_m3Tripod_displayName">
|
<Key ID="STR_ACE_CSW_m3Tripod_displayName">
|
||||||
<English>M3 Tripod</English>
|
<English>M3 Tripod</English>
|
||||||
</Key>
|
</Key>
|
||||||
@ -213,9 +162,6 @@
|
|||||||
<Key ID="STR_ACE_CSW_m220TripodFolded_displayName">
|
<Key ID="STR_ACE_CSW_m220TripodFolded_displayName">
|
||||||
<English>[CSW] M220 Deployable Tripod</English>
|
<English>[CSW] M220 Deployable Tripod</English>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_CSW_spg9TripodFolded_displayName">
|
|
||||||
<English>[CSW] SPG-9 Deployable Tripod</English>
|
|
||||||
</Key>
|
|
||||||
<Key ID="STR_ACE_CSW_sag30TripodFolded_displayName">
|
<Key ID="STR_ACE_CSW_sag30TripodFolded_displayName">
|
||||||
<English>[CSW] SAG-30 Deployable Tripod</English>
|
<English>[CSW] SAG-30 Deployable Tripod</English>
|
||||||
</Key>
|
</Key>
|
||||||
@ -228,20 +174,65 @@
|
|||||||
<Key ID="STR_ACE_CSW_m220Tripod_displayName">
|
<Key ID="STR_ACE_CSW_m220Tripod_displayName">
|
||||||
<English>M220 Tripod</English>
|
<English>M220 Tripod</English>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_CSW_spg9Tripod_displayName">
|
|
||||||
<English>SPG-9 Tripod</English>
|
|
||||||
</Key>
|
|
||||||
<Key ID="STR_ACE_CSW_m3TripodFolded_displayName">
|
<Key ID="STR_ACE_CSW_m3TripodFolded_displayName">
|
||||||
<English>[CSW] M3 Deployable Tripod</English>
|
<English>[CSW] M3 Deployable Tripod</English>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_CSW_m3TripodLowFolded_displayName">
|
<Key ID="STR_ACE_CSW_m3TripodLowFolded_displayName">
|
||||||
<English>[CSW] M3 Deployable Tripod (Low)</English>
|
<English>[CSW] M3 Deployable Tripod (Low)</English>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_CSW_m224MortarBaseplate_displayName">
|
<Key ID="STR_ACE_CSW_mortarBaseplateBag_displayName">
|
||||||
<English>[CSW] M224 Mortar Baseplate</English>
|
<English>[CSW] Mortar Baseplate</English>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_CSW_m224MortarBag_displayName">
|
<Key ID="STR_ACE_CSW_mortarBaseplate_displayName">
|
||||||
|
<English>Mortar Baseplate</English>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_CSW_mk6MortarBag_displayName">
|
||||||
<English>[CSW] Mk6 Mortar Tube</English>
|
<English>[CSW] Mk6 Mortar Tube</English>
|
||||||
</Key>
|
</Key>
|
||||||
|
<Key ID="STR_ACE_CSW_m252_tube">
|
||||||
|
<English>[CSW] M252 Tube Bag</English>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_CSW_m2_gun">
|
||||||
|
<English>[CSW] M2 Gun Bag</English>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_CSW_mk19_gun">
|
||||||
|
<English>[CSW] MK19 Gun Bag</English>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_CSW_tow_tube">
|
||||||
|
<English>[CSW] BGM-71 TOW Launcher Bag</English>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_CSW_dshk_gun">
|
||||||
|
<English>[CSW] DSHK Gun Bag</English>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_CSW_2b14_tube">
|
||||||
|
<English>[CSW] 2B14 Tube Bag</English>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_CSW_nsv_gun">
|
||||||
|
<English>[CSW] NSV Gun Bag</English>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_CSW_kord_gun">
|
||||||
|
<English>[CSW] KORD Gun Bag</English>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_CSW_ags30_gun">
|
||||||
|
<English>[CSW] AGS-30 Gun Bag</English>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_CSW_metis_tube">
|
||||||
|
<English>[CSW] 9k115 Metis Launcher Bag</English>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_CSW_kornet_launcher">
|
||||||
|
<English>[CSW] 9m113 Kornet Launcher</English>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_CSW_spg9_Tripod">
|
||||||
|
<English>SPG-9 Tripod</English>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_CSW_spg9_TripodFolded">
|
||||||
|
<English>[CSW] SPG-9 Deployable Tripod</English>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_CSW_spg9_tube">
|
||||||
|
<English>[CSW] SPG-9 Launcher Bag</English>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_CSW_spg9m_tube">
|
||||||
|
<English>[CSW] SPG-9M Launcher Bag</English>
|
||||||
|
</Key>
|
||||||
</Package>
|
</Package>
|
||||||
</Project>
|
</Project>
|
||||||
|
@ -2,7 +2,7 @@ class CfgAmmo {
|
|||||||
class ammo_Penetrator_Base;
|
class ammo_Penetrator_Base;
|
||||||
class M_Scalpel_AT;
|
class M_Scalpel_AT;
|
||||||
class Rocket_03_AP_F;
|
class Rocket_03_AP_F;
|
||||||
|
|
||||||
class GVAR(penetrator_super): ammo_Penetrator_Base {
|
class GVAR(penetrator_super): ammo_Penetrator_Base {
|
||||||
caliber = 60;
|
caliber = 60;
|
||||||
warheadName = "HEAT";
|
warheadName = "HEAT";
|
||||||
@ -25,7 +25,7 @@ class CfgAmmo {
|
|||||||
airFriction = 0.5;
|
airFriction = 0.5;
|
||||||
fuseDistance = 75;
|
fuseDistance = 75;
|
||||||
whistleDist = 2;
|
whistleDist = 2;
|
||||||
|
|
||||||
hit = 100;
|
hit = 100;
|
||||||
indirectHit = 9;
|
indirectHit = 9;
|
||||||
indirectHitRange = 1;
|
indirectHitRange = 1;
|
||||||
@ -34,7 +34,7 @@ class CfgAmmo {
|
|||||||
cost = 500;
|
cost = 500;
|
||||||
simulationStep = 0.005;
|
simulationStep = 0.005;
|
||||||
maxControlRange = 1500;
|
maxControlRange = 1500;
|
||||||
|
|
||||||
class ace_missileguidance {
|
class ace_missileguidance {
|
||||||
minDeflection = 0;
|
minDeflection = 0;
|
||||||
maxDeflection = 0;
|
maxDeflection = 0;
|
||||||
@ -59,7 +59,7 @@ class CfgAmmo {
|
|||||||
correctionDistance = 30;
|
correctionDistance = 30;
|
||||||
missileLeadDistance = 0;
|
missileLeadDistance = 0;
|
||||||
offsetFromCrosshair[] = { 0, 0, 0 };
|
offsetFromCrosshair[] = { 0, 0, 0 };
|
||||||
|
|
||||||
serviceInterval = 0.33; // how many seconds between pops
|
serviceInterval = 0.33; // how many seconds between pops
|
||||||
serviceCharges = 32; // how many charges are in this missile
|
serviceCharges = 32; // how many charges are in this missile
|
||||||
serviceChargeAcceleration = 6.5;
|
serviceChargeAcceleration = 6.5;
|
||||||
@ -69,7 +69,7 @@ class CfgAmmo {
|
|||||||
attackProfiles[] = {"DRAGON"};
|
attackProfiles[] = {"DRAGON"};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
class GVAR(super) : GVAR(dragonBase) {
|
class GVAR(super) : GVAR(dragonBase) {
|
||||||
submunitionAmmo = QGVAR(penetrator_super);
|
submunitionAmmo = QGVAR(penetrator_super);
|
||||||
submunitionDirectionType = "SubmunitionModelDirection";
|
submunitionDirectionType = "SubmunitionModelDirection";
|
||||||
@ -96,7 +96,7 @@ class CfgAmmo {
|
|||||||
|
|
||||||
correctionDistance = 30;
|
correctionDistance = 30;
|
||||||
missileLeadDistance = 0;
|
missileLeadDistance = 0;
|
||||||
|
|
||||||
serviceInterval = 0.33; // how many seconds between pops
|
serviceInterval = 0.33; // how many seconds between pops
|
||||||
serviceCharges = 60; // how many charges are in this missile
|
serviceCharges = 60; // how many charges are in this missile
|
||||||
serviceChargeAcceleration = 6.5;
|
serviceChargeAcceleration = 6.5;
|
||||||
@ -106,7 +106,7 @@ class CfgAmmo {
|
|||||||
attackProfiles[] = {"DRAGON"};
|
attackProfiles[] = {"DRAGON"};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
class ShellBase;
|
class ShellBase;
|
||||||
class GVAR(serviceCharge) : ShellBase {
|
class GVAR(serviceCharge) : ShellBase {
|
||||||
hit = 1;
|
hit = 1;
|
||||||
|
@ -122,11 +122,13 @@ class CfgVehicles {
|
|||||||
displayName = CSTRING(attachSight);
|
displayName = CSTRING(attachSight);
|
||||||
condition = QUOTE(call FUNC(sightCanAttach));
|
condition = QUOTE(call FUNC(sightCanAttach));
|
||||||
statement = QUOTE(call FUNC(sightAttach));
|
statement = QUOTE(call FUNC(sightAttach));
|
||||||
|
icon = QPATHTOF(data\m47_daysight_interaction_attach.paa);
|
||||||
};
|
};
|
||||||
class GVAR(detachSight) {
|
class GVAR(detachSight) {
|
||||||
displayName = CSTRING(detachSight);
|
displayName = CSTRING(detachSight);
|
||||||
condition = QUOTE(call FUNC(sightCanDetach));
|
condition = QUOTE(call FUNC(sightCanDetach));
|
||||||
statement = QUOTE(call FUNC(sightDetach));
|
statement = QUOTE(call FUNC(sightDetach));
|
||||||
|
icon = QPATHTOF(data\m47_daysight_interaction_detach.paa);
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -10,22 +10,22 @@ class CfgWeapons {
|
|||||||
class launch_Titan_F: launch_Titan_base {
|
class launch_Titan_F: launch_Titan_base {
|
||||||
class WeaponSlotsInfo;
|
class WeaponSlotsInfo;
|
||||||
};
|
};
|
||||||
|
|
||||||
class GVAR(super): launch_Titan_F {
|
class GVAR(super): launch_Titan_F {
|
||||||
model = QPATHTOF(models\ace_m47_magazine.p3d);
|
model = QPATHTOF(models\ace_m47_magazine.p3d);
|
||||||
picture = QPATHTOF(data\m47_dragon_item_ca.paa);
|
picture = QPATHTOF(data\m47_dragon_item_ca.paa);
|
||||||
magazines[] = {};
|
magazines[] = {};
|
||||||
displayName = CSTRING(dragonName);
|
displayName = CSTRING(dragonNameCarry); // add [CSW] prefix to make it clearer in arsenal that this is a deployable weapon
|
||||||
descriptionShort = CSTRING(dragonDescription);
|
descriptionShort = CSTRING(dragonDescription);
|
||||||
scope = 2;
|
scope = 2;
|
||||||
|
|
||||||
class ACE_CSW {
|
class ACE_CSW {
|
||||||
type = "mount";
|
type = "mount";
|
||||||
deployTime = 2;
|
deployTime = 2;
|
||||||
pickupTime = 2;
|
pickupTime = 2;
|
||||||
deploy = QGVAR(staticBase);
|
deploy = QGVAR(staticBase);
|
||||||
};
|
};
|
||||||
|
|
||||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||||
mass = 253;
|
mass = 253;
|
||||||
};
|
};
|
||||||
@ -36,14 +36,14 @@ class CfgWeapons {
|
|||||||
EGVAR(overpressure,angle) = 90;
|
EGVAR(overpressure,angle) = 90;
|
||||||
EGVAR(overpressure,range) = 30;
|
EGVAR(overpressure,range) = 30;
|
||||||
EGVAR(overpressure,damage) = 0.85;
|
EGVAR(overpressure,damage) = 0.85;
|
||||||
|
|
||||||
initSpeed = 120;
|
initSpeed = 120;
|
||||||
|
|
||||||
displayName = CSTRING(dragonName);
|
displayName = CSTRING(dragonName);
|
||||||
descriptionShort = CSTRING(dragonDescription);
|
descriptionShort = CSTRING(dragonDescription);
|
||||||
magazines[] = { QGVAR(super) };
|
magazines[] = { QGVAR(super) };
|
||||||
};
|
};
|
||||||
|
|
||||||
// need a weapon in order to rotate turret
|
// need a weapon in order to rotate turret
|
||||||
class GVAR(dummyStatic): Default {
|
class GVAR(dummyStatic): Default {
|
||||||
cursor = "";
|
cursor = "";
|
||||||
@ -55,7 +55,7 @@ class CfgWeapons {
|
|||||||
optics = 0;
|
optics = 0;
|
||||||
enableAttack = 0;
|
enableAttack = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
class GVAR(sight): Binocular {
|
class GVAR(sight): Binocular {
|
||||||
displayName = CSTRING(sightName);
|
displayName = CSTRING(sightName);
|
||||||
model = QPATHTOF(models\ace_m47_optic.p3d);
|
model = QPATHTOF(models\ace_m47_optic.p3d);
|
||||||
|
@ -19,10 +19,14 @@
|
|||||||
GVAR(pfID) = [{
|
GVAR(pfID) = [{
|
||||||
params ["_args"];
|
params ["_args"];
|
||||||
(_this select 0) params ["_vehicle", "_lastView"];
|
(_this select 0) params ["_vehicle", "_lastView"];
|
||||||
|
|
||||||
if ((!alive _vehicle) || {!alive ACE_player} || {(vehicle ACE_player) != _vehicle}) exitWith {
|
if ((!alive _vehicle) || {!alive ACE_player} || {(vehicle ACE_player) != _vehicle}) exitWith {
|
||||||
TRACE_1("exiting PFEH",GVAR(pfID));
|
TRACE_1("exiting PFEH",GVAR(pfID));
|
||||||
[GVAR(pfID)] call CBA_fnc_removePerFrameHandler;
|
[GVAR(pfID)] call CBA_fnc_removePerFrameHandler;
|
||||||
|
if ((alive _vehicle) && {!alive gunner _vehicle}) then {
|
||||||
|
TRACE_1("reseting rest rotate anim",_vehicle);
|
||||||
|
_vehicle animate ["rest_rotate", -0.35];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
if (cameraView in ["INTERNAL", "EXTERNAL"]) then {
|
if (cameraView in ["INTERNAL", "EXTERNAL"]) then {
|
||||||
|
@ -6,7 +6,7 @@ class CfgPatches {
|
|||||||
units[] = {};
|
units[] = {};
|
||||||
weapons[] = {};
|
weapons[] = {};
|
||||||
requiredVersion = REQUIRED_VERSION;
|
requiredVersion = REQUIRED_VERSION;
|
||||||
requiredAddons[] = {"ace_common","ace_missileguidance","ace_hot","ace_csw"};
|
requiredAddons[] = {"ace_hot","ace_csw"};
|
||||||
author = ECSTRING(common,ACETeam);
|
author = ECSTRING(common,ACETeam);
|
||||||
authors[] = {"Brandon (TCVM)"};
|
authors[] = {"Brandon (TCVM)"};
|
||||||
url = ECSTRING(main,URL);
|
url = ECSTRING(main,URL);
|
||||||
|
BIN
addons/dragon/data/m47_daysight_interaction_attach.paa
Normal file
BIN
addons/dragon/data/m47_daysight_interaction_attach.paa
Normal file
Binary file not shown.
BIN
addons/dragon/data/m47_daysight_interaction_detach.paa
Normal file
BIN
addons/dragon/data/m47_daysight_interaction_detach.paa
Normal file
Binary file not shown.
@ -30,9 +30,9 @@ if ((_distanceToProjectile > _seekerMaxRangeSqr) || _wireCut || { !alive _shoote
|
|||||||
// wire snap, random direction
|
// wire snap, random direction
|
||||||
if (!_wireCut) then {
|
if (!_wireCut) then {
|
||||||
_attackProfileStateParams set [1, true];
|
_attackProfileStateParams set [1, true];
|
||||||
playSound3D ["a3\sounds_f\air\sfx\SL_rope_break.wss", objNull, false, AGLtoASL (_shooter modelToWorld _wireCutSource), 150, 1, 25];
|
playSound3D ["a3\sounds_f\air\sfx\SL_rope_break.wss", objNull, false, AGLtoASL (_shooter modelToWorld _wireCutSource), 5, 1, 25];
|
||||||
};
|
};
|
||||||
|
|
||||||
if (_serviceChargeCount > 0 && {(_lastTime - CBA_missionTime) <= 0}) then {
|
if (_serviceChargeCount > 0 && {(_lastTime - CBA_missionTime) <= 0}) then {
|
||||||
_attackProfileStateParams set [5, CBA_missionTime + 0.05 + random 0.1];
|
_attackProfileStateParams set [5, CBA_missionTime + 0.05 + random 0.1];
|
||||||
private _randomVector = [(random 2) - 1, random 1, (random 2) - 1];
|
private _randomVector = [(random 2) - 1, random 1, (random 2) - 1];
|
||||||
@ -41,7 +41,7 @@ if ((_distanceToProjectile > _seekerMaxRangeSqr) || _wireCut || { !alive _shoote
|
|||||||
_charge setPosASL (_projectilePos vectorAdd ((_randomVector vectorMultiply -1) vectorMultiply 0.025));
|
_charge setPosASL (_projectilePos vectorAdd ((_randomVector vectorMultiply -1) vectorMultiply 0.025));
|
||||||
_attackProfileStateParams set [7, _serviceChargeCount - 1];
|
_attackProfileStateParams set [7, _serviceChargeCount - 1];
|
||||||
};
|
};
|
||||||
|
|
||||||
_retPos
|
_retPos
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -50,10 +50,10 @@ if (_distanceToProjectile <= _seekerMinRangeSqr || { _serviceChargeCount <= 0 }
|
|||||||
// if the time between updates is less than the pop time we want to fire the rockets OR if the missile wants to make a major correction pop it rapidly
|
// if the time between updates is less than the pop time we want to fire the rockets OR if the missile wants to make a major correction pop it rapidly
|
||||||
if (((_lastTime - CBA_missionTime) <= 0) || {(_lastTime - CBA_missionTime) < (_serviceInterval / 2) && (_projectilePos vectorDistance _seekerTargetPos > 1)}) then {
|
if (((_lastTime - CBA_missionTime) <= 0) || {(_lastTime - CBA_missionTime) < (_serviceInterval / 2) && (_projectilePos vectorDistance _seekerTargetPos > 1)}) then {
|
||||||
_attackProfileStateParams set [5, CBA_missionTime + _serviceInterval];
|
_attackProfileStateParams set [5, CBA_missionTime + _serviceInterval];
|
||||||
|
|
||||||
private _vectorToCrosshair = vectorNormalized (_projectile worldToModel (ASLToAGL _seekerTargetPos));
|
private _vectorToCrosshair = vectorNormalized (_projectile worldToModel (ASLToAGL _seekerTargetPos));
|
||||||
private _vectorToPos = vectorNormalized (((_projectile vectorWorldToModelVisual (_shooter weaponDirection _weapon)) vectorMultiply (_dragonSpeed * _serviceInterval)) vectorAdd (_vectorToCrosshair vectorMultiply _maxCorrectableDistance));
|
private _vectorToPos = vectorNormalized (((_projectile vectorWorldToModelVisual (_shooter weaponDirection _weapon)) vectorMultiply (_dragonSpeed * _serviceInterval)) vectorAdd (_vectorToCrosshair vectorMultiply _maxCorrectableDistance));
|
||||||
|
|
||||||
if ((_vectorToPos select 2) < 0) then {
|
if ((_vectorToPos select 2) < 0) then {
|
||||||
_vectorToPos set [2, 0];
|
_vectorToPos set [2, 0];
|
||||||
} else {
|
} else {
|
||||||
@ -66,10 +66,10 @@ if (((_lastTime - CBA_missionTime) <= 0) || {(_lastTime - CBA_missionTime) < (_s
|
|||||||
};
|
};
|
||||||
|
|
||||||
_projectile setVelocityModelSpace ((velocityModelSpace _projectile) vectorAdd (_vectorToPos vectorMultiply _serviceChargeAcceleration));
|
_projectile setVelocityModelSpace ((velocityModelSpace _projectile) vectorAdd (_vectorToPos vectorMultiply _serviceChargeAcceleration));
|
||||||
|
|
||||||
private _charge = createVehicle [QGVAR(serviceCharge), [0, 0, 0], [], 0, "NONE"];
|
private _charge = createVehicle [QGVAR(serviceCharge), [0, 0, 0], [], 0, "NONE"];
|
||||||
_charge setPosASL (_projectilePos vectorAdd ((_vectorToCrosshair vectorMultiply -1) vectorMultiply 0.025));
|
_charge setPosASL (_projectilePos vectorAdd ((_vectorToCrosshair vectorMultiply -1) vectorMultiply 0.025));
|
||||||
|
|
||||||
_attackProfileStateParams set [7, _serviceChargeCount - 1];
|
_attackProfileStateParams set [7, _serviceChargeCount - 1];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
* Arguments:
|
* Arguments:
|
||||||
* 0: Target <OBJECT>
|
* 0: Target <OBJECT>
|
||||||
* 1: Unit Performing Action <OBJECT>
|
* 1: Unit Performing Action <OBJECT>
|
||||||
|
* 2: Is event (function recursives globaly to set weapon where turret is local) <BOOL> (default: false)
|
||||||
*
|
*
|
||||||
* Return Value:
|
* Return Value:
|
||||||
* Can Attach Sighting Unit <BOOL>
|
* Can Attach Sighting Unit <BOOL>
|
||||||
@ -19,7 +20,7 @@
|
|||||||
params ["_target", "_unit", ["_event", false]];
|
params ["_target", "_unit", ["_event", false]];
|
||||||
TRACE_3("sightAttach",_target,_unit,_event);
|
TRACE_3("sightAttach",_target,_unit,_event);
|
||||||
|
|
||||||
if (_event isEqualTo true) then {
|
if (_event isEqualTo true) then { // this is actually needed as 3rd arg may not be bool
|
||||||
if (!(_target turretLocal [0])) exitWith {};
|
if (!(_target turretLocal [0])) exitWith {};
|
||||||
_target setVariable [QGVAR(sightAttached), true, true];
|
_target setVariable [QGVAR(sightAttached), true, true];
|
||||||
_target animate ["optic_hide", 0];
|
_target animate ["optic_hide", 0];
|
||||||
|
@ -15,10 +15,9 @@
|
|||||||
*
|
*
|
||||||
* Public: No
|
* Public: No
|
||||||
*/
|
*/
|
||||||
|
|
||||||
params ["_target", "_unit"];
|
params ["_target", "_unit"];
|
||||||
|
|
||||||
(alive _target)
|
(alive _target)
|
||||||
// && {!(_target getVariable [QGVAR(fired), false])}
|
|
||||||
&& {!(_target getVariable [QGVAR(sightAttached), ((typeOf _target) == QGVAR(staticAssembled))])}
|
&& {!(_target getVariable [QGVAR(sightAttached), ((typeOf _target) == QGVAR(staticAssembled))])}
|
||||||
&& {QGVAR(sight) in (weapons _unit)}
|
&& {QGVAR(sight) in (weapons _unit)}
|
||||||
|
@ -15,9 +15,8 @@
|
|||||||
*
|
*
|
||||||
* Public: No
|
* Public: No
|
||||||
*/
|
*/
|
||||||
|
|
||||||
params ["_target", "_unit"];
|
params ["_target", "_unit"];
|
||||||
|
|
||||||
(alive _target)
|
(alive _target)
|
||||||
// && {!(_target getVariable [QGVAR(fired), false])}
|
|
||||||
&& {_target getVariable [QGVAR(sightAttached), ((typeOf _target) == QGVAR(staticAssembled))]}
|
&& {_target getVariable [QGVAR(sightAttached), ((typeOf _target) == QGVAR(staticAssembled))]}
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
* Arguments:
|
* Arguments:
|
||||||
* 0: Target <OBJECT>
|
* 0: Target <OBJECT>
|
||||||
* 1: Unit Performing Action <OBJECT>
|
* 1: Unit Performing Action <OBJECT>
|
||||||
|
* 2: Is event (function recursives globaly to set weapon where turret is local) <BOOL> (default: false)
|
||||||
*
|
*
|
||||||
* Return Value:
|
* Return Value:
|
||||||
* Can Attach Sighting Unit <BOOL>
|
* Can Attach Sighting Unit <BOOL>
|
||||||
@ -21,7 +22,7 @@ params ["_target", "_unit"];
|
|||||||
params ["_target", "_unit", ["_event", false]];
|
params ["_target", "_unit", ["_event", false]];
|
||||||
TRACE_3("sightDetach",_target,_unit,_event);
|
TRACE_3("sightDetach",_target,_unit,_event);
|
||||||
|
|
||||||
if (_event isEqualTo true) then {
|
if (_event isEqualTo true) then { // this is actually needed as 3rd arg may not be bool
|
||||||
if (!(_target turretLocal [0])) exitWith {};
|
if (!(_target turretLocal [0])) exitWith {};
|
||||||
_target setVariable [QGVAR(sightAttached), false, true];
|
_target setVariable [QGVAR(sightAttached), false, true];
|
||||||
_target animate ["optic_hide", 1];
|
_target animate ["optic_hide", 1];
|
||||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,15 +1,12 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Project name="ACE">
|
<Project name="ACE">
|
||||||
<Package name="dragon">
|
<Package name="dragon">
|
||||||
|
<Key ID="STR_ACE_dragon_dragonNameCarry">
|
||||||
|
<English>[CSW] M47 Super-Dragon</English>
|
||||||
|
</Key>
|
||||||
<Key ID="STR_ACE_dragon_dragonName">
|
<Key ID="STR_ACE_dragon_dragonName">
|
||||||
<English>M47 Super-Dragon</English>
|
<English>M47 Super-Dragon</English>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_dragon_dragonNoSight">
|
|
||||||
<English>M47 Super-Dragon (No Sight)</English>
|
|
||||||
</Key>
|
|
||||||
<Key ID="STR_ACE_dragon_dragonSight">
|
|
||||||
<English>M47 Super-Dragon (With Sight)</English>
|
|
||||||
</Key>
|
|
||||||
<Key ID="STR_ACE_dragon_attachSight">
|
<Key ID="STR_ACE_dragon_attachSight">
|
||||||
<English>Attach Sight</English>
|
<English>Attach Sight</English>
|
||||||
</Key>
|
</Key>
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
<Russian>XM312</Russian>
|
<Russian>XM312</Russian>
|
||||||
<Portuguese>XM312</Portuguese>
|
<Portuguese>XM312</Portuguese>
|
||||||
<Hungarian>XM312</Hungarian>
|
<Hungarian>XM312</Hungarian>
|
||||||
<Italian>XM312A</Italian>
|
<Italian>XM312</Italian>
|
||||||
<Japanese>XM312</Japanese>
|
<Japanese>XM312</Japanese>
|
||||||
<Korean>XM312</Korean>
|
<Korean>XM312</Korean>
|
||||||
<Chinese>XM312重機槍</Chinese>
|
<Chinese>XM312重機槍</Chinese>
|
||||||
|
@ -5,38 +5,44 @@
|
|||||||
*
|
*
|
||||||
* Arguments:
|
* Arguments:
|
||||||
* 0: Ammo Truck <OBJECT>
|
* 0: Ammo Truck <OBJECT>
|
||||||
|
* 1: Player <OBJECT>
|
||||||
*
|
*
|
||||||
* Return Value:
|
* Return Value:
|
||||||
* ChildActions <ARRAY>
|
* ChildActions <ARRAY>
|
||||||
*
|
*
|
||||||
* Example:
|
* Example:
|
||||||
* [tank] call ace_rearm_fnc_addRearmActions
|
* [tank, player] call ace_rearm_fnc_addRearmActions
|
||||||
*
|
*
|
||||||
* Public: No
|
* Public: No
|
||||||
*/
|
*/
|
||||||
|
|
||||||
params ["_truck"];
|
params ["_truck", "_player"];
|
||||||
|
|
||||||
private _vehicles = nearestObjects [_truck, ["AllVehicles"], 20];
|
private _vehicles = nearestObjects [_truck, ["AllVehicles"], 20];
|
||||||
_vehicles = _vehicles select {(_x != _truck) && {!(_x isKindOf "CAManBase")} && {!(_x getVariable [QGVAR(disabled), false])}};
|
_vehicles = _vehicles select {(_x != _truck) && {!(_x isKindOf "CAManBase")} && {!(_x getVariable [QGVAR(disabled), false])}};
|
||||||
|
|
||||||
if (missionNamespace getVariable [QEGVAR(mk6mortar,useAmmoHandling), false]) then {
|
private _cswCarryMagazines = [];
|
||||||
_vehicles = _vehicles select {!(_x isKindOf "Mortar_01_base_F")};
|
|
||||||
};
|
|
||||||
|
|
||||||
private _vehicleActions = [];
|
private _vehicleActions = [];
|
||||||
{
|
{
|
||||||
private _vehicle = _x;
|
private _vehicle = _x;
|
||||||
|
|
||||||
// Array of magazines that can be rearmed in the vehicle
|
// Array of magazines that can be rearmed in the vehicle
|
||||||
private _needRearmMags = ([_vehicle] call FUNC(getNeedRearmMagazines)) apply {_x select 0};
|
private _needRearmMags = ([_vehicle] call FUNC(getNeedRearmMagazines)) apply {_x select 0};
|
||||||
|
|
||||||
// _needRearmMags without duplicates
|
// _needRearmMags without duplicates
|
||||||
private _magazineHelper = _needRearmMags arrayIntersect _needRearmMags;
|
private _magazineHelper = _needRearmMags arrayIntersect _needRearmMags;
|
||||||
|
|
||||||
_magazineHelper = _magazineHelper select {[_truck, _x] call FUNC(hasEnoughSupply)};
|
_magazineHelper = _magazineHelper select {[_truck, _x] call FUNC(hasEnoughSupply)};
|
||||||
|
|
||||||
|
if (["ace_csw"] call EFUNC(common,isModLoaded)) then {
|
||||||
|
([_vehicle] call EFUNC(csw,aceRearmGetCarryMagazines)) params ["_turretMagsCSW", "_allCarryMags"];
|
||||||
|
TRACE_3("csw compat",_vehicle,_turretMagsCSW,_allCarryMags);
|
||||||
|
_cswCarryMagazines append _allCarryMags;
|
||||||
|
_magazineHelper = _magazineHelper - _turretMagsCSW;
|
||||||
|
};
|
||||||
|
|
||||||
TRACE_2("can add",_x,_magazineHelper);
|
TRACE_2("can add",_x,_magazineHelper);
|
||||||
|
|
||||||
if (!(_magazineHelper isEqualTo [])) then {
|
if (!(_magazineHelper isEqualTo [])) then {
|
||||||
private _icon = getText(configFile >> "CfgVehicles" >> (typeOf _vehicle) >> "Icon");
|
private _icon = getText(configFile >> "CfgVehicles" >> (typeOf _vehicle) >> "Icon");
|
||||||
if !((_icon select [0, 1]) == "\") then {
|
if !((_icon select [0, 1]) == "\") then {
|
||||||
@ -80,10 +86,29 @@ private _vehicleActions = [];
|
|||||||
{},
|
{},
|
||||||
[]
|
[]
|
||||||
] call EFUNC(interact_menu,createAction);
|
] call EFUNC(interact_menu,createAction);
|
||||||
|
|
||||||
_vehicleActions pushBack [_action, _actions, _truck];
|
_vehicleActions pushBack [_action, _actions, _truck];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
} forEach _vehicles;
|
} forEach _vehicles;
|
||||||
|
|
||||||
|
if (!(_cswCarryMagazines isEqualTo [])) then {
|
||||||
|
_cswCarryMagazines = _cswCarryMagazines arrayIntersect _cswCarryMagazines;
|
||||||
|
_cswCarryMagazines = _cswCarryMagazines select {[_truck, _x] call FUNC(hasEnoughSupply)};
|
||||||
|
private _baseAction = [QGVAR(cswTake), "CSW", "", {}, {true}] call EFUNC(interact_menu,createAction);
|
||||||
|
private _subActions = _cswCarryMagazines apply {
|
||||||
|
private _action = [
|
||||||
|
_x,
|
||||||
|
_x call FUNC(getMagazineName),
|
||||||
|
getText(configFile >> "CfgMagazines" >> _x >> "picture"),
|
||||||
|
{_this call FUNC(takeAmmo)},
|
||||||
|
{true},
|
||||||
|
{},
|
||||||
|
[_x, _player]
|
||||||
|
] call EFUNC(interact_menu,createAction);
|
||||||
|
[_action, [], _truck];
|
||||||
|
};
|
||||||
|
_vehicleActions pushBack [_baseAction, _subActions, _truck];
|
||||||
|
};
|
||||||
|
|
||||||
_vehicleActions
|
_vehicleActions
|
||||||
|
@ -26,6 +26,8 @@ if (isNil "_magName") then {
|
|||||||
WARNING_1("Magazine is missing display name [%1]",_className);
|
WARNING_1("Magazine is missing display name [%1]",_className);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
if ((_displayName select [0,6]) == "[CSW] ") then { _displayName = _displayName select [6]; };
|
||||||
|
|
||||||
GVAR(magazineNameCache) setVariable [_className, _displayName];
|
GVAR(magazineNameCache) setVariable [_className, _displayName];
|
||||||
GVAR(originalMagazineNames) pushBack _displayName;
|
GVAR(originalMagazineNames) pushBack _displayName;
|
||||||
TRACE_2("Adding to cache",_className,_displayName);
|
TRACE_2("Adding to cache",_className,_displayName);
|
||||||
|
@ -33,19 +33,19 @@ private _magazineInfo = [];
|
|||||||
private _pylonConfigs = configProperties [configFile >> "CfgVehicles" >> (typeOf _vehicle) >> "Components" >> "TransportPylonsComponent" >> "Pylons", "isClass _x"];
|
private _pylonConfigs = configProperties [configFile >> "CfgVehicles" >> (typeOf _vehicle) >> "Components" >> "TransportPylonsComponent" >> "Pylons", "isClass _x"];
|
||||||
{
|
{
|
||||||
private _pylonConfig = _x;
|
private _pylonConfig = _x;
|
||||||
|
|
||||||
// Strangely, a 1-based index.
|
// Strangely, a 1-based index.
|
||||||
private _pylonIndex = _forEachIndex + 1;
|
private _pylonIndex = _forEachIndex + 1;
|
||||||
|
|
||||||
// Retrieving pylon magazine by index. If the pylon is empty, it is marked with "".
|
// Retrieving pylon magazine by index. If the pylon is empty, it is marked with "".
|
||||||
private _pylonMagazine = (getPylonMagazines _vehicle) select (_pylonIndex - 1);
|
private _pylonMagazine = (getPylonMagazines _vehicle) select (_pylonIndex - 1);
|
||||||
|
|
||||||
// Only care about pylons that have a magazine.
|
// Only care about pylons that have a magazine.
|
||||||
if (!(_pylonMagazine isEqualTo "")) then {
|
if (!(_pylonMagazine isEqualTo "")) then {
|
||||||
|
|
||||||
private _maxRounds = getNumber (configFile >> "CfgMagazines" >> _pylonMagazine >> "count");
|
private _maxRounds = getNumber (configFile >> "CfgMagazines" >> _pylonMagazine >> "count");
|
||||||
private _currentRounds = _vehicle ammoOnPylon _pylonIndex;
|
private _currentRounds = _vehicle ammoOnPylon _pylonIndex;
|
||||||
|
|
||||||
if (_currentRounds < _maxRounds) then {
|
if (_currentRounds < _maxRounds) then {
|
||||||
// getPylonTurret expects 0 based index, and returns driver turret as [-1]
|
// getPylonTurret expects 0 based index, and returns driver turret as [-1]
|
||||||
private _pylonTurret = [_vehicle, (_pylonIndex - 1)] call EFUNC(common,getPylonTurret);
|
private _pylonTurret = [_vehicle, (_pylonIndex - 1)] call EFUNC(common,getPylonTurret);
|
||||||
@ -62,13 +62,13 @@ private _turrets = [_vehicle] call FUNC(getAllRearmTurrets);
|
|||||||
|
|
||||||
// _magazines without duplicates
|
// _magazines without duplicates
|
||||||
private _magazineClasses = _magazines arrayIntersect _magazines;
|
private _magazineClasses = _magazines arrayIntersect _magazines;
|
||||||
|
|
||||||
{
|
{
|
||||||
private _magazineClass = _x;
|
private _magazineClass = _x;
|
||||||
|
|
||||||
private _maxMagazines = [_vehicle, _turretPath, _magazineClass] call FUNC(getMaxMagazines);
|
private _maxMagazines = [_vehicle, _turretPath, _magazineClass] call FUNC(getMaxMagazines);
|
||||||
private _maxRoundsPerMag = getNumber (configFile >> "CfgMagazines" >> _magazineClass >> "count");
|
private _maxRoundsPerMag = getNumber (configFile >> "CfgMagazines" >> _magazineClass >> "count");
|
||||||
|
|
||||||
/* Array of ammo counts in every magazine. Example: [200, 200, 152] means 2 mags with 200
|
/* Array of ammo counts in every magazine. Example: [200, 200, 152] means 2 mags with 200
|
||||||
* rounds and 1 mag with 152 rounds. */
|
* rounds and 1 mag with 152 rounds. */
|
||||||
private _currentRounds = [_vehicle, _turretPath, _magazineClass] call FUNC(getTurretMagazineAmmo);
|
private _currentRounds = [_vehicle, _turretPath, _magazineClass] call FUNC(getTurretMagazineAmmo);
|
||||||
@ -77,9 +77,10 @@ private _turrets = [_vehicle] call FUNC(getAllRearmTurrets);
|
|||||||
/* If there is space for new magazines or if some magazines are not full, add the magazine
|
/* If there is space for new magazines or if some magazines are not full, add the magazine
|
||||||
* type to _magazineInfo. */
|
* type to _magazineInfo. */
|
||||||
if ((_currentMagazines < _maxMagazines) || {({_x < _maxRoundsPerMag} count _currentRounds) > 0}) then {
|
if ((_currentMagazines < _maxMagazines) || {({_x < _maxRoundsPerMag} count _currentRounds) > 0}) then {
|
||||||
|
if (_magazineClass == "FakeWeapon") exitWith {};
|
||||||
_magazineInfo pushBack [_magazineClass, _turretPath, false, -1, _maxMagazines, _currentMagazines, _maxRoundsPerMag, _currentRounds];
|
_magazineInfo pushBack [_magazineClass, _turretPath, false, -1, _maxMagazines, _currentMagazines, _maxRoundsPerMag, _currentRounds];
|
||||||
};
|
};
|
||||||
|
|
||||||
} forEach _magazineClasses;
|
} forEach _magazineClasses;
|
||||||
} forEach _turrets;
|
} forEach _turrets;
|
||||||
|
|
||||||
|
@ -22,6 +22,14 @@ TRACE_3("rearmEntireVehicleSuccessLocal",_truck,_vehicle,_turretPath);
|
|||||||
|
|
||||||
// Fetching all rearmable magazines in this turret
|
// Fetching all rearmable magazines in this turret
|
||||||
private _magazines = ([_vehicle] call FUNC(getNeedRearmMagazines)) select {(_x select 1) isEqualTo _turretPath};
|
private _magazines = ([_vehicle] call FUNC(getNeedRearmMagazines)) select {(_x select 1) isEqualTo _turretPath};
|
||||||
|
if (["ace_csw"] call EFUNC(common,isModLoaded)) then {
|
||||||
|
([_vehicle, _turretPath] call EFUNC(csw,aceRearmGetCarryMagazines)) params ["_turretMagsCSW", "_allCarryMags"];
|
||||||
|
TRACE_1("skipping",_turretMagsCSW);
|
||||||
|
_magazines = _magazines select {
|
||||||
|
_x params ["_magazineClass"];
|
||||||
|
(_turretMagsCSW findIf {_x == _magazineClass}) == -1
|
||||||
|
};
|
||||||
|
};
|
||||||
{
|
{
|
||||||
_x params ["_magazineClass", "_magTurretPath", "_isPylonMag", "_pylonIndex", "_maxMagazines", "_currentMagazines", "_maxRoundsPerMag", "_currentRounds"];
|
_x params ["_magazineClass", "_magTurretPath", "_isPylonMag", "_pylonIndex", "_maxMagazines", "_currentMagazines", "_maxRoundsPerMag", "_currentRounds"];
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
* 1: Unit <OBJECT>
|
* 1: Unit <OBJECT>
|
||||||
* 2: Params <ARRAY>
|
* 2: Params <ARRAY>
|
||||||
* 0: Magazine Classname <STRING>
|
* 0: Magazine Classname <STRING>
|
||||||
* 1: Vehicle to be armed <OBJECT>
|
* 1: Vehicle to be armed or player <OBJECT>
|
||||||
*
|
*
|
||||||
* Return Value:
|
* Return Value:
|
||||||
* None
|
* None
|
||||||
@ -27,12 +27,18 @@ TRACE_5("takeAmmo",_truck,_unit,_args,_magazineClass,_vehicle);
|
|||||||
|
|
||||||
REARM_HOLSTER_WEAPON;
|
REARM_HOLSTER_WEAPON;
|
||||||
|
|
||||||
|
private _targetName = if (_vehicle == _unit) then {
|
||||||
|
"CSW"
|
||||||
|
} else {
|
||||||
|
getText(configFile >> "CfgVehicles" >> (typeOf _vehicle) >> "displayName")
|
||||||
|
};
|
||||||
|
|
||||||
[
|
[
|
||||||
TIME_PROGRESSBAR(REARM_DURATION_TAKE select _idx),
|
TIME_PROGRESSBAR(REARM_DURATION_TAKE select _idx),
|
||||||
[_unit, _magazineClass, _truck],
|
[_unit, _magazineClass, _truck, _vehicle],
|
||||||
FUNC(takeSuccess),
|
FUNC(takeSuccess),
|
||||||
"",
|
"",
|
||||||
format [localize LSTRING(TakeAction), _magazineClass call FUNC(getMagazineName), getText(configFile >> "CfgVehicles" >> (typeOf _vehicle) >> "displayName")],
|
format [localize LSTRING(TakeAction), _magazineClass call FUNC(getMagazineName), _targetName],
|
||||||
{true},
|
{true},
|
||||||
["isnotinside"]
|
["isnotinside"]
|
||||||
] call EFUNC(common,progressBar);
|
] call EFUNC(common,progressBar);
|
||||||
|
@ -8,19 +8,20 @@
|
|||||||
* 0: Unit <OBJECT>
|
* 0: Unit <OBJECT>
|
||||||
* 1: Magazine Classname <STRING>
|
* 1: Magazine Classname <STRING>
|
||||||
* 2: Ammo Truck <OBJECT>
|
* 2: Ammo Truck <OBJECT>
|
||||||
|
* 3: Target Vehicle or Player <OBJECT>
|
||||||
*
|
*
|
||||||
* Return Value:
|
* Return Value:
|
||||||
* None
|
* None
|
||||||
*
|
*
|
||||||
* Example:
|
* Example:
|
||||||
* [[player, "500Rnd_127x99_mag_Tracer_Red"]] call ace_rearm_fnc_takeSuccess
|
* [[player, "500Rnd_127x99_mag_Tracer_Red", ammoTruck, targetVehicle]] call ace_rearm_fnc_takeSuccess
|
||||||
*
|
*
|
||||||
* Public: No
|
* Public: No
|
||||||
*/
|
*/
|
||||||
|
|
||||||
params ["_args"];
|
params ["_args"];
|
||||||
_args params ["_unit", "_magazineClass", "_truck"];
|
_args params ["_unit", "_magazineClass", "_truck", "_vehicle"];
|
||||||
TRACE_3("takeSuccess",_unit,_magazineClass,_truck);
|
TRACE_4("takeSuccess",_unit,_magazineClass,_truck,_vehicle);
|
||||||
|
|
||||||
private _success = true;
|
private _success = true;
|
||||||
if (GVAR(supply) > 0) then {
|
if (GVAR(supply) > 0) then {
|
||||||
@ -28,6 +29,13 @@ if (GVAR(supply) > 0) then {
|
|||||||
};
|
};
|
||||||
if !(_success) exitWith {WARNING_2("takeSuccess failed to take [%1] from [%2]",_magazineClass,_truck);};
|
if !(_success) exitWith {WARNING_2("takeSuccess failed to take [%1] from [%2]",_magazineClass,_truck);};
|
||||||
|
|
||||||
|
if (_vehicle == _unit) exitWith {
|
||||||
|
([_magazineClass] call FUNC(getCaliber)) params ["", "_idx"];
|
||||||
|
private _rounds = (REARM_COUNT select _idx);
|
||||||
|
TRACE_4("passing to csw",_unit,_magazineClass,_idx,_rounds);
|
||||||
|
[_unit, _magazineClass, _rounds] call EFUNC(csw,reload_handleReturnAmmo);
|
||||||
|
};
|
||||||
|
|
||||||
[_unit, "forceWalk", "ACE_rearm", true] call EFUNC(common,statusEffect_set);
|
[_unit, "forceWalk", "ACE_rearm", true] call EFUNC(common,statusEffect_set);
|
||||||
[_unit, "blockThrow", "ACE_rearm", true] call EFUNC(common,statusEffect_set);
|
[_unit, "blockThrow", "ACE_rearm", true] call EFUNC(common,statusEffect_set);
|
||||||
private _dummy = [_unit, _magazineClass] call FUNC(createDummy);
|
private _dummy = [_unit, _magazineClass] call FUNC(createDummy);
|
||||||
|
@ -233,6 +233,7 @@ class CfgVehicles {
|
|||||||
position = "";
|
position = "";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
// ENABLE_CSW_ATTRIBUTE;
|
||||||
class ACE_CSW {
|
class ACE_CSW {
|
||||||
enabled = 1;
|
enabled = 1;
|
||||||
proxyWeapon = QGVAR(rhs_weap_SPG9);
|
proxyWeapon = QGVAR(rhs_weap_SPG9);
|
||||||
@ -251,6 +252,7 @@ class CfgVehicles {
|
|||||||
selection = "tripod";
|
selection = "tripod";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
// ENABLE_CSW_ATTRIBUTE;
|
||||||
class ACE_CSW {
|
class ACE_CSW {
|
||||||
enabled = 1;
|
enabled = 1;
|
||||||
proxyWeapon = QGVAR(rhs_weap_9K133_launcher);
|
proxyWeapon = QGVAR(rhs_weap_9K133_launcher);
|
||||||
@ -276,6 +278,7 @@ class CfgVehicles {
|
|||||||
selection = ""; // no good selections for this mortar
|
selection = ""; // no good selections for this mortar
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
// ENABLE_CSW_ATTRIBUTE;
|
||||||
class ACE_CSW {
|
class ACE_CSW {
|
||||||
enabled = 1;
|
enabled = 1;
|
||||||
magazineLocation = "";
|
magazineLocation = "";
|
||||||
@ -321,6 +324,7 @@ class CfgVehicles {
|
|||||||
|
|
||||||
class StaticGrenadeLauncher: StaticWeapon {};
|
class StaticGrenadeLauncher: StaticWeapon {};
|
||||||
class RHS_AGS30_TriPod_base: StaticGrenadeLauncher {
|
class RHS_AGS30_TriPod_base: StaticGrenadeLauncher {
|
||||||
|
// ENABLE_CSW_ATTRIBUTE;
|
||||||
class ACE_CSW {
|
class ACE_CSW {
|
||||||
enabled = 1;
|
enabled = 1;
|
||||||
proxyWeapon = QGVAR(rhs_weap_AGS30);
|
proxyWeapon = QGVAR(rhs_weap_AGS30);
|
||||||
@ -341,6 +345,7 @@ class CfgVehicles {
|
|||||||
};
|
};
|
||||||
|
|
||||||
class rhs_Metis_Base: AT_01_base_F {
|
class rhs_Metis_Base: AT_01_base_F {
|
||||||
|
// ENABLE_CSW_ATTRIBUTE;
|
||||||
class ACE_CSW {
|
class ACE_CSW {
|
||||||
enabled = 1;
|
enabled = 1;
|
||||||
proxyWeapon = QGVAR(rhs_weap_9K115_2_launcher);
|
proxyWeapon = QGVAR(rhs_weap_9K115_2_launcher);
|
||||||
|
@ -1,14 +1,12 @@
|
|||||||
#define CREATE_CSW_PROXY(weapon) class ##weapon; class GVAR(weapon): ##weapon { magazineReloadTime = 0.5; }
|
|
||||||
|
|
||||||
class CfgWeapons {
|
class CfgWeapons {
|
||||||
|
|
||||||
class NVGoggles;
|
class NVGoggles;
|
||||||
class rhs_1PN138: NVGoggles { // Monocular
|
class rhs_1PN138: NVGoggles { // Monocular
|
||||||
modelOptics = "";
|
modelOptics = "";
|
||||||
EGVAR(nightvision,border) = QPATHTOEF(nightvision,data\nvg_mask_4096.paa);
|
EGVAR(nightvision,border) = QPATHTOEF(nightvision,data\nvg_mask_4096.paa);
|
||||||
EGVAR(nightvision,bluRadius) = 0.13;
|
EGVAR(nightvision,bluRadius) = 0.13;
|
||||||
};
|
};
|
||||||
|
|
||||||
class hgun_Rook40_F;
|
class hgun_Rook40_F;
|
||||||
class rhs_weap_pya: hgun_Rook40_F {
|
class rhs_weap_pya: hgun_Rook40_F {
|
||||||
ACE_barrelTwist = 254.0;
|
ACE_barrelTwist = 254.0;
|
||||||
@ -145,7 +143,7 @@ class CfgWeapons {
|
|||||||
ace_overpressure_range = 15;
|
ace_overpressure_range = 15;
|
||||||
ace_overpressure_damage = 0.5;
|
ace_overpressure_damage = 0.5;
|
||||||
};
|
};
|
||||||
|
|
||||||
CREATE_CSW_PROXY(rhs_weap_2b14);
|
CREATE_CSW_PROXY(rhs_weap_2b14);
|
||||||
CREATE_CSW_PROXY(rhs_weap_nsvt_effects);
|
CREATE_CSW_PROXY(rhs_weap_nsvt_effects);
|
||||||
CREATE_CSW_PROXY(rhs_weap_KORD);
|
CREATE_CSW_PROXY(rhs_weap_KORD);
|
||||||
@ -153,7 +151,7 @@ class CfgWeapons {
|
|||||||
CREATE_CSW_PROXY(rhs_weap_SPG9);
|
CREATE_CSW_PROXY(rhs_weap_SPG9);
|
||||||
CREATE_CSW_PROXY(rhs_weap_9K133_launcher);
|
CREATE_CSW_PROXY(rhs_weap_9K133_launcher);
|
||||||
CREATE_CSW_PROXY(rhs_weap_9K115_2_launcher);
|
CREATE_CSW_PROXY(rhs_weap_9K115_2_launcher);
|
||||||
|
|
||||||
class GVAR(2b14_carry): Launcher_Base_F {
|
class GVAR(2b14_carry): Launcher_Base_F {
|
||||||
class ACE_CSW {
|
class ACE_CSW {
|
||||||
type = "weapon";
|
type = "weapon";
|
||||||
@ -166,14 +164,14 @@ class CfgWeapons {
|
|||||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||||
mass = 670; // 2B14 Mortar Weight
|
mass = 670; // 2B14 Mortar Weight
|
||||||
};
|
};
|
||||||
displayName = CSTRING(2b14_tube);
|
displayName = ECSTRING(CSW,2b14_tube);
|
||||||
author = ECSTRING(common,ACETeam);
|
author = ECSTRING(common,ACETeam);
|
||||||
scope = 2;
|
scope = 2;
|
||||||
model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
|
model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
|
||||||
modes[] = {};
|
modes[] = {};
|
||||||
picture = "\rhsafrf\addons\rhs_heavyweapons\data\ico\podnos_2b14_ca.paa";
|
picture = "\rhsafrf\addons\rhs_heavyweapons\data\ico\podnos_2b14_ca.paa";
|
||||||
};
|
};
|
||||||
|
|
||||||
class GVAR(nsv_carry): Launcher_Base_F {
|
class GVAR(nsv_carry): Launcher_Base_F {
|
||||||
class ACE_CSW {
|
class ACE_CSW {
|
||||||
type = "weapon";
|
type = "weapon";
|
||||||
@ -186,14 +184,14 @@ class CfgWeapons {
|
|||||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||||
mass = 550;
|
mass = 550;
|
||||||
};
|
};
|
||||||
displayName = CSTRING(nsv_gun);
|
displayName = ECSTRING(CSW,nsv_gun);
|
||||||
author = ECSTRING(common,ACETeam);
|
author = ECSTRING(common,ACETeam);
|
||||||
scope = 2;
|
scope = 2;
|
||||||
model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
|
model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
|
||||||
modes[] = {};
|
modes[] = {};
|
||||||
picture = "\rhsafrf\addons\rhs_heavyweapons\mg\bis_kord\kord_CA.paa";
|
picture = "\rhsafrf\addons\rhs_heavyweapons\mg\bis_kord\kord_CA.paa";
|
||||||
};
|
};
|
||||||
|
|
||||||
class GVAR(kord_carry): Launcher_Base_F {
|
class GVAR(kord_carry): Launcher_Base_F {
|
||||||
class ACE_CSW {
|
class ACE_CSW {
|
||||||
type = "weapon";
|
type = "weapon";
|
||||||
@ -207,14 +205,14 @@ class CfgWeapons {
|
|||||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||||
mass = 550;
|
mass = 550;
|
||||||
};
|
};
|
||||||
displayName = CSTRING(kord_gun);
|
displayName = ECSTRING(CSW,kord_gun);
|
||||||
author = ECSTRING(common,ACETeam);
|
author = ECSTRING(common,ACETeam);
|
||||||
scope = 2;
|
scope = 2;
|
||||||
model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
|
model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
|
||||||
modes[] = {};
|
modes[] = {};
|
||||||
picture = "\rhsafrf\addons\rhs_heavyweapons\data\ico\kord6u16sp_ca.paa";
|
picture = "\rhsafrf\addons\rhs_heavyweapons\data\ico\kord6u16sp_ca.paa";
|
||||||
};
|
};
|
||||||
|
|
||||||
class GVAR(ags30_carry): Launcher_Base_F {
|
class GVAR(ags30_carry): Launcher_Base_F {
|
||||||
class ACE_CSW {
|
class ACE_CSW {
|
||||||
type = "weapon";
|
type = "weapon";
|
||||||
@ -227,14 +225,14 @@ class CfgWeapons {
|
|||||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||||
mass = 400; // https://odin.tradoc.army.mil/mediawiki/index.php/AGS-17_Russian_30mm_Automatic_Grenade_Launcher
|
mass = 400; // https://odin.tradoc.army.mil/mediawiki/index.php/AGS-17_Russian_30mm_Automatic_Grenade_Launcher
|
||||||
};
|
};
|
||||||
displayName = CSTRING(ags30_gun);
|
displayName = ECSTRING(CSW,ags30_gun);
|
||||||
author = ECSTRING(common,ACETeam);
|
author = ECSTRING(common,ACETeam);
|
||||||
scope = 2;
|
scope = 2;
|
||||||
model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
|
model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
|
||||||
modes[] = {};
|
modes[] = {};
|
||||||
picture = "\rhsafrf\addons\rhs_heavyweapons\data\ico\ags_static_CA.paa";
|
picture = "\rhsafrf\addons\rhs_heavyweapons\data\ico\ags_static_CA.paa";
|
||||||
};
|
};
|
||||||
|
|
||||||
class GVAR(spg9_carry): Launcher_Base_F {
|
class GVAR(spg9_carry): Launcher_Base_F {
|
||||||
class ACE_CSW {
|
class ACE_CSW {
|
||||||
type = "weapon";
|
type = "weapon";
|
||||||
@ -247,7 +245,7 @@ class CfgWeapons {
|
|||||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||||
mass = 1000;
|
mass = 1000;
|
||||||
};
|
};
|
||||||
displayName = CSTRING(spg9_tube);
|
displayName = ECSTRING(csw,spg9_tube);
|
||||||
author = ECSTRING(common,ACETeam);
|
author = ECSTRING(common,ACETeam);
|
||||||
scope = 2;
|
scope = 2;
|
||||||
model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
|
model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
|
||||||
@ -260,9 +258,9 @@ class CfgWeapons {
|
|||||||
EGVAR(csw,spg9Tripod) = "rhs_SPG9M_MSV";
|
EGVAR(csw,spg9Tripod) = "rhs_SPG9M_MSV";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
displayName = CSTRING(spg9m_tube);
|
displayName = ECSTRING(csw,spg9m_tube);
|
||||||
};
|
};
|
||||||
|
|
||||||
class GVAR(metis_carry): Launcher_Base_F {
|
class GVAR(metis_carry): Launcher_Base_F {
|
||||||
class ACE_CSW {
|
class ACE_CSW {
|
||||||
type = "mount";
|
type = "mount";
|
||||||
@ -273,14 +271,14 @@ class CfgWeapons {
|
|||||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||||
mass = 300;
|
mass = 300;
|
||||||
};
|
};
|
||||||
displayName = CSTRING(metis_tube);
|
displayName = ECSTRING(csw,metis_tube);
|
||||||
author = ECSTRING(common,ACETeam);
|
author = ECSTRING(common,ACETeam);
|
||||||
scope = 2;
|
scope = 2;
|
||||||
model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
|
model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
|
||||||
modes[] = {};
|
modes[] = {};
|
||||||
picture = "\rhsafrf\addons\rhs_heavyweapons\data\ico\metis_at13_CA.paa";
|
picture = "\rhsafrf\addons\rhs_heavyweapons\data\ico\metis_at13_CA.paa";
|
||||||
};
|
};
|
||||||
|
|
||||||
class GVAR(kornet_carry): Launcher_Base_F {
|
class GVAR(kornet_carry): Launcher_Base_F {
|
||||||
class ACE_CSW {
|
class ACE_CSW {
|
||||||
type = "mount";
|
type = "mount";
|
||||||
@ -291,7 +289,7 @@ class CfgWeapons {
|
|||||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||||
mass = 600;
|
mass = 600;
|
||||||
};
|
};
|
||||||
displayName = CSTRING(kornet_launcher);
|
displayName = ECSTRING(csw,kornet_launcher);
|
||||||
author = ECSTRING(common,ACETeam);
|
author = ECSTRING(common,ACETeam);
|
||||||
scope = 2;
|
scope = 2;
|
||||||
model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
|
model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
#include "\z\ace\addons\csw\script_config_macros_csw.hpp"
|
||||||
|
|
||||||
class CfgPatches {
|
class CfgPatches {
|
||||||
class ADDON {
|
class ADDON {
|
||||||
|
@ -1,29 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project name="ACE">
|
|
||||||
<Package name="compat_rhs_afrf3">
|
|
||||||
<Key ID="STR_ACE_compat_rhs_afrf3_2b14_tube">
|
|
||||||
<English>2B14 Tube Bag</English>
|
|
||||||
</Key>
|
|
||||||
<Key ID="STR_ACE_compat_rhs_afrf3_nsv_gun">
|
|
||||||
<English>NSV Gun Bag</English>
|
|
||||||
</Key>
|
|
||||||
<Key ID="STR_ACE_compat_rhs_afrf3_kord_gun">
|
|
||||||
<English>KORD Gun Bag</English>
|
|
||||||
</Key>
|
|
||||||
<Key ID="STR_ACE_compat_rhs_afrf3_ags30_gun">
|
|
||||||
<English>AGS-30 Gun Bag</English>
|
|
||||||
</Key>
|
|
||||||
<Key ID="STR_ACE_compat_rhs_afrf3_spg9_tube">
|
|
||||||
<English>SPG-9 Launcher Bag</English>
|
|
||||||
</Key>
|
|
||||||
<Key ID="STR_ACE_compat_rhs_afrf3_spg9m_tube">
|
|
||||||
<English>SPG-9M Launcher</English>
|
|
||||||
</Key>
|
|
||||||
<Key ID="STR_ACE_compat_rhs_afrf3_metis_tube">
|
|
||||||
<English>9k115 Metis Launcher Bag</English>
|
|
||||||
</Key>
|
|
||||||
<Key ID="STR_ACE_compat_rhs_afrf3_kornet_launcher">
|
|
||||||
<English>9m113 Kornet Launcher</English>
|
|
||||||
</Key>
|
|
||||||
</Package>
|
|
||||||
</Project>
|
|
@ -4,9 +4,10 @@ class CfgVehicles {
|
|||||||
// Canoes are propelled by paddlers
|
// Canoes are propelled by paddlers
|
||||||
EGVAR(refuel,canReceive) = 0;
|
EGVAR(refuel,canReceive) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
class StaticMGWeapon;
|
class StaticMGWeapon;
|
||||||
class rhs_DSHKM_base: StaticMGWeapon {
|
class rhs_DSHKM_base: StaticMGWeapon {
|
||||||
|
// ENABLE_CSW_ATTRIBUTE;
|
||||||
class ACE_CSW {
|
class ACE_CSW {
|
||||||
enabled = 1;
|
enabled = 1;
|
||||||
proxyWeapon = QGVAR(rhs_weap_DSHKM);
|
proxyWeapon = QGVAR(rhs_weap_DSHKM);
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
#define CREATE_CSW_PROXY(weapon) class ##weapon; class GVAR(weapon): ##weapon { magazineReloadTime = 0.5; }
|
|
||||||
|
|
||||||
class CfgWeapons {
|
class CfgWeapons {
|
||||||
class rhs_weap_kar98k_Base_F;
|
class rhs_weap_kar98k_Base_F;
|
||||||
class rhs_weap_kar98k: rhs_weap_kar98k_Base_F {
|
class rhs_weap_kar98k: rhs_weap_kar98k_Base_F {
|
||||||
@ -82,9 +80,9 @@ class CfgWeapons {
|
|||||||
class rhs_weap_mg42_base: Rifle_Base_F {
|
class rhs_weap_mg42_base: Rifle_Base_F {
|
||||||
ACE_Overheating_allowSwapBarrel = 1;
|
ACE_Overheating_allowSwapBarrel = 1;
|
||||||
};
|
};
|
||||||
|
|
||||||
CREATE_CSW_PROXY(rhs_weap_DSHKM);
|
CREATE_CSW_PROXY(rhs_weap_DSHKM);
|
||||||
|
|
||||||
class Launcher;
|
class Launcher;
|
||||||
class Launcher_Base_F: Launcher {
|
class Launcher_Base_F: Launcher {
|
||||||
class WeaponSlotsInfo;
|
class WeaponSlotsInfo;
|
||||||
@ -102,7 +100,7 @@ class CfgWeapons {
|
|||||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||||
mass = 740;
|
mass = 740;
|
||||||
};
|
};
|
||||||
displayName = CSTRING(dshk_gun);
|
displayName = ECSTRING(csw,dshk_gun);
|
||||||
author = ECSTRING(common,ACETeam);
|
author = ECSTRING(common,ACETeam);
|
||||||
scope = 2;
|
scope = 2;
|
||||||
model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
|
model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
#include "\z\ace\addons\csw\script_config_macros_csw.hpp"
|
||||||
|
|
||||||
class CfgPatches {
|
class CfgPatches {
|
||||||
class ADDON {
|
class ADDON {
|
||||||
|
@ -1,8 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project name="ACE">
|
|
||||||
<Package name="compat_rhs_gref3">
|
|
||||||
<Key ID="STR_ACE_compat_rhs_gref3_dshk_gun">
|
|
||||||
<English>DSHK Gun Bag</English>
|
|
||||||
</Key>
|
|
||||||
</Package>
|
|
||||||
</Project>
|
|
@ -300,6 +300,7 @@ class CfgVehicles {
|
|||||||
selection = "main_gun";
|
selection = "main_gun";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
// ENABLE_CSW_ATTRIBUTE;
|
||||||
class ACE_CSW {
|
class ACE_CSW {
|
||||||
enabled = 1;
|
enabled = 1;
|
||||||
magazineLocation = "";
|
magazineLocation = "";
|
||||||
@ -311,10 +312,11 @@ class CfgVehicles {
|
|||||||
ammoUnloadTime = 3;
|
ammoUnloadTime = 3;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
class StaticMGWeapon: StaticWeapon {};
|
class StaticMGWeapon: StaticWeapon {};
|
||||||
|
|
||||||
class rhs_m2staticmg_base: StaticMGWeapon {
|
class rhs_m2staticmg_base: StaticMGWeapon {
|
||||||
|
// ENABLE_CSW_ATTRIBUTE;
|
||||||
class ACE_CSW {
|
class ACE_CSW {
|
||||||
enabled = 1;
|
enabled = 1;
|
||||||
proxyWeapon = QGVAR(rhs_M2);
|
proxyWeapon = QGVAR(rhs_M2);
|
||||||
@ -326,16 +328,17 @@ class CfgVehicles {
|
|||||||
ammoUnloadTime = 8;
|
ammoUnloadTime = 8;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
class RHS_M2StaticMG_MiniTripod_base: rhs_m2staticmg_base {
|
class RHS_M2StaticMG_MiniTripod_base: rhs_m2staticmg_base {
|
||||||
class ACE_CSW: ACE_CSW {
|
class ACE_CSW: ACE_CSW {
|
||||||
enabled = 1;
|
enabled = 1;
|
||||||
disassembleTurret = QEGVAR(csw,m3TripodLow);
|
disassembleTurret = QEGVAR(csw,m3TripodLow);
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
class StaticGrenadeLauncher: StaticWeapon {};
|
class StaticGrenadeLauncher: StaticWeapon {};
|
||||||
class RHS_MK19_TriPod_base: StaticGrenadeLauncher {
|
class RHS_MK19_TriPod_base: StaticGrenadeLauncher {
|
||||||
|
// ENABLE_CSW_ATTRIBUTE;
|
||||||
class ACE_CSW {
|
class ACE_CSW {
|
||||||
enabled = 1;
|
enabled = 1;
|
||||||
proxyWeapon = QGVAR(rhs_MK19);
|
proxyWeapon = QGVAR(rhs_MK19);
|
||||||
@ -347,9 +350,10 @@ class CfgVehicles {
|
|||||||
ammoUnloadTime = 8;
|
ammoUnloadTime = 8;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
class StaticATWeapon: StaticWeapon {};
|
class StaticATWeapon: StaticWeapon {};
|
||||||
class RHS_TOW_TriPod_base: StaticATWeapon {
|
class RHS_TOW_TriPod_base: StaticATWeapon {
|
||||||
|
// ENABLE_CSW_ATTRIBUTE;
|
||||||
class ACE_CSW {
|
class ACE_CSW {
|
||||||
enabled = 1;
|
enabled = 1;
|
||||||
proxyWeapon = QGVAR(rhs_weap_TOW_Launcher_static);
|
proxyWeapon = QGVAR(rhs_weap_TOW_Launcher_static);
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
#define CREATE_CSW_PROXY(weapon) class ##weapon; class GVAR(weapon): ##weapon { magazineReloadTime = 0.5; }
|
|
||||||
|
|
||||||
class CfgWeapons {
|
class CfgWeapons {
|
||||||
class NVGoggles;
|
class NVGoggles;
|
||||||
class rhsusf_ANPVS_14: NVGoggles { // Monocular
|
class rhsusf_ANPVS_14: NVGoggles { // Monocular
|
||||||
@ -424,12 +422,12 @@ class CfgWeapons {
|
|||||||
class RHS_jetpilot_usaf: H_HelmetB {
|
class RHS_jetpilot_usaf: H_HelmetB {
|
||||||
HEARING_PROTECTION_VICCREW
|
HEARING_PROTECTION_VICCREW
|
||||||
};
|
};
|
||||||
|
|
||||||
CREATE_CSW_PROXY(rhs_mortar_81mm);
|
CREATE_CSW_PROXY(rhs_mortar_81mm);
|
||||||
CREATE_CSW_PROXY(RHS_M2);
|
CREATE_CSW_PROXY(RHS_M2);
|
||||||
CREATE_CSW_PROXY(RHS_MK19);
|
CREATE_CSW_PROXY(RHS_MK19);
|
||||||
CREATE_CSW_PROXY(Rhs_weap_TOW_Launcher_static);
|
CREATE_CSW_PROXY(Rhs_weap_TOW_Launcher_static);
|
||||||
|
|
||||||
class GVAR(m252_carry): Launcher_Base_F {
|
class GVAR(m252_carry): Launcher_Base_F {
|
||||||
class ACE_CSW {
|
class ACE_CSW {
|
||||||
type = "weapon";
|
type = "weapon";
|
||||||
@ -442,7 +440,7 @@ class CfgWeapons {
|
|||||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||||
mass = 620; // M252 Mortar Weight
|
mass = 620; // M252 Mortar Weight
|
||||||
};
|
};
|
||||||
displayName = CSTRING(m252_tube);
|
displayName = ECSTRING(CSW,m252_tube);
|
||||||
author = ECSTRING(common,ACETeam);
|
author = ECSTRING(common,ACETeam);
|
||||||
scope = 2;
|
scope = 2;
|
||||||
model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
|
model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
|
||||||
@ -463,7 +461,7 @@ class CfgWeapons {
|
|||||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||||
mass = 840;
|
mass = 840;
|
||||||
};
|
};
|
||||||
displayName = CSTRING(m2_gun);
|
displayName = ECSTRING(CSW,m2_gun);
|
||||||
author = ECSTRING(common,ACETeam);
|
author = ECSTRING(common,ACETeam);
|
||||||
scope = 2;
|
scope = 2;
|
||||||
model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
|
model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
|
||||||
@ -483,14 +481,14 @@ class CfgWeapons {
|
|||||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||||
mass = 770;
|
mass = 770;
|
||||||
};
|
};
|
||||||
displayName = CSTRING(mk19_gun);
|
displayName = ECSTRING(CSW,mk19_gun);
|
||||||
author = ECSTRING(common,ACETeam);
|
author = ECSTRING(common,ACETeam);
|
||||||
scope = 2;
|
scope = 2;
|
||||||
model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
|
model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
|
||||||
modes[] = {};
|
modes[] = {};
|
||||||
picture = "\rhsusf\addons\rhsusf_heavyweapons\data\ico\mk19_stat_CA.paa";
|
picture = "\rhsusf\addons\rhsusf_heavyweapons\data\ico\mk19_stat_CA.paa";
|
||||||
};
|
};
|
||||||
|
|
||||||
class GVAR(tow_carry): Launcher_Base_F {
|
class GVAR(tow_carry): Launcher_Base_F {
|
||||||
class ACE_CSW {
|
class ACE_CSW {
|
||||||
type = "weapon";
|
type = "weapon";
|
||||||
@ -503,7 +501,7 @@ class CfgWeapons {
|
|||||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||||
mass = 500;
|
mass = 500;
|
||||||
};
|
};
|
||||||
displayName = CSTRING(tow_tube);
|
displayName = ECSTRING(CSW,tow_tube);
|
||||||
author = ECSTRING(common,ACETeam);
|
author = ECSTRING(common,ACETeam);
|
||||||
scope = 2;
|
scope = 2;
|
||||||
model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
|
model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
#include "\z\ace\addons\csw\script_config_macros_csw.hpp"
|
||||||
|
|
||||||
class CfgPatches {
|
class CfgPatches {
|
||||||
class ADDON {
|
class ADDON {
|
||||||
|
@ -1,17 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project name="ACE">
|
|
||||||
<Package name="compat_rhs_usf3">
|
|
||||||
<Key ID="STR_ACE_compat_rhs_usf3_m252_tube">
|
|
||||||
<English>M252 Tube Bag</English>
|
|
||||||
</Key>
|
|
||||||
<Key ID="STR_ACE_compat_rhs_usf3_m2_gun">
|
|
||||||
<English>M2 Gun Bag</English>
|
|
||||||
</Key>
|
|
||||||
<Key ID="STR_ACE_compat_rhs_usf3_mk19_gun">
|
|
||||||
<English>MK19 Gun Bag</English>
|
|
||||||
</Key>
|
|
||||||
<Key ID="STR_ACE_compat_rhs_usf3_tow_tube">
|
|
||||||
<English>BGM-71 TOW Launcher Bag</English>
|
|
||||||
</Key>
|
|
||||||
</Package>
|
|
||||||
</Project>
|
|
Loading…
Reference in New Issue
Block a user