anpera.net
http://anpera.homeip.net/phpbb3/

Problem mit Setneway-Aktualisierung ?
http://anpera.homeip.net/phpbb3/viewtopic.php?f=25&t=5164
Seite 1 von 1

Autor:  Shaddar [ Do 17 Jun, 2010 19:50 ]
Betreff des Beitrags:  Problem mit Setneway-Aktualisierung ?

Guten Abend zusammen,

ich vermute einige können sich unter meinem Titel nicht gerade viel vorstellen, aber ich bin so ideenlos wenns darum geht.

Ich habe ein Problem, undzwar habe ich nach Anleitung meiner besseren Hälfte ein eigenes, einzigartiges Kindersystem für unseren Server gebastelt, dass nun seit Anfang der Woche online ist. Unser System nutzt mehrerer Felder in der Accounts-Tabelle, die Felder die hier von Bedeutung wären sin die folgenden:

- schwangerschaftsaktion (boolean)
- schwangerschaftstag (int)

Nun ist eso, dass die einzelnen Tage der Schwangerschaft nur einmal pro Systemnewday hochgezählt werden sollen und auch nur dann wenn die schwangere Frau gerade online ist. Das heißt das Feld "schwangerschaftsaktion" wird durch den Newday auf 1 gesetzt und der Tag hinzu gezählt.

Auzug aus newday.php
PHP:
if ($session['user']['schwanger']==1 && $session['user']['schwangerschaftsaktion']==0 && $session['user']['sex']==1) {
$session['user']['schwangerschaftsaktion'] = 1;
if ($session['user']['schwangerschaftstag']==30 && $session['user']['schwangerschaftsende']==0) {
} else {
$session['user']['schwangerschaftstag']++; }
[...]


Und wenn dann vom System aus ein neuer Tag anfängt, die setnewday.php also aufgerufen wird, läuft folgender Code ab:
PHP:
// Schwangerschaftsaktionen zurücksetzen
global $session;
$sql = "UPDATE accounts SET schwangerschaftsaktion=0";
db_query($sql);
$session['user']['schwangerschaftsaktion'] = 0;


Das Problem was allerdings besteht, es gibt Phasen wo das einfach nicht funktionieren will und der Wert der "schwangerschaftsaktion" weiterhin auf 1 bleibt, womit dann eben kein neuer Tag hinzu gezählt wird. Mein Schatz und eine andere Spielerin meinen, dass das vermehrt oder ausschließlich Auftritt wenn der Systemtag um 08:00 Uhr oder um 20:00 Uhr beginnt. Ich weiß ehrlich gesagt nicht weiter, auch diese Information für den Zeitraum hilft mir nicht wirklich weiter, aber vielleicht kann mir ja einer auf die Sprünge helfen wie ich das umgehen kann und die Tage dennoch korrekt berechnet werden ?

Autor:  Tidus [ Do 17 Jun, 2010 20:07 ]
Betreff des Beitrags:  Re: Problem mit Setneway-Aktualisierung ?

hmmm weis jetz nicht ob $session in setnewday vorhanden ist, müsste aber daher wäre ein global $session unnötig da die $session außer in funktionen immer da ist ;)

Wieso es nicht geht weis ich nicht, die lösung erscheint mir auch etwas komisch ehrlich gesagt ^^

wäre es nicht einfacher einfach beim Newday zu machen? dazu einfach noch die sache machen das nach dem wiederbeleben nicht als "neuer" tag zählt, und das wärs? oder kann bei euch jeder den "Neuen Tag" Knopf betätigen? :P

Autor:  Shaddar [ Do 17 Jun, 2010 20:25 ]
Betreff des Beitrags:  Re: Problem mit Setneway-Aktualisierung ?

Hm, ich habs sicherheitshalber mal reingemacht, da ich es in Funktionen gerne vergesse und mich dann immer wunder wieso das nicht geht bis ich mal drauf komme xD

Nein, das können nur wir Admins :D Und das wäre natürlich ne Möglichkeit das geschickt zu umgehen ..
Hm, ne Afrage in die Newday und beim Drachen das Feld in das Array eintragen *nachdenk*
Gut das wäre wohl ne wirkungsvolle Alternative wenn ichs nicht anders gelöst bekomme, aber ganz ehrlich, daran hab ich noch garnicht gedacht xD

Autor:  Eliwood [ Do 17 Jun, 2010 21:35 ]
Betreff des Beitrags:  Re: Problem mit Setneway-Aktualisierung ?

Die setnewday.php wird nur einmal pro neuer Tag eingebunden. Das heisst, dass dein Plan gar nicht funktionieren kann - es kann maximal nur eine Frau pro Spieltag mit ihrer Schwangerschaft fortschreiten.

Für das Problem gibt es zwei Lösungen - die, die Tidus vorgeschlagen hat, was den Nachteil hat, dass man die Wiederbelebungs-Neue-Tage speziell behandeln muss, was aber, soweit ich mich noch erinnere, bereits der Fall ist und nur an der richtigen Stelle ergänzt werden muss.

Die zweite Lösung wäre, in der setnewday einen allgemeinen Query auf die Datenbank loszulassen, die bei allen Frauen die Schwangerschaft hochzählt. Der Vorteil ist, dass man nicht eingeloggt sein muss, was realistischer ist (und weniger mühsam!) - der Nachteil ist, dass das ganze für den bekannten Transferbug anfällig ist.

Und während dem Schreiben ist mir noch eine dritte Lösung eingefallen - man könnte die Tage-seit-dem-letzten-einloggen zählen und diese Anzahl der Schwangerschaftsdauer dazuzählen.

Autor:  Auric [ Do 17 Jun, 2010 22:08 ]
Betreff des Beitrags:  Re: Problem mit Setneway-Aktualisierung ?

Eliwood hat geschrieben:
Die zweite Lösung wäre, in der setnewday einen allgemeinen Query auf die Datenbank loszulassen, die bei allen Frauen die Schwangerschaft hochzählt. Der Vorteil ist, dass man nicht eingeloggt sein muss, was realistischer ist (und weniger mühsam!) - der Nachteil ist, dass das ganze für den bekannten Transferbug anfällig ist.


Dürfte aber den Nachteil haben, dass auch mal nichts passieren kann, wenn ein möglicher setnewday nicht ausgelöst wird, etwa, weil bei zweistündigen Tagen zwischen 02:00 und 04:00 niemand ist.

Mit dem persönliche Newday fährst du wohl am einfachsten - Stichwort: "Stimmung Wiederbelebt"

Die Methode mit dem gespeicherten Datum ist sicherlich die Eleganteste - dafür müsste man nur einmal berechnen können, wie viele Tage seit Beginn der Schwangerschaft schon vergangen sind. Aber das ist auch ganz gut machbar.

Auric

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/