[Tutorial] Audio Streams em SA:MP.
#1

╔═══════════════════════════════════════╗
Audio Streams SA:MP
.................................................. .................................................. .................By Kon_BR
╚═══════════════════════════════════════╝
- Este tutorial possui trкs partes :
* Introduзгo, informaзхes & etc.
• Upar/Pegar o URL da sua musica + pegar IPs das rбdios.
• Usando/Aplicando as funзхes.


Introduзгo
- Bom pessoal, estava sem nada pra fazer (sempre, parece ehhehhue) e decidi fazer este "pequeno" tutorial sobre Audio Streams, onde explico ou pelo menos tento onde ou como pegar os URLs para a funзгo da бudio stream dentro do script.

- Qualquer coisa que eu esqueci digam. Isso irб me ajudar a adicionar mais informaзхes ao tutorial. Critique а vontade. :b


Links Ъteis
PlayAudioStreamForPlayer
StopAudioStreamForPlayer

Mp3Skull

DropBox
Tutorial de como usar o DropBox - By ViictorDaay
Video ensinando a usar o mesmo - By humildadeforever



Informaзхes
- "Streaming (fluxo, ou fluxo de mнdia)й uma forma de distribuir informaзгo de audio e video pela Internet atravйs de pacotes."

- Beleza, Audio Stream pode ser basicamente entendida (Num servidor de SA:MP) como um audio que й emitido dentro do jogo por um link/ip/hospedagem (URL).


Begin !
Parte 1 - Pegando o URL da sua mъsica.
Simplesmente, basta vocк correr atrбs do URL da mъsica (Copiando o endereзo de link, caso o mesmo esteja "acoplado" em alguma imagem ou algo do tipo.) onde a mesma й executada (como no caso da imagem do 4є passo, logo abaixo) ou baixada/apareзa para fazer download. Se vocк entender e conseguir fazer isto, pode pular esta parte do tutorial jб. ^^

Beleza, vamos comeзar.

- Antes de tudo, conheзa o site http://mp3skull.com, bom site para encontrar e baixar mъsicas.
- Apуs procurar sua musica no site vocк se deparб com uma lista de vбrias alternativas da qual vocк pesquisou (desde a mъsica normal atй modificadas,remix,etc.) :
Quote:

- Ao escolher uma alternativa/mъsica da lista que lhe agrade, clique em "Download" (Logo abaixo do nome da mъsica.) :
Quote:

- Agora a parte mais importante, preste atenзгo. Dependendo no link do "Download", ao cliar, vocк poderб ser direcionado diretamente а pбgina da musica (onde a mesma toque e para baixa-lб vocк precisa "salva-lб como formato" e blб blб blб.) como por exemplo :
Quote:

Torзa para que sempre o link que vocк queira seja assim, pois, caso vocк seja redirecionado а uma pбgina do tipo (que executa a mъsica) ficarб muito mais fбcil, basta vocк copiar o link da pagina (que no meu caso й "http://www.bily.profitux.cz/files/eminem_lose%20yourself.mp3") e vocк jб terб o link da musica para seu Audio Stream. ;)

Caso, nгo seja como a imagem а cima, vocк precisarб pegar o link onde vocк clica e a mъsica й baixada ou ouvida(tocada). Como um exemplo na imagem abaixo :
Quote:

Isso varia dependendo de onde o "Download" lhe direcionar, o importante й que vocк saiba pegar o link da musica correto.


Feito, agora possuнmos o link da mъsica, pronto para o uso na funзгo no teu script ! Agora, caso vocк nгo encontre a tal musica/audio seu, vocк pode upar a mъsica ou qualquer outro som que vocк queira no DropBox. (Outro site muito bom pra isso.) O que й muito, mas MUITO simples depois que aprende ! Veja os links sobre tutorial de como usa-lo em "Links Uteis" aqui mesmo, no tуpico logo а cima.


Parte 1.2 - Pegando o IP de uma rбdio
Ok, de fato existe muitos tutoriais melhores sobre isso, e atй mais prбticos, porйm, quanto o fato de ser mais fбcil, este tutorial, digo, site pode facilmente ganhar. Let's go !

