ReceiveMultisense()¶
FUNKTION¶
public void ReceiveMultisense(struct wave_s* msgs, string action = 0, int commontypes = 0)
DEFINIERT IN¶
/std/living/comm.c /std/room/comm.c
ARGUMENTE¶
- struct wave_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 ReceiveMsg() enthalten. Diese werden bei jedem Aufruf von ReceiveMsg() mit dem jeweiligen Messagetyp aus <msgs> verodert.
BESCHREIBUNG¶
Versucht, eine der in <msgs> angegebenen Nachrichten an den Empfaenger zuzustellen.
Das Array <msgs> wird der Reihe nach abgearbeitet, bis eine Nachricht zugestellt werden konnte, das Ende von <msgs> erreicht wurde 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.
<msgs> ist ein Array von struct wave_s. Diese ist in /secure/simul_efun/comm.c definiert (und steht allen Programmen automatisch zur Verfuegung). Sie hat die Eintraege string msg, int type, string prefix. wave_s.msg wird vor der Ausgabe von replace_personal() verarbeitet. Als erstes Objekt wird das aufrufende Objekt uebergeben, als zweites this_player(), sofern vorhanden. wave_s.msg wird automatisch auf 78 Zeichen umgebrochen, vorhandene Zeilenumbrueche werden dabei beibehalten. Fuer wave_s.prefix findet keine Ersetzung statt.
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 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¶
- this_player().ReceiveMultisense(
- ({
- (<wave_s>
msg: „Ein Drache landet neben Dir.“, type: MT_LOOK),
- (<wave_s>
- message: „Du hoerst ein Rumpeln, als waere gerade etwas Grosses „
„neben Dir eingeschlagen.“,
type: MT_LISTEN),
- (<wave_s>
msg: „Du spuerst einen heftigen Luftzug.“, type: MT_FEEL)})
MA_MOVE_IN);
SIEHE AUCH¶
Letzte Aenderung: 21.09.2022, Zesstra