Register for your free account! | Forgot your password?

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

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

Advertisement



[Release] Muddy's Mule Manager V1.2.1

Discussion on [Release] Muddy's Mule Manager V1.2.1 within the Diablo 2 Programming forum part of the Diablo 2 category.

Reply
 
Old 05/12/2011, 00:14   #121
Administrator
 
Muddy Waters's Avatar
 
elite*gold: 41364
Join Date: Jan 2010
Posts: 22,727
Received Thanks: 12,653
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
Muddy Waters is offline  
Thanks
1 User
Old 05/12/2011, 11:08   #122
 
seltn's Avatar
 
elite*gold: 0
Join Date: Apr 2010
Posts: 339
Received Thanks: 68
Sieht ja schonmal gut aus.
Und ja, Tradelist is viel wichtiger!

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
seltn is offline  
Old 05/12/2011, 15:57   #123
 
elite*gold: 0
Join Date: Mar 2009
Posts: 382
Received Thanks: 45
Quote:
Originally Posted by seltn View Post
Sieht ja schonmal gut aus.
Und ja, Tradelist is viel wichtiger!

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
GruenerApfel is offline  
Thanks
1 User
Old 05/12/2011, 16:08   #124
 
seltn's Avatar
 
elite*gold: 0
Join Date: Apr 2010
Posts: 339
Received Thanks: 68
Quote:
Originally Posted by GruenerApfel View Post
glaub die 3 kästchen jeweils sind für die schwierigkeitsgrade ... und die kannst so net zusammenfassen
*brainlagg off

glaube du hast recht!

Lg
seltn is offline  
Old 05/13/2011, 17:23   #125
Administrator
 
Muddy Waters's Avatar
 
elite*gold: 41364
Join Date: Jan 2010
Posts: 22,727
Received Thanks: 12,653
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.
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
Muddy Waters is offline  
Old 05/14/2011, 13:47   #126
 
Shizn's Avatar
 
elite*gold: 0
Join Date: Aug 2006
Posts: 106
Received Thanks: 14
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

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

MfG Shizn
Shizn is offline  
Old 05/14/2011, 15:25   #127
Administrator
 
Muddy Waters's Avatar
 
elite*gold: 41364
Join Date: Jan 2010
Posts: 22,727
Received Thanks: 12,653
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

<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.

__________________

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.

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
Muddy Waters is offline  
Old 05/18/2011, 00:24   #128
 
elite*gold: 0
Join Date: Aug 2004
Posts: 233
Received Thanks: 39
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
letsid is offline  
Old 05/18/2011, 18:01   #129
 
elite*gold: 0
Join Date: Aug 2009
Posts: 435
Received Thanks: 159
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
DeathFromHeaven is offline  
Old 05/18/2011, 21:40   #130
 
elite*gold: 0
Join Date: Aug 2004
Posts: 233
Received Thanks: 39
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.
letsid is offline  
Old 05/18/2011, 22:10   #131
Administrator
 
Muddy Waters's Avatar
 
elite*gold: 41364
Join Date: Jan 2010
Posts: 22,727
Received Thanks: 12,653
Was du alles für Sachen kennst.

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
Muddy Waters is offline  
Thanks
3 Users
Old 05/18/2011, 23:34   #132
 
elite*gold: 0
Join Date: Aug 2004
Posts: 233
Received Thanks: 39
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
letsid is offline  
Old 05/21/2011, 10:46   #133
 
elite*gold: 160
Join Date: Apr 2011
Posts: 77
Received Thanks: 18
Thumbs up

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!
DjCybo is offline  
Old 05/22/2011, 02:41   #134
 
elite*gold: 0
Join Date: Aug 2004
Posts: 233
Received Thanks: 39
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
letsid is offline  
Old 05/22/2011, 12:26   #135
 
elite*gold: 160
Join Date: Apr 2011
Posts: 77
Received Thanks: 18
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!
DjCybo is offline  
Reply


Similar Threads Similar Threads
[Release] Muddy's D2NT
01/25/2021 - Diablo 2 Programming - 7420 Replies
AnnouncementPlease note: development discontinued! / Bitte beachten: Entwicklung eingestellt! English I am discontinuing development of this version and will henceforth focus on bot development using D2BS. According to this, there won't be any major updates, but merely smaller bug fixes at best. Focusing on D2BS, I will decrease my efforts in supporting this project, since it has become way too time-consuming. I might still check this topic every now and then and offer my support, but...
Muddy's D2NT Help
07/29/2010 - Diablo 2 - 3 Replies
hi i just started to use the bot it work's great. how do i set up the skill's i use on my Sorc and pick up itme's? ..... if you reply to this post please use english
Mule Manager
05/07/2010 - Diablo 2 - 1 Replies
Ein, wie ich finde, für uns Botter ein sehr nützliches Programm. Ich habe die SuFu hier im Forum benutzt, aber nichts dergleichen gefunden. Ich fände ein solches Programm schon ziemlich nützlich. Ihr kennt das Durcheinander in euren Mule ja :D Hier ist der Link zu originalen Topic -> Click Nur leider scheint dieses Prgramm nicht mehr all zu aktuell zu sein. Ich bin mir auch nicht sicher, wie es funktioniert und ob dieses Programm "Safe" ist.



All times are GMT +1. The time now is 18:03.


Powered by vBulletin®
Copyright ©2000 - 2025, 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 ©2025 elitepvpers All Rights Reserved.