Lpc Manpages

FUNKTION:
       public int update_timed_key(int duration, string key)
       
DEFINIERT IN:
       /std/living/life.c    

ARGUMENTE:
       int duration: In wieviel Sekunden wird <key> wieder freigebeben,
                     (z.B. wann kann der Spieler an dieser Stelle eine neue 
                     Heilung bekommen).
       string key  : Eindeutiger Name, wird zusammen mit <duration>
                     gespeichert.

BESCHREIBUNG:
       Diese Funktion hat die Aufgabe, Zeitsperren verschiedenster Art
       einfach zu ermoeglichen (z.B. die Realisierung charakter-abhaengiger
       Heilstellen u.ae.).

       <key> muss eindeutig sein, am besten verwendet man den eigenen
       Magiernamen (und ggf. nen Gebietsnamen) als Teil des Strings.

       Die Funktion ist definiert in /std/living/life.c. Somit funktioniert
       sie auch bei NPCs. Die Daten werden in P_TIMING_MAP gespeichert, sind
       also gegen "ende" resistent (werden allerdings nach Ablauf ggf.
       'aufgeraeumt').

       Das Mapping P_TIMING_MAP ist NICHT zur Abfrage und / oder Manipulation
       'per Hand' vorgesehen!

RUECKGABEWERT:
       0  Irgendein Fehler im Aufruf, evtl. existiert die Funktion (noch)
          nicht im jew. Objekt.

      -1  Alles okay. Neuer Zeitpunkt wird automatisch gespeichert. In
          diesem Fall darf der Spieler eine Aktion machen.

      >0  Key noch gesperrt, in dem Fall darf also nicht geheilt werden. 
          Der Rueckgabewert ist die Zeit in [s], ab dem <key> wieder frei ist.
          Dies laesst sich nutzen, um dem Spieler einen Anhaltspunkt zu geben,
          ab wann er diese Aktion wieder machen kann, z.B.:
            "Die Schale ist erst halb voll, Du musst noch etwas warten."

BEISPIEL:
       Jeder Spieler soll eine bestimmte Aktion alle 2 Min machen koennen:

       #define TP this_player()

       AddCmd(({"schau","schaue"}),"cmd_schau");

       int cmd_schau(string str)
        {
         ...
         // Eindeutigen Key waehlen!!!

         if ( TP->update_timed_key(120,"torin_vorhang_schauen") > 0 )
          {
           write("Jetzt lieber nicht, Du hoerst die Wachen noch fluestern!\n");
           return 1;
          }

         write("Es ist alles still. Du wagst es und schaust hinter dem "
               "Vorhang hervor.\n");
         ...

         return 1;
        }

BEMERKUNGEN: 
       Diese Funktion prueft und setzt lediglich, ob eine bestimmte Aktion
       von einem Spieler erledigt werden kann. Bei Heilstellen ist somit
       darauf zu achten, dass die Heilung im Nachhinein auch vollzogen wird,
       vorzugsweise mittels -> eat_food/drink_soft/buffer_hp/sp (s. Bsp. in
       "man check_timed_key").

SIEHE AUCH:
     Aehnlich:  check_timed_key
     Heilung:   consume, eat_food, drink_soft, drink_alcohol,
                restore_spell_points, restore_hit_points, 
                buffer_hp, buffer_sp, heal_self
     Enttanken: defuel_drink, defuel_food
     Props:     P_DRINK, P_FOOD, P_ALCOHOL, P_SP, P_HP,
                P_DEFUEL_TIME_DRINK
     Konzepte:  heilung, enttanken, food

----------------------------------------------------------------------------
01.10.17, Torin