Register for your free account! | Forgot your password?

Go Back   elitepvpers > Other Online Games > Diablo 2 > Diablo 2 Programming
You last visited: Today at 22:32

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Funktionsaufrufe protokollieren

Discussion on Funktionsaufrufe protokollieren within the Diablo 2 Programming forum part of the Diablo 2 category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Mar 2009
Posts: 33
Received Thanks: 1
Funktionsaufrufe protokollieren

Grüße,

ich hab da ein kleines Problem: und zwar mein Hammer-Bot (Bluebird 1.1) stürz regelmäßig ab - ca alle 4 runs. Abgesehn davon, dass es so schon nervt verursacht es auch IP-Bans (und ich habe keinen Zugriff auf meinen Router).
Meine Sorc-Bots stürzen seltenst ab (einer in 200 evtl.).

Die Fehlersuche gestaltet sich etwas schwierig, deshalb die Idee:
Alle Scriptaufrufe protokollieren lassen (und eben auch Abstürze).

Jetzt die Frage: wie setz ich das um?

PS: Diablo stürzt mit einer "unhandled exception" ab. Da aber bei mir alle Bots von einer Install laufen und nur beim Pala Probleme auftreten verdächtige ich mal paladin-spezifische Funktionen, evtl. Enigma-bug (weil den hab ich nie gesehn und ab und an sollte er mal auftreten).
Buchs is offline  
Old 08/27/2010, 13:16   #2
 
elite*gold: 0
Join Date: Jul 2008
Posts: 169
Received Thanks: 14
paar punkte zum abchecken

1.deutscher client mit englischem logscript (stell auf englisch um)
2.reinstall d2
3.anderes d2nt script benutzen / andere d2nt version
4.nosound ausmachen
fuuch is offline  
Old 09/01/2010, 11:19   #3
 
elite*gold: 0
Join Date: Mar 2009
Posts: 33
Received Thanks: 1
danke für die Hinweise, aber ich hab den Fehler woanders gefunden (nachdem ich alles was du gesagt hast schon längst gemacht hatte).

Und zwar findet sich in der D2NT\scripts\libs\common\NTAttack in der Funktion NTA_ClearPosition eine Stelle

Code:
	_target = NTC_FindUnit(NTC_UNIT_MONSTER);

		NTSI_PickItems();
Das bewirkt, dass der Bot nach JEDEM Monster einen Pickit durchführt (zumindest checkt was da liegt) - und nicht nur wenn er eine Position gecleart hat.
Der Effekt des ganzen ist, dass man extrem schnell in Public runs die Items grabbed, allerdings führt es zu Abstürzen wenn zuviele Gegner gleichzeitig sterben und zu viel Zeug aufm Boden liegt (vornehmlich bei Diablo und im Thronsaal).

Es gibt also 2 Möglichkeiten den Fehler zu beheben:
die einfachste ist, einfach dieses Pickit in der NTAttack raus streichen. Der Bot sammelt rotzdem alles ein, allerdings erst wenn das Umfeld vor dem nächsten weiter teleporierten clear ist. (Eben so, wie es in den Configs für die Encounter steht). Hier sollte man die Snagrange des Bots erhöhen. Ich habs momentan von 50 auf 80 hoch und läuft ganz gut.
{Quelle irgendwo hier im Forum nach einer ganzen Zeit suchen}

Die 2. Möglichkeit ist die Snagrange des Hammerdins zu verringern - hier müsste man etwas experimentieren, aber bei Baal wird er wohl trotzdem abstürzen.


Das ganze ändert aber auch nichts daran, dass es interssant wäre alle Funktionsaufrufe zu protokollieren um eventuelle andere Fehlerquellen (sollte er immer noch ab und an abstürzen) ausfindig zu machen.
Buchs is offline  
Old 09/01/2010, 18:00   #4
Administrator
 
Muddy Waters's Avatar
 
elite*gold: 41364
Join Date: Jan 2010
Posts: 22,729
Received Thanks: 12,625
Quote:
Originally Posted by Buchs View Post
danke für die Hinweise, aber ich hab den Fehler woanders gefunden (nachdem ich alles was du gesagt hast schon längst gemacht hatte).

Und zwar findet sich in der D2NT\scripts\libs\common\NTAttack in der Funktion NTA_ClearPosition eine Stelle

Code:
    _target = NTC_FindUnit(NTC_UNIT_MONSTER);

        NTSI_PickItems();
Das bewirkt, dass der Bot nach JEDEM Monster einen Pickit durchführt (zumindest checkt was da liegt) - und nicht nur wenn er eine Position gecleart hat.
Der Effekt des ganzen ist, dass man extrem schnell in Public runs die Items grabbed, allerdings führt es zu Abstürzen wenn zuviele Gegner gleichzeitig sterben und zu viel Zeug aufm Boden liegt (vornehmlich bei Diablo und im Thronsaal).

