Scripts/resources/[renewed]/Renewed-Weathersync/client/admin.lua

188 lines
5.3 KiB
Lua
Raw Normal View History

2024-12-30 10:15:34 +00:00
-- 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)