Timer
Aus Mappedia
| Variablentyp: timer | |
|---|---|
| | |
| | |
| |
Ein Timer wird verwendet um von einer bestimmten Startzeit bis 0 runter zu zählen. Dabei kann man die Zeit auch in einem kleinen Fenster oben rechts anzeigen lassen. Außerdem ist es möglich, dass ein Timer periodisch abläuft, also nach seinem Ablauf wieder von vorne anfängt.
Inhaltsverzeichnis |
[bearbeiten] Timer im GUI
Im GUI benötigt man eine globale Variable vom Typ Timer (in den folgenden Beispielen heisst diese Variable "mein_timer").
[bearbeiten] Timer
[bearbeiten] Timer starten
Der Timer wird gestartet mit der Funktion

Countdown-Timer - Start <mein_timer> as a <Einmalig> timer that will expire in <5.00> seconds- Timer-Variable
- Einmalig / Wiederholt
- Startzeit
[bearbeiten] Timer pausieren

Countdown-Timer - Pause <mein_timer>[bearbeiten] Timer-Fenster
Um ein Timer-Fenster zu erstellen sollte man eine Variable vom Typ Timer-Fenster erstellen (in den folgenden Beispielen heisst diese Variable "mein_timer_fenster" ).
[bearbeiten] Timer-Fenster erstellen
Um ein Timer Fenster mit Titel anzuzeigen gibt es folgende Funktion:

Countdown-Timer - Create a timer window for <mein_timer> with title <Titel>- Timer-Variable
- Titel des Fensters
danach sollte das Fenster in einer Variable gespeichert werden:

Set mein_timer_fenster = (Last created timer window)
[bearbeiten] Timer-Fenster zerstören

Countdown-Timer - Destroy <mein_timer_fenster>- zu zerstörendes Fenster
[bearbeiten] Timer-Fenster verstecken / zeigen

Countdown-Timer - <Verbergen> <mein_timer_fenster>- verbergen / zeigen
- Timer-Fenster
[bearbeiten] Timer-Fenster - Titel ändern =

Countdown-Timer - Change the title of <mein_timer_fenster> to <neuer Titel>- Timer-Fenster
- neuer Titel
[bearbeiten] Timer-Fenster - Titel-Farbe ändern

Countdown-Timer - Change the color of the title for <mein_timer_fenster> to (<100.00%>, <80.00%>, <20.00%>) with <0.00%> transparency- Timer-Fenster
- Rot
- Grün
- Blau
- Transparenz
[bearbeiten] Timer-Fenster - Zeit-Farbe ändern

Countdown-Timer - Change the color of the time for <mein_timer_fenster> to (<100.00%>, <80.00%>, <20.00%>) with <0.00%> transparency- Timer-Fenster
- Rot
- Grün
- Blau
- Transparenz
[bearbeiten] Timer in Jass
In Jass hat man zusätzlich zu den GUI-Funktionen noch die Möglichkeit eine Handler-Funktion beim Starten des Timers zu übergeben, die beim Ablaufen aufgerufen wird.
Beispiel :
function timer_handler takes nothing returns nothing call BJDebugMsg("timer ist abgelaufen") call DestroyTimer(GetExpiredTimer()) endfunction function beispiel takes nothing returns nothing local timer t = CreateTimer() call TimerStart(t, 5.0, false, function timer_handler) endfunction
Wichtig ist zu erwähnen, dass hier die Funktion: "timer_handler" im Trigger-Code über der Funktion "beispiel" steht. Andernfalls kann auf die Funktion nicht zugegriffen werden.
Sehr beliebt ist auch das Anhängen von Informationen an Timer mit Hilfe des Return-Bugs und dem Spiel-Cache.
Wichtig sind auch die beiden folgenden Funktionen von Captain Griffen:
function TimerAttach takes timer t, real time, real value, code func returns nothing call TimerStart(t, value, false, null) call PauseTimer(t) call TimerStart(t, time, false, func) endfunction // ONLY call on an expired timer. function GetTimerInt takes timer t returns integer return R2I(TimerGetRemaining(t) + 0.5) endfunction
Damit kann man einem Timer einen Integer anhängen, der laut Tests auf wc3campaigns.net nicht mehr als acht-stellig sein sollte. Zusammen mit vJass kann man so einem Timer jede beliebige Information anhängen, ohne auf den GameCache zugreifen zu müssen.
[bearbeiten] Vorteile von Timern gegenüber anderen Wait Aktionen
Timer sind gegenüber von Waits viel genauer und haben auch keine Mindestlaufzeit wie die 0,25 sek beim Wait. Somit ist es zum beispiel nur über Timer möglich ein Objekt ruckelfrei zu bewegen. Bei 25 Bewegungen pro Sekunde stellt man dazu den Timer auf 0,04 Sekunden ein. Ein Wait ist mit seinen mindestens 0,25 sek viel zu langsam für so etwas.
Auch sind Timer immer absolut genau, auch wenn Spieler laggen.
Es ist auch möglich 0 Timer zu machen, diese feuern quasi sofort. Damit ist es möglich die maximale Codelänge per Trigger zu erweitern. Da WC3 einen Trigger nach einer bestimmten länge abbricht können längere Trigger so realisiert werden indem einfach ein null Timer aufgerufen wird, der wieder einen neuen Trigger startet. So lässt sich ein zu langer Trigger in hinreichend kleine Stücke zerteilen.

