Jump to content

Duda con recurso voice


-Rex-

Recommended Posts

Posted

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?

Leal es quien te ama y respeta tus sentimientos

Paid Scripter, Contact me: https://www.facebook.com/rexscripting/  Estoy retirado.

Posted

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 
) 

Leal es quien te ama y respeta tus sentimientos

Paid Scripter, Contact me: https://www.facebook.com/rexscripting/  Estoy retirado.

Posted (edited)
Ami me da que no, ya que emplear "source" se refiere al mismo "localPlayer".

Entonces como se haría desde server si de?

Edited by Guest

El unico limite en la vida, es tu imaginacion.

Programar es la mejor forma de aprender a pensar.

Posted

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 
  

Currently developing for International Gaming Community - Join us!

Posted
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 

Inactivo.

Posted
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.

Currently developing for International Gaming Community - Join us!

Posted
Ami me da que no, ya que emplear "source" se refiere al mismo "localPlayer".

No, también puede ser un jugador remoto.

State: Inactive

Posted
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

Leal es quien te ama y respeta tus sentimientos

Paid Scripter, Contact me: https://www.facebook.com/rexscripting/  Estoy retirado.

Posted
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'?

San Andreas Utopia RPG (SAUR) Owner & Developer.

560x95_FFFFFF_FF9900_000000_000000.png

Education is the most powerful weapon which you can use to change the world.

Posted

¿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 
  

Currently developing for International Gaming Community - Join us!

Posted
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.

San Andreas Utopia RPG (SAUR) Owner & Developer.

560x95_FFFFFF_FF9900_000000_000000.png

Education is the most powerful weapon which you can use to change the world.

  • Recently Browsing   0 members

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