Prüfen an welchem Auto Spieler steht

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
  • Hey :),
    ich hab gerade ein Problem, wie kann ich prüfen, an welchem Auto der Spieler steht (möchte /lock machen) dafür soll sich der Spieler in der nähe das fahrzeugs befinden. aber soll nicht vorher das fahrzeug auswählen müssen sondern einfach daneben stehen.


    Könnt ihr mir da weiterhelfen?


    VG
    Nick

    • Offizieller Beitrag

    Das ist eine der grundlegendsten Funktionen von welchen man massenhaft per Google finden sollte


    Hier mal eine


    stock GetClosestVehicle(playerid)
    {
    new vehicleid = INVALID_VEHICLE_ID;
    new Float:distance = 99999.0;
    new Float:X, Float:Y, Float:Z;
    GetPlayerPos(playerid, X, Y, Z);
    for(i = 0; i < MAX_VEHICLES; i++)
    {
    if(GetVehicleDistanceFromPoint(i, X, Y, Z) < distance && distance < 8.0) //you can change this value
    {
    vehicleid = i;
    distance = GetVehicleDistanceFromPoint(i, X, Y, Z);
    }
    }
    return vehicleid;
    }


    „Nicht das, was du nicht weißt, bringt dich in Schwierigkeiten, sondern dass, was du sicher zu wissen glaubst, obwohl es gar nicht wahr ist.“
    Mark Twain

    ---
    ICH BIN NUR HIER UM LEUTE ANZUSCHREIEN

  • Das ist eine der grundlegendsten Funktionen von welchen man massenhaft per Google finden sollte


    Hier mal eine


    stock GetClosestVehicle(playerid){ new vehicleid = INVALID_VEHICLE_ID; new Float:distance = 99999.0; new Float:X, Float:Y, Float:Z; GetPlayerPos(playerid, X, Y, Z); for(i = 0; i < MAX_VEHICLES; i++) { if(GetVehicleDistanceFromPoint(i, X, Y, Z) < distance && distance < 8.0) //you can change this value { vehicleid = i; distance = GetVehicleDistanceFromPoint(i, X, Y, Z); } } return vehicleid;}

    SA:MP

    • Offizieller Beitrag

    Mein Fehler, in der mobilen Ansicht sieht man das Label nicht sofort


    /edit: wenn ich das Richtig siehe gibts dafür eine eingebaute Funktion


    https://wiki.rage.mp/index.php…ehicle::getClosestVehicle


    „Nicht das, was du nicht weißt, bringt dich in Schwierigkeiten, sondern dass, was du sicher zu wissen glaubst, obwohl es gar nicht wahr ist.“
    Mark Twain

    ---
    ICH BIN NUR HIER UM LEUTE ANZUSCHREIEN

  • Es wäre nützlich, wenn du uns sagst welche Programmiersprache du nutzt.


    Dennoch kann ich dir ein paar Ansätze geben:


    1. Du loopst durch alle Fahrzeuge auf dem Server und überprüfst ob ein Fahrzeug in der Nähe des Spielers ist.


    Beispielcode C#:



    Code
    //Wir gehen alle Fahrzeuge auf dem Server durch und checken ob
    //der Spieler sich in der Nähe eines dieser Fahrzeuge befindet.
    foreach(Vehicle vehicle in NAPI.Pools.GetAllVehicles()) {
        if(client.Position.DistanceTo2D(vehicle.Position) < 5) {
           //Fahrzeug öffnen/schließen
        }
    }




    2. Du speicherst Fahrzeuge, die der Spieler öffnen/schließen kann mit Hilfe von EntityData (in C#: .setData()) an dem jeweiligen Client und fragst dann sobald der Spieler /lock eingibt ab ob der Spieler in der Nähe seines Fahrzeugs ist.


    Beispielcode in C#:


    Code
    //Überprüfen ob der Spieler ein privates Fahrzeug hat und uns
    //gegebenfalls das Fahrzeug vom Spieler holen.
    if(!client.HasData("PrivateVehicle") return;
    Vehicle vehicle = client.GetData("PrivateVehicle");
    
    
    //Überprüfen ob Spieler in der Nähe seines Fahrzeugs ist
    if(client.Position.DistanceTo2D(vehicle.Position) < 4) {
        //Fahrzeug öffnen/schließen
    }


    Falls du ein wenig Englisch kannst, kann ich dir Stuyk´s Tutorial Reihe sehr ans Herz legen.
    In seinem 2. und 3. Video erklärt er wie man beide meiner Ansätze umsetzt.