Custom events offer a way to manage your own events in a similar way to public variable events. However, the key thing is that they are easier to use and also manage events on a local level as well as remotely.
addPublicVariableEventHandler
).Full details of the syntax for these functions can be found in the functions library documentation.
Custom events are never handled on JIP. That is, all events broadcast before a player joins are not handled, since they would be out-of-date. For state-changes, which you would want synced on JIP, use the standard publicVariable
and addPublicVariableEventHandler
commands instead.
Ensure that you use OFPEC tags in the naming of events, such as "MYTAG_barrelsExploded" if your tag was "MYTAG". This will prevent receipt of unexpected events from other users of the custom events system.
CBA has a number of events that it routinely raises and any script can add a handler and deal with them.
sideChat
is a command that only has an effect on clients, so rather than check whether we are on a client in the handler, it is best to only add handlers on client machines:
1
2
3
4
if (not isDedicated) then
{
["mySideChat", { (_this select 0) sideChat (_this select 1) }] call CBA_fnc_addEventHandler;
};
Later, we want everyone to see a sideChat
message:
1
["mySideChat", [player, "Hello, noobs!"]] call CBA_fnc_globalEvent;
There is no requirement to pass parameters with the event. If no parameters are passed, then the receiving handler will not be passed _this.
Since we only want to create the vehicle on the server, it makes sense to only add a handler on the server:
1
2
3
4
if (isServer) then
{
["mySummonUAZ", { "uaz" createVehicle (getMarkerPos "base") }] call CBA_fnc_addEventHandler;
};
Later, the player wants to create a UAZ (perhaps via an action) and runs:
1
["mySummonUAZ"] call CBA_fnc_globalEvent;