<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.multitheftauto.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=BloodStason</id>
	<title>Multi Theft Auto: Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.multitheftauto.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=BloodStason"/>
	<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/wiki/Special:Contributions/BloodStason"/>
	<updated>2026-05-10T23:33:20Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.3</generator>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=User:BloodStason&amp;diff=23722</id>
		<title>User:BloodStason</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=User:BloodStason&amp;diff=23722"/>
		<updated>2010-06-19T22:48:19Z</updated>

		<summary type="html">&lt;p&gt;BloodStason: Created page with ''''Name:''' Stason  '''Nick:''' BloodStason  '''GameTime:''' 3 Years  '''Age:''' 15  '''ICQ:''' 452029147'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Name:''' Stason&lt;br /&gt;
&lt;br /&gt;
'''Nick:''' BloodStason&lt;br /&gt;
&lt;br /&gt;
'''GameTime:''' 3 Years&lt;br /&gt;
&lt;br /&gt;
'''Age:''' 15&lt;br /&gt;
&lt;br /&gt;
'''ICQ:''' 452029147&lt;/div&gt;</summary>
		<author><name>BloodStason</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=RU/Meta.xml&amp;diff=23721</id>
		<title>RU/Meta.xml</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=RU/Meta.xml&amp;diff=23721"/>
		<updated>2010-06-19T22:36:13Z</updated>

		<summary type="html">&lt;p&gt;BloodStason: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{translate}}&lt;br /&gt;
