jQuery Preis mit jedem Kauf erhöhen

08/24/2015 19:32 .Nexitis#1
Hey und zwar schreib ich gerade einen Clicker und habe Probleme nach jedem Kauf den Preis zu erhöhen:

PHP Code:
$(document).ready(function() {
"use strict";
var 
evoAmount 0;
var 
storyteller = {
    
Amount0,
    
Cost10,
    
Increment1
};



/* Buy storytellers */
$('#storytellerBuy').click(function () {
    if (
evoAmount >= storyteller.Cost) {
        
evoAmount evoAmount 10;
        
storyteller.Amount++;
        
storyteller.Cost storyteller.Cost 200 100;
        
updateValues();
    }
});

}); 
Was mache ich falsch?

Mit
PHP Code:
 $('#storytellerBuy').click(function () {
    if (
evoAmount >= storyteller.Cost) {
        
evoAmount evoAmount 10;
        
storyteller.Amount++;
        
storyteller.Cost storyteller.Cost 100 20;
        
updateValues();
    }
}); 
Damit erhöht er zwar die Kosten aber wenn ich auf " Kaufen " klicke geht die Anzahl der "Evos" ins negative... was sie nicht sollte.
08/24/2015 20:27 xsrf#2
PHP Code:

evoAmount 
evoAmount 10
Sicher, dass das so sein soll?^^

Du ziehst bei jedem klick 10 Evos ab.

Ich denke mal, dass du die eher hinzufügen möchtest oder?
08/25/2015 06:14 .Nexitis#3
Quote:
Originally Posted by AMAZEN View Post
PHP Code:

evoAmount 
evoAmount 10
Sicher, dass das so sein soll?^^

Du ziehst bei jedem klick 10 Evos ab.

Ich denke mal, dass du die eher hinzufügen möchtest oder?
Das ist schon richtig so. Es gibt eine andere Funktion die einem mit jedem Klick 1 Evo gibt. Mit 10 Evos soll man das erste mal kaufen können und ab da an soll der Preis steigen.

grade herausgefunden das er nur ins negative springt wenn ich versuche eine Prozentzahl zu erzeugen. Also normale Zahlen 1-9 gehen aber / 100 * "Prozent" geht nicht, bzw. er springt ins negative.
---
PHP Code:
storyteller.Cost storyteller.Cost 100 20
PHP Code:
storyteller.Cost stryteller.Cost 10
08/25/2015 08:45 MrDami123#4
Wenn das ganze nur per JS auf der Seite integriert wird, dann kann man das einfach manipulieren und den Preis auf 0 setzen.
08/25/2015 09:50 phlinther1#5
PHP Code:
storyteller.Cost storyteller.Cost 100 20
Bei soetwas würde ich immer Klammern setzen, nur um ganz sicher zu gehen :D

PHP Code:
storyteller.Cost = (storyteller.Cost 100) * 20
08/25/2015 14:11 .Nexitis#6
Quote:
Originally Posted by MrDami123 View Post
Wenn das ganze nur per JS auf der Seite integriert wird, dann kann man das einfach manipulieren und den Preis auf 0 setzen.
Der Preis soll ja nicht 0 sein sondern sich mit jedem Kauf um 20% erhöhen.

Quote:
Originally Posted by phlinther1 View Post
PHP Code:
storyteller.Cost storyteller.Cost 100 20
Bei soetwas würde ich immer Klammern setzen, nur um ganz sicher zu gehen :D

PHP Code:
storyteller.Cost = (storyteller.Cost 100) * 20

Das mit den Klammern klappt nicht :/ Der erste Kauf klappt aber ab da an zieht er keine Evos mehr ab und man kann beliebig viele Evos kaufen ohne zu zahlen.
08/25/2015 19:39 ComputerBaer#7
Quote:
Originally Posted by .Nexitis View Post
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: [Only registered and activated users can see links. Click Here To Register...]

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.
08/27/2015 18:18 .Nexitis#8
Danke erstmal :) Ich habe das Problem gefixt indem ich Math.Round und .Cost *1.2 gemacht hab.

Zu deiner Sache mit der Sicherheit. Da es mein erster Clicker ist wollte ich kein großes Projekt draus machen. Spieler sollen spielen und wenn sie meinen das sie es "ercheaten" müssen dann sollen sie es halt tun :)