blob: aa9666713cdfcf515189dd9408f40cbb4ff95241 [file] [log] [blame]
Zesstra953f9972017-02-18 15:37:36 +01001
MG Mud User88f12472016-06-24 23:31:02 +02002check_and_update_timed_key()
Zesstra953f9972017-02-18 15:37:36 +01003****************************
MG Mud User88f12472016-06-24 23:31:02 +02004
MG Mud User88f12472016-06-24 23:31:02 +02005
Zesstra953f9972017-02-18 15:37:36 +01006FUNKTION
7========
MG Mud User88f12472016-06-24 23:31:02 +02008
Zesstra953f9972017-02-18 15:37:36 +01009 public int check_and_update_timed_key(int duration, string key)
MG Mud User88f12472016-06-24 23:31:02 +020010
MG Mud User88f12472016-06-24 23:31:02 +020011
Zesstra953f9972017-02-18 15:37:36 +010012DEFINIERT IN
13============
MG Mud User88f12472016-06-24 23:31:02 +020014
Zesstra953f9972017-02-18 15:37:36 +010015 /std/living/life.c
MG Mud User88f12472016-06-24 23:31:02 +020016
MG Mud User88f12472016-06-24 23:31:02 +020017
Zesstra953f9972017-02-18 15:37:36 +010018ARGUMENTE
19=========
MG Mud User88f12472016-06-24 23:31:02 +020020
Zesstra953f9972017-02-18 15:37:36 +010021 int duration: In wieviel Sekunden wird <key> wieder freigebeben,
22 (z.B. wann kann der Spieler an dieser Stelle eine neue
23 Heilung bekommen).
24 string key : Eindeutiger Name, wird zusammen mit <duration>
25 gespeichert.
MG Mud User88f12472016-06-24 23:31:02 +020026
MG Mud User88f12472016-06-24 23:31:02 +020027
Zesstra953f9972017-02-18 15:37:36 +010028BESCHREIBUNG
29============
MG Mud User88f12472016-06-24 23:31:02 +020030
Zesstra953f9972017-02-18 15:37:36 +010031 Diese Funktion hat die Aufgabe, Zeitsperren verschiedenster Art
32 einfach zu ermoeglichen (z.B. die Realisierung charakter-abhaengiger
33 Heilstellen u.ae.).
MG Mud User88f12472016-06-24 23:31:02 +020034
Zesstra953f9972017-02-18 15:37:36 +010035 <key> muss eindeutig sein, am besten verwendet man den eigenen
36 Magiernamen (und ggf. nen Gebietsnamen) als Teil des Strings.
MG Mud User88f12472016-06-24 23:31:02 +020037
Zesstra953f9972017-02-18 15:37:36 +010038 Die Funktion ist definiert in /std/living/life.c. Somit funktioniert
39 sie auch bei NPCs. Die Daten werden in P_TIMING_MAP gespeichert, sind
40 also gegen "ende" resistent. (werden allerdings nach Ablauf ggf.
41 'aufgeraeumt')
42
43 Das Mapping P_TIMING_MAP ist NICHT zur Abfrage und / oder Manipulation
44 'per Hand' vorgesehen.
45
46
47RUeCKGABEWERT
48=============
49
50 0 Irgendein Fehler im Aufruf, evtl. existiert die Funktion (noch)
51 nicht im jew. Objekt.
52
53 -1 Alles okay. Neuer Zeitpunkt wird automatisch gespeichert. In
54 diesem Fall darf der Spieler geheilt werden.
55
56 >0 Key noch gesperrt, in dem Fall darf also nicht geheilt werden.
57 Der Rueckgabewert ist der Zeitpunkt, ab dem <key> wieder frei ist,
58 laesst sich daher dazu nutzen, um dem Spieler einen Anhaltspunkt
59 zu geben, wann er die Stelle wieder nutzen kann, etwa:
60
61 "Die Schale ist erst halb voll, Du musst noch etwas warten."
62
63
64BEISPIELE
65=========
66
67 Eine Heilstelle soll jedem Spieler alle 5min zur Verfuegung stehen:
68
69 AddCmd(({"trink","trinke"}),"trink_cmd");
70
71 int trink_cmd(string str){
72 ...
73 ...
74 /*
75 Der key sollte natuerlich eine etwas eindeutigere Kennzeichnung
76 wie etwa "tilly_trinken" bekommen, auch wenn er durch einen
77 anderen (gleichnamigen) nicht ueberschrieben werden kann.
78
79 Trifft diese Abfrage hier zu, kann dem Spieler Heilung o.ae. zu-
80 gefuehrt werden. Die neue Zeit (duration) wird automatisch gesetzt.
81 */
82 if(this_player()->check_and_update_timed_key(300,"jof_trinken")==-1){
83 if(this_player()->drink_soft(2)){
84 this_player()->heal_self(50);
85 write("Du fuehlst Dich sichtlich erfrischt.\n");
86 return 1;
MG Mud User88f12472016-06-24 23:31:02 +020087 }
Zesstra953f9972017-02-18 15:37:36 +010088 else{
89 write("Du hast schon zuviel getrunken.\n");
90 return 1;
91 }
92 }
93 else {
94 write("Du trinkst und denkst . o O (Hmm, nicht schlecht).\n");
95 return 1;
96 }
97 return 0;
98 }
MG Mud User88f12472016-06-24 23:31:02 +020099
Zesstra953f9972017-02-18 15:37:36 +0100100BEMERKUNGEN:
101 Auch bei dieser Funktion ist darauf zu achten, dass Properties wie
102 P_FOOD, P_DRINK und P_ALCOHOL beruecksichtigt werden. Heilstellen
103 sind dem zustaendigen Magier fuer Heilungs-Balance zu melden. Wer
104 dies momentan ist, kann dem Mailalias heilungs_balance entnommen
105 werden.
MG Mud User88f12472016-06-24 23:31:02 +0200106
MG Mud User88f12472016-06-24 23:31:02 +0200107
Zesstra953f9972017-02-18 15:37:36 +0100108SIEHE AUCH
109==========
110
111 check_timed_key, eat_food, drink_alcohol, drink_soft, heal_self,
112 restore_spell_points, reduce_hit_point
113
MG Mud User88f12472016-06-24 23:31:02 +020011408.01.2012, Zesstra