ich hab mir das so gedacht das wenn Spieler 1 einen Report schreibt das eine 1.txt erstellt wird und das selbe bei Spieler 2 und 3 diese werden dann ingame angezeigt. Wenn Spieler 2 z.B. einen zweiten Report schreibt soll der erste von ihm „überschrieben“ werden.
Dann wäre es logischer, die Datei nach dem Spieler zu benennen, so weißt du direkt, von wem sie ist, und ob bereits ein Report von dem Spieler existiert.
Das Dumme ist nur, dass nativ in SAMP keine Schleife durch das Dateisystem möglich ist. Dafür bräuchtest du ein Plugin, wie https://github.com/JaTochNietDan/SA-MP-FileManager
Aber grundsätzlich ist eher davon abzuraten, da das sehr ineffizient ist.
ocmd:showreport(playerid,params[])
{
if(PlayerInfo[playerid][pEingeloggt] < 1 ) return SendClientMessage(playerid,Rot,"Du kannst diesen Befehl nicht nutzen, weil du nicht eingeloggt bist.");
if(PlayerInfo[playerid][pAdminlevel] < 1)return SendClientMessage(playerid,Grau,"Du bist nicht befugt, diesen Befehl zu nutzen!");
const MAX_REPORTS = 15;
new string[MAX_REPORTS * MAX_PLAYER_NAME], dir:dHandle = dir_open("./"), item[40], type, i;
while(dir_list(dHandle, item, type))
{
if(type != FM_FILE) continue;
strcat(string, item), strcat(string, "\n");
if(++i >= MAX_REPORTS) break;
}
dir_close(dHandle);
ShowPlayerDialog(playerid,DIALOG_SHOWREPORT,DIALOG_STYLE_LIST,"Reportsystem",string,"Schließen","");
return 1;
}
Alles anzeigen
Das zeigt dir z.B. die ersten 15 reports. Ein Seitensystem ist hier auch bissl kniffliger. Am Besten wäre es wohl das in eine Funktion auszulagern und n Start Parameter festzulegen.
Wenn jetzt eine Datei ausgewählt wird, dann steht im "inputtext" der Dateiname. Dann kannst du einfach mit fread diese auslesen und anzeigen 