> For the complete documentation index, see [llms.txt](https://hane-mod-studio.gitbook.io/hane-mod-studio/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hane-mod-studio.gitbook.io/hane-mod-studio/hane-scripts/hane-radio/faq-and-troubleshooting.md).

# FAQ & Troubleshooting

Common Issues

#### Radio item doesn't work

* Make sure the item name matches `Config.Item.Name` (default: `'radio'`).
* For **ox\_inventory**, verify the item has the correct export:

  ```lua
  client = {
      export = 'hane_radio.useRadio'
  }
  ```
* If `Config.Item.Enabled` is `false`, the radio opens without needing an item.

#### No voice communication on channels

* Verify **pma-voice** is installed and started before `hane_radio`.
* Check that both players are on the **same frequency**.
* Ensure the player is connected (not just viewing) to the channel.
* Check earphone/speaker mode — in earphone mode, nearby players won't hear the radio.

#### Can't join a restricted channel

* Restricted channels require the player to have one of the listed jobs.
* Check `Config.RestrictedChannels` in `channels.lua` and verify the job name matches your framework.

#### Password channel lockout

* After `Config.ChannelPassword.MaxAttempts` failed attempts, the player is locked out for `Config.ChannelPassword.LockoutTime` seconds.
* Wait for the lockout timer to expire or ask an admin to assist.

#### Admin commands not working

* Verify your Discord ID or ACE permission is configured in `Config.Admin`.
* If using Discord ID, ensure your FiveM server has Discord integration for ID detection.
* If using ACE, verify the permission is granted in `server.cfg`:

  ```cfg
  add_ace group.admin hane_radio.admin allow
  ```

#### Emergency signal cooldown

* Emergency signals have a cooldown of `Config.Emergency.Cooldown` seconds (default: 30).
* Wait for the cooldown to expire before sending another emergency.

#### UI position reset

* The radio UI saves its position when dragged (if `Config.UI.Draggable` is `true`).
* Default position can be changed in `Config.UI.Position`.

#### Webhook logs not appearing

* Check that `Config.Webhook.Enabled` is `true`.
* Verify the webhook URL is correct and the Discord channel exists.
* Make sure your server can reach `discord.com` (check firewall).

***

### Framework-Specific Notes

#### Standalone Mode

When using `Config.Framework = 'standalone'`:

* No job detection is available — job-restricted channels won't work.
* Player identification uses FiveM license identifiers.
* All non-restricted channels are fully functional.
* Admin features work via Discord ID or ACE permissions.

***

### Performance

* Radio communication is powered by pma-voice, which handles all voice routing.
* The script only manages channel state and UI — no heavy processing.
* Webhook logging is asynchronous and doesn't affect server performance.
* Optimized for high-population servers with many simultaneous radio users.

***

### Support

For installation, setup, and usage-related questions, join our Discord server.
