[D2NT] Das Giftfürstensiegel

04/08/2010 21:38 TheBluebird#1
Was mich im moment tierisch stört, ist, dass sich mein Pala seit dem D2NT 3.0 wieder direkt in die Mitte der Giftfürsten teleportiert und - natürlich - unter vollen Beschuss genommen und flambiert wird und der Bot chickt.

Jetzt bin ich wie ein Bescheuerter am suchen, wo ich denn den Abstand zu den Giftfürsten einstellen kann.

Dabei müsste es sich doch in der NTDiablo.ntj um folgenden Bereich handeln, oder?

Code:
function NT_OpenVenomSealInt(type)
{
	var i, n;
	var _attackpos = [7835, 5280, 7835, 5300, 7855, 5300, 7855, 5280];
	var _monstername = GetLocaleString(2853);

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

		NTA_ClearPosition(25, true, 2);
	}

	for(i = 0 ; i < 3 ; i++)
	{
		if(type == 1)
		{
			NT_OpenSealInt(393, 7915, 5280);
			NT_OpenSealInt(392, 7895, 5318);

			NTM_MoveTo(me.areaid, 7892, 5298);
		}
		else
		{
			NT_OpenSealInt(393, 7905, 5277);
			NT_OpenSealInt(392, 7916, 5310);

			NTM_MoveTo(me.areaid, 7937, 5305);
		}

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

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

				if(NTC_PutSkill(124, NTC_HAND_RIGHT))
					NTC_PingDelay(1000);

				return true;
			}
		}
	}

	return false;
}

function NT_OpenSealInt(classid, x, y)
{
	var _seal;

	NTM_MoveTo(me.areaid, x, y);

	NTA_ClearPosition(25, true, 2);

	_seal = NTC_FindUnit(NTC_UNIT_OBJECT, classid, 5);

	if(!_seal)
		return false;

	if(_seal.mode > 0)
		return true;

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

			NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _seal);
		}

		NTC_Delay(500);

		if(_seal.mode > 0)
			return true;
	}

	return false;
}
Oder suche ich an der falschen Stelle?

Auch wenn diese Umprogrammierung oder besser Feineinstellung nichts großes ist, denke ich, dass auch die anderen hier im Forum dankbar wären^^
Würde, sobald ich Erfolg habe, die fertig geänderte Datei im normalen Forenbereich vorstellen wollen.

Also: Wer kann mir jetzt helfen, umzustellen, dass der Pala sich immer direkt in die Mitte der Giftfürsten telt?

Gruß Blue
04/09/2010 13:11 Copy&Past#2
Code:
	else
		{
			NT_OpenSealInt(393, 7905, 5277);
			NT_OpenSealInt(392, 7916, 5310);

			NTM_MoveTo(me.areaid, 7937, 5305);
denke, dass es eine generell einstellung der position ist, oder ?
04/09/2010 16:39 Muddy Waters#3
Quote:
Originally Posted by Gadinho92 View Post
Code:
	else
		{
			NT_OpenSealInt(393, 7905, 5277);
			NT_OpenSealInt(392, 7916, 5310);

			NTM_MoveTo(me.areaid, 7937, 5305);
denke, dass es eine generell einstellung der position ist, oder ?
Nein, da die angesteuerte Position allenfalls ein Zwischenstop ist.

Viel interessanter ist dieser Teil:
Code:
for(n = 0 ; n < 10 ; n++)
		{
			NTC_Delay(200);

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

				if(NTC_PutSkill(124, NTC_HAND_RIGHT))
					NTC_PingDelay(1000);

				return true;
			}
		}
Mit dem Funktionsaufruf "NTA_KillMonster(_monstername)" wird genau der entsprechende Boss angegriffen. Und der steht meistens inmitten seiner Minions. Ich hatte früher mal ein custom CS Script bei dem in mit Prehammer spots gearbeitet habe, welche entsprechend der jeweiligen Position gesetzt wurden. Das ist ne relativ sichere Sache, gerade auch für den De Seis Mob.

Ich fange aber gerade erst wieder an und habe daher noch keinen wirklichen Überblick über die Änderungen und eventuell neuen Core bzw. Klassenfunktionen in D2NT 3.0 im Vergleich zu 1.7.2. CS runs sind für mich Chartechnisch eh noch nicht drin, darum werde ich mich derzeit wohl auch programmiertechnisch nicht mit CS runs befassen.

Also kann ich nur allgemein was dazu sagen. :)
Grundsätzlich müsstest du von der Funktion ""NTA_KillMonster(_monstername)" absehen, oder diese zumindest später (sozusagen zur Sicherheit) ausführen, ansonsten wird immer der Boss zuerst gekillt. Hier solltest du eher mit "NTA_ClearPosition()" arbeiten, oder eben mit Prehammer spots.
Die Umsetzung setzt aber in beiden Fällen gewisse Programmierkenntnisse vorraus, ansonsten wird das nichts. ;)

