• 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Pawn] Reproduzir música em uma area especifica
#1
Sad 
Bem pessoal, eu gostaria da ajuda de voces para me ajudar com um problema, eu quero que fique tocando uma música na Groove Street e quando um player entrar naquela área, ele podera ouvir a música. Meu código base!


CMD:tocar(playerid)
{
    if (IsPlayerInRangeOfPoint(playerid, 2.0, 2466.4934, -1658.9978, 13.3907))
    {
        new i;
        for (i = 0; i < MAX_PLAYERS; i++)
        {
            new Float:P[3];
            GetPlayerPos(i, P[0], P[1], P[2]);

            if (IsPlayerInRangeOfPoint(i, 90.0, 2466.4934, -1658.9978, 13.3907))
            {
                PlayAudioStreamForPlayer(i, "http://stream.com.br/radio", P[0], P[1], P[2], 90.0, 1);
            }
        }
    }
    return 1;


Obrigado pela atenção!
}
  Reply
#2
vou dar uma ideia melhor, bote uns caixa de som na rua ou gruda em qualquer carro que tenha uma carroça e deixa a musica tocando na rua

new tocarumavez[50];

public OnPlayerConnect(playerid)
{
tocarumavez[playerid] = 0;
return 1;
}

nesse evento onde o jogador se move essa função só pode ser executada uma vez, caso contrário isso trava o seu jogo porque fica sendo repetido a cada um segundo, no distance botei 20 metros se você se afastar do local o áudio vai diminuindo até você para de ouvir, mas não vai desligar a transmissão o áudio vai continuar e pra resolver isso você precisa usar o steamer plugin pra criar uma zona personalizada pra salvar as áreas ao redor da groove pra desligar a música de vez quando o jogador sair dessa área

https://bitbucket.org/Grimrandomer/samp-...downloads/
https://github.com/samp-incognito/samp-s...es-(Areas)

public OnPlayerUpdate(playerid)
{
if(IsPlayerInRangeOfPoint(playerid, 100.0, 2496.3374, -1665.0436, 13.3438))
{
if(tocarumavez[playerid] == 0)
{
tocarumavez[playerid] = 1;
new Float:X, Float:Y, Float:Z, Float:Distance = 20.0;
GetPlayerPos(playerid, X, Y, Z);
PlayAudioStreamForPlayer(playerid, "https://somafm.com/thetrip.pls", X, Y, Z, Distance, 1);
}
}
return 1;
}

public OnPlayerRequestClass(playerid, classid)
{
SetSpawnInfo(playerid, 0, 0, 2496.3374, -1665.0436, 13.3438, 0.0, 0, 0, 0, 0, 0, 0);
SpawnPlayer(playerid);
return 1;
}
  Reply
#3
Obrigado por ajudar, mas não sei se o codigo que você apresentou é o que eu quero aprender, vou dar um exemplo: Não se você já jogou o Underground Roleplay, lá eles tem a área do festival e naquela area fica tocando a musica 24/7, e quando os players entran na area, a música toca de forma sincronizada para todos players, exemplo: se uma pessoa já esta naquela area ouvindo a musica em certo tempo, quando uma pessoa entrar na area, também vai ouvir no mesmo tempo em que a outra pessoa já estava ouvindo, sem começar como se fosse ativado pela primeira vez do player, deu pra entender? kkkk
  Reply
#4
(2024-03-02, 02:14 PM)zBreno Wrote: vou dar uma ideia melhor, bote uns caixa de som na rua ou gruda em qualquer carro que tenha uma carroça e deixa a musica tocando na rua

new tocarumavez[50];

public OnPlayerConnect(playerid)
{
tocarumavez[playerid] = 0;
return 1;
}

nesse evento onde o jogador se move essa função só pode ser executada uma vez, caso contrário isso trava o seu jogo porque fica sendo repetido a cada um segundo, no distance botei 20 metros se você se afastar do local o áudio vai diminuindo até você para de ouvir, mas não vai desligar a transmissão o áudio vai continuar e pra resolver isso você precisa usar o steamer plugin pra criar uma zona personalizada pra salvar as áreas ao redor da groove pra desligar a música de vez quando o jogador sair dessa área