Этот файл имеет очень важное содержание, которое позволяет загрузить ресурс/режим/карту. Вам нужно указать имена файлов, которые ваш скрипт/режим e (resource) будет использовать в файле '''meta.xml'''. Если вы хотите отображать изображение на экране клиента, клиент должен сначала загрузить его. Чтобы сервер знал, что вы хотите использовать изображение, нужно прописать имя файла в meta.xml. Если вам нужно использовать какие-то настройки для скрипта в качестве переменных, вы можете прописать их в тэге &amp;lt;settings&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Примечание: Вы можете опробывать простой генератор meta.xml, созданный 50p: http://forum.mtasa.com/viewtopic.php?f=91&amp;amp;t=22247&lt;br /&gt;
&lt;br /&gt;
== Возможные тэги ==&lt;br /&gt;
Тэги в .xml такие же, как в . html. Файл meta.xml имеет множество тэгов, необходимых и опциональных. У них есть свои атрибуты.&lt;br /&gt;
Язык XML не умеет формировать тэги, он служит как простой способ хранения данных. Интерпретацией тэгов занимаются скрипты, то есть '''вы можете определять новые тэги в XML'''. Однако, MTA определяет несколько тэгов самостоятельно, они приведены ниже:&lt;br /&gt;
&lt;br /&gt;
*'''&amp;lt;info /&amp;gt;''' Информация о данном ресурсе, possible parameters include (any arbitrary parameters can be used and read using [[getResourceInfo]]):&lt;br /&gt;
** '''author:''' Автор&lt;br /&gt;
** '''version:''' Версия&lt;br /&gt;
** '''name:''' Название&lt;br /&gt;
** '''description:''' Описание&lt;br /&gt;
** '''type:''' Тип ресурса, может быть &amp;quot;gamemode&amp;quot;, &amp;quot;script&amp;quot;, &amp;quot;map&amp;quot; or &amp;quot;misc&amp;quot;.&lt;br /&gt;
*'''&amp;lt;script /&amp;gt;''' Исходный код для этого ресурса, возможные параметры:&lt;br /&gt;
** '''src:''' Имя файла исходного кода&lt;br /&gt;
** '''type:''' Тип исходного кода: &amp;quot;Client&amp;quot; или &amp;quot;Server&amp;quot;&lt;br /&gt;
*'''&amp;lt;map /&amp;gt;''' Карта для режима игры, возможность параметрами являются:&lt;br /&gt;
**'''src:''' .map имя файла (Может лежать в других папках. Например: &amp;quot;maps/filename.map&amp;quot;)&lt;br /&gt;
**'''dimension:''' Объём, в котором карта будет загружена (по желанию)&lt;br /&gt;
*'''&amp;lt;file /&amp;gt;''' Файл на стороне клиента. Как правило, эти образы. txd, .col, .dff или .xml файлы. Они будут скачаны с клиента, когда ресурс запустится (Или при присоединении)&lt;br /&gt;
**'''src:''' Файл на стороне клиента (Может лежать в других папках. Например: &amp;quot;image/image.png&amp;quot;)&lt;br /&gt;
*'''&amp;lt;include /&amp;gt;''' Включать ресурс, когда он ресурс будет использоваться&lt;br /&gt;
**'''resource:''' Имя ресурса, которое вы хотите использовать для этого ресурса&lt;br /&gt;
**'''minversion:''' Минимальная версия ресурса (не обязательно)&lt;br /&gt;
**'''maxversion:''' Максимальная версия ресурса(не обязательно)&lt;br /&gt;
*'''&amp;lt;config /&amp;gt;''' Файл конфигураций (.XML) возможные параметры:&lt;br /&gt;
**'''src:''' Имя конфигурационного файла&lt;br /&gt;
**'''type:''' Тип файла конфигурации: &amp;quot;Clien&amp;quot; или &amp;quot;Server&amp;quot;&lt;br /&gt;
*'''&amp;lt;export /&amp;gt;''' Это функция экспорта из этого ресурса, так что другие ресурсы могут использовать их - [[call]]&lt;br /&gt;
**'''function:''' Имя функции&lt;br /&gt;
**'''type''' Экспортирует клиентские или серверные функции (Возможные значения: &amp;quot;Server&amp;quot; и &amp;quot;Client&amp;quot;)&lt;br /&gt;
**'''http:''' Может ли быть функция вызвана через HTTP (true/false)&lt;br /&gt;
*'''&amp;lt;html /&amp;gt;'''&lt;br /&gt;
**'''src:''' Имя HTTP файла (Может быть путь. Например: files/file.png)&lt;br /&gt;
**'''default:''' HTML-файл, который отображается по умолчанию при посещении /resourceName/ на сервере. Только один HTML-файл может быть по умолчанию, остальные игнорируются. (true/false)&lt;br /&gt;
**'''raw:''' HTML-файл не обрабатывается интерпретатором LUA, может рассматриваться как двоичные данные. Должен использоваться для двоичных файлов (В основном изображения) (true/false)&lt;br /&gt;
*'''&amp;lt;settings&amp;gt; &amp;lt;setting name=&amp;quot;&amp;quot; value=&amp;quot;&amp;quot;/&amp;gt; &amp;lt;/settings&amp;gt;:''' Большинство режимах игры использовать [[settings system]] (Настройки системы), чтобы администраторы сервера могли настроить его так, как они хотят. Например, вы можете установить время, а затем использовать [[get]] (Получить) и [[set]] (Установить), чтобы получить значение или изменить его, соответственно.&lt;br /&gt;
&lt;br /&gt;
== Пример ==&lt;br /&gt;
Вот пример мета файла Используется некоторые упомянутые теги:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot; lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;meta&amp;gt;&lt;br /&gt;
    &amp;lt;info author=&amp;quot;Slothman&amp;quot; type=&amp;quot;gamemode&amp;quot; name=&amp;quot;Stealth&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;config src=&amp;quot;help.xml&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;script src=&amp;quot;stealthmain_server.lua&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;noiseblip.lua&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;mission_timer.lua&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;gadgets_server.lua&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;gadgets_client.lua&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;stealthmain_client.lua&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;noisebar.lua&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;spycam.lua&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;file src=&amp;quot;riot_shield.txd&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;riot_shield.dff&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;riot_shield.col&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;armor.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;camera.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;cloak.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;goggles.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;mine.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;radar.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;shield.png&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;include resource=&amp;quot;scoreboard&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;include resource=&amp;quot;killmessages&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;include resource=&amp;quot;maplimits&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;settings&amp;gt;&lt;br /&gt;
         &amp;lt;setting name=&amp;quot;roundlimit&amp;quot; value=&amp;quot;[6]&amp;quot; /&amp;gt; &amp;lt;!-- Длинна раунда в минутах --&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;teamdamage&amp;quot; value=&amp;quot;[1]&amp;quot; /&amp;gt; &amp;lt;!-- 0 для выключения командной защиты, 1 для включения командной защиты --&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;teambalance&amp;quot; value=&amp;quot;[1]&amp;quot; /&amp;gt; &amp;lt;!-- Предел разницы количества игроков между командами --&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;spazammo&amp;quot; value=&amp;quot;[25]&amp;quot; /&amp;gt; &amp;lt;!-- Сумма боеприпасов --&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;m4ammo&amp;quot; value=&amp;quot;[100]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;shotgunammo&amp;quot; value=&amp;quot;[25]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;sniperammo&amp;quot; value=&amp;quot;[20]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;ak47ammo&amp;quot; value=&amp;quot;[120]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;rifleammo&amp;quot; value=&amp;quot;[40]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;deserteagleammo&amp;quot; value=&amp;quot;[45]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;pistolammo&amp;quot; value=&amp;quot;[132]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;uziammo&amp;quot; value=&amp;quot;[150]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;tec9ammo&amp;quot; value=&amp;quot;[150]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;silencedammo&amp;quot; value=&amp;quot;[65]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;grenadeammo&amp;quot; value=&amp;quot;[4]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;satchelammo&amp;quot; value=&amp;quot;[4]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;teargasammo&amp;quot; value=&amp;quot;[4]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;molatovammo&amp;quot; value=&amp;quot;[4]&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;/settings&amp;gt;&lt;br /&gt;
