Как добавить предметы на QBCore: items.lua, изображения, CreateUseableItem

Добавьте пользовательский предмет в QBCore: запись qb-core/shared/items.lua и её поля, изображение в qb-inventory, выдачу и сделайте его используемым с CreateUseableItem.

Вы добавили предмет на ваш QBCore сервер, и он либо не существует в игре, либо не имеет значка, либо ничего не делает при использовании. Вот полный путь: запись предмета, изображение, выдача и сделайте его используемым.

1. Запись предмета

Откройте qb-core/shared/items.lua. Предметы — это записи в таблице QBShared.Items, ключом которых является имя. Добавьте свой, с запятой после предыдущей записи:

lua
['burger'] = {
    ['name'] = 'burger',
    ['label'] = 'Burger',
    ['weight'] = 220,
    ['type'] = 'item',
    ['image'] = 'burger.png',
    ['unique'] = false,
    ['useable'] = true,
    ['shouldClose'] = true,
    ['description'] = 'A warm burger.',
},

Что делает каждое поле:

Поле Значение
name Имя предмета; должно совпадать с ключом, нижний регистр, без пробелов
label Имя, показываемое игрокам
weight Вес одного предмета
type item для обычных предметов, weapon для оружия
image Имя файла значка, включая расширение
unique true, если каждая копия имеет свой слот (может иметь данные)
useable true, если игроки могут его использовать
shouldClose true закрывает инвентарь при использовании
description Текст под меткой

Скопируйте соседний предмет в тот же файл, если не уверены: файл показывает ровно те поля, которые ожидает ваша версия.

Внимание: одна отсутствующая запятая или скобка в items.lua останавливает загрузку qb-core, и вместе с ним каждый скрипт, который на него полагается. Если все разломалось после редактирования, сначала посмотрите на вашу последнюю запись.

2. Изображение

Поместите .png с именем из поля image в папку изображений инвентаря:

text
qb-inventory/html/images/burger.png

Папка одинакова, независимо от того, является ли предмет едой, инструментом или документом. С другим ресурсом инвентаря используйте вместо этого его собственную папку изображений. Отсутствующий файл показывает пустой значок, и имя должно точно совпадать с полем image, включая расширение.

3. Перезагрузка и тестирование

items.lua читается qb-core при его запуске. В консоли сервера:

text
restart qb-core

Перезагрузка qb-core, пока игроки находятся в сети, может отключить или разбить скрипты, которые на него полагаются, поэтому на живом сервере делайте это в тихое время или перезагружайте весь сервер. Затем выдайте себе предмет с помощью команды администратора:

text
/giveitem <player id> burger 1

Из скрипта, на стороне сервера:

lua
local QBCore = exports['qb-core']:GetCoreObject()

local Player = QBCore.Functions.GetPlayer(source)
if Player then
    Player.Functions.AddItem('burger', 1)
end

Если QBCore равен nil здесь, прочитайте attempt to index a nil value (global 'QBCore').

4. Сделайте это используемым

Установка useable = true только позволяет использование. Вы также должны сказать, что происходит, на сервере:

lua
local QBCore = exports['qb-core']:GetCoreObject()

QBCore.Functions.CreateUseableItem('burger', function(source, item)
    local Player = QBCore.Functions.GetPlayer(source)
    if not Player then return end

    if Player.Functions.RemoveItem('burger', 1) then
        TriggerClientEvent('QBCore:Notify', source, 'You ate the burger', 'success')
        -- your effect here: heal, hunger, an animation event
    end
end)

Обратный вызов получает id игрока и данные предмета. Удалите предмет сами, если использование должно его потребить, как выше.

Если перезагрузка вашего скрипта делает предмет не работающим, помните, что регистрация происходит при запуске скрипта. Перезагрузите скрипт, который содержит CreateUseableItem, а не только qb-inventory.

Предметы, которые несут данные

Для предметов, которые содержат информацию, такие как записка с текстом или билет с кодом, установите unique на true. Каждая копия может затем хранить свои собственные данные в таблице info, которую вы даете при добавлении предмета:

