| |
| P_NETDEAD_INFO |
| ************** |
| |
| |
| NAME |
| ==== |
| |
| P_NETDEAD_INFO "netdead_info" |
| |
| |
| DEFINIERT IN |
| ============ |
| |
| /sys/player.h |
| |
| |
| BESCHREIBUNG |
| ============ |
| |
| Wird im Raum X gesetzt und wirkt nur, falls dieser Raum ein '#' im |
| object_name() hat (normale Clones, zB "/room/void#10153018"). |
| |
| |
| |
| Bei Einschlafen eines Spielers in diesem Raum werden die Werte aus |
| der Property im Spieler gespeichert (Netztoteninformationen). |
| |
| Ist beim Aufwachen des Spielers das Raumobjekt X zerstoert worden, dann |
| wird bei der Blueprint von X per SetProp() die gespeicherte Information |
| gesetzt. Der Rueckgabewert des SetProp wird als Pfad zu einem Ausweich- |
| Aufwach-Raum interpretiert und der Spieler wird in dem Fall dorthin |
| bewegt. |
| |
| |
| BEMERKUNGEN |
| =========== |
| |
| Zum Clonen von Raeumen sollten Virtual Compiler benutzt werden: |
| Wird in den erzeugten Objektnamen KEIN '#' verwendet, dann ist diese |
| Property nicht sinnvoll und wird nicht verwendet. Ein ordentlicher |
| VC kann Bewegen eines Spielers in dessen alten, nicht mehr existierenden |
| Raum oder einen Ersatzraum beim Aufwachen selbst loesen. |
| |
| |
| BEISPIELE |
| ========= |
| |
| // #1: geclonter Raum mit Ausweich-Aufwachraum: Klerus-Gilde |
| #include <properties.h> |
| inherit "/std/room"; |
| |
| |
| |
| void create() { |
| ::create(); |
| |
| SetProp(P_NETDEAD_INFO, "/gilden/klerus"); |
| SetProp(P_LIGHT, 1); |
| } |
| |
| |
| |
| // #2: komplexerer Beispielraum fuer P_NETDEAD_INFO-Funktionalitaet |
| // Siehe auch: /doc/beispiele/testobjekte/netdead_info_testraum.c |
| #include <properties.h> |
| inherit "/std/room"; |
| |
| void create() { |
| ::create(); |
| |
| if (clonep(this_object())) |
| // setze Informationen, die im Netztoten gespeichert werden sollen |
| Set(P_NETDEAD_INFO, random(5)); |
| else |
| // Blueprint: hier kann man zu einem Cloneraum gehen |
| AddExit("cloneraum", #'create_room); |
| |
| // Set-Method, um die Informationen aus P_NETDEAD_INFO beim Aufwachen |
| // in der Blueprint auswerten zu koennen |
| Set(P_NETDEAD_INFO, #'create_destiny, F_SET_METHOD); |
| SetProp(P_LIGHT, 1); |
| } |
| |
| |
| |
| // Raum entfernen, normalerweise so KEINE GUTE IDEE! |
| void BecomesNetDead(object pl) { |
| call_out(#'remove, 30); |
| } |
| |
| // erzeuge einen Cloneraum und bewege den Spieler dahin |
| int create_room(string dir) { |
| object dest = clone_object(object_name(this_object())); |
| this_player()->move(dest, M_NOCHECK); |
| return 1; |
| } |
| |
| |
| |
| // Set-Method fuer P_NETDEAD_INFO: gibt Pfad zurueck |
| // benutze die Informationen aus dem jetzt aufwachenden Netztoten, um |
| // einen alternativen Aufwachraum zu ermitteln, da der Einschlafraum |
| // zerstoert ist |
| string create_destiny(mixed val) { |
| if (intp(val)) { |
| switch (val) { |
| case 0: |
| return "/d/ebene/room/PortVain/po_haf1"; |
| case 1: |
| return "/gilden/klerus"; |
| case 2: |
| return "/gilden/karate"; |
| default: |
| } |
| return "/d/ebene/room/waldweg4"; |
| } |
| } |
| |
| 2. Jan 2012 Gloinson |