[Release] Muddy's Mule Manager V1.2.1

05/10/2011 14:14 Aceridos#106
@seltn, ich beziehe mich mal aufs India Tradeforum
Dort werden die Foren schon nach Unique&Sets etc sortiert, daher wäre für mich die ..

moment... ich sehe grad du meinst ja das selbe wie ich... vergisses^^

Die Idee mit den Notizen find ich auch gut, stand aber eben nicht dabei
05/10/2011 15:26 Muddy Waters#107
Quote:
Originally Posted by Aceridos View Post
Bezüglich der Tradeliste(die unten rechts ist, nicht links :p) wäre _mir_ persönlich eine Gruppieren nach Group wohl lieber, gerade wenn ich an meine Shopthreads denke..
Nach Qualität sortieren und dann markieren geht ja "oben" schon. Auch wenn das Argument genauso für die Gruppen gilt, hätte ich weniger Aufwand alle Uniques oben zu markieren und dann per Drag&Drop nach unten zu schmeißen, als immer nach Group zu sortieren und dort die Uniques einzeln zu markieren, weil sich u.a. Rohlinge/Magics dazwischenmogeln

Für den freien Platz links oben, wäre mir eigentlich eine Anzeige, wieviel Platz auf dem Char noch frei ist, am liebsten. Dann wären aber die Balkendiagramme recht... nutzlos :D

Wenn dann noch später die Questabfragen für Larzuk und Charsi dabei sind, dürfte der Platz doch eh gefüllt sein, oder nicht?

just my 2 cents :cool:
Links...rechts; wo ist da der Unterschied? :D

Guter Einwand, so könnte man es in er Tat so zurechtfummeln, wie man es gerne hätte.
In dem Fall peile ich Gruppierung nach "Group" an, wobei die Reihenfolge in der Group veränderbar wird, mit Option zum alphabetischen Sortieren.

Ich mag die Balkendiagramme aber. :p
Aber ich könnte die Zahlenwerte noch darüber zeichnen, dann müsste ich zwar den Renderer umschreiben, aber eventuell ließe sich das machen.

Also für die Quests müssten zwei schmale Spalten ausreichen, ich werde den Quest Status vermutlich nicht als Text sondern als Zahl ausgeben, das macht die Sache kompakter. Zumal es ja nur drei interessante Zustände gibt: nicht angefangen, erledigt & Belohnung ausstehend und abgeschlossen.

Im Zweifelsfall eben wieder der Goldstand, obwohl ich mal schauen muss, inwieweit ich das in einem Tooltip unterbringen kann.

Quote:
Originally Posted by seltn View Post
Sers!

Sieht ja schonmal klasse aus.

Zu 1.,den Spalten: Ich glaube, eine leere Textbox zum hinzufügen von Beschreibungen,Notizen wäre für mich das sinnvollste.
Die unter "Eigenschaften" aufgelisteten Klassendiagramme empfinde ich persönlich als nicht wichtig.

zu 2.:

Als sinnvollste Gruppierung fände ich die nach Group ( Runen, charms, boots etc) eventuell noch nach seltenheit (unique,magic).

Aber wenn ich etwas in einem Forum suche, bin ich immer froh, wenn über einer liste mit XX-Einträgen z.B. "small charms" steht.

Aussehen der Tradelist:

ItemName ; Eigenschaften (was ist möglich?, nur spezielle, wie z.B: enhanced Defence oder magic find? ; alle Eigenschaften wären zu viel?); level req?

Lg Seltn
1.:
Aber zu was willst du dort Notizen einfügen? Das Programm dient ja dahingehend nur der Darstellung von Daten.
Notizen machen daher aus meiner Sicht nur bei der Tradelist Sinn, weil dort auch eine Ausgabe stattfindet.

Unter "Eigenschaften" stehen Eigenschaften, also die Member eines Mule Objekts. Das Klassendiagramm ist das, was du in dem Bild siehst, eine Visualisierung der Klassenstruktur. ;)

2.:
Dann wird es nach Groups sortiert. :)

