blob: 41eee811c7e2edd8d7a9a267fea657b75115291c [file] [log] [blame]
ReceiveSay()
************
FUNKTION
========
public void ReceiveSay(string msg, string prefix =
previous_object().Name(WER, 1) + " sagt: ",
struct msg_s sense_blocked =
({(<wave_s>
msg: "@WER1 bewegt die Lippen, Du hoerst jedoch nichts.",
type: MT_LOOK)}))
DEFINIERT IN
============
/std/living/comm.c /std/room/comm.c
ARGUMENTE
=========
string msg
Die auszugebende Meldung.
string prefix
prefix wird als prefix an ReceiveMsg() weitergegeben. Wird kein
Wert uebergeben, wird "previous_object().Name(WER, 1) + " sagt:
"" verwendet.
struct wave_s *alt
Ersatzmeldungen, falls das Lebewesen die Meldung aufgrund eines
blockierten Sinns nicht wahrnehmen kann. Details siehe unten.
BESCHREIBUNG
============
Sendet msg per 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 *Name* definiert haben
und dort etwas sinnvolles zurueckgeben. Falls ein anderer Praefix
gewaehlt wurde, wird dieser statt "Name(WER, 1) " sagt: ""
verwendet.
<msg> wird vor der Ausgabe an 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.
Falls der Empfaenger eine Nachricht aufgrund eines blockierten
Sinns nicht empfangen kann (und **nur** dann), wird versucht,
alternative Nachrichten aus dem Array <alt> zuzustellen. Dieses
Array enthaelt structs vom Typ wave_s. Das Array wird von vorne
nach hinten abgearbeitet, bis eine Nachricht erfolgreich zugestellt
werden konnte, das Ende erreicht ist oder eine Nachricht *aus
anderen Gruenden* als einem blockierten Sinn abgelehnt wurde. Der
Grund fuer letzteres ist, dass andere Fehler von ReceiveMsg()
(fast) immer auch bei allen (weiteren) Alternativen auftreten
werden. wave_s ist in /secure/simul_efun/comm.c definiert und
enthaelt die Eintraege string msg, int type, string prefix. In
<alt> ist der Default fuer wave_s.prefix 0! Auch hier findet fuer
wave_s.msg eine Ersetzung mittels replace_personal() statt, fuer
wave_s.prefix nicht.
RUECKGABEWERT
=============
in Lebewesen
------------
Der Rueckgabe ist der Rueckgabewert von ReceiveMsg() fuer die
zuletzt versuchte Meldung.
Wenn dies einen Erfolg (MSG_DELIVERED, MSG_BUFFERED) darstellt,
wurde irgendeine Meldung erfolgreich zugestellt. Falls es
MSG_SENSE_BLOCK ist, sind alle versuchten Sinne blockiert und keine
Nachricht wurde zugestellt. Ist es ein anderer Fehler ist, wurde
keine Nachricht zugestellt (und ggf. nicht alle aus <alt>
versucht).
in Containern/Raeumen
---------------------
Die Funktion hat keinen Rueckgabewert. Der Grund hierfuer ist, dass
dieser ein ggf. tief verschachteltes Mapping waere, was keiner mehr
prueft.
BEISPIEL
========
SetProp(P_NAME, "Questgeber"); SetProp(P_GENDER, MALE);
this_player().ReceiveSay(
"Das hast Du prima gemacht, @WER2!", Name(WER, 1) + " lobt Dich:
", ({
(<wave_s>
msg: "@WER1 nickt Dir laechelnd zu.", type: MT_LOOK),
(<wave_s>
msg: "Jemand klopft Dir lobend auf die Schulter.", type:
MT_FEEL)}));
SIEHE AUCH
==========
ReceiveMsg(), replace_personal(), *Name*
Letzte Aenderung: 21.09.2022, Zesstra