Berechnung von "Werten"

Hallo! :wink:

Ich versuche im Mom weiter an meinem Browsergame zu arbeiten und habe im Mom einen komischen Denk-/Programmierfehler drinne und weiss nicht weiter. Wäre euch echt dankbar!

Also es sollen verschiedene Werte nach jedem Reload (F5) neu berechnet werden. Wir nehmen mal an, dass der Spieler 500 Gold die Stunde bekommen soll => 8,3334/Minute => 0,138889/Sekunde

Ich habe mir das folgendermaßen gedacht:

$newTime = time(); (Beim ersten Aufruf)
$oldTime = time(); (Beim zweiten Aufruf)

$money = ($oldTime - $newTime) * 0,138889

Das wäre doch soweit richtig? Ich weiss dannach nämlich nicht, wie ich dem Browser mitteilen soll, dass er die $newTime und $oldTime immer neu berechnen muss … HILFE :wink:

Ich seh keine wirkliche Frage.

Ich glaube aber auch, dir ist da ein Denkfehler unterlaufen.

$money = $money + (($oldTime - $newTime) * 0,138889)

Das bisherige Geld muss ja schon dazu addiert werden.

Und zu gucken, wann der erste Aufruf war, kannst du mit einem Cookie machen. Das liest du dann aus und verrechnest es mit dem zweiten Aufruf.

“Ich weiss dannach nämlich nicht, wie ich dem Browser mitteilen soll, dass er die $newTime und $oldTime immer neu berechnen muss” - das ist meine Frage :wink:

Also ich meine, wie soll ich die beiden Variablen $newTime und $oldTime jeweils deffinieren soll. Ich “simuliere” mal den ersten Seitenaufruf, damit ihr das besser nachvollziehen könnte.

  1. Aufruf

$newTime = time(); (12131415)
$oldTime = time(); (12131415)

Er definiert das ja gleich … aber ich will, dass er die beiden Variablen beim unterschiedlichem Aufruf definieren … und nicht, dass die beiden Werte identisch sind.

Moin,

du könntest du z.B. die aktuelle Zeit des Seitenaufrufs in einem COOKIE oder in einer SESSION speichern und der Wert ist dann immer die alte Zeit, da die neue ja beim Seitenaufruf berechnet wird.

MfG
myPages

auf jeden Fall in einer SESSION…wenn du es in einem COOKIE speicherst sind wir alle REICH!!!

Ich hab auch eine Frage: Soll das Geld immer ausgegeben werden, oder nur wenn der User “online” ist?

Moin,

@michi7x7: Stimmt einen Keks kann man ja löschen als gewiefter I-Net-Nutzer :wink:

Bei einem Browsergame soll wohl die ganze Zeit das Geld anwachsen, anders würde das keinen Sinn ergeben.

MfG
myPages

Das Geld soll auf zwei Weisen wachsen:

Wenn der User online ist - also bei jedem Aufruf wird sein Geld aktualisiert - ABER nur bei ihm!

Per Cron-Job werden alle 5 Minuten die Ressourcen der anderer Spieler aktualisiert

Das Aktualisieren aller Spieler (es werden ja mehr als 100) würde den Server zu sehr auslasten, wenn ich die Rohstoffe aller Spieler in Echtzeit berechnen lassen würde. Also werde ich die beiden oben genannten Möglichkeiten paralell nutzen - oder habt ihr eine bessere Idee?

P.S. Ok, das mit den Sessions klingt schonmal nicht schlecht - aber ich kann das immer noch nicht so ganz nachvollziehen. Wie meint ihr das denn? Was geschieht beim ersten Aufruf? Was beim Zweiten? Was beim n-ten?

Das Problem mit ‘online’ liegt ja darin, dies festzustellen,
insbesondere wann er nach einem login nicht mehr online ist.
Ansonsten speichert man da einfach die Unix-Zeit und
rechnet das Geld im Bedarfsfalle aus.

Ebenso geht man bei den anderen vor, es wird nur im
Bedarfsfalle aktualisiert und abgespeichert, einschließlich der
Zeit der Aktualisierung, da braucht man dann auch keinen
cron-job.

Wenn es keine aktuellen Aktivitäten gibt, muß man ja auch
nichts ändern, wenn es gar nicht zu dem Zeitpunkt wirklich
gebraucht wird ;o)

Beim ersten Aufruf geschieht folgendes:
in die Variable $_SESSION[‘letzter_aufruf’] wird die aktuelle Zeit gespeichert
2. aufruf:
du fragst einfach den Wert von $_SESSION[‘letzter_aufruf’] ab, dann hast du die zwei Zeiten und kannst das Gold berechnen.
Natürlich musst du jeden Aufruf die aktuelle Zeit in der Variablen speichern.

Und damit das ganze geht, musst du (vll hast du das ja eh schon) zu Beginn des Scriptes die Funktion

aufrufen, damit die SESSION Variablen zur Verfügung stehen.