| Version 2.0 des Sequencers von Don Rumata 2.7.93 |
| |
| Manchmal soll ein NPC (Monster) eine Serie von Taetigkeiten |
| hintereinander weg ausgefuerht werden. Dieses kann man |
| mit diesem Mudul relativ einfach realisieren. |
| |
| Folgende Ereignisse koennen eine Sequenz ausloesen: |
| |
| TellEvent: Es wird etwas in dem Raum, in dem der npc sich |
| befindet, gesagt. |
| GiveEvent: Es wird dem npc etwas gegeben. |
| |
| Weitere Ereignisse koennen durch den Befehl Load() selber |
| programmiert werden. |
| |
| Wie sieht ein Programm aus? |
| |
| Ein Programm ist eine Liste von Befehlen. |
| Jeder Befehl ist eine Liste, bestehend aus einem Kommando |
| und einer Zahl. |
| Das Kommendo wird aehnlich der Befehle, die ein Spieler ein- |
| gibt ausgefuehrt. |
| Vorsicht: NPCs koennen nur einen Teil der Befehle, die ein |
| Spieler kann, dafuer aber immer 'echo' und 'emote'. |
| Die Zahl gibt die Anzahl der Sekunden an, in der der naechste |
| Befehl ausgefuehrt wird. |
| |
| Folgende Funktionen sind im Modul implementiert: |
| |
| Vorbereiten von Funktionen, die eine Sequenz ausloesen: |
| |
| RegisterTell( funktion, programm ) |
| Wenn dem npc etwas gesagt wird, so wird die gesagte Meldung |
| an die Funktion uebergeben. Gibt die Funktionen nicht 0 |
| zurueck, wird das Programm gestartet. |
| |
| RegisterGive( funktion, programm ) |
| Wird dem npc etwas gegeben, so wird das Objekt an die |
| Funktion uebergeben. Gibt die Funktion nicht 0 zurueck, so |
| wird das Programm gestartet. |
| |
| Load( programm ) |
| Starte das angegebene Programm. |
| |
| Anederungen an bestehenden Std-Funktionen: |
| |
| give_notify() gibt eine 1 zurueck, wenn das Objekt akzeptiert |
| wurde. (Es muss - falls gewuenscht - dann von Hand zuruech- |
| gegeben werden. (give_obj(ob,this_player())) in dieser |
| Funktion. |
| |
| Mittels add_action() kann man im create() des NPCs eigene |
| Verben fuer den NPC einfuehren. |
| |
| Es kann immer nur eine Funktion (egal ob via Tell, Give oder Load) angemeldet |
| sein. Es kann immer nur ein Programm gleichzeitig laufen. |
| |
| Ideen und Bugreports an Rumata |