| STANDARDOBJEKT FUER RAEUME: |
| |
| BENUTZUNG: |
| inherit "/std/room"; |
| |
| #include <properties.h> |
| #include <rooms.h> // Fuer AddItem() und NewDoor() |
| |
| BESCHREIBUNG: |
| Ein Raum ist ein Objekt, das von Spielern oder anderen Lebewesen |
| betreten werden kann. Er hat Lang- und Kurzbeschreibungen von |
| innen und aussen (zum Beispiel Schiffe oder aehnliche Raeume in |
| Raeumen), die sich der Spieler je nach seinen Beduerfnissen |
| anzeigen lassen kann (kurz/lang-Modus). |
| |
| Properties: |
| |
| P_INT_SHORT |
| Kurzbeschreibung innerhalb des Raumes |
| P_INT_LONG |
| Langbeschreibung innerhalb des Raumes |
| P_SHORT |
| Kurzbeschreibung von aussen (nur noetig, wenn man den Raum |
| auch wirklich von aussen sehen kann) |
| P_LONG |
| Langbeschreibung von aussen (siehe P_SHORT) |
| Um Situationsbezogene Beschreibungen zu bekommen, kann man |
| Querymethoden auf die jeweiligen Properties setzen, siehe Dokumentation |
| zu Set(). |
| |
| P_LIGHT |
| Lichtlevel des Raums (0 dunkel, 1 hell) |
| P_LIGHT_TYPE |
| Lichtart, mit der der Raum beleuchtet ist, zB LT_SUNLIGHT |
| P_INDOORS |
| Wenn es sich um einen Aussenraum handelt, 0. 1 fuer Innenraeume. |
| P_TRANSPARENT |
| Ist ungleich 0, wenn man in den Raum von aussen reinschauen |
| kann, oder von innen nach aussen |
| P_NO_TPORT |
| Zum verhindern von Teleportversuchen in oder aus dem Raum |
| P_NOMAGIC |
| Im Raum kann nicht gezaubert werden. |
| P_WATER |
| Im Raum kann geangelt werden, und man kann ggf. sogar Fische fangen. |
| |
| Funktionen: |
| |
| AddExit(string|string* kmnd, string zielraum) |
| <kmnd> kann ein String sein oder eine Liste von Strings |
| mit den Kommandos mit denen der Spieler in <zielraum> |
| landen soll. |
| RemoveExit(string|string* kmnd) |
| <kmnd> ist ein String oder eine Liste von Strings, deren |
| Ausgaenge entfernt werden sollen. Dabei muss man etwas vor- |
| sichtig sein, da ein Spieler, der zum Zeitpunkt des Aufrufs |
| im Raum ist, die Aktion fuer sich noch definiert hat. |
| Also: Nur benutzen, wenn man weiss, was man tut! |
| AddSpecialExit(string|string* kmnd, string funktion) |
| <funktion> wird aufgerufen, wenn der Spieler das Kommando |
| <kmnd> tippt (oder eins der Kommandos, wenn <kmnd> eine |
| Liste ist). Nuetzlich zum Beispiel um einen Spieler nur |
| durchzulassen, wenn ein Waechter nicht da ist. |
| P_AERIAL_HELPERS/P_AQUATIC_HELPERS |
| Sollte es gewuenscht sein, dass bestimmte Raeume z.B. nur |
| fliegend erreicht werden koennen, oder dass man fuer einen |
| bestimmten Ausgang tauchen koennen muss, sind diese |
| Properties hilfreich, die im Spielerobjekt definiert sind |
| und die dort aktuell registrierten Hilfsobjekte fuers |
| Fliegen/Segeln und Tauchen enthalten. |
| RemoveSpecialExit(string|string* kmnd) |
| siehe RemoveExit() |
| NewDoor() |
| Fuegt dem Raum eine Tuer hinzu, die in einen zweiten Raum fuehrt, |
| und die der Spieler (ggf. mit einem Schluessel) oeffnen und |
| schliessen kann. |
| |
| Um Raeume interessanter zu machen, kann man ihnen Details, die |
| vom Spieler angeschaut werden koennen, einbauen: |
| |
| AddDetail(string|string* keys, string descr) |
| Eine Beschreibung von Details, die vom Spieler angeschaut |
| werden koennen wird dem Raum gegeben. <keys> kann ein |
| String sein oder eine Liste von Strings. <descr> ist |
| die Beschreibung, die der Spieler erhaelt. |
| RemoveDetail(string|string* keys) |
| Entfernt ein Detail aus einem Raum. <keys> kann ein String |
| sein oder eine Liste von Strings. |
| AddSpecialDetail(string|string* keys, string function) |
| Im Prinzip wie AddDetail(), nur wird als zweites Argument |
| kein fester String angegeben, sondern eine Funktion, die |
| einen String zurueckgeben muss. Damit kann man variable |
| Details programmieren. |
| RemoveSpecialDetail(string|string* keys) |
| siehe RemoveDetail() |
| AddReadDetail(string|string* keys, string desc) |
| <desc> wird ausgegeben, wenn ein Spieler den <key> liest. |
| <keys> kann wieder ein String oder eine Liste von Strings |
| sein. |
| RemoveReadDetail(string|string* keys) |
| siehe RemoveDetail() |
| AddRoomMessage(string* msg, int prob, string|mixed *func) |
| Alle <prob> Sekunden wird aus einer Liste von Meldungen |
| (<msg>) zufaellig eine ausgesucht, die dann im Raum er- |
| scheint. Wenn das Argument <func> angegeben ist, wird |
| eine Funktion diesen Namens aufgerufen, der der Index |
| der ausgegebenen Meldung als Argument uebergeben wird. |
| Func darf auch einen Array von Funktionen enthalten. |
| |
| AddCmd(string|string* cmd, string func, int flag) |
| Im Raum wird beim Kommando <cmd> (oder einem der Kommandos) |
| die Funktion <func> aufgerufen. <func> muss 1 zurueck- |
| geben, wenn die Funktion die Kombination aus Kommando |
| und Argumenten akzeptiert, ansonsten 0. Alles was ein |
| Spieler hinter <cmd> noch angibt, wird der Funktion als |
| Argument uebergeben. Wenn <flag> gesetzt ist, wird jedes |
| Kommando, das mit <cmd> beginnt akzeptiert. |
| RemoveCmd(string|string* cmd) |
| Entfernt ein Kommando aus dem Raum. |
| ACHTUNG: Bei Spielern, die zum Zeitpunkt des Funktions- |
| aufrufs noch im Raum sind, ist das Kommando noch definiert. |
| Also: Nur benutzen, wenn man genau weiss, was man tut. |
| |
| AddItem(string filename, int refresh) |
| Ein Objekt mit Pfad <filename> wird erzeugt und in den |
| Raum bewegt, dabei gibt es vier verschiedene Modi, die |
| ueber das Argument <refresh> angegeben werden: |
| REFRESH_NONE: Das Objekt wird nur beim allerersten mal |
| erzeugt, und dann nie wieder (erst beim reboot) |
| REFRESH_DESTRUCT: Ein neues Objekt wird erst erzeugt, |
| wenn das alte zerstoert ist. So kann man sicher |
| gehen, dass nur ein Exemplar im Spiel ist. |
| REFRESH_REMOVE: Beim reset wird ein neues Objekt erzeugt, |
| wenn sich das alte nicht mehr im Raum befindet. |
| REFRESH_ALWAYS: Bei jedem reset wird ein neues Objekt |
| erzeugt. VORSICHT: Kann zu riesigen Mengen von |
| Objekten fuehren, wenn ein Raum lange nicht be- |
| sucht wird. |
| Die Konstanten REFRESH_* sind in <rooms.h> definiert. |
| |
| Auf die Properties P_EXITS, P_SPECIAL_EXITS, P_DETAILS, |
| P_SPECIAL_DETAILS, P_READ_DETAILS, P_COMMANDS und P_ITEMS |
| sollte NICHT direkt zugegriffen werden. |