Posts: 1'319
Threads: 75
Joined: May 2009
Reputation:
33
Abend,
Mit meinem Browsergame bin ich jetzt schon ziemlich weit... Mein Freund kann Js, ich php, jetzt wollte ich fragen, da wir mit den Rohstoffen nicht weiterkommen...
Holz, Stein, Eisen, wir wollten in eine Array die Produktion pro Stunde der jeweiligen Stufe einspeichern. Ich denke, mit js sollte es dann funktionieren, die Rohstoffe irgendwie gutzuschreiben (also pro Stunde die anzahl)
Aber wir kommen nicht weiter. Wie macht ihr das? Ich brauch jetzt kein script, aber auf welche Art funktioniert es am besten?!
Grüße
knollenmax
Posts: 569
Threads: 25
Joined: Jun 2008
Reputation:
21
Ich denke mit Js ist es schwer dies zu realisieren, dass die Rohstoffe sich erhöhen, da die Seite dann immer geöffnet sein muss, damit das Js ausgeführt wird
Posts: 531
Threads: 20
Joined: May 2008
Reputation:
15
Sowas ist zwar mit JS mögich aber vollkommen sinnfrei, da die Manipulationsmögöichkeiten dadurch enorm steigen. Solche sachen sollten immer Serverseitig laufen und das Hochzählen der Rohstoffe mit JS reinweg zur Anzeige dienen.
Posts: 3'459
Threads: 57
Joined: Apr 2009
Reputation:
115
Mit PHP würde ich die Zeit irgendwo speichern (natürlich mit time() nicht im vollen Datum), vielleicht in eine Datenbank.
Und immer wenn man die Seite lädt, dann wird abgefragt, wie viel Sekunden von der abgespeicherten Zeit vergangen sind.
Und wenn dann 3600 Sekunden (1 Stunde) vergangen ist, werden die Rohstoffe gutgeschrieben.
Klar, wenn man mehrere Stunden die Seite nicht neu geladen hat, dann macht man die jetzige Zeit minus die gespeicherte Zeit.
Das Ergebnis geteilt durch 3600 Sekunden und dann hast du die Anzahl von Stunden die vergangen sind.
Nun nurnoch auf keine KOMMASTELLE runden. Und dann kommt z.B. 4 raus, so muss man dem User seine Rohstoffe 4x geben.
So würde ich das machen^^
Manchmal denke ich:
Posts: 1'319
Threads: 75
Joined: May 2009
Reputation:
33
so hab ichs schon probiert... das mit dem neu laden ist nicht schlecht... aber ich finde, es wäre besser, wenn man wirklich alle Stunden die Ress bekommt... aber so gehts auch
Posts: 531
Threads: 20
Joined: May 2008
Reputation:
15
Der Ansatz ist schon nicht schlecht aber Lückenhaft. Du musst ganz einfach erstmal die Rohstoffe pro Stunde in Rohstoffe pro sekunde ausrechnen also (Rohstoffzuwachs pro Stunde / 3600) und dann bei jedem Seitenaufruf die Zeit speichern und dann beim nächsten aufruf die Zeit in sekunden erreichnen die seit dem letzten aufruf vergangen ist und dann mal deine Rohstoffe pro Sekunde nehmen und schon hast du den wert wie viele Rohstoffe seit dem letzten Seitenaufrunf hinzugekommen sind.
Posts: 3'459
Threads: 57
Joined: Apr 2009
Reputation:
115
(02.04.2010, 09:26)agent47 Wrote: Der Ansatz ist schon nicht schlecht aber Lückenhaft. Du musst ganz einfach erstmal die Rohstoffe pro Stunde in Rohstoffe pro sekunde ausrechnen also (Rohstoffzuwachs pro Stunde / 3600) und dann bei jedem Seitenaufruf die Zeit speichern und dann beim nächsten aufruf die Zeit in sekunden erreichnen die seit dem letzten aufruf vergangen ist und dann mal deine Rohstoffe pro Sekunde nehmen und schon hast du den wert wie viele Rohstoffe seit dem letzten Seitenaufrunf hinzugekommen sind.
Genauso hab ich mir das auch gedacht.
Manchmal denke ich:
Posts: 1'946
Threads: 58
Joined: Aug 2008
Reputation:
82
(This post was last modified: 02.04.2010, 14:30 by Milu2K.)
02.04.2010, 14:26
Naja eigentlich ist es ganz einfach....
In MySQL habt ihr ne Zeile die nennt sich "last_ress_reload" oder so...
PHP Code: $sql = mysql_query("SELECT * FROM villages WHERE id = ".$villid); $village = mysql_fetch_assoc($sql); // Queries und so
$last_ress_reload = $village["last_ress_reload"]; // Last ress reload zeigt an wann zum letzten mal die Rohstoffe neu berechnet wurden.
$ress_per_h = "5000"; // Rohstoffe in der Stunde
$end_ress = round($village["rohstoffart"] + ($ress_per_h * $config["speed"] / 60 / 60 * (time() - $last_ress_reload))); // Die "Formel"
mysql_query("UPDATE villages SET rohstoffart = $end_ress WHERE id = ".$villid); // Rohstoffe eintragen mysql_query("UPDATE villages SET last_ress_reload = '".time()."' WHERE id = ".$villid); // Time() Eintragen
MfG milos
✝ RiP ✝
Weiter geht's
Posts: 3'459
Threads: 57
Joined: Apr 2009
Reputation:
115
(This post was last modified: 02.04.2010, 14:59 by Yannici.)
02.04.2010, 14:58
Und wenn er den "Speed" nicht eingestellt ist, dann ist die GROßE Formel anders.
auch geht das so:
PHP Code: $end_ress = round(time() - $last_ress_reload / 3600 * $ress_per_h);
mysql_query("UPDATE villages SET rohstoffart = rohstoffart + $end_ress WHERE id = '".$villid."'");
Glaub ich xD
Manchmal denke ich:
Posts: 1'946
Threads: 58
Joined: Aug 2008
Reputation:
82
(This post was last modified: 04.04.2010, 11:09 by Milu2K.)
04.04.2010, 11:08
(02.04.2010, 14:58)Yannici Wrote: Und wenn er den "Speed" nicht eingestellt ist, dann ist die GROßE Formel anders.
auch geht das so:
PHP Code: $end_ress = round(time() - $last_ress_reload / 3600 * $ress_per_h);
mysql_query("UPDATE villages SET rohstoffart = rohstoffart + $end_ress WHERE id = '".$villid."'");
Glaub ich xD Ne die Formel bei dir ist falsch...
Die sollte so sein
PHP Code: $end_ress = round((time() - $last_ress_reload) * ($ress_per_h / 3600);
Meine Formel is aber Cool ^^
✝ RiP ✝
Weiter geht's
Posts: 98
Threads: 6
Joined: Mar 2010
Reputation:
-6
danke das hat mir auch sehr geholfen!
ps. ich mach auch gtrad nen BG
Posts: 98
Threads: 6
Joined: Mar 2010
Reputation:
-6
(This post was last modified: 11.06.2010, 19:12 by Mr. JonnyBob.)
11.06.2010, 18:44
PHP Code: <?php $wasser = $village["Wasser"]; $holz = $village["Holz"]; $eisen = $village["Eisen"]; $id = $_COOKIE['id']; $time = TIME(); $sql = mysqli_query($db, "SELECT * FROM Benutzer WHERE id = ".$id); $village = mysqli_fetch_assoc($sql); $last_ress_reload = $village["last_ress_reload"]; // Last ress reload zeigt an wann zum letzten mal die Rohstoffe neu berechnet wurden. $ress_per_sec_wasser = "0.6"; // Wasser in der Stunde $ress_per_sec_holz = "0.6"; // Holz in der Stunde $ress_per_sec_eisen = "0.4"; // Eisen in der Stunde $end_ress_wasser = round($village["Wasser"] + (time() - $last_ress_reload) * $ress_per_sec_wasser); // Die "Formel" für Wasser mysqli_query($db, "UPDATE Benutzer SET Wasser = $end_ress_wasser WHERE id = ".$id); // Wasser eintragen $end_ress_holz = round($village["holz"] + (time() - $last_ress_reload) * $ress_per_sec_holz); // Die "Formel" für Holz mysqli_query($db, "UPDATE Benutzer SET Holz = $end_ress_holz WHERE id = ".$id); // Holz eintragen $end_ress_eisen = round($village["eisen"] + (time() - $last_ress_reload) * $ress_per_sec_eisen); // Die "Formel" für Eisen mysqli_query($db, "UPDATE Benutzer SET Eisen = $end_ress_eisen WHERE id = ".$id); // Eisen eintragen mysqli_query($db, "UPDATE Benutzer SET last_ress_reload = '".time()."' WHERE id = ".$id); // Time() Eintragen ?>
so... das ist mein code!
wen ich die seite neulade und dann in die mysql datenbank schaue wird eisen und holz weniger oder bleibt gleich und wasser (so wies sein soll mehr)!
ich will mit jetzt nicht länger den kopf darüber zerbrechen und frage euch deswegen um hilfe!
wen ich es per h nicht per sec mache ist es genau das gleiche!
PHP Code: $ress_per_h_wasser = "6000"; // Wasser in der Stunde $ress_per_h_holz = "6000"; // Holz in der Stunde $ress_per_h_eisen = "6000"; // Eisen in der Stunde $end_ress_wasser = round($village["Wasser"] + (time() - $last_ress_reload) * ($ress_per_h_wasser / 3600)); // Die "Formel" für Wasser mysqli_query($db, "UPDATE Benutzer SET Wasser = $end_ress_wasser WHERE id = ".$id); // Wasser eintragen $end_ress_holz = round($village["holz"] + (time() - $last_ress_reload) * ($ress_per_h_holz / 3600)); // Die "Formel" für Holz mysqli_query($db, "UPDATE Benutzer SET Holz = $end_ress_holz WHERE id = ".$id); // Holz eintragen $end_ress_eisen = round($village["eisen"] + (time() - $last_ress_reload) * ($ress_per_h_eisen / 3600)); // Die "Formel" für Eisen mysqli_query($db, "UPDATE Benutzer SET Eisen = $end_ress_eisen WHERE id = ".$id); // Eisen eintragen mysqli_query($db, "UPDATE Benutzer SET last_ress_reload = '".time()."' WHERE id = ".$id); // Time() Eintragen
[/code]
Posts: 24
Threads: 3
Joined: Apr 2009
Reputation:
1
php ist caseinsesitive bei assosiierten indizes vermuztlich must du eisen und holz einfach groß schreiben
Posts: 98
Threads: 6
Joined: Mar 2010
Reputation:
-6
|