GetVehicleModel Hilfe...

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


    Zurzeit bin ich das Tankesystem am erweitern und möchte es so
    einstellen, dass wenn ich am Tankdeckel meines Fahrzeuges bin tanken
    kann.


    Folgender Code:


    Das ist jetzt für's erste der Testcode. So mein Problem ist, wenn ich
    vor dem Tank stehe bekomme ich die Nachricht ich bin nicht am
    Tankdeckel.
    Wenn ich aber ins Fahrzeug einsteige und /tanken eingebe geht das.
    Es wird wahrscheinlich berechnet wenn man im Auto sitzt...


    Folgendes habe ich versucht:

    Code
    if(GetVehicleModelInfo(GetVehicleModel(GetPlayerVehicleID(playerid)), VEHICLE_MODEL_INFO_PETROLCAP, X, Y + 1.0, Z))


    Hierbei bekomme ich einen Error: "error 035: argument type mismatch (argument 4)".
    Habe auch schon im Wiki geschaut (wiki.sa-mp.com/wiki/GetVehicleModelInfo_DE) hat mir aber bei diesem Fehler nicht weiterhelfen können
    Kann mir einer weiterhelfen?



    Lg
    J0a9

  • Die Funktion GetVehicleModelInfo gibt die Koordinaten des Tankdeckels ausgesehen von der Mitte des Fahrzeugs zurück, das ist also nur ein Offset. Daher musst du die tatsächlichen Koordinaten noch dazu rechnen, und die Abfrage dann mit IsPlayerInRangeOfPoint machen. Ich habe zwar noch nie mit der Funktion GetVehicleModelInfo gearbeitet, aber insofern ich sie dann richtig verstehe, sollte es so aussehen:
    if(strcmp(cmd, "/tanken", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    if(gPlayerLogged[playerid] == 0) return SendClientMessage(playerid, COLOR_WHITE, "Du bist {FF8484}nicht{FFFFFF} angemeldet!");
    new Float:x, Float:y, Float:z, Floatxx, Float:yy, Float:zz, vid = GetPlayerVehicleID(playerid);
    GetVehiclePos(vid, x, y, z);
    GetVehicleModelInfo(GetVehicleModel(vid), VEHICLE_MODEL_INFO_PETROLCAP, xx, yy, zz);
    x += xx;
    y += yy;
    z += zz;
    if(IsPlayerInRangeOfPoint(playerid, 2.0, x, y, z))
    {
    SendClientMessage(playerid,COLOR_WHITE," Dein Fahrzeug wird {A4FF85}betankt{FFFFFF}, Bitte warten....");
    }
    else SendClientMessage(playerid, COLOR_WHITE, "Du bist {FF8484}nicht{FFFFFF} am Tankdeckel des Fahrzeuges!");
    }
    return 1;
    }


    Gegebenenfalls musst du den Range (2.0) noch anpassen.

  • @Jeffry:


    Vielen Dank für deine schnelle Antwort.
    Hat jetzt nicht ganz geklappt...
    Ich teste es jetzt mit den IsPlayerInRangeOfPoint.


    Aber warum hast du bei IsPlayerInRangeOfPoint die Autoposition genommen und nicht den Float xx?
    Weil dann würde man doch berechnen des Auto position und nicht tankdeckelposition oder verstehe ich da gerade irgendetwas falsch?