- Entre no site "http://www.planetaxat.com/radio/".
- Vocк de cara encontrarб a parte onde pesquisa a tal rбdio, "Buscador de rбdio de Xat" ali, vocк verб duas opзхes, para pesquisar, "Palavras:" e para escolher um gкnero. Como na imagem :
Quote:

Entгo, vocк escolhe. Ou pesquise um nome de uma rбdio qualquer que conheзa, ou pesquisa ordenando pelo gкnero
- Ao encontrar a rбdio que queira basta clicar no botгo "Obter IP" e escolher um dos IPs (caso teja mais de um) :
Quote:

Feito ! Agora temos o IP(URL) da rбdio para a audio stream.



Parte 2 - Usando e entendendo as funзхes
Vamos lб!

- Vamos entender as funзхes existentes para as Audios Streams no SA:MP.
PlayAudioStreamForPlayer - Inicia a musica pelo URL que й inserido na funзгo para o tal player (playerid), e caso use o resto dos parвmetros, em tal posiзгo, tambйm. || "Esta funзгo permite que vocк inicie/toque um audiostream para um jogador especнfico. Todos os parвmetros, exceto o "playerid" e o "url[]" й opcional."
Quote:
Parametros:
(playerid, url[], Float:posX = 0.0, Float:posY = 0.0, Float:posZ = 0.0, Float:distance = 50.0, usepos = 0)

playerid - O tal player no qual irб ouvir o Audio Stream.
url[] - O URL no qual estб o бudio e serб executado. Formatos validos : mp3 e ogg/vorbis.
Float:PosX - A posiзгo X que irб ser executado o audio. Padrгo : 0.0. Nгo terб efeito caso o "usepos" estб "0" (desativado).
Float:PosY - A posiзгo Y que irб ser executado o audio. Padrгo : 0.0. Nгo terб efeito caso o "usepos" estб "0" (desativado).
Float:PosZ - A posiзгo Z que irб ser executado o audio. Padrгo : 0.0. Nгo terб efeito caso o "usepos" estб "0" (desativado).
Float:distance - A distвncia sobre a qual o бudio serб transmitido. Nгo terб efeito caso o "usepos" estб "0" (desativado).
usepos - Define se os parвmetros de posiзхes e distвncia serгo usados. Padrгo : desativado (0).

StopAudioStreamForPlayer - Para qualquer бudio que estб tocando, independente/nгo necessбrio da posiзгo, etc. || "Interrompe o audiostream para o tal jogador."
Quote:
Parametros:
(playerid)

playerid - O tal player no qual terб o бudio parado.

- Agora vamos, finalmente unir todo o nosso trabalho na parte 1 para as funзхes. Simples. No que vocк unirб da parte 1 com as funзхes й apenas o link/ip(URL) da mъsica/rбdio. Veja :
pawn Код:
PlayAudioStreamForPlayer(playerid, "(URL/IP da mъsica/rбdio aqui, entre as aspas.)");
O URL serб o mesmo, independente se vocк fizer essa funзгo usando todos aqueles esquemas de posiзгo, distвncia e etc.

Finalmente, temos a funзгo com o URL do бudio stream ! ^^

Exemplos
- Comandos de ouvir uma rбdio (TechnoBase.FM) e parar o бudio.
pawn Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
    if (strcmp("/radioeletronica", cmdtext, true) == 0) // ~ Comando para ouvir uma rбdio.
    {
        PlayAudioStreamForPlayer(playerid, "http://80.237.155.73:80"); // - A funзгo de iniciar o бudio (rбdio).
        SendClientMessage(playerid, -1, "» Agora vocк estб ouvindo a rбdio  TechnoBase.FM (Eletronica/Techno) !"); // - Mensagem enviada para o player que iniciou o бudio e blб blб blб.
        return 1;
    }

    if (strcmp("/pararaudio",cmdtext, true) == 0) // ~ Comando para parar o бudio.
    {
    StopAudioStreamForPlayer(playerid); // - A funзгo de parar/desligar o бudio.
    SendClientMessage(playerid, -1,"» Vocк parou/desligou o бudio (Rбdio/Musica) para vocк mesmo ! "); // - Mensagem enviada para o player que parou o бudio e blб blб blб.
    return 1;
    }
    return 0;
}
* Obs : dб pra notar que eu usei ou coloquei apenas dois dos 7 parвmetros da funзгo "PlayAudioStreamForPlayer", pois, na prуpria explicaзгo dos parвmetros diz que tem um padrгo (que no caso й 0, ou das floats, 0.0) ou que dependem da "usepos", e por isso se tornam opcional. No caso do meu comando de tocar a rбdio, ela й tocada independente da posiзгo do player que usou o comando. :b

