Bugfix | b1d9b4d | 2021-09-14 20:07:04 +0200 | [diff] [blame] | 1 | ReceiveSay() |
| 2 | ============ |
| 3 | |
| 4 | FUNKTION |
| 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 | |
| 13 | DEFINIERT IN |
| 14 | ------------ |
| 15 | |
| 16 | /std/living/comm.c |
| 17 | /std/room/comm.c |
| 18 | /sys/living/comm.h |
| 19 | |
| 20 | ARGUMENTE |
| 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 | |
| 44 | BESCHREIBUNG |
| 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 | |
| 53 | RUECKGABEWERT |
| 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 | |
| 69 | BEISPIEL |
| 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 | |
| 87 | SIEHE AUCH |
| 88 | ---------- |
| 89 | |
| 90 | :doc:`ReceiveMsg`, :doc:`../sefun/replace_personal`, :doc:`name` |
| 91 | |
| 92 | Letzte Aenderung: 07.10.2021, Bugfix |