Bugfix | b1d9b4d | 2021-09-14 20:07:04 +0200 | [diff] [blame] | 1 | ReceiveMultisense() |
| 2 | =================== |
| 3 | |
| 4 | FUNKTION |
| 5 | -------- |
| 6 | |
Zesstra | 77b3257 | 2022-09-21 23:27:23 +0200 | [diff] [blame^] | 7 | public void ReceiveMultisense(struct wave_s* msgs, string action = 0, int commontypes = 0) |
| 8 | |
Bugfix | b1d9b4d | 2021-09-14 20:07:04 +0200 | [diff] [blame] | 9 | DEFINIERT IN |
| 10 | ------------ |
| 11 | |
| 12 | /std/living/comm.c |
| 13 | /std/room/comm.c |
Bugfix | b1d9b4d | 2021-09-14 20:07:04 +0200 | [diff] [blame] | 14 | |
| 15 | ARGUMENTE |
| 16 | --------- |
| 17 | |
Zesstra | 77b3257 | 2022-09-21 23:27:23 +0200 | [diff] [blame^] | 18 | struct wave_s* msgs |
| 19 | Die auszugebenden Nachrichten mit Zusatzinformationen. (s.u.) |
Bugfix | b1d9b4d | 2021-09-14 20:07:04 +0200 | [diff] [blame] | 20 | string action |
Zesstra | 77b3257 | 2022-09-21 23:27:23 +0200 | [diff] [blame^] | 21 | action wird als <action> an ReceiveMsg() weitergegeben. |
Bugfix | b1d9b4d | 2021-09-14 20:07:04 +0200 | [diff] [blame] | 22 | int commontypes |
Zesstra | 77b3257 | 2022-09-21 23:27:23 +0200 | [diff] [blame^] | 23 | Muss einen oder mehrere veroderte messagetypes aus |
Bugfix | b1d9b4d | 2021-09-14 20:07:04 +0200 | [diff] [blame] | 24 | :doc:`ReceiveMsg` enthalten. Diese werden bei jedem Aufruf von |
Zesstra | 77b3257 | 2022-09-21 23:27:23 +0200 | [diff] [blame^] | 25 | :doc:`ReceiveMsg` mit dem jeweiligen Messagetyp aus <msgs> verodert. |
Bugfix | b1d9b4d | 2021-09-14 20:07:04 +0200 | [diff] [blame] | 26 | |
| 27 | BESCHREIBUNG |
| 28 | ------------ |
| 29 | |
Zesstra | 77b3257 | 2022-09-21 23:27:23 +0200 | [diff] [blame^] | 30 | Versucht, eine der in <msgs> angegebenen Nachrichten an den Empfaenger zuzustellen. |
Bugfix | b1d9b4d | 2021-09-14 20:07:04 +0200 | [diff] [blame] | 31 | |
Zesstra | 77b3257 | 2022-09-21 23:27:23 +0200 | [diff] [blame^] | 32 | 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. |
| 33 | |
| 34 | <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. |
| 35 | wave_s.msg wird vor der Ausgabe von :doc:`../sefun/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. |
Bugfix | b1d9b4d | 2021-09-14 20:07:04 +0200 | [diff] [blame] | 36 | |
| 37 | RUECKGABEWERT |
| 38 | ------------- |
| 39 | |
Zesstra | 77b3257 | 2022-09-21 23:27:23 +0200 | [diff] [blame^] | 40 | in Lebewesen |
| 41 | ^^^^^^^^^^^^ |
| 42 | Der Rueckgabe ist der Rueckgabewert von ReceiveMsg() fuer die zuletzt versuchte Meldung. |
Bugfix | b1d9b4d | 2021-09-14 20:07:04 +0200 | [diff] [blame] | 43 | |
Zesstra | 77b3257 | 2022-09-21 23:27:23 +0200 | [diff] [blame^] | 44 | Wenn dies einen Erfolg (MSG_DELIVERED, MSG_BUFFERED) darstellt, wurde irgendeine Meldung erfolgreich zugestellt. |
| 45 | Falls es MSG_SENSE_BLOCK ist, sind alle versuchten Sinne blockiert und keine Nachricht wurde zugestellt. |
| 46 | Ist es ein anderer Fehler ist, wurde keine Nachricht zugestellt (und ggf. nicht alle versucht). |
Bugfix | b1d9b4d | 2021-09-14 20:07:04 +0200 | [diff] [blame] | 47 | |
Zesstra | 77b3257 | 2022-09-21 23:27:23 +0200 | [diff] [blame^] | 48 | in Containern/Raeumen |
| 49 | ^^^^^^^^^^^^^^^^^^^^^ |
| 50 | |
| 51 | Die Funktion hat keinen Rueckgabewert. Der Grund hierfuer ist, dass dieser ein ggf. tief verschachteltes Mapping waere, was keiner mehr prueft. |
Bugfix | b1d9b4d | 2021-09-14 20:07:04 +0200 | [diff] [blame] | 52 | |
| 53 | BEISPIEL |
| 54 | -------- |
| 55 | |
| 56 | .. code-block:: pike |
| 57 | |
Bugfix | b1d9b4d | 2021-09-14 20:07:04 +0200 | [diff] [blame] | 58 | this_player().ReceiveMultisense( |
| 59 | ({ |
Zesstra | 77b3257 | 2022-09-21 23:27:23 +0200 | [diff] [blame^] | 60 | (<wave_s> |
Bugfix | b1d9b4d | 2021-09-14 20:07:04 +0200 | [diff] [blame] | 61 | msg: "Ein Drache landet neben Dir.", |
| 62 | type: MT_LOOK), |
Zesstra | 77b3257 | 2022-09-21 23:27:23 +0200 | [diff] [blame^] | 63 | (<wave_s> |
| 64 | message: "Du hoerst ein Rumpeln, als waere gerade etwas Grosses " |
Bugfix | b1d9b4d | 2021-09-14 20:07:04 +0200 | [diff] [blame] | 65 | "neben Dir eingeschlagen.", |
| 66 | type: MT_LISTEN), |
Zesstra | 77b3257 | 2022-09-21 23:27:23 +0200 | [diff] [blame^] | 67 | (<wave_s> |
Bugfix | b1d9b4d | 2021-09-14 20:07:04 +0200 | [diff] [blame] | 68 | msg: "Du spuerst einen heftigen Luftzug.", |
| 69 | type: MT_FEEL)}) |
| 70 | MA_MOVE_IN); |
Zesstra | 77b3257 | 2022-09-21 23:27:23 +0200 | [diff] [blame^] | 71 | |
Bugfix | b1d9b4d | 2021-09-14 20:07:04 +0200 | [diff] [blame] | 72 | SIEHE AUCH |
| 73 | ---------- |
| 74 | |
| 75 | :doc:`ReceiveMsg`, :doc:`../sefun/replace_personal` |
| 76 | |
Zesstra | 77b3257 | 2022-09-21 23:27:23 +0200 | [diff] [blame^] | 77 | Letzte Aenderung: 21.09.2022, Zesstra |