[Release] Muddy's D2NT

07/21/2011 18:48 Talltree#2581
hab versucht nen shrine catcher zum laufen zu bringen aber irgendwie funktioniert das nicht wirklich... hab alle ntbotgame.ntj in mwbotgame.ntj geändert wie es in alles anderen files auch der fall ist... aber mhhhhhh funkt alles nicht -.-
07/21/2011 19:00 DeathFromHeaven#2582
welchen shrine catcher, also wo haste das original her, vlt einfach mal in ner Code-Box posten, dann kann man dir eher helfen :P
07/21/2011 19:39 Talltree#2583
Code:
function NTMain()
{
	Include("libs/common/NTCommon.ntl");
	NTC_IncludeLibs();
	NTC_IncludeConfig("NTBot/char_configs");

	NT_LoadConfig();
	NTSI_LoadNIPFiles("NTBot/item_configs");

	NTA_Initialize();

	if(!NTTM_CheckAct())
	{
		NTC_SendMsgToScript("MWBotGame.ntj", "NTTM_CheckAct()");
		return;
	}

	NTTMGR_TownManager();

	if(!NTTM_TownMove("waypoint"))
	{
		NTC_SendMsgToScript("MWBotGame.ntj", "NTTM_TownMove()");
		return;
	}

	if(!NTM_TakeWaypoint(3))
	{
		NTC_SendMsgToScript("MWBotGame.ntj", "NTM_TakeWaypoint()");
		return;
	}

	FindShrines();
	
	if(me.areaid != 1)
	{
		if(!NTM_MoveToPresetUnit(2, NTC_UNIT_OBJECT, 83))
			NTM_MoveToPresetUnit(2, NTC_UNIT_OBJECT, 2);
			
		FindShrines();
	}
	
	if(me.areaid != 1)
	{
		if(!NTM_MoveToStair(3, 9))
		{
			NTC_SendMsgToScript("MWBotGame.ntj", "NTM_MoveToStair()");
			return;
		}	
   if(!NTM_MoveToStair(4, 10))
		{
			NTC_SendMsgToScript("MWBotGame.ntj", "NTM_MoveToStair()");
			return;
		}
	FindShrines();
	}
	if(me.areaid != 1)
	{
	if(!NTM_MoveToStair(4, 10))
		{
			NTC_SendMsgToScript("MWBotGame.ntj", "NTM_MoveToStair()");
			return;
		}
	    if(!NTM_TakeStair(10))
    {
        NTC_SendMsgToScript("MWBotGame.ntj", "NTM_TakeStair()");
        return;
    }
	if(!NTM_MoveToStair(10, 5))
		{
			NTC_SendMsgToScript("MWBotGame.ntj", "NTM_MoveToStair()");
			return;
		}
	    if(!NTM_TakeStair(5))
    {
        NTC_SendMsgToScript("MWBotGame.ntj", "NTM_TakeStair()");
        return;
    }
	FindShrines();
	}
	if(me.areaid != 1)
	{
		if(!NTM_MoveToStair(6, 11))
		{
			NTC_SendMsgToScript("MWBotGame.ntj", "NTM_MoveToStair()");
			return;
		}
	FindShrines();
	}
	
	NTC_SendMsgToScript("MWBotGame.ntj", "SCRIPT_END");
	}
	
		
function FindShrines()	
{
	var ShrineIds = [2, 83, 85, 86, 93, 96, 97, 109, 116, 120, 123, 124, 133, 134, 135, 136, 150, 151, 172, 173, 184, 190, 191, 197, 199, 200, 201, 226, 231, 232, 260, 275, 276, 277, 278, 279, 282, 299, 300, 303, 325, 361, 414, 415, 421, 422, 423, 427, 428, 464, 465, 472, 479, 483, 484, 488, 491, 492, 495, 497, 499, 503, 509, 512, 520, 521, 522];
	var ShrineLocs = [];
	
	var unit = GetPresetUnits(me.areaid);
	
	if(unit)
	{		
		for (var j = 0; j < unit.length; j++){
			for (var c = 0; c < ShrineIds.length; c++){				
				if (ShrineIds[c] == unit[j].id){
						ShrineLocs.push([unit[j].roomx*5+unit[j].x + 3,unit[j].roomy*5+unit[j].y])					
				}
			}
		}
	}
	
	while(ShrineLocs.length > 0)
	{
		ShrineLocs.sort(SortRoomInt);
		var _room = ShrineLocs.shift();
		NTM_MoveTo(me.areaid, _room[0], _room[1], 9, 0);		
		var shrine = NTC_FindUnit(NTC_UNIT_OBJECT, "shrine");
		if(shrine){
			do{		
				if(GetDistance(me.x,me.y,shrine.x,shrine.y)<10){
					if(shrine.shrinetype == 15)
					{
								NTM_MakeTP();
								NTA_ClearPosition(20);
								NTM_UsePortal("BluePortal");
								break;

					}
				}
			}while(shrine.GetNext());
		}
		if(me.areaid != 1)
			break;
	}	
}

function SortRoomInt(a, b)
{
	if(GetDistance(me.x, me.y, a[0], a[1]) < GetDistance(me.x, me.y, b[0], b[1]))
		return -1;

	return 1;
}
den hier. alles schon auf Muddys abgeändert, würde gerne noch mehr scripts und so benutzen aber Muddys scheint so stark verändert zu sein das ich nichtmal eine Early Ladder pickit benutzen kann... schade eigentlich....

ich hab mit müh und not geschafft mir nen hammerdin eq und nen echt extrem billiges Sorc Equip zusammen zu traden, und hab auch soweit nun alles für die beiden, bloß hab halt sonst NIX, und ne andere pickit die nicht so "krass" perfekten kram aufhebt ist halt mein nächstes großes ziel. sonst finde ich Speziell das Sorc händling von Muddys einfach perfekt, nie so gutes ausweichen gesehen, und meine Sorc hat wie gesagt echt verflucht schelchtes Gear an, kann trotzdem ohne probleme Hell botten ^^
07/22/2011 09:04 DeathFromHeaven#2584
hmm das einzige was mir auffält, es müsste am Anfang MWC_Initialize heißen und nicht NTA_... aber das sollte es eigentlich nicht am laufen hindern :(

was gibt er denn für ne Fehlermeldung aus? Hast du es schon mit Manager-Restart nach dem einfügen der neuen Scripte versucht?

Und was die NIPFiles angeht, da hat sich bei Muddy fast nix geändert, ich glaub nur MaxMana anstatt MaxMP bin mir da aber nicht ganz sicher :D

Edit: also bei mir läuft er, auch mit NTA_Initialize keine Ahnung warum er das bei dir nicht tut :(
07/22/2011 12:57 Talltree#2585
mit der weile bin ich auf den etal umgestiegen... find das leech script und alles sehr nett bei dem :> wobei das handling für fire UND ice imune ziemlich kacke ist *g*. naja MW version is immernoch für MF besser, Etal für Baal, und für baal brauch ich ja das shrine script also hat sich das erledigt.


Find btw ziemlich lustig das fast JEDE D2NT version Muddy Waters in den Credits erwähnt :>
07/22/2011 13:21 muh999#2586
hey der Bot ist echt super nur habe da zwei Probleme.
1. Der Bot nimmt keine Goldenen Gegenstände auf nur Set kram
2.Der Bot verkauft all meine Gegenstände die er findet und er nimmt Blaue Gegenstände auf um sie zu verkaufen aber das will ich auch nicht :D
hoffe ihr könnt mir helfen.
07/22/2011 13:37 Muddy Waters#2587
Quote:
Originally Posted by Thomas Gürtler View Post
gibts bei muddys d2nt version eigentlich ein codia baal script oder muss man da mit anderem botscript aushelfen ? hätte nix gefunden oder macht der das automatisch.

spiel mit nem hdin und ner light soso, aber da die soso immer mitten in die Monster reitelt mit Bluebirds d2nt möchte ich muddys verwenden, oder geht das nicht.

bzw, wenns nicht geht kennt wer einen BOT der für dia und baalruns optmiert ist un mit ner light soso und hdin funzt? weil kuk funkt ja nur mit hdins was ich so gelesen habe oder?
Also meine Version ist dafür definitiv nicht optimiert, ich denke da müsstest du dir mit Scripten von Dritten aushelfen. ;)

Quote:
Originally Posted by TheCrazy11 View Post
Ich weiß jetzt aus dem Kopf keine Funktion.
Man kann es schlampig über die NTC_InMyParty(LeaderName) machen, wenn jedoch die for-Schleife zu lange läuft, verliert man auch einiges an Zeit.

Also machen wir einfach eine neue Funktion auf Basis der NTC_InMyParty(playerName):
Code:
function NTC_InMyGame(playerName)
{
	var _player;

	_player = GetPlayerUnit();
	
	if(arguments.length < 1 || !playerName)
		return false;

	if(_player)
	{
		do
		{
			if(_player.name.toLowerCase() == playerName.toLowerCase())
				return true;
		} while(_player.GetNext());
	}

	return false;
}
Diese einfach in die NTCommon.ntl einfügen und in den Scripts verwenden.
Wo genau siehst du dort denn einen größeren Zeitverlust? Die einfach verkettete Liste _player kann maximal aus 8 PlayerUnits bestehen, ansonsten wird in der Schleife wenig gemacht und Delays gibt es auch keine.
Ich denke selbst im schlimmsten Fall sollte die Laufzeit der Funktion bei deutlich unter 50ms liegen, insofern würde ich das Zeitproblem nicht sehen. ;)

Quote:
Originally Posted by Talltree View Post
Code:
function NTMain()
{
	Include("libs/common/NTCommon.ntl");
	NTC_IncludeLibs();
	NTC_IncludeConfig("NTBot/char_configs");

	NT_LoadConfig();
	NTSI_LoadNIPFiles("NTBot/item_configs");

	NTA_Initialize();

	if(!NTTM_CheckAct())
	{
		NTC_SendMsgToScript("MWBotGame.ntj", "NTTM_CheckAct()");
		return;
	}

	NTTMGR_TownManager();

	if(!NTTM_TownMove("waypoint"))
	{
		NTC_SendMsgToScript("MWBotGame.ntj", "NTTM_TownMove()");
		return;
	}

	if(!NTM_TakeWaypoint(3))
	{
		NTC_SendMsgToScript("MWBotGame.ntj", "NTM_TakeWaypoint()");
		return;
	}

	FindShrines();
	
	if(me.areaid != 1)
	{
		if(!NTM_MoveToPresetUnit(2, NTC_UNIT_OBJECT, 83))
			NTM_MoveToPresetUnit(2, NTC_UNIT_OBJECT, 2);
			
		FindShrines();
	}
	
	if(me.areaid != 1)
	{
		if(!NTM_MoveToStair(3, 9))
		{
			NTC_SendMsgToScript("MWBotGame.ntj", "NTM_MoveToStair()");
			return;
		}	
   if(!NTM_MoveToStair(4, 10))
		{
			NTC_SendMsgToScript("MWBotGame.ntj", "NTM_MoveToStair()");
			return;
		}
	FindShrines();
	}
	if(me.areaid != 1)
	{
	if(!NTM_MoveToStair(4, 10))
		{
			NTC_SendMsgToScript("MWBotGame.ntj", "NTM_MoveToStair()");
			return;
		}
	    if(!NTM_TakeStair(10))
    {
        NTC_SendMsgToScript("MWBotGame.ntj", "NTM_TakeStair()");
        return;
    }
	if(!NTM_MoveToStair(10, 5))
		{
			NTC_SendMsgToScript("MWBotGame.ntj", "NTM_MoveToStair()");
			return;
		}
	    if(!NTM_TakeStair(5))
    {
        NTC_SendMsgToScript("MWBotGame.ntj", "NTM_TakeStair()");
        return;
    }
	FindShrines();
	}
	if(me.areaid != 1)
	{
		if(!NTM_MoveToStair(6, 11))
		{
			NTC_SendMsgToScript("MWBotGame.ntj", "NTM_MoveToStair()");
			return;
		}
	FindShrines();
	}
	
	NTC_SendMsgToScript("MWBotGame.ntj", "SCRIPT_END");
	}
	
		
