Resource-manifest
Манифест ресурса
Манифест ресурса представляет собой файл с именем (или ранее ), помещенный в папку ресурсов на сервере.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.
Заметка
Эта директива поддерживает 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