Hey,
ich habe das Problem, dass wenn ich die Datei neu öffne und fwrite benutze, dass die alten Informationen gelöscht werden. Eine Idee was zu tun ist, dass einfach eine neue Zeile erstellt wird und wieder hinzugefügt?
Hey,
ich habe das Problem, dass wenn ich die Datei neu öffne und fwrite benutze, dass die alten Informationen gelöscht werden. Eine Idee was zu tun ist, dass einfach eine neue Zeile erstellt wird und wieder hinzugefügt?
Falscher Write-Modus.
http://wiki.sa-mp.com/wiki/Fopen
Zitatio_read Reads from the file.
io_write Write in the file, or create the file
io_readwrite Reads the file or creates it
io_append Appends to file, write-only
Ich gehe davon aus,du kannst Englisch.Wenn nicht,Google Translator kriegt das auch hin.
Falscher Write-Modus.
http://wiki.sa-mp.com/wiki/Fopen
Ich gehe davon aus,du kannst Englisch.Wenn nicht,Google Translator kriegt das auch hin.
Danke, hatte io_write statt append.
EDIT: Zu einem anderen Problem. Ich habe nun in einer .ini Datei alle Spieler untereinander geordnet. Wie kann ich die nun in ShowPlayerDialog so ausgeben, dass jede Zeile in der .ini Datei eine Listenzelle bekommt?
new
File:fFile,
sOutput[512],
sBuffer[128];
fFile = fopen("deinedatei.txt",io_read);
if(fFile) {
sOutput[0] = '\0';
while(fread(fFile,sBuffer,sizeof(sBuffer))) {
//StripNewLine(sBuffer); falls du die funktion hast
if(!sBuffer[0]) {
continue;
}
format(sOutput,sizeof(sOutput),"%s%s\n",sOutput,sBuffer);
}
fclose(fFile);
}
Ich mache es immer in etwa so.
Der String mit allen Namen ist sOutput.
Danke, habe es nun eingetragen aber kann es wegen einem Error noch nicht testen,
Die Zeile:
if(PlayerInfo[playerid][pFaction] == "Government" && PlayerInfo[playerid][pFactionrank] == President)
Der Error:
C:\Dokumente und Einstellungen\GiS\Eigene Dateien\Server\gamemodes\midwestglory.pwn(637) : error 001: expected token: "-string end-", but found "-identifier-"
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
1 Error.
Und was bezweckt die while-Schleife?
if(PlayerInfo[playerid][pFaction] == "Government" && PlayerInfo[playerid][pFactionrank] == President)
Was willst n damit bezwecken?
Strings vergleicht man mit strcmp().Sie sind gleich,wenn die Funktion 0 zurück gibt.
Die ist dafür da,damit die Datei solange gelesen wird,wie es noch Einträge / Zeilen gibt.
Von einer for() Schleife hättest ja nicht viel,wenn du nicht weisst,wieviele Einträge es gibt.
if(PlayerInfo[playerid][pFaction] == "Government" && PlayerInfo[playerid][pFactionrank] == President)
Was willst n damit bezwecken?
Strings vergleicht man mit strcmp().Sie sind gleich,wenn die Funktion 0 zurück gibt.
Die ist dafür da,damit die Datei solange gelesen wird,wie es noch Einträge / Zeilen gibt.
Von einer for() Schleife hättest ja nicht viel,wenn du nicht weisst,wieviele Einträge es gibt.
Sorry, hätte ich auch selber drauf kommen können
Bin nun am testen
EDIT: Funktioniert, wäre darauf nie nach einer Woche scripten gekommen
EDIT #2: Nun möchteich wissen welches Listitem er angeklickt hat.
Kann man das folgendermaßen machen?
format(file, sizeof(file), "%s", listitem);
EDIT #3: Ich habe nähmlich irgendwo einen Bug und ich denke es liegt daran.
listitem ist eine Zahl.
Damit erhälst du den Index des gewählten Items.Achtung, es fängt bei 0 an.Nicht 1.
Wenn ich mich richtig erinnere,kann man auch aber inputtext den Text bekommen,des angeklickten Items.
Ansonsten schau dir das Callback im SA:MP Wiki an.
http://wiki.sa-mp.com/wiki/OnDialogResponse
listitem ist eine Zahl.
Damit erhälst du den Index des gewählten Items.Achtung, es fängt bei 0 an.Nicht 1.
Wenn ich mich richtig erinnere,kann man auch aber inputtext den Text bekommen,des angeklickten Items.
Ansonsten schau dir das Callback im SA:MP Wiki an.
http://wiki.sa-mp.com/wiki/OnDialogResponse
Hmm, in dem Fall benötige ich aber nicht den Index sondern den Name. Im Callback auf wiki habe ich nichts passendes gefunden.
Hmm, in dem Fall benötige ich aber nicht den Index sondern den Name. Im Callback auf wiki habe ich nichts passendes gefunden.
Mal ausprobiert,was sich hinter inputtext versteckt via Debug-Infos?
//Edit: Habe mich doch nicht geirrt.Mit inputtext bekommst auch den Text des gewählten Items.
Mal ausprobiert,was sich hinter inputtext versteckt via Debug-Infos?
Also mit printf richtig?
Ich machs mal kurz...
EDIT: Ahm verstehe ich dich gerade falsch oder hast du vllt. was verwechselt? Ich muss das listitem rausbekommen, da du immer inputtext schreibst..
EDIT #2: Also, es gibt ganz normal die Index aus (In dem Fall 0 beim ersten listitem und 1 beim 2.).
Ich verwechsel nichts.
Mit listitem bekommst du den Index des gewählten Items in der Liste.( 0 - IRGENDWAS ).
inputtext ist eigentlich für den speziellen fall das man ein DIALOG_MENU mit einer input-Box haben will. inputtext funktioniert aber auch bei DIALOG_MENU's mit Listen und gibt dir den Text,der in diesem gewähltem Eintrag steht.
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == DEIN_DIALOG) { // Dein DIALOG mit den Usernamen,muss Liste sein
printf("listindex %d mit Text %s",listitem,inputtext);
}
return 1;
}
Der inputtext ist dann dein gewählten Username ( In diesem speziellen Beispiel ).
Ah, das habe ich so noch nie gehört, dann ist es natürlich klar. Danke für die gute Erläuterung.
EDIT: Neues Problem...sorry
Also ich habe nun die Datei, wo alle Spieler untereinander aufgelistet werden. Ebenfalls habe ich nun alle in einer Dialoglist geordnet. Nun möchte ich aber, dass wenn ich den 2ten Knopf bei dem Dialog drücke, dass dieser Name aus der Datei gelöscht wird. Ist dies möglich? Ich habe keinen passenden type für fopen gefunden.
EDIT: Hat niemand eine Idee? Ich bin schon mehrere Stunden davor
Das löschen aus einer Datei ist nicht ganz so leicht wie daraus lesen oder hinnein zu schreiben.
Leider find Ich dazu auch keine passende Funktion, obwohl ich mir eigentlich sicher bin es gab mal "fremoveline".
Vielleicht hat ja jemand diese Funktion noch :/.