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>
47 lines
2.1 KiB
Lua
47 lines
2.1 KiB
Lua
-- Von Client und Server benutzt. Muss in fxmanifest unter files{} stehen,
|
|
-- damit lib.require die Datei auf beiden Seiten laden kann.
|
|
|
|
local config = {
|
|
--- Tauchflaschen.
|
|
--- capacity = Laufzeit in Sekunden bei normalem Verbrauch.
|
|
--- pressure = Fülldruck in bar. Reine Anzeige: der angezeigte Druck ist
|
|
--- pressure * (Restluft / capacity). Bei konstantem Volumen ist der
|
|
--- Druck proportional zur verbliebenen Gasmenge, das passt also.
|
|
--- Dass alle Flaschen denselben Fülldruck haben ist gewollt - in echt
|
|
--- macht das Volumen die Laufzeit, nicht der Druck.
|
|
--- Reihenfolge = Reihenfolge im Auswahlmenü.
|
|
tanks = {
|
|
{ name = 'diving_tank_small', capacity = 300, pressure = 300 }, -- 5 Minuten
|
|
{ name = 'diving_tank_medium', capacity = 600, pressure = 300 }, -- 10 Minuten
|
|
{ name = 'diving_tank_large', capacity = 900, pressure = 300 }, -- 15 Minuten
|
|
{ name = 'diving_tank_xl', capacity = 1200, pressure = 300 }, -- 20 Minuten
|
|
},
|
|
|
|
--- Flaschen ohne Metadata als voll behandeln. Betrifft alles, was frisch aus
|
|
--- einem Shop, per AddItem oder aus einem Admin-Befehl kommt - da ist noch kein
|
|
--- oxygen gesetzt. Auf false muss jede neue Flasche erst mit einer Kartusche
|
|
--- befüllt werden, bevor man damit tauchen kann.
|
|
newTanksFull = true,
|
|
|
|
--- Wie oft der Client die Restluft an den Server meldet (Sekunden).
|
|
--- Bei einem Crash gehen maximal so viele Sekunden Luft verloren.
|
|
syncIntervalSeconds = 15,
|
|
|
|
--- Obergrenze für die serverseitige Plausibilitätsprüfung: so viele Sekunden
|
|
--- Luft kann ein Spieler höchstens pro echter Sekunde verbrauchen. Muss über
|
|
--- maxDecayFactor aus config/client.lua liegen, sonst wird ehrlichen Spielern
|
|
--- in großer Tiefe fälschlich Luft zurückgegeben.
|
|
maxDrainPerSecond = 5.0,
|
|
}
|
|
|
|
config.tankByName = {}
|
|
config.tankNames = {}
|
|
|
|
for i = 1, #config.tanks do
|
|
local tank = config.tanks[i]
|
|
config.tankByName[tank.name] = tank
|
|
config.tankNames[i] = tank.name
|
|
end
|
|
|
|
return config
|