Commit Graph
65 Commits
Author SHA1 Message Date
D4rkst3randClaude Opus 5 5a59fc513f feat(hud): Manometer in bar und ausblendbares HUD
Lint / Lint Resource (push) Has been cancelled
Druckanzeige:
- pressure * (Restluft / capacity). Bei konstantem Volumen ist der Druck
  proportional zur verbliebenen Gasmenge, die lineare Abbildung stimmt also
- Fuelldruck pro Flasche in config/shared.lua, alle bei 300 bar. Dass die grosse
  Flasche denselben Druck zeigt wie die kleine ist gewollt - in echt macht das
  Volumen die Laufzeit, nicht der Druck
- Unter config.reservePressure (50 bar) rot: in der Tauchpraxis die Schwelle,
  ab der man den Aufstieg einleitet

HUD ausblenden fuer Unterwasser-Screenshots. qbx_core hat selbst keinen
HUD-Toggle, es feuert nur hud:client:* an eine separate HUD-Resource - deshalb
drei voneinander unabhaengige Wege:
- IsHudHidden() folgen, greift bei allem was DisplayHud(false) setzt
- eigene Taste, standardmaessig unbelegt
- Export setHudVisible(bool) / isHudVisible() fuer andere Resources

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-11 00:06:58 +02:00
D4rkst3randClaude Opus 5 e5af47da66 docs: README auf den Fork umgeschrieben
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-10 23:57:22 +02:00
D4rkst3randClaude Opus 5 d9643620ff feat(light): gesyncte Tauchlampe
Lint / Lint Resource (push) Has been cancelled
Licht ist in GTA nie synchronisiert - DrawSpotLight zeichnet nur lokal fuer den
aktuellen Frame. "Gesynct" heisst deshalb: der Zustand wird als Statebag
repliziert und jeder Client zeichnet die Lampen aller Taucher in seiner Naehe
selbst. Muster uebernommen aus d4rk_phone (Statebag, adaptives Polling,
Distanzfilter).

client/light.lua ist ein reiner Renderer ohne gemeinsamen Zustand mit main.lua -
er kommt mit dem Statebag allein aus und kennt weder Ausruestung noch Flasche.

- Richtung ueber zwei bone-relative Punkte am Kopf-Bone statt ueber
  GetEntityForwardVector: beim Tauchen liegt der Ped waagerecht im Wasser, der
  Entity-Forward wuerde stur horizontal leuchten. Die Offsets von
  GetPedBoneCoords sind laut Native-Doku "relative to the bone's rotation",
  die Differenz zweier solcher Punkte enthaelt also den Pitch
- Toggle per lib.addKeybind, Standard L, vom Spieler umlegbar
- Distanzfilter und Limit auf die naechsten N Lampen, Schatten abschaltbar
- Prop-Model wird vorher mit IsModelValid geprueft: lib.requestModel wirft bei
  ungueltigen Models einen Error, der sonst die ganze Ausruestung lahmlegt
- Lampen-Status im HUD

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-10 23:56:40 +02:00
D4rkst3randClaude Opus 5 28ab8e796c feat(hud): NUI-Overlay mit Luft und Tauchtiefe
Lint / Lint Resource (push) Has been cancelled
Ersetzt die qbx.drawText2d-Anzeige (rohe Zahl plus Uhr-Emoji in der Ecke, jeden
Frame neu gezeichnet) durch ein NUI-Overlay.

- Luft als Ring mit mm:ss, Farbstufen aus config.warnAtSeconds abgeleitet,
  Pulsieren im kritischen Bereich
- Tiefe in Metern ueber GetWaterHeight, geglaettet damit Wellengang die Zahl
  nicht zappeln laesst; Einfaerbung ab config.deepWarningDepth
- Platz fuer den Lampen-Status, wird in Phase 5 befuellt
- Sichtbar nur mit angelegter Ausruestung unter Wasser, mit Fade
- Updates gedrosselt auf 4/s statt jeden Frame
- Kein backdrop-filter (bekannter FiveM-Bug)

