PayIn()
FUNKTION:
     varargs void PayIn(int amount, int percent);

DEFINIERT IN:
     /p/daemon/zentralbank.c

ARGUMENTE:
     int amount	-	einzuzahlender Betrag
     int percent -	Bewertungsprozentsatz

BESCHREIBUNG:
     Es wird Brutto amount Geld in die Bank eingezahlt. Der Prozentsatz legt
     fest, wieviel tatsaechlich gutgeschrieben wird:
     Gutschrift = amount*percent/100

     Wird percent nicht angegeben, dann wird der derzeitige Bankbewertungs-
     massstab fuer Geld angenommen.

BEISPIELE:
     #include <bank.h>
     ...
     AddCmd("spende",#'action_spende,
	    "Was willst du spenden?");
     ...
     int action_spende(string str, extra *o) {
      int i;
      if(sscanf("%d muenze",i)==1 && i>0)
       if(this_player()->QueryMoney(i) && this_player()->AddMoney(-i)) {
        write("Du spendest "+i+" Muenzen.\n");
	say(this_player()->Name(WER)+" spendet "+i+" Muenzen.\n");
	ZENTRALBANK->PayIn(i);
	
       } else
        write("Soviel hast du nicht dabei!\n");
      ...

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:	WithDraw(L), _query_current_money(L)
     Sonstiges:		/items/money.c, /sys/bank.h

27. Apr 2004 Gloinson
