[AJUDA] Como fazer streaming Shoutcast para todos dentro de um carro.
#1

Ooooooooi, tudo bem? Gostaria de saber como fazer o que estб escrito no tнtulo.
Eu jб fiz todo o resto, sу falta saber isso, grato.

Caso precisar do cуdigo, avisem que posto no PB.
Reply
#2

Salva uma var pra ID do stream que stб sendo tocado em cada carro e da play pro player no OnPlayerStateChange.
Reply
#3

Boiei legal agora... nгo sou muito avanзado em pawn. D:
Reply
#4

vo faze o codigo agora ai vc testa ok??
pawn Код:
public OnPlayerEnterVehicle(playerid,vehicleid,ispassenger)
{
     PlayAudioStreamForPlayer(playerid,"LINK DA RADIO OU IP");
}
public OnPlayerExitVehicle(playerid,vehicleid)
{
     StopAudioStreamForPlayer(playerid);
}
Reply
#5

Quote:
Originally Posted by BlackCoder
Посмотреть сообщение
vo faze o codigo agora ai vc testa ok??
pawn Код:
public OnPlayerEnterVehicle(playerid,vehicleid,ispassenger)
{
     PlayAudioStreamForPlayer(playerid,"LINK DA RADIO OU IP");
}
public OnPlayerExitVehicle(playerid,vehicleid)
{
     StopAudioStreamForPlayer(playerid);
}
Acha que nгo pensei nisso? Isso vai tocar o que eu definir, nгo o que estaria tocando, ou seja, jб definido. Entende? Quero que quando o player entre no carro, identifique qual rбdio estб tocando e setar para ele.
Reply
#6

eu aconselharia a fazer assim:


pawn Код:
//variavel global
new Radio[MAX_VEHICLES][128];//n sei o tamanho maximo de um link de radio, troca o 128 pelo tamanho maximo

//onde o player troca a estaзгo de radio
format(Radio[GetPlayerVehicleID(playerid)],sizeof(Radio), "link da radio");
PlayeAudioStreamForPlayer(playerid, Radio[GetPlayerVehicleID(playerid)]);
for(new i=0; i<MAX_PLAYERS; i++)
{
    if(GetPlayerVehicleID(playerid) == GetPlayerVehicleID(i))
    PlayeAudioStreamForPlayer(i, Radio[GetPlayerVehicleID(i)]);
}

//na public OnPlayerStateChange
if(PLAYER_STATE_PASSENGER == newstate == PLAYER_STATE_DRIVER)
PlayeAudioStreamForPlayer(playerid, Radio[GetPlayerVehicleID(playerid)]);
Quando o player entrar no carro vai tocar a radio que estava tocando e quando o player trocar de radio os players que estao no carro dele vao ouvir a msm radio.
Reply
#7

Quote:
Originally Posted by Lucas_Morais
Посмотреть сообщение
Acha que nгo pensei nisso? Isso vai tocar o que eu definir, nгo o que estaria tocando, ou seja, jб definido. Entende? Quero que quando o player entre no carro, identifique qual rбdio estб tocando e setar para ele.
Cara sу queria ajudar,estava postando outro cуdigo mais complexo mas vejo que o Pharrel postou primeiro igual ao meu,Faзa bom proveito.
Reply
#8

pawn Код:
new RadioID[MAX_VEHICLES][128];