https://bitbucket.org/Grimrandomer/samp-...downloads/
https://github.com/samp-incognito/samp-s...es-(Areas)

public OnPlayerUpdate(playerid)
{
if(IsPlayerInRangeOfPoint(playerid, 100.0, 2496.3374, -1665.0436, 13.3438))
{
if(tocarumavez[playerid] == 0)
{
tocarumavez[playerid] = 1;
new Float:X, Float:Y, Float:Z, Float:Distance = 20.0;
GetPlayerPos(playerid, X, Y, Z);
PlayAudioStreamForPlayer(playerid, "https://somafm.com/thetrip.pls", X, Y, Z, Distance, 1);
}
}
return 1;
}

public OnPlayerRequestClass(playerid, classid)
{
SetSpawnInfo(playerid, 0, 0, 2496.3374, -1665.0436, 13.3438, 0.0, 0, 0, 0, 0, 0, 0);
SpawnPlayer(playerid);
return 1;
}

O que eu queria é que quando o player entrar na area definida, toque uma música
  Reply
#5
public OnPlayerRequestClass(playerid, classid)
{
SetSpawnInfo(playerid, 0, 0, 2437.6921, -1657.0721, 13.3613, 0.0, 0, 0, 0, 0, 0, 0);
SpawnPlayer(playerid);
new Float:Distance = 20.0;
PlayAudioStreamForPlayer(playerid, "https://somafm.com/thetrip.pls", 2496.3374, -1665.0436, 13.3438, Distance, 1);
return 1;
}

pra tocar pra todos ao mesmo tempo bote a sua função no on player request class o stream de música no samp não possui sincronia porque o jogador pode parar o stream a qualquer momento a não ser que eles usem um launcher personalizado pra essa função ou um plugin de áudio feito pra isso o mas plausível possa ser que é apenas uma rádio tocando lá então quando é uma rádio sempre vai tocar ao mesmo tempo pra todos eu usava muito esse serviço antigamente https://www.caster.fm
  Reply
#6
(2024-03-02, 05:33 PM)zBreno Wrote: public OnPlayerRequestClass(playerid, classid)
{
SetSpawnInfo(playerid, 0, 0, 2437.6921, -1657.0721, 13.3613, 0.0, 0, 0, 0, 0, 0, 0);
SpawnPlayer(playerid);
new Float:Distance = 20.0;
PlayAudioStreamForPlayer(playerid, "https://somafm.com/thetrip.pls", 2496.3374, -1665.0436, 13.3438, Distance, 1);
return 1;
}

pra tocar pra todos ao mesmo tempo bote a sua função no on player request class o stream de música no samp não possui sincronia porque o jogador pode parar o stream a qualquer momento a não ser que eles usem um launcher personalizado pra essa função ou um plugin de áudio feito pra isso o mas plausível possa ser que é apenas uma rádio tocando lá então quando é uma rádio sempre vai tocar ao mesmo tempo pra todos eu usava muito esse serviço antigamente https://www.caster.fm

Muito obrigado pela ajuda, me ajudou bastante, somente com aqueles links que tu me enviou ai. Valeu e obrigado mais uma vez! ✌😎
  Reply
#7
PHP Code:
CMDtocar(playerid)
{
    if (
IsPlayerInRangeOfPoint(playerid2.02466.4934, -1658.997813.3907))
    {
        new 
i;
        for (
0MAX_PLAYERSi++)
        {
            if (
IsPlayerInRangeOfPoint(i90.02466.4934, -1658.997813.3907))
            {
                
PlayAudioStreamForPlayer(i"http://stream.com.br/radio"2466.4934, -1658.997813.390790.00);
            }
        }
    }
    return 
1;

  Reply


Forum Jump: