Abfragen wer sich in der Umgebung befindet?

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
  • Abend


    Und zwar habe ich vor ein Menü das sich per Knopfdruck öffnet zu erstellen, wo angezeigt wird welcher Spieler sich in der Umgebung aus der Fraktion befindet.
    Ich habe da auch schon was gebastelt, aber ich glaub das ist so wie ich es gemacht hab falsch. Und außerdem habe ich da noch eine Frage.
    Ich möchte das man sich selber dabei nicht in der Liste sieht.


    hier mal mein Code:



    if(newkeys == KEY_CTRL_BACK) // Fraktionsmember info
    {
    for(new i=0; i<GetMaxPlayers(); i++)
    {
    new Float:POS[3];
    GetPlayerPos(i, POS[0], POS[1], POS[2]);
    if(IsPlayerInRangeOfPoint(i,4.0, POS[0], POS[1], POS[2]))
    {
    if(PlayerDaten[playerid][pFraktion] == PlayerDaten[i][pFraktion])
    {
    new string[64];
    format(string ,sizeof(string), "%s\n", SpielerName(i));
    ShowPlayerDialog(playerid, DIALOG_FMEMBERINFOS, DIALOG_STYLE_LIST, "Member Inforamtionen:", string, "Weiter", "Schließen");
    }
    }
    }
    }

  • if(newkeys == KEY_CTRL_BACK) // Fraktionsmember info
    {
    new Float:POS[3];
    new string[256];
    for(new i=0; i<GetMaxPlayers(); i++)
    {
    GetPlayerPos(i, POS[0], POS[1], POS[2]);
    if(i != playerid && IsPlayerInRangeOfPoint(playerid, 4.0, POS[0], POS[1], POS[2]))
    {
    if(PlayerDaten[playerid][pFraktion] == PlayerDaten[i][pFraktion])
    {
    format(string ,sizeof(string), "%s%s\n", string, SpielerName(i));
    }
    }
    }
    ShowPlayerDialog(playerid, DIALOG_FMEMBERINFOS, DIALOG_STYLE_LIST, "Member Inforamtionen:", string, "Weiter", "Schließen");
    }


    So sollte es passen. ;)



    EDIT:
    Post Unten:
    @CIBERKILLER: Der Code ist trotzdem noch falsch, da du immer mit "i" die Position von "i" abfragst, und bei jedem Spieler den Dialog neu öffnest, sprich du wirst immer genau den Name sehen, von dem Spieler, der die höchste ID hat. ;)


    EDIT2:
    @CIBERKILLER:
    Stimmt, das hatte ich übersehen, dass du die Funktion geändert hast.
    Das mit dem Dialog ist aber trotzdem noch falsch. Der Dialog muss nach der Schleife angezeigt werden, und der string muss den alten Wert übernehmen.

    3HZXdYd.png

    Einmal editiert, zuletzt von Jeffry ()

  • So wie du es hast, ist es auch Falsch!


    if(newkeys == KEY_CTRL_BACK) // Fraktionsmember info
    {
    new Float:POS[3];
    GetPlayerPos(playerid, POS[0], POS[1], POS[2]);
    for(new i=0; i<GetMaxPlayers(); i++)
    {
    if(i!=playerid)
    {
    if(GetPlayerDistanceFromPoint(i,POS[0], POS[1], POS[2])<=4.0)
    {
    if(PlayerDaten[playerid][pFraktion] == PlayerDaten[i][pFraktion])
    {
    new string[64];
    format(string ,sizeof(string), "%s\n", SpielerName(i));
    ShowPlayerDialog(playerid, DIALOG_FMEMBERINFOS, DIALOG_STYLE_LIST, "Member Inforamtionen:", string, "Weiter", "Schließen");
    }
    }
    }
    }
    }
    Jeffry: Ich kann in diesem Quellcode kein Fehler finden :)
    if(GetPlayerDistanceFromPoint(i,POS[0], POS[1], POS[2])<=4.0)
    mfg :thumbup:

    Einmal editiert, zuletzt von Kasakow ()