[Release] Muddy's D2NT

04/05/2011 08:19 BlackManta#1111
@Muddy
Das problem tritt nur bei dem Script und NUR auf Hell auf :/
04/05/2011 09:17 Muddy Waters#1112
Quote:
Originally Posted by fred9x9 View Post
Achja Muddy,

meine Classic Soso bedankt sich ganz artig,

die ist ja sowas vom Hocker gefallen :D

Her dreams came true :handsdown:

Danke, dass du es im Hinterkopf behalten hast
mit "NTConfig_AttackSkill[8] und [9]

Ganz l G
Fred
Sagen wir es stand auf meiner ToDo Liste. :)

Aber freut mich wenn es gefällt.

Quote:
Originally Posted by BlackManta View Post
@Muddy
Das problem tritt nur bei dem Script und NUR auf Hell auf :/
Vermutlich weil Madame Countess auch NUR auf Hell Feuer und Kälteimmun ist... :rolleyes:

Ich wäre dir sehr verbunden, wenn du dir den Beitrag auf den ich verwiesen habe auch durchliest. ;)

Lg
Muddy
04/05/2011 10:47 jexhammer#1113
So ich habe mich jetzt damit mal befasst und habe einen möglichst einfachen Weg gefunden Countess mit einer FB/FO Sorc zu killen.

Vorraussetzung ist ein Merc...

Modded Countess Script:

Code:
/**
*	This file was modified by [Only registered and activated users can see links. Click Here To Register...]
*	Check the programming section for updates and further scripts
*	Last Update: 02/27/2011
*/

