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.
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.
addPublicVariableEventHandler
).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;