Mit Timestamp updaten?

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 Leute,


    ich habe gerade einen /ad-Befehl geschrieben, wo die AD jeden Spieler via Textdraw angezeigt wird.


    Die AD soll 60 Sekunden im Textdraw zu sehen sein, das ganze habe ich mit Timestamp gemacht.
    Wenn diese 60 Sekunden um sind, soll die AD automatisch durch einen anderen, festgeleten Text ersetzt werden, bis wieder jemand eine AD schreibt.


    Ich habe vor einigen Monaten mal einen Text gefunden und habe ihn grob durchgelesen, darin stand (wenn ich es richtig verstanden habe), dass Publics ständig und automatich abgerufen werden.
    Daher wollte ich eigentlich anstatt einen Timer ein Public benutzen um die AD mit den festgelegten Text abzulösen.


    So wollte ich das eigentlich machen:

    forward UpdateNow();
    public UpdateNow()
    {
    new i=0, string[128];
    if(Now()>=ADCheck) //ADCheck ist Global und beinhaltet das Datum/die Zeit, wann die letzte AD erstellt wurde (In diesem Fall 60 Sekunden bevor die AD abgelöst werden soll!).
    {
    for(;i < GetMaxPlayers(); i++)
    {
    format(string,sizeof(string),"AD:"); TextDrawSetString(ADTEST1,string); TextDrawShowForPlayer(i,ADTEST1); //Soll mit String sein, wird hinterher noch angepasst!
    format(string,sizeof(string),"Hier könnte ihre AD stehen!"); convert_encoding(string); TextDrawSetString(ADTEST2,string); TextDrawShowForPlayer(i,ADTEST2); //Soll mit String sein, wird hinterher noch angepasst!
    format(string,sizeof(string),"Ersteller: San Andreas News I ID: - I Nummer: -"); TextDrawSetString(ADTEST3,string); TextDrawShowForPlayer(i,ADTEST3); //Soll mit String sein, wird hinterher noch angepasst!
    }
    }
    return 1;
    }


    Ingame funktioniert es nicht, die AD bleibt und wird nicht durch den festgelegten Text abgelöst.


    Nun frage ich mich, habe ich mich da in etwas verrannt, bzw etwas durch das überfliegen des Textes falsch aufgeschnappt,
    oder nur etwas falsch gemacht.



    Es wäre nett, wenn mir jemand weiter helfen könnte!




    Gruß
    AlphaGen!

    DIVIDE ET IMPERA

  • Da hast du etwas falsch verstanden.
    Nicht jedes public wird ständig aufgerufen, sondern nur die SA:MP-Callbacks (OnPlayerStateChange, OnPlayerUpdate,...). Und selbst die werden nicht dauernd aufgerufen, sondern eben nur dann, wenn eine Aktion passiert ist.
    Als Beispiel: OnPlayerDeath wird nur dann aufgerufen, wenn ein Spieler stirbt.


    Vergiss das mit den Publics wieder und mach einen ganz normalen Timer, das funktioniert problemlos ;)

    Professioneller Webentwickler.