Zunächst musst du sicherstellen, dass du irgendwo zu Beginn deiner Main Funktion einen entsprechenden EventHandler aktivierst.
Diesem wird ausserdem die Funktion übergeben, die im Falle eines Key Events aufgerufen wird.
Letzteres setzt natürlich voraus, dass eine solche Funktion auch im aktuellen Kontext definiert ist.
Zusammengefasst sieht das dann so aus:
Code:
RegisterEvent(EVENT_KEYDOWN, MW_MyKeyEventHandler);
RegisterEvent() sorgt dafür, dass im Hintergrund alle Tastatureingaben erfasst werden.
EVENT_KEYDOWN ist eine Konstante, die festlegt, auf welche Art von Event reagiert werden soll; hier: Tastatureingaben.
Wird nun eine Taste gedrückt, wird die laufende Funktion unterbrochen und es wird die Funktion
MW_MyKeyEventHandler() aufgerufen, wobei der dabei übergebene Parameter dem Code der gedrückten Taste entspricht.
Hier kann nun auf die Eingabe reagiert werden, wobei man nach Möglichkeit darauf achten sollte,nicht zuviel auszuführen, da die eigentlich laufende Funktion ja nur unterbrochen wurde und nach dem Durchlaufen von
MW_MyKeyEventHandler() weiter ausgeführt wird. Passt man hier nicht auf, kann man sich leicht ungewollte Rekursionen einfangen.
Auch musst du aufpassen, wenn du vorhast, Aktionen die der Char ausführt beispielsweise über Tastatureingaben auszuführen, die im game thread, also der NT bzw. MWBotGame.ntj registriert werden.
Das laufende Botscript läuft schließlich Parallel mit und somit kann es zu Interferenzen kommen. Einfach ausgedrückt könnte es beispielsweise passieren, dass dein Tastaturbefehl dem Bot sagt, er solle sich nach rechts bewegen, während das aktuell laufenden Botscript sagt, er soll sich nach links bewegen.
Wie man leicht sieht, kann das nur in die Hose gehen.
Die Codes der gedrückten Taste kannst du leicht feststellen, indem du dir einfach den Parameter, den dein EventHandler bei Tastendruck erhält, ausgeben lässt.
Auf obiges Beispiel übertragen könnte das in etwa so aussehen:
Code:
function MW_MyKeyEventHandler(keycode)
{
Print("Key Pressed: " + keycode);
// TODO: Do something useful here
}
Kannst ja mal eine Runde damit experimentieren.
Lg
Muddy