Lpc Manpages

SYNOPSIS
        void call_out(string fun, int delay, mixed arg, ...)
        void call_out(closure cl, int delay, mixed arg, ...)

BESCHREIBUNG
        Ruft zeitverzoegert die Funktion <fun> im aktuellen Objekt oder
        die Closure <cl> auf. Der Aufruf erfolgt in <delay> Sekunden.
        Die Funktion / Closure wird mit den <arg> Argumenten aufgerufen.
        <delay> kann groesser oder gleich 0 sein, und wird intern auf das
        naechste Vielfache von __ALARM_TIME__ aufgerundet.

        call_out() merkt sich den aktuellen User und ruft die Funktion
        entsprechend auf. call_out() kann nur Funktionen aufrufen, die
        oeffentlich zugaenglich sind, das heisst "public" und "static"
        deklarierte Funtionen. "private" und "protected" deklarierte
        Funktionen koennen nicht aufgerufen werden.

        Die Ausfuehrung von call_out()s erfordert einen einfachen (nicht
        zu aufwendigen) Schutz gegen Rabbits: die Evalkosten aller
        gleichzeitig anstehenden call_out()s werden auf einer pro-UID-Basis
        summiert. Uebersteigt die Summe ein vorgegebenes Maximum, wird
        ein Fehler 'too long evaluation' erzeugt, und es werden alle
        call_out()s des betreffenden Benutzers, die zur gleichen Zeit
        faellig werden, entfernt.

        Wenn zwei call_out()s zum gleichen Zeitpunkt ausgefuehrt werden
        sollen, wird der zuerst gestartete zuerst ausgefuehrt.

BEISPIELE
        call_out("RefreshMe", 10);

        Dies ruft die Funktion RefreshMe() nach Ablauf von 10 Sekunden ohne
        irgendwelche Argumente auf. Die Funktion RefresMe() kann dann
        wiederum selbst call_out()s starten, auch auf sich selbst, was
        einen Loop erzeug (keine Rekurison). Mit einem solchen Loop koennen
        Anweisungen in einem Objekt in regelmaessigen Zeitintervallen
        ausgefuehrt werden. Es ist allerdings zu beachten, dass call_out()s
        in einer linearen Liste gespeichert werden, und deshalb ziemlich
        rechenaufwendig fuer den Treiber sind.

        Und JA: selbst-replizierende call_out()s, bei denen jeder call_out()
        selbst zwei oder mehr call_out()s in einem Loop erzeugt (so genannte
        Rabbits) verlangsamen das Mud ungemein und koennen es sogar zum
        Crash bringen. Kein Grund, es selbst auszuprobieren.

SIEHE AUCH
        remove_call_out(E), call_out_info(E), find_call_out(E),
        this_player(E), reset(A), heart_beat(A)