Du musst den String über die gesamte Schleife aufbauen,nicht nur einen einzigen Eintrag.
for(new i=0; i<GetMaxPlayers(); i++)
{
if(IsPlayerConnected(i))
{
if(SpielerInfo[i][Fraktion] == 4)
{
new string[128]; // String muss außerhalb der Schleife existieren und auch größer sein.128 Zeichen sind schnell voll
format(string,sizeof(string),"%s - ????",SpielerName(targetid)); // Bevor du den String ergängzt,den alten einfügen. Am Ende nicht vergessen,eine neue Zeile zu öffnen
ShowPlayerDialog(playerid,STATS,DIALOG_STYLE_MSGBOX,"Contractliste",string,"0K",""); // Das muss raus aus der Schleife. An eine Stelle,wo aber auch schon der String fertig formatiert ist.
}
}
}
}