FAQ
General
Is the script compatible with my framework?
Hz-Weather Pro supports QBCore, ESX, QBX and Standalone mode. The framework is auto-detected at startup — no manual configuration needed.
Does the script work with OneSync?
Yes. Hz-Weather Pro is fully compatible with OneSync and OneSync Infinity. Weather synchronization uses GlobalState and state bags for optimal performance.
Can I use this with another weather script?
No. You must disable all other weather scripts before using Hz-Weather Pro. Having two active weather scripts will cause visual and synchronization conflicts.
Scripts to stop: vSync, qb-weathersync, cd_easytime, esx_weather, etc.
Hz-Weather Pro automatically replaces qb-weathersync and cd_easytime via the provide directive and exposes their exports for backward compatibility.
Does the script use a lot of resources?
No. Hz-Weather Pro is optimized for minimal impact: 0.00 ms idle on client-side, ~0.08 ms during active events (tornado, tsunami). Server-side impact is negligible.
What are the dependencies?
Required: No framework is required — the script works standalone.Installation
Error "Asset not found" at startup
Verify that:
- The folder is named exactly
HZ-Weather - The script is in your
resources/directory (e.g.resources/[standalone]/HZ-Weather/) - Your license is active on keymaster.fivem.net
- You are using the same FiveM account linked to your Tebex purchase
Error "Framework not detected"
This is normal if you're running standalone (no framework). The script will use standalone mode.
If you do have a framework, make sure es_extended or qb-core is ensured before HZ-Weather in your server.cfg.
Database tables not created
Hz-Weather creates tables automatically on first start. If this fails:
- Verify
oxmysqlis running and configured correctly - Check that your database user has CREATE TABLE permissions
- As a fallback, manually import
sql/install.sql
How to update the script?
- Download the latest version from Keymaster
- Back up your
config/folder - Replace all files except
config/ - Check the Changelog for any new config parameters
- Restart the resource:
ensure HZ-Weather
Admin Panel
Admin panel doesn't open
- Verify you have the ACE permission:
hz_weather.admin
add_ace group.admin hz_weather.admin allow
- Check for conflicting resources using the same keybind
- Try restarting the resource:
ensure HZ-Weather
Panel opens but shows no data
- Ensure the database is accessible (check
oxmysqlstatus) - Check the F8 console for JavaScript errors
- Restart the resource to force a fresh data sync
Weather
Weather doesn't change automatically
Check these settings in config/config.lua:
Config.DynamicWeather = true(must be enabled)Config.FreezeWeather = false(must not be frozen)Config.WeatherChangeInterval(default: 600 seconds = 10 minutes)
Also verify no other weather script is running.
How to force permanent snow / Christmas?
Option 1 — Server exports:exports['HZ-Weather']:setZoneWeather('all', 'XMAS')
-- Or for a specific zone:
exports['HZ-Weather']:setZoneWeather('Mount Chiliad', 'XMAS')
Then freeze weather via the admin panel or Config.FreezeWeather = true.
Option 2 — Admin panel:
Open the panel, select XMAS weather, apply to all zones, then enable "Freeze Weather".
Option 3 — Season system:
Set Config.DefaultSeasonPreset = 'winter' and configure the winter preset to use XMAS weather.
How to disable snow completely?
In config/weather_types.lua, remove or disable the snow-related weather types (SNOW, SNOWLIGHT, BLIZZARD, XMAS).
Or in the season presets (config/seasons.lua), remove snow types from all weather sequences.
Zone transitions are too abrupt
Increase Config.ZoneTransitionDistance in config/config.lua. The default is 800.0 meters. A higher value creates a larger blending area between zones.
You can also enable Config.WeatherInfluence.enabled = true so neighboring zones blend naturally.
Zones
Zones not loading or not detected
- Ensure PolyZone is started before
HZ-Weatherinserver.cfg - Check the server console for database errors
- Verify zones exist in the database (
hz_weather_zonestable) - Try creating a zone from the admin panel to test
How to create custom zones?
Option 1 — Config file: Add zones toconfig/zones.lua with center coordinates, radius, and priority.
Option 2 — Admin panel:
Open the panel, go to the Zones tab, click "Create Zone" and fill in the details.
Option 3 — Server export:
exports['HZ-Weather']:createZone({
name = 'my_zone',
label = 'My Custom Zone',
center = vector3(x, y, z),
radius = 1500.0,
shape = 'circle',
priority = 1,
weather = 'CLEAR',
})
Seasons & Temperature
How do seasons work?
Each season defines a weather sequence (e.g. Summer = EXTRASUNNY → CLEAR → CLOUDS → CLEARING) that cycles automatically. Seasons also control temperature ranges and wind profiles.
Three cycle modes are available:
disabled— Manual control only (via admin panel or commands)auto— Rotates through 4 seasons on a timer (default: 120 minutes for full cycle)realtime— Maps real calendar months to seasons
Temperature doesn't display correctly
- Ensure
Config.TemperatureEnabled = true - Check
Config.TemperatureMode—'hybrid'is recommended - Toggle display unit:
Config.TemperatureUnit = 'C'or'F' - Use
/tempin chat to check the current temperature
How to sync seasons with real calendar?
Set Config.SyncRealWorldSeasons = true in config/config.lua. The script will map:
- December, January, February → Winter
- March, April, May → Spring
- June, July, August → Summer
- September, October, November → Autumn
Natural Disasters
Tornado / Tsunami commands not working
- Ensure disasters are enabled in config:
Config.Tornado.Enabled = true
- Config.Tsunami.Enabled = true
- You need the
hz_weather.adminACE permission - Use the correct syntax:
/tornado start,/tsunami start
Tornado doesn't throw vehicles/players
Check the tornado physics settings in config/config.lua:
Config.Tornado.ThrowVehicles = trueConfig.Tornado.ThrowPeds = trueConfig.Tornado.AffectPlayer = true
ThrowObjects is false by default as it can cause GTA crashes.
Tsunami water doesn't rise
- Verify the tsunami is in RISING phase (check
/tsunami status) - Check
Config.Tsunami.MaxWaterHeight— default is200.0meters - The warning phase lasts 30 seconds before water starts rising
- Ensure no other script is modifying water levels
Gameplay Effects
Vehicle traction not working
Vehicle traction is disabled by default. Enable it in config:
Config.Effects.vehicleTraction.enabled = true
Player effects (cold/heat) notifications
Temperature notifications fire when you enter a Cold or Heat state. Since v1.1.5 two guards prevent notification spam when the temperature oscillates around a threshold:
- 2 °C hysteresis — once in the Cold state (temp
< coldThreshold), the temperature must rise tocoldThreshold + 2before you exit. Symmetric for Heat (heatThreshold − 2to exit). Stops the overlay from flickering when the temperature hovers at the boundary. - 2-minute cooldown — even if hysteresis is somehow bypassed, the same notification can't re-fire within 120 s.
notifications = false in Config.Effects.playerEffects.
Thresholds:
coldThreshold = 10— below this = cold state activatesheatThreshold = 30— above this = heat state activates
Notifications still showing in French after I change Config.Locale
Before v1.1.5 the cold / heat notification titles (Froid / Chaleur) were hardcoded strings and ignored Config.Locale. v1.1.5 added a client-side locale loader that reads config/locales/ on boot and localizes the titles to all 12 shipped languages (en / fr / es / de / it / ja / ko / pl / pt / ru / tr / zh).
If you updated to v1.1.5+ and the notification is still blank, either:
Config.Localeis set to a locale file that doesn't exist → it falls back toen, you should seeCold/Heat- You've customized the locale files and didn't add the two new keys
cold_notif_titleandheat_notif_title→ add them with a translation for your target language
How to disable specific effects?
Each effect can be toggled individually in config/config.lua:
Config.Effects = {
vehicleTraction = { enabled = false },
reducedVisibility = { enabled = true },
autoWipers = { enabled = true },
autoLights = { enabled = false },
playerEffects = { enabled = true },
speedReduction = { enabled = false },
ambientSounds = { enabled = true },
syncedLightning = { enabled = true },
}
Phone Integration
Are there ready-made weather apps for my phone?
Yes! Dedicated weather apps are available for:
Both apps feature an interactive satellite map, animated backgrounds, hourly forecast, sun tracker, and wind/season cards.- For QS Smartphone V3 (resource
qs-smartphone) → useqs-hzweatherv2.0.0+. Requires a one-line edit inqs-smartphone/config/main.luato disable the native Weather entry (V3 doesn't allow same-id overrides). See Phone Weather Apps → QS Smartphone V3. - For QS Smartphone Pro V2 (resource
qs-smartphone-pro) → useqs-hzweatherv1.x. Drop-in, no config edit. See legacy section.
Why does the QS Smartphone V3 app need a config edit when V2 didn't?
QS Smartphone V2 (Pro) merged native + third-party apps into one routing table — registering a custom app under id = 'weather' cleanly replaced the native one.
QS Smartphone V3 uses two separate tables: phoneApplications (built-in apps, declared in qs-smartphone/config/main.lua) and customApps (registered at runtime via addCustomApp). The router consults phoneApplications first and the native always wins, regardless of whether a custom app with the same id exists. The V3 docs confirm this: built-in native ids cannot be removed via the API.
The fix is a one-line manual edit — comment out the native weather line in Config.PhoneApplications. Reversible. Fully documented in Phone Weather Apps → QS Smartphone V3.
How to embed the weather map in my phone?
If you prefer a simple iframe embed instead of the dedicated app, add this to your phone resource:
<iframe
src="https://cfx-nui-HZ-Weather/web/dist/map.html"
style="width:100%;height:100%;border:none"
/>
This works with any phone resource (lb-phone, qs-phone, HZ-Phone, etc.). See the Exports & Events page for full integration details.
How to build a custom weather app?
You need one client Lua file in your phone resource to relay data from HZ-Weather, plus your UI code. No server file needed — lib.callback handles the round-trip.
Use the hz-weather:getMapData callback or the getForecast / getAllZoneForecasts exports to get weather data.
See the Phone Integration Guide for step-by-step instructions with code examples.
Compatibility
Do scripts using qb-weathersync exports still work?
Yes. Hz-Weather Pro exposes all qb-weathersync exports and events via a compatibility layer. Scripts calling exports['qb-weathersync']:setWeather('CLEAR') will work without changes.
You can disable this layer with Config.EnableQBCompat = false if you don't need it.
Do scripts using cd_easytime exports still work?
Yes. Same as above — the cd_easytime compatibility layer is enabled by default. Disable with Config.EnableCDCompat = false.
