|
|
| Line 1: |
Line 1: |
| __NOTOC__
| |
| {{RU/Client function}}
| |
|
| |
|
| Эта функция позволяет вызвать срабатывание события, предварительно созданного на сервере. Она относится к основным средствам обмена информацией между сервером и клиентом. На серверной стороне существует аналогичная функция [[RU/triggerClientEvent|triggerClientEvent]] работающая в противоположном направлении. Эту функцию можно рассматривать как асинхронный вызов функции с использованием [[RU/triggerClientEvent|triggerClientEvent]] для получения ответа\результата, если таковой требуется.
| |
|
| |
| Передавать можно почти любые типы данных, включая элементы ([[element]]) и сложные вложенные таблицы ([[table]]). Данные неэлементных типов МТА, например указатели на xml (xmlNodes) или указатели на ресурсы не могут быть переданы, поскольку у них может и не существовать какого-либо представления на стороне клиента.
| |
|
| |
| Вызовы посылаются надежно, поэтому клиенты их получат, однако возможны (хотя, как правило, незначительные) задержки в получении, что также следует принимать во внимание. Также следует учитывать вопросы пропускной способности канала - не отправляйте большой объем данных без необходимости. Отправка одного большого вызова ненамного эффективнее отправки нескольких маленьких.
| |
|
| |
| ==Синтаксис==
| |
| <syntaxhighlight lang="lua">
| |
| bool triggerServerEvent ( string event, element theElement, [arguments...] )
| |
| </syntaxhighlight>
| |
|
| |
| ===Required Arguments===
| |
| *'''event:''' Название события на стороне сервера. Оно должно быть зарегистрировано на стороне клиента с помощью [[RU/addEvent|addEvent]] и иметь хотя бы один обработчик, добавленный с помощью [[RU/addEventHandler|addEventHandler]].
| |
| *'''theElement:''' Элемент, который будет источником [[Event system#Event handlers|source]] события. Это может быть, например, другой игрок, или корень (root element), если это непринципиально.
| |
|
| |
| ===Optional Arguments===
| |
| *'''arguments...:''' Список аргументов, которые будут передаваться вместе с событием. Можно передавать любые типы lua (кроме функций), а также любые элементы ([[element]]).
| |
|
| |
| ===Вывод===
| |
| Возвращает ''true'' если вызов события был успешно сделан, ''false'' если указаны некорректные аргументы.
| |
|
| |
| ===Пример===
| |
| В этом примере клиент передает серверу сообщение "Превед медвед!".
| |
|
| |
| <section name="Server" class="server" show="true">
| |
| <syntaxhighlight lang="lua">
| |
| function greetingHandler ( message )
| |
| outputChatBox ( "The client says: " .. message, source )
| |
| end
| |
| addEvent( "onGreeting", true )
| |
| addEventHandler( "onGreeting", getRootElement(), greetingHandler )
| |
| </syntaxhighlight>
| |
| </section>
| |
| <section name="Client" class="client" show="true">
| |
| <syntaxhighlight lang="lua">
| |
| function greetingCommand ( commandName )
| |
| triggerServerEvent ( "onGreeting", getLocalPlayer(), "Превед медвед!" )
| |
| --использование getLocalPlayer вместо getRootElement делает этого клиента источником (source) события, благодаря чему нам не надо дополнительно передавать параметр, содержащий указатель на этого клиента.
| |
| end
| |
| addCommandHandler ( "greet", greetingCommand )
| |
| </syntaxhighlight>
| |
| </section>
| |
|
| |
| Когда выполняется консольная команда "greet" (вводится через консоль сервера или игрока), на стороне клиента вызывается функция ''greetingCommand''. Она вызывает срабатывание на стороне сервера события ''onGreeting'' с параметром "Превед медвед!". В результате вызывается функция-обработчик ''greetingHandler'', которая и пишет полученное от клиента сообщение ему же в чат.
| |
|
| |
| ==Смотрите также==
| |
| {{RU/Client_event_functions}}
| |
| [[en:triggerServerEvent]]
| |