escrow_ignore в fxmanifest: держите config.lua и локали открытыми
Для продавцов скриптов: как escrow_ignore держит config.lua и файлы локали читаемыми, что остается открытым, как загрузить на портал Cfx.re и протестировать экранированную сборку.
Вы продаете скрипты, и покупатели должны изменить конфиг, файл локали или адаптер фреймворка без изменения вашего основного кода. Escrow системе Cfx.re по умолчанию шифрует Lua, поэтому файлы, которые покупатели должны редактировать, должны быть помечены как открытые. Это то, что делает escrow_ignore, и это руководство охватывает его использование и тестирование результата.
Что escrow шифрует
Когда вы загружаете ресурс в систему escrow, ваши клиентские и серверные Lua скрипты шифруются. Покупатели их запускают, но не могут читать. Файлы, которые не являются кодом Lua, такие как NUI страницы, изображения, аудио, модели и ассеты stream/, доставляются как есть.
Все, что покупатель должен настроить, должно остаться читаемым. Если вы зашифруете config.lua, никто не сможет изменить ваши цены или ключи. Поэтому вы просите escrow его пропустить.
Синтаксис escrow_ignore
В fxmanifest.lua:
fx_version 'cerulean'
game 'gta5'
shared_script 'config.lua'
client_script 'client/main.lua'
server_script 'server/main.lua'
escrow_ignore {
'config.lua',
'locales/*.lua',
'bridge/*.lua',
}Пути относятся к папке ресурса, и * работает как подстановочный знак, поэтому locales/*.lua оставляет открытым каждый файл Lua в locales/. Вы также можете перечислить отдельные файлы.
Что остается читаемым
Будьте обдуманны в отношении того, что вы открываете. Хорошие кандидаты:
config.lua: цены, работы, имена предметов, привязки клавиш, переключатели функций.- Файлы локали: чтобы покупатели могли переводить. Смотрите переводимые скрипты.
- Файлы адаптера фреймворка: небольшие адаптеры для ESX, QBCore и QBox, чтобы покупатели могли подключить свой собственный фреймворк или пользовательский инвентарь.
- Клиентские хуки для других скриптов, например файл, который вызывает уведомление или полицейское оповещение.
Держите закрытым все, что является сердцем продукта: логика, валидация, все, что принимает решения о деньгах или предметах. Помните, что открытые файлы также открыты для копирования: покупатель может вставить ваш конфиг или адаптер в чужой ресурс, поэтому не помещайте в них ценную логику.
Совет: каждый открытый файл — это обуза поддержки. Покупатель, который его плохо отредактирует, напишет вам об этом, поэтому держите открытые файлы маленькими и хорошо комментированными.
Загрузка на портал Cfx.re
Escrow работает через вашу учетную запись Cfx.re:
- Подготовьте папку ресурса с валидным
fxmanifest.lua(не старым__resource.lua; смотрите fxmanifest vs resource.lua). - На портале Cfx.re откройте раздел ассетов и загрузите ресурс как escrow ассет. Портал шифрует файлы, которых нет в
escrow_ignore, и держит остальные читаемыми. - Свяжите ассет с вашим магазином, чтобы покупатель получил доступ после покупки. Смотрите продажа FiveM скриптов для стороны магазина.
Меню портала меняются со временем, поэтому следите за текущей документацией Cfx.re для точных шагов загрузки и ограничений.
Протестируйте экранированную сборку
Никогда не поставляйте то, что вы тестировали только в папке разработки. После загрузки:
- Загрузите обратно экранированную версию с портала, так же, как ее получит покупатель.
- Поместите ее на чистый тестовый сервер со своим ключом лицензии, привязанным к учетной записи, которая владеет ассетом.
- Запустите его и пройдите поток: открытые файлы загружаются, изменения конфига применяются, события клиента и сервера срабатывают.
- Измените значение в
config.luaи перезагрузитесь, чтобы подтвердить, что открытый файл действительно выбирается. - Протестируйте на втором фреймворке, если вы поддерживаете более одного.
Если ресурс не запускается с сообщением об уполномочивании, тестовый сервер не использует ключ учетной записи, которая владеет ассетом. Escrow lack entitlement перечисляет причины.
Зависимости от открытых файлов
Когда некоторые файлы открыты, а остальные зашифрованы, они все еще делят ресурс и должны работать вместе:
- Открытые файлы могут использовать глобали и функции, которые они объявляют, как обычно. Держите
config.lua, который только определяет таблицуConfig, и зашифрованный код читаетConfig. - Порядок загрузки — это порядок манифеста. Конфиг должен идти перед кодом, который его читает, поэтому список его как
shared_scriptпервым, как выше. - Используйте exports для общения между вашим кодом и собственным ресурсом покупателя, а не полагайтесь на общие глобали. Exports стабильны и документированы; смотрите exports в Lua.
- Объявляйте зависимости (
dependency 'ox_lib') в манифесте, чтобы отсутствующая библиотека дала четкую ошибку, а не nil.
Не открывайте файл, который работает только вместе с зашифрованным файлом, который вы также изменили в том же выпуске. Покупатели, которые отредактировали открытый, должны будут слить вручную.
Общие проблемы
- Новый файл добавлен, но все еще зашифрован: он не совпадает с
escrow_ignore. Проверьте путь и подстановочный знак. - Покупатели говорят, что конфиг нечитаем: файл был зашифрован при загрузке. Исправьте манифест и загрузите снова.
- Работает для вас, не для покупателя: вы тестировали открытую копию разработки; протестируйте загруженную сборку escrow.
Контрольный список
| Симптом | Исправление |
|---|---|
Покупатели не могут редактировать config.lua |
Добавьте его в escrow_ignore { } и загрузите снова |
| Новый файл локали все еще зашифрован | Используйте подстановочный знак, такой как locales/*.lua |
| Экранированная сборка ведет себя по-другому | Протестируйте загруженную версию, не копию разработки |
| Значения конфига не читаются | Перечислите конфиг как shared_script перед кодом |
| Ошибка уполномочивания при тестировании | Используйте ключ учетной записи, которая владеет ассетом |
| Ценная логика открыта | Переместите ее из открытых файлов в зашифрованное ядро |
Короткие ответы
Что делает escrow_ignore?
Он перечисляет файлы в вашем fxmanifest.lua, которые система Cfx.re asset escrow должна оставить незашифрованными, чтобы покупатели могли их читать и редактировать. Типичные примеры — config.lua и файлы локали.
Могут ли покупатели редактировать файл, для которого escrow_ignored?
Да, он доставляется как обычный текст, ровно таким, как вы его загрузили. Все, что вы оставляете открытым, может быть также скопировано и изменено кем-либо, кто купит скрипт.
Нужно ли мне протестировать экранированную версию?
Да. Шифрование может изменить поведение, например, когда открытые и зашифрованные файлы вызывают друг друга. Запустите сборку, которую вы загрузили обратно с портала, а не только вашу копию разработки.
Скрипты без этой проблемы
Tebex TemplateПремиальная тема для вашего магазина Tebex без кода, полностью настраиваемая из панели Tebex.Смотреть скрипт →
Item Creator V2Создавайте используемые предметы с анимациями, пропами, эффектами и не только — без кода.Смотреть скрипт →
Shop CreatorМагазин меньше чем за минуту — владельцы, сотрудники, сейфы и ограбления в комплекте.Смотреть скрипт →