anpera.net

anpera.net

experimental server @home
Aktuelle Zeit: Mi 27 Mär, 2019 03:17

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Do 17 Jun, 2010 19:50 
Offline
Eingeweihter
Eingeweihter
Benutzeravatar

Registriert: Mo 01 Sep, 2008 10:29
Beiträge: 99
Wohnort: Niedersachsen
Geschlecht: Männlich
LoGD: http://www.sotbd.de/about.php?op=source
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 ?


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do 17 Jun, 2010 20:07 
Offline
Freak
Freak
Benutzeravatar

Registriert: Sa 16 Jul, 2005 22:40
Beiträge: 693
Wohnort: /var/server/home/castle
Geschlecht: Männlich
LoGD: http://www.kokoto.de/
Skype: Apfelschokowodkakekskuchen
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


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do 17 Jun, 2010 20:25 
Offline
Eingeweihter
Eingeweihter
Benutzeravatar

Registriert: Mo 01 Sep, 2008 10:29
Beiträge: 99
Wohnort: Niedersachsen
Geschlecht: Männlich
LoGD: http://www.sotbd.de/about.php?op=source
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


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do 17 Jun, 2010 21:35 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3903
Wohnort: Basel
Geschlecht: Männlich
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.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do 17 Jun, 2010 22:08 
Offline
Freak
Freak

Registriert: So 30 Okt, 2005 17:48
Beiträge: 1408
Wohnort: PB
Geschlecht: Männlich
LoGD: http://dav.blood-reaver.de/lotgd/
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

_________________
Mehr oder minder inaktiv


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen
Du darfst keine Antworten zu Themen in diesem Forum erstellen
Du darfst deine Beiträge in diesem Forum nicht ändern
Du darfst deine Beiträge in diesem Forum nicht löschen
Du darfst keine Dateianhänge in diesem Forum erstellen

Suche nach:
Gehe zu:  
POWERED_BY
Deutsche Übersetzung durch phpBB.de
anpera.net - Impressum