strmid(...RadioID[GetPlayerVehicleID(playerid)], "radio_que_sera_tocada);

public OnPlayerStateChange(...)
{
  if ( newstate == ...passager...) {
     PlayAudioStreamForPlayer(..., RadioID[GetPlayerVehicleID(playerid);
}
}
Dei uma idйia...
Reply
#9

pawn Код:
if(PLAYER_STATE_PASSENGER == newstate == PLAYER_STATE_DRIVER)
Tag Mismatch.
Reply
#10

pawn Код:
if(PLAYER_STATE_PASSENGER == newstate || newstate == PLAYER_STATE_DRIVER)
Reply
#11

Pharrel, seu mйtodo nгo deu certo. Eu spawnei um carro e dei o comando, eu nгo ouvi mas meu amigo ouviu. E ele tб falando que tб sobrepondo o som das rбdios.


Se for de bom uso: http://pastebin.com/Tzu771Vp (durante 1h disponнvel)
Reply
#12

pawn Код:
#define FILTERSCRIPT
#include <a_samp>
//#pragma tabsize 0

new Radio[MAX_VEHICLES][128 char];
new pname[MAX_PLAYER_NAME char];
new str[128 char];

public OnFilterScriptInit()
{
    print("\n--------------------------------------");
    print(" RADIO FILTERSCRIPT BY LUCAS MORAIS");
    print("--------------------------------------\n");
    return 1;
}

public OnFilterScriptExit()
{
    return 1;
}

public OnGameModeInit()
{
    return 1;
}

public OnGameModeExit()
{
    return 1;
}

public OnPlayerRequestClass(playerid, classid)
{
    return 1;
}

public OnPlayerConnect(playerid)
{
    return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
    return 1;
}

public OnPlayerSpawn(playerid)
{
    return 1;
}

public OnPlayerDeath(playerid, killerid, reason)
{
    return 1;
}

public OnVehicleSpawn(vehicleid)
{
    return 1;
}

public OnVehicleDeath(vehicleid, killerid)
{
    return 1;
}

public OnPlayerText(playerid, text[])
{
    return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
    if(!strcmp(cmdtext, "/radio", true))
    {
        if(IsPlayerInAnyVehicle(playerid))
            ShowPlayerDialog(playerid, 1, DIALOG_STYLE_LIST, "Escolha a estaзгo", "COUNTRY\nPOP\nHIP HOP\nROCK\nELETRФNICA\nHEAVY METAL", "Tunar", "Desligar");
        else
            SendClientMessage(playerid, 0x8F1B14AA, "Vocк nгo estб em um veнculo!");
        return 1;
    }
    return 0;
}

public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
    return 1;
}

public OnPlayerExitVehicle(playerid, vehicleid)
{
    return 1;
}

public OnPlayerStateChange(playerid, newstate, oldstate)
{
    if(newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER)
        PlayAudioStreamForPlayer(playerid, Radio[GetPlayerVehicleID(playerid)]);
    else if(oldstate == PLAYER_STATE_DRIVER || oldstate == PLAYER_STATE_PASSENGER)
    {
        StopAudioStreamForPlayer(playerid);
        SendClientMessage(playerid, 0x50AF6CAA, "Rбdio desligado automaticamente!");
    }
    return 1;
}

public OnPlayerEnterCheckpoint(playerid)
{
    return 1;
}

public OnPlayerLeaveCheckpoint(playerid)
{
    return 1;
}

public OnPlayerEnterRaceCheckpoint(playerid)
{
    return 1;
}

public OnPlayerLeaveRaceCheckpoint(playerid)
{
    return 1;
}

public OnRconCommand(cmd[])
{
    return 1;
}

public OnPlayerRequestSpawn(playerid)
{
    return 1;
}

public OnObjectMoved(objectid)
{
    return 1;
}

public OnPlayerObjectMoved(playerid, objectid)
{
    return 1;
}

public OnPlayerPickUpPickup(playerid, pickupid)
{
    return 1;
}

public OnVehicleMod(playerid, vehicleid, componentid)
{
    return 1;
}

public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
{
    return 1;
}

public OnVehicleRespray(playerid, vehicleid, color1, color2)
{
    return 1;
}

public OnPlayerSelectedMenuRow(playerid, row)
{
    return 1;
}

public OnPlayerExitedMenu(playerid)
{
    return 1;
}

public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
{
    return 1;
}

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
    return 1;
}

public OnRconLoginAttempt(ip[], password[], success)
{
    return 1;
}

public OnPlayerUpdate(playerid)
{
    return 1;
}

public OnPlayerStreamIn(playerid, forplayerid)
{
    return 1;
}

public OnPlayerStreamOut(playerid, forplayerid)
{
    return 1;
}

public OnVehicleStreamIn(vehicleid, forplayerid)
{
    return 1;
}

public OnVehicleStreamOut(vehicleid, forplayerid)
{
    return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    GetPlayerName(playerid, pname, sizeof(pname));
    if(dialogid == 1)
    {
        switch(listitem)
        {
            case 0:
            {
                ChangeRadioStation(GetPlayerVehicleID(playerid), "http://yp.shoutcast.com/sbin/tunein-station.pls?id=1274603");
                SendClientMessage(playerid, 0x178C4DAA, "Rбdio tunado na estaзгo 102.1FM - A sua rбdio Country, I-HA!");
                format(str, sizeof(str), "%s leva sua mгo atй o painel do carro, ligando o rбdio.", pname);
                SendLocalChat(playerid,0xD563E4AA,str,2.5);
                format(str, sizeof(str), "%s aperta o botгo '1' no painel do rбdio, tunando na rбdio Country.", pname);
                SendLocalChat(playerid,0xD563E4AA,str,2.5);
            }
            case 1:
            {
                ChangeRadioStation(GetPlayerVehicleID(playerid), "http://yp.shoutcast.com/sbin/tunein-station.pls?id=2947897");
                SendClientMessage(playerid, 0x178C4DAA, "Rбdio tunado na estaзгo 107.5FM - A rбdio POP do momento!");
                format(str, sizeof(str), "%s leva sua mгo atй o painel do carro, ligando o rбdio.", pname);
                SendLocalChat(playerid,0xD563E4AA,str,2.5);
                format(str, sizeof(str), "%s aperta o botгo '2' no painel do rбdio, tunando na rбdio POP.", pname);
                SendLocalChat(playerid,0xD563E4AA,str,2.5);
            }
            case 2:
            {
                ChangeRadioStation(GetPlayerVehicleID(playerid), "http://yp.shoutcast.com/sbin/tunein-station.pls?id=616366");
                SendClientMessage(playerid, 0x178C4DAA, "Rбdio tunado na estaзгo 103.2FM - Sua rбdio de RAP!");
                format(str, sizeof(str), "%s leva sua mгo atй o painel do carro, ligando o rбdio.", pname);
                SendLocalChat(playerid,0xD563E4AA,str,2.5);
                format(str, sizeof(str), "%s aperta o botгo '3' no painel do rбdio, tunando na rбdio de RAP.", pname);
                SendLocalChat(playerid,0xD563E4AA,str,2.5);
            }
            case 3:
            {
                ChangeRadioStation(GetPlayerVehicleID(playerid), "http://yp.shoutcast.com/sbin/tunein-station.pls?id=37586");
                SendClientMessage(playerid, 0x178C4DAA, "Rбdio tunado na estaзгo 109.4FM - ROCK EVERYDAY!");
                format(str, sizeof(str), "%s leva sua mгo atй o painel do carro, ligando o rбdio.", pname);
                SendLocalChat(playerid,0xD563E4AA,str,2.5);
                format(str, sizeof(str), "%s aperta o botгo '4' no painel do rбdio, tunando na rбdio de Rock.", pname);
                SendLocalChat(playerid,0xD563E4AA,str,2.5);
            }
            case 4:
            {
                ChangeRadioStation(GetPlayerVehicleID(playerid), "http://yp.shoutcast.com/sbin/tunein-station.pls?id=1177953");
                SendClientMessage(playerid, 0x178C4DAA, "Rбdio tunado na estaзгo 106.6FM - LET'S PARTY!");
                format(str, sizeof(str), "%s leva sua mгo atй o painel do carro, ligando o rбdio.", pname);
                SendLocalChat(playerid,0xD563E4AA,str,2.5);
                format(str, sizeof(str), "%s aperta o botгo '5' no painel do rбdio, tunando na rбdio Eletrфnica.", pname);
                SendLocalChat(playerid,0xD563E4AA,str,2.5);
            }
            case 5:
            {
                ChangeRadioStation(GetPlayerVehicleID(playerid), "http://yp.shoutcast.com/sbin/tunein-station.pls?id=1280610");
                SendClientMessage(playerid, 0x178C4DAA, "Rбdio tunado na estaзгo 101.6FM - HEAVY METAL FOREVER!");
                format(str, sizeof(str), "%s leva sua mгo atй o painel do carro, ligando o rбdio.", pname);
                SendLocalChat(playerid,0xD563E4AA,str,2.5);
                format(str, sizeof(str), "%s aperta o botгo '6' no painel do rбdio, tunando na rбdio de Heavy Metal.", pname);
                SendLocalChat(playerid,0xD563E4AA,str,2.5);
            }
        }
    }
    return 1;
}

public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
    return 1;
}

