[Request] D2NT 3.0 Itemlog mit DropLocation

04/07/2010 00:11 DonPalme#1
Ich frage mich ob man irgendwie einstellen kann, dass der Bot anzeigt wo er etwas gedropt hat. Das wäre doch mal hilfreich.

Ich hab selbst schon ein wenig versucht. indem ich ihn ins Item log have posten lassen bei welchem script er das item stasht. Allerdings ist er beim stashen ja schon beim nächsten script.

auf jeden ging das so:

Code:
NTC_SendLogToOOG(NTC_LOG_ITEM, "Kept "  + NTConfig_Script[CurScriptIndex] + NTC_ItemQualityToMGRColor[_items[i].quality] + _items[i].name.split("\n")[0] + ";" + _items[i].itemdesc);
allerdings musste man vorher

Code:
var CurScriptIndex = 0
definieren. Ausserdem glaube ich noch de config einfügen.

Hat jemand vllt ne idee? Das wär doch ein wenig Zeit wert =)
04/09/2010 17:01 Muddy Waters#2
Grundsätzlich kein Problem, sofern die Positionen ungenau seien dürfen.
Es wäre mit erheblichem Programmieraufwand verbunden die Positionen jedes einzelnen Items extra zu speichern, jedenfalls bei Items die noch identifiziert werden müssen.
Hier müsstest du die Positionen für jedes Item speichern, zuvor müsstest du aber jedem Item eine einzigartige ID zuweisen, welche beim auslesen bekannt sein müsste (denn nur so könnte man die Positionen auch tatsächlich richtig zuordnen).

Insgesamt sehr aufwändig. In der Praxis macht man es eher so, dass man den bei jedem Fund die aktuelle Ebene speichert. Beim Identen wird dann diese letzte Ebene den entsprechenden Items zugeordnet. Das kann natürlich zu Fehlern führen.
Beispiel: Du erledigst Andy, hast nur einen Ring gefunden, wehalb dein Char nicht sofort zum Identen geht sondern z.B. noch den Summoner mitnimmt. Wird nun hiernach Identifiziert würde auch der Ring von Andy als im arcane sanctuary gefunden geloggt werden.
Man sieht also, so ganz genau gehts nicht, aber meist reicht die Variante oben eigentlich aus. Zumal das Ilvl jedem der nicht gerade D2 Newbie ist auch schon eine Menge über den fundort verrät.

Ich werde heute mit dem Experimentieren mit D2NT 3.0 experimentieren und sehr wahrscheinlich meinen XML Itemlogger aus 1.7.2 für Version 3.0 adaptieren. Hier würde der Fundort nach obigem Schema geloggt werden.
Das könnte aber noch einige Tage dauern, weil ich mich erst etwas in die Änderungen einlesen muss.

LG
Muddy

P.S.: In 1.7.2 konnte man die Position so auslesen, müsstest du testen ob die Funktionen noch vorhanden sind und auch noch den gleichen Namen haben. Wenn ja, versuch sowas in der Art:
Code:
//Objektvariable deklarieren und initialisieren
var myArea = GetArea();
//Zugriff auf Klassenvariable durch das Objekt
var myAreaName = myArea.name;
//Die string variable "myAreaName" beinhaltet nun den Namen der aktuellen ebene (Du könntest natürlich auch direkt "myArea.name" ausgeben)
Alternativ könntest du natürlich auch eine Funktion schreiben die der entsprechenden Area ID den richtigen Namen zuordnet, wäre aber aufwändiger.
04/09/2010 20:07 DonPalme#3
Quote:
Originally Posted by Muddy_Waters View Post
Grundsätzlich kein Problem, sofern die Positionen ungenau seien dürfen.
Es wäre mit erheblichem Programmieraufwand verbunden die Positionen jedes einzelnen Items extra zu speichern, jedenfalls bei Items die noch identifiziert werden müssen.
Hier müsstest du die Positionen für jedes Item speichern, zuvor müsstest du aber jedem Item eine einzigartige ID zuweisen, welche beim auslesen bekannt sein müsste (denn nur so könnte man die Positionen auch tatsächlich richtig zuordnen).

Insgesamt sehr aufwändig. In der Praxis macht man es eher so, dass man den bei jedem Fund die aktuelle Ebene speichert. Beim Identen wird dann diese letzte Ebene den entsprechenden Items zugeordnet. Das kann natürlich zu Fehlern führen.
Beispiel: Du erledigst Andy, hast nur einen Ring gefunden, wehalb dein Char nicht sofort zum Identen geht sondern z.B. noch den Summoner mitnimmt. Wird nun hiernach Identifiziert würde auch der Ring von Andy als im arcane sanctuary gefunden geloggt werden.
Man sieht also, so ganz genau gehts nicht, aber meist reicht die Variante oben eigentlich aus. Zumal das Ilvl jedem der nicht gerade D2 Newbie ist auch schon eine Menge über den fundort verrät.

Ich werde heute mit dem Experimentieren mit D2NT 3.0 experimentieren und sehr wahrscheinlich meinen XML Itemlogger aus 1.7.2 für Version 3.0 adaptieren. Hier würde der Fundort nach obigem Schema geloggt werden.
Das könnte aber noch einige Tage dauern, weil ich mich erst etwas in die Änderungen einlesen muss.

