> For the complete documentation index, see [llms.txt](https://sbscripts.gitbook.io/sb-scripts/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://sbscripts.gitbook.io/sb-scripts/sb-weather/exports.md).

# Exports

### Client

```lua
-- Layered local overrides for MLOs, interiors and cutscenes. Removed when your resource stops.
exports.sbweather:SetOverride('my_club', { weather = 'CLEAR', hour = 23, minute = 0, blackout = false, transition = 0 })
exports.sbweather:ClearOverride('my_club')
exports.sbweather:HasOverride('my_club')

-- Shortcuts
exports.sbweather:SetWeather('RAIN', 5.0)   -- local weather, nil clears
exports.sbweather:SetTime(22, 0)            -- local time (frozen), nil clears
exports.sbweather:FreezeWeather(true)       -- keep the current weather locally
exports.sbweather:FreezeTime(true)          -- freeze at the current time, or pass hour and minute
exports.sbweather:SetBlackout(true)         -- local power, nil clears
exports.sbweather:ResetLocal()              -- clears the three shortcuts above
exports.sbweather:DisableSync() / EnableSync()

-- Info
exports.sbweather:GetRegion()               -- 'lossantos'
exports.sbweather:GetRegionLabel()          -- 'Los Santos'
exports.sbweather:GetWeather()              -- what the player sees right now
exports.sbweather:GetRegionWeather(id)
exports.sbweather:GetTime()                 -- hour, minute
exports.sbweather:GetTemperature('F')       -- rounded number
exports.sbweather:IsBlackout()
exports.sbweather:IsOverridden()

-- UI
exports.sbweather:OpenTablet()
exports.sbweather:OpenSettings()
exports.sbweather:ToggleWidget(true)
exports.sbweather:GetSettings()
```

Events: `sbweather:client:regionChanged (region, previous)` and `sbweather:client:weatherChanged (weather)`.

### Server

```lua
-- instant: true or false forces it. nil follows the tablet's Change style.
-- holdFor: seconds to hold before cycling again.
exports.sbweather:SetRegionWeather('paleto', 'RAIN', lock, instant, holdFor)
exports.sbweather:SetWeather('THUNDER', lock, instant, holdFor)   -- every region
exports.sbweather:SkipWeather('sandy')                   -- nil = all regions
exports.sbweather:LockRegion('sandy', true, 1800)         -- optional seconds = timed hold
exports.sbweather:SetCycleWeather('sandy', 'RAIN', false)
exports.sbweather:SetTime(12, 0, instant)                -- instant nil follows Change style
exports.sbweather:FreezeTime(true)
exports.sbweather:FreezeWeather(true)
exports.sbweather:SetTimeScale(2000)                     -- ms per game minute
exports.sbweather:SetRealTime(true)
exports.sbweather:SetBlackout(true, regionId, seconds)   -- regionId nil = citywide, seconds = auto restore
exports.sbweather:RestorePower()
exports.sbweather:ApplyPreset('Storm front')             -- id or name

exports.sbweather:GetRegions()
exports.sbweather:GetWeather(regionId)
exports.sbweather:GetTemperature(regionId, 'C')
exports.sbweather:GetTime()                              -- hour, minute
exports.sbweather:GetBlackout(regionId)
exports.sbweather:IsTimeFrozen() / IsWeatherFrozen()
exports.sbweather:GetPresets()
exports.sbweather:GetPlayerRegion(source)
exports.sbweather:HasAccess(source)
```

Event: `sbweather:weatherChanged (regionId, weather, previous)` (server, local).