function FindShrines()	
{
	var ShrineIds = [2, 83, 85, 86, 93, 96, 97, 109, 116, 120, 123, 124, 133, 134, 135, 136, 150, 151, 172, 173, 184, 190, 191, 197, 199, 200, 201, 226, 231, 232, 260, 275, 276, 277, 278, 279, 282, 299, 300, 303, 325, 361, 414, 415, 421, 422, 423, 427, 428, 464, 465, 472, 479, 483, 484, 488, 491, 492, 495, 497, 499, 503, 509, 512, 520, 521, 522];
	var ShrineLocs = [];
	
	var unit = GetPresetUnits(me.areaid);
	
	if(unit)
	{		
		for (var j = 0; j < unit.length; j++){
			for (var c = 0; c < ShrineIds.length; c++){				
				if (ShrineIds[c] == unit[j].id){
						ShrineLocs.push([unit[j].roomx*5+unit[j].x + 3,unit[j].roomy*5+unit[j].y])					
				}
			}
		}
	}
	
	while(ShrineLocs.length > 0)
	{
		ShrineLocs.sort(SortRoomInt);
		var _room = ShrineLocs.shift();
		NTM_MoveTo(me.areaid, _room[0], _room[1], 9, 0);		
		var shrine = NTC_FindUnit(NTC_UNIT_OBJECT, "shrine");
		if(shrine){
			do{		
				if(GetDistance(me.x,me.y,shrine.x,shrine.y)<10){
					if(shrine.shrinetype == 15)
					{
								NTM_MakeTP();
								NTA_ClearPosition(20);
								NTM_UsePortal("BluePortal");
								break;

					}
				}
			}while(shrine.GetNext());
		}
		if(me.areaid != 1)
			break;
	}	
}

function SortRoomInt(a, b)
{
	if(GetDistance(me.x, me.y, a[0], a[1]) < GetDistance(me.x, me.y, b[0], b[1]))
		return -1;

	return 1;
}
den hier. alles schon auf Muddys abgeändert, würde gerne noch mehr scripts und so benutzen aber Muddys scheint so stark verändert zu sein das ich nichtmal eine Early Ladder pickit benutzen kann... schade eigentlich....

ich hab mit müh und not geschafft mir nen hammerdin eq und nen echt extrem billiges Sorc Equip zusammen zu traden, und hab auch soweit nun alles für die beiden, bloß hab halt sonst NIX, und ne andere pickit die nicht so "krass" perfekten kram aufhebt ist halt mein nächstes großes ziel. sonst finde ich Speziell das Sorc händling von Muddys einfach perfekt, nie so gutes ausweichen gesehen, und meine Sorc hat wie gesagt echt verflucht schelchtes Gear an, kann trotzdem ohne probleme Hell botten ^^
Ich würde mal vermuten, du hast nach dem Einfügen des neuens Scripts einfach keinen Neustart des Managers gemacht, denn der ist in diesem Fall immer notwendig, weil dem Script ansonsten kein Objekt zugeordnet ist und es im folgenden nicht gefunden werden kann.

Zu den Nips:
Dort habe ich tatsächlich nicht viel verändert, an sich sollten die gängigen Nip Sammlungen durchweg kompatibel sein, im Zweifelsfall einfach mal per Nip Checker aus dem Startpost prüfen. ;)

Quote:
Originally Posted by Talltree View Post
mit der weile bin ich auf den etal umgestiegen... find das leech script und alles sehr nett bei dem :> wobei das handling für fire UND ice imune ziemlich kacke ist *g*. naja MW version is immernoch für MF besser, Etal für Baal, und für baal brauch ich ja das shrine script also hat sich das erledigt.


Find btw ziemlich lustig das fast JEDE D2NT version Muddy Waters in den Credits erwähnt :>
Letzteres wird daran liegen, dass ich meine Sachen stets selbst entwickelt und keine Probleme durch bloßes Googlen gelöst habe. Dadurch haben viele meiner Funktionen und Scripte eine gewisse Originalität behalten. :)

Quote:
Originally Posted by muh999 View Post
hey der Bot ist echt super nur habe da zwei Probleme.
1. Der Bot nimmt keine Goldenen Gegenstände auf nur Set kram
2.Der Bot verkauft all meine Gegenstände die er findet und er nimmt Blaue Gegenstände auf um sie zu verkaufen aber das will ich auch nicht :D
hoffe ihr könnt mir helfen.
1. Dann passe deine Nips entsprechend an, eine kleine Einweisung findest du etwa [Only registered and activated users can see links. Click Here To Register...].
2. Initialisiere die Variable MWConfig_PickUpMoneymakers in der globalen Config mit false.

LG
Muddy
07/22/2011 13:49 Talltree#2588
Quote:
Originally Posted by Muddy_Waters View Post
Letzteres wird daran liegen, dass ich meine Sachen stets selbst entwickelt und keine Probleme durch bloßes Googlen gelöst habe. Dadurch haben viele meiner Funktionen und Scripte eine gewisse Originalität behalten. :)


LG
Muddy
find ich total cool :> gibt wenige leute die sich damit genug beschäftigen das sie so viel selbst coden, es gibt bestimmt noch einige sachen die man machen könnte (z.B automatisierte Quests) aber deine Scripts haben halt einen großen wiedererkennungswert :D
07/22/2011 13:50 DeathFromHeaven#2589
Hatte jetzt grade wieder ein Problem...
Hatte heute morgen ein neues Bot-script eingefügt, zu Testzwecken. Habe danach den Manager gestartet, und die Soso mit der NTBot.ntj das Shrinecatcher script getestet, funktionierte auch soweit...
Als ich gerade eben wieder starten wollte hatte ich das script aus der Config wieder rausgenommen. Starte also wieder den Manager und meine 3 Bots, der Pala mit der NTBot.ntj und die Soso und der Dudu, mit der NTBotLeech.ntj. Jetzt blieben aber beide Bots mit der NTBotLeech.ntj beim Splash schrim hängen und im Manager stand "ewig" Loading.
Gut dachte ich mir, kenn ich ja schon das Problem, also Manager wieder ausgemacht, Botscript entfernt und alles war wieder wunderbar. Aber merkwürdig ist das schon... irgendeine Idee?

hier mal die verwendete NTBotLeech.ntj:
07/22/2011 15:18 The_Mog#2590
Hallo,

Bei mir Macht der Bot (der ansonsten einwandfrei läuft) probleme beim Verwenden von key.mpq's . Er benutzt sie sozusagen gar nicht. Habe es mit mehreren verschiedenen versucht. Er benutzt immer die Keys mit denen Dia installiert ist, was zur folge hat, dass ich keine 2 Instanzen von Diablo laufen lassen kann wegen "Der Key wird schon verwendet".

Mir ist aufgefallen, das D2NT nicht meckert, wenn ich absichtlich einen Key.mpq namen angebe, den es gar nicht gibt. Er startet einfach und ohne murren mit den installierten d2 keys.

Ich hoffe ihr könnt mir meinen Fehler zeigen.

Danke ssseeer
07/22/2011 15:18 muh999#2591
Jetzt klappt es das mein Bot Grüne und Goldene Gegenstände aufnimmt aber immer nur 1 und den rest lässt er liegen. wodrann kann das liegen?
07/22/2011 15:25 DeathFromHeaven#2592
vlt sind es einfach nur die falschen grünen/goldenen Sachen, die gar nicht in deinen Pickits auftauchen, weil sie eventuell zu low sind? weil soviel grün/gold droppt nun auch nicht :P
07/22/2011 17:21 The_Mog#2593
Kann mir hier wirklich niemand weiterhelfen? Das mag ich fast nicht glauben, da mir dieses Forum sonst als überaus kompetent erscheint.

Ich habe inzwischen noch einmal das Internet durchkämmt, jedoch nichts gefunden, was wirklich meinem Problem entspricht. Ich fand lediglich viele ähnlich geartete Probleme, deren lösungsansätze mir jedoch auch nicht weiterhalfen.
Der Versuch die Problematik zu umgehen, indem ich den gesammten D2 ordner kopiere und dann mit Sandys Key Changer den Key ändere, scheiterte daran, das sich Sandys bei diesem Versuch immer wieder aufhängt.

Ich wäre immer noch dankbar für Lösungsansätze:)
07/22/2011 17:39 TheCrazy11#2594
Quote:
Originally Posted by The_Mog View Post
Kann mir hier wirklich niemand weiterhelfen? Das mag ich fast nicht glauben, da mir dieses Forum sonst als überaus kompetent erscheint.

Ich habe inzwischen noch einmal das Internet durchkämmt, jedoch nichts gefunden, was wirklich meinem Problem entspricht. Ich fand lediglich viele ähnlich geartete Probleme, deren lösungsansätze mir jedoch auch nicht weiterhalfen.
Der Versuch die Problematik zu umgehen, indem ich den gesammten D2 ordner kopiere und dann mit Sandys Key Changer den Key ändere, scheiterte daran, das sich Sandys bei diesem Versuch immer wieder aufhängt.

