Dialog wird überschrieben

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
  • Heyho,
    ich wollte heute mal das Ticketssystem von Scriptor so umschreiben, dass es in einem Dialog in mehreren Zeilen angezeigt wird.
    Das ist der Code. Also immer wenn ein neues Ticket erstellt wird, soll es nicht das alte ersetzen, sondern in die nächste Zeile gehen. Wie mache ich dies?
    Bei diesem Code wird der Dialog ja immer nur mehrmals hinterinander abgesendet, sodass das letzte angezeigt wird...
    ocmd:tickets(playerid, params[])
    {
    #pragma unused params
    if(isPlayerAnAdmin(playerid, 1))
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(SupportTicket[i] == 1)
    {
    if(TicketAngenommen[i] == 0)
    {
    new string[128], DerSpieler[MAX_PLAYER_NAME];
    GetPlayerName(i, DerSpieler, sizeof(DerSpieler));
    format(string, sizeof(string), "[%d] %s\n", i, DerSpieler);
    ShowPlayerDialog(playerid, Tickets, DIALOG_STYLE_LIST, "Tickets", string, "Okay", "");
    }
    }
    }
    }
    return 1;
    }


    edit 13.02: Komplett neu geschrieben

    ▬|██████|▬
    This is Nudelholz.
    Copy Nudelholz in your Signatur
    to make better Kuchens
    and other Teigprodukte!

    7 Mal editiert, zuletzt von ElDiabolo ()

  • for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(SupportTicket[i] == 1)
    {
    if(TicketAngenommen[i] == 0)
    {
    new string[128], DerSpieler[MAX_PLAYER_NAME];
    GetPlayerName(i, DerSpieler, sizeof(DerSpieler));
    format(string, sizeof(string), "[%d] %s\n", i, DerSpieler);
    ShowPlayerDialog(playerid, Tickets, DIALOG_STYLE_LIST, "Tickets", string, "Okay", "");
    }
    }
    }

    Du zeigst den Dialog auch in der Schleife an und formatierst immer in der Schleife.
    Den String musst du außerhalb der Schleife erstellen und in der Schleife erweitern.
    Danach,wenn die Schleife beendet ist,den Dialog anzeigen.

    new string[256];
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(SupportTicket[i] == 1)
    {
    if(TicketAngenommen[i] == 0)
    {
    new DerSpieler[MAX_PLAYER_NAME];
    GetPlayerName(i, DerSpieler, sizeof(DerSpieler));
    format(string, sizeof(string), "%s[%d] %s\n",string, i, DerSpieler); // "Alten" string erweitern!
    }
    }
    }
    ShowPlayerDialog(playerid, Tickets, DIALOG_STYLE_LIST, "Tickets", string, "Okay", "");

  • Das heisst konkret ? Du willst maximal X Zeilen anzeigen lassen ?
    Falls maximal X Zeilen:


    Erstellst eine Variable und erhöhst die immer um 1, wenn ein neuer Eintrag hinzugefügt wird zu der Liste.Ist dann ein bestimmter Wert erreicht ( z.B. 10 ) , dann lässt du die Schleife beenden mit "break;" .