PROPERTY:
P_GXP
DEFINIERT ALS:
"gxp"
DEFINIERT IN:
/sys/living/life.h
WERTE:
int
BESCHREIBUNG:
* Wenn gesetzt hat der Spieler mehr als 2,1 Mrd Erfahrungspunkte.
* Wenn gesetzt ist dies die Zahl der Milliarden XP des Spielers.
* Nie gesetzt/nicht ausgewertet in NPC.
* Soll in Spielern nie manuell gesetzt werden.
Integer koennen nur Zahlen bis etwa 2,1 Mrd speichern. Solange ein
Spieler weniger Punkte hat, wird die Anzahl seiner XP nur in
P_XP gespeichert.
Uebersteigt die Anzahl der Punkte den mit einem Integer darstellbaren
Bereich, so stehen in P_GXP die Milliarden und der Rest in P_XP:
Punkte des Spielers 733 324 827 193
| | | |
| +---+---+----> 324827193 in P_XP
|
+----------------> 733 in P_GXP
Punkte = 1 Mrd * P_GXP + P_XP
= _GXP_FACT_ * P_GXP + P_XP
Zum Aendern der (G)XP darf nur AddExp() verwendet werden, welches
Ueberlaufe beruecksichtigt etc!
Wer genau aufgepasst hat, hat bemerkt, dass P_GXP niemals 1 sein
kann. Der Spieler haette dann einen XP Wert von 1 bis 1.9 Mrd;
dieser ist mit einem einzelnen Integer darstellbar und P_GXP wird
noch nicht benutzt.
HINWEISE:
Es ist also nicht ganz so einfach, die Erfahrungspunkte eines Spielers
abzufragen, um sie mit einem Wert zu vergleichen. Am einfachsten
ist die Verwendung von QueryExpFloat() und Fliesskommazahlen.
Wenn man einen Integer y vergleichen will, muss man immer beide
Eigenschaften checken:
if (pl->QueryProp(P_GXP) < 1 && pl->QueryProp(P_XP) < y) ...
SIEHE AUCH:
P_XP, AddExp(L), QueryExpStr(L), QueryExpFloat(L), P_HP, P_SP
|