Ich wäre immer noch dankbar für Lösungsansätze:)
Ich schätze mal, du verwendet Serby's Keychanger! ;)
Hast du bei wirklich den kompletten Namen der MPQ-Files im Loader angegeben z.B. Key1.mpq?
Auch ganz sicher, dass die Keyfiles nicht Key1.mpq.mpq heißen?
Und der Loader verwendet die Keyfiles nur, wenn du sie komplett richtig einträgst, wenn er das Keyfile nicht findet, verwendet er den Installationskey!
07/22/2011 17:42 Muddy Waters#2595
Quote:
Originally Posted by DeathFromHeaven View Post
Hatte jetzt grade wieder ein Problem...
Hatte heute morgen ein neues Bot-script eingefügt, zu Testzwecken. Habe danach den Manager gestartet, und die Soso mit der NTBot.ntj das Shrinecatcher script getestet, funktionierte auch soweit...
Als ich gerade eben wieder starten wollte hatte ich das script aus der Config wieder rausgenommen. Starte also wieder den Manager und meine 3 Bots, der Pala mit der NTBot.ntj und die Soso und der Dudu, mit der NTBotLeech.ntj. Jetzt blieben aber beide Bots mit der NTBotLeech.ntj beim Splash schrim hängen und im Manager stand "ewig" Loading.
Gut dachte ich mir, kenn ich ja schon das Problem, also Manager wieder ausgemacht, Botscript entfernt und alles war wieder wunderbar. Aber merkwürdig ist das schon... irgendeine Idee?

hier mal die verwendete NTBotLeech.ntj:
Also ich kann es ehrlich gesagt nicht ganz nachvollziehen, was dort falsch laufen könnte. Die Entry Points sind definitiv richtig?

Quote:
Originally Posted by The_Mog View Post
Hallo,

Bei mir Macht der Bot (der ansonsten einwandfrei läuft) probleme beim Verwenden von key.mpq's . Er benutzt sie sozusagen gar nicht. Habe es mit mehreren verschiedenen versucht. Er benutzt immer die Keys mit denen Dia installiert ist, was zur folge hat, dass ich keine 2 Instanzen von Diablo laufen lassen kann wegen "Der Key wird schon verwendet".

Mir ist aufgefallen, das D2NT nicht meckert, wenn ich absichtlich einen Key.mpq namen angebe, den es gar nicht gibt. Er startet einfach und ohne murren mit den installierten d2 keys.

Ich hoffe ihr könnt mir meinen Fehler zeigen.

Danke ssseeer
Eigentlich sollte das ohne weiteres Funktionieren, wenn du MPQs angibst.
Hier mal ein Kontrollbildchen, in etwa so sollte das bei dir auch aussehen:
[Only registered and activated users can see links. Click Here To Register...]

Quote:
Originally Posted by The_Mog View Post
Kann mir hier wirklich niemand weiterhelfen? Das mag ich fast nicht glauben, da mir dieses Forum sonst als überaus kompetent erscheint.

Ich habe inzwischen noch einmal das Internet durchkämmt, jedoch nichts gefunden, was wirklich meinem Problem entspricht. Ich fand lediglich viele ähnlich geartete Probleme, deren lösungsansätze mir jedoch auch nicht weiterhalfen.
Der Versuch die Problematik zu umgehen, indem ich den gesammten D2 ordner kopiere und dann mit Sandys Key Changer den Key ändere, scheiterte daran, das sich Sandys bei diesem Versuch immer wieder aufhängt.

Ich wäre immer noch dankbar für Lösungsansätze:)
Das fragst du nach 2 Stunden? :confused:
Es ist eigentlich für Foren durchaus üblich, Tage auf eine passende Antwort zu warten, darum würde ich nicht direkt nach wenigen Stunden ungeduldig werden. ;)

Wie dem auch sei, bitte stell erstmal sicher, dass nach obigen Bild alles soweit passt, ansonsten müssen wir mal witere Möglichkeiten in Erwägung ziehen, wobei mir dazu gerade nichts einfällt.

LG
Muddy