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/img269/1931/nebelkokon.gif) (http://img269.imageshack.us/i/nebelkokon.gif/)
http://img269.imageshack.us/i/nebelkokon.gif/
Öhm.. Du hast 131 Runden gekämpft und nicht einen Punkt Schaden verursacht?
Was hast du die ganze Zeit gemacht? :o
Ich glaube das ist genau das was er sich auch fragt lol
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.
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?
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....
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
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)
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.
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
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.
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
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...
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.
Das scheint ungefähr so hilfreich gewesen zu sein, wie diese angehängte Fehlermeldung :D
Zitat von: Elandion am 07. April 2011, 14:28:32
Das scheint ungefähr so hilfreich gewesen zu sein, wie diese angehängte Fehlermeldung :D
und dieser kommentar war genauso hilfreich zu dem thema wie... tja ich fürchte da fehlt jeglicher anhaltspunkt. Inhaltskorrelation liegt iwo unter 1%.
und unsinn zu dem auch noch. Das Objekt war ja angegeben nämlich combatants.
@Xeri: die zeilennummer ist im IE nicht vorhanden. im FF lautet die bezeichnung (für catch(err) ) err.lineNumber und in Opera wird es bei der err.message mit geliefert!
anderer ansatz wäre zu schauen, ob der fehler nicht auch bei window.onerror angezeigt wird (was gut sein kann). dies kannste dann wie folgt nutzten:
window.onerror = function(err, file, line) { // plaplapla }da kommste über den dritten parameter der funktion an die Zeielnummer :)
so mal schauen obs was hilft ;)
Liebe Grüße Dartha
Ich glaube ich habe das Problem gefunden und behoben.
Bitte den Browsercache leeren (!) und danach noch einmal schauen, ob es wieder auftritt.