Resource-manifest

From FiveM Wikipedia

Манифест ресурса

Манифест ресурса представляет собой файл с именем (или ранее ), помещенный в папку ресурсов на сервере.fxmanifest.lua__resource.lua

Это Lua-файл, выполняемый в отдельной среде выполнения от любых сценариев Lua в ресурсе, настроенный с полудекларативным синтаксисом, который будет использоваться для определения метаданных.

Пример

Пример манифеста ресурса для гипотетического ресурса выглядит следующим образом:

-- Resource Metadata
fx_version 'cerulean'
games { 'rdr3', 'gta5' }

author 'John Doe <j.doe@example.com>'
description 'Example resource'
version '1.0.0'

-- What to run
client_scripts {
    'client.lua',
    'client_two.lua'
}
server_script 'server.lua'

-- Extra data can be used as well
my_data 'one' { two = 42 }
my_data 'three' { four = 69 }

-- due to Lua syntax, the following works too:
my_data('nine')({ninety = "nein"})

-- metadata keys can be arbitrary
pizza_topping 'pineapple'

Внутренне при этом создаются следующие записи метаданных:

  • fx_version: церулеан
  • игра: gta5
  • игра: rdr3
  • автор: Джон Доу <[[1]]>
  • описание: Пример ресурса
  • версия: 1.0.0
  • client_script: клиент.lua
  • client_script: client_two.lua (обратите внимание на расширение таблицы)s
  • server_script: сервер.lua
  • my_data: один
  • my_data: три
  • my_data: девять
  • my_data_extra: (как JSON){"two":42}
  • my_data_extra: {"four":69}
  • my_data_extra: {"ninety":"nein"}
  • pizza_topping: ананас

Эти метаданные также можно получить из сценариев с помощью методов GetNumResourceMetadata и GetResourceMetadata.

Глоббинг

Некоторые типы записей могут поддерживать 'globbing' для нескольких файлов. Они принимают синтаксис шаблона следующим образом:

Пример Спички
*.lua a.lua, (нерекурсивно)b.lua
dir/*.dll dir/a.dll, (нерекурсивно)b.dll
**/*.lua dir1/a.lua, , dir2/b.luadir1/dir2/f.lua
**.lua то же самое, что и выше
**/cl_*.lua dir1/cl_hi.luaи так далее.

Поддержка globbing указана под каждым типом записи.

Записи манифеста ресурса

Ниже приведен список встроенных записей манифеста ресурса. Ресурс также может содержать пользовательские записи метаданных, которые могут быть полезны для скрипта.

fx_version

Определяет поддерживаемые функциональные возможности ресурса. Это должно быть одно из определенного набора слов. Каждая запись наследует свойства от предыдущей. Текущая версия ресурса FXv2 является cerulean.

игра

Определяет поддерживаемые наборы API игр для ресурса.

Имя Значение
общий Работает в любой игре, но не может получить доступ к API для конкретной игры - только к API CitizenFX.
gta4 Работает на LibertyM.
gta5 Работает на FiveM.
рдр3 Работает на RedM.

resource_manifest_version

Устаревшие

Вы должны использовать и вместо этого. fxmanifest.luafx_version Определяет поддерживаемые функциональные возможности ресурса. Это должен быть один из определенного набора идентификаторов GUID. Каждый идентификатор GUID наследует свойства от предыдущего. Текущая версия манифеста ресурса: 44febabe-d386-4d18-afbe-5e627f4af937.

client_script

Заметка

Эта директива поддерживает globbing. Определяет сценарий, загружаемый на клиент, и неявно добавляет файл в файл пакета ресурсов. Расширение определяет, какой загрузчик скриптов будет обрабатывать файл:

Расширение Обработчик файлов Значение
..lua citizen:scripting:lua Исходный код Lua
.net.dll citizen:scripting:mono Сборка .NET, ссылающаяся на CitizenFX.Core.Client
..js citizen:scripting:v8 Исходный код JavaScript (только для клиента)

