2026-04-14 17:41:39 +02:00

45 lines
1.5 KiB
Lua

-- Sendet die deutsche Echtzeit an alle Clients
-- Deutschland = UTC+1 (Winter) / UTC+2 (Sommer) - wird automatisch berechnet
local function getGermanTime()
local utcTime = os.time()
-- Sommerzeit berechnen (letzter Sonntag im März bis letzter Sonntag im Oktober)
local date = os.date("*t", utcTime)
local year = date.year
-- Letzter Sonntag im März
local marchDate = os.time({year=year, month=3, day=31, hour=1, min=0, sec=0})
local marchWday = os.date("*t", marchDate).wday
local dstStart = marchDate - ((marchWday - 1) % 7) * 86400
-- Letzter Sonntag im Oktober
local octDate = os.time({year=year, month=10, day=31, hour=1, min=0, sec=0})
local octWday = os.date("*t", octDate).wday
local dstEnd = octDate - ((octWday - 1) % 7) * 86400
local offset = 1 -- UTC+1 Winterzeit
if utcTime >= dstStart and utcTime < dstEnd then
offset = 2 -- UTC+2 Sommerzeit
end
local germanTime = os.date("*t", utcTime + offset * 3600)
return germanTime.hour, germanTime.min, germanTime.sec
end
-- Alle 30 Sekunden Zeit an Clients senden
CreateThread(function()
while true do
local hour, minute, second = getGermanTime()
TriggerClientEvent('timesync:setTime', -1, hour, minute)
Wait(2000)
end
end)
-- Neue Spieler sofort synchronisieren
AddEventHandler('playerSpawned', function()
local src = source
local hour, minute, second = getGermanTime()
TriggerClientEvent('timesync:setTime', src, hour, minute)
end)