SkipDiablo in Muddy´s D2NT

04/18/2012 16:00 papachef#1
Hi

Mich hats schon ein wenig gestört, dass mein Runner und der Cofighter zusammen Diablo killen und eine "SkipDiablo" Funktion leider noch nicht vorhanden ist.

Nützlich ist das bei mir weil nur mein Cofighter Exp braucht und mein Leader nicht mehr.
Ich mache priv Runs mit 4 Bots in einem Game. Da lohnt sich das für meine Begriffe schon wenn nur ein Highlevel die Diablo Erfahrung bekommt.

Das Diascript sieht so aus:
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: 22:01 14.08.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 _monsterCount, _attackpos;

	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(107))
	{
		NTC_SendMsgToScript("MWBotGame.ntj", NTM_TakeWaypoint, 34, 107);
		return;
	}

	NTP_DoPrecast(true);

	if(!NTM_MoveTo(108, 7797, 5560, 10))
	{
		NTC_SendMsgToScript("MWBotGame.ntj", NTM_MoveTo, 42, 108, 7797, 5560);
		return;
	}

	if(!MWConfig_StartAtStar && !MWConfig_FastDia)
	{
		_attackpos = [7792, 5525, 7793, 5501, 7773, 5495, 7768, 5480, 7767, 5458, 7770, 5438, 7774, 5417, 7767, 5391, 7768, 5369, 7769, 5345, 7770, 5320, 7780, 5308];

		if(!NTM_MoveTo(108, 7790, 5544, 10))
		{
			NTC_SendMsgToScript("MWBotGame.ntj", NTM_MoveTo, 52, 108, 7790, 5544);
			return;
		}
		
		if(NTConfig_PublicMode)
		{
			_monsterCount = MWA_FindNearbyMonsters(20);
			
			if(_monsterCount > 1)
			{
				if(_monsterCount < 3 && MWConfig_Announcements.DiabloTpCold)
					Say(MWConfig_Announcements.DiabloTpCold.replace(/%d/gi, _monsterCount));
				else if(_monsterCount < 6 && MWConfig_Announcements.DiabloTpWarm)
					Say(MWConfig_Announcements.DiabloTpWarm.replace(/%d/gi, _monsterCount));
				else if(MWConfig_Announcements.DiabloTpHot)
					Say(MWConfig_Announcements.DiabloTpHot.replace(/%d/gi, _monsterCount));
			}
			else if(MWConfig_Announcements.DiabloTpNone)
				Say(MWConfig_Announcements.DiabloTpNone);
				
			NTM_MakeTP();
		}
		
		NTA_ClearPosition(25, false, 2);

		NTM_MoveTo(108, 7790, 5544);

		NTC_PingDelay(1000);

		NTA_ClearPosition(25, true, 2);

		NTM_MoveTo(108, 7790, 5544);
		
		if(NTConfig_PublicMode && MWConfig_Announcements.DiabloTpSafe)
			Say(MWConfig_Announcements.DiabloTpSafe);		for(var i = 0; i < _attackpos.length; i += 2)
		{
			NTM_MoveTo(108, _attackpos[i], _attackpos[i + 1], 3, true);

			NTA_ClearPosition(45, true, 2);
		}
	}
		
	if(!MWConfig_FastDia)
	{
		NTM_MoveTo(108, 7792, 5292);
		
		if(NTConfig_PublicMode) 
		{
			if(MWConfig_StartAtStar)
			{
				_monsterCount = MWA_FindNearbyMonsters(25);
				
				if(_monsterCount > 1)
				{
					if(_monsterCount < 3 && MWConfig_Announcements.DiabloTpCold)
						Say(MWConfig_Announcements.DiabloTpCold.replace(/%d/gi, _monsterCount));
					else if(_monsterCount < 6 && MWConfig_Announcements.DiabloTpWarm)
						Say(MWConfig_Announcements.DiabloTpWarm.replace(/%d/gi, _monsterCount));
					else if(MWConfig_Announcements.DiabloTpHot)
						Say(MWConfig_Announcements.DiabloTpHot.replace(/%d/gi, _monsterCount));
				}
				else if(MWConfig_Announcements.DiabloTpNone)
					Say(MWConfig_Announcements.DiabloTpNone);
			}
			
			NTM_MakeTP();
		}
	
		NTP_DoPrecast(true);
		
		NTA_ClearPosition(25);
	}
	
	NTM_MoveTo(108, 7792, 5292, 3, !MWConfig_FastDia);

	if(!NT_OpenSealsInt())
	{
		NTC_SendMsgToScript("MWBotGame.ntj", NT_OpenSealsInt, 128);
		return;
	}
	
	if(!NTTMGR_CheckSafe(NTConfig_CheckSelfSafe, NTConfig_CheckMercSafe))
	{
		NTC_SendMsgToScript("MWBotGame.ntj", NTTMGR_CheckSafe, 134, NTConfig_CheckSelfSafe, NTConfig_CheckMercSafe);
		return;
	}
	
	if(NTConfig_PublicMode && MWConfig_Announcements.DiabloPre) 
		Say(MWConfig_Announcements.DiabloPre);
	
	NTC_Delay(2000);

	if(NTConfig_skipDiablo)
	
	NTC_SendMsgToScript("MWBotGame.ntj", "SCRIPT_END");

	if(!NTM_MoveTo(me.areaid, 7794, 5285, 25))
	{
		NTC_SendMsgToScript("MWBotGame.ntj", NTM_MoveTo, 143, me.areaid, 7792, 5292);
		return;
	}
	
	NTP_DoPrecast(true);
	
	if(me.classid == NTC_CHAR_CLASS_PALADIN && !MWC_CheckForExpShrineUsers())
		NTC_PutSkill(109, NTC_HAND_RIGHT);

	NTC_FindUnit(NTC_UNIT_MONSTER, 243, 150);

	if(!NTA_KillMonster(243))
	{
		NTC_SendMsgToScript("MWBotGame.ntj", NTA_KillMonster, 156, 243);
		return;
	}

	NTSI_PickItems();

	NTC_SendMsgToScript("MWBotGame.ntj", "SCRIPT_END");
}

