Zum Inhalt

Wetter & Zeit

Synchronisiertes Wetter- und Echtzeit-System. Der Server erzeugt einen Wetter-Rasterplan für 7 Tage in der Datenbank, Clients lesen den aktuellen Zustand via GlobalState.


Architektur

Server
  └─ generateWeatherGrid()      → DB-Tabelle weather_grid (7-Tage-Raster, 15-min-Slots)
  └─ runWeatherList()            → Wetterwechsel nach Slot-Dauer
  └─ GlobalState.weather         → wird von Clients gelesen
  └─ GlobalState.currentTime     → Echtzeitstunde (Deutschland-Zeitzone)
  └─ GlobalState.isNight         → boolean

Client
  └─ liest GlobalState und wendet Wetter/Uhrzeit an

Wetter-API (Server)

-- Aktuelles Wetter abfragen
cv.weather.getCurrentWeatherInformation()
-- → { weather, windSpeed, windDirection, hasSnow, time }

-- Aktuelle Uhrzeit (Echtzeit Deutschland)
cv.weather.getCurrentTime()
-- → { hour, minute }

GlobalState-Werte

Können von Client und Server gelesen werden:

GlobalState.weather       -- { weather, windSpeed, windDirection, hasSnow }
GlobalState.currentTime   -- { hour, minute }
GlobalState.isNight       -- boolean
GlobalState.freezeTime    -- boolean
GlobalState.blackOut      -- boolean (Blackout-Modus)
GlobalState.timeScale     -- Millisekunden pro Spielminute

Wetter-Typen

Vordefinierte Typen aus Config.WeatherSettings.weatherTypes:

Typ Beschreibung normalCycle
CLEAR Klar ✅
CLOUDS Bewölkt ✅
OVERCAST Bedeckt ✅
RAIN Regen ✅
THUNDER Gewitter ✅
FOGGY Nebel ✅
SMOG Smog ✅
XMAS Schnee (Weihnachten) nur Dez 20–Jan 10
SNOW Schnee nur Dez 20–Jan 10
BLIZZARD Blizzard nur Dez 20–Jan 10
HALLOWEEN Halloween ❌ (nur manuell)

Admin Commands

Command Beschreibung Berechtigung
/blackout Blackout ein/ausschalten command.weather
hourlyweather (Server-Konsole) Wetterbericht der nächsten 24h —

Zeit-Konfiguration

Config.TimeSettings = {
    timeScaleNight = 60000,  -- ms pro Minute bei Nacht
    nightTime = {
        beginning = 21,      -- Nacht beginnt um 21 Uhr
        ending    = 6,       -- Nacht endet um 6 Uhr
    }
}

Wetter-Konfiguration

Config.WeatherSettings = {
    gridSlotsTotal    = 672,   -- 7 Tage × 24h × (60/15) Slots
    gridSlotMinutes   = 15,    -- Minuten pro Slot
    weatherCycletimer = 15,    -- Standard-Slot-Dauer in Minuten

    weatherTypes = {
        CLEAR   = { probability = 5, duration = { min = 2, max = 16 }, normalCycle = true },
        RAIN    = { probability = 2, duration = { min = 1, max = 6  }, normalCycle = true },
        -- ...
    }
}

Datenbankschema

CREATE TABLE weather_grid (
    id             INT PRIMARY KEY AUTO_INCREMENT,
    slot_time      DATETIME UNIQUE,
    weather        VARCHAR(20),
    windSpeed      FLOAT DEFAULT 0.0,
    windDirection  FLOAT DEFAULT 0.0,
    hasSnow        TINYINT(1) DEFAULT 0
);