blob: 386aa7ed90ce05e873ed46629c1bcffe80323bd9 [file] [log] [blame]
Bugfixb1d9b4d2021-09-14 20:07:04 +02001ReceiveSay()
2============
3
4FUNKTION
5--------
6
Zesstra77b32572022-09-21 23:27:23 +02007 public void ReceiveSay(string msg, string prefix = previous_object().Name(WER, 1) + " sagt: ",
Bugfixb1d9b4d2021-09-14 20:07:04 +02008 struct msg_s sense_blocked =
Zesstra77b32572022-09-21 23:27:23 +02009 ({(<wave_s>
Bugfixb1d9b4d2021-09-14 20:07:04 +020010 msg: "@WER1 bewegt die Lippen, Du hoerst jedoch nichts.",
11 type: MT_LOOK)}))
12
13DEFINIERT IN
14------------
15
16 /std/living/comm.c
17 /std/room/comm.c
Zesstra77b32572022-09-21 23:27:23 +020018
Bugfixb1d9b4d2021-09-14 20:07:04 +020019ARGUMENTE
20---------
21
22 string msg
Zesstra77b32572022-09-21 23:27:23 +020023 Die auszugebende Meldung.
Bugfixb1d9b4d2021-09-14 20:07:04 +020024 string prefix
Zesstra77b32572022-09-21 23:27:23 +020025 prefix wird als prefix an :doc:`ReceiveMsg` weitergegeben. Wird kein Wert uebergeben, wird ``previous_object().Name(WER, 1) + " sagt: "`` verwendet.
26 struct wave_s \*alt
27 Ersatzmeldungen, falls das Lebewesen die Meldung aufgrund eines blockierten Sinns nicht wahrnehmen kann. Details siehe unten.
Bugfixb1d9b4d2021-09-14 20:07:04 +020028
29BESCHREIBUNG
30------------
31
Zesstra77b32572022-09-21 23:27:23 +020032 Sendet msg per :doc:`ReceiveMsg` mit den ueblichen Argumenten von "sage" an den Empfaenger, d.h.: ``MT_LISTEN``, ``MA_SAY``, ``Name(WER, 1) + " sagt: "``.
33 Hierzu muss das aufrufende Objekt :doc:`Name` definiert haben und dort etwas sinnvolles zurueckgeben. Falls ein anderer Praefix gewaehlt wurde, wird dieser statt ``Name(WER, 1) " sagt: "`` verwendet.
34
35 <msg> wird vor der Ausgabe an :doc:`../sefun/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.
36
37 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.
38 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!
39 Auch hier findet fuer wave_s.msg eine Ersetzung mittels :doc:`../sefun/replace_personal` statt, fuer wave_s.prefix nicht.
Bugfixb1d9b4d2021-09-14 20:07:04 +020040
41RUECKGABEWERT
42-------------
43
Zesstra77b32572022-09-21 23:27:23 +020044in Lebewesen
45^^^^^^^^^^^^
46 Der Rueckgabe ist der Rueckgabewert von ReceiveMsg() fuer die zuletzt versuchte Meldung.
Bugfixb1d9b4d2021-09-14 20:07:04 +020047
Zesstra77b32572022-09-21 23:27:23 +020048 Wenn dies einen Erfolg (MSG_DELIVERED, MSG_BUFFERED) darstellt, wurde irgendeine Meldung erfolgreich zugestellt.
49 Falls es MSG_SENSE_BLOCK ist, sind alle versuchten Sinne blockiert und keine Nachricht wurde zugestellt.
50 Ist es ein anderer Fehler ist, wurde keine Nachricht zugestellt (und ggf. nicht alle aus <alt> versucht).
Bugfixb1d9b4d2021-09-14 20:07:04 +020051
Zesstra77b32572022-09-21 23:27:23 +020052in Containern/Raeumen
53^^^^^^^^^^^^^^^^^^^^^
54
55 Die Funktion hat keinen Rueckgabewert. Der Grund hierfuer ist, dass dieser ein ggf. tief verschachteltes Mapping waere, was keiner mehr prueft.
Bugfixb1d9b4d2021-09-14 20:07:04 +020056
57BEISPIEL
58--------
59
60 .. code-block:: pike
61
62 SetProp(P_NAME, "Questgeber");
63 SetProp(P_GENDER, MALE);
64 this_player().ReceiveSay(
65 "Das hast Du prima gemacht, @WER2!",
66 Name(WER, 1) + " lobt Dich: ",
67 ({
Zesstra77b32572022-09-21 23:27:23 +020068 (<wave_s>
Bugfixb1d9b4d2021-09-14 20:07:04 +020069 msg: "@WER1 nickt Dir laechelnd zu.",
70 type: MT_LOOK),
Zesstra77b32572022-09-21 23:27:23 +020071 (<wave_s>
Bugfixb1d9b4d2021-09-14 20:07:04 +020072 msg: "Jemand klopft Dir lobend auf die Schulter.",
73 type: MT_FEEL)}));
74
75SIEHE AUCH
76----------
77
Zesstra77b32572022-09-21 23:27:23 +020078 :doc:`ReceiveMsg`, :doc:`../sefun/replace_personal`, :doc:`Name`
Bugfixb1d9b4d2021-09-14 20:07:04 +020079
Zesstra77b32572022-09-21 23:27:23 +020080Letzte Aenderung: 21.09.2022, Zesstra