fix: weggegebene Flasche beendet den Tauchgang + HUD-Feinschliff
Bug: wer die getragene Flasche im Tauchgang weggab, konnte unbegrenzt weiteratmen. Der Client hielt nur eine Slot-Nummer, die niemand mehr gegenpruefte, und der Sync lief ins Leere. ox_inventory feuert clientseitig bei jeder Inventar-Aenderung - dort wird jetzt beim Server nachgefragt. Ist die Flasche weg, kommt die Ausruestung ab; wurde sie nur umsortiert, bindet der Client auf den neuen Slot um, damit Aufraeumen im Inventar nichts kostet. HUD: - Werte aus den Uhren heraus in eine zweite Zeile: Druck, Lampe und Tiefe liegen jetzt auf einer Linie. In der Skala kollidierte die Zahl mit Strichen, Zeiger und rotem Bereich - Skaliert mit der Bildschirmhoehe (entworfen auf 1080p), sonst waere das in festen Pixeln gebaute HUD auf 1440p und 4K deutlich zu klein. config.hudScale kommt als Geschmacksregler obendrauf - Zustandsklassen sitzen jetzt am HUD statt an den Uhren, weil Instrument und Wert in getrennten Grid-Zellen liegen README-Renderings nachgezogen. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -427,6 +427,7 @@ local function startHudThread()
|
||||
|
||||
SendNUIMessage({
|
||||
action = 'labels',
|
||||
scale = config.hudScale,
|
||||
air = locale('hud.air'),
|
||||
depth = locale('hud.depth'),
|
||||
pressure = locale('hud.pressure'),
|
||||
@@ -740,6 +741,30 @@ 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
|
||||
--- 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)
|
||||
|
||||
-- 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
|
||||
exports.qbx_core:Notify(locale('error.tank_gone'), 'error')
|
||||
removeGear(true)
|
||||
return
|
||||
end
|
||||
|
||||
activeTank.slot = slot
|
||||
end)
|
||||
end)
|
||||
|
||||
AddEventHandler('onResourceStop', function(resource)
|
||||
if resource ~= GetCurrentResourceName() then return end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user