// Internal function
function NT_OpenSealsInt()
{
	var i, _unit;
	var _result;

	_unit = GetPresetUnits(me.areaid, NTC_UNIT_OBJECT);

	if(!_unit)
		return false;

	_result = false;

	for(i = 0 ; i < _unit.length ; i++)
	{
		if(_unit[i].id == 396)
		{
			if(_unit[i].roomy*5 + _unit[i].y == 5275)
				_result = NT_OpenVizierSealInt(1);
			else
				_result = NT_OpenVizierSealInt(2);

			break;
		}
	}

	if(!_result && !MWConfig_IgnoreSealOpeningErrors)
		return false;

	
	NTM_MoveTo(me.areaid, 7792, 5292, 3, !MWConfig_FastDia);
	if(!MWConfig_FastDia)
		NTA_ClearPosition(30);
	NTP_DoPrecast();

	_result = false;

	for(i = 0 ; i < _unit.length ; i++)
	{
		if(_unit[i].id == 394)
		{
			if(_unit[i].roomx*5 + _unit[i].x == 7773)
				_result = NT_OpenDeSeisSealInt(1);
			else
				_result = NT_OpenDeSeisSealInt(2);

			break;
		}
	}

	if(!_result && !MWConfig_IgnoreSealOpeningErrors)
		return false;

	NTM_MoveTo(me.areaid, 7792, 5292, 3, !MWConfig_FastDia);
	if(!MWConfig_FastDia)
		NTA_ClearPosition(30);
	NTP_DoPrecast(!MWConfig_FastDia);

	_result = false;

	for(i = 0 ; i < _unit.length ; i++)
	{
		if(_unit[i].id == 392)
		{
			if(_unit[i].roomx*5 + _unit[i].x == 7893)
				_result = NT_OpenVenomSealInt(1);
			else
				_result = NT_OpenVenomSealInt(2);

			break;
		}
	}

	return (_result || MWConfig_IgnoreSealOpeningErrors);
}

