45 lines
1.5 KiB
Lua
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)
|