RU/Client side scripts: Difference between revisions
No edit summary |
|||
(15 intermediate revisions by 9 users not shown) | |||
Line 1: | Line 1: | ||
Клиентские скрипты - такие скрипты, которые исполняются непосредственно клиентской стороной MTA (то есть на компьютере игрока). Это значит, что есть доступ к большему объему информации об игровом мире, но чуть меньше о других игроках вцелом. | |||
Это полезно для действий, которые нужно выполнить на клиентской стороне, например, визуальных эффектов, создания и манипуляций с GUI. | |||
== | ==Как это работает?== | ||
Скрипты клиентской стороны придерживаются практически той же схемы, что и скрипты серверной стороны. Мы постараемся обеспечить необходимую функциональность для скриптов клиентской стороны. Взаимодействие между серверными и клиентскими скриптами осуществляется через использование одних тех же системных событий, которые мы имеем. Серверные и клиентские скрипты должны находиться в двух разных файлах, которые должны быть указаны в метафайле ресурса с помощью тэга <script> (атрибут type). | |||
Например: | |||
<syntaxhighlight lang="xml"> | <syntaxhighlight lang="xml"> | ||
<!-- GUI ( | <!-- GUI (клиент) тестовый скрипт --> | ||
<meta> | <meta> | ||
<script src="guitest.lua" type="client" /> | <script src="guitest.lua" type="client" /> | ||
Line 16: | Line 15: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Если требуется вызвать событие на стороне клиента с сервера, для начала вы должны зарегистрировать клиентское событие с помощью [[addEvent]]. После этого вы сможете прикрепить к нему обработчик события так же, как это делаете с серверными. Используя [[triggerClientEvent]] ( player, "eventName", fromElement, args ... ), вы сможете вызывать клиентское событие с серверной стороны. Соответственно, [[triggerServerEvent]] работает так же, но вызывает уже серверные события с клиентской стороны. | |||
Например: | |||
''' | '''Клиентская сторона:''' | ||
<syntaxhighlight lang="lua"> | <syntaxhighlight lang="lua"> | ||
function showObjectBrowser(id) | function showObjectBrowser(id) | ||
-- | -- Код | ||
end | end | ||
Line 30: | Line 29: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
''' | '''Серверная сторона:''' | ||
<syntaxhighlight lang="lua"> | <syntaxhighlight lang="lua"> | ||
triggerClientEvent ( somePlayer, "doShowObjectBrowser", getRootElement(), 1034 ) | triggerClientEvent ( somePlayer, "doShowObjectBrowser", getRootElement(), 1034 ) | ||
</syntaxhighlight> | </syntaxhighlight> | ||
[[en:Client side scripts]] | |||
[[it:Script client-side]] | [[it:Script client-side]] | ||
[[es:Scripts de Cliente]] | |||
[[ru:Клиентские скрипты]] |
Latest revision as of 03:05, 1 April 2016
Клиентские скрипты - такие скрипты, которые исполняются непосредственно клиентской стороной MTA (то есть на компьютере игрока). Это значит, что есть доступ к большему объему информации об игровом мире, но чуть меньше о других игроках вцелом.
Это полезно для действий, которые нужно выполнить на клиентской стороне, например, визуальных эффектов, создания и манипуляций с GUI.
Как это работает?
Скрипты клиентской стороны придерживаются практически той же схемы, что и скрипты серверной стороны. Мы постараемся обеспечить необходимую функциональность для скриптов клиентской стороны. Взаимодействие между серверными и клиентскими скриптами осуществляется через использование одних тех же системных событий, которые мы имеем. Серверные и клиентские скрипты должны находиться в двух разных файлах, которые должны быть указаны в метафайле ресурса с помощью тэга <script> (атрибут type).
Например:
<!-- GUI (клиент) тестовый скрипт --> <meta> <script src="guitest.lua" type="client" /> <info author="IJs" /> </meta>
Если требуется вызвать событие на стороне клиента с сервера, для начала вы должны зарегистрировать клиентское событие с помощью addEvent. После этого вы сможете прикрепить к нему обработчик события так же, как это делаете с серверными. Используя triggerClientEvent ( player, "eventName", fromElement, args ... ), вы сможете вызывать клиентское событие с серверной стороны. Соответственно, triggerServerEvent работает так же, но вызывает уже серверные события с клиентской стороны.
Например:
Клиентская сторона:
function showObjectBrowser(id) -- Код end addEvent("doShowObjectBrowser", true) addEventHandler("doShowObjectBrowser", getRootElement(), showObjectBrowser)
Серверная сторона:
triggerClientEvent ( somePlayer, "doShowObjectBrowser", getRootElement(), 1034 )