TriggerServerEvent: Difference between revisions
No edit summary |
m (→Example) |
||
Line 30: | Line 30: | ||
<syntaxhighlight lang="lua"> | <syntaxhighlight lang="lua"> | ||
function greetingHandler ( message ) | function greetingHandler ( message ) | ||
if (client == source) then -- security check if the client is equal to the source that is going to execute the event | |||
-- the predefined variable 'client' points to the player who triggered the event and should be used due to security issues | |||
outputChatBox ( "The client says: " .. message, client ) | |||
end | |||
end | end | ||
addEvent( "onGreeting", true ) | addEvent( "onGreeting", true ) |
Revision as of 12:49, 15 July 2014
This function triggers an event previously registered on the server. This is the primary means of passing information between the client and the server. Servers have a similar triggerClientEvent function that can do the reverse. You can treat this function as if it was an asynchronous function call, using triggerClientEvent to pass back any returned information if necessary.
Almost any data types can be passed as expected, including elements and complex nested tables. Non-element MTA data types like xmlNodes or resource pointers will not be able to be passed as they do not necessarily have a valid representation on the client.
Events are sent reliably, so the server will receive them, but there may be (but shouldn't be) a significant delay before they are received. You should take this into account when using them.
Keep in mind the bandwidth issues when using events - don't pass a large list of arguments unless you really need to. It is marginally more efficient to pass one large event than two smaller ones.
Syntax
bool triggerServerEvent ( string event, element theElement, [arguments...] )
Required Arguments
- event: The name of the event to trigger server-side. You should register this event with addEvent and add at least one event handler using addEventHandler.
- theElement: The element that is the source of the event.
Optional Arguments
- arguments...: A list of arguments to trigger with the event. You can pass any lua data type (except functions). You can also pass elements.
Returns
Returns true if the event trigger has been sent, false if invalid arguments were specified.
Example
This example shows how you can pass a simple "Hello World" message from the client to the server using an event.
function greetingHandler ( message ) if (client == source) then -- security check if the client is equal to the source that is going to execute the event -- the predefined variable 'client' points to the player who triggered the event and should be used due to security issues outputChatBox ( "The client says: " .. message, client ) end end addEvent( "onGreeting", true ) addEventHandler( "onGreeting", root, greetingHandler )
function greetingCommand ( commandName ) triggerServerEvent ( "onGreeting", localPlayer, "Hello World!" ) -- localPlayer instead of root makes the client player the 'source' on the server function, eliminating the need for an additional player argument to be transferred. end addCommandHandler ( "greet", greetingCommand )
When the command "greet" is executed (by typing it in the server console or the player's console), the clients greetingCommand function is called. This triggers the server-side event onGreeting with the string "Hello World!". This event is then handled by the greetingHandler function server-side which then displays the message.