Переход с Pawno на Lua. Часть 2 — ресурсы. В МТА вместо gamemode и fliterscripts используются resources. Можно сказать, что каждый ресурс — это отдельный gamemode. В ресурсах и есть одно из главных преимуществ МТА, над SAMP, это увеличивает расширяемость мода. Например, откройте мод Sweetie Role Play версии 1.1 или выше, дак там весь мод раскидан по отдельным ресурсам, новая система — новый ресурс.
Но, давайте разберемся на примере что же такое ресурс в МТА.
Откройте папку, куда установилось ваше МТА (у меня, например, эта папка находится в D:\Games (x86)\MTA San Andreas).
Еще хочу сразу сказать: давайте разделим понятия ресурс и скрипт. Пусть скрипт — это будет сама выполняемая часть (проще говоря — код), а ресурс — это все файлы скрипта, ну как то так, надеюсь вы меня поняли;)
Далее переходим в папку server, потом mods, затем deathmatch, и, наконец, resources.
Здесь вы видите кучу папок и архивов. Те, кто пользуется редактором карт МТА, наверное, уже знакомы с этой папкой. Откроем папку admin (если у вас её нету, то просто распакуйте архив admin, который можно скачать по ссылке, данной ниже).
В этом ресурсе мы видим несколько файлов и папок.
Сейчас нам пригодится только meta.xml
Это файл, который группирует все части ресурса, как бы настраивает и загружает его.
Давайте откроем meta.xml (Прав. Кнопкой мыши по нему и дальше — изменить).
Разберем что в нем написано.
<info – информация о ресурсе.
<!-- - комментарии, --> - закрытие комментариев
Code
<script src="server/admin_serverjoiner.lua" />
- информация о том, что файл admin_serverjoiner.lua, который находится в папке server (этого ресурса), используется в этом ресурсе, и его надо загрузить.
У некоторых <script> есть еще и type="client" или type="server". Это означает, что скрипт относится к клиентской части или к серверной (о клиентском и серверном коде поговорим потом). Вообще, на wiki МТА достаточно подробно описано строение файла meta.xml, поэтому подробнее не будем углубляться.
Еще в этом уроке я хочу остановиться на одной интересной фиче, без которой вся эта чехарда с отдельными ресурсами не имела бы смысла. Вы можете вызывать функции одного ресурса из разных ресурсов. Для этого используется одна из этих функций:
Code
call ( getResourceFromName ( "имя ресурса" ), "функция", аргументы )
exports.имяресурса:функция ( аргументы )
(сами выбирайте какая вам больше понравится, я обычно использую вторую). Для того, что бы можно было использовать эти функции, надо в файле meta.xml того ресурса, функция которого используется, добавить вот это:
Code
<export function="функция"/>
Смотрите пример:
Ресурс houses, файл meta.xml:
Code
<meta>
<info author="PrettySweetie" name="House System" version="1.3"/>
<script src="house_main.lua"/>
<script src="house_commands.lua"/>
<script src="house_client.lua" type="client"/>
<export function="getHouse"/>
<export function="getMaxHouses"/>
<export function="enterHouse"/>
<export function="toHouse"/>
</meta>
Файл скрипта:
Code
function getHouse ( house )
return housepickup[house]
end
Теперь из ресурса admin воспользуемся такой функцией:
exports.houses:getHouse ( 1 )
И в ответ получим результат этой функции, выполненной в ресурсе houses.
Вот и все, но, если хотите укрепить свои знания, полученные во время прочтения этого урока, попробуйте понять, что же написано вот в этом xml файле и отошлите мне ответ в лс:
Code
<meta>
<info author="PrettySweetie" name="Server" type="gamemode" version="1.3"/>
<script src="script.lua" />
<script src="chat_system.lua" />
<script src="phone_system.lua" />
<script src="client/main.lua" type="client" />
<include resource="buildings" />
<include resource="busineses" />
<include resource="cars" />
<include resource="factions" />
<include resource="houses" />
<file src="ServerProp.xml" type="server" />
<export function="playerToPoint"/>
<export function="sendClientActionMessage"/>
<map src="sweetiemap/sweetiemap.map" />
</meta>
Ссылки:
admin.zip - http://www.onlinedisk.ru/file/645188/
meta.xml на wiki - http://wiki.multitheftauto.com/wiki/RU/Meta.xml
Все о ресурсах на wiki - http://wiki.multitheftauto.com/wiki/RU/Resources
Описание использования и настройки всех стандартных ресурсов - http://wiki.multitheftauto.com/wiki/Category:RU/Resource
P.S. Этот, и все остальные мои уроки написанны так, как я понимаю Lua и как мне удобно в нем работать