Bezüglich der Anzeige sind sämtliche Eigenschaften eines Item Objekts möglich, wobei der Arbeitsaufwand stark variiert.
Am einfachsten wäre es, das auszugeben, was auch im Spiel angezeigt wird, also alles.
Man könnte natürlich auch bei Uniques und Sets jeweils nur die Variablen Stats auflisten, aber das würde erstmal voraussetzen, dass man eine Datenbank erstellt, in der man für jedes Unique genau festlegt, welche Stats variabel sind. Das wären dann sehr wahrscheinlich direkt reguläre Ausdrücke, mit denen die gewünschten Teile aus der Beschreibung eines Items extrahiert werden können.
Man vermutlich vorher noch jedem Unique eine ID zuweisen, um die Datenbank vernünftig indizieren zu können.
An sich alles schön und gut, lässt sich auch machen, ist aber wie man schon erahnen kann relativ viel Arbeit, jedenfalls wenn man es alleine macht.

Alternativ extrahiert man sämtliche Stats eines Items mit, dann könnte man sich die regulären Ausdrücke sparen, bräuchte aber dennoch eine Datenbank und müsste sehr viel mehr Daten exportieren/einlesen.

Ich denke ich werde erstmal alle Stats mitnehmen, ändern kann man es hinterher immernoch. :)

LG
Muddy
05/10/2011 16:21 Aceridos#108
Wäre es möglich nur die Variablen Eigenschaften anzeigen zu lassen?
Wahrscheinlich nicht ohne größeren Aufwand nehme ich an?

Wäre es möglich da etwas von Hand machen zu lassen? Das man z.B. eine Art Datenbank anlegt, wo für jedes Unique/Set definiert ist, welche Stats angezeigt werden sollen
z.B. bei der Harle, wird eben nur die Def angezeigt und ob sie eth ist, Sockel wohl allgemein anzeigen lassen
anderes Beispiel wäre dann... ein Runenwort, die sind ja auch überschaubar, Enigma z.B.
Hier würde dann die Gesamtverteidigung und die "+7XX zu Verteidigung" anzeigt werden, der Rest ist ja immer identisch

Würde das gehen wenn dir jemand von Hand so eine Datenbank erstellt? Ich würds selbst machen, wenn du mir ein Einführungsbeispiel gibst wie sowas ausschaut, da ich einfach keine Erfahrung hab :p

Oder ist das grundsätzlich eher schwer umzusetzen? Hach diese Unwissenheit... :D
05/10/2011 16:31 seltn#109
Quote:
Originally Posted by Aceridos View Post
Wäre es möglich nur die Variablen Eigenschaften anzeigen zu lassen?
Wahrscheinlich nicht ohne größeren Aufwand nehme ich an?

Wäre es möglich da etwas von Hand machen zu lassen? Das man z.B. eine Art Datenbank anlegt, wo für jedes Unique/Set definiert ist, welche Stats angezeigt werden sollen
z.B. bei der Harle, wird eben nur die Def angezeigt und ob sie eth ist, Sockel wohl allgemein anzeigen lassen
anderes Beispiel wäre dann... ein Runenwort, die sind ja auch überschaubar, Enigma z.B.
Hier würde dann die Gesamtverteidigung und die "+7XX zu Verteidigung" anzeigt werden, der Rest ist ja immer identisch

Würde das gehen wenn dir jemand von Hand so eine Datenbank erstellt? Ich würds selbst machen, wenn du mir ein Einführungsbeispiel gibst wie sowas ausschaut, da ich einfach keine Erfahrung hab :p

Oder ist das grundsätzlich eher schwer umzusetzen? Hach diese Unwissenheit... :D
Genau das, hat muddy oben beschrieben, dass man so eine Datenbank per Hand ertellen müsste, um nur bestimmte Variable Eigenschaften anzeigen zu lassen.

@ muddy:

Ich finde, die Anzeige von Allen Eigenschaften dann erstmal nicht von dringender Nöte. Es spart erstmal Zeit, bis die nächste Version herauskommt und lässt dich dann später noch einbinden.
DIablo Spieler wissen ja ungefähr welche brauchbaren Items, welche Eigenschaften haben sollten ( zumindest bei Uniques).
Anders bei "Charms",für die könnte aufjedenfall eine Stats Ausgabe integriert sein.

Lg Seltn

P.S: WIe oben Aceridos geschrieben hat, würden sich ja zu einem späteren Zeitpunkt auch freiwillige SPieler finden, die solch eine blanko Datenbank mit Daten füllen würden.
05/10/2011 16:41 Aceridos#110
Tatsache, den Abschnitt hab ich wohl im Halbschlaf gelesen...

Würde mich da aber anbieten, wenn mir kurz anhand eines Beispielitems gezeigt wird was wie gemacht werden muss, das Wiederholt sich ja dann bei jedem Item..

