diff --git a/addons/common/functions/fnc__handleNetEvent.sqf b/addons/common/functions/fnc__handleNetEvent.sqf index 3f5f0d0fb4..a516d93fdd 100644 --- a/addons/common/functions/fnc__handleNetEvent.sqf +++ b/addons/common/functions/fnc__handleNetEvent.sqf @@ -1,20 +1,29 @@ -//fnc__handleNetEvent.sqf -// internal handler for net events +/* + * Author: jaynus + * Internal net event handler. + * + * Arguments: + * None + * + * Return Value: + * None + * + * Public: No + */ #include "script_component.hpp" -private ["_eventName", "_eventArgs", "_eventNames", "_eventIndex", "_eventTargets", "_sentEvents", "_owner", "_serverFlagged", "_events"]; -//IGNORE_PRIVATE_WARNING("_handleNetEvent"); - - -PARAMS_2(_eventType,_event); +params ["_eventType", "_event"]; if (_eventType == "ACEg") then { - _eventName = _event select 0; - _eventArgs = _event select 1; + _event params ["_eventName", "_eventArgs"]; + + private ["_eventNames", "_eventIndex"]; _eventNames = GVAR(events) select 0; _eventIndex = _eventNames find _eventName; + if (_eventIndex != -1) then { + private "_events"; _events = (GVAR(events) select 1) select _eventIndex; #ifdef DEBUG_EVENTS @@ -35,9 +44,9 @@ if (_eventType == "ACEg") then { if (_eventType == "ACEc") then { if (isServer) then { - _eventName = _event select 0; - _eventTargets = _event select 1; - _eventArgs = _event select 2; + _event params ["_eventName", "_eventTargets", "_eventArgs"]; + + private ["_sentEvents", "_owner", "_serverFlagged"]; _sentEvents = []; if (!IS_ARRAY(_eventTargets)) then { @@ -46,15 +55,15 @@ if (_eventType == "ACEc") then { //If not multiplayer, and there are targets, then just run localy if ((!isMultiplayer) && {(count _eventTargets) > 0}) exitWith { - ACEg = [_eventName, _eventArgs]; - ["ACEg", ACEg] call FUNC(_handleNetEvent); + ACEg = [_eventName, _eventArgs]; + ["ACEg", ACEg] call FUNC(_handleNetEvent); }; _serverFlagged = false; { _owner = _x; if (IS_OBJECT(_x)) then { - _owner = owner _x; + _owner = owner _x; }; if (!(_owner in _sentEvents)) then { PUSH(_sentEvents, _owner); diff --git a/addons/common/functions/fnc__handleRequestAllSyncedEvents.sqf b/addons/common/functions/fnc__handleRequestAllSyncedEvents.sqf index 7c566ce4d1..fbaeb60e4f 100644 --- a/addons/common/functions/fnc__handleRequestAllSyncedEvents.sqf +++ b/addons/common/functions/fnc__handleRequestAllSyncedEvents.sqf @@ -1,25 +1,26 @@ /* * Author: jaynus - * * Handles a server-side request for synchronization ALL events on JIP to a client. * - * Argument: - * 0: client (object) - * - * Return value: - * Boolean of success + * Arguments: + * 0: client + * + * Return Value: + * Event is successed + * + * Public: No */ -//#define DEBUG_MODE_FULL #include "script_component.hpp" -PARAMS_1(_client); + +params ["_client"]; { - private["_eventName", "_eventEntry", "_eventLog"]; - _eventName = _x; - _eventEntry = HASH_GET(GVAR(syncedEvents),_eventName); + private ["_eventEntry", "_eventLog"]; + + _eventEntry = HASH_GET(GVAR(syncedEvents),_x); _eventLog = _eventEntry select 1; - ["SEH_s", _client, [_eventName, _eventLog] ] call FUNC(targetEvent); + ["SEH_s", _client, [_x, _eventLog]] call FUNC(targetEvent); } forEach (GVAR(syncedEvents) select 0); -true \ No newline at end of file +true diff --git a/addons/common/functions/fnc__handleRequestSyncedEvent.sqf b/addons/common/functions/fnc__handleRequestSyncedEvent.sqf index b93347b8d8..96cd7a51f5 100644 --- a/addons/common/functions/fnc__handleRequestSyncedEvent.sqf +++ b/addons/common/functions/fnc__handleRequestSyncedEvent.sqf @@ -1,47 +1,48 @@ /* * Author: jaynus - * * Receives either requests for synchronization from clients, or the synchronization data from the server. * * Arguments [Client] : - * 0: eventName (String) - * 1: eventLog (Array) + * 0: eventName + * 1: eventLog * * Arguments [Server] : - * 0: eventName (String) - * 1: client (Object) + * 0: eventName + * 1: client * - * Return value: - * Boolean of success + * Return Value: + * Event is successed + * + * Public: No */ -//#define DEBUG_MODE_FULL #include "script_component.hpp" -//IGNORE_PRIVATE_WARNING("_handleSyncedEvent"); - //SEH_s -if(isServer) then { +if (isServer) then { // Find the event name, and shovel out the events to the client - PARAMS_2(_eventName,_client); - private["_eventEntry", "_eventLog"]; + params ["_eventName", "_client"]; - if(!HASH_HASKEY(GVAR(syncedEvents),_eventName)) exitWith { + if (!HASH_HASKEY(GVAR(syncedEvents),_eventName)) exitWith { ACE_LOGERROR("Request for synced event - key not found."); false }; + + private ["_eventEntry", "_eventLog"]; + _eventEntry = HASH_GET(GVAR(syncedEvents),_eventName); _eventLog = _eventEntry select 1; - ["SEH_s", _client, [_eventName, _eventLog] ] call FUNC(targetEvent); + ["SEH_s", _client, [_eventName, _eventLog]] call FUNC(targetEvent); } else { - PARAMS_2(_eventName,_eventLog); - private ["_eventArgs"]; + params ["_eventName", "_eventLog"]; + // This is the client handling the response from the server // Start running the events { - _eventArgs = _x select 1; - [_eventName, _eventArgs, (_x select 2)] call FUNC(_handleSyncedEvent); + _x params ["", "_eventArgs","_ttl"]; + [_eventName, _eventArgs, _ttl] call FUNC(_handleSyncedEvent); } forEach _eventLog; + ACE_LOGINFO_1("[%1] synchronized",_eventName); }; diff --git a/addons/common/functions/fnc__handleSyncedEvent.sqf b/addons/common/functions/fnc__handleSyncedEvent.sqf index aaa6fbdaff..3ea516513f 100644 --- a/addons/common/functions/fnc__handleSyncedEvent.sqf +++ b/addons/common/functions/fnc__handleSyncedEvent.sqf @@ -1,32 +1,36 @@ /* * Author: jaynus - * * Handles synced events being received. Server will log them, and server/client will execute them. * * Arguments [Client] : - * 0: eventName (String) - * 1: arguments (Array) - * 2: ttl (Scalar) + * 0: eventName + * 1: arguments + * 2: ttl * - * Return value: - * Boolean of success + * Return Value: + * Boolean of success + * + * Public: No */ -//#define DEBUG_MODE_FULL #include "script_component.hpp" -PARAMS_3(_name,_args,_ttl); -private["_internalData", "_eventLog", "_eventCode"]; -if(!HASH_HASKEY(GVAR(syncedEvents),_name)) exitWith { +params ["_name", "_args", "_ttl"]; + +if (!HASH_HASKEY(GVAR(syncedEvents),_name)) exitWith { ACE_LOGERROR("Synced event key not found."); false }; +private ["_internalData", "_eventCode"]; + _internalData = HASH_GET(GVAR(syncedEvents),_name); -if(isServer) then { +if (isServer) then { // Server needs to internally log it for synchronization - if(_ttl > -1) then { + if (_ttl > -1) then { _internalData = HASH_GET(GVAR(syncedEvents),_name); + + private "_eventLog"; _eventLog = _internalData select 1; _eventLog pushback [ACE_diagTime, _args, _ttl]; };