function NT_OpenVizierSealInt(type)
{
	var i, n;
	var _attackpos = [7740, 5300, 7740, 5280, 7720, 5280, 7720, 5300];
	var _monstername = GetLocaleString(2851);

	if(!MWConfig_FastDia)
	{
		for(i = 0 ; i < _attackpos.length ; i += 2)
		{
			NTM_MoveTo(me.areaid, _attackpos[i], _attackpos[i+1], 3, true);

			NTA_ClearPosition(30, true, 2);
		}
	}

	for(i = 0; i < 4; i++)
	{
		if(!MW_OpenSeal(395) || !MW_OpenSeal(396))
		{
			NTC_Delay(2500);
			continue;
		}
		
		if(type == 1)
			NTM_MoveTo(me.areaid, 7665, 5277);
		
		for(n = 0; n < 10; n++)
		{
			NTC_Delay(200);

			if(NTA_KillMonster(_monstername))
			{
				NTA_ClearPosition((MWConfig_FastDia) ? 10 : 20);
				NTSI_PickItems();

				return NTM_MoveTo(me.areaid, 7750, 5280);
			}
		}
	}

	return false;
}

function NT_OpenDeSeisSealInt(type)
{
	var i, n;
	var _attackpos = [7780, 5255, 7800, 5255, 7800, 5235, 7780, 5235];
	var _monstername = GetLocaleString(2852);
	var _deSeis, _dist;

	if(type == 1)
		_attackpos.push(7773, 5215, 7773, 5197, 7794, 5196, 7813, 5189, 7814, 5171, 7804, 5156, 7787, 5154);
	else
		_attackpos.push(7811, 5216, 7810, 5197, 7787, 5192, 7772, 5183, 7773, 5166, 7784, 5154, 7800, 5154);
		
	switch(me.classid)
	{
		case NTC_CHAR_CLASS_BARBARIAN:
		case NTC_CHAR_CLASS_PALADIN:
			_dist = 8;
			break;
		case NTC_CHAR_CLASS_DRUID:
			_dist = 10;
			break;
		default:
			_dist = 12;
	}
	
	if(!MWConfig_FastDia)
	{
		for(i = 0; i < _attackpos.length; i += 2)
		{
			NTM_MoveTo(me.areaid, _attackpos[i], _attackpos[i+1]);

			NTA_ClearPosition(30, true, 2);
		}
	}

	for(i = 0; i < 4; i++)
	{
		if(type == 1)
		{
			MW_OpenSeal(394);
			
			NTM_MoveTo(me.areaid, 7791, 5198);
			
			_deSeis = NTC_FindUnit(NTC_UNIT_MONSTER, _monstername, 3);
			
			if(_deSeis)
			{
				if(_deSeis.y >= 5185)
					NTM_MoveTo(me.areaid, 7776, _deSeis.y - _dist);
				else
					NTM_MoveTo(me.areaid, 7776, _deSeis.y + _dist);
			}
			else
				NTA_ClearPosition(20);
		}
		else
		{
			MW_OpenSeal(394);

			NTM_MoveTo(me.areaid, 7789, 5154);
			
			_deSeis = NTC_FindUnit(NTC_UNIT_MONSTER, _monstername, 3);
			
			if(_deSeis && _deSeis.y + _dist <= 5201)
			{
				if(!NTM_MoveTo(me.areaid, 7776, _deSeis.y + _dist))
					NTM_MoveTo(me.areaid, 7776, _deSeis.y - _dist);
			}
			else
				NTM_MoveTo(me.areaid, 7791, 5192);
		}

		for(n = 0; n < 10; n++)
		{
			NTC_Delay(200);

			if(NTA_KillMonster(_monstername))
			{
				NTA_ClearPosition((MWConfig_FastDia) ? 10 : 30);
				NTSI_PickItems();

				return NTM_MoveTo(me.areaid, 7800, 5255, 3, !MWConfig_FastDia);
			}
		}
	}

	return false;
}

