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