Quote:
Originally Posted by .Nexitis
Der Preis soll ja nicht 0 sein sondern sich mit jedem Kauf um 20% erhöhen.
|
Genau darum ging es MrDami123 auch.
Wenn das alles von JS gemacht wird, was hindert dann den Spieler daran einfach daran die Kosten zu löschen oder sich unendlich viel Geld zu geben? Nichts und daran kannst du mit JS auch nichts ändern.
Damit das "sicher" ist, musst du das alles auf dem Server erledigen, also wahrscheinlich mit PHP. Dort kannst du dann kontrollieren wie viel Geld hat er, was kostet Stufe X usw. Der Spieler kann die Werte da nicht manupilieren.
Wenn die Spieler nicht schummeln können sollen, dann kannst du das aktuelle Problem eigentlich vergessen, weil die Preisberechnung und das Abziehen des Geldes dann ohnehin auf dem Server geschehen muss.
###
So, jetzt noch zu deinem Problem.
Der einzige Fehler den ich im ersten Code finden konnte, ist das Reduzieren des Geldes (die evos sind doch das Geld, oder?). Wenn du immer nur 10 abziehst wirst du nie sehen das sich am Preis was geändert hat.
Code:
evoAmount = evoAmount - storyteller.Cost;
Bei deinem zweiten Code ist auch ein Fehler, wie du damit eine Erhöhung des Preises schaffst ist mir ein Rätsel.
Code:
// Reduziert den Preis auf 20% seines vorherigen Wertes
storyteller.Cost = storyteller.Cost / 100 * 20;
// Erhöht den Preis um 20% seines vorherigen Wertes
storyteller.Cost = storyteller.Cost / 100 * 120;
storyteller.Cost = storyteller.Cost * 1.2;
Deine andere Probleme konnte ich so nicht reproduzieren:
Edit:
Jetzt verstehe ich, wie du beim zweiten Versuch die Evos ins negative bekommen hast. Das konnte ich nicht reproduzieren, weil ich den auslösenden Fehler nicht habe. Wenn du die Kosten von 10 auf 2, 0.4, 0.08 reduzierst, dann wird die Bedingung jedes mal durch einen geringeren Wert wahr. Wenn du dann jedes mal 10 Evos abziehst, dann ist es nur logisch, dass du ins negative rutscht.
Wahrscheinlich hast du die Folgen dieses Fehlers falsch interpretiert und glaubst deshalb, dass sich der Preis erhöht hat. Du dachtest der Preis muss sich erhöht haben, weil du die Evos ins negative bekommen hast. Deshalb glaubst du, dass die Bedingung fehlerhaft ist und suchst den Fehler nicht bei der Kostenberechnung.