- Deixo duas stocks bem interessantes tambйm dessas duas funзхes sу que pro server todo. (PlayAudioStreamForAll e StopAudioStreamForAll)
pawn Код:
// ~ Audio Stream para todos.
stock PlayAudioStreamForAll(url[])
{
    for(new i = 0, e = GetMaxPlayers(); i < e; i++)
    {
        if(IsPlayerConnected(i))
        {
            PlayAudioStreamForPlayer(i, url);
        }
    }
    return 1;
}

// ~ Parar Audio Stream para todos.
stock StopAudioStreamForAll()
{
    for(new i = 0, e = GetMaxPlayers(); i < e; i++)
    {
        if(IsPlayerConnected(i))
        {
            StopAudioStreamForPlayer(i);
        }
    }
    return 1;
}
The end. ^^

Observaзхes
- Vale a pena ressaltar que a funзгo que as Audios Streams exercem, depende da net do player no qual irб ouvir. Atй onde eu sei, nгo causa NENHUM LAG NO SERVIDOR, o que afeta й o player, dependendo da net dele, ele poderб ouvir facilmente, sem nenhum problemas a rбdio/mъsica ou poderб ouvir com travadas/lag.
Quote:
Originally Posted by .FuneraL.
Посмотреть сообщение
a qualidade de execuзгo depende da conexгo.
- Devo lembrar que os ъnicos formatos permitidos pela funзгo й mp3 e ogg/vorbis. ("Valid formats are mp3 and ogg/vorbis.")

- Outra coisa idiota, porйm muitas pessoas irгo se confundir. Caso vocкs notem que a Audio Stream nгo toque e nгo apareзa aquela mensagem em verde ("Audio Stream: http://[...]") й simplesmente porque o бudio do jogo das suas opзхes(rбdio) estб desativado/completamente baixo. Entгo verifique sempre nas opзхes antes de iniciar uma audio stream no jogo.
Quote:

- Caso falte alguma coisa neste tutorial, digam. Nгo sу me ajuda, como ajuda os outros que visualizam-no tambйm. :D

Creditos
Tutorial completamente feito por mim. (Kon_BR || Twist)
SAMP e SA-MP Forums.

Enjoy :D
Reply
#2

Bem bolado, explicativo e йpico.
Parabйns.
Reply
#3

So gostei da parte de pegr ipґs de radio e link de musica ...
Reply
#4

Belo tutorial, Parabйns!! REP += 6.
Reply
#5

Tуpico organizado e tudo bem explicadinho! Nota 11/10 :]
Reply
#6

Belo tutorial, bem explicado
Reply
#7

Уtimo tutorial . Uma duvida ,
й sу aqui ou quando comeзa a tocar sons comeзa a dar umas travadinhas ?
Reply
#8

Quote:
Originally Posted by darkxdll
Посмотреть сообщение
Уtimo tutorial . Uma duvida ,
й sу aqui ou quando comeзa a tocar sons comeзa a dar umas travadinhas ?
Й normal isso =/
Da umas travadinhas no meu pc e no meu not tb '-'
Reply
#9

Quote:
Originally Posted by darkxdll
Посмотреть сообщение
Уtimo tutorial . Uma duvida ,
й sу aqui ou quando comeзa a tocar sons comeзa a dar umas travadinhas ?
Уtimo tutorial, Sу nгo aprende quem nгo quer realmente, e Respondendo a sua dъvida dark, as travadinhas, sгo porque talvez sua conexгo nгo esteja muito boa, hб boatos de que o audio stream, pode causar lag se a internet nгo for boa, a qualidade de execuзгo depende da conexгo.
Reply
#10

