Problem mit einer selbstgeschriebenen "Funktion"

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
  • Hey,
    Ich habe schon wieder Probleme mit meiner Funktion.



    public GetSavePlayerMessages(playername)
    {
    new zahl;
    for(new numb = 0; numb < 150; numb++)
    {
    new string[256];
    format(string, sizeof(string), "PM/%s_%d.pm",playername,numb);
    if (dini_Exists(string))
    {
    zahl += 1;
    }
    }
    zahl += 1;
    return zahl;
    }


    Jetzt Returnt es immer 82, die Nirgends vorkommt... Es existieren noch keine PM Dateien, also Name_0.pm oder so, nur Sobald ich diese Funktion verwende um die Nummer Abzufragen, kommt immer 82 Raus...


    MfG

  • GetSavePlayerMessages(playername) wie rufst du die funktion auf ? auch mit einer schleife ?


    edit1: etwas hinzugefügt(pwn)
    edit2: verbessert
    public GetSavePlayerMessages(playername)
    {
    new zahl;
    for(new numb = 0; numb < 150; numb++)
    {
    new string[256];
    format(string, sizeof(string), "PM/%s_%d.pm",playername,numb);
    if (dini_Exists(string))
    {
    zahl += 1;
    }
    }
    zahl += 1;// und für was das hier ?
    return zahl;
    }

  • Den Command rufe ich hier auf.
    Der Command ist noch nicht fertig, also nicht wundern.
    Es Soll einfach herausfinden, welche Zahl zum Speichern als Nächstes kommt, damit das ganze nicht in einer Datei sondern in mehreren erstellt wird.


    Edit: Ich habe gerade gesehen das ich die Funktion im Script garnicht verwende :D
    Jetzt ists so:
    format(string, sizeof(string), "PM/%s_%d.pm",getname,GetSavePlayerMessages(getname));
    Allerdings kommt dann das das getname in GetSavePlayerMessages falsch Wäre. (argument type mismatch)

  • hmm sehe da irgendwie keinen fehler und vor allem check ich da nicht warum das gerade 82 returnt , ich würde es einfach mal mit einer while schleife probieren(wegen der übersicht) obwohl das eigentlich auch nicht viel helfen dürfte ...


    edit: aso edit...


    public GetSavePlayerMessages(playername[24]) oder halt deine größe

  • Endlich gehts.
    Danke für die Hilfe Zabus


    Edit: Muss doch nochmal Öffnen.
    Der Befehl sieht jetzt so aus:



    if(strcmp("/pm", cmd, true) == 0)
    {
    new getname[256];
    new Nachricht[256];
    getname = strtok(cmdtext,idx);
    if(strlen(getname) == 0) return SendClientMessage(playerid, COLOR_RED,"Verwendung: /pm [Spielername] [Text]");


    Nachricht = strrest(cmdtext,idx);
    if(!strlen(Nachricht))
    {
    SendClientMessage(playerid,COLOR_RED,"Verwendung: /pm [Spielername] [Text]");
    return 1;
    }
    new Name[30];
    new Nachricht2[256];
    GetPlayerName(playerid,Name,30);
    format(Nachricht2,sizeof(Nachricht2),"%s --> %s: %s",Name,getname,Nachricht);
    new id = GetPlayerID(getname);
    if(!IsPlayerConnected(id))
    {
    SendClientMessage(playerid,COLOR_RED,"Der Angegebene Spieler ist nicht Online.");
    SendClientMessage(playerid,COLOR_RED,"Die Nachricht wurde gespeichert.");
    new string[256];
    format(string, sizeof(string), "PM/%s_%d.pm",getname,GetSavePlayerMessages(getname));
    dini_Create(string);
    new File:Fil = fopen(string, io_write);
    dini_Set(string, "PM", Nachricht);
    fclose(Fil);
    return 1;
    }
    SendClientMessage(id,COLOR_CBLUE,Nachricht2);
    SendClientMessage(playerid,COLOR_CBLUE,Nachricht2);
    return 1;
    }
    return 0;
    }

    Die Datei wird mit der Richtigen Zahl erstellt, und auch die Nachricht wird in der Datei gespeichert. Nur wenn ich jetzt eine PM An jemanden schicke der Online ist, wird die Datei trotzdem gespeichert, wieso?
    MfG

    Einmal editiert, zuletzt von DeadLock ()