-- Weather Admin Management -- local weatherTypes = { { label = 'Blizzard', value = 'BLIZZARD' }, { label = 'Clear', value = 'CLEAR' }, { label = 'Clearing', value = 'CLEARING' }, { label = 'Clouds', value = 'CLOUDS' }, { label = 'Extra Sunny', value = 'EXTRASUNNY' }, { label = 'Foggy', value = 'FOGGY' }, { label = 'Neutral', value = 'NEUTRAL' }, { label = 'Overcast', value = 'OVERCAST' }, { label = 'Rain', value = 'RAIN' }, { label = 'Smog', value = 'SMOG' }, { label = 'Snow', value = 'SNOW' }, { label = 'Snowlight', value = 'SNOWLIGHT' }, { label = 'Thunder', value = 'THUNDER' }, { label = 'Xmas', value = 'XMAS' }, } local function viewWeatherEvent(index, weatherEvent, isQueued) local metadata = isQueued and { ('Weather %s'):format(weatherEvent.weather), ('Lasting for %s minutes'):format(weatherEvent.time) } or { ('Weather %s'):format(weatherEvent.weather), ('%s Minutes Remaining'):format(weatherEvent.time) } lib.registerContext({ id = 'Renewed-Weathersync:client:changeWeather', title = 'Change Weather', menu = 'Renewed-Weathersync:client:manageWeather', options = { { title = 'Info', icon = 'fa-solid fa-circle-info', readOnly = true, metadata = metadata }, { title = 'Change Weather', icon = 'fa-solid fa-cloud', arrow = true, onSelect = function() local input = lib.inputDialog('Change Weather Type', { { label = 'Select Weather', type = 'select', required = true, default = weatherEvent.weather, options = weatherTypes }, }) if input and input[1] then local weather = lib.callback.await('Renewed-Weathersync:server:setWeatherType', false, index, input[1]) if weather then weatherEvent.weather = weather end end viewWeatherEvent(index, weatherEvent) end }, { title = 'Change Duration', arrow = true, icon = 'fa-solid fa-hourglass-half', onSelect = function() local input = lib.inputDialog('Change Duration', { { label = 'Duration in minutes', type = 'slider', required = true, min = 1, max = 120, default = weatherEvent.time, }, }) if input and input[1] then local time = lib.callback.await('Renewed-Weathersync:server:setEventTime', false, index, input[1]) if time then weatherEvent.time = time end end viewWeatherEvent(index, weatherEvent) end }, { title = 'Remove Weather Event', arrow = true, icon = 'fa-solid fa-circle-xmark', onSelect = function() TriggerServerEvent('Renewed-Weather:server:removeWeatherEvent', index) end } } }) lib.showContext('Renewed-Weathersync:client:changeWeather') end RegisterNetEvent('Renewed-Weather:client:viewWeatherInfo', function(weatherTable) local options = {} local amt = 0 local startingIn = 0 for i = 1, #weatherTable do local currentWeather = weatherTable[i] amt += 1 local isQueued = i > 1 local meatadata = isQueued and { ('Starting in %s minutes'):format(startingIn), ('Lasting for %s minutes'):format(currentWeather.time) } or { ('%s Minutes Remaining'):format(currentWeather.time) } options[amt] = { title = isQueued and ('Upcomming Weather: %s'):format(currentWeather.weather) or ('Current Weather: %s'):format(currentWeather.weather), description = isQueued and ('Starting in %s minutes'):format(startingIn), arrow = true, icon = isQueued and 'fa-solid fa-cloud-arrow-up' or 'fa-solid fa-cloud', metadata = meatadata, onSelect = function() viewWeatherEvent(i, currentWeather, isQueued) end } startingIn += currentWeather.time end lib.registerContext({ id = 'Renewed-Weathersync:client:manageWeather', title = 'Weather Management', options = options }) lib.showContext('Renewed-Weathersync:client:manageWeather') end)