function NT_OpenVenomSealInt(type)
{
	var i, n;
	var _attackpos = [7835, 5280, 7835, 5300, 7855, 5300, 7855, 5280];
	var _monstername = GetLocaleString(2853);
	var _sealOrder;
	
	if(MWConfig_KillFullInfectorMob && !MWConfig_FastDia)
		_sealOrder = [392, 393];
	else
		_sealOrder = [393, 392];

	if(!MWConfig_FastDia)
	{
		for(i = 0 ; i < _attackpos.length ; i += 2)
		{
			NTM_MoveTo(me.areaid, _attackpos[i], _attackpos[i+1], 3, true);

			NTA_ClearPosition(30, true, 2);
		}
	}

	for(i = 0; i < 4; i++)
	{
		if(!MW_OpenSeal(_sealOrder[0]))
		{
			NTM_MoveTo(me.areaid, _attackpos[_attackpos.length - 2], _attackpos[_attackpos.length - 1], 3, true);
			
			NTC_Delay(2500);
			continue;
		}

		if(_sealOrder[1] == 392 && !MW_OpenSeal(_sealOrder[1]))
		{
			NTM_MoveTo(me.areaid, _attackpos[_attackpos.length - 2], _attackpos[_attackpos.length - 1], 3, true);
			
			NTC_Delay(2500);
			continue;
		}

		if(type == 1)
			NTM_MoveTo(me.areaid, 7892, 5298);
		else
			NTM_MoveTo(me.areaid, 7937, 5305);
		
		for(n = 0 ; n < 10 ; n++)
		{
			NTC_Delay(200);

			if(NTA_KillMonster(_monstername))
			{
				NTSI_PickItems();

				NTA_ClearPosition((MWConfig_FastDia) ? 10 : 40);
				
				if(NTC_PutSkill(124, NTC_HAND_RIGHT))
					NTC_PingDelay(1000);
				
				if(_sealOrder[1] == 393)
				{
					for(i = 0; i < 4; i++)
					{
						if(MW_OpenSeal(393))
							break;
							
						NTC_Delay(2500);
					}
				}
				
				return true;
			}
		}
	}

	return false;
}

function MW_OpenSeal(classid)
{
	var _seal, _x, _y, _unit;

	_unit = GetPresetUnits(me.areaid, NTC_UNIT_OBJECT);

	if(!_unit)
		return false;
	
	for(i = 0 ; i < _unit.length ; i++)
	{
		if(_unit[i].id == classid)
		{
			_x = _unit[i].roomx * 5 + _unit[i].x;
			_y = _unit[i].roomy * 5 + _unit[i].y;
	
			break;
		}
	}

	NTM_MoveTo(me.areaid, _x + 1, _y + 1);

	if(!MWConfig_FastDia)
		NTA_ClearPosition(25, true, 2, false, false);
	
	_seal = NTC_FindUnit(NTC_UNIT_OBJECT, classid, 5);

	if(!_seal)
		return false;

	if(_seal.mode > 0)
		return true;

	for(var i = 0; i < 8; i++)
	{
		if((i % 2) == 0)
		{
			if(GetDistance(me, _seal) > 2)
				NTM_MoveTo(_seal.areaid, _seal.x + 1, _seal.y +1 );

			NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _seal);
		}

		NTC_Delay(500);

		if(_seal.mode > 0)
			return true;
		
		if(i > 4)
			NTA_ClearPosition(20, true, 2, false, false);
	}

	return false;
}
Die NTConfig.ntj hiermit erweiterm:
Code:
var NTConfig_SkipDiablo;
Ich habe das vor var MWConfig_SkipBaalOnDolls; gesezt aber sollte kein muss sein.

Die Charconfig dann so erweitern:
Code:
MWConfig_Script.push(["NTDiablo.ntj", 10]); MWConfig_KillFullInfectorMob = true; MWConfig_StartAtStar = true; MWConfig_IgnoreSealOpeningErrors = false; MWConfig_FastDia = false; NTConfig_skipDiablo= true;
Code:
NTConfig_skipDiablo= true;
Diese Funktion gibt an, ob Diablo übersprungen oder nicht übersprungen wird.
true= Diablo wird nicht gekillt
false= Diablo wird gekillt

Thanks natürlich auch hier an Muddy weil ich ich auch nur eine kleine Zusatzfunktion im Standardscript eingebaut habe.

Regards
04/18/2012 16:35 kal_el#2
kannst es auch nur so machen....
Quote:
//NTC_FindUnit(NTC_UNIT_MONSTER, 243, 150);

//if(!NTA_KillMonster(243))
//{
// NTC_SendMsgToScript("MWBotGame.ntj", NTA_KillMonster, 156, 243);
// return;
//}
04/18/2012 16:44 papachef#3
Ne wenn ich Diablo komplett rausnehme dann killt mein Cofighter Diablo auch nicht.
Ich will ja, dass nur einer Diablo killt.
Desshalb die Unterscheidung skip oder no skip.
04/18/2012 17:49 kal_el#4
dann kopierst eben das script...haste 2 ^^.
und der leader wartet derweil paar sec. auf den co-fighter
04/18/2012 20:21 Muddy Waters#5
kal_el hat da eben seine ganz eigenen Mittel - nicht immer ganz elegant, dafür funktioniert es trotzdem. :D

