To use existing events in your resources, you need to listen for them. This is the same for client/server side scripts.
In Lua/JS, the source
variable (global) will contain the player ID that triggered the event. You should most likely save it in a local variable if you're going to use it after the event returns.
In C#, you use the [FromSource]
attribute, as seen in the example below.
Lua
AddEventHandler("eventName", function(eventParam1, eventParam2)
-- Code here will be executed once the event is triggered.
end)
C#
// Usually in the constructor of a class that inherits BaseScript, but can be done anywhere in a BaseScript.
EventHandlers["eventName"] += new Action<string, bool>(TargetFunction);
// Create a function to handle the event somewhere else in your code, or use a lambda.
private void TargetFunction(string param1, bool param2)
{
// Code that gets executed once the event is triggered goes here.
}
// -----------------------------------------------------------------------------
// Or using EventHandler Attribute
[EventHandler("eventName")]
private void TargetFunction(string param1, bool param2)
{
// Code that gets executed once the event is triggered goes here.
}
Using source (on the server) works as follows:
// constructor code
EventHandlers["netEventName"] += new Action<Player, string, bool>(TargetFunction);
// Create a function to handle the event somewhere else in your code, or use a lambda.
private void TargetFunction([FromSource] Player source, string param1, bool param2)
{
// Code that gets executed once the event is triggered goes here.
// The variable 'source' contains a reference to the player that triggered the event.
}
// -----------------------------------------------------------------------------
// Or using EventHandler Attribute
[EventHandler("netEventName")]
private void TargetFunction([FromSource] Player source, string param1, bool param2)
{
// Code that gets executed once the event is triggered goes here.
// The variable 'source' contains a reference to the player that triggered the event.
}
JS
on('eventName', (eventParam1, eventParam2) => {
// Code that gets executed once the event is triggered goes here.
});
If you want your events to be available 'over the network' (that is, trigger a client event from a server-side script, or trigger a server event from a client-side script), you'll need to register the event first.
To register an event as a network event, place this in your client/server script:
Lua
RegisterNetEvent("eventName", function(eventParam1, eventParam2)
-- Code here will be executed once the event is triggered.
end)
JS
Note: onNet events can be executed both locally as well as remotely
onNet('eventName', (eventParam1, eventParam2) => {
// Code here will be executed once the event is triggered.
})
You only need to register events when using Lua or JS -- C# does not require you to do this manually, though you might want to protect your server events with own code.