Es gibt also 2 Möglichkeiten den Fehler zu beheben:
die einfachste ist, einfach dieses Pickit in der NTAttack raus streichen. Der Bot sammelt rotzdem alles ein, allerdings erst wenn das Umfeld vor dem nächsten weiter teleporierten clear ist. (Eben so, wie es in den Configs für die Encounter steht). Hier sollte man die Snagrange des Bots erhöhen. Ich habs momentan von 50 auf 80 hoch und läuft ganz gut.
{Quelle irgendwo hier im Forum nach einer ganzen Zeit suchen}

Die 2. Möglichkeit ist die Snagrange des Hammerdins zu verringern - hier müsste man etwas experimentieren, aber bei Baal wird er wohl trotzdem abstürzen.


Das ganze ändert aber auch nichts daran, dass es interssant wäre alle Funktionsaufrufe zu protokollieren um eventuelle andere Fehlerquellen (sollte er immer noch ab und an abstürzen) ausfindig zu machen.
So ganz stimmt deine Aussage noch nicht.
Die Funktion wird nicht nach jedem Monster aufgerufen, sondern vor jeder Attacke, die Umsetzung ist also noch schlimmer, als du denkst.

Prinzipiell kann man dort ansetzen, um ein schnelleres Aufheben umzusetzen, allerdings würde die Umsetzung dann etwas anders aussehen.

Achja, eine Snag Range von mehr als 70 macht aus meiner Sicht keinen Sinn, da Item Objekte die weiter entfernt sind ohnehin nicht instantiiert werden können. Jedenfalls gilt das für Monster, ich würde aber mal vermuten, dass das genauso für Items gilt. Werde ich aber gleich nochmal testen, interessiert mich selber.

Das mit den Funktionsaufrufen sehe ich auch eher skeptisch.
Du müsstest eine Funktion schreiben, der du den Namen der Funktion übergibst und diese dann per filehandle in eine Datei schreibst.
Soweit so gut, auch extrem leicht umsetzbar.
Auch die Uhrzeit könnte man problemlos hinzufügen, die übergebenen Aktualparameter und was einem sonst noch in den Sinn kommt, alles gar kein Problem.

Allerdings müsstest du deine "Aufruf-Log-Funktion" dann in jeder Funktion aufrufen.
Von der Umsetzung her auch machbar und in erster Linie eine fleiss Frage.

Wenn du jetzt aber mal bedenkst, wie häufig eigentlich gewisse Funktionen aufgerufen werden, geht das ganze doch ein wenig ins Absurde.
Deine Textdatei würde innerhalb kurzer Zeit auf eine Größe von einigen MB anwachsen.
Mal abgesehen davon, dass du durch diese häufigen Aufrufe deiner "Aufruf-Log-Funktion", bei denen du jedes mal ein Filehandle öffnen musst, eventuell merkliche Laufzeiten entstehen.
Nicht im einzelnen, aber in der Summe schon.

Denk dabei beispielsweise an eine Sorc, die gerade fröhlich Feuerbälle castet.
Jeder Feuerball ist ein Funktionsaufruf.
Jedes mal Teleportieren ist ein Funktionsaufruf.
Das könnte man fast beliebig fortführen...

Du hättest hinterher eine riesen Datenmenge, durch die niemand durchblickt, sodass du am Ende kein bisschen schlauer bist und somit nichts gewonnen hast.

Im Normalfall halten sich die Exceptions ja in Grenzen, sofern man seine Funktionen ordentlich schreibt und überlegt was man tut. Ich würde mich darum einfach mal damit abfinden, dass man die lästigen D2 Exceptions niemals ganz loswerden wird.
Angesichts dessen sollte man auch immer im Hinterkopf behalten, dass D2 Exceptions kein reines D2NT Problem sind, sondern durchaus auch mal auftreten, während man normal spielt (wenn auch zugegebenermaßen deutlich seltener).

Lg
Muddy
Muddy Waters is offline  
Reply


Similar Threads Similar Threads
WinAmp Radio Titel Protokollieren...?
01/26/2009 - Guild Wars - 4 Replies
Hallo, ich bin auf der suche nach einem Tool oder der Option in Winamp die Titel Playlist des jeweiligen Radio Senders in txt. html oder so mit zu protokollieren. Hat jemand ne ahnung was ich unter Optionen einstellen muss bzw. ob es dafür ein Tool gibt oder wie ich sowas selber zusammen basteln kann? danke



All times are GMT +2. The time now is 22:32.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.