Dokumentation zu: Message(L)

HR Image


FUNKTION:
	int Message(string msg, string verb, mixed uid, string desc, int flag)

IMPLEMENTIERT:
	/std/player/comm.c

ARGUMENTE:
	str  : Den zu uebermittelnden Text (bereits umgebrochen).
               Wenn als Referenz uebergeben werden hier Fehlermeldungen
	       abgelegt.
	verb : Verb, falls query_verb() nicht das ignorierbare
	       Verb liefert (optional).
	uid  : Uid des Senders oder Senderobjekt das ignorierbar sein
	       soll (optional).
	desc : Zusaetzliches beschreibendes Wort fuer die Ignoriere-
	       Pruefung (optional).
	flag : Einige Zusatzinfos (optional).

BESCHREIBUNG:
	Diese Funktion benutzt die Lib, um Texte an einen Spieler auszugeben,
	die dieser moeglicherweise ignorieren moechte. Wenn man in seinen
	Objekten auch etwas an einen Spieler ausgeben will, was dieser
	ggf. gar nicht wissen mag, sollte man diese Funktion bemuehen,
	statt ein write(E) oder tell_object(E).

	Ignoriere-System:
	-----------------

	Wenn kein Flag gesetzt ist oder wenn im Flag C_MSG_IGNCHK gesetzt
	wurde, wird anhand der (optional) angegebenen Strings 'verb' und
	'desc' geprueft, ob der Spieler die Meldung erhalten moechte. Hierbei
	wird als Sender 'uid' angenommen, was ein Objekt oder ein Uid-String
	sein darf.
	Die Werte werden direkt an CheckIgnore(L) weitergegeben. Eine
	genauere Beschreibung siehe dort:
	CheckIgnore(uid, verb, 0, desc)    // bei 'uid' ist String
        CheckIgnore(0, verb, uid, desc)    // bei 'uid' ist Objekt

	Wenn einer der o.g. String nicht gesetzt wurde, wird versucht
	einen adaequaten String zu finden, und zwar im Einzelnen:

	  * verb wird durch query_verb(E) bestimmt.
	  * uid wird, wenn this_player() ein Spieler ist, dessen Uid;
	    bei Npcs oder leblosen Objekten wird name(RAW) verwendet.
	  * desc wird nicht benutzt.

	Bei NPCs und leblosen Objekten wird danach noch geprueft, ob der
	eigentliche Akteur (Interactive, ausloesende Spieler) total oder
	mit der Desc ignoriert wird.

	Der (negative) Fehlercode von CheckIgnore() wird dann zurueckgegeben.

	Wurde msg per Referenz uebergeben, so wird eine entsprechende
	Meldung dort abgelegt (siehe Beispiel unten), auch wenn der Kobold
	die Meldung 'verschluckte'.


	Meldungsbearbeitung:
	--------------------

	Mit den Flags kann man noch einige zusaetzliche Informationen
	ueber die Art der Meldung und dessen Weiterverarbeitung angeben.
	Die Makros befinden sich in <living/comm.h> und folgende werden
	beachtet:

	C_MSG_TELL     Die Meldung ist ein 'tell' und wird in der
	               Farbe "teile-mit" an den Spieler ausgegeben.

	C_MSG_ILLU     Die Meldung ist eine Illusion und wird in der
	               Farbe "illusion" ausgegeben. Ausserdem werden
	               die Meldung selbst und der Akteur gespeichert.

	C_MSG_CHAN     Die Meldung ist von einer Ebene und wird in der
	               Farbe "ebenen" ausgegeben.

	C_MSG_SOUL     Die Meldung entstammt einer Soulaktion (unbenutzt)

	C_MSG_IGNCHK   s.o.

	C_KOB_IGN      Der Kobold darf die Meldung unterdruecken.

	C_KOB_SAVE     Der Kobold darf die Meldung unterdruecken, muss
	               sie jedoch speichern. Wenn msg per Referenz uebergeben
	               wurde, steht dort nachher die Begruendung drin.
	               Achtung, nicht zusammen mit C_KOB_IGN verwenden!

	C_FROM_INTER   Bislang nichts Spezielles.

RÜCKGABEWERT:
	 1 bei erfolgreicher Uebermittlung
	 0 wenn der Kobold aktiv war
	-1 die Zielperson ignoriert den Akteur
	-2 die Zielperson ignoriert den Befehl
	-3 die Zielperson traegt Oropax
	-4 die Zielperson ignoriert diesen Befehl des Akteurs
	-5 der Akteur ignoriert die Zielperson
	-6 der Akteur traegt Oropax

BEISPIEL:
	object spieler;
	string text = "Jemand ruft: Das Ende ist nah!\n";

	foreach (spieler : users()) {
	  spieler->Message(text, "rufe", 0, 0, C_MSG_IGNCHK | C_KOB_IGN);
	}

	Jeder Spieler bekommt damit die Meldung wenn er/sie nicht "rufe" oder
	den diese Funktion ausloesenden Spieler ignoriert.

	'Fortgeschrittenes' Beispiel:

	text = "Jemand tippt Dir heimlich auf die Schulte.\n";
	i = spieler->Message(&text, 0, ME, 0, C_MSG_IGNCHK | C_KOB_IGN);

	if (i < 1) write(text); // Fehlermeldung ausgeben

SIEHE AUCH:
	CheckIgnore(L), tell_object(E), query_verb(E)


Start » Magierhandbuch » Docu » Lfun » Message Letzte Generierung: 25.04.2021, 01:58
Email an: mud@wl.mud.de
Valid HTML 4.01!