FUNKTION:
static varargs
void DoPurchase(mixed *exch, object player, int deep)
IMPLEMENTIERT:
/std/trade.c
ARGUMENTE:
exch - Zweidimensionales Array aus Mappings von PayCash(L)
player - ein Spieler oder NPC
deep - (optional) noch nicht unterstuetzt: 0 setzen!
BESCHREIBUNG:
Transferiert Muenzen aus bzw. in den Spieler entsprechend 'exch'.
Das Array 'exch' entspricht dem Returnwert von PayCash.
Es werden keinerlei automatische Meldungen ausgegeben, siehe
Beispiel unten.
RÜCKGABEWERT:
Keiner.
BEMERKUNG:
Es ist darauf zu achten, dass DoPurchase(L) und PayCash(L) in
unmittelbarer Abfolge durchgefuehrt werden, damit sich zwischen-
zeitlich nicht die Geldmenge im Spieler wieder veraendern kann!
Diese Funktion ist nur ein 'Wrapper' auf die gleichnamige Funktion
im Coinmaster. Die passende Waehrung wird dabei in Abhaengigkeit
von P_CURRENCY automatisch gewaehlt. Wurde P_CURRENCY nicht gesetzt,
wird die Standardwaehrung der entsprechenden Region gewaehlt.
BEISPIEL:
inherit "trade";
#include <coineage.h>
#include <moving.h>
...
int verkaufen(string ding, int preis) {
mixed *kohle;
// kann der Spieler zahlen?
if (kohle = PayCash(this_player(), preis)) {
// clone das Ding
object ob = clone_object(ding);
// fuehre Bezahlung durch
DoPurchase(kohle, this_player());
// uebergib Ding oder leg es in den Raum
if (ob->move(this_player(), M_GET) < MOVE_OK) {
ob->move(environment(this_player()));
}
// gib Meldungen aus
if (!mappingp(kohle[1]) || !sizeof(kohle[1]))
write(break_string("Du bezahlst "+SpecCostStr(kohle[0])+"."));
else
write(break_string("Du bezahlst "+SpecCostStr(kohle[0])+
" und bekommst "+SpecCostStr(kohle[1])+" zurueck."));
return 1;
}
// else
write("Du hast zu wenig Geld.\n");
return 0;
}
SIEHE AUCH:
P_CURRENCY, FindTrader(L), PayCash(L), ExchangeValue(L),
MakePriceList(L), HeadLine(L), CostStr(L), SpecCostStr(L),
ParseCostStr(L), MakeValString(L), AddMoney(L), QueryMoney(L),
coinmaster(WL)
|