Start Info Community Spielen
 
 

Morgengrauner Dokumentation

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

command_me()
************


FUNKTION
========

   int command_me(string str)


ARGUMENTE
=========

   string str - auszufuehrendes Kommando


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

   /std/npc.c, /std/player/command.c


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

   Fuehrt 'str' wie ein Kommando aus, welches direkt vom Living
   abgegeben wurde.

   Der Rueckgabewert ist >=1 fuer Erfolg und 0 fuer Misserfolg.
   Rueckgabewert ist im Erfolgsfall die Hoehe der EvalCost in Ticks.

   command_me() leitet den Befehl an command()(E) weiter und erlaubt
   dadurch auch den Aufruf von sonst durch "static" vor externem Aufruf
   geschuetzten Kommando-Funktionen.

   Kommandos mit oeffentlichen Kommandofunktionen (also damit alle mit
   AddCmd definierten Kommandos) koennen auch durch command()(E)
   von aussen ausgeloest werden.


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

   - beruecksichtigt Aliase, d.h. wenn man Aliase eines Spielers
     ignorieren will, muss man ein \\ (fuer ein \ im Eingabestring)
     vor den Befehl stellen
   - fuer objektinterne Kommandos funktioniert also auch command()(E)


BEISPIEL
========

   (Code des Testraum ist in /doc/beispiele/testobjekte/command_me_testraum)
   // #1: Testraum, zwinge Spieler bei "schleiche heran" zum Furzen
   //     command_me() ist hier noetig, da das Furzen eine geschuetzte
   //     Kommandofunktion hat
   inherit "/std/room";

   void create() {
     ::create();
     AddCmd("schleiche&heran|herum", "action_schleichen");
   }



   void init() {
     ::init();
     add_action("action_kriechen", "kriech", 1);
   }

   static int action_schleichen(string str) {
     string tmp = this_player()->QueryProp(P_RACE);
     // ...
     if(tmp[<1]=='e') tmp=tmp[0..<2];
     write(break_string("Du versuchst leise zu schleichen, dabei passiert "
       "dir aber ein allzu "+
       (tmp=="Mensch"?"menschliches":lower_case(tmp)+"isches")+
       " Missgeschick. Verflucht!", 78));
     this_player()->command_me("\\furze");
     return 1;
   }



   static int action_kriechen(string str) {
     write(break_string("Deine Knie tun zu sehr weh dafuer.", 78));
     tell_room(this_object(), break_string(this_player()->Name(WER)+
       " knackt mit den Knien.", 78));
     return 1;
   }



   // #2 (in obigem Raum): zwinge Spieler in Raum zu obigem Kommando
   //    Beide Kommandos gelingen, da Kommando mit AddCmd definiert.
   find_player("naddl")->command_me("schleiche herum")
   command("schleiche herum", find_player("naddl"));

   // #3 (in obigem Raum): zwinge Spieler in Raum zu obigem Kommando
   find_player("naddl")->command_me("krieche")
   //    Folgendes Kommando schlaegt fehl, da Kommandofunktion static ist.
   command("krieche", find_player("naddl"));


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


enable_commands(E), command(E)

06 Sep 2012 Gloinson


zurück zur Übersicht

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