blob: 33ceee1c3b8e40f4946fb45b3703116aaef54087 [file] [log] [blame]
Bugfixb1d9b4d2021-09-14 20:07:04 +02001ReceiveSay()
2============
3
4FUNKTION
5--------
6
7 public int* ReceiveSay(string msg, string prefix = 0,
8 struct msg_s sense_blocked =
9 ({(<msg_s>
10 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
18 /sys/living/comm.h
19
20ARGUMENTE
21---------
22
23 string msg
24 Die auszugebende Meldung. Sie wird vor der Ausgabe an
25 :doc:`../sefun/replace_personal` uebergeben, als erstes Objekt wird das aufrufende
26 Objekt uebergeben, als zweites this_player(), sofern vorhanden. msg wird
27 automatisch auf 78 Zeichen umgebrochen, vorhandene Zeilenumbrueche werden
28 dabei beibehalten.
29 string prefix
30 prefix wird als prefix an :doc:`ReceiveMsg` weitergegeben. Eine
31 Ersetzung mittels :doc:`replace_personal` findet nicht statt.
32 Wird kein Wert uebergeben, wird
33 previous_object().Name(WER, 1) + " sagt: " verwendet. Hierzu muss Name()
34 am aufrufenden Objekt definiert sein und etwas sinnvolles zurueckgeben.
35 struct msg_s sense_blocked
36 Ersatzmeldungen fuer taube Spieler. enthaelt Structs vom Typ msg_s.
37 Dieser ist in /std/living/comm_structs.c definiert und enthaelt die
38 Eintraege string msg, int type, string prefix.
39 Das Array wird von vorne nach hinten
40 abgearbeitet, bis eine Nachricht zugestellt werden konnte oder das Ende
41 erreicht ist. Auch hier findet fuer msg eine Ersetzung mittels
42 :doc:`../sefun/replace_personal` statt, fuer prefix nicht.
43
44BESCHREIBUNG
45------------
46
47 Sendet msg per :doc:`ReceiveMsg` mit den ueblichen Argumenten von
48 "sage" an den Empfaenger. D.h.: MT_LISTEN, MA_SAY, Name(WER, 1) + " sagt: ". Hierzu
49 muss das aufrufende Objekt :doc:`name` definiert haben und dort
50 etwas sinnvolles zurueckgeben. Falls ein anderer prefix gewaehlt wurde,
51 wird dieser statt Name(WER, 1) " sagt: " verwendet.
52
53RUECKGABEWERT
54-------------
55
56 Ein Integer-Array mit folgenden Werten:
57
58 0
59 Der Rueckgabewert von :doc:`../lfun/ReceiveMsg`.
60 1
61 Information, welche Meldung zugestellt wurde. -1 steht fuer msg, ein wert
62 >= 0 fuer die jeweilige Position in sense_blocked.
63
64 Raeume definieren standardmaessig ebenfalls ein ReceiveSay(), welches in
65 jedem Objekt im Raum ReceiveSay() mit den uebergebenen Argumenten aufruft.
66 In diesem Fall ist der Rueckgabe der kleinste von allen gerufenen
67 ReceiveSay() zurueckgelieferte Wert.
68
69BEISPIEL
70--------
71
72 .. code-block:: pike
73
74 SetProp(P_NAME, "Questgeber");
75 SetProp(P_GENDER, MALE);
76 this_player().ReceiveSay(
77 "Das hast Du prima gemacht, @WER2!",
78 Name(WER, 1) + " lobt Dich: ",
79 ({
80 (<message_>
81 msg: "@WER1 nickt Dir laechelnd zu.",
82 type: MT_LOOK),
83 (<msg_s>
84 msg: "Jemand klopft Dir lobend auf die Schulter.",
85 type: MT_FEEL)}));
86
87SIEHE AUCH
88----------
89
90 :doc:`ReceiveMsg`, :doc:`../sefun/replace_personal`, :doc:`name`
91
92Letzte Aenderung: 07.10.2021, Bugfix