Zu viele SendClientMessage

In 10 Minuten startet der nächtliche Backupvorgang! Es kann währenddessen (ca. 10 Minuten) zu Einschränkungen bei der Nutzung des Forums kommen
Weitere Infos findet ihr im Thema Backup des Forums
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
  • ocmd:givecoinsall(playerid,params[])
    {
    for(new i = 0; i <MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i)) continue;
    {
    new coins,str[64];
    if(!isPlayerAnAdmin(playerid,5)) return SendClientMessage(playerid,GRAU,"Du bist kein Admin!");
    if(sscanf(params,"d",coins)) return SendClientMessage(playerid,GRAU,"Benutze: /givecoinsall [Anzahl]");
    format(str,sizeof(str),"AdmCmd: Admin %s hat allen Spielern %d Coins gutgeschrieben!",SpielerName(playerid),coins);
    SendClientMessageToAll(ROT,str);
    SpielerInfo[pCoins] = coins;
    SavePlayer(i);
    }
    }
    return 1;
    }


    Wenn ich diesen Befehle eingebe kommt 10x die SendToAll Message? wieso und keiner bekommt coins.


  • Man formatiert Strings nicht in einer Schleife...
    //Edit:


    SpielerInfo [i] [pCoins] = coins; (i) davor


    Engelsflügel am Astonkühler, als Schutz vor dem Teufel!

  • Versuch es mal in der If Abfrage IsPlayerConnected(i)) ein return 1; reinmachen. Ich denke das es weiterhilft, wenn nicht, dann weiß ich es auch nicht ;)




    Ich hoffe Ich konnte Dir helfen.


    Mit Freundlichen Grüßen,


    TheBester


  • ocmd:givecoinsall(playerid,params[])
    {
    for(new i = 0; i <MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i)) continue;
    {
    new coins,str[64];
    if(!isPlayerAnAdmin(playerid,5)) return SendClientMessage(playerid,GRAU,"Du bist kein Admin!");
    if(sscanf(params,"d",coins)) return SendClientMessage(playerid,GRAU,"Benutze: /givecoinsall [Anzahl]");
    SpielerInfo[pCoins] = coins;
    SavePlayer(i);
    }
    } format(str,sizeof(str),"AdmCmd: Admin %s hat allen Spielern %d Coins gutgeschrieben!",SpielerName(playerid),coins);
    SendClientMessageToAll(ROT,str);
    return 1;
    }


    So sollte es eig. gehen

  • Versuch es mal in der If Abfrage IsPlayerConnected(i)) ein return 1; reinmachen. Ich denke das es weiterhilft, wenn nicht, dann weiß ich es auch nicht ;)


    Völliger Quatsch, continue; ist schon richtig.
    ocmd:givecoinsall(playerid,params[])
    {
    new coins,str[64];
    if(!isPlayerAnAdmin(playerid,5)) return SendClientMessage(playerid,GRAU,"Du bist kein Admin!");
    if(sscanf(params,"d",coins)) return SendClientMessage(playerid,GRAU,"Benutze: /givecoinsall [Anzahl]");
    for(new i = 0; i <MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i)) continue;
    SpielerInfo[i][pCoins] += coins;
    SavePlayer(i);
    }
    format(str,sizeof(str),"AdmCmd: Admin %s hat allen Spielern %d Coins gutgeschrieben!",SpielerName(playerid),coins);
    SendClientMessageToAll(ROT,str);
    return 1;
    }

  • Die Abfragen müssen aber nicht mit jedem Schleifendurchlauf wieder durchgeführt werden...
    ocmd:givecoinsall(playerid,params[])
    {
    if(!isPlayerAnAdmin(playerid,5)) return SendClientMessage(playerid,GRAU,"Du bist kein Admin!");
    new coins;
    if(sscanf(params,"d",coins)) return SendClientMessage(playerid,GRAU,"Benutze: /givecoinsall [Anzahl]");
    for(new i = 0; i <MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i)) continue;
    SpielerInfo[pCoins] += coins;
    SavePlayer(i);
    }
    new str[64];
    format(str,sizeof(str),"AdmCmd: Admin %s hat allen Spielern %d Coins gutgeschrieben!",SpielerName(playerid),coins);
    SendClientMessageToAll(ROT,str);
    return 1;
    }
    /Edit da war wohl Jemand schneller
    Allerdings würde ich bei "SpielerInfo[pCoins] = coins;" ein += setzen, da ja vllt manche Spieler mehr Coins habe & danach dementsprechend weniger hätten

  • Würde es eher so machen...


    Müsste auch funktionieren...




    ocmd:givecoinsall(playerid,params[])
    {
    if(!isPlayerAnAdmin(playerid,5)) return SendClientMessage(playerid,GRAU,"Du bist kein Admin!");
    new coins,str[64];
    if(sscanf(params,"d",coins)) return SendClientMessage(playerid,GRAU,"Benutze: /givecoinsall [Anzahl]");
    for(new i = 0; i <MAX_PLAYERS; i++){
    if(IsPlayerConnected(i)){
    SpielerInfo[i][pCoins] = coins;
    SavePlayer(i);
    }
    }
    format(str,64,"AdmCmd: Admin %s hat allen Spielern %d Coins gutgeschrieben!",SpielerName(playerid),coins);
    SendClientMessageToAll(ROT,str);
    return 1;
    }