stock SendLocalChat(playerid,color,msg[],Float:radius)
{
    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid,x,y,z);
    for(new ply;ply<MAX_PLAYERS;ply++)
    {
      if(IsPlayerInRangeOfPoint(ply,radius,x,y,z))
          SendClientMessage(ply,color,msg);
    }
    return 1;
}


stock ChangeRadioStation(carid, const url[])
{
    format(Radio[carid],strlen(url), url);
    for(new i=0; i<MAX_PLAYERS; i++)
    {
        if(GetPlayerVehicleID(i) == carid)
        {
            StopAudioStreamForPlayer(i);
            PlayAudioStreamForPlayer(i, Radio[carid]);
        }
    }
}
Tenta agr
Reply
#13

pawn Код:
public OnPlayerStateChange(playerid, newstate, oldstate)
{
    if(newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER)
        PlayAudioStreamForPlayer(playerid, Radio[GetPlayerVehicleID(playerid)]);
    else if(newstate == PLAYER_STATE_ONFOOT)
    {
        StopAudioStreamForPlayer(playerid);
        SendClientMessage(playerid, 0x50AF6CAA, "Rбdio desligado automaticamente!");
    }
    return 1;
}
onfoot = a pй.
Reply
#14

Quote:
Originally Posted by Ricop522
Посмотреть сообщение
pawn Код:
public OnPlayerStateChange(playerid, newstate, oldstate)
{
    if(newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER)
        PlayAudioStreamForPlayer(playerid, Radio[GetPlayerVehicleID(playerid)]);
    else if(newstate == PLAYER_STATE_ONFOOT)
    {
        StopAudioStreamForPlayer(playerid);
        SendClientMessage(playerid, 0x50AF6CAA, "Rбdio desligado automaticamente!");
    }
    return 1;
}
onfoot = a pй.
Mas ele pode vir de outro estado pro estado de apй por exemplo, quando morre fica em PLAYER_STATE_WASTED, depois fica PLAYER_STATE_ONFOOT, ai vai aparecer a mensagem, qdo loga tb fica STATE_NONE dps spawned e onfoot c n me engano.
Reply
#15

Nгo funcionou, vocк clica e nгo sai nenhum som.
Reply
#16

Esse cуdigo parece funcionar, tente com outros URLs, e/ou usando um cуdigo mais simples.

O problema pode ser o volume da rбdio do GTA San Andreas tambйm, aumente-o.

https://sampwiki.blast.hk/wiki/PlayAudioStreamForPlayer
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)