blob: 10ed5e8aa3789eb3645ece8f8c0d4e76e379127a [file] [log] [blame]
Zesstra953f9972017-02-18 15:37:36 +01001P_NETDEAD_INFO
2**************
MG Mud User88f12472016-06-24 23:31:02 +02003
MG Mud User88f12472016-06-24 23:31:02 +02004
Zesstra953f9972017-02-18 15:37:36 +01005NAME
6====
MG Mud User88f12472016-06-24 23:31:02 +02007
Zesstra953f9972017-02-18 15:37:36 +01008 P_NETDEAD_INFO "netdead_info"
MG Mud User88f12472016-06-24 23:31:02 +02009
MG Mud User88f12472016-06-24 23:31:02 +020010
Zesstra953f9972017-02-18 15:37:36 +010011DEFINIERT IN
12============
MG Mud User88f12472016-06-24 23:31:02 +020013
Zesstra953f9972017-02-18 15:37:36 +010014 /sys/player.h
MG Mud User88f12472016-06-24 23:31:02 +020015
MG Mud User88f12472016-06-24 23:31:02 +020016
Zesstra953f9972017-02-18 15:37:36 +010017BESCHREIBUNG
18============
MG Mud User88f12472016-06-24 23:31:02 +020019
Zesstra953f9972017-02-18 15:37:36 +010020 Wird im Raum X gesetzt und wirkt nur, falls dieser Raum ein '#' im
21 object_name() hat (normale Clones, zB "/room/void#10153018").
22
23
24
25 Bei Einschlafen eines Spielers in diesem Raum werden die Werte aus
26 der Property im Spieler gespeichert (Netztoteninformationen).
27
28 Ist beim Aufwachen des Spielers das Raumobjekt X zerstoert worden, dann
29 wird bei der Blueprint von X per SetProp() die gespeicherte Information
30 gesetzt. Der Rueckgabewert des SetProp wird als Pfad zu einem Ausweich-
31 Aufwach-Raum interpretiert und der Spieler wird in dem Fall dorthin
32 bewegt.
33
34
35BEMERKUNGEN
36===========
37
38 Zum Clonen von Raeumen sollten Virtual Compiler benutzt werden:
39 Wird in den erzeugten Objektnamen KEIN '#' verwendet, dann ist diese
40 Property nicht sinnvoll und wird nicht verwendet. Ein ordentlicher
41 VC kann Bewegen eines Spielers in dessen alten, nicht mehr existierenden
42 Raum oder einen Ersatzraum beim Aufwachen selbst loesen.
43
44
45BEISPIELE
46=========
47
48 // #1: geclonter Raum mit Ausweich-Aufwachraum: Klerus-Gilde
49 #include <properties.h>
50 inherit "/std/room";
51
52
53
54 void create() {
55 ::create();
56
57 SetProp(P_NETDEAD_INFO, "/gilden/klerus");
58 SetProp(P_LIGHT, 1);
59 }
60
61
62
63 // #2: komplexerer Beispielraum fuer P_NETDEAD_INFO-Funktionalitaet
64 // Siehe auch: /doc/beispiele/testobjekte/netdead_info_testraum.c
65 #include <properties.h>
66 inherit "/std/room";
67
68 void create() {
69 ::create();
70
71 if (clonep(this_object()))
72 // setze Informationen, die im Netztoten gespeichert werden sollen
73 Set(P_NETDEAD_INFO, random(5));
74 else
75 // Blueprint: hier kann man zu einem Cloneraum gehen
76 AddExit("cloneraum", #'create_room);
77
78 // Set-Method, um die Informationen aus P_NETDEAD_INFO beim Aufwachen
79 // in der Blueprint auswerten zu koennen
80 Set(P_NETDEAD_INFO, #'create_destiny, F_SET_METHOD);
81 SetProp(P_LIGHT, 1);
82 }
83
84
85
86 // Raum entfernen, normalerweise so KEINE GUTE IDEE!
87 void BecomesNetDead(object pl) {
88 call_out(#'remove, 30);
89 }
90
91 // erzeuge einen Cloneraum und bewege den Spieler dahin
92 int create_room(string dir) {
93 object dest = clone_object(object_name(this_object()));
94 this_player()->move(dest, M_NOCHECK);
95 return 1;
96 }
97
98
99
100 // Set-Method fuer P_NETDEAD_INFO: gibt Pfad zurueck
101 // benutze die Informationen aus dem jetzt aufwachenden Netztoten, um
102 // einen alternativen Aufwachraum zu ermitteln, da der Einschlafraum
103 // zerstoert ist
104 string create_destiny(mixed val) {
105 if (intp(val)) {
106 switch (val) {
107 case 0:
108 return "/d/ebene/room/PortVain/po_haf1";
109 case 1:
110 return "/gilden/klerus";
111 case 2:
112 return "/gilden/karate";
113 default:
MG Mud User88f12472016-06-24 23:31:02 +0200114 }
Zesstra953f9972017-02-18 15:37:36 +0100115 return "/d/ebene/room/waldweg4";
MG Mud User88f12472016-06-24 23:31:02 +0200116 }
Zesstra953f9972017-02-18 15:37:36 +0100117 }
MG Mud User88f12472016-06-24 23:31:02 +0200118
1192. Jan 2012 Gloinson