Start Info Community Spielen
 
 

Morgengrauner Dokumentation

Dateipfad: /home/mud/mudlib/doc/lfun/AddAction

AddAction()
***********


FUNKTION
========

   varargs void AddAction(mixed fun, mixed cmd, int flag, int lvl);


DEFINIERT IN
============

   /std/player/command.c


ARGUMENTE
=========

   fun
      zu rufende Methode im Spieler oder eine Closure

   cmd
      ausloesendes Kommandoverb

   flag
      unscharf ausfuehren

   lvl
      ab welchem (Magierlevel) funktioniert das Kommando


BESCHREIBUNG
============

   Vorweg: Da es keine (risikolose) Moeglichkeit gibt, ein so
   definiertes Kommando auch wieder zu entfernen, wird von der
   Verwendung eher abgeraten. Es sei denn, ihr wisst, dass euer
   Kommando nicht wieder (ohne ende/reboot) entfernt werden soll.

   Dem Spieler wird ein neues Kommando definiert. Dieses kann eine
   Methode in ihm sein, so wie bei allen Spielerkommandos ueblich,
   kann aber auch eine Closure (Lfun-Closure oder Lambda) enthalten.

   Mittels "flag" kann man die Kommandoerkennung unscharf halten, d.h.
   wie bei AddCmd(L) und add_action(E) wird ein 'cmd' bei 'flag = 1'
   auch schon von Praefix-Strings (hier ohne Leerzeichen) getriggert:
   AddAction([...], "muh", 1, 0) wird zB auch von 'muhtens' oder
   'muh4' ausgeloest.

   Mit "lvl" begrenzt man die Ausfuehrbarkeit. Spieler haben ein
   Magierlevel von 0, Seher von 1.

   Das Kommando wird in P_LOCALCMDS eingetragen. Diese Property wird
   nicht gespeichert! Effektiv kann man mit AddAction() ein kommando-
   gebendes Objekt im Spieler einsparen.


BEMERKUNGEN
===========

   * es gibt _noch_ kein RemoveAction! Per Hand in P_LOCALCMDS
     editieren kann zu ernsten Fehlern fuehren.

   * echte Spielerkommandos kann man damit _nicht_ ueberschreiben, ein
     AddAction(...,"sag",1,0); funktioniert nicht

   * ein generelles AddAction(...,"",1,0); geht nicht


BEISPIELE
=========

   ...
   this_player()->AddAction(symbol_function("zeige_mysterium",
                                            find_object(".../mystzeiger")),
                            "knorfula",0,0);
   write(break_string("Wann immer du jetzt das Kommando \"knorfula\" "
                      "eingibst, werden dir Mysterien enthuellt!",78));
   ...
   // im Objekt "knorfula" ...
   int zeige_mysterium(string str) {
     string myst;
     myst=environment(TP)->QueryMysterium(str);
     if(myst) {
       write("Du hast ein Mysterium entdeckt!\n");
       write(break_string(myst,78));
       say(break_string(
              TP->Name(WER)+" scheint nach kurzer Konzentration etwas "
              "entdeckt zu haben!",78));
     } else {
       write(break_string(
              "Leider entdeckst du trotz deiner magischen Faehigkeit "
              "kein Mysterium in deiner Umgebung.",78));
       say(break_string(
              TP->Name(WER)+" konzentriert sich sichtbar, sieht dann "
              "jedoch etwas enttaeuscht aus.",78));
     }
     return 1;
   }


SIEHE AUCH
==========


Properties: P_LOCALCMDS

Fehlermeldungen: *../efun/notify_fail*, _notify_fail()

Argumentstring: *../efun/query_verb*, _unparsed_args()

Sonstiges: replace_personal(), *../efun/enable_commands*

Alternativen: AddCmd(), *../efun/add_action*

24. Maerz 2004 Gloinson


zurück zur Übersicht

YOUTUBE | FACEBOOK | TWITTER | DISCORD | FEEDBACK | IMPRESSUM | DATENSCHUTZ 1992–2023 © MorgenGrauen.