blob: 33ceee1c3b8e40f4946fb45b3703116aaef54087 [file] [log] [blame]
ReceiveSay()
============
FUNKTION
--------
public int* ReceiveSay(string msg, string prefix = 0,
struct msg_s sense_blocked =
({(<msg_s>
msg: "@WER1 bewegt die Lippen, Du hoerst jedoch nichts.",
type: MT_LOOK)}))
DEFINIERT IN
------------
/std/living/comm.c
/std/room/comm.c
/sys/living/comm.h
ARGUMENTE
---------
string msg
Die auszugebende Meldung. Sie 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.
string prefix
prefix wird als prefix an :doc:`ReceiveMsg` weitergegeben. Eine
Ersetzung mittels :doc:`replace_personal` findet nicht statt.
Wird kein Wert uebergeben, wird
previous_object().Name(WER, 1) + " sagt: " verwendet. Hierzu muss Name()
am aufrufenden Objekt definiert sein und etwas sinnvolles zurueckgeben.
struct msg_s sense_blocked
Ersatzmeldungen fuer taube Spieler. enthaelt Structs vom Typ msg_s.
Dieser ist in /std/living/comm_structs.c definiert und enthaelt die
Eintraege string msg, int type, string prefix.
Das Array wird von vorne nach hinten
abgearbeitet, bis eine Nachricht zugestellt werden konnte oder das Ende
erreicht ist. Auch hier findet fuer msg eine Ersetzung mittels
:doc:`../sefun/replace_personal` statt, fuer prefix nicht.
BESCHREIBUNG
------------
Sendet msg per :doc:`ReceiveMsg` mit den ueblichen Argumenten von
"sage" an den Empfaenger. D.h.: MT_LISTEN, MA_SAY, Name(WER, 1) + " sagt: ". Hierzu
muss das aufrufende Objekt :doc:`name` definiert haben und dort
etwas sinnvolles zurueckgeben. Falls ein anderer prefix gewaehlt wurde,
wird dieser statt Name(WER, 1) " sagt: " verwendet.
RUECKGABEWERT
-------------
Ein Integer-Array mit folgenden Werten:
0
Der Rueckgabewert von :doc:`../lfun/ReceiveMsg`.
1
Information, welche Meldung zugestellt wurde. -1 steht fuer msg, ein wert
>= 0 fuer die jeweilige Position in sense_blocked.
Raeume definieren standardmaessig ebenfalls ein ReceiveSay(), welches in
jedem Objekt im Raum ReceiveSay() mit den uebergebenen Argumenten aufruft.
In diesem Fall ist der Rueckgabe der kleinste von allen gerufenen
ReceiveSay() zurueckgelieferte Wert.
BEISPIEL
--------
.. code-block:: pike
SetProp(P_NAME, "Questgeber");
SetProp(P_GENDER, MALE);
this_player().ReceiveSay(
"Das hast Du prima gemacht, @WER2!",
Name(WER, 1) + " lobt Dich: ",
({
(<message_>
msg: "@WER1 nickt Dir laechelnd zu.",
type: MT_LOOK),
(<msg_s>
msg: "Jemand klopft Dir lobend auf die Schulter.",
type: MT_FEEL)}));
SIEHE AUCH
----------
:doc:`ReceiveMsg`, :doc:`../sefun/replace_personal`, :doc:`name`
Letzte Aenderung: 07.10.2021, Bugfix