Bodenkoordinaten ermitteln

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,
    ich habe eine kleine Denkfrage, die ich leider nicht lösen kann.
    Ich frage die Position des Spielers ab (X, Y, Z). Danach speichere ich ebenfalls die Blickrichtung (Mit GetPlayerCameraFrontVector. X, Y, Z). Nun möchte ich mit MapAndreas die Koordinaten des Punktes finden, den ich gerade ansehe. Egal ob es der Boden ist oder ggf. eine Hauswand. Bin bereits seit 10 Minuten am grübeln, komme aber nicht dahinter wie man dies einfach lösen kann.


    Ich hoffe jemand von euch kann mir einen Anstoß geben.


    Mit freundl. Grüßen
    Padarom

    Ich bin
    .. seit etwa 2007 in der Webentwicklung tätig, seit 2013 professionell
    .. Erfahrener Entwickler in PHP, Swift, Javascript, Typescript und Ruby. Zusätzlich habe ich Erfahrung in Python, Java, C#, C++, Prolog und einigen esoterischen Programmiersprachen
    .. Luftfahrtenthusiast und Segelflieger

  • Bei einer Position die in einer bestimmten reichweite ist kann dir folgene Funktion helfen



    stock GetXYInFrontOfPlayer(playerid, &Float:x, &Float:y, Float:distance)
    {
    new Float:a;
    GetPlayerPos(playerid,x,y,a);
    GetPlayerFacingAngle(playerid,a);
    if(GetPlayerVehicleID(playerid))
    {
    GetVehicleZAngle(GetPlayerVehicleID(playerid),a);
    }
    x += (distance * floatsin(-a,degrees));
    y += (distance * floatcos(-a,degrees));
    return 1;
    }


    Diese Funktion ändert die x & y variable zu dem Punkt in distance-Reichweite
    Funktionsweise:

    new Float:x,Float:y;
    GetXYInFrontOfPlayer(playerid,x,y,10.0);
    //So jetzt hat x und y den standort von dem punkt der vor dir ca. 10m entfernt ist
    CreateObject(bla,x,y,usw...);
    //Das Object erstellt sich nun 10m vor dir


    Ansonsten Probier doch mal etwas mit OnPlayerClickMap rum

  • Die Funktion hilft mir leider nicht wirklich weiter, da ich ja die Blickrichtung der Kamera und nicht beispielsweise Rotation des Spielers/Fahrzeuges benötige.
    OnPlayerClickMap hilft mir da auch nicht viel weiter, aus dem gleichen Grund :D


    Dennoch danke für die Antwort.

    Ich bin
    .. seit etwa 2007 in der Webentwicklung tätig, seit 2013 professionell
    .. Erfahrener Entwickler in PHP, Swift, Javascript, Typescript und Ruby. Zusätzlich habe ich Erfahrung in Python, Java, C#, C++, Prolog und einigen esoterischen Programmiersprachen
    .. Luftfahrtenthusiast und Segelflieger

  • Nun möchte ich mit MapAndreas die Koordinaten

    Bin doch schon daran :D
    Die Sache ist aber, dass ich den X/Y-Wert nicht gegeben habe, sondern die jeweiligen Koordinaten mit dem Richtungsvektor berechnen muss.


    edit: Kleines Bild zur Verdeutlichung meiner aktuellen Versuche

    Ich bin
    .. seit etwa 2007 in der Webentwicklung tätig, seit 2013 professionell
    .. Erfahrener Entwickler in PHP, Swift, Javascript, Typescript und Ruby. Zusätzlich habe ich Erfahrung in Python, Java, C#, C++, Prolog und einigen esoterischen Programmiersprachen
    .. Luftfahrtenthusiast und Segelflieger

    Einmal editiert, zuletzt von Padarom ()

  • so hab was kleines probiert Heute Morgen und hab für dich den Test Command


    if(strcmp(cmdtext, "/test", true) == 0)
    {
    if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 497)
    {
    new Float:fPX, Float:fPY, Float:fPZ, Float:fVX, Float:fVY, Float:fVZ, Float:object_x, Float:object_y, Float:object_z, veh, point[128],Float: test;
    veh = GetPlayerVehicleID(playerid);
    GetVehiclePos(veh,fPX, fPY, fPZ);
    GetPlayerCameraFrontVector(playerid, fVX, fVY, fVZ);
    const Float:fScale = 100.0;
    GetPointZPos(fPX + floatmul(fVX,fScale), fPY + floatmul(fVY,fScale), test);
    object_x = fPX + floatmul(fVX,fScale);
    object_y = fPY + floatmul(fVY,fScale);
    //object_z = fPZ + floatmul(fVZ,test);
    object_z = test;
    CreateObject(345, object_x, object_y, object_z, 0.0, 0.0, 0.0);
    format(point, sizeof(point), "You have shot on the point: %f, %f, %f", object_x, object_y, object_z);
    SendClientMessage(playerid, 0xFFFFFFFF, point);
    printf("The Z-coordinate of X = %f | Y = %f is Z = %.02f", fPX, fPY, fScale);
    }
    else
    {
    SendClientMessage(playerid,0xFFFFFFFF,"you haven't got a helicopter");
    return 1;
    }
    return 1;
    }


    ich hoffe das ist das was du gesucht hast ^^ , falls du es nicht schon alleine gelöst hast.


    hier noch ein screen dazu