Quote:
Anders bei "Charms",für die könnte aufjedenfall eine Stats Ausgabe integriert sein.
dem Stimme ich zu :)
05/10/2011 18:18 Muddy Waters#111
Quote:
Originally Posted by Aceridos View Post
Wäre es möglich nur die Variablen Eigenschaften anzeigen zu lassen?
Wahrscheinlich nicht ohne größeren Aufwand nehme ich an?

Wäre es möglich da etwas von Hand machen zu lassen? Das man z.B. eine Art Datenbank anlegt, wo für jedes Unique/Set definiert ist, welche Stats angezeigt werden sollen
z.B. bei der Harle, wird eben nur die Def angezeigt und ob sie eth ist, Sockel wohl allgemein anzeigen lassen
anderes Beispiel wäre dann... ein Runenwort, die sind ja auch überschaubar, Enigma z.B.
Hier würde dann die Gesamtverteidigung und die "+7XX zu Verteidigung" anzeigt werden, der Rest ist ja immer identisch

Würde das gehen wenn dir jemand von Hand so eine Datenbank erstellt? Ich würds selbst machen, wenn du mir ein Einführungsbeispiel gibst wie sowas ausschaut, da ich einfach keine Erfahrung hab :p

Oder ist das grundsätzlich eher schwer umzusetzen? Hach diese Unwissenheit... :D
Ich glaube schwer ist relativ, ich fände es nicht schwer, nur arbeitsaufwändig.
Hier mal ein grober Entwurf einer möglichen Methode:
Code:
public string GetUniqueStats()
{
    Regex _statExtractor;
    string _repString;

    switch(this.UniqueId)
    {
        case 42:
            _statExtractor = new Regex(@"(.)+([0-9]{2})% Enhanced(.)+([0-9]{2})% Better(.)");
            _repString = "Chance Guards, $1ED, $2MF";
            break;
        default:
            _statExtractor = new Regex("dummy");
            _repString = "";
            break;
    }
            
    return _statExtractor.Replace(this.Desc, _repString);
}
Angenommen die this.UniqueId sei vorher festgelegt worden und meine hier "Chance Guards", dann würde die Funktion folgenden Rückgabewert haben:
Code:
Chance Guards, 25ED, 30MF
Wobei this.Desc folgenden Wert hat:
Code:
Chance Guards|Chain Gloves|Defense: 27|Durability: 10 of 16|Required Strength: 25|Required Level: 15|+25 to Attack Rating|+25% Enhanced Defense|+15 Defense|200% Extra Gold from Monsters|30% Better Chance of Getting Magic Items
Viel Intelligenz steckt dahinter nicht, sofern man mit regulären Ausdrücken umgehen kann, das ist eine reine Ausdauer Frage. :o
Und angesichts der Menge an Uniques wirklich ein Haufen Arbeit.

Quote:
Originally Posted by seltn View Post
Genau das, hat muddy oben beschrieben, dass man so eine Datenbank per Hand ertellen müsste, um nur bestimmte Variable Eigenschaften anzeigen zu lassen.

@ muddy:

Ich finde, die Anzeige von Allen Eigenschaften dann erstmal nicht von dringender Nöte. Es spart erstmal Zeit, bis die nächste Version herauskommt und lässt dich dann später noch einbinden.
DIablo Spieler wissen ja ungefähr welche brauchbaren Items, welche Eigenschaften haben sollten ( zumindest bei Uniques).
Anders bei "Charms",für die könnte aufjedenfall eine Stats Ausgabe integriert sein.

Lg Seltn

P.S: WIe oben Aceridos geschrieben hat, würden sich ja zu einem späteren Zeitpunkt auch freiwillige SPieler finden, die solch eine blanko Datenbank mit Daten füllen würden.
Wie gesagt, alle Stats ausgeben ist Problemlos möglich, das Problem ist nur, wenn es nur bestimmte sein sollen. ;)
So wird von Haus aus erstmal alles ausgegeben werden.

LG
Muddy
05/10/2011 19:51 seltn#112
jo, stimmt.
Dann könnte man eventuell die Option einbauen, dass man die Möglichkeit hat, keine oder alle Stats ausgeben zu lassen.
Damit man die benötigten von selbst "hinten dran schreibt".

