Audio Stream für alle Player abspielen

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
  • Hallo ihr lieben,


    ich wollte für meinen Server ein AudioStream scripten nur das habe ich selber nicht hinbekommen weil ich einfach nicht genau wusste wie ich das mache.
    Und zwar soll man mit z.b. /startstream [URL] wenn mann dann denn AudioStream gestartet hat soll halt ne nachricht kommen das halt ein Audio Stream gestartet wuede und das man ihn mit einem befehl denn stream muten kann z.b. /mutestream
    Und mit /stopstream soll man dann denn Stream wieder stoppen können.


    Ich hoffe ihr könnt mir helfen


    Mfg
    MaiexHD

  • new streamvar;
    if(!strcmp(cmdtext, "/befehl", true)){
    for(new x, o = GetMaxPlayers(); x != o; ++x){
    if(!IsPlayerConnected(x) || IsPlayerNPC(x))continue;
    if(!streamvar) PlayAudioStreamForPlayer(x, "link"), streamvar=1;
    else if(streamvar) StopAudioStreamForPlayer(x), streamvar=0;
    if((x==o&&o==GetMaxPlayers()))break;
    }
    }


    Das ist nur ein Beispiel code!


    mfg :thumbup:

  • if((x==o&&o==GetMaxPlayers()))break;


    Diese Zeile...ist unnötig :D


    Du hast doch schon im Schleifen Kopf definiert, dass x != o sein soll, wie soll dann in der Schleife x==o sein? :D
    Zudem ist doch o = GetMaxPlayers()...hast du doch schon oben festgelegt..wieso fragst du das nochmal ab?! :D

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Zudem ist doch o = GetMaxPlayers()...hast du doch schon oben festgelegt..wieso fragst du das nochmal ab?! :D


    Mal abgesehen davon, das die Bedingung nie wahr sein kann :whistling:

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • ^ Hauptsache gepostet und genörgelt, aber hilfreich? ... :thumbdown:



    @CIBERKILLER: Dein Code hat einen Denkfehler drin, und zwar wechselst du die Variable bei jedem Spieler, sprich wenn du den Befehl eingibst, wird es jedem zweiten Spieler den Stream abspielen, und jedem anderen nicht. Gibst du den Befehl erneut ein, genau andersherum.


    Richtig wäre es so:
    if(!strcmp(cmdtext, "/befehl", true))
    {
    static bool:streamvar;
    if(!streamvar)
    {
    for(new x, o = GetMaxPlayers(); x < o; ++x)
    {
    if(!IsPlayerConnected(x) || IsPlayerNPC(x)) continue;
    PlayAudioStreamForPlayer(x, "link");
    }
    streamvar = true;
    }
    else
    {
    for(new x, o = GetMaxPlayers(); x < o; ++x)
    {
    if(!IsPlayerConnected(x) || IsPlayerNPC(x)) continue;
    StopAudioStreamForPlayer(x);
    }
    streamvar = false;
    }
    return 1;
    }


    Die static Variable ist hier besser, da wir es sonst global deklarieren müssten, und das ist bei einer Variable die nur an einer Stelle verwendet wird nicht wirklich schön, wenn es auch so geht. static speichert den Wert der Variable in der jeweiligen Ebene.
    Außerdem, als kleiner Hinweis: In einer Schleife Abfragen wie x != o als End-Kriterium zu setzen ist nicht zu empfehlen. Zwar funktioniert es, aber stellt man sich nur vor, dass aus irgendeinem Grund der x-Wert o übergangen wird, dann läuft die Schleife ins Unendliche. Besser ist x < o. ;)

  • if(!strcmp(cmdtext, "/befehl", true, 7))
    {
    if(cmdtext[7] == ' ' || strlen(cmdtext) == 7)
    {
    if(!strlen(cmdtext[8])) return SendClientMessage(playerid, 0xFF0000FF, "Error: /befehl [Link]");
    new link[128];
    format(link, sizeof(link), cmdtext[8]);
    static bool:streamvar;
    if(!streamvar)
    {
    for(new x, o = GetMaxPlayers(); x < o; ++x)
    {
    if(!IsPlayerConnected(x) || IsPlayerNPC(x)) continue;
    PlayAudioStreamForPlayer(x, link);
    }
    streamvar = true;
    }
    else
    {
    for(new x, o = GetMaxPlayers(); x < o; ++x)
    {
    if(!IsPlayerConnected(x) || IsPlayerNPC(x)) continue;
    StopAudioStreamForPlayer(x);
    }
    streamvar = false;
    }
    return 1;
    }
    }


    Müsste so passen.

  • Was steht im Server Log, wenn du es so laufen lässt?
    if(!strcmp(cmdtext, "/befehl", true, 7))
    {
    printf("/befehl eingegeben: %s", cmdtext);
    if(cmdtext[7] == ' ' || strlen(cmdtext) == 7)
    {
    printf("1");
    if(!strlen(cmdtext[8])) return SendClientMessage(playerid, 0xFF0000FF, "Error: /befehl [Link]");
    new link[128];
    format(link, sizeof(link), cmdtext[8]);
    printf("2");
    static bool:streamvar;
    printf("streamvar = %d | link = %s", streamvar, link);
    if(!streamvar)
    {
    for(new x, o = GetMaxPlayers(); x < o; ++x)
    {
    if(!IsPlayerConnected(x) || IsPlayerNPC(x)) continue;
    PlayAudioStreamForPlayer(x, link);
    printf("Stream für %d an", x);
    }
    streamvar = true;
    }
    else
    {
    for(new x, o = GetMaxPlayers(); x < o; ++x)
    {
    if(!IsPlayerConnected(x) || IsPlayerNPC(x)) continue;
    StopAudioStreamForPlayer(x);
    printf("Stream für %d aus", x);
    }
    streamvar = false;
    }
    return 1;
    }
    }

  • Ich habe es mehrmals versucht


  • do.de - Domain-Offensive - Domains für alle und zu super Preisen