&amp;lt;/meta&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
[[Category:Scripting Concepts]]&lt;br /&gt;
[[Category:Incomplete]]&lt;br /&gt;
[[en:Meta.xml]]&lt;/div&gt;</summary>
		<author><name>BloodStason</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=RU/Meta.xml&amp;diff=23720</id>
		<title>RU/Meta.xml</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=RU/Meta.xml&amp;diff=23720"/>
		<updated>2010-06-19T22:32:20Z</updated>

		<summary type="html">&lt;p&gt;BloodStason: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{translate}}&lt;br /&gt;
Этот файл имеет очень важное содержание, которое позволяет загрузить ресурс/режим/карту. Вам нужно указать имена файлов, которые ваш скрипт/режим e (resource) будет использовать в файле '''meta.xml'''. Если вы хотите отображать изображение на экране клиента, клиент должен сначала загрузить его. Чтобы сервер знал, что вы хотите использовать изображение, нужно прописать имя файла в meta.xml. Если вам нужно использовать какие-то настройки для скрипта в качестве переменных, вы можете прописать их в тэге &amp;lt;settings&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Примечание: Вы можете опробывать простой генератор meta.xml, созданный 50p: http://forum.mtasa.com/viewtopic.php?f=91&amp;amp;t=22247&lt;br /&gt;
&lt;br /&gt;
== Возможные тэги ==&lt;br /&gt;
Тэги в .xml такие же, как в . html. Файл meta.xml имеет множество тэгов, необходимых и опциональных. У них есть свои атрибуты.&lt;br /&gt;
Язык XML не умеет формировать тэги, он служит как простой способ хранения данных. Интерпретацией тэгов занимаются скрипты, то есть '''вы можете определять новые тэги в XML'''. Однако, MTA определяет несколько тэгов самостоятельно, они приведены ниже:&lt;br /&gt;
&lt;br /&gt;
*'''&amp;lt;info /&amp;gt;''' Информация о данном ресурсе, possible parameters include (any arbitrary parameters can be used and read using [[getResourceInfo]]):&lt;br /&gt;
** '''author:''' Автор&lt;br /&gt;
** '''version:''' Версия&lt;br /&gt;
** '''name:''' Название&lt;br /&gt;
** '''description:''' Описание&lt;br /&gt;
** '''type:''' Тип ресурса, может быть &amp;quot;gamemode&amp;quot;, &amp;quot;script&amp;quot;, &amp;quot;map&amp;quot; or &amp;quot;misc&amp;quot;.&lt;br /&gt;
*'''&amp;lt;script /&amp;gt;''' Исходный код для этого ресурса, возможные параметры:&lt;br /&gt;
** '''src:''' Имя файла исходного кода&lt;br /&gt;
** '''type:''' Тип исходного кода: &amp;quot;Client&amp;quot; или &amp;quot;Server&amp;quot;&lt;br /&gt;
*'''&amp;lt;map /&amp;gt;''' Карта для режима игры, возможность параметрами являются:&lt;br /&gt;
**'''src:''' .map имя файла (Может лежать в других папках. Например: &amp;quot;maps/filename.map&amp;quot;)&lt;br /&gt;
**'''dimension:''' Объём, в котором карта будет загружена (по желанию)&lt;br /&gt;
*'''&amp;lt;file /&amp;gt;''' Файл на стороне клиента. Как правило, эти образы. txd, .col, .dff или .xml файлы. Они будут скачаны с клиента, когда ресурс запустится (Или при присоединении)&lt;br /&gt;
**'''src:''' Файл на стороне клиента (Может лежать в других папках. Например: &amp;quot;image/image.png&amp;quot;)&lt;br /&gt;
*'''&amp;lt;include /&amp;gt;''' Включать ресурс, когда он ресурс будет использоваться&lt;br /&gt;
**'''resource:''' Имя ресурса, которое вы хотите использовать для этого ресурса&lt;br /&gt;
**'''minversion:''' Минимальная версия ресурса (не обязательно)&lt;br /&gt;
**'''maxversion:''' Максимальная версия ресурса(не обязательно)&lt;br /&gt;
*'''&amp;lt;config /&amp;gt;''' Файл конфигураций (.XML) возможные параметры:&lt;br /&gt;
**'''src:''' Имя конфигурационного файла&lt;br /&gt;
**'''type:''' Тип файла конфигурации: &amp;quot;Clien&amp;quot; или &amp;quot;Server&amp;quot;&lt;br /&gt;
*'''&amp;lt;export /&amp;gt;''' Это функция экспорта из этого ресурса, так что другие ресурсы могут использовать их - [[call]]&lt;br /&gt;
**'''function:''' Имя функции&lt;br /&gt;
**'''type''' Экспортирует клиентские или серверные функции (Возможные значения: &amp;quot;Server&amp;quot; и &amp;quot;Client&amp;quot;)&lt;br /&gt;
**'''http:''' Может ли быть функция вызвана через HTTP (true/false)&lt;br /&gt;
*'''&amp;lt;html /&amp;gt;'''&lt;br /&gt;
**'''src:''' Имя HTTP файла (Может быть путь. Например: files/file.png)&lt;br /&gt;
**'''default:''' HTML-файл, который отображается по умолчанию при посещении /resourceName/ на сервере. Только один HTML-файл может быть по умолчанию, остальные игнорируются. (true/false)&lt;br /&gt;
**'''raw:''' HTML-файл не обрабатывается интерпретатором LUA, может рассматриваться как двоичные данные. Должен использоваться для двоичных файлов (В основном изображения) (true/false)&lt;br /&gt;
*'''&amp;lt;settings&amp;gt; &amp;lt;setting name=&amp;quot;&amp;quot; value=&amp;quot;&amp;quot;/&amp;gt; &amp;lt;/settings&amp;gt;:''' Большинство режимах игры использовать [[settings system]] (Настройки системы), чтобы администраторы сервера могли настроить его так, как они хотят. Например, вы можете установить время, а затем использовать [[get]] (Получить) и [[set]] (Установить), чтобы получить значение или изменить его, соответственно.&lt;br /&gt;
&lt;br /&gt;
== Пример ==&lt;br /&gt;
Вот пример мета файла Используется некоторые упомянутые теги:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot; lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;meta&amp;gt;&lt;br /&gt;
    &amp;lt;info author=&amp;quot;Slothman&amp;quot; type=&amp;quot;gamemode&amp;quot; name=&amp;quot;Stealth&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;config src=&amp;quot;help.xml&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;script src=&amp;quot;stealthmain_server.lua&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;noiseblip.lua&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;mission_timer.lua&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;gadgets_server.lua&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;gadgets_client.lua&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;stealthmain_client.lua&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;noisebar.lua&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;spycam.lua&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;file src=&amp;quot;riot_shield.txd&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;riot_shield.dff&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;riot_shield.col&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;armor.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;camera.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;cloak.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;goggles.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;mine.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;radar.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;shield.png&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;include resource=&amp;quot;scoreboard&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;include resource=&amp;quot;killmessages&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;include resource=&amp;quot;maplimits&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;settings&amp;gt;&lt;br /&gt;
         &amp;lt;setting name=&amp;quot;roundlimit&amp;quot; value=&amp;quot;[6]&amp;quot; /&amp;gt; &amp;lt;!-- round length in minutes --&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;teamdamage&amp;quot; value=&amp;quot;[1]&amp;quot; /&amp;gt; &amp;lt;!-- 0 for team protection off, 1 for team protection on --&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;teambalance&amp;quot; value=&amp;quot;[1]&amp;quot; /&amp;gt; &amp;lt;!--  difference limit of amount of players between teams --&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;spazammo&amp;quot; value=&amp;quot;[25]&amp;quot; /&amp;gt; &amp;lt;!-- ammo amounts --&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;m4ammo&amp;quot; value=&amp;quot;[100]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;shotgunammo&amp;quot; value=&amp;quot;[25]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;sniperammo&amp;quot; value=&amp;quot;[20]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;ak47ammo&amp;quot; value=&amp;quot;[120]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;rifleammo&amp;quot; value=&amp;quot;[40]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;deserteagleammo&amp;quot; value=&amp;quot;[45]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;pistolammo&amp;quot; value=&amp;quot;[132]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;uziammo&amp;quot; value=&amp;quot;[150]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;tec9ammo&amp;quot; value=&amp;quot;[150]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;silencedammo&amp;quot; value=&amp;quot;[65]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;grenadeammo&amp;quot; value=&amp;quot;[4]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;satchelammo&amp;quot; value=&amp;quot;[4]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;teargasammo&amp;quot; value=&amp;quot;[4]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;molatovammo&amp;quot; value=&amp;quot;[4]&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;/settings&amp;gt;&lt;br /&gt;
