Nebelkokon und automatischer Kampf

Begonnen von Bauthan, 05. April 2011, 11:10:17

« vorheriges - nächstes »

Bauthan

Stelle ich beim Nebelkokon automatischer Kampf bis LP unter 20% und klicke auf berechnen,
sehe ich nicht, was passiert, was gedroppt wird, wieviele LPs ich noch habe etc...

Ich sehe nur, die hochgezählte Rundenzahl.



http://img269.imageshack.us/i/nebelkokon.gif/

Samuel

Öhm.. Du hast 131 Runden gekämpft und nicht einen Punkt Schaden verursacht?

Was hast du die ganze Zeit gemacht?  :o
"I am chaos. I am the substance from which your artists and scientists build rhythms.
I am the spirit with which your children and clowns laugh in happy anarchy.
I am chaos. I am alive, and tell you that you are free"
- Eris, Goddess Of Chaos, Discord & Confusion

Oshun

Ich glaube das ist genau das was er sich auch fragt  lol

Bauthan

Hehehe :)

Nein nein - ich habe ihn ja besiegt, nur steht das da nicht.
Ich sehe nicht, wieviele LPs ich aktuell habe, was ich gedroppt bekommen habe (Items/Gold).

Ich denke mal hier gibts ein Problem bei den ständig beschworenen Begleitern + automatischer Kampf.

Xeridar

#4
Krieg ich so nicht reproduziert, funktioniert bei mir alles wie es sein sollte.

1. Was hast du vor der Berechnung genau gemacht?
2. Wie ging es nach dem Screenshot weiter?

Bitte alles möglichst detailliert beschreiben.


Nachtrag: Wenn der Kampf nach dem Screenshot vorbei war ist es mit ziemlicher Sicherheit ein reiner Anzeigefehler. Allerdings könnte es recht schwierig werden den zu finden, da ich es nicht nachbilden kann. Kannst du rekonstruieren, ob in diesem Kampf etwas "ungewöhnliches" gedroppt ist?

Bauthan

#5
Klar: hier die Schritte, die ich mache:

erstmal vor dem Kampf:
Bauthans Verteidigung steigt um einen Punkt!
Bauthan wird innerhalb der nächsten 5 Minuten alle Illusionen erkennen.
Bauthan beschwört ein Irrlicht.
Bauthan erschafft ein Spiegelbild.
Bauthan kann innerhalb der nächsten 10 Minuten im Dunkeln sehen.

-----

Bauthan begegnet Nebelkokon.
Bauthan wirkt Flammenschild auf Bauthan.
Bauthan wirkt Magieschild auf Bauthan.
Bauthan wirkt Schild der Teraja auf Bauthan.
(die werde ja automatisch durch Schutz gezaubert)

----
Dann Kettenzauber:

Nebelkokon wartet ab.
Bauthan wirkt Regeneration auf Bauthan.
Bauthan wirkt Lichtbarriere auf Bauthan.
Bauthan wirkt Gnadenstoß auf Bauthan.
Bauthan wirkt Engelsschwingen auf Bauthan.

-----
Dann eine starke Reg:

Nebelkokon wartet ab.
Bauthan erhält 2 Lebenspunkte durch Regeneration.
Bauthan wirkt starke Regeneration auf Bauthan

------

Dann Kampfunfähigkeit:

Nebelkokon wartet ab.
Bauthan erhält 2 Lebenspunkte durch Regeneration.
Bauthan wirkt Blenden auf Nebelkokon.
Bauthan wirkt Stille auf Nebelkokon.

--------

und dann automatischet Kampf mit "bis 20% LP" mit Erde-Feuer-Ordnung

... na toll, jetzt klappt es  ::)

Heute Vormittag hat es dreimal nicht geklappt....
Ich werde gleich nach dem Kampf die gleiche Reihenfolge durchführen und nochmal berichten....


Lehner

Geht mir aber ganz genau so wie Bauthan,
bzw. war es am Tag des Updates noch so (Hab das 2x gemacht, Fehler trat immer auf).

Ich werd das morgen auch nochmal testen

Sparta

hab identisches Problem.
Verlauf:
Kettenzauber + kampfunfähigkeit gezaubert.
Kampf bis zum Ende eingestellt->Autokampf und nichts geht mehr. Rundenzahl hat sich als einzigstes geändert (82)

Kiriru

Zitat von: Xeridar am 05. April 2011, 13:24:24
Kannst du rekonstruieren, ob in diesem Kampf etwas "ungewöhnliches" gedroppt ist?

Biete hierrauf achten wenn ihr dem nachgeht.

Dartha

also falls ich mitdenken darf, auch wenn ich den Fehler nicht habe (level *hust*):

früher gab es mal nen Fall, in dem in einem deiner PHP Scripte durch 0 geteilt wurde (spezieller fall) und somit kein gültiges XML zurück geliefert wurde und dein JS somit nen Fehler produziert hat, da anstatt XML, eben der Fehler Devide_by_Zero zurück gegeben wurde.

Da die Rundenzahl ja aber aktualisiert wurde, kann es in diesem Fall nicht daran liegen, ABER das Beispiel zeigt, dass du deinen JS Code anscheinend nicht ausfallsicher / Fehler abfangend programmiert hast.

Wenn die Rundenanzahl angezeigt wird (die ja auch vom Server geliefert wird), war der Request erfolgreich. Das heißt, der fehler tritt nach aktuallisierung der Rundenzahl auf (Funktion: updateDisplay):

