FUNKTION:
void AddRoomMessage( mixed mesg, int delay );
ARGUMENTE:
mesg: string, closure, oder Arrays aus beidem.
delay: Sekundenwert, wann die Ausschriften kommen.
BESCHREIBUNG:
In dem Raum werden ueber callouts alle 'delay' Sekunden
zufaellige Ausschriften aus 'mesg' gemacht.
Ist 'mesg' eine closure oder enthaelt closures, so werden diese
vor der Ausgabe des Textes aufgerufen. Zu beachten ist dabei, dass
die closure einen String (oder 0) zurueckgeben muss.
Die Texte werden alle vor der Ausgabe mit break_string() umgebrochen.
Es ist moeglich, mehrere AddRoomMessage() mit unterschiedlichen
'delay' aufzurufen.
Der minimale Wert fuer 'delay' sind 15 Sekunden. Kleinere Werte
werden als 15 angenommen.
RÜCKGABEWERT:
keiner
BEMERKUNGEN:
Werden mehrere AddRoomMessage() mit dem gleichen 'delay' aufgerufen,
so werden die neuen 'mesg'-Werte zu den alten hinzugefuegt.
Verlaesst ein Spieler diesen Raum bzw. sind keine Spieler
mehr in diesem Raum anwesend, werden alle callouts geloescht,
und somit Rechenzeit gespart. Sie werden erst wieder aktiv,
wenn ein Spieler den Raum betritt.
BEISPIELE:
AddRoomMessage("Hallo, dies kommt alle 15 sek.", 15);
AddRoomMessage(lambda(({}), ({#'sprintf,
"Dies wurde von einer Closure erzeugt.\nEs ist jetzt %s.\n",
({#'dtime, ({#'time}) }) })), 20);
- wir erzeugen Tags und Nachts verschiedene Meldungen (Die Funktion
chats ist jeweils eine Funktion ausserhalb des create.)
AddRoomMessage(#'chats, 50);
string chats()
{
string *tags = ({"Die Sonnenstrahlen kitzeln Deine Nase.",
"Ein paar Voegel zwitschern.",
"Leise raschelt das Laub der Baeume im lauen Sommerwind."});
string *nachts = ({"Ein Stern funkelt am Himmel.",
"Schrie da grad ein Kaeutzchen?",
"Die Baeume rauschen sanft in der Dunkelheit."});
if (UHR->IsNight()) return nachts[random(sizeof(nachts))];
return tags[random(sizeof(tags))];
}
- mit Texten, die Tag und Nacht auch mal gleich sind:
AddRoomMessage(({#'chats, "Die Blaetter der Baeume rauschen leise im Wind.",
"Irgendwo knackt das Unterholz."}), 50);
string chats()
{
if (UHR->IsNight()) return "Ein Kaeutzchen schreit.";
else return "Ein paar Voegel zwitschern.";
}
Mann kann uebrigens ein unregelmaessiges Delay erzeugen, indem
man ins Array Leerstrings (alternativ auch 0en) aufnimmt.
SIEHE AUCH:
RemoveRoomMessage(L), P_ROOM_MSG, closures(LPC), process_string(E),
call_out(E)
|