[Tutorial] Funcion ProxPlayAudioStreamForPlayer
#1

Funcion ProxPlayAudioStreamForPlayer

(Tutorial Hecho Para Los Usuarios Nuevos.)


* їQue Es?:
* Es Una Funcion Para Dale Audio A Los Player Cercano En El Rango Correspondiente Del Jugador Que Ejecute La Funcion.
Es Como El Tipico Proxdetector Pero Para Audio.


* Funcion:

Код:
ProxPlayAudioStreamForPlayer(Float:radi, playerid, Url[]);
* Modo De Uso:

Ejemplo::

* Coloca En Donde Quiera Que Se Ejecute La Funcion:

Код:
ProxPlayAudioStreamForPlayer(30, playerid, ""http://Tu.Audio.Con/mp3");
* Al Final Del GM:

Код:
    forward ProxPlayAudioStreamForPlayer(Float:radi, playerid, Url[]);
    public ProxPlayAudioStreamForPlayer(Float:radi, playerid, Url[])
    {
       if(IsPlayerConnected(playerid))
       {
           new Float:posx, Float:posy, Float:posz;
           new Float:oldposx, Float:oldposy, Float:oldposz;
           new Float:tempposx, Float:tempposy, Float:tempposz;
           GetPlayerPos(playerid, oldposx, oldposy, oldposz);
           for(new i = 0; i < MAX_PLAYERS; i++)
           {
              if(IsPlayerConnected(i) && (GetPlayerVirtualWorld(playerid) == GetPlayerVirtualWorld(i)))
              {
                   GetPlayerPos(i, posx, posy, posz);
                   tempposx = (oldposx -posx);
                   tempposy = (oldposy -posy);
                   tempposz = (oldposz -posz);
                   if (((tempposx < radi/16) && (tempposx > -radi/16)) && ((tempposy < radi/16) && (tempposy > -radi/16)) && ((tempposz < radi/16) && (tempposz > -radi/16)))
                   {
                      PlayAudioStreamForPlayer(i, Url);
                   }
                   else if (((tempposx < radi/8) && (tempposx > -radi/8)) && ((tempposy < radi/8) && (tempposy > -radi/8)) && ((tempposz < radi/8) && (tempposz > -radi/8)))
                   {
                      PlayAudioStreamForPlayer(i, Url);
                   }
                   else if (((tempposx < radi/4) && (tempposx > -radi/4)) && ((tempposy < radi/4) && (tempposy > -radi/4)) && ((tempposz < radi/4) && (tempposz > -radi/4)))
                   {
                      PlayAudioStreamForPlayer(i, Url);
                   }
                   else if (((tempposx < radi/2) && (tempposx > -radi/2)) && ((tempposy < radi/2) && (tempposy > -radi/2)) && ((tempposz < radi/2) && (tempposz > -radi/2)))
                   {
                      PlayAudioStreamForPlayer(i, Url);
                   }
                   else if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
                   {
                      PlayAudioStreamForPlayer(i, Url);
                   }
               }
           }
       }
       return 1;
    }
* CREDITOS:
OTACON & SAMP.
Reply
#2

Tienes Razon es paresido al ProxDetector solo que el Proxdetector ase que al estar mas lejos del Radio indicado se va a ver de otro color los mensajes tu podrias aser que cada ves que este un poco mas lejos se escuche mas bajo...

PD:Esta Bueno
Reply
#3

No es por fastidiar, pero:
pawn Код:
PlayAudio(Float:rango, playerid, url[]) //No la he testeado, pero deberнa funcionar igual.
{
        new Float:Pos[3];
        GetPlayerPos(playerid,Pos[0],Pos[1],Pos[2]);
        for(new i; i < MAX_PLAYERS; i++)
        {
                if(IsPlayerInRangeOfPoint(i, rango, Pos[0], Pos[1], Pos[2]) && i != playerid)
                {
                        PlayAudioStreamForPlayer(i, url);
                }
        }
        PlayAudioStreamForPlayer(playerid, url);
        return 1;
}
Si se pudiera controlar el volumen del sonido tu funciуn tendrнa mбs sentido. Se agradece igual!

Saludos...
Reply
#4

Quote:
Originally Posted by irinel1996
Посмотреть сообщение
No es por fastidiar, pero:
pawn Код:
PlayAudio(Float:rango, playerid, url[]) //No la he testeado, pero deberнa funcionar igual.
{
        new Float:Pos[3];
        GetPlayerPos(playerid,Pos[0],Pos[1],Pos[2]);
        for(new i; i < MAX_PLAYERS; i++)
        {
                if(IsPlayerInRangeOfPoint(i, rango, Pos[0], Pos[1], Pos[2]) && i != playerid)
                {
                        PlayAudioStreamForPlayer(i, url);
                }
        }
        PlayAudioStreamForPlayer(playerid, url);
        return 1;
}
Si se pudiera controlar el volumen del sonido tu funciуn tendrнa mбs sentido. Se agradece igual!

Saludos...
pero el tuyo es mas ligero, pero el audio solo se escuchara en la pocision exacta y rango exacto , el mio no, se ira escuchando cuando te vas acercando y alejando :P ¬¬ xD
Reply
#5

Quote:
Originally Posted by bytytus
Посмотреть сообщение
pero el tuyo es mas ligero, pero el audio solo se escuchara en la pocision exacta y rango exacto , el mio no, se ira escuchando cuando te vas acercando y alejando :P ¬¬ xD
La funcion de irenel1996 hace exatamente lo mismo que la tuya.

pawn Код:
if (((tempposx < radi/16) && (tempposx > -radi/16)) && ((tempposy < radi/16) && (tempposy > -radi/16)) && ((tempposz < radi/16) && (tempposz > -radi/16)))
               {
                  PlayAudioStreamForPlayer(i, Url);
               }
               else if (((tempposx < radi/8) && (tempposx > -radi/8)) && ((tempposy < radi/8) && (tempposy > -radi/8)) && ((tempposz < radi/8) && (tempposz > -radi/8)))
               {
                  PlayAudioStreamForPlayer(i, Url);
               }
               else if (((tempposx < radi/4) && (tempposx > -radi/4)) && ((tempposy < radi/4) && (tempposy > -radi/4)) && ((tempposz < radi/4) && (tempposz > -radi/4)))
               {
                  PlayAudioStreamForPlayer(i, Url);
               }
               else if (((tempposx < radi/2) && (tempposx > -radi/2)) && ((tempposy < radi/2) && (tempposy > -radi/2)) && ((tempposz < radi/2) && (tempposz > -radi/2)))
               {
                  PlayAudioStreamForPlayer(i, Url);
               }
               else if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
               {
                  PlayAudioStreamForPlayer(i, Url);
               }
no tiene sentido usar todos esos else if, porque de todos modos si alguno de ellos es verdadero no hay nada diferente que haga cada if, con uno basta.
Reply
#6

No sй si se dieron cuenta pero PlayAudioStreamForPlayer ya tiene parametros de X, Y, Z y radio.
https://sampwiki.blast.hk/wiki/PlayAudioStreamForPlayer
pawn Код:
native PlayAudioStreamForPlayer(playerid, url[], Float:posX = 0.0, Float:posY = 0.0, Float:posZ = 0.0, Float:distance = 50.0, usepos = 0);
Reply
#7

Sos un genio !
Reply
#8

Quote:
Originally Posted by Francis.
Посмотреть сообщение
No sй si se dieron cuenta pero PlayAudioStreamForPlayer ya tiene parametros de X, Y, Z y radio.
https://sampwiki.blast.hk/wiki/PlayAudioStreamForPlayer
pawn Код:
native PlayAudioStreamForPlayer(playerid, url[], Float:posX = 0.0, Float:posY = 0.0, Float:posZ = 0.0, Float:distance = 50.0, usepos = 0);
ya lo se :P Pero Bueh, estaba aburrido xD
Reply
#9

No es parecido al ProxDetector, ES el ProxDetector. Lo ъnico que hizo fue cambiar la funcion de mandar el mensaje a los jugadores que estбn cerca a mandar el audio a los que estбn cerca.
Buena idea
Reply
#10

Quote:
Originally Posted by TiNcH010
Посмотреть сообщение
No es parecido al ProxDetector, ES el ProxDetector. Lo ъnico que hizo fue cambiar la funcion de mandar el mensaje a los jugadores que estбn cerca a mandar el audio a los que estбn cerca.
Buena idea
exacto
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)