Obwohl, müsste man dann für unterschiedlichen item groups schalten können.
Wegen charms, schmuck etc...
Hauptsächlich geht es ja um die Unique items, bei denen 1-2 Eigenschaften variabel sind, weil wenn das Unique dann 6-10 Eigenschaften hat, wird die Ausgabe unübersichtlich. (Würd ich jetzt sagen)

Lg
05/10/2011 22:36 Aceridos#113
Quote:
_repString = "Chance Guards, $1ED, $2MF";
woher leite ich das $1ED, $2MF etc ab?

Nummerierung klar, fortlaufend? Woher nehm ich aber die richtigen "Kürzel"?
05/10/2011 22:49 Muddy Waters#114
Quote:
Originally Posted by seltn View Post
jo, stimmt.
Dann könnte man eventuell die Option einbauen, dass man die Möglichkeit hat, keine oder alle Stats ausgeben zu lassen.
Damit man die benötigten von selbst "hinten dran schreibt".

Obwohl, müsste man dann für unterschiedlichen item groups schalten können.
Wegen charms, schmuck etc...
Hauptsächlich geht es ja um die Unique items, bei denen 1-2 Eigenschaften variabel sind, weil wenn das Unique dann 6-10 Eigenschaften hat, wird die Ausgabe unübersichtlich. (Würd ich jetzt sagen)

Lg
Schwierig, aber mal schauen. :)
Ich tüftel derzeit noch an einem anderen Problem im Bezug auf die Quest Export Geschichte, was ich aber unbedingt erstmal gelöst haben möchte.

Quote:
Originally Posted by Aceridos View Post
woher leite ich das $1ED, $2MF etc ab?

Nummerierung klar, fortlaufend? Woher nehm ich aber die richtigen "Kürzel"?
Interessant ist eigentlich nur $ gefolgt von einer Zahl. Diese Ausdrücke sind Platzhalter und werden durch die als Rückwärtsreferenz gekennzeichneten Abschnitte des regulären Ausdrucks ersetzt.

Reguläre Ausdrücke sind eine extrem praktische Sache und man kann sie nicht nur zum Programmieren gebrauchen. Informatives dazu findet sich [Only registered and activated users can see links. Click Here To Register...] oder hier. Passend zu meinem Beispiel hier noch ein [Only registered and activated users can see links. Click Here To Register...] zur Referenz der Regex Klasse des .Net Frameworks, kannst dich ja mal etwas einlesen, wenn du Lust hast. ;)

LG
Muddy
05/10/2011 23:32 Aceridos#115
Uff, das ist echt viel :ugly:
Wollt mich erst nach dem Abi näher mit dem Zeug befassen, aber danke :D

Also wird durch das hier
Code:
            _statExtractor = new Regex(@"(.)+([0-9]{2})% Enhanced(.)+([0-9]{2})% Better(.)");
herausgefiltert, welche Stats berücksichtigt werden sollen?

Code:
[0-9]
sagt dann wohl aus, dass ich eine Zahl suche, die
Code:
{2}
gibt die Anzahl der Ziffern an...

Ah, verstehe! der _repString = "Chance Guards, $1ED, $2MF"; liefert dann den Rückgabewert, also "Chance Guards, 1. Wert+'ED', 2. Wert+'MF'"

Nun muss ich noch blicken, wie er erkennt welche Werte er nehmen soll.. Was genau macht der Ausdruck % Enhanced(wenn das zusammen ein Ausdruck ist)
Sucht er in dem Item nach einer Zeile in den Eigenschaften(Stats des Items) nach dem Wort "Enhanced" und nimmt dann aus der Zeile die 2-stellige Ziffer und verknüpft sie mit dem wahllos ausgesuchten Textwert (ED in dem Fall)?

Oder sind das % Zeichen und Enhanced 2 verschiedene Suchbegriffe, die einfach durch ein Leerzeichen getrennt werden? Und nur Zeilen, die beide Begriffe enthalten werden nach 2stelligen Zahlen durchsucht?

Zuletzt noch(^^): Vor und nach einem solchen "Kriterium"(passt das Wort?), muss ein (.) stehen, als Trennzeichen o.ä.?

gute Güte :o
05/11/2011 11:06 Muddy Waters#116
Quote:
Originally Posted by Aceridos View Post
Uff, das ist echt viel :ugly:
Wollt mich erst nach dem Abi näher mit dem Zeug befassen, aber danke :D

Also wird durch das hier
Code:
            _statExtractor = new Regex(@"(.)+([0-9]{2})% Enhanced(.)+([0-9]{2})% Better(.)");