function NTMain()
{
	Include("libs/common/NTCommon.ntl");
	NTC_IncludeLibs();
	NTC_IncludeConfig("NTBot/char_configs");

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

	MWC_Initialize();
	
	var _countess, _mapType;
	
	if(!NTTM_CheckAct(me.act, true))
	{
		NTC_SendMsgToScript("MWBotGame.ntj", NTTM_CheckAct, 20, me.act, true);
		return;
	}

	NTTMGR_TownManager();

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

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

	NTP_DoPrecast(true);

	for(var i = 0; i < 6; i++)
	{
		if(!NTM_MoveToStair(me.areaid, 20 + i))
		{
			NTC_SendMsgToScript("MWBotGame.ntj", NTM_MoveToStair, 44, me.areaid, 20 + i);
			return;
		}

		if(!NTM_TakeStair(20 + i))
		{
			NTC_SendMsgToScript("MWBotGame.ntj", NTM_TakeWaypoint, 50, 20 + i);
			return;
		}
	}

	NTA_ClearPosition(10, true, 2, false, true);

	if(me.y > 11060 && me.y <= 11078) // Countess northwest
	{
		_mapType = 0;
			
		if(!NTM_MoveTo(me.areaid, 12544, 11066))
		{
			NTC_SendMsgToScript("MWBotGame.ntj", NTM_MoveTo, 63, me.areaid, 12544, 11066);
			return;
		}
	}


	else // Countess northeast
	{
		_mapType = 1;
		
		if(!NTM_MoveTo(me.areaid, 12570, 11057))
		{
			NTC_SendMsgToScript("MWBotGame.ntj", NTM_MoveTo, 73, me.areaid, 12570, 11057);
			return;
		}
	}

	_countess = NTC_FindUnit(NTC_UNIT_MONSTER, GetLocaleString(2875), 10);
	
	if(!_countess)
	{
		NTC_SendMsgToScript("MWBotGame.ntj", NTC_FindUnit, 80, NTC_UNIT_MONSTER, GetLocaleString(2875), 10);
		return;
	}

	if(me.y > 11060 && me.y <= 11078)
	{
		if(_countess.y <= 11054)
			NTM_MoveTo(me.areaid, 12537, 11042);

		if(_countess.y > 11056 && _countess.y <= 11070)
		{
			if(_countess.x < 12533)
				NTM_MoveTo(me.areaid, 12518, 11057);
			else
				NTM_MoveTo(me.areaid, 12548, 11057);
		}

		if(_countess.y > 11070 && _countess.y <= 11085)
		{
			if(_countess.x < 12533)
				NTM_MoveTo(me.areaid, 12518, 11083);
			else
				NTM_MoveTo(me.areaid, 12548, 11083);
		}

		if(_countess.y > 11086)
			NTM_MoveTo(me.areaid, 12542, 11098);
	}
	else
	{
		if(_countess.x <= 12550)
		{
			NTM_MoveTo(me.areaid, 12562, 11057);
			NTM_MoveTo(me.areaid, 12548, 11043);
		}

		if(_countess.x > 12550 && _countess.x <= 12561)
		{
			if(_countess.y < 11027)
				NTM_MoveTo(me.areaid, 12577, 11043);
			else
			{
				NTM_MoveTo(me.areaid, 12565, 11043);
				NTM_MoveTo(me.areaid, 12577, 11025);
			}
		}

		if(_countess.x > 12561 && _countess.x <= 12579)
		{
			if(_countess.y < 11027)
				NTM_MoveTo(me.areaid, 12555, 11043);
			else
			{
				NTM_MoveTo(me.areaid, 12565, 11043);
				NTM_MoveTo(me.areaid, 12555, 11025);
			}
		}

		if(_countess.x > 12579)
		{
			NTM_MoveTo(me.areaid, 12578, 11057);
			NTM_MoveTo(me.areaid, 12582, 11043);
		}
	}

[COLOR="Red"]	if(NTConfig_ClearPosition)
		NTA_ClearPosition(30, true, 2, false, true);[/COLOR]

	if(!NTA_KillMonster(GetLocaleString(2875)))
	{
		NTC_SendMsgToScript("MWBotGame.ntj", NTA_KillMonster, 149, GetLocaleString(2875));
		return;
	}

	if(NTConfig_ClearPosition)
		NTA_ClearPosition(30, true, 2, false, true);

	NTSI_PickItems();
	
	if(MWConfig_ClearCountessRoomsSpectype > 0)
	{
		if(_mapType == 0)
		{
			// Clear right room
			if(!NTM_MoveTo(me.areaid, 12609, 11021))
			{
				NTC_SendMsgToScript("MWBotGame.ntj", NTM_MoveTo, 165, me.areaid, 12609, 11021);
				return;
			}
			
			NTA_ClearPosition(25, true, 0, true, true, MWConfig_ClearCountessRoomsSpectype);
		
			// Clear left room
			if(!NTM_MoveTo(me.areaid, 12609, 11117))
			{
				NTC_SendMsgToScript("MWBotGame.ntj", NTM_MoveTo, 174, me.areaid, 12609, 11117);
				return;
			}
		
			NTA_ClearPosition(25, true, 0, true, true, MWConfig_ClearCountessRoomsSpectype);
			
			// Clear center room
			if(!NTM_MoveTo(me.areaid, 12591, 11070))
			{
				NTC_SendMsgToScript("MWBotGame.ntj", NTM_MoveTo, 188, me.areaid, 12591, 11070);
				return;
			}
		
			NTA_ClearPosition(35, true, 0, true, true, MWConfig_ClearCountessRoomsSpectype);
		}
		else
		{
			// Clear right room
			if(!NTM_MoveTo(me.areaid, 12614, 11104))
			{
				NTC_SendMsgToScript("MWBotGame.ntj", NTM_MoveTo, 194, me.areaid, 12614, 11104);
				return;
			}
			
			NTA_ClearPosition(25, true, 0, true, true, MWConfig_ClearCountessRoomsSpectype);
		
			// Clear left room
			if(!NTM_MoveTo(me.areaid, 12523, 11104))
			{
				NTC_SendMsgToScript("MWBotGame.ntj", NTM_MoveTo, 203, me.areaid, 12523, 11104);
				return;
			}
		
			NTA_ClearPosition(25, true, 0, true, true, MWConfig_ClearCountessRoomsSpectype);
			
			// Clear center room
			if(!NTM_MoveTo(me.areaid, 12569, 11090))
			{
				NTC_SendMsgToScript("MWBotGame.ntj", NTM_MoveTo, 212, me.areaid, 12569, 11090);
				return;
			}
		
			NTA_ClearPosition(35, true, 0, true, true, MWConfig_ClearCountessRoomsSpectype);
		}
	}

	NTC_SendMsgToScript("MWBotGame.ntj", "SCRIPT_END");
}
In der Charconfig das ändern:
Code:
	// Define when a monster is considered immune by entering the index of one or more of your attack skills. As an example: [1, 3] means that a monster is considered immune if it is immune to both NTConfig_AttackSkill[1] and NTConfig_AttackSkill[3], whatever those may be.
	MWConfig_CheckImmunitySkills = [0, 1];
	
	// Select the behaviour of your character when encountering a monsters that is considered immune referring to the definition above.
	// 0: Don't do anything. (D2NT default)
	// 1: Get close to the monster, use static field if the monster is not immune to lightning.
	// 2: Skip the monster.
	// 3: Attack the monster using NTConfig_AttackSkill[8] and NTConfig_AttackSkill[9]
	NTConfig_BehaviourOnImmuneMonster = [COLOR="Red"]3[/COLOR];
	
	NTConfig_AttackSkill[8] = [COLOR="Red"]MWS_FIRE_BAL[/COLOR]L;	// Skill to be used against user defined immunes.
