[Release] Muddy's Mule Manager V1.2.1

05/12/2011 00:14 Muddy Waters#121
Quote:
Originally Posted by Aceridos View Post
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)
D2NT selber überschreibt alte Logfiles komplett, jedenfalls in der aktuellen Version. Der Mule Manager verändert hingegen nichts an den Datein, die werden lediglich eingelesen.

__________________

Bin gerade extrem guter Dinge, habe mein bisheriges Problem lösen können, bezüglich der Visualisierung des Quest Status. :)
Das Ergebnis ist nun sowohl aussagekräftig, als auch extrem leicht ablesbar:
Somit kann ich mich jetzt erstmal wieder der Tradelist widmen, auch wenn ich bezüglich der Quests noch ein paar Daten sammeln muss, das ist so noch nicht ganz präzise. :)

LG
Muddy
05/12/2011 11:08 seltn#122
Sieht ja schonmal gut aus.
Und ja, Tradelist is viel wichtiger! :p

Aber, könnte man nicht nur 1 "Kästchen" machen, in dem dann ein Fragezeichen,Haken, oder Kreis erscheint und somit den queststatus wiedergibt?
Wäre ein wenig platzsparender, wenn noch etwas anderes den Platz beanspruchen sollte.

Lg Seltn
05/12/2011 15:57 GruenerApfel#123
Quote:
Originally Posted by seltn View Post
Sieht ja schonmal gut aus.
Und ja, Tradelist is viel wichtiger! :p

Aber, könnte man nicht nur 1 "Kästchen" machen, in dem dann ein Fragezeichen,Haken, oder Kreis erscheint und somit den queststatus wiedergibt?
Wäre ein wenig platzsparender, wenn noch etwas anderes den Platz beanspruchen sollte.

Lg Seltn
glaub die 3 kästchen jeweils sind für die schwierigkeitsgrade ... und die kannst so net zusammenfassen :p
05/12/2011 16:08 seltn#124
Quote:
Originally Posted by GruenerApfel View Post
glaub die 3 kästchen jeweils sind für die schwierigkeitsgrade ... und die kannst so net zusammenfassen :p
*brainlagg off

:D glaube du hast recht!

Lg
05/13/2011 17:23 Muddy Waters#125
So, nach rund 3 Stunden Fummelei habe ich sowas wie einen Ansatz einer eigenen Tooltip Klasse. :)

Gibt zwar teilweise noch etwas Probleme was die Positionierung angeht, aber ich finde es schonmal besser als vorher:

Das Draw Event habe ich wie folgt definiert:
Code:
void AdvancedToolTip_Draw(object sender, DrawToolTipEventArgs e)
{
	int i, j, k, _colorId;
	char _lineSeperator;
	float _lineHeight;
	string _drawnString;
	string[] _disjoinedLine, _descText, _descLines;
	Regex _colorCodes = new Regex("ÿc[0-9]", RegexOptions.IgnoreCase);
	PointF _drawPos = new Point();
	SolidBrush _brush = new SolidBrush(Global.Constants.COLOR_NORMAL);

	if(e.ToolTipText.IndexOf("\n") > -1)
		_lineSeperator = '\n';
	else
		_lineSeperator = '|';

	_descText = _colorCodes.Replace(e.ToolTipText, "", 1000).Split(_lineSeperator);
	_descLines = e.ToolTipText.Split(_lineSeperator);
	_lineHeight = e.Graphics.MeasureString("DUMMY", this.Font).Height;   

	e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
	e.DrawBackground();

	for(i = 0; i < _descLines.Length; i++)
	{
		if(i < 2)
			this.Font = new Font(this.Font, FontStyle.Bold);
		else
			this.Font = new Font(this.Font, FontStyle.Regular);

		_drawPos.Y = i * _lineHeight;
		_disjoinedLine = _descLines[i].Split('ÿ');

		for(j = 0; j < _disjoinedLine.Length; j++)
		{
			if(j == 0)
				_drawPos.X = e.Bounds.Size.Width / 2.0F - e.Graphics.MeasureString(_descText[i], this.Font).Width / 2.0F; // The initial X-offset is determined using the width of the full line without color codes.
			else
			{
				// Determine which part of this line has already been drawn in order to determine the X-offset for the next line segment.
				_drawnString = "";

				for(k = 0; k < j; k++)
					_drawnString += _disjoinedLine[k];
				
				_drawPos.X += e.Graphics.MeasureString(_drawnString, this.Font).Width;
			}

			try
			{
				if(_disjoinedLine[j].StartsWith("c"))
				{
					// ToInt32 will raise an exeption if the second character of the string is not a number..
					_colorId = Convert.ToInt32(_disjoinedLine[j].Substring(1, 1));

					switch(_colorId)
					{
						case 0:
							_brush = new SolidBrush(Global.Constants.COLOR_NORMAL);
							break;
						case 1:
							_brush = new SolidBrush(Global.Constants.COLOR_INVALID);
							break;
						case 2:
							_brush = new SolidBrush(Global.Constants.COLOR_SET);
							break;
						case 3:
							_brush = new SolidBrush(Global.Constants.COLOR_MAGIC);
							break;
						case 4:
							_brush = new SolidBrush(Global.Constants.COLOR_UNIQUE);
							break;
						case 5:
							_brush = new SolidBrush(Global.Constants.COLOR_ETHEREAL);
							break;
						case 8:
							_brush = new SolidBrush(Global.Constants.COLOR_CRAFTED);
							break;
						case 9:
							_brush = new SolidBrush(Global.Constants.COLOR_RARE);
							break;
					}

					// Remove the color code after setting the brush.
					_disjoinedLine[j] = _disjoinedLine[j].Substring(2);
				}
			}
			finally
			{
				if(_disjoinedLine[j] != "")
					e.Graphics.DrawString(_disjoinedLine[j], this.Font, _brush, _drawPos.X, _drawPos.Y);
			}
		}          
	}
}
Mal schauen, ob ich das noch irgendwie optimiert bekomme, ganz zufrieden bin ich damit noch nicht. :rolleyes:
Es stört vor allem noch die Größe des Hintergrund Rechtecks, auch wenn ich noch nicht wirklich eine Idee habe, wie ich das am besten Ändern kann. :(

Ich werde meinen Fokus jetzt aber trotzdem erstmal wieder auf die Trade List verlegen, die steht schließlich immernoch aus.

Soviel zum Zwischenstand. :)

LG
Muddy
05/14/2011 13:47 Shizn#126
Muddy, ich möche dir hiermit für deine super Arbeit danken.
Ich denke fast jeder, der ein paar Mules hat sucht sowas schon ewig.
Ich habe mal das Tool von India ausprobiert, aber das ist ja nichts im Vergleich zu diesem göttlichem Programm.
Mir gefiel die Auflistung der Items einfach komplett nicht.
Hier gibst du sogar nen Screen vom Inv mit + Suchfunktion.
Ich könnte heulen vor Freude :D

<3<3<3 Muddy <3<3<3

MfG Shizn ;)
05/14/2011 15:25 Muddy Waters#127
Quote:
Originally Posted by Shizn View Post
Muddy, ich möche dir hiermit für deine super Arbeit danken.
Ich denke fast jeder, der ein paar Mules hat sucht sowas schon ewig.
Ich habe mal das Tool von India ausprobiert, aber das ist ja nichts im Vergleich zu diesem göttlichem Programm.
Mir gefiel die Auflistung der Items einfach komplett nicht.
Hier gibst du sogar nen Screen vom Inv mit + Suchfunktion.
Ich könnte heulen vor Freude :D

<3<3<3 Muddy <3<3<3

MfG Shizn ;)
Ich glaube dann bin ich dir mit dem kommenden Update eine Packung Taschentücher gegen die Tränen schuldig - das wird nämlich noch sehr viel besser. :D

__________________

Ich muss zugeben, ich bin gerade etwas hin- und hergerissen, was die weitere Auslegung der Trade List angeht.

So sieht das derzeit aus:

Wobei ich daraus folgende Trade List generiert habe:
Das ist offensichtlich etwas zuviel des guten und recht unübersichtlich.
Auch wenn man bei dem Versuch das zu ändern vor dem schon genannten Problem mit der Formatierung steht.
Ich denke nun, ich werde dazu übergehen, das Ausgabeformat über einen Formatierungsstring frei wählbar zu machen.
Auch wenn dies bedeutet, dass ich Settings exportieren und beim Start laden muss, also nochmal ein bisschen Mehraufwand. Wenn ich das frei formatierbar mache, muss ich das aber auf alle Fälle so umsetzen, denn ansonsten müsste man die Einstellungen nach jedem Neustart neu vornehmen. :rolleyes:

Für obiges Beispiel sähe ein Formatierungsstring dann beispielsweise so aus:
Code:
"<Desc> <Comment>"
Mit dem und noch ein paar anderen Festlegungen könnte man das ganze relativ frei wählbar machen.

Wäre so eine Lösung aus eurer Sicht geeignet oder habt ihr bessere Ideen? :)

LG
Muddy
05/18/2011 00:24 letsid#128
Ich definiere mal eine Userstory:

Als User hätte es gerne, wenn der Bot sich nacheinander, mit gebürenem Abstand auf alle meine Mule Accounts einloggt und die Chars durchgeht.
(Mule Accounts in einer Config oder Text Datei ablegen)

Hintergrund:
Es nerft tierisch alle 3 Chars das modem restarten zu müssen und warum arbeit machen wenns auch automatisch geht ;)
05/18/2011 18:01 DeathFromHeaven#129
nimm doch den MuleLogger von, IDevil war der glaub ich, und steck ihm die libs und den entry-Point ein, schon haste einen Bot der alle Mule-Accounts durchgeht und loggt :)
05/18/2011 21:40 letsid#130
Ich habe nur eine user story definiert, (Ein Teil des Scrum System das im Bereich des Developments zum einsatz kommt).
Der Grund dafür ist dass es denke ich einen erheblichen mehr wert bringt.
05/18/2011 22:10 Muddy Waters#131
Was du alles für Sachen kennst. :cool:

Ich persönlich sehe das Schreiben der Logfiles eher unkritisch, denn normal ist es ja so gedacht, dass man ohnehin immer mit dem passenden Entry Point reingeht und sich das Loggen mehrerer Mulis gar nicht erst ergibt.
Darum wäre so ein Feature nur sehr kurz von Nutzen und danach absolut obsolet. Ich behalte es darum nur entfernt im Hinterkopf. ;)

Achja, ich denke am Wochenende werde ich mit dem neuen Update soweit durch sein. Gibt zwar noch ein paar Punkte, die man optimieren kann, aber die Fülle an neuen Features ist auch so schon ganz ansehnlich und rechtfertigt ein Release. :)

Hier ein Bildchen, des neuen, etwas kompakteren Layouts (dafür habe ich auf die Skalierbarkeit verzichtet, weil schlecht umsetzbar):

LG
Muddy
05/18/2011 23:34 letsid#132
Natürlich habe ich inzwischen auch alle meine mules geaddet (12 accounts a 8 chars die sich in 3 wochen nun angesammelt haben) und mule nun immer mit dem passenden entry point, trotzdem war die initialisierung bull**** ;)

Achja Ahnung hab ich davon recht wenig, ich soll mir immer nur user storys ausdenken ;)
05/21/2011 10:46 DjCybo#133
Super! Seit heute darf ich ihn auch endlich benutzten!
Ist ein super Tool!
War wohl nur zu schnell... ^^
Habe mir jetzt nach den ersten 3 Chars 'nen Tempban zugezogen...
Aber ich werde weiter machen!

Danke dafür, Muddy!
05/22/2011 02:41 letsid#134
Sag mal muddy, ist es möglich, dass ich in meinen normalen bot die funktion einbaue für das mule management? also das jeder char der sich mit dem bot einloggt gescannt wird?

Ich benutze automule, und dann hätte ich immer eine schäne übersicht, was auf welchem char ist ;)
05/22/2011 12:26 DjCybo#135
Quote:
Originally Posted by letsid View Post
Sag mal muddy, ist es möglich, dass ich in meinen normalen bot die funktion einbaue für das mule management? also das jeder char der sich mit dem bot einloggt gescannt wird?

Ich benutze automule, und dann hätte ich immer eine schäne übersicht, was auf welchem char ist ;)
Auch wenn ICH NICHT Muddy bin:
Wende dich damit besser an ldevil, da er ja das Automule für Muddy gebaut hat.

€dit: Wobei ich diese Option übrigens auch toll fände! :D