Befehl
Ein Befehl gibt in Warcraft III an, was eine Einheit gerade tut. Über Auslöser kann man von jeder Einheit herausfinden, welchen Befehl sie hat oder Einheiten neue Befehle erteilen. Das Zaubern von Fähigkeiten, das Ausbilden von Einheiten oder das schlichte Bewegen, Angreifen, Patroullieren etc. sind Beispiele für Befehle.
Befehle haben keinen eigenen Datentyp. Sie haben 2 Darstellungsformen, die mit Funktionen ineinander umgewandelt werden können, nämlich als Integer (OrderId), und als String (OrderString).
Inhaltsverzeichnis |
Befehlsarten
Warcraft III unterscheidet zwischen einem generic order ("allgemeiner Befehl") und einem unit order ("Einheitenbefehl"). Einheitenbefehle stehen für alle Tätigkeiten, bei denen eine Einheit gebaut wird. Solche Befehle haben sowohl Gebäude, die eine Einheit ausbilden, als auch Einheiten, die ein Gebäude bauen. Die OrderId ist in beiden Fällen die Id der gebauten Einheit (siehe Einheiten-Typ).
Beispiele
Befehle finden nur bei Auslösern eine Verwendung.
Befehl erteilen
Die Aktionen dafür findet man in der Aktionen-Kategorie Einheiten. Es wird dort zwischen mehreren Arten unterschieden:
- Issue Order Targeting A Unit: Befehle, die eine Einheit als Ziel haben (Beispiel: Angreifen)
- Issue Order Targeting A Point: Befehle, die einen Punkt als Ziel haben (Beispiel: Bewegen)
- Issue Order Targeting A Destructible: Befehle, die ein Zerstörbares Objekt als Ziel haben (Beispiel: Angreifen)
- Issue Order Targeting An Item: Befehle, die einen Gegenstand als Ziel haben (Beispiel: Aufnehmen)
- Issue Order With No Target: Befehle, die kein Ziel erfordern (Beispiel: Stehenbleiben, Gottesschild etc.)
- Issue Order Train/Upgrade Order: Ausbau- oder Ausbildungsbefehl (Beispiel: Zu Schloss ausbauen, Soldaten ausbilden)
- Issue Order Research Order: Forschungsbefehl (Beispiel: Rucksack erforschen)
- Issue Order Build Order: Baubefehl (Beispiel: Kaserne errichten)
- Issue Order Dropt Item Order: Item-Ablegen-Befehl
- Issue Move Item In Inventory Order: Item in Inventar bewegen - Befehl (Beispiel: Ring des Schutzes von Slot 1 in Slot 5 verschieben)
- Issue Give Item Order: Item-geben-Befehl (Beispiel: Maske des Todes an anderen Helden abgeben)
Es gibt noch eine Reihe weiterer Befehle, die vor allem den Umgang mit Gegenständen betreffen. Sie tauchen in der Aktionen-Kategorie Held auf:
- Learn Skill Befehl einen bestimmten Zauberspruch im Skillmenue auszubauen.
- Drop Item From Hero Befehl einen bestimmten Gegenstand fallen zu lassen.
- Drop Item From Hero Inventory Slot Befehl einen Gegenstand in einem bestimmten Inventarslot fallen zu lassen.
- Use Item On A Unit Befehl einen Gegenstand auf eine Einheit anzuwenden.
- Use Item On A Point Befehl einen Gegenstand auf einen Punkt anzuwenden.
- Use Item On A Destructible Befehl einen Gegenstand auf ein Zerstörbares Objekt anzuwenden.
- Use Item Befehl einen Gegenstand zu benutzen.
Im folgenden Beispiel lassen wir einen Akolyten drei Gebäude errichten und dann in die Mitte der Karte laufen:
Akolyt Action
Ereignisse

Zeit - Elapsed game time is 2.00 seconds
Bedingungen
Aktionen

Einheit - Order Akolyt 0000 <gen> to build a Ziggurat at (Center of Gebiet 000 <gen>)

Wait until ((Current order of Akolyt 0000 <gen>) Gleich (Order(<Leerer String>))), checking every 1.00 seconds

Einheit - Order Akolyt 0000 <gen> to build a Gruft at (Center of Gebiet 001 <gen>)

Wait until ((Current order of Akolyt 0000 <gen>) Gleich (Order(<Leerer String>))), checking every 1.00 seconds

Einheit - Order Akolyt 0000 <gen> to build a Altar der Dunkelheit at (Center of Gebiet 002 <gen>)

Wait until ((Current order of Akolyt 0000 <gen>) Gleich (Order(<Leerer String>))), checking every 1.00 seconds

Einheit - Order Akolyt 0000 <gen> to Bewegen nach (Center of (Playable map area))Auch bei Befehlen per Trigger müssen alle Voraussetzungen gegeben sein, in unserem Beispiel muss deshalb genug Gold, Holz und eine Verseuchung vorhanden sein.
Hat der Akolyt seine Arbeit verrichtet, so hat er keine Order mehr, was das Wait abfragt.
Befehl abfragen
Dies ist eben schon im Beispiel zu Befehl erteilen geschehen.
Es gibt zwei verschiedene Arten, um Befehle abzufragen. Entweder man fragt den derzeitigen Befehl einer bestimmten Einheit ab oder als Ereignis-Reaktion die "Issued Order", der Befehl, der beim Ereignis "A Unit Erhält einen auf ... zielenden Befehl" gegeben wird. Dazu dient die Order-Comparison.
Strings
In der Order-Comparison muss man oft die Namen der Befehle angeben, folgende gibt es:
- Bewegen:move
- Angreifen:attack
- Rechtsklick:smart
- Holz-Abbauen:harvest
