fix(light): Lampen-Sitz konfigurierbar + Debug-Befehle
Lint / Lint Resource (push) Has been cancelled

Offset und Rotation des Lampen-Props waren hart im Code, und die Rotation
(180, 90, 0) war stumpf von der Maske uebernommen - daher stand die Lampe quer
im Gesicht. d4rk_phone haengt sein Prop mit komplett null Offset und Rotation
an, das ist der bessere Ausgangspunkt.

- lampBone, lampPropOffset, lampPropRotation in die Config; Prop und Licht
  haengen jetzt am selben Bone, damit der Strahl aus der Lampe kommt
- lampProp = '' erlaubt, dann nur Licht ohne Prop
- Lichtwerte (Farbe, Reichweite, Helligkeit, Kegel) aus d4rk_phone uebernommen
  statt neu geraten; lampShadows wie dort auf false
- /divelamp und /divelight stellen beides im laufenden Spiel ein und geben die
  Config-Zeile zum Uebernehmen aus (config.debug)

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-11 08:41:22 +02:00
co-authored by Claude Opus 5
parent 043450c54c
commit 037acf1bfe
4 changed files with 132 additions and 27 deletions
+42 -15
View File
@@ -1,4 +1,9 @@
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,
@@ -61,31 +66,53 @@ return {
--- Tastenbelegungen unter "FiveM" umlegen.
lampKey = 'l',
--- Prop am Kopf. Rein optisch - das Licht selbst hängt nicht daran.
--- Ist das Model ungültig, wird nur das Licht gezeichnet und eine Warnung
--- ins Log geschrieben. Alternativen: siehe forge.plebmasters.de/objects
--- Bone, an dem Lampe und Licht hängen. Beides derselbe Bone, damit der
--- Strahl auch sichtbar aus der Lampe kommt.
--- 12844 = Kopf (wie die Maske) - Strahl folgt der Blickrichtung
--- 28422 = Hand (wie das Prop in d4rk_phone) - Handlampe, aber beim
--- Schwimmen sind die Arme seitlich ausgestreckt, der Kegel
--- wandert also mit den Schwimmzügen
lampBone = 12844,
--- Prop am Kopf. Rein optisch - das Licht hängt nicht daran, es wird nur
--- vom selben Bone aus gezeichnet. Ist das Model ungültig, leuchtet es
--- trotzdem und es gibt eine Warnung im Log.
--- Im Basegame gibt es keine Tauchlampe. Alternativen sind Varianten
--- derselben Polizei-Lampe: 'prop_police_torch', 'prop_scn_police_torch'.
--- Auf '' setzen = gar kein Prop, nur Licht.
lampProp = 'prop_cs_police_torch',
--- Position des Lichts relativ zum Kopf-Bone (bone-relativ, nicht Weltkoordinaten).
lampOffset = vec3(0.0, 0.15, 0.0),
--- Sitz des Props am Bone. Wie in d4rk_phone bewusst auf null: das Prop sitzt
--- dann genau im Bone statt auf geratenen Offsets. Beim Kopf-Bone darf ein
--- kleiner Versatz nach vorne/seitlich nötig sein, damit die Lampe nicht im
--- Schädel steckt - mit /divelamp im Spiel einstellen statt hier zu raten.
lampPropOffset = vec3(0.0, 0.0, 0.0),
lampPropRotation = vec3(0.0, 0.0, 0.0),
--- Ursprung des Lichtkegels relativ zum Bone (bone-relativ, nicht Welt).
--- Sollte ungefähr dort liegen, wo das Prop sitzt.
lampOffset = vec3(0.0, 0.0, 0.0),
--- Richtung des Lichtkegels, ebenfalls bone-relativ. Leuchtet der Kegel in die
--- falsche Richtung, hier die Achse tauschen oder das Vorzeichen drehen -
--- welche lokale Achse des Kopf-Bones nach vorne zeigt, hängt am Skelett.
lampDirection = vec3(0.0, 1.0, 0.0),
--- Lichtfarbe als { r, g, b }, 0-255. Leicht kühl für Unterwasser.
lampColour = { 225, 245, 255 },
--- Lichtwerte aus d4rk_phone übernommen - dort im Betrieb erprobt, statt hier
--- neu geraten. Leicht warmweiß wie eine echte Taschenlampe.
lampColour = { 255, 250, 235 },
lampDistance = 30.0, -- Reichweite in Metern
lampBrightness = 6.0, -- Helligkeit
lampRoundness = 1.0, -- Weichzeichnung des Kegelrands
lampRadius = 14.0, -- Öffnungswinkel
lampFalloff = 1.5, -- Abfall zum Rand hin
lampDistance = 28.0, -- Reichweite in Metern
lampBrightness = 3.0, -- Helligkeit
lampRoundness = 0.0, -- Weichzeichnung des Kegelrands
lampRadius = 16.0, -- Öffnungswinkel
lampFalloff = 2.0, -- Abfall zum Rand hin
--- Schatten kosten deutlich Performance. Auf false wird DrawSpotLight statt
--- DrawSpotLightWithShadow benutzt - sieht flacher aus, läuft aber spürbar besser.
lampShadows = true,
--- Schatten kosten deutlich Performance. d4rk_phone nutzt bewusst das
--- schattenlose DrawSpotLight, deshalb hier auch der Default - unter Wasser
--- fällt der Unterschied kaum auf, in einer Höhle mit mehreren Tauchern
--- dagegen sehr wohl.
lampShadows = false,
--- Ab dieser Entfernung werden fremde Lampen nicht mehr gezeichnet (Meter).
lampDrawDistance = 45.0,