mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
Overheating - Add Master Enabled Setting (barrelPR)
This commit is contained in:
parent
bc584b4c95
commit
cf92ba9c46
@ -38,4 +38,10 @@ class ACE_Settings {
|
|||||||
displayName = CSTRING(unJamFailChance_displayName);
|
displayName = CSTRING(unJamFailChance_displayName);
|
||||||
description = CSTRING(unJamFailChance_description);
|
description = CSTRING(unJamFailChance_description);
|
||||||
};
|
};
|
||||||
|
class GVAR(enabled) {
|
||||||
|
typeName = "BOOL";
|
||||||
|
value = 1;
|
||||||
|
displayName = CSTRING(enabled_displayName);
|
||||||
|
description = CSTRING(enabled_description);
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
@ -16,11 +16,3 @@ class Extended_PostInit_EventHandlers {
|
|||||||
init = QUOTE( call COMPILE_FILE(XEH_postInit) );
|
init = QUOTE( call COMPILE_FILE(XEH_postInit) );
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
class Extended_Take_EventHandlers {
|
|
||||||
class CAManBase {
|
|
||||||
class GVAR(UnjamReload) {
|
|
||||||
clientTake = QUOTE( _this call FUNC(handleTakeEH) );
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
@ -6,7 +6,7 @@ class CfgVehicles {
|
|||||||
class ACE_Equipment {
|
class ACE_Equipment {
|
||||||
class GVAR(UnJam) {
|
class GVAR(UnJam) {
|
||||||
displayName = CSTRING(UnjamWeapon);
|
displayName = CSTRING(UnjamWeapon);
|
||||||
condition = QUOTE( [_player] call FUNC(canUnjam) );
|
condition = QUOTE( GVAR(enabled) && {[_player] call FUNC(canUnjam)} );
|
||||||
exceptions[] = {"isNotInside", "isNotSitting"};
|
exceptions[] = {"isNotInside", "isNotSitting"};
|
||||||
statement = QUOTE( [ARR_2(_player, currentMuzzle _player)] call FUNC(clearJam); );
|
statement = QUOTE( [ARR_2(_player, currentMuzzle _player)] call FUNC(clearJam); );
|
||||||
showDisabled = 0;
|
showDisabled = 0;
|
||||||
@ -15,7 +15,7 @@ class CfgVehicles {
|
|||||||
};
|
};
|
||||||
class GVAR(SwapBarrel) {
|
class GVAR(SwapBarrel) {
|
||||||
displayName = CSTRING(SwapBarrel);
|
displayName = CSTRING(SwapBarrel);
|
||||||
condition = QUOTE( 'ACE_SpareBarrel' in magazines _player && {getNumber (configFile >> 'CfgWeapons' >> currentWeapon _player >> 'ACE_Overheating_allowSwapBarrel') == 1} );
|
condition = QUOTE( GVAR(enabled) && {'ACE_SpareBarrel' in magazines _player} && {getNumber (configFile >> 'CfgWeapons' >> currentWeapon _player >> 'ACE_Overheating_allowSwapBarrel') == 1} );
|
||||||
statement = QUOTE( [ARR_3(_player, _player, currentWeapon _player)] call FUNC(swapBarrel); );
|
statement = QUOTE( [ARR_3(_player, _player, currentWeapon _player)] call FUNC(swapBarrel); );
|
||||||
showDisabled = 0;
|
showDisabled = 0;
|
||||||
priority = 3;
|
priority = 3;
|
||||||
@ -23,7 +23,7 @@ class CfgVehicles {
|
|||||||
};
|
};
|
||||||
class GVAR(CheckTemperature) {
|
class GVAR(CheckTemperature) {
|
||||||
displayName = CSTRING(CheckTemperatureShort);
|
displayName = CSTRING(CheckTemperatureShort);
|
||||||
condition = "switch (currentWeapon _player) do {case (''): {false}; case (primaryWeapon _player); case (handgunWeapon _player): {true}; default {false}}";
|
condition = "ace_overheating_enabled && {switch (currentWeapon _player) do {case (''): {false}; case (primaryWeapon _player); case (handgunWeapon _player): {true}; default {false}}}";
|
||||||
exceptions[] = {"isNotInside", "isNotSitting"};
|
exceptions[] = {"isNotInside", "isNotSitting"};
|
||||||
statement = QUOTE( [ARR_3(_player, _player, currentWeapon _player)] call FUNC(checkTemperature); );
|
statement = QUOTE( [ARR_3(_player, _player, currentWeapon _player)] call FUNC(checkTemperature); );
|
||||||
showDisabled = 0;
|
showDisabled = 0;
|
||||||
@ -32,7 +32,7 @@ class CfgVehicles {
|
|||||||
};
|
};
|
||||||
class GVAR(CheckTemperatureSpareBarrels) {
|
class GVAR(CheckTemperatureSpareBarrels) {
|
||||||
displayName = CSTRING(CheckTemperatureSpareBarrelsShort);
|
displayName = CSTRING(CheckTemperatureSpareBarrelsShort);
|
||||||
condition = QUOTE( 'ACE_SpareBarrel' in magazines _player);
|
condition = QUOTE( GVAR(enabled) && {'ACE_SpareBarrel' in magazines _player});
|
||||||
exceptions[] = {"isNotInside", "isNotSitting"};
|
exceptions[] = {"isNotInside", "isNotSitting"};
|
||||||
statement = QUOTE( [_player] call FUNC(checkSpareBarrelsTemperatures); );
|
statement = QUOTE( [_player] call FUNC(checkSpareBarrelsTemperatures); );
|
||||||
showDisabled = 0;
|
showDisabled = 0;
|
||||||
@ -46,13 +46,13 @@ class CfgVehicles {
|
|||||||
class ACE_Weapon {
|
class ACE_Weapon {
|
||||||
class GVAR(SwapBarrel) {
|
class GVAR(SwapBarrel) {
|
||||||
displayName = CSTRING(SwapBarrel);
|
displayName = CSTRING(SwapBarrel);
|
||||||
condition = QUOTE( 'ACE_SpareBarrel' in magazines _player && {getNumber (configFile >> 'CfgWeapons' >> currentWeapon _target >> 'ACE_Overheating_allowSwapBarrel') == 1} );
|
condition = QUOTE( GVAR(enabled) && {'ACE_SpareBarrel' in magazines _player} && {getNumber (configFile >> 'CfgWeapons' >> currentWeapon _target >> 'ACE_Overheating_allowSwapBarrel') == 1} );
|
||||||
statement = QUOTE([ARR_3(_player, _target, currentWeapon _target)] call FUNC(swapBarrelAssistant););
|
statement = QUOTE([ARR_3(_player, _target, currentWeapon _target)] call FUNC(swapBarrelAssistant););
|
||||||
icon = QUOTE(PATHTOF(UI\spare_barrel_ca.paa));
|
icon = QUOTE(PATHTOF(UI\spare_barrel_ca.paa));
|
||||||
};
|
};
|
||||||
class GVAR(CheckTemperature) {
|
class GVAR(CheckTemperature) {
|
||||||
displayName = CSTRING(CheckTemperatureShort);
|
displayName = CSTRING(CheckTemperatureShort);
|
||||||
condition = "switch (currentWeapon _target) do {case (''): {false}; case (primaryWeapon _target); case (handgunWeapon _target): {true}; default {false}}";
|
condition = "ace_overheating_enabled && {switch (currentWeapon _target) do {case (''): {false}; case (primaryWeapon _target); case (handgunWeapon _target): {true}; default {false}}}";
|
||||||
exceptions[] = {"isNotInside", "isNotSitting"};
|
exceptions[] = {"isNotInside", "isNotSitting"};
|
||||||
statement = QUOTE( [ARR_3(_player, _target, currentWeapon _target)] call FUNC(checkTemperature); );
|
statement = QUOTE( [ARR_3(_player, _target, currentWeapon _target)] call FUNC(checkTemperature); );
|
||||||
icon = QUOTE(PATHTOF(UI\temp_ca.paa));
|
icon = QUOTE(PATHTOF(UI\temp_ca.paa));
|
||||||
|
@ -1,62 +1,69 @@
|
|||||||
// by esteldunedain
|
// by esteldunedain
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
if (isServer) then {
|
if (hasInterface) then {
|
||||||
GVAR(pseudoRandomList) = [];
|
// Add keybinds
|
||||||
// Construct a list of pseudo random 2D vectors
|
["ACE3 Weapons", QGVAR(unjamWeapon), localize LSTRING(UnjamWeapon),
|
||||||
for "_i" from 0 to 30 do {
|
{
|
||||||
GVAR(pseudoRandomList) pushBack [-1 + random 2, -1 + random 2];
|
// Conditions: canInteract
|
||||||
};
|
if !([ACE_player, objNull, ["isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false};
|
||||||
publicVariable QGVAR(pseudoRandomList);
|
// Conditions: specific
|
||||||
|
|
||||||
// Keep track of the temperature of stored spare barrels
|
if !(GVAR(enabled) && {[ACE_player] call FUNC(canUnjam)}) exitWith {false};
|
||||||
GVAR(storedSpareBarrels) = [] call CBA_fnc_hashCreate;
|
|
||||||
|
|
||||||
// Install event handlers for spare barrels
|
// Statement
|
||||||
["spareBarrelsSendTemperatureHint", FUNC(sendSpareBarrelsTemperaturesHint)] call EFUNC(common,addEventHandler);
|
[ACE_player, currentMuzzle ACE_player, false] call FUNC(clearJam);
|
||||||
["spareBarrelsLoadCoolest", FUNC(loadCoolestSpareBarrel)] call EFUNC(common,addEventHandler);
|
true
|
||||||
|
},
|
||||||
// Schedule cool down calculation of stored spare barrels
|
{false},
|
||||||
[] call FUNC(updateSpareBarrelsTemperaturesThread);
|
[19, [true, false, false]], false] call CBA_fnc_addKeybind; //SHIFT + R Key
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
if !(hasInterface) exitWith {};
|
|
||||||
|
|
||||||
GVAR(cacheWeaponData) = call CBA_fnc_createNamespace;
|
|
||||||
GVAR(cacheAmmoData) = call CBA_fnc_createNamespace;
|
|
||||||
GVAR(cacheSilencerData) = call CBA_fnc_createNamespace;
|
|
||||||
|
|
||||||
// Add keybinds
|
|
||||||
["ACE3 Weapons", QGVAR(unjamWeapon), localize LSTRING(UnjamWeapon),
|
|
||||||
{
|
|
||||||
// Conditions: canInteract
|
|
||||||
if !([ACE_player, objNull, ["isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false};
|
|
||||||
// Conditions: specific
|
|
||||||
|
|
||||||
if !([ACE_player] call FUNC(canUnjam)) exitWith {false};
|
|
||||||
|
|
||||||
// Statement
|
|
||||||
[ACE_player, currentMuzzle ACE_player, false] call FUNC(clearJam);
|
|
||||||
true
|
|
||||||
},
|
|
||||||
{false},
|
|
||||||
[19, [true, false, false]], false] call CBA_fnc_addKeybind; //SHIFT + R Key
|
|
||||||
|
|
||||||
|
|
||||||
// Schedule cool down calculation of player weapons at (infrequent) regular intervals
|
|
||||||
[] call FUNC(updateTemperatureThread);
|
|
||||||
|
|
||||||
["SettingsInitialized", {
|
["SettingsInitialized", {
|
||||||
|
TRACE_1("SettingsInitialized eh", GVAR(enabled));
|
||||||
|
if (!GVAR(enabled)) exitWith {};
|
||||||
|
|
||||||
|
if (isServer) then {
|
||||||
|
GVAR(pseudoRandomList) = [];
|
||||||
|
// Construct a list of pseudo random 2D vectors
|
||||||
|
for "_i" from 0 to 30 do {
|
||||||
|
GVAR(pseudoRandomList) pushBack [-1 + random 2, -1 + random 2];
|
||||||
|
};
|
||||||
|
publicVariable QGVAR(pseudoRandomList);
|
||||||
|
|
||||||
|
// Keep track of the temperature of stored spare barrels
|
||||||
|
GVAR(storedSpareBarrels) = [] call CBA_fnc_hashCreate;
|
||||||
|
|
||||||
|
// Install event handlers for spare barrels
|
||||||
|
["spareBarrelsSendTemperatureHint", FUNC(sendSpareBarrelsTemperaturesHint)] call EFUNC(common,addEventHandler);
|
||||||
|
["spareBarrelsLoadCoolest", FUNC(loadCoolestSpareBarrel)] call EFUNC(common,addEventHandler);
|
||||||
|
|
||||||
|
// Schedule cool down calculation of stored spare barrels
|
||||||
|
[] call FUNC(updateSpareBarrelsTemperaturesThread);
|
||||||
|
};
|
||||||
|
|
||||||
|
if !(hasInterface) exitWith {};
|
||||||
|
|
||||||
|
GVAR(cacheWeaponData) = call CBA_fnc_createNamespace;
|
||||||
|
GVAR(cacheAmmoData) = call CBA_fnc_createNamespace;
|
||||||
|
GVAR(cacheSilencerData) = call CBA_fnc_createNamespace;
|
||||||
|
|
||||||
|
//Add Take EH (for reload)
|
||||||
|
["CAManBase", "Take", {_this call FUNC(handleTakeEH);}] call CBA_fnc_addClassEventHandler;
|
||||||
|
|
||||||
// Register fire event handler
|
// Register fire event handler
|
||||||
["firedPlayer", DFUNC(firedEH)] call EFUNC(common,addEventHandler);
|
["firedPlayer", DFUNC(firedEH)] call EFUNC(common,addEventHandler);
|
||||||
// Only add eh to non local players if dispersion is enabled
|
// Only add eh to non local players if dispersion is enabled
|
||||||
if (GVAR(overheatingDispersion)) then {
|
if (GVAR(overheatingDispersion)) then {
|
||||||
["firedPlayerNonLocal", DFUNC(firedEH)] call EFUNC(common,addEventHandler);
|
["firedPlayerNonLocal", DFUNC(firedEH)] call EFUNC(common,addEventHandler);
|
||||||
};
|
};
|
||||||
}] call EFUNC(common,addEventHandler);
|
|
||||||
|
|
||||||
// Install event handler to display temp when a barrel was swapped
|
// Schedule cool down calculation of player weapons at (infrequent) regular intervals
|
||||||
["showWeaponTemperature", DFUNC(displayTemperature)] call EFUNC(common,addEventHandler);
|
[] call FUNC(updateTemperatureThread);
|
||||||
// Install event handler to initiate an assisted barrel swap
|
|
||||||
["initiateSwapBarrelAssisted", DFUNC(swapBarrel)] call EFUNC(common,addEventHandler);
|
// Install event handler to display temp when a barrel was swapped
|
||||||
|
["showWeaponTemperature", DFUNC(displayTemperature)] call EFUNC(common,addEventHandler);
|
||||||
|
// Install event handler to initiate an assisted barrel swap
|
||||||
|
["initiateSwapBarrelAssisted", DFUNC(swapBarrel)] call EFUNC(common,addEventHandler);
|
||||||
|
|
||||||
|
}] call EFUNC(common,addEventHandler);
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
*
|
*
|
||||||
* Public: No
|
* Public: No
|
||||||
*/
|
*/
|
||||||
#define DEBUG_MODE_FULL
|
// #define DEBUG_MODE_FULL
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
params ["_assistant", "_gunner", "_weapon"];
|
params ["_assistant", "_gunner", "_weapon"];
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
*
|
*
|
||||||
* Public: No
|
* Public: No
|
||||||
*/
|
*/
|
||||||
#define DEBUG_MODE_FULL
|
// #define DEBUG_MODE_FULL
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
private _pairs = [];
|
private _pairs = [];
|
||||||
|
@ -282,7 +282,15 @@
|
|||||||
<English>Very Hot Spare Barrel/s</English>
|
<English>Very Hot Spare Barrel/s</English>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Overheating_BarrelExtremelyHot">
|
<Key ID="STR_ACE_Overheating_BarrelExtremelyHot">
|
||||||
<English>Extremele Hot Spare Barrel/s</English>
|
<English>Extremely Hot Spare Barrel/s</English>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_Overheating_enabled_displayName">
|
||||||
|
<English>Overheating Enabled</English>
|
||||||
|
<German>Überhitzen Aktiviert</German>
|
||||||
|
<Spanish>Activada Sobrecalentamiento</Spanish>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_Overheating_enabled_description">
|
||||||
|
<English>Master enable for the overheating/jamming module</English>
|
||||||
</Key>
|
</Key>
|
||||||
</Package>
|
</Package>
|
||||||
</Project>
|
</Project>
|
Loading…
Reference in New Issue
Block a user