Funktion
Eine Funktion ist ein Programmteil in einem JASS-Skript, der beliebig oft mit unterschiedlichen Parametern aufgerufen werden kann und somit eine dynamisch anpassbare Struktur darstellt, die das Spielverhalten von Warcraft 3 beeinflussen kann.
Eine Funktion kann nach ihrer Deklaration im Skript an beliebiger Stelle aufgerufen werden. Eine Ausnahme bilden hierbei parameterlose Funktionen, die mit den nativen JASS-Funktionen TriggerEvaluate, TriggerExecute oder ExecuteFunc aufgerufen werden können, ohne vorher deklariert worden zu sein.
Funktionen können einen Rückgabetyp besitzen, was ihnen das Zurückgeben eines Wertes des Typs erlaubt. Der Rückgabewert kann beim Funktionsaufruf entgegengenommen werden, was eine weitere Verarbeitung erlaubt. So kann man z. B. eine Funktion für eine einfache Addition schreiben, welche das Ergebnis zurückgibt. Dieses kann beim Funktionsaufruf durch eine Variablenzuweisung in einer Variablen abgelegt und an anderer Stelle verwendet werden.
Funktionen müssen weder Parameter, noch einen Rückgabetyp besitzen. Beides ist optional.
Innerhalb ener Funktion können lokale Variable definiert werden. Diese müssen am Anfang des Funktionskörpers stehen.
Inhaltsverzeichnis |
Arten
Man unterscheidet zwei Arten von Funktionen:
Während native Funktionen nicht in JASS definiert sind, sondern in den Bibliotheken von Warcraft selbst, und ihr Inhalt bzw. Funktionskörper somit für den Benutzer nicht sichtbar ist, sind selbst definierte Funktionen, Funktionen, die mittels JASS geschrieben und somit auch sichtbar definiert werden müssen.
Standardfunktionen
JASS bietet bereits eine Reihe von nativen und selbst definierten Funktionen, die in den Dateien common.j, Blizzard.j und common.ai deklariert und ggf. definiert werden. Sie können normalerweise problemlos während des Spiels aufgerufen werden.
Wärend sich in der Datei common.j ausschließlich Deklarationen nativer Funktionen befinden, befinden sich in der Datei Blizzard.j ausschließlich Deklarationen von Blizzard in JASS definierten Funktionen und in der Datei common.ai Funktionen beider Arten.
Auslöser
Jedes Ereignis, jede Bedingung und jede Aktion im Auslöser-Editor entspricht einer bestimmten JASS-Funktion.
Auch Ereignisreaktionen und Wertumwandlungen entsprechen JASS-Funktionen.
Die zugehörigen Funktionen sind in der Datei "UI/TriggerData.txt" des jeweiligen MPQ-Archivs definiert. Die angezeigten Texte und Parameter in den Dateien "UI/TriggerStrings.txt" und "UI/WorldEditorStrings.txt".
Deklaration
Allgemein:
function funktionsname takes parameter/nothing returns variablentyp des rückgabewertes/nothing // erst Deklaration von lokalen Variablen // dann der Code return rückgabewert endfunction
Beispiel:
function mitte takes real a, real b returns real local real mitte = ( a + b ) / 2 return mitte endfunction
oder auch kürzer:
function mitte takes real a, real b returns real return (a + b) / 2 endfunction
Aufruf
Allgemein:
call funktionsname( parameter1, parameter2, ... )
oder innerhalb eines Ausdrucks:
funktionsname( parameter1, parameter2, ... )
Beispiel:
call SetHeroXP( my_hero, 1337, true ) // Übergabe des Inhalts der Variablen my_hero set m = mitte( 10.0, 20.0 ) // Weiterverarbeitung des Rückgabewerts
