feat(light): auf die spieleigene Scuba-Lampe umgestellt
Lint / Lint Resource (push) Has been cancelled
Lint / Lint Resource (push) Has been cancelled
GTA bringt seit v1493 eine eigene Lampe an der Tauchausruestung mit:
SetEnableScubaGearLight(ped, toggle) 0xEE2476B9EE4A094F
IsScubaGearLightEnabled(ped) 0x88274C11CF0D866D
Die sitzt an der richtigen Stelle, leuchtet in Blickrichtung und braucht weder
Prop noch Offsets noch einen Draw-Thread. Damit faellt der komplette
DrawSpotLight-Aufbau weg: Kegelwerte, Farbe, Schatten, Distanzfilter,
Lichter-Limit, die bone-relative Richtungsrechnung und das Sortieren der
Kandidaten pro Frame. client/light.lua schrumpft von ~110 auf ~55 Zeilen.
Gefunden ueber wobozkyng/esx_scuba.
- Der Flag ist ein lokaler Ped-Zustand, der Statebag bleibt also. Gesetzt wird
er per AddStateBagChangeHandler und zusaetzlich alle 500ms nachgezogen, weil
Peds beim Streaming, Respawn und Model-Wechsel neu erzeugt werden
- Die Lampe haengt an der Scuba-Kleidung (Component 8). Das Outfit wird bewusst
nicht angefasst; wer sie nicht traegt, bekommt beim Einschalten eine Meldung
statt stiller Wirkungslosigkeit
- /divelampcheck sagt, ob das aktuelle Outfit eine Lampe hat
- Prop ist jetzt optional und per Default aus
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
+22
-51
@@ -66,58 +66,29 @@ return {
|
||||
--- Tastenbelegungen unter "FiveM" umlegen.
|
||||
lampKey = 'l',
|
||||
|
||||
--- 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
|
||||
--- 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,
|
||||
|
||||
--- 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',
|
||||
|
||||
--- 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),
|
||||
|
||||
--- Lichtwerte aus d4rk_phone übernommen - dort im Betrieb erprobt, statt hier
|
||||
--- neu geraten. Leicht warmweiß wie eine echte Taschenlampe.
|
||||
lampColour = { 255, 250, 235 },
|
||||
|
||||
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. 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,
|
||||
|
||||
--- Wie viele Lampen gleichzeitig gezeichnet werden. Die nächstgelegenen
|
||||
--- gewinnen. Schützt vor Frame-Einbrüchen bei Gruppentauchgängen.
|
||||
lampMaxLights = 4,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user