server_script

Заметка

Эта директива поддерживает globbing. Ссылка на CitizenFX.Core.Server для сборки .NET. Определяет сценарий, загружаемый на сервер. Расширение определяет, какой загрузчик скриптов будет обрабатывать файл, как в случае с client_script.

shared_script

Заметка

Эта директива поддерживает globbing. Определяет сценарий, загружаемый с обеих сторон, и добавляет файл в файл пакета ресурсов. Расширение определяет, какой загрузчик скриптов будет обрабатывать файл, как в случае с client_script.

экспорт

Определяет глобальную функцию, экспортируемую клиентским сценарием для Lua/JS. В Lua это будет экспортироваться как ._G[exportName]exportName

Вместо того, чтобы использовать это, попробуйте использовать функции or.exports('name', ..)Exports.Add

Определение экспорта

Луа
exports {
    'setWidget',
    'getWidget'
}

local lastWidget

function setWidget(widget)
    lastWidget = widget
end

function getWidget()
    return lastWidget
end

Потребление экспорта

Луа
exports.myresource:setWidget(50)

C #
int widget = Exports["myresource"].getWidget();

server_export

Определяет глобальную функцию, экспортируемую серверным сценарием.

ui_page

Задает на странице NUI ресурса определенный файл или URL-адрес. При указании файла на файл (вместе с его зависимостями) необходимо ссылаться с помощью файлов.

ui_page 'html/index.html'
file 'html/index.html'

-- this also supports absolute URLs
ui_page 'https://ui-frontend.cfx.example.com/b20210501/index.html'

before_level_meta

Загружает указанный уровень meta в ресурс перед метаданным основного уровня.

Устаревшие

Везде, где это возможно, вы должны использовать файлы данных.

after_level_meta

Загружает указанный уровень meta в ресурс после meta основного уровня.

Устаревшие

Везде, где это возможно, вы должны использовать файлы данных.

replace_level_meta

Заменяет уровень meta (обычно ) указанным файлом в ресурсе. На это необходимо ссылаться с помощью файлов.common:/data/levels/gta5/gta5.meta

replace_level_meta 'mymap'
files {
    'mymap.meta'
}

data_file

Заметка

Эта директива поддерживает globbing в поле filename. Добавляет файл данных заданного типа в систему дополнительного контента игры.

files {
    'audio/mywaves/stupidcar.awc',
    'myvehicles.meta',
    'metas/*_handling.meta',
}

data_file 'AUDIO_WAVEPACK' 'audio/mywaves'
data_file 'VEHICLE_METADATA_FILE' 'myvehicles.meta'
data_file 'HANDLING_FILE' 'metas/*_handling.meta'

this_is_a_map

Помечает этот ресурс как карту GTA и перезагружает хранилище карты при загрузке ресурса.

this_is_a_map 'yes' -- can be any value

server_only

Marks the resource as being server-only. This stops clients from downloading anything of this resource.

server_only 'yes' -- can be any value

loadscreen

Sets the HTML file specified as the game loading screen.

loadscreen 'html/loadscreen.html'
file 'html/loadscreen.html'

file

Adds the specified file to the resource packfile, to be downloaded by clients upon loading the resource.

file 'main.net.dll.mdb'

dependency

Requires the specified resource to load before the current resource.

dependency 'myresource-base'

dependencies {
    'myresource-base',
    'utility-resource'
}

Runtime constraints

The field can also be used to specify requirements for the resource to run, such as a minimum server version, a server policy value, or a game build. These are specified using the following syntax:dependency

dependencies {
    '/server:4500',                -- requires at least server build 4500
    '/policy:subdir_file_mapping', -- requires the server key to have 'subdir_file_mapping' granted
    '/onesync',                    -- requires state awareness to be enabled
    '/gameBuild:h4',               -- requires at least game build 2189
    '/native:0xE27C97A0',          -- requires native 0xE27C97A0 to be supported
}