Solltest der if-Anweisung noch einen Anweisungsblock und ein return spendieren, das ist etwas zarter als das Script einfach vom übergeordneten Thread zwangsbeenden zu lassen. Bietet sich außerdem an, den Bezeichner so zu wählen, dass dieser mit der sonstigen Nomenklatur konform ist (also NTConfig_SkipDiablo).

Achja, du hast deine Config Variable nirgendwo deklariert; JavaScript ordnet solche Variablen zwar implizit dem globalen Kontext zu, dennoch ist eine richtige Deklarierung sauberer und vor allem auch eindeutiger. Die Deklarierung von Config Variablen geschieht üblicherweise in der NTConfig.ntl.
04/18/2012 20:49 kal_el#6
so, und jetzt machst das ganze nochmal auf deutsch :D
04/18/2012 20:56 Muddy Waters#7
Der Papa versteht das bestimmt auch so, ansonsten kann er gerne nachfragen. Die geschilderten Zusammenhänge sind jedenfalls eher simpel. :o
04/18/2012 21:03 kal_el#8
ich versteh was du meinst :D ich wollt nur mal diesen satz schreiben :D

oki, erledigt. :D kannst mich hier entfernen:) büdde

topic clean halten und so
04/18/2012 22:36 papachef#9
Ja ich hab das schon soweit verstanden.
Nur dauert das noch ein bischen bis ich wirklich firm bin mit dem scripten.
Mir war erstmal wichtig das hinzubekommen was ich mir in den Kopf gesetzt habe.

Die Erweiterung in der NTConfig hab ich glatt vergessen zu posten..

Danke euch
05/15/2012 16:21 NerDxx™#10
ist das dia script das normale oder hast du da was verändert?
also