Die geglaettete Tiefe speist auch den tiefenabhaengigen Verbrauch, der bisher
bei jedem Tick neu und ungeglaettet gemessen wurde.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-10 23:49:03 +02:00
D4rkst3randClaude Opus 5 d661152bc9 feat: Flaschengroessen mit echter Laufzeit und persistenter Restluft
Lint / Lint Resource (push) Has been cancelled
Der Sauerstoff war eine lokale Client-Variable: nicht persistent, an kein Item
gebunden, weg bei Relog. Dazu ergab startingOxygenLevel=100 bei decayRate=1/s
genau 100 Sekunden Tauchzeit statt Minuten.

Sauerstoff-Logik:
- Restsekunden statt Punkte, Verbrauch ueber GetGameTimer-Delta statt gezaehlter
  Wait(1000) - ein Tick laeuft unter Last laenger als eine Sekunde, was sich
  ueber einen langen Tauchgang aufsummiert
- Float-Vergleiche (oxygenLevel % 10 == 0, == 0) raus, Warnschwellen als
  config.warnAtSeconds, jede Schwelle einmal pro Tauchgang
- Verbrauch steigt mit der Tiefe (1 + tiefe/30, gedeckelt), abschaltbar
- Anzeige als mm:ss

Flaschen:
- Vier Items mit capacity in Sekunden (300/600/900/1200) in config/shared.lua
- Restluft in metadata.oxygen, Fuellstand zusaetzlich in metadata.durability,
  damit der Balken direkt im Inventar-Slot sichtbar ist
- Kein decay auf den Items: ox_inventory loescht sonst die leere Flasche
- Auswahlmenue beim Anlegen und Auffuellen (entfaellt bei nur einer Flasche)
- diving_fill fuellt bis capacity statt auf einen Fixwert, verweigert volle
  Flaschen und verbraucht sich nur bei Erfolg
- items_for_ox_inventory.lua zum Reinkopieren

Server:
- getTanks/syncTank als Callbacks, Restluft kann nur sinken und nicht schneller
  als maxDrainPerSecond pro echter Sekunde
- SetMetadata ersetzt die Metadata-Tabelle komplett, daher wird der bestehende
  Inhalt kopiert statt nur oxygen gesetzt

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-10 23:45:11 +02:00
D4rkst3randClaude Opus 5 58f31adfa9 fix(client): onCache('ped') haengt Props an den neuen Ped
Lint / Lint Resource (push) Has been cancelled
ox_lib feuert die onCache-Callbacks ueber Citizen.CreateThreadNow, bevor der
neue Wert in den Cache geschrieben wird (ox_lib/init.lua:188-199). cache.ped
zeigt im Callback also noch auf den alten, bereits verschwundenen Ped - die
Props waeren an genau den Ped gegangen, dessen Verschwinden der Handler
abfangen soll.

enableScuba, disableScuba, attachProp und attachGear nehmen den Ped jetzt als
Parameter (default cache.ped), der onCache-Handler reicht den Callback-Wert
durch.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-10 23:34:24 +02:00
D4rkst3randClaude Opus 5 e0f758161d docs: Attach-Parameter gegen die Native-Doku korrigiert
Lint / Lint Resource (push) Has been cancelled
Der 15. Parameter heisst syncRot, nicht fixedRot. useSoftPinning=false ist
laut Doku korrekt fuer eine Attachment, die sich nicht loesen soll.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-10 23:27:59 +02:00
D4rkst3randClaude Opus 5 921d9c89c8 fix(client): Ausruestung verschwindet nicht mehr bei Animationen
Lint / Lint Resource (push) Has been cancelled
Die Props waren soft-pinned angehaengt (useSoftPinning = true), wodurch die
Physik-Engine die Attachment bei Ragdoll und harten Anim-Uebergaengen loesen
darf. Dazu kam, dass ein Ped-Model-Wechsel und aufraeumende Fremd-Scripts
(Emotes, Handcuffs) gar nicht abgefangen wurden.

