GCMod

Troubleshooting

Common issues and implementation notes for gcm_storms.


Admin command does not open panel

Possible Causes

  • The command name configured in config/general.lua (openStormCommand) is incorrect.
  • Custom.isAdmin(source) is not returning true for your user/group.
  • ACE permissions or framework group mappings are incorrect.

Fix

  • Verify command name in config/general.lua.
  • Confirm your user/group is recognized by Custom.isAdmin.
  • Review ACE permissions and framework group configuration.

Storm starts but players are not moved correctly

Possible Causes

  • Routing buckets are being overridden by another resource.
  • Join state is missing before storm start (Player(source).state.stormData).
  • Inventory hooks fail during confiscation or kit distribution.

Fix

  • Check that no other resource modifies routing buckets during storms.
  • Confirm stormData exists before start.
  • Review server logs for inventory hook errors.

Storm does not start automatically

Expected Behavior

A storm requires at least 2 players when start timer expires.

If fewer than two players are present, the storm is automatically cancelled by design.


Zone marker or shrinking circle not visible

Possible Causes

  • Server does not write GlobalState['storm_<id>_marker'].
  • Clients cannot read GlobalState/statebags.
  • Marker rendering options are disabled.

Fix

  • Confirm server updates GlobalState['storm_<id>_marker'].
  • Ensure OneSync and statebags are enabled.
  • Check:
    • config/entrypoint.lua -> showMarker
    • config/zones.lua -> ZoneColor

HUD players / kills / lives do not update

Possible Causes

  • Server does not update stormData statebag.
  • Kill feed is disabled.
  • Another resource is blocking NUI focus.

Fix

  • Verify stormData state updates on server.
  • Ensure enableKillFeed = true if kill tracking is expected.
  • Check for NUI focus conflicts.

Presets not loading or saving

Possible Causes

  • gcm_storm_presets table does not exist.
  • JSON columns contain invalid data.

Affected columns include:

  • kit
  • reward
  • coords
  • entryCoords

Fix

  • Confirm schema import completed successfully.
  • Validate JSON values in preset rows.

Webhook logs not sent

Possible Causes

  • Logging is disabled in config.
  • Webhook URL is invalid.

Fix

  • Ensure config/logs.lua -> enabled = true.
  • Verify webhook URL matches https://discord.com/api/webhooks/... format.
  • Replace sample values with real URLs.

Implementation Risk Notes

These notes highlight potential edge cases or improvements in the current implementation.

Kill Feed State Mismatch

In server/storms.lua, one kill-feed payload writes name = storm.name while other state writes use self.data.name.

This can produce inconsistent statebag payloads.

Storm Cancel Permission Check

In server/adminactions.lua, storm cancel callback does not perform explicit Custom.isAdmin(source) check before stopping a storm.

Consider adding the guard to ensure only authorized users can cancel storms.

GlobalState Cleanup

Long-running zone loops depend on proper GlobalState cleanup.

If storm flow is interrupted by third-party scripts, stale marker state can remain active temporarily.