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>
This commit is contained in:
@@ -38,4 +38,45 @@ return {
|
||||
|
||||
--- Ab dieser Tiefe wird die Tiefenanzeige eingefärbt (Meter).
|
||||
deepWarningDepth = 25.0,
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
-- Taschenlampe
|
||||
---------------------------------------------------------------------------
|
||||
|
||||
--- Taste zum An- und Ausschalten. Der Spieler kann sie in den FiveM-
|
||||
--- 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
|
||||
lampProp = 'prop_cs_police_torch',
|
||||
|
||||
--- Position des Lichts relativ zum Kopf-Bone (bone-relativ, nicht Weltkoordinaten).
|
||||
lampOffset = vec3(0.0, 0.15, 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 },
|
||||
|
||||
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
|
||||
|
||||
--- Schatten kosten deutlich Performance. Auf false wird DrawSpotLight statt
|
||||
--- DrawSpotLightWithShadow benutzt - sieht flacher aus, läuft aber spürbar besser.
|
||||
lampShadows = true,
|
||||
|
||||
--- 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