Документация Pulse Phone

Инвентари

Для Pulse Phone 1.4.28 мин чтенияОбновлено

4. Предметы и инвентари

Предметы нужны только на серверах с framework. Файлы лежат в config/items/, а картинки — в config/items/images/.

Что телефон делает сам. При запуске он определяет, какие предметы нужны включённым вами функциям (таблица ниже), а затем:

Ваш инвентарь Что происходит
ESX со стандартным инвентарём Недостающие предметы добавляются в таблицу items ESX. Существующие строки никогда не изменяются. Консоль выводит одну строку с перечнем добавленного. На старом ESX, который не умеет перезагружать предметы, перезапустите сервер один раз. config/items/esx.sql нужен только для добавления вручную.
QBCore с qb-inventory (а также ps-, lj-inventory) Недостающие предметы добавляются в shared items QBCore во время работы сервера. Предмет, который в qb-core уже есть, например его собственный phone, остаётся как есть. Консоль выводит одну строку с перечнем добавленного.
ox_inventory (ESX, Qbox, ox_core) ox_inventory читает предметы только из своего файла. Проверка при запуске перечисляет только недостающие предметы и печатает их записи под блоком, готовые к вставке в ox_inventory/data/items.lua.
Любой другой инвентарь Проверка при запуске называет недостающие предметы. Добавьте их так, как этот инвентарь добавляет предметы (таблица в разделе «Что делать для вашего инвентаря»).

Важно

Картинки никогда не копируются за вас. Проверка при запуске называет каждую недостающую картинку и папку, куда её положить, например copy pulse_magpack.png, pulse_router.png from config/items/images/ into qb-inventory/html/images.

В проверке при запуске есть одна строка Items: [OK], когда все предметы на месте, или [FAIL] с именами недостающих и решением под ней. phone:health выводит её снова после того, как вы что-то исправите.

Предмет Нужен, когда
phone Только с Config.Item.required = true (игроки должны носить телефон) или с уникальными телефонами.
pulse_phone_box Магазин продаёт телефоны в запечатанной коробке. Включено по умолчанию (Config.Store.box).
pulse_magpack, pulse_magpack_max, pulse_cable Аксессуары для зарядки. Включено по умолчанию (Config.Charging).
pulse_router Pulse Home Wi-Fi, роутер, который игроки ставят дома. Включено по умолчанию (config/apps.lua).
pulse_burner Pulse Burner, предоплаченный телефон со своим номером. Включено по умолчанию (config/apps.lua).
pulse_case, pulse_case_clear, pulse_pouch, pulse_protector Защита телефона: чехлы, водонепроницаемая сумочка и защитное стекло. Включено по умолчанию (config/apps.lua).
pulse_buds, pulse_ringlight, pulse_wallet Pulse Buds, Pulse Ring Light и Pulse Card Wallet. Включено по умолчанию (config/apps.lua).
powerbank По желанию. Старый предмет пауэрбанка; работает как Reserve.
pulse_phone_box_<finish> Только с Config.Store.boxPerFinish = true.
radio (или любое имя) Только если вы задали Config.Radio.item (раздел 5, Radio). В ox_inventory и qb-core предмет radio уже есть.

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

Reserve складываются в стопку. У полных аккумуляторов нет метаданных, поэтому до 20 штук занимают один слот. Снятый частично разряженный аккумулятор становится отдельным предметом с зарядом в метаданных (на ox_inventory, qb-inventory и qs-inventory), поэтому ему нужен свободный слот. Без метаданных предметов (standalone, стандартный инвентарь ESX) отслеживается только используемый аккумулятор, по одному на персонажа для каждого размера.

С Config.Item.required = true (или с уникальными телефонами) сервер проверяет предмет телефона через ваш инвентарь и отклоняет запросы к телефону от игрока без него. Потеря предмета завершает звонки этого игрока, включая экстренные, и закрывает телефон.

Передача запечатанной коробки другому игроку. На ox_inventory, qb-inventory и qs-inventory сам предмет коробки хранит купленные модель и расцветку, поэтому тот, кто её откроет, получит именно этот телефон. На всех остальных инвентарях коробка — обычный предмет, а модель и расцветка хранятся в записи о покупке покупателя: подаренная коробка открывается как следующая покупка нового владельца или как модель и расцветка по умолчанию. С Config.Store.boxPerFinish = true имя предмета коробки сохраняет расцветку, но не модель.

Точный текст для вставки под ваш инвентарь

Вам никогда не придётся составлять запись предмета самим. Если предмета нет, проверка при запуске печатает точный текст для вашего инвентаря под своим блоком, а Settings > Server > Health Check показывает тот же текст с кнопкой Copy. Вставьте его, перезапустите инвентарь и телефон и снова выполните phone:health.

Ваш инвентарь Что выводится Куда вставлять
ox_inventory (ESX, Qbox, ox_core, ND Core) Записи ox_inventory ox_inventory/data/items.lua, внутрь его таблицы
QBCore (qb-, ps-, lj-inventory) Записи QBCore (только если телефон не смог добавить их сам) qb-core/shared/items.lua
qs-inventory Записи в формате QBCore Список предметов qs-inventory
Стандартный инвентарь ESX Одна строка SQL (только если телефон не смог добавить их сам) Ваш инструмент для базы данных, затем перезапуск
TMC Записи TMC для каждого предмета, нужного телефону (у TMC нельзя спросить, какие у него есть) Список предметов TMC (файл с sim_card), с сохранением уже имеющихся
Любой другой инвентарь Записи в формате QBCore — формат, который читает большинство инвентарей Список предметов этого инвентаря