NTDiablo.ntl
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: 22:01 14.08.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 _monsterCount, _attackpos;

	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(107))
	{
		NTC_SendMsgToScript("MWBotGame.ntj", NTM_TakeWaypoint, 34, 107);
		return;
	}

	NTP_DoPrecast(true);

	if(!NTM_MoveTo(108, 7797, 5560, 10))
	{
		NTC_SendMsgToScript("MWBotGame.ntj", NTM_MoveTo, 42, 108, 7797, 5560);
		return;
	}

	if(!MWConfig_StartAtStar && !MWConfig_FastDia)
	{
		_attackpos = [7792, 5525, 7793, 5501, 7773, 5495, 7768, 5480, 7767, 5458, 7770, 5438, 7774, 5417, 7767, 5391, 7768, 5369, 7769, 5345, 7770, 5320, 7780, 5308];

		if(!NTM_MoveTo(108, 7790, 5544, 10))
		{
			NTC_SendMsgToScript("MWBotGame.ntj", NTM_MoveTo, 52, 108, 7790, 5544);
			return;
		}
		
		if(NTConfig_PublicMode)
		{
			_monsterCount = MWA_FindNearbyMonsters(20);
			
			if(_monsterCount > 1)
			{
				if(_monsterCount < 3 && MWConfig_Announcements.DiabloTpCold)
					Say(MWConfig_Announcements.DiabloTpCold.replace(/%d/gi, _monsterCount));
				else if(_monsterCount < 6 && MWConfig_Announcements.DiabloTpWarm)
					Say(MWConfig_Announcements.DiabloTpWarm.replace(/%d/gi, _monsterCount));
				else if(MWConfig_Announcements.DiabloTpHot)
					Say(MWConfig_Announcements.DiabloTpHot.replace(/%d/gi, _monsterCount));
			}
			else if(MWConfig_Announcements.DiabloTpNone)
				Say(MWConfig_Announcements.DiabloTpNone);
				
			NTM_MakeTP();
		}
		
		NTA_ClearPosition(25, false, 2);

		NTM_MoveTo(108, 7790, 5544);

		NTC_PingDelay(1000);

		NTA_ClearPosition(25, true, 2);

		NTM_MoveTo(108, 7790, 5544);
		
		if(NTConfig_PublicMode && MWConfig_Announcements.DiabloTpSafe)
			Say(MWConfig_Announcements.DiabloTpSafe);		for(var i = 0; i < _attackpos.length; i += 2)
		{
			NTM_MoveTo(108, _attackpos[i], _attackpos[i + 1], 3, true);

			NTA_ClearPosition(45, true, 2);
		}
	}
		
	if(!MWConfig_FastDia)
	{
		NTM_MoveTo(108, 7792, 5292);
		
		if(NTConfig_PublicMode) 
		{
			if(MWConfig_StartAtStar)
			{
				_monsterCount = MWA_FindNearbyMonsters(25);
				
				if(_monsterCount > 1)
				{
					if(_monsterCount < 3 && MWConfig_Announcements.DiabloTpCold)
						Say(MWConfig_Announcements.DiabloTpCold.replace(/%d/gi, _monsterCount));
					else if(_monsterCount < 6 && MWConfig_Announcements.DiabloTpWarm)
						Say(MWConfig_Announcements.DiabloTpWarm.replace(/%d/gi, _monsterCount));
					else if(MWConfig_Announcements.DiabloTpHot)
						Say(MWConfig_Announcements.DiabloTpHot.replace(/%d/gi, _monsterCount));
				}
				else if(MWConfig_Announcements.DiabloTpNone)
					Say(MWConfig_Announcements.DiabloTpNone);
			}
			
			NTM_MakeTP();
		}
	
		NTP_DoPrecast(true);
		
		NTA_ClearPosition(25);
	}
	
	NTM_MoveTo(108, 7792, 5292, 3, !MWConfig_FastDia);

	if(!NT_OpenSealsInt())
	{
		NTC_SendMsgToScript("MWBotGame.ntj", NT_OpenSealsInt, 128);
		return;
	}
	
	if(!NTTMGR_CheckSafe(NTConfig_CheckSelfSafe, NTConfig_CheckMercSafe))
	{
		NTC_SendMsgToScript("MWBotGame.ntj", NTTMGR_CheckSafe, 134, NTConfig_CheckSelfSafe, NTConfig_CheckMercSafe);
		return;
	}
	
	if(NTConfig_PublicMode && MWConfig_Announcements.DiabloPre) 
		Say(MWConfig_Announcements.DiabloPre);
	
	NTC_Delay(2000);

	if(NTConfig_skipDiablo)
	
	NTC_SendMsgToScript("MWBotGame.ntj", "SCRIPT_END");

	if(!NTM_MoveTo(me.areaid, 7794, 5285, 25))
	{
		NTC_SendMsgToScript("MWBotGame.ntj", NTM_MoveTo, 143, me.areaid, 7792, 5292);
		return;
	}
	
	NTP_DoPrecast(true);
	
	if(me.classid == NTC_CHAR_CLASS_PALADIN && !MWC_CheckForExpShrineUsers())
		NTC_PutSkill(109, NTC_HAND_RIGHT);

	NTC_FindUnit(NTC_UNIT_MONSTER, 243, 150);

	if(!NTA_KillMonster(243))
	{
		NTC_SendMsgToScript("MWBotGame.ntj", NTA_KillMonster, 156, 243);
		return;
	}

	NTSI_PickItems();

	NTC_SendMsgToScript("MWBotGame.ntj", "SCRIPT_END");
}

// Internal function
function NT_OpenSealsInt()
{
	var i, _unit;
	var _result;

	_unit = GetPresetUnits(me.areaid, NTC_UNIT_OBJECT);

	if(!_unit)
		return false;

	_result = false;

	for(i = 0 ; i < _unit.length ; i++)
	{
		if(_unit[i].id == 396)
		{
			if(_unit[i].roomy*5 + _unit[i].y == 5275)
				_result = NT_OpenVizierSealInt(1);
			else
				_result = NT_OpenVizierSealInt(2);

			break;
		}
	}

	if(!_result && !MWConfig_IgnoreSealOpeningErrors)
		return false;

	
	NTM_MoveTo(me.areaid, 7792, 5292, 3, !MWConfig_FastDia);
	if(!MWConfig_FastDia)
		NTA_ClearPosition(30);
	NTP_DoPrecast();

	_result = false;

	for(i = 0 ; i < _unit.length ; i++)
	{
		if(_unit[i].id == 394)
		{
			if(_unit[i].roomx*5 + _unit[i].x == 7773)
				_result = NT_OpenDeSeisSealInt(1);
			else
				_result = NT_OpenDeSeisSealInt(2);

			break;
		}
	}

	if(!_result && !MWConfig_IgnoreSealOpeningErrors)
		return false;

	NTM_MoveTo(me.areaid, 7792, 5292, 3, !MWConfig_FastDia);
	if(!MWConfig_FastDia)
		NTA_ClearPosition(30);
	NTP_DoPrecast(!MWConfig_FastDia);

	_result = false;

	for(i = 0 ; i < _unit.length ; i++)
	{
		if(_unit[i].id == 392)
		{
			if(_unit[i].roomx*5 + _unit[i].x == 7893)
				_result = NT_OpenVenomSealInt(1);
			else
				_result = NT_OpenVenomSealInt(2);

			break;
		}
	}

	return (_result || MWConfig_IgnoreSealOpeningErrors);
}

