| ReceiveSay() |
| ************ |
| |
| |
| FUNKTION |
| ======== |
| |
| public void ReceiveSay(string msg, string prefix = |
| previous_object().Name(WER, 1) + " sagt: ", |
| struct msg_s sense_blocked = |
| ({(<wave_s> |
| msg: "@WER1 bewegt die Lippen, Du hoerst jedoch nichts.", |
| type: MT_LOOK)})) |
| |
| |
| DEFINIERT IN |
| ============ |
| |
| /std/living/comm.c /std/room/comm.c |
| |
| |
| ARGUMENTE |
| ========= |
| |
| string msg |
| Die auszugebende Meldung. |
| |
| string prefix |
| prefix wird als prefix an ReceiveMsg() weitergegeben. Wird kein |
| Wert uebergeben, wird "previous_object().Name(WER, 1) + " sagt: |
| "" verwendet. |
| |
| struct wave_s *alt |
| Ersatzmeldungen, falls das Lebewesen die Meldung aufgrund eines |
| blockierten Sinns nicht wahrnehmen kann. Details siehe unten. |
| |
| |
| BESCHREIBUNG |
| ============ |
| |
| Sendet msg per ReceiveMsg() mit den ueblichen Argumenten von "sage" |
| an den Empfaenger, d.h.: "MT_LISTEN", "MA_SAY", "Name(WER, 1) + " |
| sagt: "". Hierzu muss das aufrufende Objekt *Name* definiert haben |
| und dort etwas sinnvolles zurueckgeben. Falls ein anderer Praefix |
| gewaehlt wurde, wird dieser statt "Name(WER, 1) " sagt: "" |
| verwendet. |
| |
| <msg> wird vor der Ausgabe an 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. |
| |
| 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. 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! Auch hier findet fuer |
| wave_s.msg eine Ersetzung mittels replace_personal() statt, fuer |
| wave_s.prefix nicht. |
| |
| |
| 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 aus <alt> |
| 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 |
| ======== |
| |
| SetProp(P_NAME, "Questgeber"); SetProp(P_GENDER, MALE); |
| this_player().ReceiveSay( |
| |
| "Das hast Du prima gemacht, @WER2!", Name(WER, 1) + " lobt Dich: |
| ", ({ |
| |
| (<wave_s> |
| msg: "@WER1 nickt Dir laechelnd zu.", type: MT_LOOK), |
| |
| (<wave_s> |
| msg: "Jemand klopft Dir lobend auf die Schulter.", type: |
| MT_FEEL)})); |
| |
| |
| SIEHE AUCH |
| ========== |
| |
| ReceiveMsg(), replace_personal(), *Name* |
| |
| Letzte Aenderung: 21.09.2022, Zesstra |