When loading into the game the initial voice range is global because it’s not set (int 0, and we need a float), and we can not set in a timely fashion.
This results in a timeframe from 1-5 seconds where you can hear everyone on the server when joining in.
Kinda annoying on packed RP server, where people talk all the time.
Here’s a clip from on of our streamers, which ofc also finds it quite annoying, lmao.
Clip 1
Clip 2
Here’s a monkaS solution that we are currently using, but still gives “ear rape” when joining in:
-- fix for OneSync global voice -- attempt 1 -- not working
AddEventHandler('onClientResourceStart', function(name)
if name == GetCurrentResourceName() then
NetworkSetTalkerProximity(7.0)
end
end)
-- fix for OneSync global voice -- attempt #2
Citizen.CreateThread(function()
local fixingVoice = true
NetworkSetTalkerProximity(0.1)
while true do
NetworkSetTalkerProximity(7.0)
if not fixingVoice then
print("[srp_voice] OneSync Voicecancer work-around succeded")
break
end
Wait(1)
end
-- we break the loop after 15 seconds
SetTimeout(15000, function()
fixingVoice = false
end)
end)
Suggested solution
A simple solution to this would be that the default is not 0 (global)
It did make sense for testing & debugging purpose voice at an earlier point.
A value like 10.0 would be could for starters.