fix(client): Absturz im updateInventory-Handler beim Ablegen
attempt to index a nil value (local 'expected') Die Pruefung stand vor dem CreateThread, der Block laeuft aber erst im naechsten Tick - bis dahin war activeTank schon nil. Ausgeloest hat es das Ablegen selbst: removeGear sichert die Restluft, das ist eine Inventar-Aenderung, die feuert updateInventory, und der Thread lief in die abgeraeumte Ausruestung. Die Pruefung wiederholt sich jetzt innerhalb des Threads. Alle uebrigen activeTank-Zugriffe wurden gegengeprueft: entweder ohne Yield hinter ihrer Pruefung oder bereits abgesichert. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -676,6 +676,13 @@ AddEventHandler('ox_inventory:updateInventory', function()
|
|||||||
|
|
||||||
CreateThread(function()
|
CreateThread(function()
|
||||||
local expected = activeTank
|
local expected = activeTank
|
||||||
|
|
||||||
|
-- Der Thread startet erst im nächsten Tick, die Prüfung oben ist also
|
||||||
|
-- schon veraltet. Beim Ablegen passiert genau das: removeGear sichert die
|
||||||
|
-- Restluft, das ist selbst eine Inventar-Änderung, und bis hierher ist
|
||||||
|
-- activeTank längst nil.
|
||||||
|
if not expected or not currentGear.enabled then return end
|
||||||
|
|
||||||
local result = lib.callback.await('d4rk_divegear:server:verifyGear', false, expected.slot, expected.name)
|
local result = lib.callback.await('d4rk_divegear:server:verifyGear', false, expected.slot, expected.name)
|
||||||
|
|
||||||
-- Während des Callbacks kann die Ausrüstung schon abgelegt worden sein.
|
-- Während des Callbacks kann die Ausrüstung schon abgelegt worden sein.
|
||||||
|
|||||||
Reference in New Issue
Block a user