ReceiveNotify()
===============

FUNKTION
--------

  public int ReceiveNotify(string msg, string action = 0)

DEFINIERT IN
------------

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

ARGUMENTE
---------

  string msg
    Die auszugebende Meldung. Sie wird automatisch auf 78 Zeichen umgebrochen,
    vorhandene Zeilenumbrueche werden dabei beibehalten.
  string action
    action wird als action an :doc:`ReceiveMsg` weitergegeben.

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

  Sendet msg via ReceiveMsg() mit MT_NOTIFICATION | MSG_BS_LEAVE_LFS und den
  uebergebenen bzw. voreingestellten Werten fuer prefix und action an den
  Empfaenger.

BEMERKUNGEN
-----------

  Bitte beachten: MT_NOTIFICATION ist fuer Kommandobestaetigungen,
  Statusmeldungen o.ae., d.h. out-of-character Meldungen vorgesehen. Es soll
  nicht als Sammeltyp fuer nicht-ignorierbare Meldungen verwendet werden,
  dafuer gibt es MSG_DONT_IGNORE in Kombination mit den anderen Typen.

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

  Der Rueckgabewert von :doc:`../lfun/ReceiveMsg`.

BEISPIEL
--------

  .. code-block:: pike

  this_player().ReceiveNotify("Dazu reicht dein Level nicht aus.");

SIEHE AUCH
----------

  :doc:`ReceiveMsg`

Letzte Aenderung: 07.10.2021, Bugfix
