# qb-weathersync Synced weather and time for QB-Core Framework :sunrise: # License QBCore Framework Copyright (C) 2021 Joshua Eger This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see ## Dependencies - [qb-core](https://github.com/qbcore-framework/qb-core) ## Features - Syncs the weather for all players ## Installation ### Manual - Download the script and put it in the `[qb]` directory. - Add the following code to your server.cfg/resouces.cfg ``` ensure qb-core ensure qb-weathersync ``` ## Configuration You can adjust available weather and defaults in `config.lua` to adjust weather patterns you need to modify nextWeatherStage() in `server/server.lua` ## Commands `/freezetime` - Toggle time progression `/freezeweather` - Toggle dynamic weather `/weather [type]` - Set weather `/blackout` - Toggle blackout `/morning` - Set time to 9am `/noon` - Set time to 12pm `/evening` - Set time to 6pm `/night` - Set time to 11pm `/time [hour] (minute)` - Set time to whatever you want ## Exports ### nextWeatherStage Triggers event to switch weather to next stage ```lua -- LUA EXAMPLE local success = exports["qb-weathersync"]:nextWeatherStage(); ``` ```js // JAVASCRIPT EXAMPLE const success = global.exports["qb-weathersync"].nextWeatherStage(); ``` ### setWeather [type] Switch to a specified weather type from Config.AvailableWeatherTypes ```lua -- LUA EXAMPLE local success = exports["qb-weathersync"]:setWeather("snow"); ``` ```js // JAVASCRIPT EXAMPLE const success = global.exports["qb-weathersync"].setWeather("snow"); ``` ### setTime [hour] (minute) Sets sun position based on time to specified ```lua -- LUA EXAMPLE local success = exports["qb-weathersync"]:setTime(8, 10); -- 8:10 AM ``` ```js // JAVASCRIPT EXAMPLE const success = global.exports["qb-weathersync"].setTime(15, 30); // 3:30PM ``` ### setBlackout (true|false) Sets or toggles blackout state and returns the state ```lua -- LUA EXAMPLE local newStatus = exports["qb-weathersync"]:setBlackout(); -- Toggle ``` ```js // JAVASCRIPT EXAMPLE const newStatus = global.exports["qb-weathersync"].setBlackout(true); // Enable ``` ### setTimeFreeze (true|false) Sets or toggles time freeze state and returns the state ```lua -- LUA EXAMPLE local newStatus = exports["qb-weathersync"]:setTimeFreeze(); -- Toggle ``` ```js // JAVASCRIPT EXAMPLE const newStatus = global.exports["qb-weathersync"].setTimeFreeze(true); // Enable ``` ### setDynamicWeather (true|false) Sets or toggles dynamic weather state and returns the state ```lua -- LUA EXAMPLE local newStatus = exports["qb-weathersync"]:setDynamicWeather(); -- Toggle ``` ```js // JAVASCRIPT EXAMPLE const newStatus = global.exports["qb-weathersync"].setDynamicWeather(true); // Enable ``` ### getBlackoutState Returns if blackout is enabled or disabled ```lua -- LUA EXAMPLE local state = exports["qb-weathersync"]:getBlackoutState(); ``` ```js // JAVASCRIPT EXAMPLE const state = global.exports["qb-weathersync"].getBlackoutState(); ``` ### getTimeFreezeState Returns if time progression is enabled or disabled ```lua -- LUA EXAMPLE local state = exports["qb-weathersync"]:getTimeFreezeState(); ``` ```js // JAVASCRIPT EXAMPLE const state = global.exports["qb-weathersync"].getTimeFreezeState(); ``` ### getWeatherState Returns the current weather type ```lua -- LUA EXAMPLE local currentWeather = exports["qb-weathersync"]:getWeatherState(); ``` ```js // JAVASCRIPT EXAMPLE const currentWeather = global.exports["qb-weathersync"].getWeatherState(); ``` ### getDynamicWeather Returns if time progression is enabled or disabled ```lua -- LUA EXAMPLE local state = exports["qb-weathersync"]:getDynamicWeather(); ``` ```js // JAVASCRIPT EXAMPLE const state = global.exports["qb-weathersync"].getDynamicWeather(); ``` ## Events `qb-weathersync:server:RequestStateSync` - Sync time and weather for everyone `qb-weathersync:server:setWeather` [type] - Set Weather type (List in Config) `qb-weathersync:server:setTime` [hour] (minute) - Set simulated time `qb-weathersync:server:toggleBlackout` (true|false) - Enable, disable or toggle blackout `qb-weathersync:server:toggleFreezeTime` (true|false) (minute) - Enable, disable or toggle time progression `qb-weathersync:server:toggleDynamicWeather` (true|false) - Enable, disable or toggle dynamic weather