ReceiveMultisense()
===================

FUNKTION
--------

  public int* ReceiveMultisense(struct msg_s* msgs,
    string action = 0, int commontypes = 0)
  
DEFINIERT IN
------------

  /std/living/comm.c
  /std/room/comm.c
  /sys/living/comm.h

ARGUMENTE
---------

  struct msg_s* msgs
    Die Auszugebenden Nachrichten mit Zusatzinformationen. (S.u.)
  string action
    action wird als action an ReceiveMsg() weitergegeben.
  int commontypes
    Muss einen oder mehrere Veroderte messagetypes aus
    :doc:`ReceiveMsg` enthalten. Diese werden bei jedem Aufruf von
    :doc:`ReceiveMsg` mit dem jeweiligen Messagetyp aus msgs verodert.

BESCHREIBUNG
------------

  sendet die in msgs angegebenen Nachrichten an den Empfaenger, bis eine
  zugestellt werden konnte oder das ende von msgs erreicht wurde.

  msgs ist aufgebaut wie folt:
  Der struct msg_s ist in /std/living/comm_structs.c definiert. Er hat
  die Eintraege string msg, int type, string prefix.
  Das Array wird abgearbeitet, bis eine Nachricht zugestellt werden konnte
  oder das Ende erreicht ist. msg wird vor der Ausgabe an
  :doc:`../sefun/replace_personal` uebergeben, als erstes Objekt wird das aufrufende
  Objekt uebergeben, als zweites this_player(), sofern vorhanden. msg wird
  automatisch auf 78 Zeichen umgebrochen, vorhandene Zeilenumbrueche werden
  dabei beibehalten. Fuer prefix findet keine Ersetzung statt.

RUECKGABEWERT
-------------

  Ein Integer-Array mit folgenden Werten:

  0
    Der Rueckgabewert von :doc:`../lfun/ReceiveMsg`.
  1
    Information, welche Meldung zugestellt wurde. -1 steht fuer keine
    Meldung, ein wert >= 0 fuer die jeweilige Position in msgs.

  Raeume definieren standardmaessig ebenfalls ein ReceiveMultisense(), welches in
  jedem Objekt im Raum ReceiveMultisense() mit den uebergebenen Argumenten aufruft.
  In diesem Fall ist der Rueckgabe der kleinste von allen gerufenen
  ReceiveMultisense() zurueckgelieferte Wert.

BEISPIEL
--------

  .. code-block:: pike

  inherit "/std/living/comm_structs";
  this_player().ReceiveMultisense(
    ({
      (<msg_s>
        msg: "Ein Drache landet neben Dir.",
        type: MT_LOOK),
      (<msg_s>
        message: "Du hoerst ein rumpeln, als waere gerade etwas grosses "
          "neben Dir eingeschlagen.",
        type: MT_LISTEN),
      (<msg_s>
        msg: "Du spuerst einen heftigen Luftzug.",
        type: MT_FEEL)})
    MA_MOVE_IN);
      
SIEHE AUCH
----------

  :doc:`ReceiveMsg`, :doc:`../sefun/replace_personal`

Letzte Aenderung: 07.10.2021, Bugfix
