Jump to content

Duda con recurso voice


-Rex-

Recommended Posts

Se puede hacer con el recurso Voice, que solo escuchen lo que habla X jugador si estan cerca de el?

Por ejemplo hablo por el micro y lo que yo hablo quiero que solo lo escuchen las personas que estan cerca mio, y las que no no.

¿Como lo podría hacer?

Link to comment

Observando por buen rato el recurso voice, Hice esto, Pero como no tengo con quien testear, Funcionara asi?

--- 
addEventHandler ( "onClientPlayerVoiceStart", root, 
    function() 
        if isPlayerVoiceMuted ( source ) then 
            cancelEvent() 
            return 
        end 
  
        local x,y,z = getElementPosition( getLocalPlayer(  ) ) 
        local x2,y2,z2 = getElementPosition( source ) 
        if getDistanceBetweenPoints3D( x, y, z, x2, y2, z2 ) > 20 then 
            cancelEvent() 
            return 
        end 
  
        voicePlayers[source] = true 
    end 
) 

Link to comment

No es necesario usar el recurso voice, esto debería funcionar:

Plus: en este ejemplo sólo llega al jugador el audio que debe escuchar, para evitar tráfico y subidas de latencia.

  
JugadoresCercanos = {}; 
Cerca = 50; 
  
setTimer( 
    function () 
        for i, player in ipairs( getElementsByType("player") ) do 
            for i, players in ipairs( getElementsByType("player") ) do 
                if ( player ~= players and estaCercaDe(a, b) ) then  
                    if ( not JugadoresCercanos[player] ) then 
                        JugadoresCercanos[player] = {}; 
                    end 
                    table.insert(JugadoresCercanos[player], players); 
                end 
            end 
           setPlayerVoiceBroadcastTo(player, JugadoresCercanos[player]); 
        end 
    end, 1500, 0 
) 
  
  
function estaCercaDe(a, b) 
    return Vector3.getLength(Vector3.create(getElementPosition(a)), Vector3.create(getElementPosition(b))) <= Cerca; 
end 
  

Link to comment
No es necesario usar el recurso voice, esto debería funcionar:

Plus: en este ejemplo sólo llega al jugador el audio que debe escuchar, para evitar tráfico y subidas de latencia.

  
JugadoresCercanos = {}; 
Cerca = 50; 
  
setTimer( 
    function () 
        for i, player in ipairs( getElementsByType("player") ) do 
            for i, players in ipairs( getElementsByType("player") ) do 
                if ( player ~= players and estaCercaDe(a, b) ) then  
                    if ( not JugadoresCercanos[player] ) then 
                        JugadoresCercanos[player] = {}; 
                    end 
                    table.insert(JugadoresCercanos[player], players); 
                end 
            end 
           setPlayerVoiceBroadcastTo(player, JugadoresCercanos[player]); 
        end 
    end, 1500, 0 
) 
  
  
function estaCercaDe(a, b) 
    return Vector3.getLength(Vector3.create(getElementPosition(a)), Vector3.create(getElementPosition(b))) <= Cerca; 
end 
  

No es mas eficiente de este modo xD?

        for i, player in ipairs( getElementsByType("player") ) do 
            local otherplayer = getElementsByType("player")[i]; 
            if ( player ~= otherplayer and estaCercaDe(a, b) ) then 
                if ( not JugadoresCercanos[player] ) then 
                    JugadoresCercanos[player] = {}; 
                end 
                table.insert(JugadoresCercanos[player], players); 
            end 
        end 

Link to comment
No es necesario usar el recurso voice, esto debería funcionar:

Plus: en este ejemplo sólo llega al jugador el audio que debe escuchar, para evitar tráfico y subidas de latencia.

  
JugadoresCercanos = {}; 
Cerca = 50; 
  
setTimer( 
    function () 
        for i, player in ipairs( getElementsByType("player") ) do 
            for i, players in ipairs( getElementsByType("player") ) do 
                if ( player ~= players and estaCercaDe(a, b) ) then  
                    if ( not JugadoresCercanos[player] ) then 
                        JugadoresCercanos[player] = {}; 
                    end 
                    table.insert(JugadoresCercanos[player], players); 
                end 
            end 
           setPlayerVoiceBroadcastTo(player, JugadoresCercanos[player]); 
        end 
    end, 1500, 0 
) 
  
  
function estaCercaDe(a, b) 
    return Vector3.getLength(Vector3.create(getElementPosition(a)), Vector3.create(getElementPosition(b))) <= Cerca; 
