14 Commits
Author SHA1 Message Date
D4rkst3randClaude Opus 5.5 056215d0ae fix: Befehlsausgabe in die F8-Konsole statt nur in die Serverkonsole (#81)
/tauchartikel und /tauchstand laufen jetzt ueber Diagnosebefehl: die Ausgabe geht an die F8-Konsole
des Aufrufers. Reine Konsolenbefehle sind fuer Admins im Spiel offen
(restricted group.admin, Betreiber 07.10.2026). print -> sag in den
betroffenen Dateien; ausserhalb eines Diagnosebefehls ist sag ein print.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-07 12:49:19 +02:00
D4rkst3randClaude Opus 5.5 96c57d56a0 fix: Balken ueber d4rk_lib, /tauchstand zeigt die Slots
- lib.progressBar -> exports.d4rk_lib:progress (Betreiber: "beim benutzen
  kommt noch der alte balken von ox_lib").
- /tauchstand <id> (Serverkonsole): was liegt in rigSlot/maskSlot. Erster
  Lauf: beide Slots "clothing" mit der richtigen Kennung - vor dem
  Kleidungseintrag gekauft; getWorn antwortete also richtig.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-29 00:21:14 +02:00
D4rkst3randClaude Opus 5.5 daefe46cb8 feat: Taucherflasche und Maske im Kleiderladen (Modell m)
Gemessen am 29.09.2026 (/d4rk_kleidungsstand, Betreiber):
Flasche m:c:8:mp_m_christmas2017:1 (Unterhemd, Slot 31),
Maske m:p:1:mp_m_christmas2017:0 - ein PROP im Brillenslot 27, nicht die
Maskenkomponente (angenommen war 29). texture -1: alle 26 Farben.
/tauchartikel legt die d4rk_garment-Zeilen auf Zuruf an. Modell f fehlt.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-29 00:10:11 +02:00
D4rkst3randClaude Opus 5.5 accee02a05 feat: Patronen per Client-Export, /tauchartikel legt die Items an
CreateUseableItem feuert fuer Items aus d4rk_items nie: consume ist dort
immer gesetzt (daten.lua:224), das Inventar erreicht den qbx-Rueckruf nur
bei consume == nil (server.lua:623). Die Patronen tragen deshalb
client_export = d4rk_divegear.patroneBenutzen und consume 0, wie
d4rk_medical. /tauchartikel legt die sieben Items ueber adminItemCreate an,
nur auf Zuruf; "nachziehen" stellt bei vorhandenen nur consume und Export
richtig. Flasche und Maske consume 0 wie das Kleidungsitem clothing.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-28 23:52:27 +02:00
D4rkst3randClaude Opus 5.5 e64a1bd3d0 feat: Flasche und Maske als Kleidung, Patronen tauschen, HUD-Anmeldung
- 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>
2026-09-28 23:48:26 +02:00
D4rkst3randClaude Opus 5 a49e6d0f6a fix: weggegebene Ausruestung beendet den Tauchgang
Gleiche Bug-Klasse wie bei der Flasche, nur hatte mein Fix davor ausschliesslich
die Flasche geprueft: wer diving_gear im Tauchgang weggab, blieb ausgeruestet
und atmete weiter.

Die Besitzpruefung deckt jetzt beides ab. verifyTank heisst verifyGear und gibt
{ gear, tank } zurueck - fehlt eines von beidem, kommt die Ausruestung ab, mit
der passenden Meldung. Umsortieren im Inventar bindet weiterhin nur auf den
neuen Slot um.

Die Item-Namen stehen jetzt als gearItem/fillItem in config/shared.lua, statt
verteilt als Zeichenketten im Server-Code.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-11 10:08:00 +02:00
D4rkst3randClaude Opus 5 fcca73bc7a fix: weggegebene Flasche beendet den Tauchgang + HUD-Feinschliff
Bug: wer die getragene Flasche im Tauchgang weggab, konnte unbegrenzt
weiteratmen. Der Client hielt nur eine Slot-Nummer, die niemand mehr
gegenpruefte, und der Sync lief ins Leere. ox_inventory feuert clientseitig bei
jeder Inventar-Aenderung - dort wird jetzt beim Server nachgefragt. Ist die
Flasche weg, kommt die Ausruestung ab; wurde sie nur umsortiert, bindet der
Client auf den neuen Slot um, damit Aufraeumen im Inventar nichts kostet.

HUD:
- Werte aus den Uhren heraus in eine zweite Zeile: Druck, Lampe und Tiefe
  liegen jetzt auf einer Linie. In der Skala kollidierte die Zahl mit
  Strichen, Zeiger und rotem Bereich
- Skaliert mit der Bildschirmhoehe (entworfen auf 1080p), sonst waere das in
  festen Pixeln gebaute HUD auf 1440p und 4K deutlich zu klein.
  config.hudScale kommt als Geschmacksregler obendrauf
- Zustandsklassen sitzen jetzt am HUD statt an den Uhren, weil Instrument und
  Wert in getrennten Grid-Zellen liegen

README-Renderings nachgezogen.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-11 10:04:08 +02:00
D4rkst3randClaude Opus 5 e5f47610a1 feat: Tiefengrenze ueber das Atemgas
Lint / Lint Resource (push) Has been cancelled
Macht ein Tiefenlimit mechanisch statt zur Absprache - und oeffnet die tiefen
Spots fuer den, der die richtige Flasche dabei hat.

Der Grund fuer die realen 40-45 m ist nicht der Druck, sondern der Stickstoff in
der Pressluft: tiefer wirkt er narkotisch, ab ~56 m wird auch der Sauerstoff
giftig. Wer tiefer will, atmet Trimix, wo Helium einen Teil des Stickstoffs
ersetzt. Genau so umgesetzt:

- maxDepth und gas pro Flasche in config/shared.lua; Pressluft 45 m,
  neues diving_tank_trimix 100 m
- Darunter Tiefenrausch in drei Stufen: Bildschirmeffekt, Kamerawackeln,
  hoeherer Luftverbrauch, in der letzten Stufe Schaden. Schwellen, Effekte,
  Staerken und Schaden komplett in config.narcosis
- Vorwarnung 5 m vor der Grenze, Tiefenanzeige im HUD wird rot und pulsiert
- Effekte werden beim Auftauchen, Ablegen, Tod und Resource-Stop aufgeraeumt
- Auswahlmenue zeigt Gas und Tiefengrenze pro Flasche
- Icon fuer die Trimix-Flasche, violett abgesetzt

Keine Dekompression - auf Wunsch bewusst weggelassen.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-11 09:11:12 +02:00
D4rkst3randClaude Opus 5 3ab70d44ef fix(server): frisch gekaufte Flaschen sind nicht mehr leer
Lint / Lint Resource (push) Has been cancelled
Eine Flasche ohne gesetzte Metadata - aus dem Shop, per AddItem oder per
Admin-Befehl - wurde in getTankList als 0 gelesen. Anlegen scheiterte damit an
"Diese Tauchflasche ist leer!", man haette also erst eine Kartusche verbrauchen
muessen, um ueberhaupt tauchen zu koennen.

Dazu waren sich die beiden Codepfade uneinig: syncTank hat denselben Fall auf
capacity zurueckfallen lassen, also als voll behandelt.

Beide gehen jetzt ueber readOxygen(), gesteuert von shared.newTanksFull
(default true = neue Flasche ist voll).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-11 00:31:37 +02:00
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 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
Matthew b50550abd5 refactor: split config 2023-11-17 22:11:02 -08:00
Manason 5b5ba9e1af refactor: general improvement and cleanup 2023-11-08 23:23:33 -08:00
unknown 5173547b24 init commit 2023-11-08 17:52:35 -08:00