Währungen

Bild: Goldmünzen

Im Efferdland gibt es als Magier die Möglichkeit, verschiedene Währungen zu benutzen. Die STD-Währung im Efferdland ist der Kreuzer. Wenn man diesen benutzen will, muss man nichts machen. Für andere Währungen gilt: man muss sie explizit in Läden und Kneipen angeben.

Die Property für Währungen ist: P_CURRENCY, definiert in /sys/bank.h

Die gültigen Währungen sind ebenfalls in /sys/bank.h definiert. Momentan sind angeschlossen:

Weitere Währungen sind in Planung und können auch von jedem Magier beantragt werden (Bei It oder Torin).

Läden und Kneipen stellt man wie folgt auf eine neue Währung um:

#inherit "/std/laden"; // Für Kneipen: inherit /std/kneipe;

protected void create() {
  SetProp(P_CURRENCY,RUBEL); // Fortan nimmt der Laden / 
                             // die Kneipe nur noch Rubel an.
}

Möchte man feststellen, wie viel ein Spieler von einer bestimmten Währung bei sich hat, dann funktioniert das wie folgt:

int val;

// Heraus finden, wieviele Draktaler ein Spieler dabei hat:
val = this_player()->QueryMoney(DRAKTALER);

// Für Kreuzer genügt ein QueryMoney()

Um den Spieler nun seine Draktaler abzunehmen, benutzt man folgende Syntax:

this_player()->AddMoney(-val,DRAKTALER);

// Für Kreuzer genügt ein AddMoney(-val)

Man kann dem Spieler natürlich auch Geld einer bestimmten Währung geben:

// Gibt dem Spieler 1000 Dinare
this_player()->AddMoney(1000,DINARE);

// Für Kreuzer genügt ein AddMoney(1000);

Möchte man wissen, wie viel einer Währung in einer anderen Währung wert ist, dann kann man die Funktion ChangeCurrency() aus /std/bank.c benutzen:

// ChangeCurreny(menge, Quell Währung, Ziel Währung);

int x;

x = ChangeCurrency(1000,DRAKTALER,RUBEL);

// 1000 Draktaler werden in Rubel umgerechnet.

Mit dem obigen Beispielen könnte man z.B. einen Geldwechsler schreiben… Bitte aber wie immer vorher Prüfen: hat der Spieler überhaupt das Geld, das ich ihm abnehmen möchte? Kann er das Geld, das ich im geben möchte, überhaupt noch tragen? Ist der Spieler vielleicht sogar ein Geist? (…)

LG, It@Efferdland