function NT_OpenVizierSealInt(type)
{
	var i, n;
	var _attackpos = [7740, 5300, 7740, 5280, 7720, 5280, 7720, 5300];
	var _monstername = GetLocaleString(2851);

	if(!MWConfig_FastDia)
	{
		for(i = 0 ; i < _attackpos.length ; i += 2)
		{
			NTM_MoveTo(me.areaid, _attackpos[i], _attackpos[i+1], 3, true);

			NTA_ClearPosition(30, true, 2);
		}
	}

	for(i = 0; i < 4; i++)
	{
		if(!MW_OpenSeal(395) || !MW_OpenSeal(396))
		{
			NTC_Delay(2500);
			continue;
		}
		
		if(type == 1)
			NTM_MoveTo(me.areaid, 7665, 5277);
		
		for(n = 0; n < 10; n++)
		{
			NTC_Delay(200);

			if(NTA_KillMonster(_monstername))
			{
				NTA_ClearPosition((MWConfig_FastDia) ? 10 : 20);
				NTSI_PickItems();

				return NTM_MoveTo(me.areaid, 7750, 5280);
			}
		}
	}

	return false;
}

function NT_OpenDeSeisSealInt(type)
{
	var i, n;
	var _attackpos = [7780, 5255, 7800, 5255, 7800, 5235, 7780, 5235];
	var _monstername = GetLocaleString(2852);
	var _deSeis, _dist;

	if(type == 1)
		_attackpos.push(7773, 5215, 7773, 5197, 7794, 5196, 7813, 5189, 7814, 5171, 7804, 5156, 7787, 5154);
	else
		_attackpos.push(7811, 5216, 7810, 5197, 7787, 5192, 7772, 5183, 7773, 5166, 7784, 5154, 7800, 5154);
		
	switch(me.classid)
	{
		case NTC_CHAR_CLASS_BARBARIAN:
		case NTC_CHAR_CLASS_PALADIN:
			_dist = 8;
			break;
		case NTC_CHAR_CLASS_DRUID:
			_dist = 10;
			break;
		default:
			_dist = 12;
	}
	
	if(!MWConfig_FastDia)
	{
		for(i = 0; i < _attackpos.length; i += 2)
		{
			NTM_MoveTo(me.areaid, _attackpos[i], _attackpos[i+1]);

			NTA_ClearPosition(30, true, 2);
		}
	}

	for(i = 0; i < 4; i++)
	{
		if(type == 1)
		{
			MW_OpenSeal(394);
			
			NTM_MoveTo(me.areaid, 7791, 5198);
			
			_deSeis = NTC_FindUnit(NTC_UNIT_MONSTER, _monstername, 3);
			
			if(_deSeis)
			{
				if(_deSeis.y >= 5185)
					NTM_MoveTo(me.areaid, 7776, _deSeis.y - _dist);
				else
					NTM_MoveTo(me.areaid, 7776, _deSeis.y + _dist);
			}
			else
				NTA_ClearPosition(20);
		}
		else
		{
			MW_OpenSeal(394);

			NTM_MoveTo(me.areaid, 7789, 5154);
			
			_deSeis = NTC_FindUnit(NTC_UNIT_MONSTER, _monstername, 3);
			
			if(_deSeis && _deSeis.y + _dist <= 5201)
			{
				if(!NTM_MoveTo(me.areaid, 7776, _deSeis.y + _dist))
					NTM_MoveTo(me.areaid, 7776, _deSeis.y - _dist);
			}
			else
				NTM_MoveTo(me.areaid, 7791, 5192);
		}

		for(n = 0; n < 10; n++)
		{
			NTC_Delay(200);

			if(NTA_KillMonster(_monstername))
			{
				NTA_ClearPosition((MWConfig_FastDia) ? 10 : 30);
				NTSI_PickItems();

				return NTM_MoveTo(me.areaid, 7800, 5255, 3, !MWConfig_FastDia);
			}
		}
	}

	return false;
}

