📘

【完全解説】2025年4月版|ox_inventory(2.41.0)のitem修正方法(QB-Core)#4

に公開

【完全解説】2025年4月版|ox_inventory(2.41.0)のitem修正方法(QB-Core)#4

前回の記事はこちら


はじめに

ox_inventory 2.41.0では、アイテムの使い方や定義方法が以前のバージョン(2.38.0など)と変わっています。
特に「アイテムを使っても何も起きない」「エラーが出る」といったトラブルが多発しています。

これは、QB-Coreとox_inventoryの連携部分の仕様が変わったことが主な原因かと思われます。


症状例

  • アイテムを使っても何も反応しない
  • サーバー起動時にエラーが出る
  • 以前のitem.luaがそのままでは動かない

原因

私個人の見解ですのであっているかはわかりません。
ox_inventory 2.41.0では、
ox_inventory/modules/bridge/qb/server.lua 内の
server.UseItem関数の仕様が変わっています。

以前のバージョンでは、
QBCore.Functions.CanUseItem(itemName) の戻り値(関数)をそのまま呼び出していましたが、
2.41.0ではテーブル形式でfuncプロパティを持つ場合があるため、
そのままでは動作しないケースがあります。


修正方法

1. ファイルを開く

ox_inventory/modules/bridge/qb/server.lua をテキストエディタなどで開きます。


2. server.UseItem関数を書き換える(99行目)

元々のコード

server.lua
function server.UseItem(source, itemName, data)
    local cb = QBCore.Functions.CanUseItem(itemName)
    return cb and cb(source, data)
end 

下記のように修正してください。

server.lua
function server.UseItem(source, itemName, data)
    local itemData = QBCore.Functions.CanUseItem(itemName)
    if type(itemData) == "table" and itemData.func then
        itemData.func(source, data)
    end
end 

3. サーバーを再起動


解説

  • 2.41.0では、CanUseItemの戻り値がテーブルで、funcプロパティを持つ場合があります。
  • そのため、itemData.funcを呼び出すように修正する必要があります。
  • これにより、アイテム使用時の処理が正しく動作するようになります。

まとめ

ox_inventory 2.41.0で「アイテムが使えない」「以前のitem定義が動かない」場合は、
本記事の修正を行うことで解決できます。


次回予告

ネタ切れしてしまったので今のところ予定はありませんが、引き続き解説を書いていくつもりではあります。


参考資料

Discussion