anpera.net

anpera.net

experimental server @home
Aktuelle Zeit: Sa 16 Feb, 2019 07:58

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: setnewday
BeitragVerfasst: Fr 01 Apr, 2011 16:11 
Offline
Profi
Profi

Registriert: Sa 15 Jan, 2011 23:15
Beiträge: 100
Hey

Serber ist noch immer off ;)

In der setnewday hab ich folgenden Code stehen

Code:
db_query("UPDATE `accounts` SET `osterei`='osterei+1' WHERE `osternaktiv`='1' AND WHERE `osterei`>='0'");
db_query("UPDATE `accounts` SET `osternaktiv`='2' WHERE `osternaktiv`='1' AND WHERE `osterei`='6'");
db_query("UPDATE `accounts` SET `osterei`='osterei+1' WHERE `osternaktiv`='2' AND WHERE `osterei`>='1'");
db_query("UPDATE `accounts` SET `osterei`='0' WHERE `osternaktiv`='2' AND WHERE `osterei`='12'");


Er wird aber nicht aufgerufen. Obwohl er sogar am Anfang der setnewday steht.

Bzw er wird vkll. aufgerufen. Es zählt aber in der DB nichts hoch O.o


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: setnewday
BeitragVerfasst: Fr 01 Apr, 2011 18:19 
Offline
Meister
Meister
Benutzeravatar

Registriert: Mo 05 Feb, 2007 12:33
Beiträge: 375
Wohnort: Hattingen
Geschlecht: Männlich
LoGD: http://www.alvion-logd.de/logd/
Ist vielleicht nur ein Spieler online, und der löst den setnewday aus?

Was passiert bei einem Klick, bzw. einem Schritt, im LogD? accounts wird aus der DB gelesen -> PHP-Script wird ausgeführt -> accounts wird gespeichert. Die Setnewday kommt ergo zwischen Laden und Speichern der accounts-Tabelle dran, und die Änderungen, welche die setnewday gemacht hat, werden wieder überschrieben. So wird es leider nicht funktionieren!

Normal würde ich so etwas in die newday.php einbauen, und dann mit $session['user'] arbeiten, anstatt mit DB-Querys. Allerdings wird der Code dann nur bei neuen Tagen greifen, die der Charakter auch erlebt, nicht wenn er offline ist. ;)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: setnewday
BeitragVerfasst: Fr 01 Apr, 2011 22:06 
Offline
Admin
Admin
Benutzeravatar

Registriert: Di 21 Jan, 2003 01:11
Beiträge: 1594
Wohnort: Haßfurt
Geschlecht: Männlich
LoGD: http://www.anpera.net/logd
Skype: anpera-net
Schau dir deine SQL-Abfragen nochmal durch. Da sind etliche Fehler drin.

Welchen Typ haben die Felder "osterei" und "osternaktiv" in der Datenbank? Varchar? Int?

Was genau willst du in die Felder schreiben, was soll es bewirken? Willst du einen Wert erhöhen, oder eine mathematische Formel in die Datenbank schreiben? Achte auf deine Anführungszeichen und passe den Befehl an den Typ der Datenfelder an.

Nach "AND" kommt kein "WHERE".

_________________
Praxis ist, wenn alles klappt aber keiner weiß warum. Theorie ist, wenn man weiß wie es geht, aber nichts klappt. Wir haben beides erfolgreich vereinigt: Bei uns klappt nichts und keiner weiß warum!

Neues Video: Marios freier Tag in Second Life


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: setnewday
BeitragVerfasst: Fr 01 Apr, 2011 23:34 
Offline
Meister
Meister
Benutzeravatar

Registriert: Mo 05 Feb, 2007 12:33
Beiträge: 375
Wohnort: Hattingen
Geschlecht: Männlich
LoGD: http://www.alvion-logd.de/logd/
Stimmt, Asche auf mein Haupt! Das WHERE habe ich vollkommen übersehen!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: setnewday
BeitragVerfasst: Sa 02 Apr, 2011 11:24 
Offline
Profi
Profi

Registriert: Sa 15 Jan, 2011 23:15
Beiträge: 100
Nein. das ostereier = ostereier+1 soll den aktuellen Wert um 1 erhöhen

Zwecks Int oder Varchar. Da es Int ist, schätze ich mal, dass die ' ' falsch sind. Denn mir ist aufgefallen Gold oder Gems benötigen kein ' ' und die sind ja int

Code:
db_query("UPDATE `accounts` SET `osterei`=osterei+1 WHERE `osternaktiv`=1 AND `osterei`>=0");
db_query("UPDATE `accounts` SET `osternaktiv`=2 WHERE `osternaktiv`=1 AND `osterei`=6");
db_query("UPDATE `accounts` SET `osterei`=osterei+1 WHERE `osternaktiv`=2 AND `osterei`>=1");
db_query("UPDATE `accounts` SET `osterei`=0 WHERE `osternaktiv`=2 AND `osterei`=12");


Das heißt so müsste es sein, wenn...

... es die Anzahl der Ostereier um 1 erhöhen soll, wenn Osternaktiv = 1 imd Ostereier >=0 (der Zusatz ist eig unnötig kommt mir grad)

... es Osternaktiv auf 2 setzen soll, falls man 6 Ostereier hat

.. es die Antahl der Ostereier erhöhen soll, wenn osteraktiv auf 2 steht

.. es die Anzahl der Ostereier auf 0 setzen soll, wenn Osteraktiv auf 2 und osterei auf 12 ist

Oder sind da noch immer Fehler?


Dann ein anderes. Die Setnewday wird bei mir merkwürdigerweiße zu jedem newday ausgeführt.. Ich schätze mal das, was dafür nötig ist ist das hier

Code:
       $lastnewdaysemaphore = convertgametime(strtotime(getsetting("newdaysemaphore","0000-00-00 00:00:00")));
       $gametoday = gametime();

        if (date("Ymd",$gametoday)!=date("Ymd",$lastnewdaysemaphore)){
            $sql = "LOCK TABLES settings WRITE";
            db_query($sql);

           $lastnewdaysemaphore = convertgametime(strtotime(getsetting("newdaysemaphore","0000-00-00 00:00:00")));

            $gametoday = gametime();
            if (date("Ymd",$gametoday)!=date("Ymd",$lastnewdaysemaphore)){
                //we need to run the hook, update the setting, and unlock.
                savesetting("newdaysemaphore",date("Y-m-d H:i:s"));
                $sql = "UNLOCK TABLES";
                db_query($sql);

            require_once "setnewday.php";

            }else{
                //someone else beat us to it, unlock.
                $sql = "UNLOCK TABLES";
                db_query($sql);
                output("Somebody beat us to it");
            }
        }


Einen Fehler kann ich darin aber nicht entdecken (Server läuft auf PHP5 und MySQL 5)


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 1 Gast


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:  
cron
POWERED_BY
Deutsche Übersetzung durch phpBB.de
anpera.net - Impressum