FUNKTION:
void DaytimeChanged(int state, int on_time, int state_range);
(Diese Funktion kann man nicht aufrufen. Bitte unbedingt die
Beschreibung lesen!)
ARGUMENTE:
state: neue Tageszeit (MORN, DUSK, EVEN, DAWN)
on_time: 1, wenn der Aufruf durch Benachrichtigung durch die Uhr
zustande kam; 0, wenn er verspaetet durchgefuehrt wird,
weil gerade ein Spieler den Raum betritt
state_range: -1, wenn mehr als ein Tag uebersprungen wurde. Sonst
Bitmaske von flags TIMED_MORN, TIMED_DUSK, etc.
Die gesetzten Bits geben an, welche Tageszeiten seit
dem letzten Aufruf angefangen haben.
Anmerkung: -1 hat alle diese Bits gesetzt.
BESCHREIBUNG:
Diese Funktion kann in Raeumen definiert werden. Sie wird dann
aufgerufen, wenn sich die Tageszeit geaendert hat. Im Gegensatz
zur Benachrichtigung per Uhr ohne NOTIFY_ALWAYS erfolgt der Aufruf
auch dann, wenn kein Spieler im Raum ist; er wird allerdings
solange "aufgehoben", bis wieder ein Spieler den Raum betritt.
Damit stellt DaytimeChanged() einen Mittelweg zwischen der
Benachrichtigung per Uhr ohne NOTIFY_ALWAYS, wobei man Tageswechsel
ganz verpassen kann, und mit NOTIFY_ALWAYS, was unnoetig Ressourcen
verbraucht, wenn lange keine Spieler den Raum betreten, dar.
BEISPIEL:
#include <uhr.h> /* UHR, MORN, etc */
#include <room.h> /* TIMED_MORN, etc */
object monster;
void clone_monster()
{
/* Tagsueber kommt das Monster nicht */
if (!UHR->IsNight())
return;
if (monster)
return;
monster = clone_object(MON("monster"));
monster->move(ME, M_GO);
}
void DaytimeChanged(int state, int on_time, int state_range)
{
/* Das Monster soll morgens verschwinden. */
if (monster && (state_range & TIMED_MORN)) {
if (on_time)
tell_room(ME, "Das Monster fluechtet vor der Sonne.\n");
monster->remove();
}
}
SIEHE AUCH:
uhr(WL), AddItem(L), room(std)
|