LG
Muddy

P.S.: In 1.7.2 konnte man die Position so auslesen, müsstest du testen ob die Funktionen noch vorhanden sind und auch noch den gleichen Namen haben. Wenn ja, versuch sowas in der Art:
Code:
//Objektvariable deklarieren und initialisieren
var myArea = GetArea();
//Zugriff auf Klassenvariable durch das Objekt
var myAreaName = myArea.name;
//Die string variable "myAreaName" beinhaltet nun den Namen der aktuellen ebene (Du könntest natürlich auch direkt "myArea.name" ausgeben)
Alternativ könntest du natürlich auch eine Funktion schreiben die der entsprechenden Area ID den richtigen Namen zuordnet, wäre aber aufwändiger.
das problem mit den fehlern kann man einfach fixen, wenn man ihn einfach sofort stashen lässt sobald er was im inventar hat mit NTConfig_FreeSpace.
Dann hau mal rein =) Ich freu mich wenn das funzt.
04/14/2010 19:31 asdfghu#4
Das Problem daran ist, dass er in der Gegend das Item aufsammelt, in die Stadt geht und dort das Item identifiziert und den logstring sendet.

Code:
var _area = GetArea();
funktioniert noch. Du musst das also zu der Zeit, in der das Item eingesammelt wird ausführen (in NTSnagIt.ntl am besten), irgendwo zwischenspeichern und wieder ausgeben lassen wenn du in der Stadt bist. (NTTownManager.ntl enthält die Funktion die er zum Identifizieren verwendet.)
Die Übertragung kannst du zB mit einer txt Datei machen, oder ne eigene neue .ntl schreiben und einbinden, wobei das wohl eher stressiger ist.
Normalerweise geht der Bot nach jedem Script in die Stadt, egal ob etwas gedroppt ist oder nicht ( mit v3.0) deshalb sollte er mit dieser Methode einfach anzeigen können in welcher Gegend das Item gedroppt ist.
05/11/2010 14:52 Zerker.jar#5
ahoi,
hab des gleiche problem, weil bei der neuen version nur das script angezeigt wird (und das eben falsch). das mit "var _area = GetArea()" funktioniert nur bei runen, also in der SnagIt datei. ich hab mir überlegt bei den items das ganze mit itemlevel zu machen. also z.B andy hat das ilvl 75, die minions haben 73 - 76. falls bei den bossen oder minions eben ne ilvl kongruent is, muss man halt CheckAct() oder so mit reinklatschen. da ich mich aber leider nur in java auskenn und net in C auskenn , sind meine bisherigen versuche gescheitert. vllt schafft ihrs ja :D

PS: möcht dann aber sehen wie ihrs hinbekommen habt :P
05/11/2010 16:16 Muddy Waters#6
Quote:
Originally Posted by monsonov View Post
ahoi,
hab des gleiche problem, weil bei der neuen version nur das script angezeigt wird (und das eben falsch). das mit "var _area = GetArea()" funktioniert nur bei runen, also in der SnagIt datei. ich hab mir überlegt bei den items das ganze mit itemlevel zu machen. also z.B andy hat das ilvl 75, die minions haben 73 - 76. falls bei den bossen oder minions eben ne ilvl kongruent is, muss man halt CheckAct() oder so mit reinklatschen. da ich mich aber leider nur in java auskenn und net in C auskenn , sind meine bisherigen versuche gescheitert. vllt schafft ihrs ja :D

PS: möcht dann aber sehen wie ihrs hinbekommen habt :P
Das ist erstens verdammt ungenau, weil Monsterlevel in der Regel alles andere als eindeutig sind.
Zweitens könntest du einfach mein Itemlog ausprobieren, da ist es zwar auch teilweise ungenau, aber längst nicht in dem Maße wie du es schilderst. ;)

Und drittens verstehe ich nicht, warum du das syntaktisch nicht verstehst, wenn du doch Java beherrscht. Denn an sich ist das Java, zwar kein reines Java sondern eher eine Art "Slang", trotzdem sollte man es mit Vorkenntnissen relativ problemlos verstehen und an den Stil gewöhnt man sich schnell.

Lg
Muddy
05/11/2010 17:50 Zerker.jar#7
also erstens:
ich beherrsche java nicht vollkommen^^
zweitens:
hab vorhin bei deinem topic mit der itemlog erweiterung gepostet, dass komischerweise immer ne fehlermeldung kommt (sonst würd ichs ja nehmen)
05/11/2010 17:52 Medix#8
Quote:
Originally Posted by monsonov View Post
also erstens:
ich beherrsche java nicht vollkommen^^
zweitens:
hab vorhin bei deinem topic mit der itemlog erweiterung gepostet, dass komischerweise immer ne fehlermeldung kommt (sonst würd ichs ja nehmen)
hab auch davor noch nie was mit java zu tun gehabt ._. bissl kopf einschalten dann geht das

heute wurde mein automule script fertig und java hab ich trotzdem nie irgendwo gelernt.

Bei manchen Codepassagen tut man sich halt schwer wenn man nicht soviel ahnung hat man muss sich halt trotzdem langsam und konzentriert durchbeißen :>