optimize remoteexec usage for multiple targets

This commit is contained in:
vbawol 2017-10-03 09:11:18 -05:00
parent bbd958ed52
commit 5f640933d9
5 changed files with 28 additions and 24 deletions

View File

@ -36,11 +36,12 @@ if (isNull objectParent _target) then {
} else { } else {
// send attack to other player // send attack to other player
if (isPlayer _target) then { if (isPlayer _target) then {
[_unit,_target] remoteExec ["EPOCH_client_bitePlayer", _target]; [_unit] remoteExec ["EPOCH_client_bitePlayer", _target];
}; };
}; };
} else { } else {
// target is inside a vehicle, target entire vehicle crew // target is inside a vehicle, target entire vehicle crew
private _targets = [];
{ {
if (_x isEqualTo player) then { if (_x isEqualTo player) then {
// handle attack for local player if inside vehicle // handle attack for local player if inside vehicle
@ -49,10 +50,13 @@ if (isNull objectParent _target) then {
} else { } else {
// send attack to other players // send attack to other players
if (isPlayer _x) then { if (isPlayer _x) then {
[_unit,_x] remoteExec ["EPOCH_client_bitePlayer", _x]; _targets pushBack _x;
}; };
}; };
} forEach (crew _target); } forEach (crew _target);
if !(_targets isEqualTo []) then {
[_unit] remoteExec ["EPOCH_client_bitePlayer", _targets];
};
}; };
if (_doAttack) then { if (_doAttack) then {

View File

@ -14,7 +14,7 @@
*/ */
params ["_playerUID","_var1","_var2","_player",["_token","",[""]]]; params ["_playerUID","_var1","_var2","_player",["_token","",[""]]];
if !([_player, _token] call EPOCH_server_getPToken) exitWith{}; if !([_player, _token] call EPOCH_server_getPToken) exitWith{};
private _targets = allPlayers select {getPlayerUID _x == _playerUID};
{ if !(_targets isEqualTo []) then {
[_var1, _var2] remoteExec ['EPOCH_Group_invitePlayer',_x]; [_var1, _var2] remoteExec ['EPOCH_Group_invitePlayer',_targets];
} forEach (allPlayers select {getPlayerUID _x == _playerUID}); };

View File

@ -14,7 +14,7 @@
*/ */
params ["_playerUID","_var1","_var2","_player",["_token","",[""]]]; params ["_playerUID","_var1","_var2","_player",["_token","",[""]]];
if !([_player, _token] call EPOCH_server_getPToken) exitWith{}; if !([_player, _token] call EPOCH_server_getPToken) exitWith{};
private _targets = allPlayers select {getPlayerUID _x == _playerUID};
{ if !(_targets isEqualTo []) then {
[_var1, _var2] remoteExec ['EPOCH_tempGroup_invitePlayer',_x]; [_var1, _var2] remoteExec ['EPOCH_tempGroup_invitePlayer',_targets];
} forEach (allPlayers select {getPlayerUID _x == _playerUID}); };

View File

@ -37,9 +37,10 @@ switch _trgtType do {
case 1: { case 1: {
if!(isNull _trgtObj)then{ if!(isNull _trgtObj)then{
{ private _targets = (units group _trgtObj);
[_x,_mPos,_mShape,_mType,_mColor,_mSize,_mBrush,_mDir,_mText,_mAlpha,_mrkrName] remoteExec ['EPOCH_makeMarker',_x]; if !(_targets isEqualTo []) then {
}foreach (units group _trgtObj); [nil,_mPos,_mShape,_mType,_mColor,_mSize,_mBrush,_mDir,_mText,_mAlpha,_mrkrName] remoteExec ['EPOCH_makeMarker',_targets];
};
}; };
}; };
@ -57,10 +58,8 @@ switch _trgtType do {
}; };
case 3: { case 3: {
if(isArray _trgtObj && count _trgtObj > 0)then{ if(_trgtObj isEqualType [] && {!(_trgtObj isEqualTo [])})then{
{ [nil,_mPos,_mShape,_mType,_mColor,_mSize,_mBrush,_mDir,_mText,_mAlpha,_mrkrName] remoteExec ['EPOCH_makeMarker',_trgtObj];
[_x,_mPos,_mShape,_mType,_mColor,_mSize,_mBrush,_mDir,_mText,_mAlpha,_mrkrName] remoteExec ['EPOCH_makeMarker',_x];
}foreach _trgtObj;
}; };
}; };

View File

@ -31,9 +31,10 @@ switch _trgtType do {
case 1: { case 1: {
if!(isNull _trgtObj)then{ if!(isNull _trgtObj)then{
{ private _targets = (units group _trgtObj);
[_mrkrName] remoteExec ['EPOCH_removeMarker',_x]; if !(_targets isEqualTo []) then {
}foreach (units group _trgtObj); [_mrkrName] remoteExec ['EPOCH_removeMarker',_targets];
};
}; };
}; };
@ -42,10 +43,10 @@ switch _trgtType do {
}; };
case 3: { case 3: {
if(isArray _trgtObj && count _trgtObj > 0)then{ if(_trgtObj isEqualType [] && {!(_trgtObj isEqualTo [])})then{
{ if !(_trgtObj isEqualTo []) then {
[_mrkrName] remoteExec ['EPOCH_removeMarker',_x]; [_mrkrName] remoteExec ['EPOCH_removeMarker',_trgtObj];
}foreach _trgtObj; };
}; };
}; };