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