Der Effekt ist einfach, dass ihr erst alle Monster drumherum killt und danach der Merc ganz entspannt Countess killt ohne das ihr von jemand anderes angegriffen werdet. Vielleicht hilft das euch bei mir gehts 1A
04/05/2011 11:52 bloodydeluxe#1114
bot läuft soweit eigentlich richtig gut, danke dafür erstma :)

aber folgendes problem:

mein sorc portet oft obwohl sie garkeine hits vom "boss" abbekommt, sondern wenn der merc im life droppt. blöderweise wird sie danach oft vom boss gehittet und wegen relativ schlechtem gear bedeuted das automatisch nen chicken. lässt es sich irgendwo einstellen das dieses ausweichen nur triggert wenn ich auch wirklich hits abbekomme?
04/05/2011 11:57 Muddy Waters#1115
Quote:
Originally Posted by bloodydeluxe View Post
bot läuft soweit eigentlich richtig gut, danke dafür erstma :)

aber folgendes problem:

mein sorc portet oft obwohl sie garkeine hits vom "boss" abbekommt, sondern wenn der merc im life droppt. blöderweise wird sie danach oft vom boss gehittet und wegen relativ schlechtem gear bedeuted das automatisch nen chicken. lässt es sich irgendwo einstellen das dieses ausweichen nur triggert wenn ich auch wirklich hits abbekomme?
Nein, das ist nicht vorgesehen.

Der Sinn der Funktion ist es ja, einen gewissen Abstand zu in der Nähe befindlichen Monstern zu halten. Wenn die Sorc getroffen wird, kann der Treffer schon so stark sein, dass sie in der hit recovery landet und dann nicht mehr wegteleportieren kann - also quasi handlungsunfähig ist.
Das wäre zu spät, das Ausweichen muss vorher stattfinden, um Treffer generell zu vermeiden.

Ich würde dir einfach empfehlen, die aktivierten Scripte kritisch nach den Fähigkeiten deines Chars auszuwählen.

So Dinge wie Mausoleum oder Pit funktionieren meiner Erfahrung auch mit relativ schlechtem Equipment, einen halbwegs robusten Merc mal vorrausgesetzt.

