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>
83 lines
3.3 KiB
Lua
83 lines
3.3 KiB
Lua
return {
|
|
putOnSuitTimeMs = 5000,
|
|
takeOffSuitTimeMs = 5000,
|
|
refillTankTimeMs = 5000,
|
|
|
|
--- Sekunden Luft, die pro echter Sekunde verbraucht werden (vor dem Tiefenfaktor).
|
|
decayRate = 1.0,
|
|
|
|
--- Intervall des Watchdogs, der prüft ob die Ausrüstung noch am Ped hängt (ms).
|
|
gearWatchdogIntervalMs = 1000,
|
|
|
|
--- Sekunden, die der Spieler ohne Ausrüstung unter Wasser überlebt (Vanilla-Verhalten).
|
|
maxTimeUnderwater = 50.0,
|
|
|
|
--- Sekunden, sobald die Flasche leer ist. Bewusst kurz: leer tauchen soll wehtun.
|
|
maxTimeUnderwaterOutOfAir = 1.0,
|
|
|
|
--- Ausrüstung beim Tod abnehmen. Die Flasche bleibt mit ihrer Restluft im Inventar.
|
|
removeGearOnDeath = true,
|
|
|
|
--- Restsekunden, bei denen gewarnt wird. Jede Schwelle löst einmal pro Tauchgang aus.
|
|
warnAtSeconds = { 60, 30, 10 },
|
|
|
|
--- Verbrauch steigt mit der Tiefe: faktor = 1 + tiefe / depthDecayReference.
|
|
--- Macht die großen Flaschen erst sinnvoll. Auf false = konstanter Verbrauch,
|
|
--- dann stimmen die 5/10/15/20 Minuten exakt.
|
|
depthDecayEnabled = true,
|
|
depthDecayReference = 30.0,
|
|
maxDecayFactor = 4.0,
|
|
|
|
--- NUI-HUD mit Luft und Tiefe. Auf false bleibt die Ausrüstung voll nutzbar,
|
|
--- nur ohne Anzeige.
|
|
hudEnabled = true,
|
|
|
|
--- Update-Intervall des HUD (ms). 250 = 4 Updates pro Sekunde, reicht für eine
|
|
--- ruhige Anzeige ohne unnötigen NUI-Traffic.
|
|
hudUpdateIntervalMs = 250,
|
|
|
|
--- 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,
|
|
}
|