1234567891011121314151617181920212223242526272829303132333435363738 |
- params["_args", "_handle"];
- _args params["_player"];
- /*
- * _jammers = [
- * [_jammer, _radius, _strength],
- * ["bis_o1", 1000, 400]
- * ];
- */
- if(!alive _player) exitWith { systemChat format["Player dead for %1", _handle] };
- _jammers = missionNamespace getVariable ["rd501_jammers",[]];
- // Exit if jammer list is empty, remove PFH and rely on someone else calling it via jammer placement
- if(count _jammers == 0) exitWith {
- systemChat "Exiting Client PFH";
- [_handle] call CBA_fnc_removePerFrameHandler;
- _player setVariable ["rd501_jammers_pfh", -1];
- _player setVariable ["tf_receivingDistanceMultiplicator", 1];
- _player setVariable ["tf_transmittingDistanceMultiplicator", 1];
- };
- // Aggregate the mean interference (multiple jammers allowed)
- private _interference = 1;
- {
- _x params["_jammer", "_radius", "_strength"];
- private _distance = _player distance _jammer;
- if (_distance >= _radius) then { continue };
- private _specificInterference = _strength - ((_distance/_radius) * _strength) + 1;
- if(_interference == 1) then {
- _interference = _specificInterference;
- continue
- };
- _interference = (_interference + _specificInterference)/2; // Average of interference plus current
- } forEach _jammers;
- // Set interference locally
- _player setVariable ["tf_receivingDistanceMultiplicator", _interference];
- _player setVariable ["tf_transmittingDistanceMultiplicator", _interference];
|