/qb-weathersync

Weather System Used With QB-Core :sun_behind_rain_cloud:

Primary LanguageLuaGNU General Public License v3.0GPL-3.0

qb-weathersync

Synced weather and time for QB-Core Framework 🌅

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

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 EXAMPLE
local success = exports["qb-weathersync"]:nextWeatherStage();
// JAVASCRIPT EXAMPLE
const success = global.exports["qb-weathersync"].nextWeatherStage();

setWeather [type]

Switch to a specified weather type from Config.AvailableWeatherTypes

-- LUA EXAMPLE
local success = exports["qb-weathersync"]:setWeather("snow");
// JAVASCRIPT EXAMPLE
const success = global.exports["qb-weathersync"].setWeather("snow");

setTime [hour] (minute)

Sets sun position based on time to specified

-- LUA EXAMPLE
local success = exports["qb-weathersync"]:setTime(8, 10); -- 8:10 AM
// 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 EXAMPLE
local newStatus = exports["qb-weathersync"]:setBlackout(); -- Toggle
// 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 EXAMPLE
local newStatus = exports["qb-weathersync"]:setTimeFreeze(); -- Toggle
// 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 EXAMPLE
local newStatus = exports["qb-weathersync"]:setDynamicWeather(); -- Toggle
// JAVASCRIPT EXAMPLE
const newStatus = global.exports["qb-weathersync"].setDynamicWeather(true); // Enable

getBlackoutState

Returns if blackout is enabled or disabled

-- LUA EXAMPLE
local state = exports["qb-weathersync"]:getBlackoutState();
// JAVASCRIPT EXAMPLE
const state = global.exports["qb-weathersync"].getBlackoutState();

getTimeFreezeState

Returns if time progression is enabled or disabled

-- LUA EXAMPLE
local state = exports["qb-weathersync"]:getTimeFreezeState();
// JAVASCRIPT EXAMPLE
const state = global.exports["qb-weathersync"].getTimeFreezeState();

getWeatherState

Returns the current weather type

-- LUA EXAMPLE
local currentWeather = exports["qb-weathersync"]:getWeatherState();
// JAVASCRIPT EXAMPLE
const currentWeather = global.exports["qb-weathersync"].getWeatherState();

getDynamicWeather

Returns if time progression is enabled or disabled

-- LUA EXAMPLE
local state = exports["qb-weathersync"]:getDynamicWeather();
// JAVASCRIPT EXAMPLE
const state = global.exports["qb-weathersync"].getDynamicWeather();

Events

qb-weathersync:server:RequestStateSync - Sync time and weather for everyone

qb-weathersync:server:RequestCommands - Check if permission avaiable for client

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