Files
d4rk_divegear/config/client.lua
T
D4rkst3randClaude Opus 5 f88f7bf002
Lint / Lint Resource (push) Has been cancelled
feat: Warnung vor der Druck-Grenze der Engine
GTA toetet selbst ab einer bestimmten Tiefe ueber den Wasserdruck - beim U-Boot
bei rund 150 m mit Implosion ab ~168 m, zu Fuss verliert man ebenfalls Leben.
Dagegen hilft kein Atemgas, das ist die Engine.

Deshalb dafuer nur eine Warnung statt eigener Effekte, konservativ auf 130 m mit
20 m Vorwarnung, beides in config.narcosis. Trimix hoert mit 100 m bewusst
darueber auf; dazwischen liegt die Zone, in der keine Ausruestung mehr hilft.

Der genaue Wert fuer Taucher zu Fuss ist nicht belegt und steht als Testpunkt in
TESTING.md.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-11 09:13:55 +02:00

160 lines
7.1 KiB
Lua

return {
--- Schaltet /divelamp und /divelight frei, mit denen sich Sitz und
--- Leuchtrichtung der Lampe im laufenden Spiel einstellen lassen - ohne
--- Resource-Restart pro Versuch. Auf dem Live-Server ausschalten.
debug = false,
putOnSuitTimeMs = 5000,
takeOffSuitTimeMs = 5000,
refillTankTimeMs = 5000,
--- Sekunden Luft, die pro echter Sekunde verbraucht werden (vor dem Tiefenfaktor).
decayRate = 1.0,
--- Intervall des Watchdogs, der prüft ob die Ausrüstung noch am Ped hängt (ms).
gearWatchdogIntervalMs = 1000,
--- Sekunden, die der Spieler ohne Ausrüstung unter Wasser überlebt (Vanilla-Verhalten).
maxTimeUnderwater = 50.0,
--- Sekunden, sobald die Flasche leer ist. Bewusst kurz: leer tauchen soll wehtun.
maxTimeUnderwaterOutOfAir = 1.0,
--- Ausrüstung beim Tod abnehmen. Die Flasche bleibt mit ihrer Restluft im Inventar.
removeGearOnDeath = true,
--- Restsekunden, bei denen gewarnt wird. Jede Schwelle löst einmal pro Tauchgang aus.
warnAtSeconds = { 60, 30, 10 },
--- Verbrauch steigt mit der Tiefe: faktor = 1 + tiefe / depthDecayReference.
--- Standardmäßig aus, damit die angegebenen 5/10/15/20 Minuten exakt stimmen
--- und für Spieler berechenbar bleiben.
depthDecayEnabled = false,
depthDecayReference = 30.0,
maxDecayFactor = 4.0,
--- NUI-HUD mit Luft und Tiefe. Auf false bleibt die Ausrüstung voll nutzbar,
--- nur ohne Anzeige.
hudEnabled = true,
--- Update-Intervall des HUD (ms). 250 = 4 Updates pro Sekunde, reicht für eine
--- ruhige Anzeige ohne unnötigen NUI-Traffic.
hudUpdateIntervalMs = 250,
--- HUD nur unter Wasser zeigen. Auf false ist es sichtbar, sobald die
--- Ausrüstung angelegt ist - dann lässt sich der Flaschendruck am Finimeter
--- ablesen, ohne extra das Inventar zu öffnen.
hudOnlyUnderwater = false,
--- Tauch-HUD mit ausblenden, sobald das Spiel-HUD ausgeblendet ist.
--- Greift bei allem, was DisplayHud(false) setzt - Screenshot-Scripts,
--- HUD-Toggles, Cinematic-Modes -, ohne dass wir die Resource kennen müssen.
hudFollowGameHud = true,
--- Eigene Taste zum Aus-/Einblenden des Tauch-HUD. Leer = keine Vorbelegung,
--- der Spieler kann sie in den FiveM-Tastenbelegungen unter "FiveM" setzen.
--- Zusätzlich gibt es den Export setHudVisible(bool) für andere Resources.
hudToggleKey = '',
--- Ab dieser Tiefe wird die Tiefenanzeige eingefärbt (Meter).
deepWarningDepth = 25.0,
---------------------------------------------------------------------------
-- Tiefenrausch
---------------------------------------------------------------------------
-- Macht die Tiefengrenze mechanisch statt zur Absprache: unterhalb der
-- maxDepth der getragenen Flasche (config/shared.lua) wird es ungemütlich.
-- Mit Pressluft ab 45 m, mit Trimix erst ab 100 m - wer die tiefen Spots
-- sehen will, braucht also die richtige Flasche.
narcosis = {
enabled = true,
--- Wie viele Meter *vor* der Grenze schon gewarnt wird.
warnBeforeMeters = 5.0,
--- Tiefe, ab der das Spiel selbst den Spieler über den Wasserdruck tötet.
--- Dagegen hilft keine Flasche - das ist die Engine, nicht dieses Script.
--- Deshalb hier nur eine Warnung, kein eigener Effekt.
--- Referenz: das U-Boot geht bis ~150 m und implodiert ab ~168 m; zu Fuß
--- verliert man ebenfalls Leben, sobald es zu tief wird. Der Wert ist
--- bewusst konservativ - notfalls anpassen.
engineDepthLimit = 130.0,
engineWarnBeforeMeters = 20.0,
--- Stufen, sobald die Grenze überschritten ist. `over` = Meter unterhalb
--- der maxDepth der Flasche. Es gilt jeweils die höchste erreichte Stufe,
--- die Reihenfolge muss also aufsteigend sein.
---
--- timecycle Bildschirmeffekt. Namen sind Timecycle-Modifier des
--- Spiels, keine Natives - falls einer nicht existiert,
--- passiert einfach nichts. Alternativen zum Ausprobieren:
--- 'drug_flying_base', 'drug_deadman', 'REDMIST',
--- 'spectator5'. Auf nil = kein Effekt.
--- strength 0.0 bis 1.0
--- shake Kamerawackeln, z.B. 'DRUNK_SHAKE', 'SKY_DIVING_SHAKE'.
--- Auf nil = kein Wackeln.
--- shakeIntensity Stärke des Wackelns
--- drainFactor Faktor auf den Luftverbrauch (Stress atmet mehr)
--- damagePerTick Schaden pro Sekunde. 0 = kein Schaden.
stages = {
{
over = 0.0,
timecycle = 'drug_wobbly', strength = 0.3,
shake = nil, shakeIntensity = 0.0,
drainFactor = 1.5, damagePerTick = 0
},
{
over = 10.0,
timecycle = 'drug_wobbly', strength = 0.7,
shake = 'DRUNK_SHAKE', shakeIntensity = 0.3,
drainFactor = 2.0, damagePerTick = 0
},
{
over = 20.0,
timecycle = 'drug_wobbly', strength = 1.0,
shake = 'DRUNK_SHAKE', shakeIntensity = 0.8,
drainFactor = 3.0, damagePerTick = 2
},
},
},
--- Reservedruck in bar. Darunter wird die Druckanzeige eingefärbt - in der
--- Tauchpraxis die Schwelle, ab der man den Aufstieg einleitet.
reservePressure = 50,
---------------------------------------------------------------------------
-- Taschenlampe
---------------------------------------------------------------------------
--- Taste zum An- und Ausschalten. Der Spieler kann sie in den FiveM-
--- Tastenbelegungen unter "FiveM" umlegen.
lampKey = 'l',
--- Die Lampe ist die spieleigene Scuba-Lampe (SetEnableScubaGearLight, seit
--- v1493). Sie sitzt an der richtigen Stelle und leuchtet in Blickrichtung -
--- deshalb gibt es hier weder Offsets noch Farb- und Kegelwerte.
---
--- ACHTUNG: Sie hängt an der echten Scuba-Kleidung des Peds (Component 8).
--- Trägt der Spieler die nicht, passiert nichts. Diese Resource fasst das
--- Outfit bewusst nicht an - das macht bei Bedarf das Kleidungs-System.
--- Wie oft der Lampen-Zustand auf die Peds in der Nähe nachgezogen wird (ms).
--- Nötig, weil Peds beim Streaming, Respawn und Model-Wechsel neu erzeugt
--- werden und den Flag dabei verlieren.
lampReconcileIntervalMs = 500,
--- Optionales Prop am Kopf, rein optisch. Die Lampe leuchtet unabhängig davon.
--- Standardmäßig aus, weil die Spiel-Lampe schon an der Ausrüstung sitzt.
--- Ein Basegame-Tauchlampen-Prop gibt es nicht; die Polizei-Taschenlampe
--- ('prop_cs_police_torch', 'prop_police_torch', 'prop_scn_police_torch')
--- passt optisch nur bedingt.
lampProp = '',
--- Bone und Sitz des optionalen Props. 12844 = Kopf (wie die Maske).
--- Mit /divelamp im Spiel einstellen statt hier zu raten.
lampBone = 12844,
lampPropOffset = vec3(0.0, 0.0, 0.0),
lampPropRotation = vec3(0.0, 0.0, 0.0),
}