浏览代码

Fix jip id not being removed on server, inverse function for signal

m3ales 4 年之前
父节点
当前提交
cb298c37fb

+ 3 - 4
addons - Copy/RD501_Main/functions/jammer/fnc_addJammer.sqf

@@ -1,11 +1,10 @@
 params["_jammer", ["_radius", 300], ["_strength", 400]];
 
+
 _jammers = missionNamespace getVariable ["rd501_jammers",[]];
 
-_jammers pushBack [_jammer, _radius, _strength];
+_jipId = ["rd501_addJammerLocal", [_jammer, _radius, _strength]] call CBA_fnc_globalEventJIP;
+_jammers pushBack [_jammer, _radius, _strength, _jipId];
 
 missionNamespace setVariable ["rd501_jammers",_jammers, true];
-
-_jipId = ["rd501_addJammerLocal", [_jammer, _radius, _strength]] call CBA_fnc_globalEventJIP;
-_jammer setVariable ["rd501_jammer_jipId", _jipId, true];
 ["rd501_jammerServerPFH", []] call CBA_fnc_serverEvent;

+ 6 - 5
addons - Copy/RD501_Main/functions/jammer/fnc_jammersPFH.sqf

@@ -45,14 +45,15 @@ private _signalStrength = 1;
 		// or t(1.6t² - 3.9t + 3.3)
 
 		private _t = _distance/_radius;
-		private _specificInterference = _strength * (_t * ((1.6*_t*_t) - (3.9 * _t) + 3.3));
+		private _specificInterference =  (_t * ((1.6*_t*_t) - (3.9 * _t) + 3.3));
+		private _specificSignal = _strength * (1 - _specificInterference);
 		if(_signalStrength == 1) then {
-			_signalStrength = _specificInterference;
+			_signalStrength = _specificSignal;
 			continue
 		};
-		_signalStrength = _signalStrength min _specificInterference; // Lowest value
-		if(_signalStrength < 0.01) then {
-			_signalStrength = 0.01; //prevent 0 from being final value
+		_signalStrength = _signalStrength min _specificSignal; // Lowest value
+		if(_signalStrength < 1) then {
+			_signalStrength = 1; //prevent 0 from being final value
 		};
 		if(_signalStrength > _strength) then {
 			_signalStrength = _strength; // prevent tfar from being exposed to 1.6e^24 when distance is null

+ 1 - 2
addons - Copy/RD501_Main/functions/jammer/fnc_jammersServerPFH.sqf

@@ -8,11 +8,10 @@ diag_log "Server PFH";
 private _jammers = missionNamespace getVariable ["rd501_jammers",[]];
  
 {
-	_x params["_jammer", "_radius", "_strength"];
+	_x params["_jammer", "_radius", "_strength", "_jipId"];
 	diag_log format["Reading %1",_x];
 	if(_jammer isEqualTo objNull || !(alive _jammer)) then {
 		diag_log format["Removing Jammer %1",_jammer];
-		_jipId = _jammer getVariable ["rd501_jammer_jipId", -1];
 	 	_jammers set [_foreachIndex, []];
 		 if(_jipId != -1) then {
  			[_jipId] call CBA_fnc_removeGlobalEventJIP;