📘
【完全解説】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