[Help] For-Schleifen Dialog + OnDialogResponse

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
  • Guten Abend,
    ich habe ein kleines Call-System erstellt, nun werden die getätigten Calls auch in dem /wm Dialog angezeigt, nun scheitere ich aber daran, einen der Einträge der Calls anklicken zu können, und diesen dadurch anzunehmen. Sprich, wenn jemand "WheelmanCaller == 1" ist, soll sein Eintrag im /wm Dialog angezeigt werden. (Funktioniert!) Nun möchte ich aber, wenn ich den jeweiligen Eintrag im Dialog anklicke, diesen Eintrag annehmen, und die Position des jeweiligen Eintrages (users) angezeigt bekommen.


    Mein /wm Befehl: (Funktioniert!) if(strcmp("/wm", cmd, true) == 0)
    {
    if(PlayerInfo[playerid][pMember] == 10 || PlayerInfo[playerid][pLeader] == 10 || PlayerInfo[playerid][pAdmin] >= 2000)
    {
    new stringcallers[526], namecaller[MAX_PLAYER_NAME];
    for(new i=0; i!=MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i) && WheelmanCaller[i] == 1)
    {
    new Float:Cx, Float:Cy, Float:Cz;
    GetPlayerName(i, namecaller, sizeof namecaller);
    GetPlayerPos(i, Cx, Cy, Cz);
    format(stringcallers, sizeof stringcallers, "%s\n%s\t\t%d\t\t%0.2f", stringcallers, namecaller, PlayerInfo[i][pWantedLevel], GetPlayerDistanceFromPoint(playerid, Cx, Cy, Cz));
    }
    }
    ShowPlayerDialog(playerid, DIALOG_WHEELMAN_CALLERS, DIALOG_STYLE_LIST, "Name\t\tWanteds\t\tEntfernung", stringcallers, "Annehmen", "Schließen");
    }
    return 1;
    }


    Mein OnDialogResponse Teil: (Funktioniert nicht!)
    if(dialogid == DIALOG_WHEELMAN_CALLERS)
    {
    if(response)
    {
    for(new i=0; i!=MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i) && WheelmanCaller[i] == 1)
    {
    if(listitem == i)
    {
    new Float:Cx, Float:Cy, Float:Cz;
    GetPlayerName(playerid, playername, sizeof(playername));
    GetPlayerName(i, giveplayer, sizeof(giveplayer));
    format(string, sizeof(string), "* Wheelman %s hat den Anruf von %s angenommen.", playername, giveplayer);
    SendRadioMessage(10, COLOR_FAMILY, string);
    GetPlayerPos(i, Cx, Cy, Cz);
    SetPlayerCheckpoint(i, Cx, Cy, Cz, 5);
    CP[playerid] = 72;
    }
    }
    }
    }
    }

    Einmal editiert, zuletzt von Montero ()

  • Schau mal.
    Wenn wir jetzt 20 Spieler haben und der Spieler der als erstes die Forderungen in der if abfrage erfüllt ist ja im ersten Feld des Dias hat also listitem = 0 kann aber auch erst die ID 2 oder 5 oder ähnliches haben. Und du fragst ab ob i==listitem ist also id 2 == 0 ist. Was nicht klappt aber klappen müsste weil er der erste spieler ist der die anforderungen erfüllt.
    So ich hab dir den Fehler erklärt und jetzt musst du dir die Lösung erarbeiten.

  • Entweder man löst das ganze mit einem Array wo du die ids der spieler speicherst dazu musst du hier das array seperat hochzählen lassen
    oder du lässt den server etwas mehr schaffen in dem du die spieler nochmal hochgehst eine variabel seperat hochzählen lässt und diese mit dem listitem vergleichst.