Leicht unbefriedigende Antwort, ich hoffe ich konnte trotzdem helfen. :(

LG
Muddy
04/10/2010 10:22 TheBluebird#4
Coole Sache!

Wieder ein paar gute Anhatspunkte mehr!

Vielen dank!

Mal sehen, wie und ob ich das so wirklich umsetze.
Hab grad zu viele Ideen im Kopf. Sry :D:D:D

Gruß Blue
04/12/2010 17:33 HMF_killar#5
JO ahm nd wie funkt dss mit dem Clear Pos genau?
04/12/2010 18:18 kal_el#6
Quote:
Originally Posted by HMF_killar View Post
JO ahm nd wie funkt dss mit dem Clear Pos genau?
NTA_ClearPosition(25, true, 2);
ist der radius den er abarbeitet und killt.


edit zu oberen post...

bei der sorc wird ned zuerst der boss gekillt im sinn von hammerdin.. es wird nur draufgezielt! und zauber gemacht..
der platz wo die tussi zum stehn kommt nach dem siegel öffnen is einfach scheisse.
vielleicht probier ichs heut noch das zu ändern.
das mit clear position is gut für schwachen hammer..weil er dann vielleicht ned genau da reintelt wo de seis steht sondern vielleicht am rand anfängt.
04/12/2010 22:12 kal_el#7
nun tester gesucht...
1.er steht nimmer in der mitte wenn dia spawnt, in die mitte telen und runter gehn hab ich jez ned hingekriegt..runtergehn deswegen weil der merc dann in der mitte stehn bleibt. nu telt er eben gleich an den rand.

2. siegel (hinten) sollte nun aufgehn beim ersten mal..hatte nur einen fail bei knapp 10 versuchen

3. steht jez seitlich neben den flammen wenn wenn de seins spawnt

4. mir sind da eigentlich zu wenig attack positionen drinn bei de seins..hab noch 2 dazugemacht...aber na ja.. da bleiben schon noch monster stehn(vor dem siegel öffnen.)...egal jez

diablo ntj. - stelle suchen für punkt1(ist ziemlich weit oben in der ntj)
Quote:
if(NTConfig_PublicMode)
Say("Killing Diablo");

NTP_DoPrecast(true);

//if(!NTM_MoveTo(me.areaid, 7792, 5292)) mitte stern
NTC_Delay(200);
// NTM_WalkTo( 7814, 5302)bringt fehlermeldung,sollte von der mitte runter zu dem punkt gehn und merc dadurch stehn lassen in d. mitte
if(!NTM_MoveTo(me.areaid, 7814, 5302))
mit // abgeschaltet..das original, oder mein versuch von der mitte runter zu gehn. grün is sein neuer platz

stelle suchen für punkt 2, 3
wir nehmen einfach alles von der position weg.
Quote:
function NT_OpenDeSeisSealInt(type)
dann gibts keine prob beim reinkopieren der einzelnen teile, oder klammer versenken
Quote:
function NT_OpenDeSeisSealInt(type)
{
var i, n;
var _attackpos = [7780, 5255, 7800, 5255, 7800, 5235, 7780, 5235, 7800, 5189, 7771, 5196];
var _monstername = GetLocaleString(2852);

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 < 3 ; i++)
{
if(type == 1)
{
//NT_OpenSealInt(394, 7769, 5158);
NT_OpenSealInt(394, 7778, 5157);
NTC_Delay(500);
//NTM_MoveTo(me.areaid, 7771, 5196);
NTM_MoveTo(me.areaid, 7796, 5226);
}
else
{
NT_OpenSealInt(394, 7810, 5156);
NTC_Delay(500);
//NTM_MoveTo(me.areaid, 7770, 5169);
NTM_MoveTo(me.areaid, 7800, 5189);
}

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

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

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

return false;
}
auf alptraum getestet
nu mach ich mal auf hölle
04/25/2010 19:30 heretic#8
wie weit ist das jetzt gediehen?
meine Sorc schafft das CS "eigentlich" völlig problemlos.
Eigentlich, weil jedes zweite Mal steht die so unglücklich im DeSeis Mob drin,
das Maxblock und Life ohne Ende auch nix mehr helfen.
Diablo selbst kippt nach 5-6 orbs um, der Vizier geht immer problemlos,
Giftfürst nur manchmal Probleme auch wegen Monsterabstand.
Kann ich den Code oben benutzen?
04/25/2010 20:07 fuuch#9
falls ihr mitm hammerdin cs macht: dwarfring equippen ^^
04/25/2010 20:15 fuuch#10
Quote:
function NT_CheckHydraInt()
{
var _hydra1, _hydra2, _hydra3;

_hydra1 = NTC_FindUnit(NTC_UNIT_MONSTER, 351);
_hydra2 = NTC_FindUnit(NTC_UNIT_MONSTER, 352);
_hydra3 = NTC_FindUnit(NTC_UNIT_MONSTER, 353);

if((_hydra1 && _hydra1.GetStat(172) != 2 && _hydra1.GetState(105))
|| (_hydra2 && _hydra2.GetStat(172) != 2 && _hydra2.GetState(105))
|| (_hydra3 && _hydra3.GetStat(172) != 2 && _hydra3.GetState(105)))
{
NTM_MoveTo(me.areaid, 15112, 5004);

if(me.GetState(2))
NTC_PutSkill(109, NTC_HAND_RIGHT);

NTC_PingDelay(3000);
}
}
du kannst dir ja eventuell den state von den mobs anzeigen lassen und bei blitzern oder fanas woanders hinporten - mit nem dwarf und nem whisp auf meinem hammer schaff ich die aber jedesmal ohne rip
04/25/2010 22:09 kal_el#11
eine sorc is auch kein hammerdin!!

probier das mal.. sie stellt sich dann weiter rechts unten neben den flammen auf zum angreifen und hat so mehr zeit.(bei de seis)
ich hoff das is jez das richtige^^
mach ne kopie vom original und kopier das einfach rein.
edit: und sie steht dann zum schluss auch ned direkt bei diablo in der mitte sondern weiter weg.
ich hab die originale drinn gelassen..kannst also jederzeit wieder zuschalten.



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("NTBotGame.ntj", "NTTM_CheckAct()");
		return;
	}

	NTTMGR_TownManager();

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

	if(!NTM_TakeWaypoint(107))
	{
		NTC_SendMsgToScript("NTBotGame.ntj", "NTM_TakeWaypoint()");
		return;
	}

	NTP_DoPrecast(true);

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

	if(NTConfig_PublicMode)
	{
		var _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(me.areaid, 7790, 5544))
		{
			NTC_SendMsgToScript("NTBotGame.ntj", "NTM_MoveTo()");
			return;
		}

		NTA_ClearPosition(20, false, 2);

		NTM_MoveTo(me.areaid, 7790, 5544);

		NTC_PingDelay(1000);

		NTA_ClearPosition(20, true, 2);

		NTM_MoveTo(me.areaid, 7790, 5544);

		NTM_MakeTP();
		Say("TP is safe!");

		for(var i = 0 ; i < _attackpos.length ; i += 2)
		{
			NTM_MoveTo(me.areaid, _attackpos[i], _attackpos[i+1]);

			NTA_ClearPosition(25, true, 2);
		}

		NTP_DoPrecast(true);
	}

	if(!NT_OpenSealsInt())
	{
		NTC_SendMsgToScript("NTBotGame.ntj", "NT_OpenSealsInt()");
		return;
	}

	if(NTConfig_PublicMode)
		Say("Killing Diablo");

	NTP_DoPrecast(true);

	//if(!NTM_MoveTo(me.areaid, 7792, 5292)) mitte stern
                 NTC_Delay(200);
             // NTM_WalkTo( 7814, 5302)bringt fehlermeldung,sollte von der mitte runter zu dem punkt gehn und merc dadurch stehn lassen in d. mitte
                 if(!NTM_MoveTo(me.areaid, 7814, 5302))
	{
		NTC_SendMsgToScript("NTBotGame.ntj", "NTM_MoveTo()");
		return;
	}

	if(!NTTMGR_CheckSafe(NTConfig_CheckSelfSafe|0x01, NTConfig_CheckMercSafe))
	{
		NTC_SendMsgToScript("NTBotGame.ntj", "NTTMGR_CheckSafe()");
		return;
	}

	NTC_FindUnit(NTC_UNIT_MONSTER, 243, 100);

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

	NTSI_PickItems();

	if(NTConfig_PublicMode)
		Say("Next game");

	NTC_SendMsgToScript("NTBotGame.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)
		return false;

	NTP_DoPrecast(false);

	_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)
		return false;

	NTP_DoPrecast(false);

	_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;
}

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

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

		NTA_ClearPosition(25, true, 2);
	}

	for(i = 0 ; i < 3 ; i++)
	{
		if(type == 1)
		{
			NT_OpenSealInt(395, 7654, 5310);
			NT_OpenSealInt(396, 7659, 5277);

			NTM_MoveTo(me.areaid, 7665, 5277);
		}
		else
		{
			NT_OpenSealInt(395, 7650, 5276);
			NT_OpenSealInt(396, 7651, 5310);
		}

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

			if(NTA_KillMonster(_monstername))
			{
				NTA_ClearPosition();
				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, 7800, 5189, 7771, 5196];
	var _monstername = GetLocaleString(2852);

	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 < 3 ; i++)
	{
		if(type == 1)
		{
			NT_OpenSealInt(394, 7769, 5158);
                                             NTC_Delay(100);
                                               NT_OpenSealInt(394, 7778, 5157);
                                                  NTC_Delay(100);
                                                      NT_OpenSealInt(394, 7779, 5159);
                                                           NTC_Delay(100);
			NTM_MoveTo(me.areaid, 7771, 5196);
                                            NTC_Delay(100);
                                            NTM_MoveTo(me.areaid, 7796, 5226);
		}
		else
		{
			NT_OpenSealInt(394, 7810, 5156);
                                       NTC_Delay(200);
                                          NT_OpenSealInt(394, 7810, 5156);
                                                NTC_Delay(200);
			NTM_MoveTo(me.areaid, 7770, 5169);
                                               NTC_Delay(100);
                                            NTM_MoveTo(me.areaid, 7800, 5189);
		}

		for(n = 0 ; n < 10 ; n++)
		{
			NTC_Delay(200);
                                      //NTA_ClearPosition(35);
			if(NTA_KillMonster(_monstername))
			{
				NTA_ClearPosition(35);
				NTSI_PickItems();

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

	return false;
}

function NT_OpenVenomSealInt(type)
{
	var i, n;
	var _attackpos = [7835, 5280, 7835, 5300, 7855, 5300, 7855, 5280];
	var _monstername = GetLocaleString(2853);

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

		NTA_ClearPosition(25, true, 2);
	}

	for(i = 0 ; i < 3 ; i++)
	{
		if(type == 1)
		{
			NT_OpenSealInt(393, 7915, 5280);
			NT_OpenSealInt(392, 7895, 5318);

			NTM_MoveTo(me.areaid, 7892, 5298);
		}
		else
		{
			NT_OpenSealInt(393, 7905, 5277);
			NT_OpenSealInt(392, 7916, 5310);

			NTM_MoveTo(me.areaid, 7937, 5305);
		}

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

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

				if(NTC_PutSkill(124, NTC_HAND_RIGHT))
					NTC_PingDelay(1000);

				return true;
			}
		}
	}

	return false;
}