Lg
Muddy
04/05/2011 12:02 bloodydeluxe#1116
hmm ok danke, da ich mittlerweile auch out of gold bin, da ich nach jedem boss , werd ich die von dir erwähnten scripte mal testen, bis ich und der merc noch 1-2 bessere items haben... viel fehlt eigentlich nicht
04/05/2011 13:37 Shrimps in Bierteig#1117
hmm, mir ist da was aufgefallen beim Chestscript.

Bei mir wen er Pit lvl2 gehn für, nimmt sie wp zum kloster, bleibt paar sek (3-5) beim wp stehn ("preform precast"), und fängt dan nächstes script an, die telt da ned mal hin^^. Hab eigentlich nichts daran verändert, vllt. ist das jemand anderem auch schon aufgefallen?
04/05/2011 14:22 Muddy Waters#1118
Quote:
Originally Posted by Shrims View Post
hmm, mir ist da was aufgefallen beim Chestscript.

Bei mir wen er Pit lvl2 gehn für, nimmt sie wp zum kloster, bleibt paar sek (3-5) beim wp stehn ("preform precast"), und fängt dan nächstes script an, die telt da ned mal hin^^. Hab eigentlich nichts daran verändert, vllt. ist das jemand anderem auch schon aufgefallen?
Es scheint wegen der Zwischeneben Monastery Gate Probleme bei der Pfadberechnung zu geben, denn die IDs sind soweit alle korrekt.

Wenn man beim WP Black Marsh startet funktioniert es tadellos.

Um von dort aus zu starten muss nur eine areaid verändert werden und zwar in Zeile 209 des Superchest Scripts.

Der Inhalt dieser Zeile sollte nach der Änderung so aussehen:
Code:
_schedule[i].Route.push([B][I][Color=Navy]new[/Color][/I][/B] MWSC_RouteStage(_MWSC_STAGE_WAYPOINT, [Color=Red]6[/Color]));
Lg
Muddy
04/05/2011 16:03 palados#1119
hallo

trotz intensiver suche finde ich keinen post zum thema precast.

ich finde keinen weg, um bei meiner blitzsorce shiver-armor, thunderstorm und energy-shield zu precasten.

habt ihr eine hilfestellung oder einen link zum post parat?

wäre supi...


achso...nutze natürlich den aktuellen muddy-bot
04/05/2011 16:12 Muddy Waters#1120
Quote:
Originally Posted by palados View Post
hallo

trotz intensiver suche finde ich keinen post zum thema precast.

ich finde keinen weg, um bei meiner blitzsorce shiver-armor, thunderstorm und energy-shield zu precasten.

habt ihr eine hilfestellung oder einen link zum post parat?

wäre supi...


achso...nutze natürlich den aktuellen muddy-bot
Ich denke du wirst es aus irgendwelchen Gründen übersehen haben, es ist nämlich aus meiner Sicht sehr intuitiv und einfach. :)

So sollte das in deiner Config aussehen:
Code:
[Color=Green]// Your precast skills can be defined in the array below. NOTE: Battle Command, Battle Orders and Shout will be cast automatically. Constants for all skill ids can be found in "scripts\libs\common\MWSkills.ntl".[/Color]
MWConfig_PrecastSkills = [MWS_SIVER_ARMOR, MWS_ENERGY_SHIELD, MWS_THUNDER_STORM];
Lg
Muddy
04/05/2011 16:23 palados#1121
[QUOTE=Muddy_Waters;9950622]Ich denke du wirst es aus irgendwelchen Gründen übersehen haben, es ist nämlich aus meiner Sicht sehr intuitiv und einfach. :)

aarg....die befehlszeile war nur ausserhalb des bildschirms. hab nicht den scrollbalken verwendet:-)

