Nächsten Ort bestimmen

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
  • Du brauchst ne Funktion, die dir die Entfernung zwischen Spieler und einem Punkt wiedergeben kann. Lässt sich mathematisch ganz einfach berechnen.


    So dann lässte durch alle ne Schleife laufen und speicherst jede Entfernung in eine Zelle eines Array. So zum Schluss dann noch schaun, ob eine Position kleiner ist als die vorherige und dann die Stelle des Arrays, welches auch gleichzeitig die Stelle im enum ist in einer seperaten Variable speichern: Sieht dann etwa so aus.



    new hit;
    new distance[maxplaces];


    for(new i = 0;i<maxplaces;i++)
    {
    distance[i] = /* Hier dann deine Funktion, die dir die Entfernung gibt*/;


    if(distance[i] < distance[hit])
    {
    hit = i;
    }
    }


  • Ich muss anscheinend doch nochmal stören, sorry for Doublepost.
    So sieht der Code derzeit aus:

    new Float:plrPosX, Float:plrPosY, Float:plrPosZ, Float:dis, string[256];
    new nearest_dist = -1;
    GetPlayerPos(playerid, plrPosX, plrPosY, plrPosZ);


    for(new i = 0; i < sizeof(CustomPos); i++) {
    dis = floatsqroot(floatpower(floatabs(floatsub(CustomPos[i][psPosX],plrPosX)),2)+floatpower(floatabs(floatsub(CustomPos[i][psPosY],plrPosY)),2)+floatpower(floatabs(floatsub(CustomPos[i][psPosZ],plrPosZ)),2));
    format(string, sizeof(string), "%f", dis);
    if (strval(string) < nearest_dist || nearest_dist == -1) {
    nearest_dist = strval(string);
    CustomInfo[playerid][NearPsName] = CustomPos[i][psComment];
    CustomInfo[playerid][NearPsPosX] = CustomPos[i][psPosX];
    CustomInfo[playerid][NearPsPosY] = CustomPos[i][psPosY];
    CustomInfo[playerid][NearPsPosZ] = CustomPos[i][psPosZ];
    }
    }

    Leider schmeißt er mir so eine Koordinate raus, die irgendwo auf einem Farmgelände in LS ist.
    Weiß jemand Abhilfe?