ServerNews Timer einstellen

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
  • Hallo Comunity,
    Das hier sind die Zeilen vom Server News:


    public serverNews(){ for(new i=0; i<MAX_PLAYERS; i++) { if(gPlayerLogged[i]==1) { if(PlayerInfo[i][pAdmin]==0) { if(newswechsel == 1) { SendClientMessageToAll(COLOR_LIGHTBLUE,"|~~~~~~~~~~~~~~~~| Das Script |~~~~~~~~~~~~~~~~|"); SendClientMessageToAll(COLOR_GRAD1," Dieses Script stammt von D4ywalk3r."); SendClientMessageToAll(COLOR_GRAD1, " Copyright by:: www.massive-dyamic-roleplay.de"); SendClientMessageToAll(COLOR_LIGHTBLUE, "|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|"); newswechsel = 2; return 1; } else if(newswechsel == 2) { SendClientMessageToAll(COLOR_LIGHTBLUE,"|~~~~~~~~~~~~~| Massive-Dynamic Roleplay|~~~~~~~~~~~~|"); SendClientMessageToAll(COLOR_GRAD1, "Da der Server im Aufbau ist, kann es vorkommen"); SendClientMessageToAll(COLOR_GRAD1, "das ihr einige Bugs vorfindet, meldet diese"); SendClientMessageToAll(COLOR_GRAD1, "bitte sofort im /report oder im Forum!"); SendClientMessageToAll(COLOR_GRAD1, "Forum: www.massive-dynamic-roleplay.de"); SendClientMessageToAll(COLOR_LIGHTBLUE, "|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|"); newswechsel = 1; return 1; } } } } return 1;}]



    Aber sie kommen zu oft, wo ist der Timer? Und wie mache ich das es nur alle 7 Minuten kommt?

  • Irgentwo im Script musst du folgenden Timer haben


    SetTimer("serverNews",delay,1);


    Dieser wiederholt sich natürlich immer, da man sonst die Nachricht nur einmal pro Serverstart erhalten würde. Der Delay gibt dabei die Zeitintervalle zwischen den einzelnen Nachrichten an (Nachricht 1 und Nachricht 2).


    So wie ich das verstanden habe, bekommt man aber jede Nachricht mehr als nur einmal.
    Ich hab den Code jetzt mal untereinander geschrieben:



    public serverNews()
    {
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(gPlayerLogged[i]==1)
    {
    if(PlayerInfo[i][pAdmin]==0)
    {
    if(newswechsel == 1)
    {
    SendClientMessageToAll(COLOR_LIGHTBLUE,"|~~~~~~~~~~~~~~~~| Das Script |~~~~~~~~~~~~~~~~|");
    SendClientMessageToAll(COLOR_GRAD1," Dieses Script stammt von D4ywalk3r.");
    SendClientMessageToAll(COLOR_GRAD1, " Copyright by:: www.massive-dyamic-roleplay.de");
    SendClientMessageToAll(COLOR_LIGHTBLUE, "|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|");
    newswechsel = 2;
    return 1;
    }
    else if(newswechsel == 2)
    {
    SendClientMessageToAll(COLOR_LIGHTBLUE,"|~~~~~~~~~~~~~| Massive-Dynamic Roleplay|~~~~~~~~~~~~|");
    SendClientMessageToAll(COLOR_GRAD1, "Da der Server im Aufbau ist, kann es vorkommen");
    SendClientMessageToAll(COLOR_GRAD1, "das ihr einige Bugs vorfindet, meldet diese");
    SendClientMessageToAll(COLOR_GRAD1, "bitte sofort im /report oder im Forum!");
    SendClientMessageToAll(COLOR_GRAD1, "Forum: www.massive-dynamic-roleplay.de");
    SendClientMessageToAll(COLOR_LIGHTBLUE, "|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|");
    newswechsel = 1;
    return 1;
    }
    }
    }
    }
    return 1;
    }


    Der Fehler liegt darin, dass du per Schleife alle Spieler durchgehst die maximal auf dem Server sein können. Also 200 Durchläufe.
    Bei jedem durchlauf sendest du die Nachricht aber nicht an jeden Spieler einzeln sondern direkt an alle Spieler. Bedeutet wenn die Schleife Spieler 0 (Zähler = 0) durchläuft, bekommt jeder Spieler die Nachricht (SendClientMessageToAll (To All bedeutet alle)). Bei Spieler zwei dann wieder das gleiche usw.
    Also entweder die Schleife rausmachen oder jedem Spieler die Nachricht einzeln per SendClientMessage(playerid,color,string[]); senden.