- attachProp() Helper mit harter Attachment (useSoftPinning = false)
- Watchdog-Thread prueft jede Sekunde, ob beide Props noch am aktuellen Ped
  haengen, und haengt sie sonst neu an
- Scuba-Flags werden im Watchdog neu gesetzt, weil das Spiel sie bei Respawn
  und Fahrzeugausstieg zuruecksetzt
- lib.onCache('ped') haengt die Props nach einem Model-Wechsel neu an
- Ausruestung wird beim Tod abgenommen (removeGearOnDeath, default true)
- removeGear() als gemeinsamer Teardown fuer Ablegen, leere Flasche und Tod
- onResourceStop raeumt Props und Scuba-Flags auf
- maxTimeUnderwater / maxTimeUnderwaterOutOfAir statt Magic Numbers

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-10 23:24:39 +02:00
D4rkst3randClaude Opus 5 c6b35ebe28 chore: fork als d4rk_divegear aufsetzen
Lint / Lint Resource (push) Has been cancelled
- Umbauplan (PLAN.md) mit 5 Phasen: Gear-Persistenz, Sauerstoff-Logik,
  Flaschengroessen, NUI-HUD (Tiefe + O2), gesyncte Taschenlampe
- fxmanifest auf D4rkst3r/Gitea umgestellt
- Qbox-spezifische CI entfernt (Discord-Webhooks, GitHub-Releases,
  Issue-Projektzuordnung) - laeuft auf Gitea ins Leere bzw. gegen fremde
  Endpunkte. lint.yml bleibt.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-10 23:12:59 +02:00
