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:
+14
-6
@@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user