lua
Player.Functions.AddItem('ticket', 1, false, { code = 'A12' })

Распространенные проблемы

  • Несовпадение имени предмета. Ключ, поле name, имя изображения и имя, которое вы передаете AddItem, должны быть одним и тем же словом.
  • Предмет добавлен в другой файл. Некоторые скрипты просят вас добавить их предметы в копию списка внутри скрипта. Проверьте его инструкции по установке и добавляйте предметы в qb-core/shared/items.lua, если не сказано иное.
  • Старый инвентарь. Более старые версии qb-inventory сохраняют отдельную копию некоторых данных предмета в своей собственной папке. Если предмет показывает неправильную метку, проверьте, что ничего больше это не определяет.

На QBox

QBox использует ox_inventory вместо qb-inventory, и его предметы находятся в ox_inventory/data/items.lua. Формат отличается, и также отличаются вызовы используемых предметов. Следуйте добавлению предметов в ox_inventory.

Добавить предметы без редактирования файлов

Изменение items.lua и перезагрузка ядра для каждого нового предмета — это медленная часть. Item Creator позволяет вам создавать предметы в игре вместо этого.

Item Creator V2Создавайте используемые предметы с анимациями, пропами, эффектами и не только — без кода.от 18,15 €Открыть скрипт →

Контрольный список

Симптом Исправление
Предмет не найден Добавьте его в qb-core/shared/items.lua и restart qb-core
Все разломалось после редактирования Ошибка синтаксиса в items.lua; проверьте запятые и скобки
Пустой значок Добавьте burger.png в qb-inventory/html/images, совпадая с полем image
Предмет ничего не делает Установите useable = true и зарегистрируйте QBCore.Functions.CreateUseableItem
Имя не совпадает Используйте одно одинаковое имя в ключе, name, изображении и коде
QBox сервер Используйте data/items.lua ox_inventory вместо этого

Короткие ответы

Где определяются предметы в QBCore?

В qb-core/shared/items.lua. Каждый предмет — это таблица внутри QBShared.Items, ключом которой является его имя, и значок — это .png с тем же именем в папке изображений инвентаря.

Использует ли QBox qb-core/shared/items.lua?

Нет. QBox использует ox_inventory, где предметы находятся в ox_inventory/data/items.lua. Смотрите руководство ox_inventory, указанное в этой статье.

Почему мой предмет не используемый?

Либо useable имеет значение false в записи предмета, либо никакой код не зарегистрировал его. Установите useable = true и зарегистрируйте его с помощью QBCore.Functions.CreateUseableItem на сервере.

Скрипты без этой проблемы

Item Creator V2Создавайте используемые предметы с анимациями, пропами, эффектами и не только — без кода.Смотреть скрипт →Shop CreatorМагазин меньше чем за минуту — владельцы, сотрудники, сейфы и ограбления в комплекте.Смотреть скрипт →

Читайте также

QBCoreQBoxLuaQBCore используемые предметы: CreateUseableItem, AddItem и RemoveItemСделайте предмет используемым на QBCore с CreateUseableItem, выдавайте и удаляйте его с помощью Player.Functions.AddItem и RemoveItem, покажите поле предмета и что изменяется на QBox.1 октября 2026 г. · 2 мин чтенияЧитать →ox_libESXQBoxКак добавлять элементы в ox_inventory: items.lua, изображения и используемые элементыДобавьте пользовательский элемент в ox_inventory: запись data/items.lua, изображение в web/images, предоставление его с AddItem и делание его используемым с экспортом клиента.1 октября 2026 г. · 3 мин чтенияЧитать →ox_libESXQBoxМетаданные элементов ox_inventory: AddItem, Search, SetMetadata и уникальные элементыИспользуйте метаданные в ox_inventory: добавляйте элементы с данными, ищите и читайте слоты, обновляйте с помощью SetMetadata, показывайте пользовательскую метку и описание, и создавайте уникальные элементы, такие как ID и ключи.1 октября 2026 г. · 3 мин чтенияЧитать →