188 lines
12 KiB
Markdown
188 lines
12 KiB
Markdown
## PLEASE NOTE: Currently master branch has some breaking changes
|
|
|
|
If you previously used `voice_defaultPhoneVolume` you will instead need to use `voice_defaultCallVolume`
|
|
If you previously used `voice_enablePhones` you will instead need to use `voice_enableCalls`
|
|
|
|
If you were previously using the state bag getter `Player(source).state.phone` you will instead need to use `Player(source).state.call`
|
|
|
|
# pma-voice
|
|
A voice system designed around the use of FiveM/RedM internal mumble server.
|
|
|
|
## Support
|
|
|
|
Please report any issues you have in the GitHub [Issues](https://github.com/AvarianKnight/pma-voice/issues)
|
|
|
|
### NOTE: It is expected for servers to be on the latest recommended version, which you can find [here for Windows](https://runtime.fivem.net/artifacts/fivem/build_server_windows/master/) and [here for Linux](https://runtime.fivem.net/artifacts/fivem/build_proot_linux/master/).
|
|
|
|
# Compatibility Notice:
|
|
|
|
This script is not compatible with other voice systems (duh), that means if you have vMenus voice chat you will **have** to [disable](https://docs.vespura.com/vmenu/faq/#q-how-do-i-disable-voice-chat) it.
|
|
|
|
Please do not override `NetworkSetTalkerProximity`, `MumbleSetTalkerProximity`, `MumbleSetAudioInputDistance`, `MumbleSetAudioOutputDistance` or `NetworkSetVoiceActive` in any of your other scripts as there have been cases where it breaks pma-voice.
|
|
|
|
# Credits
|
|
|
|
- @Frazzle for mumble-voip (for which the concept came from)
|
|
- @pichotm for pVoice (where the grid concept came from)
|
|
|
|
# FiveM/RedM Config
|
|
|
|
### NOTE: Only use one of the Audio options (don't enable 3d Audio & Native Audio at the same time), its also recommended to always use voice_useSendingRangeOnly.
|
|
|
|
You only need to add the convar **if** you're changing the value.
|
|
|
|
All of the configs here are set using `setr [voice_configOption] [boolean]`
|
|
|
|
Native audio will not work on RedM, you will have to use 3d audio.
|
|
|
|
| ConVar | Default | Description | Parameter(s) |
|
|
|----------------------------|---------|---------------------------------------------------------------|--------------|
|
|
| voice_useNativeAudio | false | **This will not work for RedM** Uses the games native audio, will add 3d sound, echo, reverb, and more. **Required for submixs** | boolean |
|
|
| voice_use2dAudio | false | Uses 2d audio, will result in same volume sound no matter where they're at until they leave proximity. | boolean
|
|
| voice_use3dAudio | false | Uses 3d audio | boolean |
|
|
| voice_useSendingRangeOnly | false | Only allows you to hear people within your hear/send range, prevents people from connecting to your mumble server and trolling. | boolean |
|
|
|
|
# Config
|
|
|
|
### PLEASE NOTE: Any keybind changes only affect new players, if you want to change your key bind go to Key Bindings -> FiveM -> Look for keybinds under 'pma-voice'.
|
|
|
|
All of the config is done via ConVars in order to streamline the process.
|
|
|
|
The ints are used like a boolean to 0 would be false, 1 true.
|
|
|
|
All of the configs here are set using `setr [voice_configOption] [int]` OR `setr [voice_configOption] "[string]"`
|
|
|
|
#### Note: If a convar defaults to 1 (true) you don't have set it again unless you want to disable it.
|
|
|
|
### General Voice Settings
|
|
|
|
| ConVar | Default | Description | Parameter(s) |
|
|
|-------------------------|---------|--------------------------------------------------------------------|--------------|
|
|
| voice_enableUi | 1 | Enables the built in user interface | int |
|
|
| voice_enableProximityCycle | 1 | Enables the usage of the F11 proximity key, if disabled players are stuck on the first proximity | int |
|
|
| voice_defaultCycle | F11 | The default key to cycle the players proximity. You can find a list of valid keys [in the Cfx docs](https://docs.fivem.net/docs/game-references/input-mapper-parameter-ids/keyboard/) | string |
|
|
| voice_defaultRadioVolume | 30 | The default volume to set the radio to (has to be between 1 and 100) *NOTE: Only new joins will have the new value, players that already joined will not.* | float |
|
|
| voice_defaultCallVolume | 60 | The default volume to set the call to (has to be between 1 and 100) *NOTE: Only new joins will have the new value, players that already joined will not.* | float |
|
|
| voice_defaultVoiceMode | 2 | Default proximity voice value when player joins server. (Voice Modes; 1:Whisper, 2:Normal, 3:Shouting) | int |
|
|
|
|
### Call & Radio
|
|
|
|
| ConVar | Default | Description | Parameter(s) |
|
|
|-------------------------|---------|--------------------------------------------------------------------|--------------|
|
|
| voice_enableRadios | 1 | Enables the radio sub-modules | int |
|
|
| voice_enableCalls | 1 | Enables the call sub-modules | int |
|
|
| voice_enableSubmix | 1 | Enables the submix which adds a radio/call style submix to their voice **NOTE: Submixs require native audio** | int |
|
|
| voice_enableRadioAnim | 0 | Enables (grab shoulder mic) animation while talking on the radio. | int |
|
|
| voice_defaultRadio | LMENU | The default key to use the radio. You can find a list of valid keys [in the FiveM docs](https://docs.fivem.net/docs/game-references/input-mapper-parameter-ids/keyboard/) | string |
|
|
|
|
### Sync
|
|
|
|
| ConVar | Default | Description | Parameter(s) |
|
|
|-------------------------|---------|--------------------------------------------------------------------|--------------|
|
|
| voice_refreshRate | 200 | How often the UI/Proximity is refreshed | int |
|
|
|
|
### External Server & Misc.
|
|
| ConVar | Default | Description | Parameter(s) |
|
|
|-------------------------|---------|--------------------------------------------------------------------|--------------|
|
|
| voice_allowSetIntent | 1 | Whether or not to allow players to set their audio intents (you can see more [here](https://docs.fivem.net/natives/?_0x6383526B)) | int |
|
|
| voice_externalAddress | none | The external address to use to connect to the mumble server | string |
|
|
| voice_externalPort | 0 | The external port to use | int |
|
|
| voice_debugMode | 0 | 1 for basic logs, 4 for verbose logs | int |
|
|
| voice_externalDisallowJoin | 0 | Disables players being allowed to join the server, should only be used if you're using a FXServer as a external mumble server. | int |
|
|
| voice_hideEndpoints | 1 | Hides the mumble address in logs *NOTE: You should only care to hide this for a external server.* | int |
|
|
|
|
|
|
|
|
### Aces
|
|
|
|
pma-voice comes with a built in /muteply (tgtPly) (duration) command, in order to allow your staff to use it you will have to grand them the ace!
|
|
|
|
Example:
|
|
`add_ace group.superadmin command.muteply allow;`
|
|
|
|
This would only allow the superadmin group to mute players.
|
|
|
|
### Exports
|
|
|
|
#### Client
|
|
|
|
##### Setters
|
|
|
|
| Export | Description | Parameter(s) |
|
|
|---------------------|-----------------------------|--------------|
|
|
| [setVoiceProperty](docs/client-setters/setVoiceProperty.md) | Set config options | string, any |
|
|
| [setRadioChannel](docs/client-setters/setRadioChannel.md) | Set radio channel | int |
|
|
| [setCallChannel](docs/client-setters/setCallChannel.md) | Set call channel | int |
|
|
| [setRadioVolume](docs/client-setters/setRadioVolume.md) | Set radio volume for player | int |
|
|
| [setCallVolume](docs/client-setters/setCallVolume.md) | Set call volume for player | int |
|
|
| [addPlayerToRadio](docs/client-setters/setRadioChannel.md) | Set radio channel | int |
|
|
| [addPlayerToCall](docs/client-setters/setCallChannel.md) | Set call channel | int |
|
|
| [removePlayerFromRadio](docs/client-setters/removePlayerFromRadio.md) | Remove player from radio | |
|
|
| [removePlayerFromCall](docs/client-setters/removePlayerFromCall.md) | Remove player from call | |
|
|
|
|
##### Toggles
|
|
|
|
| Export | Description | Parameter(s) |
|
|
|---------------------|--------------------------------------------------------|--------------|
|
|
| toggleMutePlayer | Toggles the selected player muted for the local client | int |
|
|
|
|
Supported from mumble-voip / toko-voip
|
|
|
|
| Export | Description | Parameter(s) |
|
|
|-----------------------|--------------------------|--------------|
|
|
| [SetMumbleProperty](docs/client-setters/setVoiceProperty.md) | Set config options | string, any |
|
|
| [SetTokoProperty](docs/client-setters/setVoiceProperty.md) | Set config options | string, any |
|
|
| [SetRadioChannel](docs/client-setters/setRadioChannel.md) | Set radio channel | int |
|
|
| [SetCallChannel](docs/client-setters/setCallChannel.md) | Set call channel | int |
|
|
|
|
#### Getters
|
|
|
|
The majority of setters are done through player states, while a small
|
|
|
|
|
|
| State Bag | Description | Return Type |
|
|
|---------------|--------------------------------------------------------------|--------------|
|
|
| [proximity](docs/state-getters/stateBagGetters.md) | Returns a table with the mode index, distance, and mode name | table |
|
|
| [radioChannel](docs/state-getters/stateBagGetters.md) | Returns the players current radio channel, or 0 for none | int |
|
|
| [callChannel](docs/state-getters/stateBagGetters.md) | Returns the players current call channel, or 0 for none | int |
|
|
|
|
#### Events
|
|
|
|
These are events designed for third-party resource integration. These are emitted only to the current client.
|
|
|
|
| Event | Description | Event Params |
|
|
|--------------------------|--------------------------------------------------------------|----------------|
|
|
| [pma-voice:settingsCallback](docs/client-getters/events.md) | When emited it will return the current pma-voice settings. | cb(voiceSettings) |
|
|
| [pma-voice:radioActive](docs/client-getters/events.md) | Triggered when the radio is activated / deactivated | boolean |
|
|
| [pma-voice:setTalkingMode](docs/client-getters/events.md) | Triggered on proximity mode change with the voice mode id | int |
|
|
|
|
|
|
#### Server
|
|
|
|
##### Setters
|
|
|
|
| Export | Description | Parameter(s) |
|
|
|----------------------|--------------------------------------|--------------|
|
|
| [setPlayerRadio](docs/server-setters/setPlayerRadio.md) | Sets the players radio channel | int, int |
|
|
| [setPlayerCall](docs/server-setters/setPlayerCall.md) | Sets the players call channel | int, int |
|
|
| [addChannelCheck](docs/server-setters/addChannelCheck.md) | Adds a channel check to the players radio channel | int, function |
|
|
|
|
|
|
##### Getters
|
|
|
|
###### State Bags
|
|
You can access the state with `Player(source).state['state bag here']`
|
|
|
|
| State Bag | Description | Return Type |
|
|
|---------------|--------------------------------------------------------------|--------------|
|
|
| [proximity](docs/state-getters/stateBagGetters.md) | Returns a table with the mode index, distance, and mode name | table |
|
|
| [radioChannel](docs/state-getters/stateBagGetters.md) | Returns the players current radio channel, or 0 for none | int |
|
|
| [callChannel](docs/state-getters/stateBagGetters.md) | Returns the players current call channel, or 0 for none | int |
|
|
| [voiceIntent](docs/state-getters/stateBagGetters.md) | Returns the players current voice intent, either 'speech' or 'music' | string |
|
|
|
|
###### Exports
|
|
|
|
| Export | Description | Parameter(s) |
|
|
|------------------------------|---------------------------------------------------|------|
|
|
| [getPlayersInRadioChannel](docs/server-getters/getPlayersInRadioChannel.md) | Gets the current players in a radio channel | int |
|