end 
  

No es mas eficiente de este modo xD?

        for i, player in ipairs( getElementsByType("player") ) do 
            local otherplayer = getElementsByType("player")[i]; 
            if ( player ~= otherplayer and estaCercaDe(a, b) ) then 
                if ( not JugadoresCercanos[player] ) then 
                    JugadoresCercanos[player] = {}; 
                end 
                table.insert(JugadoresCercanos[player], players); 
            end 
        end 

Eso no funcionaría.

Link to comment
No es necesario usar el recurso voice, esto debería funcionar:

Plus: en este ejemplo sólo llega al jugador el audio que debe escuchar, para evitar tráfico y subidas de latencia.

  
JugadoresCercanos = {}; 
Cerca = 50; 
  
setTimer( 
    function () 
        for i, player in ipairs( getElementsByType("player") ) do 
            for i, players in ipairs( getElementsByType("player") ) do 
                if ( player ~= players and estaCercaDe(a, b) ) then  
                    if ( not JugadoresCercanos[player] ) then 
                        JugadoresCercanos[player] = {}; 
                    end 
                    table.insert(JugadoresCercanos[player], players); 
                end 
            end 
           setPlayerVoiceBroadcastTo(player, JugadoresCercanos[player]); 
        end 
    end, 1500, 0 
) 
  
  
function estaCercaDe(a, b) 
    return Vector3.getLength(Vector3.create(getElementPosition(a)), Vector3.create(getElementPosition(b))) <= Cerca; 
end 
  

No tengo con quien testear pero, Leyendo el codigo me parece que esta bien, Gracias

Link to comment
No es necesario usar el recurso voice, esto debería funcionar:

Plus: en este ejemplo sólo llega al jugador el audio que debe escuchar, para evitar tráfico y subidas de latencia.

  
JugadoresCercanos = {}; 
Cerca = 50; 
  
setTimer( 
    function () 
        for i, player in ipairs( getElementsByType("player") ) do 
            for i, players in ipairs( getElementsByType("player") ) do 
                if ( player ~= players and estaCercaDe(a, b) ) then  
                    if ( not JugadoresCercanos[player] ) then 
                        JugadoresCercanos[player] = {}; 
                    end 
                    table.insert(JugadoresCercanos[player], players); 
                end 
            end 
           setPlayerVoiceBroadcastTo(player, JugadoresCercanos[player]); 
        end 
    end, 1500, 0 
) 
  
  
function estaCercaDe(a, b) 
    return Vector3.getLength(Vector3.create(getElementPosition(a)), Vector3.create(getElementPosition(b))) <= Cerca; 
end 
  

¿Donde esta definido 'a' y 'b'?

Link to comment

¿Donde esta definido 'a' y 'b'?

Whoops

  
JugadoresCercanos = {}; 
Cerca = 50; 
  
setTimer( 
    function () 
        for i, player in ipairs( getElementsByType("player") ) do 
            for i, players in ipairs( getElementsByType("player") ) do 
                if ( player ~= players and estaCercaDe(player, players) ) then  
                    if ( not JugadoresCercanos[player] ) then 
                        JugadoresCercanos[player] = {}; 
                    end 
                    table.insert(JugadoresCercanos[player], players); 
                end 
            end 
           setPlayerVoiceBroadcastTo(player, JugadoresCercanos[player]); 
        end 
    end, 1500, 0 
) 
  
  
function estaCercaDe(a, b) 
    return Vector3.getLength(Vector3.create(getElementPosition(a)), Vector3.create(getElementPosition(b))) <= Cerca; 
end 
  

Link to comment
Yo que tu reemplazaría los ipairs por pairs. Y utilizaría también getDistanceBetween3DPoints en vez de un vector.

Remplazar 'ipairs' por 'pairs' no tiene sentido, tendria el mismo resultado, getElementsByType devuelve una tabla ordenada numericamente.

Link to comment
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...