RU/Client side scripts: Difference between revisions

From Multi Theft Auto: Wiki
Jump to navigation Jump to search
No edit summary
m (Reverted edits by Bonzo (talk) to last revision by Vincent)
 
(12 intermediate revisions by 6 users not shown)
Line 1: Line 1:
{{translate}}
Клиентские скрипты - такие скрипты, которые исполняются непосредственно клиентской стороной MTA (то есть на компьютере игрока). Это значит, что есть доступ к большему объему информации об игровом мире, но чуть меньше о других игроках вцелом.
Клиентские скрипты - это те скрипты, которые исполняются непосредственно клиентской стороной мода. А значит, есть доступ к большому объему информации о игровом мире, но почти нет информации о других игроках в игре.


Это полезно для действий, которые нужно выполнить на клиентской стороне, например визуальные эффекты, создание и манипуляции с GUI.
Это полезно для действий, которые нужно выполнить на клиентской стороне, например, визуальных эффектов, создания и манипуляций с GUI.


==Как это работает?==
==Как это работает?==
Скрипты клиентской стороны следуют практически той же схемы, что и серверной стороны. Мы постараемся обеспечить необходимую функциональность для клиентской стороны скриптов. Взаимодействие между серверными и клиентскими скриптами осуществляется с использованием тех же системных событий, которые мы уже имеем. Серверные и клиентские скрипты должны находиться в двух разных файлах, которые включены в ресурсах (в метафайл) с помощью тэга <script> (типа атрибут).
Скрипты клиентской стороны придерживаются практически той же схемы, что и скрипты серверной стороны. Мы постараемся обеспечить необходимую функциональность для скриптов клиентской стороны. Взаимодействие между серверными и клиентскими скриптами осуществляется через использование одних тех же системных событий, которые мы имеем. Серверные и клиентские скрипты должны находиться в двух разных файлах, которые должны быть указаны в метафайле ресурса с помощью тэга <script> (атрибут type).


К примеру:
Например:
<syntaxhighlight lang="xml">
<syntaxhighlight lang="xml">
<!-- GUI (client) testing script -->
<!-- GUI (клиент) тестовый скрипт -->
<meta>
<meta>
<script src="guitest.lua" type="client" />
<script src="guitest.lua" type="client" />
Line 16: Line 15:
</syntaxhighlight>
</syntaxhighlight>


If you wanted to trigger a client side event from the server, you would first have to register the client side event using [[addEvent]]. Then, you can attach a handler to the event as you would in a server side script. Then in the server side script, you'll be able to call [[triggerClientEvent]] ( player, "eventName", fromElement, args ... ) which will trigger the event client side. The same can be done in reverse using [[triggerServerEvent]].
Если требуется вызвать событие на стороне клиента с сервера, для начала вы должны зарегистрировать клиентское событие с помощью [[addEvent]]. После этого вы сможете прикрепить к нему обработчик события так же, как это делаете с серверными. Используя [[triggerClientEvent]] ( player, "eventName", fromElement, args ... ), вы сможете вызывать клиентское событие с серверной стороны. Соответственно, [[triggerServerEvent]] работает так же, но вызывает уже серверные события с клиентской стороны.


For example:
Например:


'''Client-side:'''
'''Клиентская сторона:'''
<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
function showObjectBrowser(id)
function showObjectBrowser(id)
   -- code here
   -- Код
end
end


Line 30: Line 29:
</syntaxhighlight>
</syntaxhighlight>


'''Server-side:'''
'''Серверная сторона:'''
<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
triggerClientEvent ( somePlayer, "doShowObjectBrowser", getRootElement(), 1034 )
triggerClientEvent ( somePlayer, "doShowObjectBrowser", getRootElement(), 1034 )
Line 37: Line 36:
[[en:Client side scripts]]
[[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 )