herausgefiltert, welche Stats berücksichtigt werden sollen?

Code:
[0-9]
sagt dann wohl aus, dass ich eine Zahl suche, die
Code:
{2}
gibt die Anzahl der Ziffern an...

Ah, verstehe! der _repString = "Chance Guards, $1ED, $2MF"; liefert dann den Rückgabewert, also "Chance Guards, 1. Wert+'ED', 2. Wert+'MF'"

Nun muss ich noch blicken, wie er erkennt welche Werte er nehmen soll.. Was genau macht der Ausdruck % Enhanced(wenn das zusammen ein Ausdruck ist)
Sucht er in dem Item nach einer Zeile in den Eigenschaften(Stats des Items) nach dem Wort "Enhanced" und nimmt dann aus der Zeile die 2-stellige Ziffer und verknüpft sie mit dem wahllos ausgesuchten Textwert (ED in dem Fall)?

Oder sind das % Zeichen und Enhanced 2 verschiedene Suchbegriffe, die einfach durch ein Leerzeichen getrennt werden? Und nur Zeilen, die beide Begriffe enthalten werden nach 2stelligen Zahlen durchsucht?

Zuletzt noch(^^): Vor und nach einem solchen "Kriterium"(passt das Wort?), muss ein (.) stehen, als Trennzeichen o.ä.?

gute Güte :o
Ich glaube du liest dir einfach mal das kleine Tutorial durch, was ich oben erwähnt habe. Das ist kurz und enthält die wichtigsten Punkte. ;)

In [] stehen immer Zeichenklassen. Also per se ist damit genau ein Zeichen gemeint, wobei die Zeichenklasse festlegt, welche Zeichen vorkommen dürften. Hinter einer solchen Zeichenklasse können dann Quantoren stehen, die darüber entscheiden, wie viele Zeichen aus der Klasse vorkommen dürfen.

Alles was nicht in einer Zeichenklasse steht, ist als Volltext zu verstehen.
(.) steht für ein beliebiges Zeichen, wobei dort eigentlich (?:.) stehen sollte, denn dann wird die zur Übereinstimmung führende Teilzeichenkette nicht Rückreferenziert (man kann sie dann nicht anstelle eines Platzhalters einfügen, was ja auch nicht notwendig ist).

Der Ausdruck
Code:
(.)*und(.)*
würde beispielsweise mit jeder Zeile übereinstimmen, die das Wort "und" enthält.

Beispielsatz:
Code:
Heute scheint die Sonne und es ist warm.
Mit obigem regulären Ausdruck und dem Ersetzungsstring "$1, $2" könnte man aus dem Satz folgendes machen:
Code:
Heute scheint die Sonne, es ist warm.
[Only registered and activated users can see links. Click Here To Register...], damit kannst du das ein bisschen üben, wenn du magst ;)

LG
Muddy
05/11/2011 14:05 Derbeth#117
Bei mir kommt die Fehlermeldung:
Input string was not in a correct Format.
Diese kommt beim öffnen, anfangs wars mal nur 1 char, jetzt sinds schon 6 die er nicht mehr auslesen kann.
Gibts da schon ne lösung für?
05/11/2011 14:52 Aceridos#118
Jop, das dürfte das gleiche wie bei mir sein

Hast du dich in einen Account öfters eingeloggt? Dann steht hinter deinem Accnamen ein "#2", scheinbar kann die momentane Version die Raute nicht... sie kommt nicht damit klar ;)

Folgende MWToolsGame müsste damit klarkommen

Ich hab sie von Muddy, ist also sauber ;)

Alternativ kannst du auch die entsprechenden Logfiles öffnen(via Editor) und in der 1. Zeile hinter dem Accountnamen die Raute und die Ziffer entfernen, glaube das würde auch gehn, ist aber nicht so sauber würde Muddy wohl sagen^^
05/11/2011 19:42 Derbeth#119
danke hab sie gewechselt jetzt kommt zwar eine fehlermeldung (bin grad am laptop deshalb seh ichs nicht...) aber scheint zu funktionieren, muss jetzt aber wahrscheinlich alle alten logfiles löschen, richtig?

gruss derb
05/11/2011 22:28 Aceridos#120
Kannst sie löschen und dann neu erstellen, inwiefern er die Logfiles überschreibt weiß ich nicht.
Löschen und neu erstellen wäre aber "Safe"^^(imho)