Scripts/resources/[qb]/[qb_core]/qb-weathersync/README.md

201 lines
4.8 KiB
Markdown
Raw Permalink Normal View History

2024-12-29 20:03:28 +00:00
# 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 <https://www.gnu.org/licenses/>
## 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