
QueryDoorKey()
**************


FUNKTION
========

   mixed QueryDoorKey();


DEFINIERT IN
============

   versch. Schluesseln


ARGUMENTE
=========

   keine


BESCHREIBUNG
============

   Diese Funktion wird in einem Schluessel aufgerufen, wenn man mit diesem
   eine Tuer auf- oder abschliessen will. Anhand des Rueckgabewertes wird
   entschieden, ob der Schluessel passt oder nicht.


RUECKGABEWERT
=============

   String oder Array von Strings der Raumpfade, deren gemeinsame Tueren
   sich mit diesem Schluessel auf- bzw. abschliessen lassen. Die Keys sind
   dabei die Raumpfade, getrennt durch ein ":". Dabei muessen die Pfade
   in lexikographischer (alphabetischer) Reihenfolge sortiert sein:

   "<name_raum_1>:<name_raum_2>"


BEISPIELE
=========

   Ein Schluessel, mit dem sich eine einzige Tuer oeffnen laesst (falls es
   jemals eine Tuer zwischen Karate- und Abenteurergilde geben sollte...):

   string QueryDoorKey()
   {
     return "/gilden/abenteurer:/gilden/karate";
   }

   Ein Schluessel, der in mehreren Tueren passt:

   string* QueryDoorKey()
   {
     return ({ "/gilden/abenteurer:/players/wargon/workroom",
               "/gilden/abenteurer:/gilden/karate",
               "/players/jof/workroom:/players/wargon/workroom"
            });
   }


SIEHE AUCH
==========

   NewDoor(), QueryDoorStatus(), SetDoorStatus(), P_DOOR_INFOS,
   /std/room/doors.c, /obj/doormaster.c, GetPhiolenInfos(), QueryAllDoors()

Letzte Aenderung: Don, 08.05.2014, Gabylon
