GESCHUETZT
SYNOPSIS
        string traceprefix(string prefix)
        string traceprefix(int dummy)

BESCHREIBUNG
        Wenn die Funktion mit einem String als Argument aufgerufen wird,
        werden nur Objekte getracet, deren Name mit diesem String
        uebereinstimmt. Der String <prefix> darf am Anfang keinen "/"
        enthalten, weil Objektnamen intern ohne diesen "/" am Anfang
        gespeichert werden. Wird traceprefix() mit einer Zahl als Argument
        aufgerufen, wird traceprefix ignoriert und alle Objekte werden
        getracet.

        Die Funktion liefert das alte Praefix zurueck oder 0, wenn keines
        gefunden wurde.

        Die Master-Lfun valid_trace() wird mit ("traceprefix", prefix)
        aufgerufen, um die Erlaubnis fuer die Benutzung dieser Funktion zu
        erhalten.

BEISPIELE
        object obj;
        string prefix;
        obj=find_player("thomas");
        prefix = object_name(obj);  /* z.B. /std/player#69         */
        prefix = prefix[1..];       /* entfernt den fuehrenden "/" */
        traceprefix(prefix);
        /* Von hier an wird nur Code im Objekt std/player#69 getracet */
        trace(TRACE_CALL|TRACE_CALL_OTHER|TRACE_RETURN|TRACE_ARGS);
        ...
        trace(TRACE_NOTHING);

GESCHICHTE
        Ab LDMud 3.2.9 wird das Argument <prefix> an valid_trace() uebergeben.

SIEHE AUCH
        trace(E)
