| 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 |
| ========== |
| |
| ReceiveMsg(), replace_personal() |
| |
| Letzte Aenderung: 21.09.2022, Zesstra |