.. | ||
config | ||
dist | ||
locales | ||
web | ||
fxmanifest.lua | ||
README.md |
yaca.systems for FiveM & RedM
This is a example implementation for FiveM & RedM. Feel free to report bugs via issues or contribute via pull requests.
Join our Discord to get help or make suggestions and start using yaca.systems today!
Setup Steps
Before you start, make sure you have OneSync enabled and your server artifacts are up to date.
- Download and install the latest release of this resource.
- Add
start yaca-voice
into yourserver.cfg
. - Open
config/server.json5
and adjust the variables to your needs. - Open
config/shared.json5
and adjust the variables to your needs.
Exports
Client
General
getVoiceRange(): int
Get the current voice range of the player as int
.
getVoiceRanges(): int[]
Get all voice ranges as int[]
.
changeVoiceRange(increase: boolean): void
Change the voice range of the player to the next range.
setVoiceRange(range: number): void
Set the voice range of the player.
setVoiceRangeChangeAllowedState(state: boolean): void
Enable or disable the possibility to change the voice range.
Parameter | Type | Description |
---|---|---|
state | boolean |
true to allow the voice range change, false to disable |
getVoiceRangeChangeAllowedState(): boolean
Get the voice range change allowed state of the player as boolean
.
setMaxVoiceRange(range: number): void
Set the maximum allowed voice range of the player in meters to limit the voice range temporarily.
Parameter | Type | Description |
---|---|---|
range | number |
-1 to disable the limit, or a number in meters to set the limit |
getMaxVoiceRange(): number
Get the maximum allowed voice range of the player in meters.
getMicrophoneMuteState(): boolean
Get the microphone mute state of the player as boolean
.
getMicrophoneDisabledState(): boolean
Get the microphone disabled state of the player as boolean
.
getSoundMuteState(): boolean
Get the sound mute state of the player as boolean
.
getSoundDisabledState(): boolean
Get the sound disabled state of the player as boolean
.
getPluginState(): string
Get the current plugin state as string
.
The state can be one of the following:
"NOT_CONNECTED"
: The plugin is not connected"CONNECTED
: The plugin is connected"OUTDATED_VERSION"
: The plugin is not the version set in the dashboard"WRONG_TS_SERVER"
: The user is connected to the wrong Teamspeak server"IN_INGAME_CHANNEL"
: The user is in the ingame channel"IN_EXCLUDED_CHANNEL"
: The user is in an excluded channel
getGlobalErrorLevel(): number
Get the global error level as number
.
setSpectatingPlayer(playerId: number | false)
Set the player to spectate.
Parameter | Type | Description |
---|---|---|
playerId | number | false |
the player to set |
getSpectatingPlayer(): number
Get the player the user is spectating as number
.
setVoiceRangeMarkerColor(red: number, green: number, blue: number, alpha: number)
Set the voice range marker color.
getVoiceRangeMarkerColor(): [number, number, number, number]
Get the voice range marker color as [red, green, blue, alpha]
.
resetVoiceRangeMarkerColor()
Reset the voice range marker color to the default color defined in the config.
Radio
enableRadio(state: boolean)
Enables or disables the radio system.
Parameter | Type | Description |
---|---|---|
state | boolean |
true to enable the radio, false to disable |
isRadioEnabled(): boolean
Returns whether the radio system is enabled as boolean
.
changeRadioFrequency(frequency: string)
Changes the radio frequency of the active channel.
Parameter | Type | Description |
---|---|---|
frequency | string |
The frequency to set the active channel to |
changeRadioFrequencyRaw(channel: number, frequency: string)
Changes the radio frequency.
Parameter | Type | Description |
---|---|---|
channel? | number |
the channel number. Defaults to the current active channel when no channel is passed. |
frequency | string |
the frequency to set the channel to |
getRadioFrequency(channel: number): string
Returns the frequency of a radio channel as string
.
Parameter | Type | Description |
---|---|---|
channel? | number |
the channel number. Defaults to the current active channel when no channel is passed. |
muteRadioChannel(state?: boolean)
Mutes the current active radio channel.
Parameter | Type | Description |
---|---|---|
state? | boolean |
true to mute the channel, false to unmute. Defaults to switch if not defined |
muteRadioChannelRaw(channel: number, state?: boolean)
Mutes a radio channel.
Parameter | Type | Description |
---|---|---|
channel? | number |
the channel to mute. Defaults to the current active channel when no channel is passed. |
state? | boolean |
true to mute the channel, false to unmute. Defaults to switch if not defined |
isRadioChannelMuted(channel: number): boolean
Returns whether a radio channel is muted as boolean
.
Parameter | Type | Description |
---|---|---|
channel | number |
the channel number |
setActiveRadioChannel(channel: number): bool
Changes the active radio channel. Returns whether the operation was successful as bool
.
Parameter | Type | Description |
---|---|---|
channel | number |
the new radio channel |
getActiveRadioChannel(): number
Returns the active radio channel as number
.
setSecondaryRadioChannel(channel: number): bool
Changes the secondary radio channel. Returns whether the operation was successful as bool
.
Parameter | Type | Description |
---|---|---|
channel | number |
the new radio channel |
getSecondaryRadioChannel(): number
Returns the secondary radio channel as number
.
changeRadioChannelVolume(higher: boolean): bool
Changes the volume of the active radio channel. Returns whether the operation was successful as bool
.
Parameter | Type | Description |
---|---|---|
higher | boolean |
whether to increase the volume |
changeRadioChannelVolumeRaw(channel: number, volume: number): bool
Changes the volume of a radio channel. Returns whether the operation was successful as bool
.
Parameter | Type | Description |
---|---|---|
channel | number |
the channel number |
volume | number |
the volume to set |
getRadioChannelVolume(channel: number): number
Returns the volume of a radio channel as number
.
Parameter | Type | Description |
---|---|---|
channel | number |
the channel number |
changeRadioChannelStereo(): bool
Changes the stereo mode of the active radio channel. Returns whether the operation was successful as bool
.
changeRadioChannelStereoRaw(channel: number, stereo: string): bool
Changes the stereo mode of a radio channel. Returns whether the operation was successful as bool
.
Parameter | Type | Description |
---|---|---|
channel | number |
the channel number |
stereo | string |
the stereo mode ("MONO_LEFT" , "MONO_RIGHT" or "STEREO" ) |
getRadioChannelStereo(channel: number): string
Returns the stereo mode of a radio channel as string
.
Parameter | Type | Description |
---|---|---|
channel | number |
the channel number |
radioTalkingStart(state: boolean, channel: number)
Starts or stops talking on the radio.
Parameter | Type | Description |
---|---|---|
state | boolean |
true to start talking, false to stop |
channel | number |
the channel to talk on |
setRadioMode(mode: string)
Sets the radio mode.
| Parameter | Type | Description |
|-----------|-----------------------------------------------------------------------------|
| mode | string
| the radio mode to set. Can be either None
, Direct
or Tower
|
getRadioMode(): string
Returns the radio mode as string
.
Phone
isInCall(): boolean
Returns whether the player is in a phone call as a boolean
.
Megaphone
getCanUseMegaphone(): boolean
Returns whether the player can use the megaphone as a boolean
.
setCanUseMegaphone(state: boolean)
Sets whether the player can use the megaphone.
Parameter | Type | Description |
---|---|---|
state | boolean |
true to allow using of megaphone, false to disallow |
useMegaphone(state: boolean)
Starts or stops using the megaphone.
Parameter | Type | Description |
---|---|---|
state | boolean |
true to start using, false to stop |
Server
General
connectToVoice(source: number)
Connects a player to the voice system.
Parameter | Type | Description |
---|---|---|
source | number |
the player source |
getPlayerAliveStatus(source: number): bool
Get the alive status of a player as bool
.
Parameter | Type | Description |
---|---|---|
source | number |
the player source |
setPlayerAliveStatus(source: number, state: bool)
Set the alive status of a player.
Parameter | Type | Description |
---|---|---|
source | number |
the player source |
state | boolean |
the new alive state |
getPlayerVoiceRange(source: number): number
Get the voice range of a player as number
.
Parameter | Type | Description |
---|---|---|
source | number |
the player source |
setPlayerVoiceRange(source: number, range: number)
Set the voice range of a player.
Parameter | Type | Description |
---|---|---|
source | number |
the player source |
range | number |
The new voice range. Defaults to the default voice range if not provided. |
Radio
getPlayersInRadioFrequency(frequency: string): int[]
Returns all players in a radio frequency as int[]
.
Parameter | Type | Description |
---|---|---|
frequency | string |
the frequency to get |
setPlayerRadioChannel(source: number, channel: number, frequency: string)
Sets the radio channel of a player.
Parameter | Type | Description |
---|---|---|
source | number |
the player source |
channel | number |
the channel to set |
frequency | string |
the frequency to set |
getPlayerHasLongRange(source: number): bool
Returns whether a player has long range enabled as bool
.
Parameter | Type | Description |
---|---|---|
source | number |
the player source |
setPlayerHasLongRange(source: number, state: bool)
Sets the long range state of a player.
Parameter | Type | Description |
---|---|---|
source | number |
the player source |
state | boolean |
the long range state |
Phone
callPlayer(source: number, target: number, state: bool)
Creates a phone call between two players.
Parameter | Type | Description |
---|---|---|
source | number |
the player source |
target | number |
the target player source |
state | boolean |
the state of the call |
callPlayerOldEffect(source: number, target: number, state: bool)
Creates a phone call between two players with the old effect.
Parameter | Type | Description |
---|---|---|
source | number |
the player source |
target | number |
the target player source |
state | boolean |
the state of the call |
muteOnPhone(source: number, state: bool)
Mutes the player when using the phone.
Parameter | Type | Description |
---|---|---|
source | number |
the player source |
state | boolean |
the mute state |
enablePhoneSpeaker(source: number, state: bool)
Enable or disable the phone speaker for a player.
Parameter | Type | Description |
---|---|---|
source | number |
the player source |
state | boolean |
the phone speaker state |
isPlayerInCall(source: number): [bool, number[]]
Returns whether a player is in a phone call as [bool, number[]]
.
Parameter | Type | Description |
---|---|---|
source | number |
the player source |
setGlobalErrorLevel(level: number)
Sets the global error level.
Parameter | Type | Description |
---|---|---|
level | number |
the error level |
getGlobalErrorLevel(): number
Returns the global error level as number
.
Events
Client
yaca:external:pluginInitialized
The event is triggered when the plugin is initialized.
Parameter | Type | Description |
---|---|---|
clientId | int |
the client id of the local user in teamspeak |
yaca:external:pluginStateChanged
The event is triggered when the plugin state changes.
Parameter | Type | Description |
---|---|---|
state | string |
the current plugin state, as explained below |
The state can be one of the following:
"NOT_CONNECTED"
: The plugin is not connected"CONNECTED
: The plugin is connected"OUTDATED_VERSION"
: The plugin is not the version set in the dashboard"WRONG_TS_SERVER"
: The user is connected to the wrong Teamspeak server"IN_INGAME_CHANNEL"
: The user is in the ingame channel"IN_EXCLUDED_CHANNEL"
: The user is in an excluded channel
yaca:external:voiceRangeUpdate
This event is triggered when the voice range of a player is updated.
Parameter | Type | Description |
---|---|---|
range | int |
the newly set voice range |
rangeIndex | int |
the index of the range |
yaca:external:muteStateChanged
DEPRECATED: Use yaca:external:microphoneMuteStateChanged
instead.
The event is triggered when the mute state of a player changes.
Parameter | Type | Description |
---|---|---|
state | boolean |
the new mute state |
yaca:external:microphoneMuteStateChanged
The event is triggered when the microphone mute state of a player changes.
Parameter | Type | Description |
---|---|---|
state | boolean |
the new mute state |
yaca:external:microphoneDisabledStateChanged
The event is triggered when the microphone disabled state of a player changes.
Parameter | Type | Description |
---|---|---|
state | boolean |
the new mute state |
yaca:external:soundMuteStateChanged
The event is triggered when the sound mute state of a player changes.
Parameter | Type | Description |
---|---|---|
state | boolean |
the new mute state |
yaca:external:soundDisabledStateChanged
The event is triggered when the sound disabled state of a player changes.
Parameter | Type | Description |
---|---|---|
state | boolean |
the new mute state |
yaca:external:isTalking
The event is triggered when a player starts or stops talking.
Parameter | Type | Description |
---|---|---|
state | boolean |
the new talking state |
yaca:external:megaphoneState
The event is triggered when the megaphone state of a player changes.
Parameter | Type | Description |
---|---|---|
state | boolean |
the new megaphone state |
yaca:external:setRadioMuteState
The event is triggered when the radio mute state of a player changes.
Parameter | Type | Description |
---|---|---|
channel | number |
the channel where the mute state is changed |
state | boolean |
the new mute state |
yaca:external:isRadioEnabled
The event is triggered when the radio state of a player changes.
Parameter | Type | Description |
---|---|---|
state | boolean |
true when the radio is enabled, false when the radio is disabled |
yaca:external:changedActiveRadioChannel
The event is triggered when the active radio channel of a player changes.
Parameter | Type | Description |
---|---|---|
channel | number |
the new active radio channel |
yaca:external:changedSecondaryRadioChannel
The event is triggered when the secondary radio channel of a player changes.
Parameter | Type | Description |
---|---|---|
channel | number |
the new active radio channel, or -1 if disabled |
yaca:external:setRadioVolume
The event is triggered when the radio volume of a player changes.
Parameter | Type | Description |
---|---|---|
channel | number |
the channel to change |
volume | number |
the new volume to set |
yaca:external:setRadioChannelStereo
The event is triggered when the stereo mode of a radio channel changes.
Parameter | Type | Description |
---|---|---|
channel | number |
the channel to change |
stereo | string |
"MONO_LEFT" for the left ear, "MONO_RIGHT" for the right ear and "STEREO" for both ears |
yaca:external:setRadioFrequency
The event is triggered when the radio frequency of a player changes.
Parameter | Type | Description |
---|---|---|
channel | number |
the channel to set |
frequency | string |
the frequency to set |
yaca:external:isRadioTalking
The event is triggered when a player starts or stops talking on the radio.
Parameter | Type | Description |
---|---|---|
state | boolean |
the new talking state |
channel | number |
the channel where the player is talking at |
yaca:external:isRadioReceiving
The event is triggered when a player starts or stops receiving on the radio.
Parameter | Type | Description |
---|---|---|
state | boolean |
the new receiver state |
channel | number |
the channel from which the player is receiving |
yaca:external:notification
The event is triggered when a notification should be shown.
Parameter | Type | Description |
---|---|---|
message | string |
the message to show |
type | string |
the type of the message ("inform" , "error" , "success" ) |
Example for custom notification:
AddEventHandler('yaca:external:notification', function (message, type)
-- Call your Notifications System here.
end)
yaca:external:channelChanged
The event is triggered when the player changes the channel to the ingame or excluded channel.
Parameter | Type | Description |
---|---|---|
channelType | string |
INGAME_CHANNEL when moving into the ingame channel and EXCLUDED_CHANNEL when moving into a excluded channel. |
Server
yaca:external:changeMegaphoneState
The event is triggered when the megaphone state of a player changes.
Parametr | Type | Description |
---|---|---|
source | int |
the player source |
state | boolean |
the new megaphone state |
yaca:external:phoneCall
The event is triggered when a phone call is started or ended.
Parameter | Type | Description |
---|---|---|
source | int |
the player source |
target | int |
the target player source |
state | boolean |
the new phone call state |
filter | YacaFilterEnum |
the used filter for the phone call, can be either PHONE or PHONE_HISTORICAL |
yaca:external:phoneSpeaker
The event is triggered when the phone speaker state of a player changes.
Parameter | Type | Description |
---|---|---|
source | int |
the player source |
state | boolean |
the new phone speaker state |
yaca:external:changedRadioFrequency
The event is triggered when the radio frequency of a player changes.
Parameter | Type | Description |
---|---|---|
source | int |
the player source |
channel | int |
the channel where the frequency was set |
frequency | string |
the frequency to set |
yaca:external:changedRadioMuteState
The event is triggered when the radio mute state of a player changes.
Parameter | Type | Description |
---|---|---|
source | int |
the player source |
channel | int |
the channel where the mute state was changed |
state | boolean |
the new mute state |
Developers
If you want to contribute to this project, feel free to do so. We are happy about every contribution. If you have any questions, feel free to ask in our Discord.
Building the resource
To build the resource, you need to have Node.js installed. After that, you can run the following commands to build the resource:
pnpm install
pnpm run build
The built resource will be located in the resource
folder, which you can then use in your FiveM server.