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 stattName(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