Herrausfinden ob Spieler vor einem Fahrzeug ist

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
  • Wie kann ich herrausfinden ob bzw. vor welchem Fahrzeug ein Spieler steht ?
    Ich möchte für die Motorreperatur, dass der Spieler vor der Haube ein Befehl ausführt und dann soll
    a) das Fahrzeug erkannt werden, vor dem sich der Spieler findet und
    b) ob der Spieler überhaupt vor einem Fahrzeug steht


    Wie könnte man es am besten umsetzen?

  • GetPosVorVeh(vehicleid, 3.0, x, y, z);
    if(IsPlayerInRangeOfPoint(playerid, 1.0, x, y, z))
    {
    //Spieler steht vor dem Fahrzeug.
    }


    Mit:
    stock GetPosVorVeh(vehicleid, Float:dist, &Float:x, &Float:y, &Float:z) //©Jeffry
    {
    new Float:a;
    GetVehicleZAngle(vehicleid, a);
    GetVehiclePos(vehicleid, x, y, z);
    x += (dist * floatsin(-a, degrees));
    y += (dist * floatcos(-a, degrees));
    return true;
    }


    Das wäre nun: 3 Meter vor der Mitte der vehicleid (musst du gegebenenfalls anpassen), und da muss der Spieler in einem Meter Umkreis drin sein.


    EDIT:
    Caglar: Ich hätte alles lesen sollen. :pinch:

    3HZXdYd.png

    Einmal editiert, zuletzt von Jeffry ()


  • Das wäre nun: 3 Meter vor der Mitte der vehicleid (musst du gegebenenfalls anpassen), und da muss der Spieler in einem Meter Umkreis drin sein.

    Danke Jeffry, aber es gibt kein vordefiniertes Fahrzeug.
    Wie bekomme ich denn die Fahrzeug ID herraus, das am nahesten zum Spieler steht (im Radius von 3.0)?

  • stock GetClosestVehicle(playerid,Float:max = 20.0){
    new Float:pos[3], id = -1, Float:temp;
    for(new v = 0; v <= MAX_VEHICLES; v++)
    {
    GetVehiclePos(v,pos[0],pos[1],pos[2]);
    temp = GetPlayerDistanceFromPoint(playerid,pos[0],pos[1],pos[2]);
    if(temp < max)
    {
    max = temp;
    id = v;
    }
    }
    return id;
    }