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.
        Die minimale Verzoegerung ist 0 (negative <delay> werden implizit als
        0 behandelt). Allerdings ist die reale Verzoegerung etwas zwischen
        <delay> und __ALARM_TIME__.

        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
        eine Schleife erzeugt (keine Rekursion). Mit einer solchen Schleife
        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 (sogenannte
        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)
