Dokumentation zu: AddReaction(L)

HR Image


FUNKTION:
        void AddReaction(string verb, int modus, mixed action)

DEFINIERT IN:
        /sys/npc/react.h

ARGUMENTE:
        verb:   Das Verb (oder Verbenliste), auf das reagiert werden soll
        modus:  In welchem Zusammenhang des Verb gebraucht worden sein soll
        action: Eine Liste mit Kommandos als Reaktion

FUNKTION:
        Die Kommandoliste actions wird abgearbeitet, wenn ein Spieler das
        Verb verb im Kontext modus benutzt hat.
        verb ist dabei die Normalform des Verbes, also wenn moeglich die
        kuerzeste, mit 'e' endende Form. In Zweifelsfaellen kann man in
        /global/handler/soul nachsehen, oder eine Liste via
        "/std/player/soulhelp"->QueryActions() anfordern.
        Sollen mehrere Verben mit einer identischen Reaktion versehen werden,
        so kann statt eines einzelnen Verbs auch eine Verbenliste der
        Art "verb1|verb2|verb3" angegeben werden.

        Der modus gibt an, wie der Spieler das Verb benutzt haben muss, damit
        die Reaktion erfolgt. Moegliche Werte sind z.B.
            R_ME   : Der Spieler interagiert mit uns
            R_OTHER: Der Spieler interagiert mit jemand anderem
            R_NOONE: Der Spieler interagiert mit niemand im besonderen
            R_ALL  : Alle Moeglichkeiten (R_ME|R_OTHER|R_NOONE)

        Die Kommandoliste kann im einfachsten Fall ein String sein, der direkt
        an command_me() weitergegeben wird; oder eine Closure, die dann
        ausgefuehrt wird (siehe Hinweise zu Closures unten):
        AddReaction("weine", R_ME|R_OTHER, "sag Och....");

        Im String werden folgende Schluesselworte ersetzt:
            &Name  : Der (grossgeschriebene) Name des Spielers
            &name  : Die uid des Spielers
            &Opfer : Der (grossgeschriebene) Name des 'Opfers'
            &opfer : Die uid des 'Opfers'
            &verb  : Das verwendete Verb in der Normalform
            &adverb: Eventuelle verwendete Adverbien

        Es kann auch ein Array uebergeben werden, welches noch die Moeglich-
        keiten zur Simulation einer Reaktionszeit, zufaelliges Auswaehlen
        einer Reaktion und bedingtes Abbrechen der Kommandokette bietet:
        ({ 3, "sag Hallo", "30%schmunzle", "70%lach", "seufze" })
        Es soll drei Sekunden gewartet werden, dann sagt der NPC "Hallo".
        Mit 30% Wahrscheinlichkeit schmunzelt er nun, ansonsten lacht er.
        Danach seufzt er sofort.
        Die Prozentfelder duerfen immer nur 100% insgesamt haben, und sie
        duerfen nicht durch andere Befehle unterbrochen sein - sie muessen
        also hintereinander stehen. Wird keine Zahl angegeben so verwendet
        der Befehl die restliche Wahrscheinlichkeit.
        Soll auf ein Prozentfeld ein anderes folgen, so muss das Ende des
        ersten durch ein '<' ("30%<lach") markiert, oder eine Zeitver-
        zoegerung von Null Sekunden eingebaut werden.
        Wird das Zeichen '|' ("30%|lach") verwendet, so wird die Kommando-
        kette nur weiter abgearbeitet, wenn auch 'lach' ausgefuehrt wird.

        Anstelle von Closures kann auch ein String der Form "#fun MyFun"
        verwendet werden, der die Funktion 'MyFun' aufruft. So kann man
        auch Funktionen Zufallsgesteuert aufrufen ("30%#fun DoIt").
        Die Closures und Funktionen werden immer mit folgenden Argumenten
        aufgerufen: Playerobject, Victimobject, Verb, Adverb.

	Liefert die Closure oder Funktion einen String zurueck, so wird
	dieser als Kommando ausgefuehrt, als sei er anstelle der Closure
	angegeben gewesen (insbesondere werden o.g. Ersetzungen durchge-
	fuehrt). Liefert die Closure oder Funktion NULL zurueck, so wird
	die Befehlskette abgebrochen.

KURZUEBERBLICK:
        Elemente im Kommandoarray:
        0...        Warte diese Zeitspanne in Sekunden
        #fun myfun  Rufe Funktion 'myfun' auf
        30%cmd      Werte mit 30% Wahrscheinlichkeit 'cmd' aus.
        30%<cmd     dito, aber Ende der Gruppe von alternativen Befehlen
        30%|cmd     dito, aber wenn cmd nicht ausgewertet wird Abbruch
        %cmd        Werte 'cmd' mit der restlichen Wahrscheinlichkeit aus

BEMERKUNG:
        Es laeuft immer nur eine Befehlskette zur Zeit. Wird ein neues
        Kommando von einem Spieler gegeben, auf welches wir reagieren,
        so wird die Ausfuehrung der alten Befehlskette zugunsten der neuen
        beendet. Vergleiche hierzu auch P_REACT_FLAGS.

BEISPIELE:
        AddReaction("weine", R_NOONE, ({ 1, "sag Ooch &Name", 2,
          "40%umarme &name", "30%umarme &name /troestend", "%knuddel &name",
          2, "50%seufz /schwer", "50%<seufz", "90%denk ...&Name..." }));

        Weint Fiona, so warte eine Sekunde, sag Ooch Fiona, warte zwei
        Sekunden, umarme fiona mit 40% Wahrscheinlichkeit, umarme fiona
        troestend mit 30% Wahrscheinlichkeit oder knuddel fiona mit der
        restlichen Wahrscheinlichkeit bis 100 (30? ;). Dann warte zwei
        Sekunden. Seufze 50:50 entweder normal oder schwer. Dann denke
        ...Fiona... mit 90% Wahrscheinlickeit (mit 10% tue nichts).

SIEHE AUCH:
        RemoveReaction(L), command_me(L), command(E), getuid(E)
        P_REACTIONS, P_REACT_FLAGS, PlayerTickles(L), PlayerTousles(L),
        SetStandardReactions(L)


Start » Magierhandbuch » Docu » Lfun » AddReaction Letzte Generierung: 25.04.2021, 01:58
Email an: mud@wl.mud.de
Valid HTML 4.01!