fix: weggegebene Ausruestung beendet den Tauchgang

Gleiche Bug-Klasse wie bei der Flasche, nur hatte mein Fix davor ausschliesslich
die Flasche geprueft: wer diving_gear im Tauchgang weggab, blieb ausgeruestet
und atmete weiter.

Die Besitzpruefung deckt jetzt beides ab. verifyTank heisst verifyGear und gibt
{ gear, tank } zurueck - fehlt eines von beidem, kommt die Ausruestung ab, mit
der passenden Meldung. Umsortieren im Inventar bindet weiterhin nur auf den
neuen Slot um.

Die Item-Namen stehen jetzt als gearItem/fillItem in config/shared.lua, statt
verteilt als Zeichenketten im Server-Code.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-11 10:08:00 +02:00
co-authored by Claude Opus 5
parent fcca73bc7a
commit a49e6d0f6a
6 changed files with 38 additions and 16 deletions
+14 -6
View File
@@ -741,27 +741,35 @@ lib.onCache('ped', function(ped)
end
end)
--- Die Flasche kann während des Tauchgangs das Inventar verlassen - weggegeben,
--- abgelegt, vom Admin entfernt. Ohne diese Prüfung hielt der Client nur eine
--- Slot-Nummer, die niemand mehr gegenprüfte, und man konnte unbegrenzt
--- Ausrüstung und Flasche können während des Tauchgangs das Inventar verlassen -
--- weggegeben, abgelegt, vom Admin entfernt. Ohne diese Prüfung hielt der Client
--- nur eine Slot-Nummer, die niemand mehr gegenprüfte, und man konnte unbegrenzt
--- weitertauchen. ox_inventory feuert bei jeder Änderung, also einmal nachfragen.
AddEventHandler('ox_inventory:updateInventory', function()
if not currentGear.enabled or not activeTank then return end
CreateThread(function()
local expected = activeTank
local slot = lib.callback.await('d4rk_divegear:server:verifyTank', 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.
if not currentGear.enabled or activeTank ~= expected then return end
if not slot then
if not result then return end
if not result.gear then
exports.qbx_core:Notify(locale('error.gear_gone'), 'error')
removeGear(true)
return
end
if not result.tank then
exports.qbx_core:Notify(locale('error.tank_gone'), 'error')
removeGear(true)
return
end
activeTank.slot = slot
activeTank.slot = result.tank
end)
end)