fix: Erkenntnisse aus dem Ingame-Test

- Die Scuba-Lampe funktioniert auch OHNE Scuba-Kleidung am Ped. Meine Annahme
  aus esx_scuba, das Licht haenge am Kleidungs-Component 8, trifft hier nicht
  zu - Kommentare und README entsprechend korrigiert. Die Meldung beim
  Einschalten bleibt als Sicherheitsnetz fuer Ped-Models, bei denen die Native
  doch nicht anschlaegt
- engineDepthLimit auf 160 m, ingame gemessen statt konservativ geschaetzt
- damagePerTick ueberall auf 0: Tiefenrausch kostet erstmal nur Sicht, Kontrolle
  und Luft, kein Leben. In der letzten Stufe wieder aktivierbar
- .github entfernt: die Workflows kamen aus dem Original, liefen gegen Qbox'
  Discord und GitHub-Releases und haetten auf Gitea nur ins Leere gefeuert.
  Gelintet wird lokal ueber .tools/lint.mjs

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-11 09:42:08 +02:00
co-authored by Claude Opus 5
parent 7c4004a378
commit 64b2549cf9
5 changed files with 31 additions and 57 deletions
+18 -13
View File
@@ -169,10 +169,14 @@ FiveM* umlegbar.
|---|---|---|
| `enabled` | `true` | Komplett abschaltbar |
| `warnBeforeMeters` | `5.0` | Vorwarnung so viele Meter vor der Grenze |
| `engineDepthLimit` | `130.0` | Tiefe, ab der **das Spiel selbst** über den Wasserdruck tötet — dagegen hilft keine Flasche |
| `engineDepthLimit` | `160.0` | Tiefe, ab der **das Spiel selbst** Schluss macht — ingame gemessen, dagegen hilft keine Flasche |
| `engineWarnBeforeMeters` | `20.0` | Vorwarnung davor |
| `stages` | 3 Stufen | Pro Stufe: `over` (Meter unter der Grenze), `timecycle` + `strength`, `shake` + `shakeIntensity`, `drainFactor`, `damagePerTick` |
`damagePerTick` steht überall auf `0` — Tiefenrausch kostet also erstmal nur Sicht,
Kontrolle und Luft, kein Leben. Wer es härter will, setzt es in der letzten Stufe
auf z.B. `2`.
**HUD**
| Option | Default | Bedeutung |
@@ -239,14 +243,12 @@ Effekte, Stärke, Verbrauchsaufschlag, Schaden. `enabled = false` schaltet es ga
### Die Grenze der Engine
Unabhängig von allem hier tötet **GTA selbst** ab einer bestimmten Tiefe über den
Wasserdruck — beim U-Boot liegt die Grenze bei rund 150 m mit Implosion ab ~168 m,
zu Fuß verliert man ebenfalls Leben. Dagegen hilft kein Atemgas, das ist die
Engine und nicht dieses Script.
Unabhängig von allem hier ist bei **160 m** Schluss — das macht GTA selbst über den
Wasserdruck, dagegen hilft kein Atemgas. Ingame gemessen.
Deshalb gibt es dafür nur eine Warnung (`engineDepthLimit`, konservativ auf 130 m),
und Trimix hört mit 100 m bewusst darüber auf. Der Bereich zwischen den beiden ist
die Zone, in der keine Ausrüstung mehr hilft.
Deshalb gibt es dafür nur eine Warnung (`engineDepthLimit`, 20 m vorher). Trimix
hört mit 100 m bewusst darüber auf; dazwischen liegt die Zone, in der es zwar
ungemütlich wird, aber noch nichts tödlich ist.
## Exports
@@ -272,11 +274,11 @@ IsScubaGearLightEnabled(ped) -- 0x88274C11CF0D866D
Die sitzt an der richtigen Stelle, leuchtet in Blickrichtung und braucht weder
Prop noch Offsets noch einen Draw-Thread.
> **Voraussetzung:** Die Lampe hängt an der echten **Scuba-Kleidung** des Peds
> (Component 8). Trägt der Spieler die nicht, tut die Native nichts. Diese
> Resource fasst das Outfit bewusst **nicht** an — das gehört ins Kleidungs-System.
> Beim Einschalten ohne passendes Outfit gibt es eine Meldung statt stiller Wirkungslosigkeit.
> Mit `debug = true` sagt `/divelampcheck`, ob das aktuelle Outfit eine Lampe hat.
Sie funktioniert **auch ohne Scuba-Kleidung** am Ped — ingame bestätigt. Der
Hinweis in [esx_scuba](https://github.com/wobozkyng/esx_scuba), das Licht hänge am
Kleidungs-Component, trifft hier also nicht zu. Das Outfit wird nicht angefasst.
Sollte die Native bei einem Ped-Model doch nicht anschlagen, gibt es beim
Einschalten eine Meldung, und `/divelampcheck` (mit `debug = true`) sagt es direkt.
Der Flag ist ein **lokaler** Ped-Zustand und wird nicht von selbst repliziert.
Deshalb läuft der Zustand über einen Statebag
@@ -287,6 +289,9 @@ Respawn und Model-Wechsel neu erzeugt werden und den Flag dabei verlieren.
## Entwicklung
Es gibt bewusst keine CI: die Workflows aus dem Original liefen gegen Qbox'
Discord und GitHub-Releases, und Linting passiert lokal vor dem Commit.
```bash
node ../.tools/lint.mjs # Lua-Lint, CfxLua-tauglich
node ../.tools/nui-preview.mjs nui # HUD im Browser anschauen