The valid constraint types are as follows:

Type Requirement Values
server A minimum server version (build >= [arg]) Any number.
policy A specific policy being granted. subdir_file_mapping ('clothing support'), others
onesync State awareness not being disabled. No value.
gameBuild Game build being set to at least this build. The same values as sv_enforceGameBuild.
native The specified native being supported on the server. Any server-side native hash.

lua54

Enables Lua 5.4. You can read more about Lua 5.4 at http://www.lua.org/manual/5.4/manual.html

lua54 'yes'

provide

Marks the current resource as a replacement for the specified resource. This means it'll start instead of the specified resource, if another resource requires it, and will act as if it is said resource if started.

provide 'mysql-async'

clr_disable_task_scheduler

When present, disables the custom C# task scheduler on the server. This will increase compatibility with third-party libraries using the .NET TPL, but make it more likely you'll have to to end up back on the main thread.await Delay(0);

This is already enabled by default if using of or higher.fx_versionbodacious

clr_disable_task_scheduler 'yes'

FXv2 versions

The resource manifest has to specify a particular FXv2 version for the resource to adhere to. A list of version names and features they are associated with is shown on this page.

Each manifest version includes all features from manifest versions above, except where they would overrule one another, in which case the latest version is used.

FX version (2020-05)cerulean

  • Loads NUI resources in a 'secure context' to support WASM and fetch APIs, but requires callbacks to be changed to instead of .https://http://

FX version (2020-02)bodacious

  • Implies being specified for server library compatibility.clr_disable_task_scheduler
  • Does not define in JS contexts for library compatibility.window

FX версия (2019-12)adamant

  • Эквивалент 44febabe-d386-4d18-afbe-5e627f4af937 в FXv1.
  • Требует указания a и является обязательным для RedM.game

Версии манифеста

В манифесте ресурса должна быть указана конкретная версия ресурса, которой он должен придерживаться. На этой странице отображается список идентификаторов GUID версий и функций, с которыми они связаны.

Каждая версия манифеста включает в себя все функции из вышеуказанных версий манифеста, за исключением случаев, когда они отменяют друг друга, и в этом случае используется последняя версия.

Нет версии манифеста

По умолчанию версия манифеста не используется, что эквивалентно идентификатору GUID манифеста. Он (вместе с пустым идентификатором GUID) будет удален в будущих выпусках FXServer, и для указания версии манифеста потребуются ресурсы.00000000-0000-0000-0000-000000000000

Версия манифеста 00000000-0000-0000-0000-0000000000000000 (без даты)

  • Файл natives.lua будет использоваться для Lua на стороне клиента.natives_21e43a33.lua

Манифест версии 77731fab-63ca-442c-a67b-abc70f28dfa5 (2016-12)

  • Без изменений. Это минимальный рабочий уровень для FXServer.

Версия манифеста F15e72ec-3972-4fe4-9c7d-afc5394ae207 (2017-04-08)

  • Файл natives.lua будет использоваться для Lua на стороне клиента. Это состояние NativeDB в начале апреля 2017 года.natives_0193d0af.lua

Версия манифеста 44febabe-d386-4d18-afbe-5e627f4af937 (2017-06-07)

  • Файл natives.lua будет использоваться для Lua на стороне клиента. Это универсальный файл natives.lua, на который можно переключиться без необходимости изменять скрипты. Он также представляет собой более свежий (2017-06-05) снимок NativeDB.natives_universal.lua

Манифест версии 05cfa83c-a124-4cfa-a768-c24a5811d8f9 (2017-06-04)

  • Скрипты теперь будут зарегистрированы как скрипт игровой сети. Это необходимо для сетевых сущностей.
  • CREATE_VEHICLE и аналогичные функции ведут себя по-разному при передаче в качестве флагов сетевых объектов.true, true

Справочник по сценариям