Dokumentation zu: DaytimeChanged(L)

HR Image


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)


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