fix: GTA nimmt Flasche und Maske nicht mehr selbst ab (Flag 409)

Gemessen mit /tauchprobe beobachten: beim Wechsel "schwimmt" -> nein
verschwanden Komponente 8 (global 123) und Prop 1 gleichzeitig, bei
ausgeschaltetem Tauchgeraet; die Items blieben in den Slots.
CPED_CONFIG_FLAG_DisableTakeOffScubaGear = 409 (nachgeschlagen) am
Spieler-Ped, nach jedem Ped-Wechsel neu, beim Stoppen ab.
/tauchprobe beobachten zeigt die Flagge mit an.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
D4rkst3randClaude Opus 5.5 committed 2026-09-29 00:16:48 +02:00
1 parent daefe46cb8
commit bfe1d8ee2d
2 files changed
+78

No files matched your search

+27
View File
@@ -327,6 +327,8 @@ end
exports('setHudVisible', setHudVisible) exports('setHudVisible', setHudVisible)
exports('isHudVisible', function() return not hudHidden end) exports('isHudVisible', function() return not hudHidden end)
-- Fuer /tauchprobe beobachten (client/probe.lua): ist das Tauchgeraet aktiv?
exports('geraetAktiv', function() return currentGear.enabled == true end)
--- Pflegt die geglättete Tiefe und schiebt den Zustand ins NUI. --- Pflegt die geglättete Tiefe und schiebt den Zustand ins NUI.
--- Läuft auch über Wasser weiter, weil getDecayFactor die Tiefe braucht - nur die --- Läuft auch über Wasser weiter, weil getDecayFactor die Tiefe braucht - nur die
@@ -672,8 +674,33 @@ lib.onCache('ped', function(ped)
end end
end) end)
--[[
GTA NIMMT FLASCHE UND MASKE SELBST AB - gemessen am 29.09.2026 mit
/tauchprobe beobachten (Betreiber): im Moment, in dem "schwimmt" auf nein
springt (flaches Wasser, Boden unter den Fuessen), verschwanden Komponente 8
(global 123 = GTAs Taucherflasche) und Prop 1 gleichzeitig - bei
ausgeschaltetem Tauchgeraet, also nicht durch diesen Code. Die Items lagen
weiter in ihren Slots.
CPED_CONFIG_FLAG_DisableTakeOffScubaGear = 409 (NACHGESCHLAGEN in der
SetPedConfigFlag-Doku der Nativ-Datenbank) schaltet das ab. Bei uns zieht
nur das Inventar aus. Gesetzt am Spieler-Ped, nach jedem Ped-Wechsel neu
(onCache-Parameter, nicht cache.ped), beim Stoppen wieder ab - sonst
bliebe sie ohne diese Resource stehen.
]]
local ABNEHMEN_AUS = 409
CreateThread(function()
SetPedConfigFlag(PlayerPedId(), ABNEHMEN_AUS, true)
end)
lib.onCache('ped', function(ped)
SetPedConfigFlag(ped, ABNEHMEN_AUS, true)
end)
AddEventHandler('onResourceStop', function(resource) AddEventHandler('onResourceStop', function(resource)
if resource ~= GetCurrentResourceName() then return end if resource ~= GetCurrentResourceName() then return end
SetPedConfigFlag(cache.ped, ABNEHMEN_AUS, false)
syncTank(true) syncTank(true)
setLamp(false) setLamp(false)
+51
View File
@@ -62,9 +62,60 @@ local function zeile(ped, e)
e.art, e.id, e.d, e.tex, tostring(e.sammlung ~= '' and e.sammlung or 'base'), e.lokal or -1, texturen or -1) e.art, e.id, e.d, e.tex, tostring(e.sammlung ~= '' and e.sammlung or 'base'), e.lokal or -1, texturen or -1)
end end
--[[
/tauchprobe beobachten [sekunden] - 29.09.2026. Betreiber: "bei der
taucherfalsche haben wir das problem er zieht sie aus wenn er an land ist".
Schreibt JEDE Aenderung an Flasche (Komponente 8) und Maske (Prop 1) mit
Zeit, Wasserzustand und ob das Tauchgeraet aktiv ist - damit man sieht,
WANN sie verschwindet (Wasser verlassen? Tauchgeraet aus? Neuanziehen?),
statt es zu raten. Alle 10 s eine Lebenszeile, damit Stille nicht wie
"keine Aenderung" aussieht, wenn die Probe gar nicht laeuft.
]]
local function beobachten(sekunden)
local ende = GetGameTimer() + sekunden * 1000
local start = GetGameTimer()
local letzt, lebenszeichen = nil, 0
print(('^5=== Tauchprobe beobachten, %d s ===^7'):format(sekunden))
print(' t Flasche (c8) Maske (p1) Wasser Schwimmt Unten Geraet Flag409')
while GetGameTimer() < ende do
local ped = PlayerPedId()
local c8 = ('%s:%d (g%d t%d)'):format(GetPedDrawableVariationCollectionName(ped, 8) or 'base',
GetPedDrawableVariationCollectionLocalIndex(ped, 8) or -1, GetPedDrawableVariation(ped, 8), GetPedTextureVariation(ped, 8))
local p1 = ('%s:%d (g%d t%d)'):format(GetPedPropCollectionName(ped, 1) or 'base',
GetPedPropCollectionLocalIndex(ped, 1) or -1, GetPedPropIndex(ped, 1), GetPedPropTextureIndex(ped, 1))
local function jn(x) return (x == true or x == 1) and 'j' or 'n' end
local okA, aktiv = pcall(function() return exports.d4rk_divegear:geraetAktiv() end)
local zeile = ('%-29s %-29s %s %s %s %s %s'):format(c8, p1, jn(IsEntityInWater(ped)),
jn(IsPedSwimming(ped)), jn(IsPedSwimmingUnderWater(ped)), okA and jn(aktiv) or '?',
jn(GetPedConfigFlag(ped, 409, true)))
local t = (GetGameTimer() - start) / 1000
if zeile ~= letzt then
print((' %5.1f %s'):format(t, zeile))
letzt = zeile
elseif t - lebenszeichen >= 10 then
print((' %5.1f (unveraendert)'):format(t))
lebenszeichen = t
end
Wait(250)
end
print('^5=== Tauchprobe beobachten: Ende ===^7')
end
RegisterCommand('tauchprobe', function(_, args) RegisterCommand('tauchprobe', function(_, args)
local ped = PlayerPedId() local ped = PlayerPedId()
if args[1] == 'beobachten' then
CreateThread(function() beobachten(tonumber(args[2]) or 120) end)
lib.notify({ title = 'Tauchprobe', description = 'Beobachte - Ausgabe in F8.', type = 'info' })
return
end
print('') print('')
print(('^5=== d4rk_divegear: Tauchprobe (Modell %s) ===^7'):format(modell(ped))) print(('^5=== d4rk_divegear: Tauchprobe (Modell %s) ===^7'):format(modell(ped)))