ChatDisabled 1e29d942aa chore: inherit org community defaults and pipeline-pling
!silent
2026-07-09 02:11:38 +02:00
amsali22andGitHub 3b77398dac fix(client): Disable EntityCollision for the mask and tank (#18)
this will disable the Collision for the mask and tank entities so they dont act like a bullet proof
2026-05-20 06:17:54 +02:00
Acc-OffandGitHub e4bc09017b feat(locales): ja.json (#20) 2026-03-29 19:35:12 +02:00
HellPortalandGitHub 8421274af5 feat(locales/tr): missing entries (#15) 2025-09-07 01:59:29 +02:00
qbox-duck[bot]andGitHub 3b4c59957a chore: synced local './' with remote 'repo-template/' 2025-09-06 22:53:49 +00:00
Justin FurnasandGitHub b5fdb3a8f9 feat: variable decay time oxygen timer (#17) 2025-07-12 15:55:47 +02:00
qbox-duck[bot]andGitHub 0f7fbc3595 chore: synced local './' with remote 'repo-template/' 2024-10-27 22:16:26 +00:00
qbox-duck[bot]andGitHub 974298263e chore: synced local './' with remote 'repo-template/' 2024-10-25 20:01:57 +00:00
qbox-duck[bot]andGitHub bbf925dd41 chore: synced local './' with remote 'repo-template/' 2024-10-24 01:54:30 +00:00
qbox-duck[bot]andGitHub 11be798ea0 chore: synced local './' with remote 'repo-template/' 2024-10-06 20:16:40 +00:00
LegenandGitHub b11d38d001 fix(locales): portuguese 2024-10-05 13:59:34 -04:00
Swellington SoaresandGitHub 23bbcd3e91 feat(locales): brazilian portuguese 2024-10-02 23:02:42 -04:00
qbox-duck[bot]andGitHub 18ac9d3d7b chore: synced local './' with remote 'repo-template/' 2024-09-29 15:31:43 +00:00
qbox-duck[bot]andGitHub 68e1817e7c chore: synced local './' with remote 'repo-template/' 2024-09-20 02:29:40 +00:00
qbox-duck[bot]andGitHub 0286bb170d chore: synced local './' with remote 'repo-template/' 2024-09-19 12:12:59 +00:00
qbox-duck[bot]andGitHub ec52cb22c0 chore: synced local './' with remote 'repo-template/' 2024-09-18 20:21:18 +00:00
qbox-duck[bot]andGitHub 5f44911b61 chore: synced local './' with remote 'repo-template/' 2024-09-08 14:56:20 +00:00
ShizoJinandGitHub ed580e805d chore(locales): german (#12) 2024-08-25 08:33:49 -07:00
Manason 94fc40bfb9 chore: bump manifest version to v1.0.1 2024-06-23 15:36:58 +00:00
SolareonandGitHub 177e195c69 refactor(client): release models (#11) 2024-06-23 08:35:43 -07:00
WindoXandGitHub 31b2a464e2 feat(locales): pt.json (#9) 2024-05-05 10:31:55 +02:00
qbox-duck[bot]andGitHub 1b002d1b15 chore: synced local './' with remote 'repo-template/' 2024-03-16 15:30:32 +00:00
qbox-duck[bot]andGitHub 44b58b5754 chore: synced local './' with remote 'repo-template/' 2024-03-13 14:30:32 +00:00
MatthewandGitHub b672697a7f refactor: update modules and locales 2024-03-03 16:36:53 -05:00
qbox-duck[bot]andGitHub f58de0f3c4 chore: synced local './' with remote 'repo-template/' 2024-02-16 01:47:16 +00:00
qbox-duck[bot]andGitHub a2f74ce737 chore: synced local './' with remote 'repo-template/' 2024-02-12 16:08:57 +00:00
qbox-duck[bot]andGitHub 24369b2f20 chore: synced local '.github/' with remote 'repo-template/.github/' 2024-01-25 07:31:23 +00:00
qbox-duck[bot]andGitHub 2d02d08a1f chore: synced local '.github/' with remote 'repo-template/.github/' 2024-01-21 03:40:15 +00:00
MatthewandGitHub 60dd3a9851 fix(client): config options and interact sound (#7) 2023-12-24 15:57:00 +01:00
qbox-duck[bot]andGitHub 7d809f99a8 chore: update contribution guidelines (#3)
* chore: update contribution guidelines

* chore(contributing): improve commit type descriptions

* chore(contributing): recommend vscode
2023-12-12 14:25:49 +00:00
qbox-duck[bot]andGitHub 9ae0d14f6b 🔄 synced local '.github/' with remote 'repo-template/.github/' 2023-12-09 18:19:09 +00:00
qbox-duck[bot]andGitHub 56a9af88f3 🔄 synced local '.github/' with remote 'repo-template/.github/' 2023-12-09 17:49:51 +00:00
qbox-duck[bot]andGitHub 9adddf9631 🔄 synced local '.github/' with remote 'repo-template/.github/' 2023-12-06 01:30:31 +00:00
qbox-duck[bot]andGitHub 9524752773 🔄 synced local '.github/' with remote 'repo-template/.github/' 2023-12-04 18:32:00 +00:00
qbox-duck[bot]andGitHub 7675beb1a2 🔄 synced local '.github/' with remote 'repo-template/.github/' 2023-12-04 14:06:19 +00:00
qbox-duck[bot]andGitHub 1b1a642cfe 🔄 synced local '.github/' with remote 'repo-template/.github/' 2023-12-04 11:55:26 +00:00
qbox-duck[bot]andGitHub f66a9eed02 🔄 synced local '.github/' with remote 'repo-template/.github/' 2023-12-04 11:52:12 +00:00
qbox-duck[bot]andGitHub 92a7045f0c 🔄 synced local '.github/' with remote 'repo-template/.github/' 2023-12-04 11:47:53 +00:00
qbox-duck[bot]andGitHub f673f943bd 🔄 synced local '.github/' with remote 'repo-template/.github/' 2023-12-04 11:18:52 +00:00
ChatDisabled 50db10c78f 🔄 synced local '.github/' with remote 'repo-template/.github/' 2023-12-03 21:20:42 +00:00
ChatDisabled efa8c423c6 🔄 synced local '.github/' with remote 'repo-template/.github/' 2023-12-03 20:20:50 +00:00