chore: Luft ohne Flasche 10 s (gemessen), /tauchprobe fuer die Kleidung
maxTimeUnderwater stand auf 50 mit "Vanilla-Verhalten"; auf d4rk-rp sind es gemessen 10,00 s (/medwasserprobe). /tauchprobe liest, was SetPedScubaGearVariation an der Kleidung aendert (Maske) und zeigt Komponente 8 bei einem Drawable (Flasche) - plan-divegear.md Schritt 0. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
d59abe8d55
commit
930ff6381f
3 files changed
+120
-2
No files matched your search
@@ -0,0 +1,109 @@
|
|||||||
|
--[[
|
||||||
|
d4rk_divegear - /tauchprobe: welche Kleidung ist die Tauchmaske?
|
||||||
|
(plan-divegear.md Schritt 0, 28.09.2026)
|
||||||
|
|
||||||
|
Flasche und Maske werden Kleidungsstuecke aus dem Kleiderladen
|
||||||
|
(d4rk_garment). Dafuer braucht es Komponente, Sammlung und lokalen Index -
|
||||||
|
je Modell (m/f). Der Katalog hat keine Namen, also wird gemessen:
|
||||||
|
|
||||||
|
SetPedScubaGearVariation (0x36C6984C3ED0C911, PED, client) setzt laut
|
||||||
|
Nativ-Datenbank bei Freemode-Modellen die Tauchmaske. Diese Probe liest
|
||||||
|
ALLE Komponenten (0-11) und Props (0-7) vorher und nachher und nennt,
|
||||||
|
was sich geaendert hat - samt Sammlung, lokalem Index und Zahl der
|
||||||
|
Texturen.
|
||||||
|
|
||||||
|
GEGENPROBE: aendert sich gar nichts, steht "UNGUELTIG" da - das Native hat
|
||||||
|
dann nichts getan, und "keine Maske" waere die falsche Lesart.
|
||||||
|
|
||||||
|
DIE FLASCHE setzt das Native bei Freemode NICHT (laut Doku nur bei
|
||||||
|
player_*-Modellen). Nachgeschlagen, nicht gemessen: maennlich Komponente 8,
|
||||||
|
Drawable 123. Deshalb liest die Probe mit "flasche [n]" Komponente 8 bei
|
||||||
|
Drawable n (Vorgabe 123) - ob es die Flasche IST, sieht nur das Auge.
|
||||||
|
|
||||||
|
Zurueck zur eigenen Kleidung: /d4rk_anziehen (d4rk_inventory).
|
||||||
|
]]
|
||||||
|
|
||||||
|
local function modell(ped)
|
||||||
|
local m = GetEntityModel(ped)
|
||||||
|
if m == `mp_m_freemode_01` then return 'm' end
|
||||||
|
if m == `mp_f_freemode_01` then return 'f' end
|
||||||
|
return '?'
|
||||||
|
end
|
||||||
|
|
||||||
|
local function stand(ped)
|
||||||
|
local t = {}
|
||||||
|
|
||||||
|
for c = 0, 11 do
|
||||||
|
t['c' .. c] = {
|
||||||
|
art = 'c', id = c,
|
||||||
|
d = GetPedDrawableVariation(ped, c), tex = GetPedTextureVariation(ped, c),
|
||||||
|
sammlung = GetPedDrawableVariationCollectionName(ped, c) or 'base',
|
||||||
|
lokal = GetPedDrawableVariationCollectionLocalIndex(ped, c),
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
for p = 0, 7 do
|
||||||
|
t['p' .. p] = {
|
||||||
|
art = 'p', id = p,
|
||||||
|
d = GetPedPropIndex(ped, p), tex = GetPedPropTextureIndex(ped, p),
|
||||||
|
sammlung = GetPedPropCollectionName(ped, p) or 'base',
|
||||||
|
lokal = GetPedPropCollectionLocalIndex(ped, p),
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
return t
|
||||||
|
end
|
||||||
|
|
||||||
|
local function zeile(ped, e)
|
||||||
|
local texturen = e.art == 'c' and GetNumberOfPedTextureVariations(ped, e.id, e.d)
|
||||||
|
or (e.d >= 0 and GetNumberOfPedPropTextureVariations(ped, e.id, e.d) or 0)
|
||||||
|
|
||||||
|
return ('%s%-2d global %4d Textur %2d Sammlung %-14s lokal %4d Texturen %d'):format(
|
||||||
|
e.art, e.id, e.d, e.tex, tostring(e.sammlung ~= '' and e.sammlung or 'base'), e.lokal or -1, texturen or -1)
|
||||||
|
end
|
||||||
|
|
||||||
|
RegisterCommand('tauchprobe', function(_, args)
|
||||||
|
local ped = PlayerPedId()
|
||||||
|
|
||||||
|
print('')
|
||||||
|
print(('^5=== d4rk_divegear: Tauchprobe (Modell %s) ===^7'):format(modell(ped)))
|
||||||
|
|
||||||
|
if args[1] == 'flasche' then
|
||||||
|
local n = tonumber(args[2]) or 123
|
||||||
|
|
||||||
|
SetPedComponentVariation(ped, 8, n, 0, 0)
|
||||||
|
Wait(300)
|
||||||
|
|
||||||
|
local s = stand(ped).c8
|
||||||
|
print(' Komponente 8 gesetzt auf global ' .. n .. ':')
|
||||||
|
print(' ' .. zeile(ped, s))
|
||||||
|
print((' Ist das die Taucherflasche? Ansehen. Andere Nummer: /tauchprobe flasche <n>. '
|
||||||
|
.. 'Zurueck: /d4rk_anziehen'))
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local vorher = stand(ped)
|
||||||
|
SetPedScubaGearVariation(ped)
|
||||||
|
Wait(500)
|
||||||
|
local nachher = stand(ped)
|
||||||
|
|
||||||
|
local anders = 0
|
||||||
|
|
||||||
|
for k, n in pairs(nachher) do
|
||||||
|
local v = vorher[k]
|
||||||
|
|
||||||
|
if v.d ~= n.d or v.tex ~= n.tex then
|
||||||
|
anders = anders + 1
|
||||||
|
print(' vorher ' .. zeile(ped, v))
|
||||||
|
print(' nachher ' .. zeile(ped, n))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if anders == 0 then
|
||||||
|
print('^1 UNGUELTIG: SetPedScubaGearVariation hat nichts geaendert - keine Aussage.^7')
|
||||||
|
else
|
||||||
|
print(('^2 %d Teil(e) geaendert.^7 Zurueck zur eigenen Kleidung: /d4rk_anziehen'):format(anders))
|
||||||
|
end
|
||||||
|
|
||||||
|
lib.notify({ title = 'Tauchprobe', description = 'Ergebnis in F8.', type = 'info' })
|
||||||
|
end, false)
|
||||||
+8
-2
@@ -9,8 +9,12 @@ return {
|
|||||||
--- Intervall des Watchdogs, der prüft ob die Ausrüstung noch am Ped hängt (ms).
|
--- Intervall des Watchdogs, der prüft ob die Ausrüstung noch am Ped hängt (ms).
|
||||||
gearWatchdogIntervalMs = 1000,
|
gearWatchdogIntervalMs = 1000,
|
||||||
|
|
||||||
--- Sekunden, die der Spieler ohne Ausrüstung unter Wasser überlebt (Vanilla-Verhalten).
|
--- Sekunden Luft ohne Ausruestung - der NORMALWERT dieses Servers.
|
||||||
maxTimeUnderwater = 50.0,
|
--- Stand bis 28.09.2026 auf 50.0 mit "Vanilla-Verhalten". GEMESSEN auf
|
||||||
|
--- d4rk-rp mit /medwasserprobe (d4rk_medical): 10,00 s an der Oberflaeche.
|
||||||
|
--- Mit 50 haette jeder nach dem ersten Ablegen fuenfmal so viel Luft - und
|
||||||
|
--- das Ertrinken (d4rk_medical, Config.Drowning) kaeme viel zu spaet.
|
||||||
|
maxTimeUnderwater = 10.0,
|
||||||
|
|
||||||
--- Sekunden, sobald die Flasche leer ist. Bewusst kurz: leer tauchen soll wehtun.
|
--- Sekunden, sobald die Flasche leer ist. Bewusst kurz: leer tauchen soll wehtun.
|
||||||
maxTimeUnderwaterOutOfAir = 1.0,
|
maxTimeUnderwaterOutOfAir = 1.0,
|
||||||
@@ -134,6 +138,8 @@ return {
|
|||||||
|
|
||||||
--- Taste zum An- und Ausschalten. Der Spieler kann sie in den FiveM-
|
--- Taste zum An- und Ausschalten. Der Spieler kann sie in den FiveM-
|
||||||
--- Tastenbelegungen unter "FiveM" umlegen.
|
--- Tastenbelegungen unter "FiveM" umlegen.
|
||||||
|
--- L ist AUCH das Fahrzeugschloss (d4rk_vehicle, wirkt von aussen bis
|
||||||
|
--- 6 m) - beide feuern. Bewusst so gelassen, Betreiber 28.09.2026.
|
||||||
lampKey = 'l',
|
lampKey = 'l',
|
||||||
|
|
||||||
--- Die Lampe ist die spieleigene Scuba-Lampe (SetEnableScubaGearLight, seit
|
--- Die Lampe ist die spieleigene Scuba-Lampe (SetEnableScubaGearLight, seit
|
||||||
|
|||||||
@@ -18,6 +18,9 @@ server_script 'server/main.lua'
|
|||||||
client_scripts {
|
client_scripts {
|
||||||
'client/main.lua',
|
'client/main.lua',
|
||||||
'client/light.lua',
|
'client/light.lua',
|
||||||
|
-- Messung fuer die Umstellung auf Kleidung (plan-divegear.md Schritt 0).
|
||||||
|
-- Wird nach der Messung wieder entfernt.
|
||||||
|
'client/probe.lua',
|
||||||
}
|
}
|
||||||
|
|
||||||
ui_page 'nui/index.html'
|
ui_page 'nui/index.html'
|
||||||
|
|||||||
Reference in new issue
Block a user