AdminMod.de
https://www.adminmod.de/

Der Timer...Das unbekannte Wesen!
https://www.adminmod.de/viewtopic.php?t=4509
Seite 1 von 1

Autor:  Sir Drink a lot [ 11.12.2002, 00:00 ]
Betreff des Beitrags:  Der Timer...Das unbekannte Wesen!

Hallo Leute!

Und wieder machen mir diese blöden Timer Problem.

Was ich weiss:

1. Wenn man den timerindex bekommen will, macht man timerindex=set_timer("XYZ",a,b,Param); Diesen Index braucht man vielleicht zum kill_timer(timerindex), um den Timer zu löschen.
ABER: Immer danach die 'timerindex' Variable = 0 setzen. Sonst kann es passieren, dass wenn nochmal den kill_timer(timerindex) aufruft (wie auch immer), dass ein GANZ ANDERER TIMER AUS EINEM ANDEREN PLUGIN gekillt wird, der zufällig den selben index hat, welcher in timerindex gespeichert wurde. (timerindex ist global definert!)

2. Der Param den man übergibt, kommt als HLParam in der Timer-Funktion an und muss mit convert_string wieder zu einem Small-String umgewandelt werden.

Was ich bemerkt habe:

3. Benutze immer einen ordentlichen Header! Ohne diesen ist die Wahrscheinlichkeit hoch, dass der Timer vergessen wird. Also xxx() Funktionen mit einem Timeraufruf (set_timer) können in die Hose gehen.

Was mir Kopfschmerzen bereitet:

4. Ich habe versucht, das Ausführen der Befehle innerhalb einer Timerfunktion mit einer Variablen X, welche den Wert 0 oder 1 bekommen kann, einzugrenzen. Solange der Wert 0 ist, sollen die Befehle ausgeführt werden. Ist der Wert aber 1, soll nichts ausgeführt werden. Die Variable X ist global definiert und wird von einer anderen Funktion gesteuert.

Meine Noob-Theorie:
Die Timerfunktion und der Inhalt ist schon im Speicher und es wird nur gewartet, bis der Code ausgeführt wird. Parameter-Änderungen werden somit nicht mehr wahrgenommen und der Code wird nach der Wartezeit ausgeführt.

Jetzt habe ich das mal getestet. Ich habe eine Timerfunktion, die sich immer wieder selber aufruft (mit einer Wartezeit von 15 sek.)
Global habe ich eine Variable X, die z.B. auf 150 gesetzt ist. Innerhalb des Codes ziehe ich immer 15 von den 150 ab. Wenn also diese Variable X kleiner als 15 wird, soll sie den Timer nicht sich selber wieder aufrufen lassen, sondern was anderes machen.
Das funktioniert soweit.
Warum geht das und das andere nicht? Oder wo liegt der Fehler, dass das eine klappt und das andere nicht?

5. Muss man was returnen?

6. Nach einem sv_restartround X soll ein timer wieder neu gestartet werden. Der Timer wird normal registriert, die Wartezeit ist korrekt erkannt, er wird aber nie ausgeführt. Was ist das jetzt?


Wer kann mich jetzt mal, zu diesem Thema, erleuchten?

Autor:  [WING] Black Knight [ 11.12.2002, 09:15 ]
Betreff des Beitrags: 

Dafür brauche ich den Code. Aber Timer sollte man sowenig wie möglich benutzen, allein schon wegen der genannten Problem, sind aber oft unvermeidlich.

Autor:  Sir Drink a lot [ 11.12.2002, 16:31 ]
Betreff des Beitrags: 

ich mach mal ein Timer-Plugin :-)

Das soll mir dann mal eine Statistik basteln, um zu sehen, wann ein Timer ausfällt, wann er dann wirklich ausgeführt wird etc.

Mit einem Log-Vergleich lässt sich dann ermitteln, warum er nicht reagiert hat.

(Hm...vielleicht kann man das Plugin nachher noch für andere Sachen gebrauchen... )

Seite 1 von 1 Alle Zeiten sind UTC+01:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/