AddMoney()
==========

AddMoney(L)
-----------

FUNKTION
--------

     public int AddMoney(int amount);

DEFINIERT IN
------------

     /std/container/moneyhandler.c
     /std/living/moneyhandler.c
     /std/player/moneyhandler.c

ARGUMENTE
---------

     int amount
         Die zufuehrende oder abziehende Geldmenge

BESCHREIBUNG
------------

     Dem Spieler wird die in <amount> festgelegte Geldmenge abgezogen oder
     zugefuehrt.

RUeCKGABEWERT
-------------

     Technisch gesehen wird Geld mit entsprechendem <amount> erzeugt
     ("/items/money.c") und mittels "move" in den Spieler bewegt.  Das Ergebnis
     dieses "move"-Aufrufes wird hier uebergeben, z.B. 1 fuer OK.
     Die moeglichen Fehler-Konstanten sind in /sys/moving.h definiert, siehe
     auch Dokumentation zu "move".

BEMERKUNGEN
-----------

     <amount> kann sowohl positiv als auch negativ sein. Welche Auswirkungen
     beide Faelle haben, sollte klar sein. Doch sollte bei einem negativen
     <amount> vorher mittels QueryMoney() abgefragt werden, ob der Spieler
     auch ueber ausreichend Geld verfuegt.
     Wird dem Spieler Geld abgezogen, ist darauf zu achten, dieses in der
     Zentralbank einzuzahlen (s.a.:PayIn() ). 
     Verschafft man dem Spieler Geld aus dem Nichts, muss es vorher bei der
     Zentralbank abgebucht (WithDraw()) werden.

     Achtung: Kann der Spieler die in <amount> angebene Geldmenge nicht
	      tragen, werden ihm keine Muenzen in sein Inventar bewegt.  Die
	      Fehlermeldung erkennt man an dem Rueckgabewert ME_TOO_HEAVY.

     Im Gegensatz zu Spielern haben alle anderen Objekte (Raeume, NPC, etc.)
     standardmaessig keinen Moneyhandler. In diesem Fall muss in Lebewesen
     "/std/living/moneyhandler"
     und in nicht-Lebewesen
     "/std/container/moneyhandler"
     geerbt werden.

BEISPIELE
---------

.. code-block:: pike

     #include <bank.h>
     
     // gib ihm Geld
     int money = ZENTRALBANK->WithDraw(50);
     this_player()->AddMoney(money);

     // nimm ihm Geld
     if(this_player()->AddMoney(-50)==1)
     {
       write("Der Ork beklaut dich!\n");
       ZENTRALBANK->PayIn(50);
     }

SIEHE AUCH
----------
::

     Geldhandling:  QueryMoney(L)
     Zentralbank:   PayIn(L), WithDraw(L)
     Sonstiges:     move(L),
     /items/money.c
     /sys/moving.h, /std/container/moneyhandler.c
     /sys/money.h, /sys/bank.h 

18.02.2013, Zesstra