function NT_OpenSealInt(classid, x, y)
{
	var _seal;

	NTM_MoveTo(me.areaid, x, y);

	NTA_ClearPosition(25, true, 2);

	_seal = NTC_FindUnit(NTC_UNIT_OBJECT, classid, 5);

	if(!_seal)
		return false;

	if(_seal.mode > 0)
		return true;

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

			NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _seal);
		}

		NTC_Delay(500);

		if(_seal.mode > 0)
			return true;
	}

	return false;
}
04/26/2010 16:44 VRaPToR-#12
Nice work!
Jetzt würde ich nur noch gerne wissen, wie man einstellt, dass meine Blizzard Soso wie bekloppt Gletschernadeln auf den Fürst de Seis feuert, dabei aber eher dessen Minions zuerst killen sollte, mein Merc ist zwar Tier... aber meine Soso ist eben eine Soso^^...
Einer Rat?
04/26/2010 19:35 VRaPToR-#13
Kommt schon, weiß niemand etwas?
04/27/2010 08:18 kal_el#14
Fürst de Seis is doch meistens cold immun oder..und fire immun?
....der boss wird immer ins visier genommen...zielt halt zuerst auf den...du könntest kettenblitz nehmen...dann triffts auch die anderen.
für solo runs reichen da 4k.. bei mir geht das super.. merc hat auch nen giant skull auf..wegen wegstossung...so kann ich mir die vom leib halten...merc is sonst immer verreckt..nu gehts.
04/27/2010 13:20 heretic#15
geht jetzt absolut chickenfrei. Danke.