Salty Chat for RedM
An example implementation of Salty Chat for RedM OneSync and OneSync Infinity.
You can report bugs or make sugguestions via issues, or contribute via pull requests - we appreciate any contribution.
Join our Discord and start with Salty Chat!
Before starting with the setup, make sure you have OneSync enabled and your server artifacts are up to date.
- Download the latest release and extract it into your resources
- Add
start saltychatinto yourserver.cfg - Open
config.jsonand adjust the variables
"VoiceEnabled": true,
"ServerUniqueIdentifier": "NMjxHW5psWaLNmFh0+kjnQik7Qc=",
"MinimumPluginVersion": "",
"SoundPack": "default",
"IngameChannelId" : 25,
"IngameChannelPassword": "5V88FWWME615",
"SwissChannelIds": [ 61, 62 ],
Attantion: CFX team implemented a NUI blacklist and blocked local (127.0.0.1 and localhost) WebSocket connections.
If the clientside can't connect to the WebSocket, make sure that you can resolve lh.v10.network:
- Open
Windows Command Promptby searchingcmd - Execute
nslookup lh.v10.network
If it resolved to 127.0.0.1 then your issue is probably somewhere else, if not then you can use e.g. Google DNS servers.
| Variable | Type | Description |
|---|---|---|
| VoiceRanges | float[] |
Array of possible voice ranges |
| EnableVoiceRangeNotification | bool |
Enables/disables a notification when chaning the voice range |
| VoiceRangeNotification | string |
Text of the notification when changing the voice range, {voicerange} will be replaced by the voice range |
| RadioType | int |
Radio type which will be used for radio communication - see possible values |
| EnableRadioHardcoreMode | bool |
Limits some radio functions like using the radio while swimming/diving and allows only one sender at a time |
| UltraShortRangeDistance | float |
Maximum range of USR radio mode |
| ShortRangeDistance | float |
Maximum range of SR radio mode |
| LongRangeDistace | float |
Maximum range of LR radio mode |
| MegaphoneRange | float |
Range of the megaphone (only available while driving a police car) |
| NamePattern | string |
Naming schema of TeamSpeak clients, {serverid} will be replaced by the RedM server ID of the client, {playername} by the name of the client and {guid} by a generated GUID |
| RequestTalkStates | bool |
Enables/disables TalkState's |
| RequestRadioTrafficStates | bool |
Enables/disables RadioTrafficState's |
| Description | Control | Default QWERTY |
|---|---|---|
| Toggle voice range | OpenJournal | J |
| Talk on primary radio | PushToTalk | N |
| Talk on secondary radio | OpenSatchelMenu | B |
| Parameter | Type | Description |
|---|---|---|
| pluginState | int |
Current state of the plugin (e.g. client is in a swiss channel), see GameInstanceState for possible values |
| Parameter | Type | Description |
|---|---|---|
| isTalking | bool |
true when player starts talking, false when the player stops talking |
| Parameter | Type | Description |
|---|---|---|
| voiceRange | float |
current voice range |
| index | int |
index of the current voice range (starts at 0) |
| availableVoiceRanges | int |
count of available voice ranges |
| Parameter | Type | Description |
|---|---|---|
| isMicrophoneMuted | bool |
true when player mutes mic, false when the player unmutes mic |
| Parameter | Type | Description |
|---|---|---|
| isMicrophoneEnabled | bool |
false when player disabled mic, true when the player enabled mic |
| Parameter | Type | Description |
|---|---|---|
| isSoundMuted | bool |
true when player mutes sound, false when the player unmutes sound |
| Parameter | Type | Description |
|---|---|---|
| isSoundEnabled | bool |
false when player disabled sound, true when the player enabled sound |
| Parameter | Type | Description |
|---|---|---|
| name | string |
TeamSpeak name of the player |
| isSending | bool |
true when radio traffic is received, false when radio traffic breaks or ends |
| isPrimaryChannel | bool |
true radio traffic is received on primary channel, false when radio traffic is received on secondary channel |
| activeRelay | string |
TeamSpeak name of the active relay (only if someone near you has the speaker enabled) |
Returns the current voice range as float.
Get the current radio channel.
| Parameter | Type | Description |
|---|---|---|
| primary | bool |
Whether to get the primary or secondary channel |
Returns the current radio volume as float (0.0f - 1.6f).
Returns the current state of the radio speaker as bool (true speaker on, false speaker off).
Set the current radio channel.
| Parameter | Type | Description |
|---|---|---|
| radioChannelName | string |
Name of the radio channel |
| primary | bool |
Whether to set the primary or secondary channel |
Adjust the radio's volume
| Parameter | Type | Description |
|---|---|---|
| volumeLevel | float |
Overrides the volume in percent (0f - 1.6f / 0 - 160%) |
Turn the radio speaker on (true) or off (false).
| Parameter | Type | Description |
|---|---|---|
| isRadioSpeakEnabled | bool |
true to enable speaker, false to disable speaker |
Sets player IsAlive flag.
| Parameter | Type | Description |
|---|---|---|
| netId | int |
Server ID of the player |
| isAlive | bool |
true if player is alive, otherwise false |
Adds a player to a call, creates call if it doesn't exist.
| Parameter | Type | Description |
|---|---|---|
| callIdentifier | string |
Identifier of the call |
| playerHandle | int |
Server ID of the player |
Adds an array of players to a call, creates call if it doesn't exist.
| Parameter | Type | Description |
|---|---|---|
| callIdentifier | string |
Identifier of the call |
| playerHandles | int[] |
Server IDs of the players |
Removes a player from a call.
| Parameter | Type | Description |
|---|---|---|
| callIdentifier | string |
Identifier of the call |
| playerHandle | int |
Server ID of the player |
Removes an array of players from a call.
| Parameter | Type | Description |
|---|---|---|
| callIdentifier | string |
Identifier of the call |
| playerHandles | int[] |
Server IDs of the players |
Turns phone speaker of an player on/off.
| Parameter | Type | Description |
|---|---|---|
| playerHandle | int |
Server ID of the player |
| toggle | bool |
true to turn on speaker, false to turn it off |
Turns radio speaker of an player on/off.
| Parameter | Type | Description |
|---|---|---|
| netId | int |
Server ID of the player |
| toggle | bool |
true to turn on speaker, false to turn it off |
Sets a player's radio channel.
| Parameter | Type | Description |
|---|---|---|
| netId | int |
Server ID of the player |
| radioChannelName | string |
Name of the radio channel |
| isPrimary | bool |
true to set the channel as primary, false to set it as secondary |
Removes a player from the radio channel.
| Parameter | Type | Description |
|---|---|---|
| netId | int |
Server ID of the player |
| radioChannelName | string |
Name of the radio channel |
Sets the radio towers.
| Parameter | Type | Description |
|---|---|---|
| towers | float[][] |
Array with radio tower positions and ranges (X, Y, Z, range) |