Problem mit der Schleife (Nachricht x mal ausgegeben)

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
  • Guten Tag,
    ich habe einen Fehler in meiner Schleife.Nun, wenn ein Spieler sich eingeloggt hat soll an alle die ihn als Freund eingetragen haben, die Nachricht bekommen, das er sich eingeloggt hat.
    Alles gut, klappt auch, nur die Nachricht wird ihm tausend mal gesendet, bis er ein Standbild bekommt und er das Spiel via Taskmanager schließen soll.
    Das Problem was bei mir Auftritt ist dieses, dass wenn ich ein return in die Schleife packe, das es nur dem ersten Spieler gesendet wird.


    Code:
    public OnFreundeListeLoad(playerid)
    {
    new count=0,rows,fields,string[128],query[94],result[MAX_PLAYER_NAME];
    cache_get_data(rows,fields,dbhandle);
    if(rows)
    {
    while(count<rows)
    {
    if(count>=rows){ break; }
    cache_get_field_content(count,"username",result);
    new pID = GetPlayerID(result);
    if(pID != -1)
    {
    format(string,sizeof(string),"Freundeliste:{FAFAFA} %s ist nun {009F00}Online{FAFAFA}.",SpielerName(playerid));
    SendClientMessage(pID,0xFF9C00FF,string);
    }
    }
    format(query,sizeof(query),"UPDATE account_friendlist SET online='1' WHERE freundname='%s'",SpielerName(playerid));
    mysql_function_query(dbhandle,query,false,"","");
    return 1;
    }
    return 1;
    }


    public OnFreundeListeSave(playerid)
    {
    new count=0,rows,fields,string[128],query[94],result[MAX_PLAYER_NAME];
    cache_get_data(rows,fields,dbhandle);
    if(rows)
    {
    while(count<rows)
    {
    cache_get_field_content(count,"username",result);
    new pID = GetPlayerID(result);
    if(pID != -1)
    {
    format(string,sizeof(string),"Freundeliste:{FAFAFA} %s ist nun {C70A00}Offline{FAFAFA}.",SpielerName(playerid));
    SendClientMessage(pID,0xFF9C00FF,string);
    }
    }
    format(query,sizeof(query),"UPDATE account_friendlist SET online='0' WHERE freundname='%s'",SpielerName(playerid));
    mysql_function_query(dbhandle,query,false,"","");
    return 1;
    }
    return 1;
    }


    Vielen Dank im Voraus.

  • du benutzt eine variable count und diese soll abrechen wenn sie größer gleich rows ist. jedoch zählst du die Variable nirgends hoch...


    ups... ^^, blöde Sache, der Tag war lang. Trotzdem Dank ich dir, habe es korrigiert und teste es später. Schreibe dann dazu ein Edit ob es funktioniert hat.


    MfG