Macht mein aktueller Code Sinn? War auf jeden Fall eine Idee von mir, das so zu gestalten.
Du kannst es auch ganz ohne Variable machen.
if(!strcmp(call, "sticket", true))
{
for(new i, j = GetMaxPlayers(); i<j; i++)
{
if(LoggedIn(i) == false) continue;
if(pInfo[i][pTicketCreate] == 0) continue;
format(string, sizeof string, "%s%s - Datum: %s\n", string, getName(i), pInfo[i][pTicketDate]); //Angepasst, in deinem Code würde es nur das letzte Ticket anzeigen
}
ShowPlayerDialog(playerid, D_STICKET, DIALOG_STYLE_LIST, "Offene Tickets.", string, "Wählen", "Schließen");
Und bei OnDialogResponse:
new count;
for(new i, j = GetMaxPlayers(); i<j; i++)
{
if(LoggedIn(i) == false) continue;
if(pInfo[i][pTicketCreate] == 0) continue;
if(count == listitem)
{
//Ticket von playerid "i" wird bearbeitet.
return 1;
}
count++;
}
Zusätzlich könntest du, so habe ich es damals auf meinem Server gemacht, über die Funktion ShowPlayerDialog (Hook oder eigene Funktion, die dann ShowPlayerDialog aufruft, ist egal), die Dialog-ID in eine Spieler-Variable speichern, und wenn dann jemand ein Ticket aufmacht, automatisch prüfen, ob ein Spieler den Ticket-Dialog offen hat, wenn ja, ihm den Dialog neu anzeigen, damit die Einträge aktualisiert werden, sobald ein neues Ticket kommt, bzw. sobald jemand anderes ein Ticket angenommen hat.