Stream | Infos

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Guten Tag,


    Mein Name lautet CIBERKILLER.
    Und zwar wollte ich euch mal fragen ob es eine möglichkeit gibt Streamadressen herauszufinden.
    Natürlich verbunden mit PlayAudioStreamForPlayer.
    Also eine genaue abfrage ob der Spieler einen bestimmten stream hat!


    mfg :thumbup:

  • Du kannst den string des Streams ja in einer Spielervariable speichern, wenn du es startest (die Funktion könnte man auch hooken) und dann über die Variable auch wieder abfragen, ob der Stream gerade in dieser Variable steht.


    Wenn der Stream beendet wird, schreibst du einfach LEER in die Variable.


    Kannst es ja erst mal selbst ausprobieren ob du es so hinbekommst, und wenn nicht nochmal Bescheid geben bzw den Code posten den du bis dahin hast. Aber ich bin zuversichtlich, dass du es hinbekommst, ist nicht viel Aufwand.

  • Du kannst den string des Streams ja in einer Spielervariable speichern, wenn du es startest (die Funktion könnte man auch hooken) und dann über die Variable auch wieder abfragen, ob der Stream gerade in dieser Variable steht.


    Wenn der Stream beendet wird, schreibst du einfach LEER in die Variable.


    Kannst es ja erst mal selbst ausprobieren ob du es so hinbekommst, und wenn nicht nochmal Bescheid geben bzw den Code posten den du bis dahin hast. Aber ich bin zuversichtlich, dass du es hinbekommst, ist nicht viel Aufwand.


    Ich habe es mal so geschrieben!


    SetPVarString(playerid, "stream_played", usage);
    for(new i;i<sizeof(Stream);i++){
    if(!strcmp(Stream[i][url], "leer", true))continue;
    format(Stream[i][url], 128, "%s", usage),
    Stream[i][sPos][0] = pPos[0],Stream[i][sPos][1] = pPos[1],Stream[i][sPos][2] = pPos[2];
    }

    public OnPlayerUpdate(playerid)
    {
    GetPVarString(playerid, "stream_played", string, sizeof(string));
    for(new i;i<sizeof(Stream);i++)
    {
    if(!strcmp(Stream[i][url], "leer", true))continue;
    if(!strcmp(string, Stream[i][url], true))continue;
    if(Stream[i][sPos][0] == 0.0)continue;
    if(GetPlayerDistanceFromPoint(playerid, Stream[i][sPos][0], Stream[i][sPos][1], Stream[i][sPos][2]) >= 45.1)continue;
    PlayAudioStreamForPlayer(playerid, Stream[i][url], Stream[i][sPos][0], Stream[i][sPos][1], Stream[i][sPos][2], 45.0, 1);
    }
    return 1;
    }


    Habs noch nicht getestet, sollte aber soweit passen!


    mfg :thumbup:

  • Das ganze klappt aktuell nicht so wie es "klappen" soll.


    Quellcode:
    ocmd:changemusic(playerid, params[])
    {
    if(!GetPVarInt(playerid, "Eingeloggt"))return SendClientMessage(playerid, Orange, "Fehler: {FFFFFF}Du bist nicht eingeloggt!");
    if(!GetPVarInt(playerid, "gblaster"))return SendClientMessage(playerid, Orange, "Fehler: {FFFFFF}Du hast keinen Ghettoblaster aufgestellt!");
    GetObjectPos(GetPVarInt(playerid, "gobject"), pPos[0], pPos[1], pPos[2]);
    if(GetPlayerDistanceFromPoint(playerid, pPos[0], pPos[1], pPos[2]) >= 3.6)return SendClientMessage(playerid, Orange, "Fehler: {FFFFFF}Du bist nicht in der nähe deines Ghettoblasters");
    if(sscanf(params, "s", usage))return SendClientMessage(playerid, Orange, "Fehler: {FFFFFF}/changemusic [Link]");
    for(new i;i<sizeof(Stream);i++)
    {
    if(!strlen(Stream[i][url]))continue;
    printf("url: %s | pos: %f,%f,%f | id: %d | usage: %s",Stream[i][url],Stream[i][sPos][0],Stream[i][sPos][1],Stream[i][sPos][2], i, usage);
    format(Stream[i][url], 128, usage);
    Stream[i][sPos][0] = pPos[0],Stream[i][sPos][1] = pPos[1],Stream[i][sPos][2] = pPos[2];
    if(i==sizeof(Stream))break;
    }
    /*for(new i;i<GetMaxPlayers();i++)
    {
    if(!IsPlayerConnected(i))continue;
    if(IsPlayerNPC(i))continue;
    if(!GetPVarInt(playerid, "Eingeloggt"))continue;
    if(GetPlayerDistanceFromPoint(i, pPos[0], pPos[1], pPos[2]) >= 45.1)continue;
    SetPVarString(i, "stream_played", usage);
    }*/
    return 1;
    }


    public OnPlayerUpdate(playerid)
    {
    static str[128];
    GetPVarString(playerid, "stream_played", str, sizeof(str));
    for(new i;i<sizeof(Stream);i++)
    {
    if(strcmp(Stream[i][url], "leer", true)&& strlen(str) != 0 && strcmp(str, Stream[i][url], true) && Stream[i][sPos][0] == 0.0)
    {
    if(GetPlayerDistanceFromPoint(playerid, Stream[i][sPos][0], Stream[i][sPos][1], Stream[i][sPos][2]) <= 45.0)
    {
    PlayAudioStreamForPlayer(playerid, Stream[i][url], Stream[i][sPos][0], Stream[i][sPos][1], Stream[i][sPos][2], 45.0, 1);
    return SetPVarString(playerid, "stream_played", Stream[i][url]);
    }
    }
    }
    return 1;
    }


    mfg :thumbup: