Autokordinaten

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 Community,


    Ich habe ein Radiosysthem und jetzt möchte ich dass wenn das auto durch die gegend fährt man in einem gewissen radius die musik des Streams auch höhrt wenn man nicht im auto sitzt also wenn er bei einem vorbei fährt


    Ich weis das man dann ständig den neuen Kordinate des Autos abfragen muss und in PlayAudioStreamForPlayer reinmachen muss aber weis nicht genau wie währe nett wenn ihr mir helfen würdet


    Dane im vorraus

  • Eigentlich bleibt dir da nur nen Timer, der alle Spieler durchgeht und die Entfernung zum nächsten Auto berechnet. Ist diese Entfernung unter einem Limit wird der Strea eingespielt, welcher für das Auto gespeichert ist.


    Also einen Timer (vllt nen 1 Sekunden delay) machen.


    Problem: Bei schnellen Fahrzeugen kann das eventuell nicht funktionieren, da der Stream ein paar Sekunden zum laden benötigt.

  • hmm das is blöd aber wenn man langsam fährt müsste es ja gehen aber es muss ja auch wieder aufhöhren wenn man nichtmehr in der nähe ist mit Stop....
    Kann mir das mal einer vorscripten ich check das noch nicht so ganz :)

  • hm mal überlegen eigentlich sollte sowas funktionieren:


    new radiotimer;
    radiotimer = SetTimer("autoradio",1000,1);
    forward autoradio();
    native IsValidVehicle(vehicleid);


    new radiostream[MAX_VEHICLES][64]; // hier steht der radiostream eines Fahrzeugs drin (muss beim einschalten den Radios gesetzt und beim ausschalten gelöscht werden


    public autoradio()
    {
    for(new i = 0;i<MAX_PLAYERS;i++)
    {
    if(!IsPlayerConnected(i)) continue;
    new vehid = getPlayerNearestVehicle(i);
    if(vehid == -1) continue;
    new Float:x,Float:y,Float:z;
    GetVehiclePos(vehid,x,y,z);
    new Float:distance = getDistanceToPoint(i,x,y,z);
    if(distance < 20.0)
    {
    // hier dann den audiostream einspielen, müsste man noch ausarbeiten wie man den speichert falls kein Spieler im Auto sitzt
    PlayAudioStreamForPlayer(i,radiostream[vehid],x,y,z,20.0,1);
    }
    else
    {
    //Wenn das nächste Auto weiter als 20 Einheiten entfernt ist, wird der Stream beendet, ob einer läuft oder nicht.
    StopAudioStreamForPlayer(i);
    continue;
    }
    }
    }


    getDistanceToPoint(playerid,Float:x,Float:y,Float:z)
    {
    new Float:px,Float:py,Float:pz;
    GetPlayerPos(playerid,px,py,pz);
    return floatsqroot(floatpower(x-px,2)+floatpower(y-py,2)+floatpower(z-pz,2));
    }


    getVehicleDistanceToPoint(vehicleid,Float:x,Float:y,Float:z)
    {
    new Float:px,Float:py,Float:pz;
    GetVehiclePos(vehicleid,px,py,pz);
    return floatsqroot(floatpower(x-px,2)+floatpower(y-py,2)+floatpower(z-pz,2));
    }


    getPlayerNearestVehicle(playerid)
    {
    new vehid = -1,Float:distance = 999999.9;
    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid,x,y,z);
    for(new i = 0;i<MAX_VEHICLES;i++)
    {
    if(!IsValidVehicle(i)) continue;
    if(getVehicleDistanceToPoint(i,x,y,z) < distance)
    {
    distance = getVehicleDistanceToPoint(i,x,y,z);
    vehid = i;
    }
    }
    }


    Hab ich jetzt alles im Editor geschrieben. Ka ob das so funktioniert. Aber nen versuch ist es wert :D


    Das beendet den Stream zwar nicht, durch die entsprechende Regulierung in PlayAudioStreamForPlayer könnte das aber dennoch funktionieren.