&amp;lt;/meta&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
[[Category:Scripting Concepts]]&lt;br /&gt;
[[Category:Incomplete]]&lt;br /&gt;
[[en:Meta.xml]]&lt;/div&gt;</summary>
		<author><name>BloodStason</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=%D0%92%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B2_%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%B8%D0%BD%D0%B3_GUI&amp;diff=23610</id>
		<title>Введение в скриптинг GUI</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=%D0%92%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B2_%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%B8%D0%BD%D0%B3_GUI&amp;diff=23610"/>
		<updated>2010-06-05T13:50:37Z</updated>

		<summary type="html">&lt;p&gt;BloodStason: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- place holder --&amp;gt;&lt;br /&gt;
Одна из важных особенностей MTA:SA - возможность создания собственного GUI (графический пользовательский интерфейс). Графический интерфейс состоит из окон, кнопок, текстовых полей... Проще говоря, из всех стандартных компонент графических интерфейсов. Они могут использоваться пока пользователь в игре, и использоваться для ввода/вывода вместо команд. &lt;br /&gt;
&lt;br /&gt;
[[Image:AdminGUI.png|thumb|Admin Console GUI]]&lt;br /&gt;
&lt;br /&gt;
==Руководство по созданию интерфейса авторизации==&lt;br /&gt;
В этом руководстве мы сделаем простое окно авторизаци с двумя полями ввода и кнопкой. Окно появляется, когда игрок подключается к игре, и после того, как нажата кнопка, игрок респаунится. Это руководство - продолжение предыдущего ([[RU/Scripting Introduction|Введение в скриптинг]]). Теперь мы познакомимся с написанием клиентских скриптов. &lt;br /&gt;
&lt;br /&gt;
===Отрисовка окна===&lt;br /&gt;
GUI работает на стороне клиента. Хорошим решением будет поместить все клиентские скрипты в отдельный каталог. Перейдите в каталог /Ваш сервер MTA/mods/deathmatch/resources/myserver/ и создайте подкаталог &amp;quot;client&amp;quot;. В нём создайте текстовый файл и назовите его &amp;quot;gui.lua&amp;quot;. В этом файле мы напишем функцию, отображающую окно:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function CreateLoginWindow()&lt;br /&gt;
	local X = 0.375&lt;br /&gt;
	local Y = 0.375&lt;br /&gt;
	local Width = 0.25&lt;br /&gt;
	local Height = 0.25&lt;br /&gt;
	wdwLogin = guiCreateWindow(X, Y, Width, Height, &amp;quot;Please Log In&amp;quot;, true)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Вы можете кликнуть по имени функции, чтобы прочитать её описание. Заметьте, что координаты окна задаются в ''процентах'' от размеров экрана. Это значит, что левая граница экрана по ширине принимается за 0, а правая за 1, соответственно, &amp;quot;X&amp;quot; равное 0.5 обозначает середину экрана. Аналогично и для позиции по высоте, ширины и высоты окна (если &amp;quot;width&amp;quot; равно 0.5, окно будет в половину ширины экрана). Теперь мы добавим текстовые метки (с надписями &amp;quot;username:&amp;quot; и &amp;quot;password:&amp;quot;), поля ввода и кнопку. Замените функцию её полной версией:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function CreateLoginWindow()&lt;br /&gt;
	local X = 0.375&lt;br /&gt;
	local Y = 0.375&lt;br /&gt;
	local Width = 0.25&lt;br /&gt;
	local Height = 0.25&lt;br /&gt;
	wdwLogin = guiCreateWindow(X, Y, Width, Height, &amp;quot;Please Log In&amp;quot;, true)&lt;br /&gt;
	&lt;br /&gt;
	X = 0.0825&lt;br /&gt;
	Y = 0.2&lt;br /&gt;
	Width = 0.25&lt;br /&gt;
	Height = 0.25&lt;br /&gt;
	guiCreateLabel(X, Y, Width, Height, &amp;quot;Username&amp;quot;, true, wdwLogin)&lt;br /&gt;
	Y = 0.5&lt;br /&gt;
	guiCreateLabel(X, Y, Width, Height, &amp;quot;Password&amp;quot;, true, wdwLogin)&lt;br /&gt;
	&lt;br /&gt;
	X = 0.415&lt;br /&gt;
	Y = 0.2&lt;br /&gt;
	Width = 0.5&lt;br /&gt;
	Height = 0.15&lt;br /&gt;
	edtUser = guiCreateEdit(X, Y, Width, Height, &amp;quot;&amp;quot;, true, wdwLogin)&lt;br /&gt;
	Y = 0.5&lt;br /&gt;
	edtPass = guiCreateEdit(X, Y, Width, Height, &amp;quot;&amp;quot;, true, wdwLogin)&lt;br /&gt;
	guiEditSetMaxLength(edtUser, 50)&lt;br /&gt;
	guiEditSetMaxLength(edtPass, 50)&lt;br /&gt;
	&lt;br /&gt;
	X = 0.415&lt;br /&gt;
	Y = 0.7&lt;br /&gt;
	Width = 0.25&lt;br /&gt;
	Height = 0.2&lt;br /&gt;
	btnLogin = guiCreateButton(X, Y, Width, Height, &amp;quot;Log In&amp;quot;, true, wdwLogin)&lt;br /&gt;
	&lt;br /&gt;
	guiSetVisible(wdwLogin, false)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Обратите внимание на то, что каждый компонент интерфейса является дочерним по отношению к окну, это достигается указанием родительского элемента (wdwLogin, в данном случае) при создании элемента:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
