Hail Storm
Hail Storm creates falling hail around players, applies periodic damage to exposed players and nearby NPCs, and damages vehicle body health. It includes separate sounds for players on foot and inside vehicles, a standalone command, and Disaster Hub integration.
Command access: The inspected source does not enforce ACE permissions on
/hailstorm. AddingUseAcePermissions=truedoes not restrict that command. See permissions before relying on access restrictions.
{:is-warning}
POPULAR LINKS
- DISASTER HUB — Combined disasters and weather triggers
- WEATHER — Big Daddy Weather documentation
- EAS — Emergency Alert System documentation
- ACE PERMISSIONS — Permission setup guide
- LOG COLLECTION — Gathering logs for support
{:links-list}
INSTALLATION
- Copy the inner
BigDaddy-HailStormresource folder into your server's resources folder. Use the folder containingfxmanifest.lua,settings.ini, the DLLs,bridge, andhtml. - Enter your own product key as
key1under[licensing]insettings.ini. Leave the supplied synchronization value unchanged. - Keep the packaged
html/index.htmlandhtml/soundsfiles. They provide the hail audio. - Start your weather resource first if you use one. Start
BigDaddy-EASif you want optional emergency alerts. - Add
ensure BigDaddy-HailStormtoserver.cfg. If you use Disaster Hub, start Hail Storm beforeBigDaddy-DisasterHub. - Restart the resource after configuration changes and reconnect before testing.
DO NOT RENAME THE FOLDER. Configuration and integration calls use the exact name
BigDaddy-HailStorm.
{:is-danger}
Disaster Hub and EAS are optional. The inspected source has no framework, inventory, or database integration. Its NUI page handles sound; it is not an in-game control menu.
CONFIGURATION
settings.ini
The supplied file contains licensing/synchronization values and debug=true. The source also reads the optional settings below. Add optional settings under the existing [settings] section.
| Section | Setting | Supplied / fallback | Description |
|---|---|---|---|
[licensing] |
key1 |
Your product key | Enter your own product key here. |
[settings] |
debug |
true / false |
Enables additional resource diagnostic messages where implemented. |
[settings] |
UseAcePermissions |
Not supplied / false |
Reads a player's permission during initialization, but does not protect the command or storm events. |
[settings] |
AcePermission |
Not supplied / command |
ACE object checked during initialization when UseAcePermissions=true. The result is not used to restrict triggering. |
[settings] |
UseEAS |
Not supplied / false |
Enables standalone EAS alerts when BigDaddy-EAS is started. |
[settings] |
EASTitle |
Not supplied / EMERGENCY ALERT SYSTEM |
Title passed to the standalone EAS alert. |
[settings] |
EASMessage |
Not supplied / A severe hail storm has been detected. Take shelter immediately |
Standalone alert text. |
[settings] |
DesyncKey |
Supplied by the package | Internal synchronization value. Leave it unchanged. |
“Fallback” means the source value used when a setting is missing or cannot be parsed. Setting names are case-insensitive. Edit existing keys rather than adding duplicates, and restart the resource to reload configuration.
There are no INI settings for hail density, damage, hit probability, sound volume, storm duration, or automatic scheduling. These values are fixed in the inspected source.
Permissions
The /hailstorm command is registered without a command restriction and performs no ACE check. Although the server calculates a permission during player initialization, the client does not use that value. The two server storm handlers also have no permission checks.
Setting UseAcePermissions=true, changing AcePermission, or granting an ACE object does not make this command admin-only. Enforcing that behavior requires correcting the command handler. Disaster Hub checks access to its own menu separately, but using that menu does not restrict Hail Storm's standalone command.
COMMANDS
| Command | Purpose |
|---|---|
/hailstorm |
Starts a standalone storm after successful resource initialization. No supported arguments. |
The command selects a random duration from 24,000 to 47,999 milliseconds. Arguments are ignored, so /hailstorm 120 does not request a two-minute storm. There is no registered stop command, local control menu, or automatic scheduler in Hail Storm itself.
For standalone storms, the server requests weather suspension through its bridge and tells clients to force weather. Clients transition to THUNDER for ten seconds before loading the hail model and starting the timed hail effects. At the end of those effects, clients request a ten-second transition to OVERCAST.
The server resumes its weather bridge after the selected duration measured from the initial trigger. Since the client starts its hail timer after the weather transition, the provider can resume approximately ten seconds before hail ends, plus any model-loading delay.
HOW THE STORM AFFECTS PLAYERS
Hail and shelter
Each client spawns falling hail objects around its player, within approximately five meters horizontally and 10–25 meters above them. Objects are given downward velocity and are deleted after collision, reaching ground level, or a maximum lifetime of approximately 15 seconds.
The scripted damage checks run separately from the visible hail collisions. A visible hailstone does not need to strike a player for a damage roll to occur.
Players on foot count as sheltered when they are in a recognized interior or when the script detects overhead cover with an upward ray extending 12 meters. Shelter effectiveness depends on the map's interior and collision data. Shelter stops the scripted on-foot damage checks; the source does not use it to stop spawning visible hail or playing ambient audio.
Damage
These values describe the scripted damage checks in the current source, not configurable settings or guaranteed damage rates.
| Target | Behavior |
|---|---|
| Exposed player on foot | After an initial two-second delay, checks run roughly every 500 milliseconds. Each eligible check has a 12% chance to apply 1 damage and trigger a ragdoll reaction. |
| Ragdoll reaction | A successful hit has a 40% chance of a one-second ragdoll; otherwise the requested ragdoll lasts 100 milliseconds. |
| Player's current vehicle | Each eligible player damage check has an 8% chance to reduce vehicle body health by 10, with a minimum of zero. This branch does not check overhead shelter. |
| Nearby NPCs | Living, non-player peds owned by the local client and within 100 meters are checked. Exposed NPCs outside vehicles have a 12% hit chance, take 1 damage, ragdoll, and are told to flee. |
| Other nearby vehicles | Living vehicles owned by the local client, within 100 meters, and not under detected cover have an 8% chance per check to lose 10 body health. The local player's current vehicle is excluded from this loop. |
The nearby-entity loop waits 500 milliseconds between passes, with additional delays for NPC reactions. Entering a vehicle avoids the scripted on-foot player damage branch, but the vehicle can still take damage, including when parked under cover through the occupied-vehicle branch.
Sound
The resource plays onfoot.ogg outside vehicles and incar.ogg inside them. It changes ambience as you enter or leave a vehicle and requests a three-second fade at the end of the sound loop. Successful player/NPC damage rolls relay playerhit.ogg to listeners within six meters of the hit.
The audio page loads Howler from an external CDN. If hail is visible but silent, check the packaged sound files and whether the client can load that script. There is no sound-volume option in settings.ini.
DISASTER HUB INTEGRATION
Start BigDaddy-HailStorm before BigDaddy-DisasterHub, then select Hail Storm in /DisasterHub. The Hub can also trigger hail in eligible weather branches. Configure HailStormChance and weather monitoring in the Hub.
The Hub calls BigDaddy-HailStorm:StartHailStormHub with a duration in seconds. Hail Storm then runs the effects without forcing its own weather, calling its own weather bridge, or sending its standalone EAS alert. The Hub supplies its weather and alert handling.
For manual Hub combinations, hail receives half the selected duration when combined with Tornado, Sea Storm, or Ice Age. Hail cannot be combined with Earthquake in the Hub. See the Disaster Hub documentation for the full selection rules and automatic weather behavior.
Server integration events
| Server event | Argument | Behavior |
|---|---|---|
BigDaddy-HailStorm:StartHailStorm |
Integer duration in seconds | Standalone path with forced weather, bridge handling, and optional EAS. Pass 0 for the random duration. |
BigDaddy-HailStorm:StartHailStormHub |
Integer duration in seconds | Effects without Hail Storm's own weather or EAS handling. Pass 0 for the random duration. |
Call these from authorized server logic. The handlers do not validate caller permissions or reject overlapping storms. Positive standalone durations should be at least ten seconds because the handler waits ten seconds before calculating its remaining delay.
WEATHER BRIDGE
Edit Config.WeatherBridge at the top of bridge/weather.server.lua.
| Option | Default | Description |
|---|---|---|
Enabled |
true |
Enables bridge suspend/resume handling. Disabling this does not prevent standalone clients from requesting THUNDER and OVERCAST. |
Provider |
'auto' |
Detects the first started provider in the order below, or uses an explicit identifier. |
RestorePreviousWeather |
true |
Used by the QB resume handler to request saved weather when available. |
Debug |
false |
Enables [WeatherBridge] diagnostics, including failed export calls. |
| Detection order / resource | Identifier | Implemented behavior |
|---|---|---|
BigDaddy-Weather |
bigdaddy |
Reads GetWeather; sends weather-sync suspend/resume events. |
qb-weathersync |
qb-weathersync |
Reads weather/dynamic state; attempts to disable dynamic weather and restore saved state on resume. |
cd_easytime |
cd_easytime |
Reads GetAllData; suspend/resume hooks are placeholders. |
Renewed-Weathersync |
renewed |
Reads GlobalState.weather; suspend/resume hooks are placeholders. |
vSync |
vsync |
Detection only; no stock weather getter or working suspend/resume hooks are supplied. |
vMenu |
vmenu |
Detection only; no stock weather getter or working suspend/resume hooks are supplied. |
This table describes the local bridge implementation, not tested compatibility with every provider version. With no detected resource, the provider is none. You can also explicitly select none.
To configure another provider, select Provider='custom' and fill the Custom fields:
SuspendEventandResumeEvent: server events called with(enabled, reason).SuspendExportResourceandSuspendExportName: optional server export called on suspend with the same arguments.ResumeExportResourceandResumeExportName: optional server export called on resume with the same arguments.CurrentWeatherExportResourceandCurrentWeatherExportName: getter called without arguments, accepting a weather string or a table containing a recognized weather field.
If both an event and export are configured for an action, both run. A current-weather getter does not add automatic hail triggers; those belong to Disaster Hub.
The bridge exposes server exports Suspend(enabled, reason), Resume(reason), IsSuspended(), GetSuspendedReason(), GetProvider(), and GetCurrentWeather(). Pass true to Suspend to request suspension. State and success results describe bridge handling, not proof that the weather provider paused; some handlers are placeholders and export failures are caught. The weather getter returns nil when unavailable.
EMERGENCY ALERTS
To enable standalone alerts, start BigDaddy-EAS and add the following under [settings]:
UseEAS=true
EASTitle=EMERGENCY ALERT SYSTEM
EASMessage=A severe hail storm has been detected. Take shelter immediately
Approximately ten seconds after the standalone server trigger, Hail Storm sends the configured title and message to BigDaddy-EAS:BuildEAS, with an empty alert-type argument. It only sends this alert when EAS is started.
Hub-triggered storms skip the standalone alert. Configure the Hub's Hail Storm EAS settings for that path instead.
TROUBLESHOOTING AND LIMITATIONS
| Problem | What to check |
|---|---|
/hailstorm is unavailable |
Confirm the resource name, product key, and successful initialization. The command is registered after synchronization succeeds. Check the server and F8 logs. |
| Everyone can start storms despite ACE settings | The current command does not enforce permissions. This requires a handler correction, not another ACE grant. |
| Hail starts after a delay | Standalone storms first spend ten seconds transitioning weather, then load the hail model. |
| Weather changes before hail ends | The server starts its duration timer before the client's ten-second transition. Also check whether the chosen provider implements suspension. |
| Vehicle takes damage under cover | The player's occupied-vehicle damage branch does not check shelter. Other nearby vehicles do get a shelter check. |
| Shelter does not protect a player | Confirm the map has recognized interior or overhead collision data within the shelter check's range. |
| Hail is silent | Check html/sounds, NUI errors, and loading of the external Howler script. |
| No EAS alert | Standalone alerts default to disabled; add UseEAS=true and start EAS. For Hub storms, use the Hub's alert settings. |
| Rain does not automatically start hail | Hail Storm has no weather watcher. Set up automatic triggers in Disaster Hub. |
| Repeated storms behave inconsistently | There is no overall active-storm guard. Some damage/audio loops refuse duplicates while object spawning and shared storm state can overlap. Wait for the current storm to finish. |
Players joining after the storm broadcast are not sent the active storm's remaining duration. The inspected source also has no resource-stop cleanup handler to explicitly remove active hail, stop sound loops, or resume weather when interrupted. Normal completion handles object deletion, audio fading, and the standalone bridge timer.
Enable debug=true in settings.ini and Debug=true in the weather bridge when gathering diagnostics. See the log collection guide.
This page describes the inspected source with manifest version 1.0.0. The packaged DLLs have not been exercised on a live FiveM server and may differ if built from another source revision.