anonimbro Posted May 25, 2017 Posted May 25, 2017 (edited) I have default voice chat from mta team, and anybody can hear it, but i want to be only local on 50 meters how i can do it ? local range = 50 addEventHandler ( "onClientPlayerVoiceStart", root, function() if (source and isElement(source) and getElementType(source) == "player") and localPlayer ~= source then local sX, sY, sZ = getElementPosition(localPlayer) local rX, rY, rZ = getElementPosition(source) local distance = getDistanceBetweenPoints3D(sX, sY, sZ, rX, rY, rZ) if distance <= range then voicePlayers[source] = true else voicePlayers[source] = nil end end end ) Edited May 25, 2017 by anonimbro
Investor Posted May 25, 2017 Posted May 25, 2017 Seems to me this code only changes when the player's name is shown as if he were talking (the table only stores state whether someone's speaking or not, as far as I'm aware).
anonimbro Posted May 25, 2017 Author Posted May 25, 2017 local nearbyPlayers = {} addEventHandler("onPlayerVoiceStart", root, function() local r = 50 local posX, posY, posZ = getElementPosition(source) local chatSphere = createColSphere(posX, posY, posZ, r) nearbyPlayers = getElementsWithinColShape(chatSphere, "player") destroyElement(chatSphere) local empty = exports.voice:getNextEmptyChannel() exports.voice:setPlayerChannel(source, empty) for index, player in ipairs(nearbyPlayers) do exports.voice:setPlayerChannel(player, empty) end end ) addEventHandler("onPlayerVoiceStop", root, function() exports.voice:setPlayerChannel(source) for index, player in ipairs(nearbyPlayers) do exports.voice:setPlayerChannel(player) end nearbyPlayers = {} end )
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now