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