WithDraw()
FUNKTION:
     int WithDraw(int amount);

DEFINIERT IN:
     /p/daemon/zentralbank.c

ARGUMENTE:
     int amount	- angeforderte Geldmenge

BESCHREIBUNG:
     Damit wird bei der Zentralbank eine bestimmte Menge Geld angefordert.
     Der Rueckgabewert haengt vom Kassenstand der Zentralbank ab und ist
     entweder amount oder amount/3.

RUeCKGABEWERT:
     Menge des bei der Zentralbank "abgehobenen" Geldes.

BEISPIELE:
     #include <bank.h>
     ...
     if(ZENTRALBANK->WithDraw(50000)<50000)
      write(break_string(
       "Leider koennen wir ihnen keinen vollen Zuschuss zu ihrem Hotelbau "
       "geben!",
       "Der Beamte sagt: ",78));
      say(break_string(
       "Leider koennen wir ihnen keinen vollen Zuschuss zu ihrem Hotelbau "
       "geben!",
       "Der Beamte sagt zu "+this_player()->name(WEM)+": ",78));
      ...

BEMERKUNGEN:
     Unsere Zentralbank ist korrupt, vor allem dadurch, dass in Laeden und
     an anderen Stellen Geld erzeugt wird.

SIEHE AUCH:
     Geldhandling:	AddMoney(L), QueryMoney(L)
     Zentralbank:	PayIn(L), _query_current_money(L)
     Sonstiges:		/items/money.c, /sys/bank.h

27. Apr 2004 Gloinson