guiCreateLabel(X, Y, Width, Height, &amp;quot;Password&amp;quot;, true, wdwLogin)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Это очень удобно, т.к. в дальнейшем, при отображении окна, можно обращаться только к родительскому элементу. К примеру:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
guiSetVisible(wdwLogin, false) --прячет всё окно целиком так, что мы можем показать его игроку в любой момент. &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для редактироования GUI вы также можете воспользоваться [[RU/Resource:GUI_Editor | редактором GUI]].&lt;br /&gt;
&lt;br /&gt;
===Использование написаной нами функции===&lt;br /&gt;
Функция CreateLoginWindow написана, но она не будет работать, пока мы её не вызовем. Рекомендуется создавать все окна при запуске ресурса на клиенте, прятать их, и показывать игроку позднее, когда они понадобятся. Для этого напишем обработчик события &amp;quot;[[onClientResourceStart]]&amp;quot;, в котором будем создавать окно:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
addEventHandler(&amp;quot;onClientResourceStart&amp;quot;, getResourceRootElement(getThisResource()), &lt;br /&gt;
	function ()&lt;br /&gt;
		CreateLoginWindow()&lt;br /&gt;
	end&lt;br /&gt;
)	&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Мы хотим показывать окно когда клиент подключается к игре, используя то же событие &amp;quot;[[onClientResourceStart]]&amp;quot;. Теперь обработчик выглядит так:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
addEventHandler(&amp;quot;onClientResourceStart&amp;quot;, getResourceRootElement(getThisResource()), &lt;br /&gt;
	function ()&lt;br /&gt;
		CreateLoginWindow()&lt;br /&gt;
&lt;br /&gt;
                outputChatBox(&amp;quot;Welcome to My MTA DM Server, please log in.  &amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	        if (wdwLogin ~= nil) then&lt;br /&gt;
		         guiSetVisible(wdwLogin, true)&lt;br /&gt;
	        end &lt;br /&gt;
&lt;br /&gt;
	        showCursor(true)&lt;br /&gt;
	        guiSetInputEnabled(true)&lt;br /&gt;
	end&lt;br /&gt;
)	&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Заметьте, что мы выполняем проверку перед показом окна, так, в случае, если окно не создано, не возникнет ошибки. Функция [[showCursor]] включает управление мышью, а [[guiSetInputEnabled]] позволяет быть уверенным, что использование при вводе некоторых клавиш, таких как &amp;quot;A&amp;quot;, &amp;quot;S&amp;quot;, &amp;quot;D&amp;quot;, &amp;quot;W&amp;quot;, &amp;quot;T&amp;quot;, не приведёт к движению персонажа, или вводу текста в чате. На следующем шаге мы заставим кнопку работать так, как задумывалось.&lt;br /&gt;
&lt;br /&gt;
===Обработчик нажатия кнопки===&lt;br /&gt;
Когда пользователь кликает по любому элементу интерфейса, генерируется событие &amp;quot;[[onClientGUIClick]]&amp;quot; для этого элемента. К примеру, если вы кликните по кнопке, можно добавить обработчик для этого события:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
addEventHandler(&amp;quot;onClientGUIClick&amp;quot;, theButtonElement, theHandlerFunction, false)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
В нашем скрипте требуется только обработчик привязанный к кнопке. При клике по ней, клиент должен сообщить серверу, что нужно респаунить игрока. Найдите обработчик события &amp;quot;onClientResourceStart&amp;quot; из предыдущей части и добавьте следующую строку сразу ПОСЛЕ вызова CreateLoginWindow() :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
addEventHandler(&amp;quot;onClientGUIClick&amp;quot;, btnLogin, clientSubmitLogin, false)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Обработчик должен быть добавлен здесь, чтобы быть уверенным, что переменная btnLogin содержит существующую кнопку. Нельзя привязать событие к несуществующему элементу. Вы, должно быть, заметили, что нам потребуется функция &amp;quot;clientSubmitLogin&amp;quot;, вызываемая в предыдущей строке.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function clientSubmitLogin(button, state)&lt;br /&gt;
	if (button == &amp;quot;left&amp;quot; and state == &amp;quot;up&amp;quot;) then&lt;br /&gt;
		&lt;br /&gt;
		triggerServerEvent(&amp;quot;SubmitLogin&amp;quot;, getRootElement(), guiGetText(edtUser), guiGetText(edtPass))&lt;br /&gt;
		guiSetInputEnabled(false)&lt;br /&gt;
		guiSetVisible(wdwLogin, false)&lt;br /&gt;
		showCursor(false)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Переменная &amp;quot;button&amp;quot; передается обработчиком события и содержит строку с именем этой кнопки (к примеру &amp;quot;left&amp;quot; или &amp;quot;right&amp;quot;). Здесь мы познакомились с новой концепцией пользовательских событий. Пользовательские события могут генерироваться как на одной стороне, так и на разных (с сервера на клиент и наоборот). Мы используем функцию [[triggerServerEvent]], чтобы сгенерировать событие &amp;quot;SubmitLogin&amp;quot; на сервере.&lt;br /&gt;
&lt;br /&gt;
Теперь у нас есть весь необходимый клиентский код. На сервере, как вы помните, мы спавним игрока как только он подключается к серверу: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function joinHandler()&lt;br /&gt;
	local x,y,z&lt;br /&gt;
	x = 1959.55&lt;br /&gt;
	y = -1714.46&lt;br /&gt;
	z = 10&lt;br /&gt;
	spawnPlayer(source, x, y, z)&lt;br /&gt;
	fadeCamera(source, true)&lt;br /&gt;
	outputChatBox(&amp;quot;Welcome to My Server&amp;quot;, source)&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onPlayerJoin&amp;quot;, getRootElement(), joinHandler)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Так как теперь мы должны спавнить игрока после нажатия на кнопку, нам нужно заменить событие &amp;quot;onPlayerJoin&amp;quot; пользовательским событием, генерируемым клиентом. Замените приведенный выше код следующим образом:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function joinHandler(username, password)&lt;br /&gt;
	local x,y,z&lt;br /&gt;
	x = 1959.55&lt;br /&gt;
	y = -1714.46&lt;br /&gt;
	z = 10&lt;br /&gt;
        if (client) then&lt;br /&gt;
	      spawnPlayer(client, x, y, z)&lt;br /&gt;
	      fadeCamera(client, true)&lt;br /&gt;
	      outputChatBox(&amp;quot;Welcome to My Server&amp;quot;, client)&lt;br /&gt;
        end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
