mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			68 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
/*
 | 
						|
 * Author: commy2
 | 
						|
 *
 | 
						|
 * Execute a function on a remote machine in mp.
 | 
						|
 * 
 | 
						|
 * Argument:
 | 
						|
 * 0: Function arguments (Array)
 | 
						|
 * 1: Function to execute, has to be defined on the remote machine first (String)
 | 
						|
 * 2: The function will be executed where this unit is local OR the mode were this function should be executed. (Object OR Number, optional default: 2)
 | 
						|
 * 		Mode 0: execute on this machine only
 | 
						|
 * 		Mode 1: execute on server
 | 
						|
 * 		Mode 2: execute on all clients + server
 | 
						|
 * 		Mode 3: execute on dedicated only
 | 
						|
 * 
 | 
						|
 * Return value:
 | 
						|
 * Nothing
 | 
						|
 */
 | 
						|
 | 
						|
private ["_arguments", "_function", "_unit", "_id"];
 | 
						|
 | 
						|
AGM_Core_remoteFnc = _this;
 | 
						|
 | 
						|
_arguments = _this select 0;
 | 
						|
_function = call compile (_this select 1);
 | 
						|
_unit = _this select 2;
 | 
						|
 | 
						|
if (isNil "_unit") then {
 | 
						|
	_unit = 2;
 | 
						|
};
 | 
						|
 | 
						|
if (typeName _unit == "SCALAR") exitWith {
 | 
						|
	switch (_unit) do {
 | 
						|
		case 0 : {
 | 
						|
			_arguments call _function;
 | 
						|
		};
 | 
						|
		case 1 : {
 | 
						|
			if (isServer) then {
 | 
						|
				_arguments call _function;
 | 
						|
			} else {
 | 
						|
				publicVariableServer "AGM_Core_remoteFnc";
 | 
						|
			};
 | 
						|
		};
 | 
						|
		case 2 : {
 | 
						|
			_arguments call _function;
 | 
						|
 | 
						|
			AGM_Core_remoteFnc set [2, 0];
 | 
						|
			publicVariable "AGM_Core_remoteFnc";
 | 
						|
		};
 | 
						|
		case 3 : {
 | 
						|
			if (isDedicated) then {
 | 
						|
				_arguments call _function;
 | 
						|
			} else {
 | 
						|
				if (!isServer) then {publicVariableServer "AGM_Core_remoteFnc"};
 | 
						|
			};
 | 
						|
		};
 | 
						|
	};
 | 
						|
};
 | 
						|
 | 
						|
if (local _unit) then {
 | 
						|
	_arguments call _function;
 | 
						|
} else {
 | 
						|
	if (isServer) then {
 | 
						|
		_id = owner _unit;
 | 
						|
		_id publicVariableClient "AGM_Core_remoteFnc";
 | 
						|
	} else {
 | 
						|
		publicVariableServer "AGM_Core_remoteFnc";
 | 
						|
	};
 | 
						|
}; |