Hit Reactions - Prevent AI's hitpart EH running on all clients (#10057)

also dynamically add ehs
This commit is contained in:
PabstMirror 2024-06-09 18:20:17 -05:00 committed by GitHub
parent 565d64d50e
commit 130348d3a5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 31 additions and 21 deletions

View File

@ -1,27 +1,35 @@
#include "script_component.hpp" #include "script_component.hpp"
["ace_firedNonPlayer", {
if (GVAR(weaponDropChanceArmHitPlayer) + GVAR(weaponDropChanceArmHitAI) == 0) exitWith {};
[QGVAR(updateFiredEHs), {
TRACE_2("updateFiredEH",GVAR(weaponDropChanceArmHitPlayer),GVAR(weaponDropChanceArmHitAI));
if (GVAR(weaponDropChanceArmHitPlayer) + GVAR(weaponDropChanceArmHitAI) == 0) then {
if (isNil QGVAR(firedEHs)) exitWith {};
{
_x call CBA_fnc_removeEventHandler;
} forEach GVAR(firedEHs);
GVAR(firedEHs) = nil;
TRACE_1("removed EHs",GVAR(firedEHs));
} else {
if (!isNil QGVAR(firedEHs)) exitWith {};
private _firedEH = {
if (!local (_this select 0)) exitWith {};
(_this select 6) addEventHandler ["HitPart", { (_this select 6) addEventHandler ["HitPart", {
params ["", "_entity", "", "", "", "", "_selections"]; params ["", "_entity", "", "", "", "", "_selections"];
[_entity, _selections] call FUNC(checkWeaponDrop);
}];
}] call CBA_fnc_addEventHandler;
["ace_firedPlayer", {
if (GVAR(weaponDropChanceArmHitPlayer) + GVAR(weaponDropChanceArmHitAI) == 0) exitWith {};
(_this select 6) addEventHandler ["HitPart", {
params ["", "_entity", "", "", "", "", "_selections"];
[_entity, _selections] call FUNC(checkWeaponDrop); [_entity, _selections] call FUNC(checkWeaponDrop);
}]; }];
};
GVAR(firedEHs) = [];
{
GVAR(firedEHs) pushBack [_x, [_x, _firedEH] call CBA_fnc_addEventHandler];
} forEach ["ace_firedNonPlayer", "ace_firedPlayer"];
TRACE_1("added EHs",GVAR(firedEHs));
};
}] call CBA_fnc_addEventHandler; }] call CBA_fnc_addEventHandler;
[QGVAR(dropWeapon), { [QGVAR(dropWeapon), {
params ["_unit"]; params ["_unit"];
TRACE_1("dropWeaponEH",_unit);
if !(_unit getVariable [QGVAR(canDropWeapon), true]) exitWith {}; if !(_unit getVariable [QGVAR(canDropWeapon), true]) exitWith {};

View File

@ -8,8 +8,6 @@ PREP_RECOMPILE_END;
#include "initSettings.inc.sqf" #include "initSettings.inc.sqf"
ADDON = true;
GVAR(armSelections) = [ GVAR(armSelections) = [
"leftshoulder", "leftshoulder",
"rightshoulder", "rightshoulder",
@ -21,3 +19,5 @@ GVAR(armSelections) = [
"righthand", "righthand",
"rightarm" "rightarm"
]; ];
ADDON = true;

View File

@ -15,7 +15,8 @@ private _category = [LELSTRING(common,categoryUncategorized), QUOTE(COMPONENT_BE
LSTRING(weaponDropChanceArmHitPlayer_displayName), LSTRING(weaponDropChanceArmHitPlayer_displayName),
_category, _category,
[0, 1, 0, 2, true], [0, 1, 0, 2, true],
1 1,
{[QGVAR(updateFiredEHs)] call CBA_fnc_localEvent}
] call CBA_fnc_addSetting; ] call CBA_fnc_addSetting;
[ [
@ -24,5 +25,6 @@ private _category = [LELSTRING(common,categoryUncategorized), QUOTE(COMPONENT_BE
LSTRING(weaponDropChanceArmHitAI_displayName), LSTRING(weaponDropChanceArmHitAI_displayName),
_category, _category,
[0, 1, 0, 2, true], [0, 1, 0, 2, true],
1 1,
{[QGVAR(updateFiredEHs)] call CBA_fnc_localEvent}
] call CBA_fnc_addSetting; ] call CBA_fnc_addSetting;