- Tauchgeraet bereit = Taucherflasche (rigItem, Slot 31) mit Patrone UND Maske (maskItem, Slot 29) angezogen; Server getWorn statt verifyGear, geprueft bei jeder Inventaraenderung und nach jedem Umziehen. Props, diving_gear und der Anzieh-Balken entfallen. - Die fuenf Flaschen sind Patronen: benutzen = in die getragene Flasche einsetzen, die alte kommt mit Restluft zurueck (patroneTauschen). - Faeden mit Laufnummer, damit ein Tausch sie nicht verdoppelt. - exports.ox_inventory -> exports.d4rk_inventory, Meldungen ueber lib.notify (meldung_shared) und d4rk_bridge:Notify. - Konsole beim HUD angemeldet (client/hud.lua), 366 x 165 bei 1080p gemessen; ohne HUD bleibt die CSS-Position. - Nachfuellen (diving_fill) stillgelegt: kommt spaeter ueber Shop/Crafting. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
83 lines
4.3 KiB
Lua
83 lines
4.3 KiB
Lua
-- Von Client und Server benutzt. Muss in fxmanifest unter files{} stehen,
|
|
-- damit lib.require die Datei auf beiden Seiten laden kann.
|
|
|
|
local config = {
|
|
--- Tauchflaschen.
|
|
---
|
|
--- capacity = Laufzeit in Sekunden bei normalem Verbrauch.
|
|
--- pressure = Fülldruck in bar. Reine Anzeige: der angezeigte Druck ist
|
|
--- pressure * (Restluft / capacity). Bei konstantem Volumen ist der
|
|
--- Druck proportional zur verbliebenen Gasmenge, das passt also.
|
|
--- Dass alle Flaschen denselben Fülldruck haben ist gewollt - in echt
|
|
--- macht das Volumen die Laufzeit, nicht der Druck.
|
|
--- maxDepth = Tiefe in Metern, bis zu der das Atemgas verträglich ist.
|
|
--- Darunter setzt Tiefenrausch ein (siehe narcosis in config/client.lua).
|
|
--- Der Grund ist real der Stickstoff in der Pressluft: tiefer wirkt er
|
|
--- narkotisch, und ab ~56 m wird auch der Sauerstoff giftig. Wer tiefer
|
|
--- will, atmet Trimix - dort ersetzt Helium einen Teil des Stickstoffs.
|
|
--- gas = Nur fürs Auswahlmenü, damit man die Flaschen unterscheiden kann.
|
|
---
|
|
--- Reihenfolge = Reihenfolge im Auswahlmenü.
|
|
tanks = {
|
|
{ name = 'diving_tank_small', capacity = 300, pressure = 300, maxDepth = 45.0, gas = 'Pressluft' }, -- 5 Minuten
|
|
{ name = 'diving_tank_medium', capacity = 600, pressure = 300, maxDepth = 45.0, gas = 'Pressluft' }, -- 10 Minuten
|
|
{ name = 'diving_tank_large', capacity = 900, pressure = 300, maxDepth = 45.0, gas = 'Pressluft' }, -- 15 Minuten
|
|
{ name = 'diving_tank_xl', capacity = 1200, pressure = 300, maxDepth = 45.0, gas = 'Pressluft' }, -- 20 Minuten
|
|
{ name = 'diving_tank_trimix', capacity = 900, pressure = 300, maxDepth = 100.0, gas = 'Trimix' }, -- 15 Minuten, tieftauglich
|
|
},
|
|
|
|
--- SEIT 28.09.2026 SIND FLASCHE UND MASKE KLEIDUNG (plan-divegear.md).
|
|
--- Betreiber: "die Prop flasche zu einer richtigen taucherfalsche + maske
|
|
--- welche wir im kleider laden kaufen koennen", und "die flaschen groessen
|
|
--- soll man an der normalen taucherfalsche austauschen koennen".
|
|
---
|
|
--- rigItem die Taucherflasche aus dem Kleiderladen (d4rk_garment -> item).
|
|
--- Sie traegt die eingesetzte Patrone in der Metadata:
|
|
--- patrone = Name aus tanks (unten), oxygen = Restsekunden.
|
|
--- maskItem die Tauchmaske aus dem Kleiderladen.
|
|
--- rigSlot / maskSlot wo sie getragen werden - d4rk_inventory
|
|
--- shared/d4rk_slots.lua:71-96: 31 Unterhemd (Komponente 8),
|
|
--- 29 Maske (Komponente 1). Welche Komponente die GTA-Taucherflasche
|
|
--- wirklich ist, steht erst nach der Messung (Schritt 0) fest.
|
|
---
|
|
--- Die fuenf `tanks` sind jetzt PATRONEN: Items im Inventar, die man an der
|
|
--- getragenen Flasche tauscht (Patrone benutzen). Die alten Props und das
|
|
--- Item diving_gear gibt es nicht mehr.
|
|
rigItem = 'diving_tank',
|
|
maskItem = 'diving_mask',
|
|
rigSlot = 31,
|
|
maskSlot = 29,
|
|
|
|
--- Das Fuell-Item. NICHT ANGELEGT: Nachfuellen kommt spaeter ueber einen
|
|
--- Shop oder Crafting (Betreiber, 28.09.2026). Der Weg bleibt stehen, damit
|
|
--- er sich dort anhaengen laesst - ohne das Item ist er nie erreichbar.
|
|
fillItem = 'diving_fill',
|
|
|
|
--- Flaschen ohne Metadata als voll behandeln. Betrifft alles, was frisch aus
|
|
--- einem Shop, per AddItem oder aus einem Admin-Befehl kommt - da ist noch kein
|
|
--- oxygen gesetzt. Auf false muss jede neue Flasche erst mit einer Kartusche
|
|
--- befüllt werden, bevor man damit tauchen kann.
|
|
newTanksFull = true,
|
|
|
|
--- Wie oft der Client die Restluft an den Server meldet (Sekunden).
|
|
--- Bei einem Crash gehen maximal so viele Sekunden Luft verloren.
|
|
syncIntervalSeconds = 15,
|
|
|
|
--- Obergrenze für die serverseitige Plausibilitätsprüfung: so viele Sekunden
|
|
--- Luft kann ein Spieler höchstens pro echter Sekunde verbrauchen. Muss über
|
|
--- maxDecayFactor aus config/client.lua liegen, sonst wird ehrlichen Spielern
|
|
--- in großer Tiefe fälschlich Luft zurückgegeben.
|
|
maxDrainPerSecond = 5.0,
|
|
}
|
|
|
|
config.tankByName = {}
|
|
config.tankNames = {}
|
|
|
|
for i = 1, #config.tanks do
|
|
local tank = config.tanks[i]
|
|
config.tankByName[tank.name] = tank
|
|
config.tankNames[i] = tank.name
|
|
end
|
|
|
|
return config
|