UseHands()
**********


FUNKTION
========

   public varargs int UseHands(object ob, int num)


DEFINIERT IN
============

   /std/living/combat.c


ARGUMENTE
=========

   ob  - das Objekt, das die Haende belegen soll
   num - die Anzahl der zu belegenden Haende


RUECKGABEWERT
=============

   1, fuer Erfolg
   0, sonst


BESCHREIBUNG
============

   Belegt, wenn moeglich Haende eines Livings durch ein bestimmtes
   Objekt. Wenn die Anzahl der freien Haende (P_MAX_HANDS-P_USED_HANDS)
   kleiner ist als "num", dann schlaegt diese Belegung fehl.


BEISPIELE
=========

   > halte seil fest
   ...
   this_player()->UseHands(this_object(),2);
   ...

   > lasse seil los
   ...
   this_player()->FreeHands(this_object());
   ...


SIEHE AUCH
==========

   P_HANDS, P_HANDS_USED_BY
   P_MAX_HANDS, P_USED_HANDS, P_FREE_HANDS
   FreeHands

1.Feb.2004 Gloinson
