101 lines
		
	
	
		
			No EOL
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			101 lines
		
	
	
		
			No EOL
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
| local Config = {
 | |
|     Weather = true,
 | |
|     Time = true
 | |
| }
 | |
| 
 | |
| local apiKey = "8d27737fd1425cd3d243f54e4f80e765"
 | |
| local city = "Berlin"
 | |
| local weatherType = "CLEAR"
 | |
| local lastWeatherUpdate = os.time()
 | |
| 
 | |
| function getRealTime()
 | |
|     local now = os.date("*t")
 | |
|     local hour = now.hour
 | |
|     return now.hour, now.min
 | |
| end
 | |
| 
 | |
| function fetchWeather()
 | |
|     local url = string.format("https://api.openweathermap.org/data/2.5/weather?q=%s&appid=%s", city, apiKey)
 | |
|     
 | |
|     PerformHttpRequest(url, function(statusCode, response, headers)
 | |
|         if statusCode == 200 then
 | |
|             local data = json.decode(response)
 | |
|             if data and data.weather and #data.weather > 0 then
 | |
|                 local mainWeather = data.weather[1].main:lower()
 | |
|                 print(mainWeather)
 | |
|                 if mainWeather == "rain" then
 | |
|                     weatherType = "RAIN"
 | |
|                 elseif mainWeather == "clouds" then
 | |
|                     weatherType = "CLOUDS"
 | |
|                 elseif mainWeather == "clear" then
 | |
|                     weatherType = "CLEAR"
 | |
|                 elseif mainWeather == "snow" then
 | |
|                     weatherType = "XMAS"
 | |
|                 elseif mainWeather == "fog" or mainWeather == "mist" then
 | |
|                     weatherType = "FOGGY"
 | |
|                 elseif mainWeather == "thunderstorm" then
 | |
|                     weatherType = "THUNDER"
 | |
|                 else
 | |
|                     weatherType = "CLEAR"
 | |
|                 end
 | |
|                 print(string.format("[WetterSync] Neues Wetter geladen: %s", weatherType))
 | |
|             end
 | |
|         else
 | |
|             print("[WetterSync] Fehler beim Abrufen des Wetters: Statuscode " .. statusCode)
 | |
|         end
 | |
|     end, 'GET', '', { ["Content-Type"] = 'application/json' })
 | |
| end
 | |
| 
 | |
| Citizen.CreateThread(function()
 | |
|     while true do
 | |
|         local hour, minute = getRealTime()
 | |
|         local currentTime = os.time()
 | |
| 
 | |
|         if currentTime - lastWeatherUpdate >= 600 then
 | |
|             fetchWeather()
 | |
|             lastWeatherUpdate = currentTime
 | |
|         end
 | |
| 
 | |
|         if Config.Time then
 | |
|             TriggerClientEvent('wsync:updateTime', -1, hour, minute)
 | |
|         end
 | |
|         if Config.Weather then
 | |
|             TriggerClientEvent('wsync:updateWeather', -1, weatherType)
 | |
|         end
 | |
| 
 | |
|         Citizen.Wait(30000)
 | |
|     end
 | |
| end)
 | |
| 
 | |
| RegisterNetEvent('wsync:requestSync')
 | |
| AddEventHandler('wsync:requestSync', function()
 | |
|     local hour, minute = getRealTime()
 | |
|     --TriggerClientEvent('wsync:updateTime', source, hour, minute)
 | |
|     TriggerClientEvent('wsync:updateWeather', source, weatherType)
 | |
| end)
 | |
| 
 | |
| --[[
 | |
|     TimeSync
 | |
| ]]
 | |
| 
 | |
| local function getBerlinTime()
 | |
|     PerformHttpRequest("https://timeapi.io/api/Time/current/zone?timeZone=Europe/Berlin", function(statusCode, response, headers)
 | |
|         if statusCode == 200 then
 | |
|             local data = json.decode(response)
 | |
|             if data and data.hour and data.minute then
 | |
|                 TriggerClientEvent("realtime-sync:updateTime", -1, data.hour, data.minute)
 | |
|             else
 | |
|                 print("[RealtimeSync] Fehler beim Parsen der Zeitdaten.")
 | |
|             end
 | |
|         else
 | |
|             print("[RealtimeSync] Fehler beim Abrufen der Zeitdaten: Statuscode " .. tostring(statusCode))
 | |
|         end
 | |
|     end, "GET", "", {["Content-Type"] = "application/json"})
 | |
| end
 | |
| 
 | |
| Citizen.CreateThread(function()
 | |
|     while true do
 | |
|         Citizen.Wait(360000)
 | |
|         getBerlinTime()
 | |
|     end
 | |
| end) | 
