Timer – Mappedia

Timer

Aus Mappedia
Wechseln zu: Navigation, Suche


Variablentyp: timer
extends agent
Funktionen mit timer als Rückgabewert
Funktionen mit timer als Parameter

Ein Timer (deutsch "Zeitgeber") 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, welches Timer-Dialog genannt wird. Außerdem ist es möglich, dass ein Timer periodisch abläuft, also nach seinem Ablauf wieder von vorne anfängt.

Inhaltsverzeichnis

Timer im GUI

Im GUI benötigt man eine globale Variable vom Typ Timer (in den folgenden Beispielen heisst diese Variable "mein_timer").

Timer

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

Parameter:

Timer pausieren

Countdown-Timer - Pause <mein_timer>

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" ).

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>

Parameter:

danach sollte das Fenster in einer Variable gespeichert werden:

Set mein_timer_fenster = (Last created timer window)


Timer-Fenster zerstören

Countdown-Timer - Destroy <mein_timer_fenster>

Parameter:

Timer-Fenster verstecken / zeigen

Countdown-Timer - <Verbergen> <mein_timer_fenster>

Parameter:

Timer-Fenster - Titel ändern =

Countdown-Timer - Change the title of <mein_timer_fenster> to <neuer Titel>

Parameter:


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

Parameter:

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

Parameter:


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.

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.

Vorteile gegenüber Wait-Aktionen

Timer sind gegenüber Wait-Aktionen viel genauer und haben keine Mindestlaufzeit von 0,25 Sekunden. Somit ist es zum Beispiel nur über einen Timer möglich, ein Objekt ruckelfrei schnell zu bewegen. Bei 25 Bewegungen pro Sekunde stellt man dazu den Intervall des Timers auf 0,04 Sekunden ein. Eine Wait-Aktion ist mit ihren mindestens 0,25 Sekunden viel zu langsam für solche Bewegungen.

Timer werden zudem im Gegensatz zu zur Wait-Aktion synchronisiert, was bedeutet, dass bei anderen Spielern in Mehrspielerspielen keine Verzögerungen auftreten sollten bzw. diese abgeglichen werden.

Eine Alternative zum immer wieder erneuten Aufruf einer neuen Funktion per Timer, stellt die Funktion PolledWait dar.

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.

Meine Werkzeuge
Namensräume
Varianten
Aktionen
Navigation
Warcraft-Mapping
Werkzeuge