Musikstream in Range

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
  • moin leute
    ich steh etwas aufem schlach will ich mal sagen...
    auf meinem script habe ich eine fraktion "Rocker" so und ich möchte gerne in der nähe von der base Musik hören... also einen stream von einem webradio...


    mit befehl /musikan bekomm ich das hin allerdings will ich das die musik automatisch anfängt und wenn man von der base wegfährt soll die musik wieder aufhören...
    wie bekomm ich das hin das die musik automatisch anfängt zu spielen wenn man in "playerinrageof..." ist und wie hört sie automatisch wieder auf?
    und wo muss ich das hinschreiben? Danke schonmal :)
    //musik hells angels anmachen
    if(strcmp(cmd, "/metalmusikan", true) == 0)
    {
    if(IsPlayerInRangeOfPoint(playerid, 150.0,-2314.2781,-1595.9828,485.2007))
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    PlayAudioStreamForPlayer(playerid, "http://cent4.serverhostingcenter.com/tunein.php/dzapped/playlist.pls");
    SendClientMessage(playerid, COLOR_GRAD1, "Metalmusik läuft!");
    return 1;
    }
    return 1;
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAD1, "Du bist nicht in reichweite!");
    }
    }


    //end
    //musik hells angels anmachen
    if(strcmp(cmd, "/metalmusikaus", true) == 0)
    {


    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    StopAudioStreamForPlayer(playerid);
    return 1;
    }



    else
    {
    SendClientMessage(playerid, COLOR_GRAD1, "Du bist nicht in reichweite!");


    }}


    //end

  • Morgähn.
    Zunächst solltest du dir aufjedenfall eine, zwei, vielleicht auch drei stellen aussuchen, wo der Spieler in der Nähe sein soll, wenn die Musik starten soll. Da ich kaum glaube, das man direkt in der Mitte den Stream starten kann & dieser auch läuft, bis man am Ende der Base ist - Da man sich ja immer wieder entfernt. Am besten an den Ein & Ausgängen & in der Mitte.


    Danach ganz einfach abfragen:
    if(PlayerInRangeOfPoint(playerid,X,Y,Z))
    {
    PlayAudioStreamForPlayer(playerid, "http://cent4.serverhostingcenter.com/tunein.php/dzapped/playlist.pls");
    SendClientMessage(playerid, COLOR_GRAD1, "Metalmusik läuft!");
    return 1;
    }
    else
    {
    StopAudioStreamForPlayer(playerid);
    SendClientMessage(playerid,ROT,"Du hast die Basis verlassen & die Metalmusik hört auf zu Spielen!");
    return 1;
    }
    return 1;
    } - Ist nicht getestet - jediglich aus dem Kopf geschrieben. Dürfte so aber funktionieren.


    MfG


    //Edit: & das dann halt 2-3x


    MfG²

  • PlayAudioStreamForPlayer(i,"http://listen.trancebase.fm/tunein-dsl-pls",x,y,z,40.0,1);
    viel einfacher ;)
    das ganze updaten mit ein timer oder onplayerupdate(befor sich wieder Udo aufregt ^^)

  • vielen danke für die hilfe :)
    allerdings bekomme ich immer unterschiedliche probleme wenn ich das irgentwo einbaue...
    kann mir da mal jemand ein filterscript oder so grob basteln? ich steh grad voll aufem schlach sorry


  • Da ist aber nen fehler dirnne, es heißt:

    if(IsPlayerInRangeOfPoint(playerid,10,x,y,z))

  • und wo genau muss ich das einfügen das es automatisch läuft?

    Dazu musst du einen Timer verwenden, der alle Spieler durch geht und wenn jmd. in der nähe ist spielt es den Audiostream für denjenigen ab
    Nur so als kleiner Denkanstoß


    Du könntest das theoretisch auch unter OnPlayerUpdate packen aber das wird ca. 30mal die Sekunde aufgerufen und frisst derbe Ressourcen ;)

  • Dazu musst du einen Timer verwenden, der alle Spieler durch geht und wenn jmd. in der nähe ist spielt es den Audiostream für denjenigen ab
    Nur so als kleiner Denkanstoß


    Du könntest das theoretisch auch unter OnPlayerUpdate packen aber das wird ca. 30mal die Sekunde aufgerufen und frisst derbe Ressourcen ;)


    hey danke das funktioniert :D
    allerdings kommt dan immer nach ca 30 sekunden "du hast die base verlassen..."
    oder wenn man in der base is f#ängt die musik bei ca 30 sekunden immerwieder neu an?


    ich weiss nich wie ich das sonst machen soll....

    Einmal editiert, zuletzt von MVN050 () aus folgendem Grund: 30 sekunden statt 30 min :D

  • egal wo oder wie ich das einstelle :( das geht nich
    ich bin immer "nicht in reichtweite...


    und wo muss ich das einbauen?
    IsPlayerInArea(playerid,-2314.2781,-1595.9828,485.2007)
    geht nich genau so wie
    IsPlayerInArea(playerid,150.0,-2314.2781,-1595.9828,485.2007)

  • es geht darum das ich ein audiostream in einem gebeit haben will der automatisch (nicht per befehl) angeht und wenn man das gebeit verlässt soll er wieder automatisch ausgehen...


    und mit playerupdate fängt der stream jede 30 sekunden neu an das is aber nit sinn und zweck...

  • mach eine Variable rein, bei Playerupdate.


    Wenn diese 0 ist und der Player im Gebiet, soll er den Stream starten und die Variable auf 1 gesetzt werden.
    Wenn diese auf 1 ist und der Player nicht im Gebiet, soll der Stream gestoppt werden und die Variable auf 0 gesetzt werden.
    Kannst du auch mit einem bool machen.

    the ones who are crazy enough to think that they can change the world, are the ones who do
    - Steve Jobs

  • und jetzt für anfänger? sorry aber ich bin kein profi und keine ahnung wovon du laberst :(
    was ist ein bool?


    aber wie du das meinst is mir klar
    aber dan müsste doch auch immer ein timer abgespielt werden oder nicht? ich will ja ein festes gebiet haben :(

  • Das könnte man zum Beispiel so machen:


    //Oben im Script
    new bool:InZone[MAX_PLAYERS];


    //Bei OnPlayerConnect
    SetTimerEx("Audio_Timer", 1000, 1, "i", playerid);


    //Der Callback
    forward Audio_Timer(playerid);
    public Audio_Timer(playerid)
    {
    if(!IsPlayerInRangeOfPoint(playerid, 20.0, X, Y, Z))//20.0 = Radius von dem Gebiet | X,Y,Z durch koordinaten von dem Gebiet ersetzen
    {
    if(InZone[playerid] == false) return 1;
    InZone[playerid] = false;
    StopAudioStreamForPlayer(playerid);
    return 1;
    }
    if(InZone[playerid] == true) return 1;
    PlayAudioStreamForPlayer(playerid, "http://XXX.de/fetteBeats.mp3");
    InZone[playerid] = true;
    return 1;
    }


    mfg. :thumbup:

    ast2ufdyxkb1.png


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

  • Leute, lest doch die seite in der wiki durch.....ihr brauch IsPlayerInRangeOfPoint gar nicht...

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