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