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