Как выглядит каждая запись на примере Reserve:

Lua
-- ox_inventory/data/items.lua
['pulse_magpack'] = { label = "Pulse Reserve", weight = 110, stack = true, close = true, consume = 0, description = "Magnetic battery pack. Fills 70% of a phone.", client = { export = "phone.usePack", image = "pulse_magpack.png" } },

-- qb-core/shared/items.lua, qs-inventory and similar
['pulse_magpack'] = { name = "pulse_magpack", label = "Pulse Reserve", weight = 110, type = 'item', image = "pulse_magpack.png", unique = false, useable = true, shouldClose = true, description = "Magnetic battery pack. Fills 70% of a phone." },

-- TMC
['pulse_magpack'] = { ['label'] = "Pulse Reserve", ['weight'] = 110, ['type'] = 'item', ['image'] = "pulse_magpack.png", ['unique'] = false, ['stackable'] = true, ['useable'] = true, ['shouldClose'] = true, ['description'] = "Magnetic battery pack. Fills 70% of a phone." },
SQL
-- ESX default inventory
INSERT IGNORE INTO `items` (`name`, `label`, `weight`, `rare`, `can_remove`) VALUES
  ('pulse_magpack', 'Pulse Reserve', 1, 0, 1);

Собственный предмет phone в ox_inventory. ox_inventory поставляется с записью phone, сделанной для другого скрипта телефона. Менять её не нужно: при использовании открывается Pulse Phone. В проверке при запуске есть строка Phone item, которая показывает, как подключена ваша запись. Запись на замену печатается, только если строка называет экспорт другого скрипта ([WARN] или [FAIL] при обязательных или уникальных телефонах). Если скрипт телефона, для которого сделана эта запись, всё ещё запущен, предмет открывает его: строка Phone item называет его; уберите его из server.cfg.

Что делать для вашего инвентаря

Инвентарь Куда добавлять предметы Куда класть картинки
ox_inventory (ESX, Qbox, ox_core) Вставьте записи, которые выводит проверка при запуске (или весь ox_inventory.lua), в ox_inventory/data/items.lua, внутрь его таблицы. Оставьте собственную запись ['phone'] в ox_inventory (она открывает Pulse Phone); заменяйте её выведенной, только если строка Phone item сообщает, что она открывает другой скрипт ox_inventory/web/images/
qb-inventory Ничего: добавляется при запуске. Чтобы добавить вручную, вставьте qb-core.lua в qb-core/shared/items.lua qb-inventory/html/images/
ps-inventory, lj-inventory Ничего: добавляется при запуске, как для qb-inventory папка картинок вашего инвентаря
qs-inventory Вставьте qb-core.lua в qb-core/shared/items.lua или в собственный список предметов qs-inventory папка картинок вашего инвентаря
codem-inventory, core_inventory, tgiann-inventory, origen_inventory Добавьте предметы в его список так же, как добавляете любой предмет, используя имена, названия и вес из qb-core.lua (phone, powerbank, pulse_magpack, pulse_magpack_max, pulse_cable, pulse_router, pulse_burner, pulse_buds, pulse_ringlight, pulse_wallet, pulse_phone_box). Используйте pulse_magpack.png также для powerbank и pulse_magpack_max папка картинок вашего инвентаря
ak47_inventory Добавьте предметы и строки onUse ниже папка картинок вашего инвентаря
Стандартный инвентарь ESX Ничего: добавляется при запуске. esx.sql — способ вручную не нужно
vRP 2 См. раздел vRP выше
Standalone Ничего

Для остальных инвентарей в этой таблице телефон сам делает предметы используемыми. ox_inventory использует строки client = { export = 'phone....' }, которые уже есть в его файле.

ox_inventory: если раньше вы использовали другой телефон, также удалите его хук Item('phone', ...) из ox_inventory/modules/items/client.lua.

ak47_inventory хранит использование предмета в собственной записи каждого предмета. Добавьте эти:

Lua
-- powerbank
server = { onUse = function(source) exports.phone:UsePowerbank(source) end },
-- pulse_magpack and pulse_magpack_max
server = { onUse = function(source, item) exports.phone:UseMagPack(source, item and item.slot, item and item.name) end },
-- pulse_cable
server = { onUse = function(source) exports.phone:UseChargingCable(source) end },
-- pulse_phone_box
server = { onUse = function(source, item) exports.phone:UseBox(source, item and item.slot) end },
-- pulse_router
server = { onUse = function(source) exports.phone:UseRouter(source) end },
-- pulse_burner
server = { onUse = function(source, item) exports.phone:UseBurner(source, item and item.slot) end },
-- pulse_case, pulse_case_clear, pulse_pouch, pulse_protector
server = { onUse = function(source, item) exports.phone:FitPhoneProtection(source, item and item.name) end },
-- pulse_buds
server = { onUse = function(source) exports.phone:UseBuds(source) end },
-- pulse_ringlight
server = { onUse = function(source) exports.phone:UseRingLight(source) end },
-- pulse_wallet
server = { onUse = function(source) exports.phone:UseCardWallet(source) end },

Уникальные телефоны (Config.Item.unique = true) хранят номер телефона в предмете, поэтому передача предмета передаёт и телефон. Для них нужен ox_inventory, qb-inventory, qs-inventory, core_inventory или codem-inventory.

Переведено с английского. Если что-то здесь расходится с английской страницей, верна английская страница. English