function NT_OpenVenomSealInt(type)
{
	var i, n;
	var _attackpos = [7835, 5280, 7835, 5300, 7855, 5300, 7855, 5280];
	var _monstername = GetLocaleString(2853);
	var _sealOrder;
	
	if(MWConfig_KillFullInfectorMob && !MWConfig_FastDia)
		_sealOrder = [392, 393];
	else
		_sealOrder = [393, 392];

	if(!MWConfig_FastDia)
	{
		for(i = 0 ; i < _attackpos.length ; i += 2)
		{
			NTM_MoveTo(me.areaid, _attackpos[i], _attackpos[i+1], 3, true);

			NTA_ClearPosition(30, true, 2);
		}
	}

	for(i = 0; i < 4; i++)
	{
		if(!MW_OpenSeal(_sealOrder[0]))
		{
			NTM_MoveTo(me.areaid, _attackpos[_attackpos.length - 2], _attackpos[_attackpos.length - 1], 3, true);
			
			NTC_Delay(2500);
			continue;
		}

		if(_sealOrder[1] == 392 && !MW_OpenSeal(_sealOrder[1]))
		{
			NTM_MoveTo(me.areaid, _attackpos[_attackpos.length - 2], _attackpos[_attackpos.length - 1], 3, true);
			
			NTC_Delay(2500);
			continue;
		}

		if(type == 1)
			NTM_MoveTo(me.areaid, 7892, 5298);
		else
			NTM_MoveTo(me.areaid, 7937, 5305);
		
		for(n = 0 ; n < 10 ; n++)
		{
			NTC_Delay(200);

			if(NTA_KillMonster(_monstername))
			{
				NTSI_PickItems();

				NTA_ClearPosition((MWConfig_FastDia) ? 10 : 40);
				
				if(NTC_PutSkill(124, NTC_HAND_RIGHT))
					NTC_PingDelay(1000);
				
				if(_sealOrder[1] == 393)
				{
					for(i = 0; i < 4; i++)
					{
						if(MW_OpenSeal(393))
							break;
							
						NTC_Delay(2500);
					}
				}
				
				return true;
			}
		}
	}

	return false;
}

function MW_OpenSeal(classid)
{
	var _seal, _x, _y, _unit;

	_unit = GetPresetUnits(me.areaid, NTC_UNIT_OBJECT);

	if(!_unit)
		return false;
	
	for(i = 0 ; i < _unit.length ; i++)
	{
		if(_unit[i].id == classid)
		{
			_x = _unit[i].roomx * 5 + _unit[i].x;
			_y = _unit[i].roomy * 5 + _unit[i].y;
	
			break;
		}
	}

	NTM_MoveTo(me.areaid, _x + 1, _y + 1);

	if(!MWConfig_FastDia)
		NTA_ClearPosition(25, true, 2, false, false);
	
	_seal = NTC_FindUnit(NTC_UNIT_OBJECT, classid, 5);

	if(!_seal)
		return false;

	if(_seal.mode > 0)
		return true;

	for(var i = 0; i < 8; i++)
	{
		if((i % 2) == 0)
		{
			if(GetDistance(me, _seal) > 2)
				NTM_MoveTo(_seal.areaid, _seal.x + 1, _seal.y +1 );

			NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _seal);
		}

		NTC_Delay(500);

		if(_seal.mode > 0)
			return true;
		
		if(i > 4)
			NTA_ClearPosition(20, true, 2, false, false);
	}

	return false;
}
05/19/2012 11:16 papachef#11
Code:
if(NTConfig_skipDiablo)
	
NTC_SendMsgToScript("MWBotGame.ntj", "SCRIPT_END");
Das habe ich ins orginale Script eingefügt.