Hey,
wie kann ich machen, dass die Uhr sich "flüssig" aktualisiert.
Wenn der Timer auf 1 Sekunde ist, geht es auch manchmal statt 1 Sekunde, 2 Sekunden weiter.
Wenn ich auf halbe Sekunde mache geht der manchmal auf 1 und schnell auf 2
Hey,
wie kann ich machen, dass die Uhr sich "flüssig" aktualisiert.
Wenn der Timer auf 1 Sekunde ist, geht es auch manchmal statt 1 Sekunde, 2 Sekunden weiter.
Wenn ich auf halbe Sekunde mache geht der manchmal auf 1 und schnell auf 2
Ich hab einen Timer mit 100ms und es läuft sehr flüssig - wie sehr es bei großen Skripten laggt, habe ich jedoch noch nicht getestet.
Nimm 100ms und zähl immer bist 10. Wenn er bei 10 angekommen ist, ist ja eine Sekunde vorbei.
Aber das liegt normalerweise nur an Laggs, und die sind nur mit Hardware behebbar.
Nimm 100ms und zähl immer bist 10. Wenn er bei 10 angekommen ist, ist ja eine Sekunde vorbei.
Aber das liegt normalerweise nur an Laggs, und die sind nur mit Hardware behebbar.
Also ein Lagg ist es nicht
Und das mit dem bis 10 zählen ist doch Sinnlos, da es die funktion gettime gibt
Ich würd sagen, das dein Code Fehlerhaft ist, sonst wären diese Abweichungen nicht so riesig.
Poste den mal
Also ein Lagg ist es nicht
Und das mit dem bis 10 zählen ist doch Sinnlos, da es die funktion gettime gibt
, die natürlich im Timer aufgerufen wird und daher ein wenig Zeit verbraucht. Eine Variable auszulesen und zu addieren ist da schneller. In solch empfindlichen Timern muss man immer sehr viel an Zeit sparen, sonst entstehen schnell mal Ungenauigkeiten.
@BlackAce
SetTimer("UpdateTime",1000,true);
public UpdateTime()
{
for(new i=0; i<MAX_PLAYERS; i++)
{
new Hour, Minute, Second, newtime[128];
gettime(Hour,Minute,Second);
format(newtime,sizeof(newtime),"%02d:%02d:%02d",Hour,Minute,Second);
TextDrawSetString(Uhr[i],newtime);
TextDrawShowForPlayer(i,Uhr[i]);
}
return 1;
}
@DarkRevolution
, was auch schnell zu Buggs führen kann
Und da liegt das Problem.
Du rufst den Timer pro Sekunde auf.
Angenommen dein Server startet um 10:50:51:990
Dann ruft er das Timerpublic um 10:50:52:990 zum ersten mal auf. Doch der Aufruf dauert wenige Millisekunden.
Dadurch rufst du den Timer das nächste mal erst um 10:50:53:995 auf.
Wenn er dann irgendwann auf dem Sekundensprung ist, dann springt er zwei Sekunden weiter.
Bsp:
10:50:53:998 - Uhr zeigt 10:50:53
10:50:55:005 - Uhr zeigt 10:50:55
@DarkRevolution
Das ist nicht so ganz richtig, aber der Grundgedanke stimmt.
Die Timer in SAMP haben sowieso eine relativ große verzögerung.
@Sh12
Mach bloß die schleife raus. Du brauchst insgesammt nur einen Textdraw
@BlackAce
Vorher hatte ich keine Schleife, und da gings nicht
kA Warum seit ich schleife undso habe, geht sie