From c35ed95127f1f0a8f8e25cf7c7a290e5844a1b9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emre=20C=C3=BCrg=C3=BCl?= Date: Thu, 24 May 2018 17:24:01 +0200 Subject: [PATCH 1/2] Add Universal Menu hooks --- README.md | 7 +-- vSync/__resource.lua | 9 +--- vSync/vs_client.lua | 119 +++++++++++++++++++++++++++++++++++++++++++ vSync/vs_server.lua | 41 ++++++++++++++- 4 files changed, 164 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 0899092..76feb13 100644 --- a/README.md +++ b/README.md @@ -2,9 +2,9 @@ ### Simple weather and time sync script for FiveM servers. -**Current version:** 1.3.0 -**Author:** Vespura -**Last update:** 01-13-2018 +**Current version:** 1.4.0 +**Author:** Vespura, Scammer +**Last update:** 05-24-2018 *** @@ -13,6 +13,7 @@ - Blackout. Enable/disable this in the config or using /blackout ingame. - Weather and Time synced across all players. - Custom permissions for the commands. +- Adds corresponding menu entries to [Universal Menu](https://github.com/FiveM-Scripts/fivem-universal-menu) if installed (only for permitted players) # Commands `/weather ` Change the weather type (will fade to the new weather type within 15 seconds). diff --git a/vSync/__resource.lua b/vSync/__resource.lua index 51d0256..a83109f 100644 --- a/vSync/__resource.lua +++ b/vSync/__resource.lua @@ -1,9 +1,4 @@ resource_manifest_version '44febabe-d386-4d18-afbe-5e627f4af937' -client_scripts { - 'vs_client.lua', -} - -server_scripts { - 'vs_server.lua', -} +client_script 'vs_client.lua' +server_script 'vs_server.lua' diff --git a/vSync/vs_client.lua b/vSync/vs_client.lua index 287807f..7f1412f 100644 --- a/vSync/vs_client.lua +++ b/vSync/vs_client.lua @@ -91,3 +91,122 @@ RegisterNetEvent('vSync:notify') AddEventHandler('vSync:notify', function(message, blink) ShowNotification(message, blink) end) + +--[[ UNIVERSAL MENU HOOKING STUFF ]]-- +local weatherTypes = { + 'EXTRASUNNY', + 'CLEAR', + 'NEUTRAL', + 'SMOG', + 'FOGGY', + 'OVERCAST', + 'CLOUDS', + 'CLEARING', + 'RAIN', + 'THUNDER', + 'SNOW', + 'BLIZZARD', + 'SNOWLIGHT', + 'XMAS', + 'HALLOWEEN', +} +local itemBlackout, itemFreezeWeather, itemFreezeTime + +AddEventHandler('menu:setup', function() + TriggerServerEvent('vSync:canAddMenuItems') +end) + +RegisterNetEvent('vSync:canAddMenuItems') +AddEventHandler('vSync:canAddMenuItems', function() + TriggerEvent('menu:registerModuleMenu', 'vSync', function(id) + -- Time + TriggerEvent('menu:addModuleSubMenu', id, "Time", function(id) + -- Change Time + TriggerEvent('menu:addModuleSubMenu', id, "Change Time", function(id) + TriggerEvent('menu:addModuleItem', id, "Morning", nil, false, function(id) TriggerEvent('vSync:time', {9, 0}) end) + TriggerEvent('menu:addModuleItem', id, "Noon", nil, false, function(id) TriggerEvent('vSync:time', {12, 0}) end) + TriggerEvent('menu:addModuleItem', id, "Evening", nil, false, function(id) TriggerEvent('vSync:time', {18, 0}) end) + TriggerEvent('menu:addModuleItem', id, "Night", nil, false, function(id) TriggerEvent('vSync:time', {23, 0}) end) + end, false) + + -- Freeze Time + TriggerEvent('menu:addModuleItem', id, "Freeze Time", false, function(id) + itemFreezeTime = id + end, function(id) + TriggerEvent('vSync:freezeTime') + end) + end, false) + + -- Weather + TriggerEvent('menu:addModuleSubMenu', id, "Weather", function(id) + -- Change Weather + TriggerEvent('menu:addModuleSubMenu', id, "Change Weather", function(id) + for _, weatherType in ipairs(weatherTypes) do + TriggerEvent('menu:addModuleItem', id, weatherType, nil, false, function(id) + TriggerEvent('vSync:weather', {weatherType}) + end) + end + end, false) + + -- Dynamic Weather + TriggerEvent('menu:addModuleItem', id, "Dynamic Weather", true, function(id) + itemFreezeWeather = id + end, function(id) + TriggerEvent('vSync:freezeWeather') + end) + end, false) + + -- Blackout + TriggerEvent('menu:addModuleItem', id, "Blackout", false, function(id) + itemBlackout = id + end, function(id) + TriggerEvent('vSync:blackout') + end) + end, false) +end) + +RegisterNetEvent('vSync:time') +AddEventHandler('vSync:time', function(args) + TriggerServerEvent('vSync:time', args) +end) + +RegisterNetEvent('vSync:freezeTime') +AddEventHandler('vSync:freezeTime', function() + TriggerServerEvent('vSync:freezeTime') +end) + +RegisterNetEvent('vSync:itemFreezeTimeSync') +AddEventHandler('vSync:itemFreezeTimeSync', function(state) + if itemFreezeTime then + TriggerEvent('menu:setOnOffState', itemFreezeTime, state) + end +end) + +RegisterNetEvent('vSync:weather') +AddEventHandler('vSync:weather', function(args) + TriggerServerEvent('vSync:weather', args) +end) + +RegisterNetEvent('vSync:freezeWeather') +AddEventHandler('vSync:freezeWeather', function() + TriggerServerEvent('vSync:freezeWeather') +end) + +RegisterNetEvent('vSync:itemFreezeWeatherSync') +AddEventHandler('vSync:itemFreezeWeatherSync', function(state) + if itemFreezeWeather then + TriggerEvent('menu:setOnOffState', itemFreezeWeather, state) + end +end) + +RegisterNetEvent('vSync:blackout') +AddEventHandler('vSync:blackout', function() + TriggerServerEvent('vSync:blackout') +end) + +RegisterNetEvent('vSync:itemBlackoutSync') +AddEventHandler('vSync:itemBlackoutSync', function(state) + if itemBlackout then + TriggerEvent('menu:setOnOffState', itemBlackout, state) + end +end) \ No newline at end of file diff --git a/vSync/vs_server.lua b/vSync/vs_server.lua index 46a5163..0df0b3e 100644 --- a/vSync/vs_server.lua +++ b/vSync/vs_server.lua @@ -63,6 +63,11 @@ function isAllowedToChange(player) end RegisterCommand('freezetime', function(source, args) + TriggerClientEvent('vSync:freezeTime', source) +end) + +RegisterServerEvent('vSync:freezeTime') +AddEventHandler('vSync:freezeTime', function() if source ~= 0 then if isAllowedToChange(source) then freezeTime = not freezeTime @@ -71,6 +76,7 @@ RegisterCommand('freezetime', function(source, args) else TriggerClientEvent('vSync:notify', source, 'Time is ~y~no longer frozen~s~.') end + TriggerClientEvent('vSync:itemFreezeTimeSync', -1, freezeTime) else TriggerClientEvent('chatMessage', source, '', {255,255,255}, '^8Error: ^1You are not allowed to use this command.') end @@ -81,10 +87,16 @@ RegisterCommand('freezetime', function(source, args) else print("Time is no longer frozen.") end + TriggerClientEvent('vSync:itemFreezeTimeSync', -1, freezeTime) end end) -RegisterCommand('freezeweather', function(source, args) +RegisterCommand('freezeweather', function(source) + TriggerClientEvent('vSync:freezeWeather', source) +end) + +RegisterServerEvent('vSync:freezeWeather') +AddEventHandler('vSync:freezeWeather', function() if source ~= 0 then if isAllowedToChange(source) then DynamicWeather = not DynamicWeather @@ -93,6 +105,7 @@ RegisterCommand('freezeweather', function(source, args) else TriggerClientEvent('vSync:notify', source, 'Dynamic weather changes are now ~b~enabled~s~.') end + TriggerClientEvent('vSync:itemFreezeWeatherSync', -1, DynamicWeather) else TriggerClientEvent('chatMessage', source, '', {255,255,255}, '^8Error: ^1You are not allowed to use this command.') end @@ -103,10 +116,16 @@ RegisterCommand('freezeweather', function(source, args) else print("Weather is no longer frozen.") end + TriggerClientEvent('vSync:itemFreezeWeatherSync', -1, DynamicWeather) end end) RegisterCommand('weather', function(source, args) + TriggerClientEvent('vSync:weather', source, args) +end, false) + +RegisterServerEvent('vSync:weather') +AddEventHandler('vSync:weather', function(args) if source == 0 then local validWeatherType = false if args[1] == nil then @@ -152,9 +171,14 @@ RegisterCommand('weather', function(source, args) print('Access for command /weather denied.') end end -end, false) +end) RegisterCommand('blackout', function(source) + TriggerClientEvent('vSync:blackout', source) +end) + +RegisterServerEvent('vSync:blackout') +AddEventHandler('vSync:blackout', function() if source == 0 then blackout = not blackout if blackout then @@ -162,6 +186,7 @@ RegisterCommand('blackout', function(source) else print("Blackout is now disabled.") end + TriggerClientEvent('vSync:itemBlackoutSync', -1, blackout) else if isAllowedToChange(source) then blackout = not blackout @@ -171,6 +196,7 @@ RegisterCommand('blackout', function(source) TriggerClientEvent('vSync:notify', source, 'Blackout is now ~r~disabled~s~.') end TriggerEvent('vSync:requestSync') + TriggerClientEvent('vSync:itemBlackoutSync', -1, blackout) end end end) @@ -233,6 +259,11 @@ function ShiftToHour(hour) end RegisterCommand('time', function(source, args, rawCommand) + TriggerClientEvent('vSync:time', source, args) +end) + +RegisterServerEvent('vSync:time') +AddEventHandler('vSync:time', function(args) if source == 0 then if tonumber(args[1]) ~= nil and tonumber(args[2]) ~= nil then local argh = tonumber(args[1]) @@ -359,3 +390,9 @@ function NextWeatherStage() end end +RegisterServerEvent('vSync:canAddMenuItems') +AddEventHandler('vSync:canAddMenuItems', function() + if isAllowedToChange(source) then + TriggerClientEvent('vSync:canAddMenuItems', source) + end +end) \ No newline at end of file From bd00486fe1905e2f87598ae0a3f343725f7e8c2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emre=20C=C3=BCrg=C3=BCl?= Date: Thu, 24 May 2018 17:29:55 +0200 Subject: [PATCH 2/2] Edit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 76feb13..72d3b07 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ ### Simple weather and time sync script for FiveM servers. **Current version:** 1.4.0 -**Author:** Vespura, Scammer +**Author:** Vespura **Last update:** 05-24-2018 ***