big thanks an dich:)
04/05/2011 22:22 kal_el#1122
nochmal wegen dem snagit fehler...
er kommt aus zeile 168
das is komischer weise
Quote:
else if(MWConfig_ShowPotionPickups)
Print("Picked up " + _item.name.split("\n")[0]);
wenn ich print auskommentiere..könnte das den fehler beheben
oder liegt es doch an was andrem?
04/05/2011 22:54 Muddy Waters#1123
Quote:
Originally Posted by kal_el View Post
nochmal wegen dem snagit fehler...
er kommt aus zeile 168
das is komischer weise

wenn ich print auskommentiere..könnte das den fehler beheben
oder liegt es doch an was andrem?
Die Sache muss ich mir bei Zeiten nochmal anschauen, auch wenn ich sagen muss, dass ich bei mir noch nichts dergleichen hatte, generell überhaupt keine Stops aufgrund irgendwelcher Exceptions der Laufzeitumgebung.

Und ja, das kannst du natürlich auskommentieren, aber in dem Fall musst du das else if auch mit auskommentieren, ansonsten hast du einen offenen Anweisungsblock, der sich dann auf die nächste nicht auskommentierte Anweisung bezieht.

Oder du initialisiert einfach die Variable MWConfig_ShowPotionPickups mit false, in dem Fall wird der Teil nie ausgeführt und kann folglich auch keine Probleme verursachen. :)

Lg
Muddy
04/06/2011 12:08 Tyon#1124
Logging war zugegebenermaßen ziemlich schlecht umschrieben und die erste mögliche Fehlerursache die mir eingefallen ist.

Mein Problem ist, dass deine D2NT Version unglaublich lange auf meinem kleinen Netbook braucht um durch die Pickit zu gehen. Dies resultiert darin, dass mein komplettes Diablo 2 für bestimmt 2-5 Sekunden einfriert sobald die Pickit aufgerufen wird.
Auffallend ist dies beim Super Chest Script sobald der Bot eine Truhe öffnet und jedes mal wenn das Town Script aufgerufen wird um die Items zu verkaufen.
04/06/2011 13:46 Muddy Waters#1125
Quote:
Originally Posted by Tyon View Post
Logging war zugegebenermaßen ziemlich schlecht umschrieben und die erste mögliche Fehlerursache die mir eingefallen ist.

Mein Problem ist, dass deine D2NT Version unglaublich lange auf meinem kleinen Netbook braucht um durch die Pickit zu gehen. Dies resultiert darin, dass mein komplettes Diablo 2 für bestimmt 2-5 Sekunden einfriert sobald die Pickit aufgerufen wird.
Auffallend ist dies beim Super Chest Script sobald der Bot eine Truhe öffnet und jedes mal wenn das Town Script aufgerufen wird um die Items zu verkaufen.
Naja, es ist schon so, dass sämtliche .nips auch in ihrem ursprünglichen Format in den Speicher geladen werden.

Man könnte natürlich die Änderungen, die ich dort durchgeführt habe, allesamt wieder revidieren, aber aus meiner Sicht erfordert das recht umfassende Änderungen an diversen Funktionen - kurzum: ich finde es irgendwie zu aufwändig. :o

Was du mal versuchen könntest, ist das Einfügen eines Dummys.
Sprich statt dem tatsächlichen Inhalt der Zeile in den .nips, einfach eine leere Zeichenkette einfügen. Irgendwas einfügen solltest du auf jeden Fall, denn ansonsten verschiebt sich die Array Indizierung und du müsstest wie oben angedroht alles umschreiben. :rolleyes:

Aber so könnte man es zumindest mal versuchen, dazu einfach Zeile 59 in der NTItemParser library wie folgt anpassen:
Code:
_line.push("");
Das XML Log sollte auch Performance lastig sein, das könnte man auch deaktivieren, sofern noch nicht geschehen.

Bei mir läuft jedenfalls auch mit 8 D2 Instanzen alles bestens, aber einen PC kann man wohl mit einem Netbook nur schwer vergleichen. :(

Lg
Muddy