Quote:
Originally Posted by .FuneraL.
Посмотреть сообщение
Уtimo tutorial, Sу nгo aprende quem nгo quer realmente, e Respondendo a sua dъvida dark, as travadinhas, sгo porque talvez sua conexгo nгo esteja muito boa, hб boatos de que o audio stream, pode causar lag se a internet nгo for boa, a qualidade de execuзгo depende da conexгo.
Tem algum jeito de quando der essas "travadinhas" parar o audiostream?
Porque jб tenho minha lуgica, se o ping do player tiver alto, quando comeзar o audiostream, coloco pra abrir um MSGBOX, dizendo que a conexгo estб ruim e teve que parar a mъsica/audio!

kkkk Sei nem oque eu fiz, mas ta ae:
pawn Код:
#include <a_samp>
#define FILTERSCRIPT
#include <zcmd>

new bool:Tocando[MAX_PLAYERS];

public OnFilterScriptInit()
{
    print("\n--------------------------------------");
    print(" [FS] Anti-Conexгo ruim kkk!");
    print("--------------------------------------\n");
    return 1;
}

public OnFilterScriptExit()
{
    return 1;
}

public OnPlayerUpdate(playerid)
{
    if(GetPlayerPing(playerid) > 500)
    {
        if(Tocando[playerid] == true)
        {
            new kString[200], kName[MAX_PLAYER_NAME];
            GetPlayerName(playerid, kName, MAX_PLAYER_NAME);
            format(kString, sizeof(kString), "{7FFFD4}Olб {AFEEEE}%s{7FFFD4}, seu ping estб muito alto, e foi parada o audio/mъsica.",kName);
            ShowPlayerDialog(playerid, 147, DIALOG_STYLE_MSGBOX, "Informaзгo",kString,"Fechar","");
            StopAudioStreamForPlayer(playerid);
            Tocando[playerid] = false;
        }
    }
    return 1;
}

CMD:musica(playerid)
{
    if(Tocando[playerid] == false)
    {
        PlayAudioStreamForPlayer(playerid, "http://80.237.155.73:80");
        Tocando[playerid] = true;
    }
    else
    {
        SendClientMessage(playerid, -1, "Sua mъsica jб estб tocando!");
    }
    return 1;
}
ou

pawn Код:
#include <a_samp>
#define FILTERSCRIPT
#include <zcmd>

#define pMAX_PING               500 //Se o player tiver este ping e estiver ouvindo a mъsica, vai parar a mъsica!
#define DIALOG_STOP             147 //Dialog
#define SegundosChamarPublic    1 //Segundos que vai chamar a public (RECOMENDAVEL: deixe assim mesmo)

new bool:Tocando[MAX_PLAYERS];

public OnFilterScriptInit()
{
    print("\n--------------------------------------");
    print(" [FS] Anti Net б Manivela[AUDIO STREAM]");
    print("                      By: Rhay_Fither");
    print("--------------------------------------\n");
   
    SetTimer("VerificandoPing",SegundosChamarPublic*1000,true);
    return 1;
}

public OnFilterScriptExit()
{
    return 1;
}

CMD:musica(playerid)
{
    if(Tocando[playerid] == false)
    {
        PlayAudioStreamForPlayer(playerid, "http://80.237.155.73:80");
        Tocando[playerid] = true;
    }
    else
    {
        SendClientMessage(playerid, -1, "Sua mъsica jб estб tocando!");
    }
    return 1;
}

forward VerificandoPing(playerid);
public VerificandoPing(playerid)
{
    if(GetPlayerPing(playerid) > pMAX_PING)
    {
        if(Tocando[playerid] == true)
        {
            new kString[200], kName[MAX_PLAYER_NAME];
            GetPlayerName(playerid, kName, MAX_PLAYER_NAME);
            format(kString, sizeof(kString), "{7FFFD4}Olб {AFEEEE}%s{7FFFD4}, seu ping estб muito alto, e foi parada o audio/mъsica.",kName);
            ShowPlayerDialog(playerid, DIALOG_STOP, DIALOG_STYLE_MSGBOX, "Informaзгo",kString,"Fechar","");
            StopAudioStreamForPlayer(playerid);
            Tocando[playerid] = false;
        }
    }
    return 1;
}
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)