x = xml.getElementsByTagName("over")[0];
if(isdefined(x)){
battleOver = parseInt(x.firstChild.nodeValue);
}
code = xml.getElementsByTagName("code")[0]
if(isdefined(code)){
code=code.firstChild.nodeValue;
if(code==lastCode){ lastCode=''; }
}

var newtarget = xml.getElementsByTagName("target")[0];
if(isdefined(newtarget)){
var ntmp=newtarget.firstChild.nodeValue;
combatants["c"+ntmp].mark();
}


x = xml.getElementsByTagName("chargelist")[0];
if(isdefined(x)){
$("#chargeskills").html("");
x = xml.getElementsByTagName("chargeskill");
if(isdefined(x)){
for(i=0;i<x.length;i++){
id = x[i].getAttribute("id");
chargenum  = x[i].getAttribute("charges");
name = x[i].firstChild.nodeValue;
$("#chargeskills").append(' <a id="spa'+id+'" class="mwin" href="#" onClick="request(\'chsk='+id+'\');mwindows[2].close(200); return true;">'+name+' ('+chargenum+' Ladungen)</a><br><br> ');
}
}
}


ein Hinweis zur Fehlerfindung könnte einfach mal durch ein try - catch - statement gefunden werden:

try {
        x = xml.getElementsByTagName("over")[0];
if(isdefined(x)){
battleOver = parseInt(x.firstChild.nodeValue);
}
code = xml.getElementsByTagName("code")[0]
if(isdefined(code)){
code=code.firstChild.nodeValue;
if(code==lastCode){ lastCode=''; }
}

var newtarget = xml.getElementsByTagName("target")[0];
if(isdefined(newtarget)){
var ntmp=newtarget.firstChild.nodeValue;
combatants["c"+ntmp].mark();
}


x = xml.getElementsByTagName("chargelist")[0];
if(isdefined(x)){
$("#chargeskills").html("");
x = xml.getElementsByTagName("chargeskill");
if(isdefined(x)){
for(i=0;i<x.length;i++){
id = x[i].getAttribute("id");
chargenum  = x[i].getAttribute("charges");
name = x[i].firstChild.nodeValue;
$("#chargeskills").append(' <a id="spa'+id+'" class="mwin" href="#" onClick="request(\'chsk='+id+'\');mwindows[2].close(200); return true;">'+name+' ('+chargenum+' Ladungen)</a><br><br> ');
}
}
}
} catch(errorObj) {
        $('#rc').append('<span>Error4Xeri: '+errorObj.description+'</span>');
}


Führt einfach nur dazu, dass falls meine Vermutung stimmt, hinter der Rundenzahl der Fehler ausgegeben wird, der beim ausführen des Codes verursacht wird. Net schön, aber zum Fehler finden, doch besser als jetzt ins blaue zu tippen. (Ne Fehlermeldung sehen logischerweise nur die, bei denen der Fehler auch auftritt!!!! Nach Fix, kann es ja wieder entfernt werden)

Lg Dartha

Xeridar

Dartha : Deiner Analyse stimme ich vollkommen zu, so weit war ich auch.

Ich hatte gehofft die Bedingungen unter denen der Fehler auftritt anhand der Meldungen isolieren zu können. Ein Abfangen des Fehlers wie von dir vorgeschlagen gibt vermutlich auch nur eine allgemeine Fehlermeldung zurück, die noch nicht wirklich hilft - aber ich werde es trotzdem einmal versuchen.


An die Leute bei denen der Fehler auftritt: Eine detailliertere Fehlermeldung wird euer Browser haben (Firefox: Extras -> Fehlerkonsole). Die Meldung die dort erscheint sobald der Fehler im Kampf auftritt wäre sehr nützlich.

Dartha

andere möglichkeit (ich weiß nicht wie fitt die menschen sind, bei denen der fehler atm auftritt und die Fehlerkonsole ist in der regel sehr voll (alleine wegen den ganzen Wernungen durch CSS Fehler)):

1) Entweder auf jedenfall in der Fehlerkonsole noch auf "Errors" oder "fehler" klicken (der rest wird dann ausgeblendet)
2) @xeri, schreibst dir nen kurzes php script, dass einfach textzeilen entgegen nehmen kann (per get) und dann in ne datei schreibt. Dann kannste anstatt den fehler dem user anzuzeigen die zeile von oben so abändern:
} catch(errorObj) {
        AJAX_OBJECT.request("http://www.arthoria.de/getErrorFromUser.php?code="+errorObj.description);
}


ist etwas netter, aber ich ahne, dass du atm nix in deinen js - kampf - code einfügen willst und es daher erstmal versuchst anders zu lösen?! ;)

Lg dartha

Bauthan

Heute zeigt das Protokoll ein wenig mehr:


Nebelkokon wartet ab.
Bauthan erhält 2 Lebenspunkte durch Regeneration.
Bauthan wirkt starke Regeneration auf Bauthan.
FEHLER (bitte im Forum melden): 'combatants[...]' ist Null oder kein Objekt

Interessante Drops haben sich dabei nie ergeben (die zwei Nebelkraut, die ich bekommen habe, wurde ohne den Bug gedroppt)
Beim nächsten mal schaue ich auch, ob die Fehlerkonsole etwas anzeigt...

Xeridar

Aha, nullpointer exception... na das ist doch schon mal was... wenn ich jetzt noch ne zeilennummer hätte... ;)

Ich schau nochmal, das ist ja zumindest schonmal ein Anhaltspunkt.

Elandion

Das scheint ungefähr so hilfreich gewesen zu sein, wie diese angehängte Fehlermeldung :D
Ein Freund ist jemand der dich mag, obwohl er dich kennt