addEvent(&amp;quot;SubmitLogin&amp;quot;, true)&lt;br /&gt;
addEventHandler(&amp;quot;SubmitLogin&amp;quot;, getRootElement(), joinHandler)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Обратите внимание на второй параметр функции [[addEvent]] (имеющий значение &amp;quot;true&amp;quot;), он указывает, что событие может быть сгенерировано другой стороной. так же заметьте, что &amp;quot;client&amp;quot; - внутренняя переменная, используемая MTA для идентификации игрока, сгенерировавшего событие. &lt;br /&gt;
&lt;br /&gt;
И, наконец, не забудьте добавить файл gui.lua в meta.xml основного ресурса и пометть его как клиентский:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;quot;client/gui.lua&amp;quot; type=&amp;quot;client&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь у нас есть минимальное окно авторизации, спавнящее игрока при нажатии кнопки &amp;quot;login&amp;quot;. Вы также можете использовать логин и пароль, передаваемые функцией [[triggerServerEvent]] для идентификации пользователя.&lt;br /&gt;
&lt;br /&gt;
[[en:Introduction_to_Scripting_GUI]]&lt;br /&gt;
[[it:Introduzione_allo_scripting_della_GUI]]&lt;/div&gt;</summary>
		<author><name>BloodStason</name></author>
	</entry>
</feed>