[D2NT] Public Botten for Dummies

05/30/2011 13:03 muechl#1741
Noch ne Frage:

Situation:
Leader Char Hammadin
3x Cofighter ( BLizzard Sorc, Fireball Sorc, Baba zum Booen )

Ich mach zuerst Baal und dann Diablo um ein paar Probs zu umgehen.

Jetzt würd ich aber gerne wenn dools im thron sind, direkt baalrun skippen und weiter zu diablo gehen, ist das möglich?
05/30/2011 13:43 TheCrazy11#1742
Quote:
Originally Posted by muechl View Post
Noch ne Frage:

Situation:
Leader Char Hammadin
3x Cofighter ( BLizzard Sorc, Fireball Sorc, Baba zum Booen )

Ich mach zuerst Baal und dann Diablo um ein paar Probs zu umgehen.

Jetzt würd ich aber gerne wenn dools im thron sind, direkt baalrun skippen und weiter zu diablo gehen, ist das möglich?
In der NTBaal.ntl das rot markierte einfügen:
Code:
	for(i = 0 ; i < 2 ; i++)
	{
		if(!NTM_MoveToStair(me.areaid, 130+i))
		{
			NTC_SendMsgToScript("NTBotGame.ntj", "NTM_MoveToStair()");
			return;
		}

		if(!NTM_TakeStair(130+i))
		{
			NTC_SendMsgToScript("NTBotGame.ntj", "NTM_TakeStair()");
			return;
		}
	}

	[COLOR="Red"]if(NTC_FindUnit(NTC_UNIT_MONSTER, 691))
	{
		Print("ÿc1Skipping Baal due to Dolls...");
		NTC_SendMsgToScript("NTBotGame.ntj", "SCRIPT_END");
	}[/COLOR]
		
	if(!NTM_MoveTo(me.areaid, 15112, 5068))
	{
		NTC_SendMsgToScript("NTBotGame.ntj", "NTM_MoveTo()");
		return;
	}
Damit wird bei Dolls das Script beendet und das nächste kommt an die Reihe!

Eventuell musst du aufpassen, dass deine Leecher nicht durch das TP gehen, wenn der Leader das aufmacht, oder joinen deine Leecher erst nach der "safe"-Meldung?
05/30/2011 13:47 muechl#1743
wenn ich das joinen mit meldung konfiguriert hatte, dann kam es vor, das die cofighter manchmal in der stadt warteten, weil sie zu spät das game jointen, gibts da vielleicht ne idee wie ich vielleicht nach den ganzen waves nochmal die bots aus der town aufrufen könnte, bitte das tp zu joinen?

Aber danke schonmal für das obrige, werds gleich ma testen :)
05/30/2011 14:23 TheCrazy11#1744
Quote:
Originally Posted by muechl View Post
wenn ich das joinen mit meldung konfiguriert hatte, dann kam es vor, das die cofighter manchmal in der stadt warteten, weil sie zu spät das game jointen, gibts da vielleicht ne idee wie ich vielleicht nach den ganzen waves nochmal die bots aus der town aufrufen könnte, bitte das tp zu joinen?

Aber danke schonmal für das obrige, werds gleich ma testen :)
Versuchs mal mit folgenden Änderungen:
Code:
		switch(_wave)
		{
		case 1: 
			NTA_ClearPosition(40, true, 2);
			[COLOR="Red"]Say(NTConfig_UNSAFETPSpoke);[/COLOR]
			NTP_DoPrecast(true);
			break; 
		case 2: 
			NTM_MoveTo(me.areaid, me.x, me.y-1); 
			NTA_ClearPosition(40, true);
			[COLOR="Red"]Say(NTConfig_UNSAFETPSpoke);[/COLOR]
			NTTMGR_CheckSafe(NTConfig_CheckSelfSafe, NTConfig_CheckMercSafe); 
			break; 
		case 3: 
			NTM_MoveTo(me.areaid, me.x, me.y-1); 
			NTA_ClearPosition(40, true, 2);
			[COLOR="Red"]Say(NTConfig_UNSAFETPSpoke);[/COLOR]
			NTSI_PickItems();
			NT_CheckHydraInt(); 
			break; 
		case 4: 
			NTM_MoveTo(me.areaid, me.x, me.y-1); 
			NTA_ClearPosition(40, true, 2);
			[COLOR="Red"]Say(NTConfig_UNSAFETPSpoke);[/COLOR]
			break; 
		case 5: 
			NTM_MoveTo(me.areaid, me.x, me.y-1); 
			NTA_ClearPosition(40, true, 2);
			[COLOR="Red"]Say(NTConfig_UNSAFETPSpoke);[/COLOR]
			break;
		default:
			NTA_ClearPosition(40, true, 1);
			break;
		}
Damit wird nach jeder Welle die Meldung NTConfig_UNSAFETPSpoke ausgegeben, welche bei einem unsafe TP gesagt wird und durch die die Cofighter durchs TP gehen.
05/30/2011 14:30 muechl#1745
wunderbar :) bin gerade am ausprobieren, aber das funktioniert shconmal super mit den waves, jetzt hoff ich noch das mit den dolls funktioniert auch, nicht das ich schon wieder rip :/
05/30/2011 14:31 frypry#1746
wenn keiner auf meinen post antwortet^^ hab schon n bissl was umgehen können

aktuell gibts da noch ein paar pünktchen:

1. wie umgeh ich diesen bug:
"NTDiabloLeechFight.ntj : NT_OpenSealsInt() failed ( Pandemonium)

2. wie kann ich nach der 1ten wave den leader bot was sagen lassen?

3. wie kann ich eine lvlbegrenzung einstellen ?

4. mein leechfighter hat da ab und zu seine probs vor diablo kill dass er etwas länger in der im sankturium steht, wie ist das möglich das ich das bearbeite?


lg und thx
05/30/2011 14:58 TheCrazy11#1747
Quote:
Originally Posted by muechl View Post
wunderbar :) bin gerade am ausprobieren, aber das funktioniert shconmal super mit den waves, jetzt hoff ich noch das mit den dolls funktioniert auch, nicht das ich schon wieder rip :/
Fürs "Danke"-Sagen gibt es bei jedem Beitrag rechts unten einen Thanks-Button! ;)

Quote:
Originally Posted by frypry View Post
wenn keiner auf meinen post antwortet^^ hab schon n bissl was umgehen können

aktuell gibts da noch ein paar pünktchen:

1. wie umgeh ich diesen bug:
"NTDiabloLeechFight.ntj : NT_OpenSealsInt() failed ( Pandemonium)

2. wie kann ich nach der 1ten wave den leader bot was sagen lassen?

3. wie kann ich eine lvlbegrenzung einstellen ?

4. mein leechfighter hat da ab und zu seine probs vor diablo kill dass er etwas länger in der im sankturium steht, wie ist das möglich das ich das bearbeite?


lg und thx
1. Dein Leecher scheint nicht durch das TP des Leaders gegangen sein.

2. siehe 2 Beiträge vorher, ersetz Say(NTConfig_UNSAFETPSpoke) durch Say("Hier steht der Text...");, wo du eine Meldung haben willst, die Welle sollte eigentlich ersichtlich sein...

3. afaik ist es mit dem D2NT nicht möglich bzw. nur mit ziemlich großen Änderungen.

4. Bitte deutsch ausformulieren, so ist es schwer zu erraten, was du willst bzw. wo das Problem liegt und beschreibe das Problem ein bisschen genauer.
05/30/2011 15:18 frypry#1748
danke shconmal

1. ja, wenn er nicht durch das tp geht, kommt die fehler meldung auch, aber dann portet er sich selber wieder nach a5 und macht weitere

aber dieser bug kommt auch ab und zu, wenn er vor dean seals steht die der leader öffnet...

2. hab ich grad gesehen^^ danke

3. ok^^

4. und zwar, meine beiden fighter stehen bei den letzten seals. Diablo spawnt. Der leader flitzt zu dia und natzt ihn weg, aber der cofighter bleibt bei den seals stehen...


weiters hab ich grad gesehen das ich ab und zu bei beiden chars diesen typischen dia2 fehler bekomme diesen exp... woher kann das kommen?

lg
05/30/2011 15:24 onkelxlc#1749
Wenn du dich ohne bot einloggst und ein game aufmachst mit level begrenzungen ist das nachher bei dem botten auch so
05/30/2011 15:30 TheCrazy11#1750
Quote:
Originally Posted by frypry View Post
danke shconmal

1. ja, wenn er nicht durch das tp geht, kommt die fehler meldung auch, aber dann portet er sich selber wieder nach a5 und macht weitere

aber dieser bug kommt auch ab und zu, wenn er vor dean seals steht die der leader öffnet...

2. hab ich grad gesehen^^ danke

3. ok^^

4. und zwar, meine beiden fighter stehen bei den letzten seals. Diablo spawnt. Der leader flitzt zu dia und natzt ihn weg, aber der cofighter bleibt bei den seals stehen...


weiters hab ich grad gesehen das ich ab und zu bei beiden chars diesen typischen dia2 fehler bekomme diesen exp... woher kann das kommen?

lg
1. Klingt fast so, als ob das Script nach einer gewissen Zeit bzw. Anzahl an Versuchen abgebrochen wird und dann mit dem nächsten Script weitermacht. Ist das so?

zu 1. & 4.: Muss mir die DiabloLeech-Scripts mal genauer anschauen, wird etwas dauern mit der Antwort...
05/30/2011 16:02 frypry#1751
ja genau, also wenn er bei den letzen seals steht und diablo wird gekillt, dann scheit es so als würde er an einem spot porten und warten und versuchen, und dann bricht er ab und kommt nach a5 baalen...
05/30/2011 16:12 JustAnotherKeyshop#1752
Ich habe auch ein Problem und zwar spiele ich mit einem leader und 2 Leechfightern.
(Pala = Leader, Soso und Barb = Leechfighter)

Jetzt mache ich Diablo und Baal und da sind auch shcon die Probleme...
Bei Diablo bekommen meine Leechfighter sehr oft einen unexpected Error und das Spiel startet neu. Nach dem neustart joinen sie wieder dem vorhandenem Game.

Das kommt halt immer bei einem CoLeecher vor, in einem Game der Barb und im nächsten die Sorc... Manchmal auch 2 mal die Sorc und dann 2 mal der Barb ist alles bissel komisch :-)
Es scheint aber nur beim Diablorun der Fall zu sein, zumindest hab ich es bei Baal noch nicht mit bekommen ^^

Weiss da jemand rat ? und Danke schonmal.


lg
05/30/2011 16:18 onkelxlc#1753
Guck mal ob du NTConfig_FastPick = true; hast
05/30/2011 16:24 JustAnotherKeyshop#1754
ja ist auf true, werds mal auf false stellen und dann mal testen.
geb dann gleich bescheid ob es geholfen hat :)

EDIT:
hat geklappt kein Error mehr, super vielen Dank :-)
05/30/2011 16:48 TheCrazy11#1755
@frypry: Hab mir jetzt das DiaLeechFight-Scirpt angesehen und mir ist da ein fehlerhafter Rückgabewert aufgefallen, der dazu geführt haben wird, dass die beiden Leechfighter nach dem letzten Siegel nicht zu Diablo geportet sind.
Weiters habe ich das Script etwas abgespeckt, hier ist es:
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;
	}
	
	if(me.areaid != 103)
	{
		if(!NTTM_TownMove("waypoint"))
		{
			NTC_SendMsgToScript("NTBotGame.ntj", "NTTM_TownMove()");
			return;
		}

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

	NTTMGR_TownManager();

	NTTM_TownMove("portalspot");

	for(i = 0; i <= 100; i++)
	{
		if(NTC_InMyParty(NTConfig_Leader))
			break;

		Delay(200);
	}	

	while(me.areaid == 103 && NTC_InMyParty(NTConfig_Leader))
	{
		if(NT_GetLeader(NTConfig_Leader).areaid >= 129)
		{
			NTC_SendMsgToScript("NTBotGame.ntj", "SCRIPT_END");
			return;
		}
		
		NTM_UsePortal("BluePortal", 108, NTConfig_Leader); // 50
		Delay(1000);		 
	}
		
	NTP_DoPrecast(true);
	NTA_ClearPosition(10, true);
	NTM_MoveTo(me.areaid, 7792, 5291);
	NTA_ClearPosition(20, true);
	NTM_MoveTo(me.areaid, 7792, 5291);
	NTA_ClearPosition(30, true);

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

	if(NTConfig_PublicMode)
		Say(NTConfig_KillDiaMsg);

	NTM_MoveTo(me.areaid, 7792, 5292);

	NTP_DoPrecast(true);

	NTC_FindUnit(NTC_UNIT_MONSTER, 243, 100);

	if(NTConfig_Teleport)
		NTC_SwapWeapons(0);

	NTA_KillMonster(243);

	NTSI_PickItems();

	Say(NTConfig_DiaNxtGame);

	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;
		
	NTA_ClearPosition(30, true, 2);
	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;

	NTA_ClearPosition(30, true, 2);
	NTP_DoPrecast(true);

	_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 _monstername = GetLocaleString(2851);
	
	var _attackpos = [7740, 5300, 7792, 5291, 7740, 5280, 7720, 5280, 7720, 5300];

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

		NTA_ClearPosition(25, true, 2);
	}
	
	NTM_MoveTo(me.areaid, 7735, 5291);
	NTA_ClearPosition(40, true, 2);

	for(i = 0 ; i < 3 ; i++)
	{
		if(type == 1)
		{
			NTM_MoveTo(me.areaid, 7695, 5293);
			NTA_ClearPosition(25, true, 2);
			NTM_MoveTo(me.areaid, 7664, 5314);
			NTA_ClearPosition(25, true, 2);
			NTM_MoveTo(me.areaid, 7673, 5293);
			NTA_ClearPosition(25, true, 2);
			NTM_MoveTo(me.areaid, 7662, 5276);
			NTA_ClearPosition(25, true, 2);
			NTM_MoveTo(me.areaid, 7676, 5294);
			NTA_ClearPosition(60, true, 2);
			
			if(me.classid == NTC_CHAR_CLASS_PALADIN)
				NTM_MoveTo(me.areaid, 7678, 5292);
		}
		else
		{
			NTM_MoveTo(me.areaid, 7695, 5316);
			NTA_ClearPosition(25, true, 2);
			NTM_MoveTo(me.areaid, 7664, 5314);
			NTA_ClearPosition(25, true, 2);
			NTM_MoveTo(me.areaid, 7654, 5281);
			NTA_ClearPosition(25, true, 2);
			NTM_MoveTo(me.areaid, 7695, 5316);
			NTA_ClearPosition(60, true, 2);
			
			if(me.classid == NTC_CHAR_CLASS_PALADIN)
				NTM_MoveTo(me.areaid, 7676, 5320);
		}

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

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

				if(NTConfig_Teleport)
					NTC_SwapWeapons(1);

				return NTM_MoveTo(me.areaid, 7792, 5291);
			}
		}
	}
	return false;
}

function NT_OpenDeSeisSealInt(type)
{
	var i, n;
	var _monstername = GetLocaleString(2852);

	var _attackpos = [7780, 5255, 7800, 5255, 7800, 5235, 7780, 5235, 7774, 5214];

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

		NTA_ClearPosition(25, true, 2);
	}
	
	NTM_MoveTo(me.areaid, 7790, 5244);
	NTA_ClearPosition(40, true, 2);


	for(i = 0 ; i < 3 ; i++)
	{
		if(type == 1)
		{
			NTM_MoveTo(me.areaid, 7773, 5194);
			NTA_ClearPosition(25, true, 2);
			NTM_MoveTo(me.areaid, 7813, 5188);
			NTA_ClearPosition(25, true, 2);
			NTM_MoveTo(me.areaid, 7809, 5155);
			NTA_ClearPosition(25, true, 2);
			NTM_MoveTo(me.areaid, 7777, 5155);
			NTA_ClearPosition(60, true, 2);

			if(me.classid == NTC_CHAR_CLASS_PALADIN)
				NTM_MoveTo(me.areaid, 7768, 5206);
			else
				NTM_MoveTo(me.areaid, 7774, 5220);
		}
		else
		{
			NTM_MoveTo(me.areaid, 7810, 5202);
			NTA_ClearPosition(25, true, 2);
			NTM_MoveTo(me.areaid, 7774, 5180);
			NTA_ClearPosition(25, true, 2);
			NTM_MoveTo(me.areaid, 7785, 5153);
			NTA_ClearPosition(25, true, 2);
			NTM_MoveTo(me.areaid, 7809, 5154);
			NTA_ClearPosition(60, true, 2);

			if(me.classid == NTC_CHAR_CLASS_PALADIN)
				NTM_MoveTo(me.areaid, 7773, 5178);
			else
				NTM_MoveTo(me.areaid, 7788, 5192);
		}

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

			if(NTConfig_Teleport)
				NTC_SwapWeapons(0);

			if(NTA_KillMonster(_monstername))
			{
				NTA_ClearPosition(40);
				
				NTSI_PickItems();
				
				if(NTConfig_Teleport)
					NTC_SwapWeapons(1);
		
				NTP_DoPrecast(false);
				
				return NTM_MoveTo(me.areaid, 7792, 5291);
			}
		}
	}
	return false;
}

function NT_OpenVenomSealInt(type)
{
	var i, n;
	var _monstername = GetLocaleString(2853);

	var _attackpos = [7835, 5280, 7835, 5300, 7855, 5300, 7855, 5280];
	

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

		NTA_ClearPosition(25, true, 2);
	}
	
	NTM_MoveTo(me.areaid, 7843, 5292);
	NTA_ClearPosition(40, true, 2);
	
	for(i = 0 ; i < 3 ; i++)
	{
		if(type == 1)
		{
			NTM_MoveTo(me.areaid, 7871, 5293);
			NTA_ClearPosition(25, true, 2);
			NTM_MoveTo(me.areaid, 7893, 5307);
			NTA_ClearPosition(25, true, 2);
			NTM_MoveTo(me.areaid, 7912, 5280);
			NTA_ClearPosition(25, true, 2);
			NTM_MoveTo(me.areaid, 7931, 5293);
			NTA_ClearPosition(25, true, 2);
			NTM_MoveTo(me.areaid, 7908, 5293);
			NTA_ClearPosition(60, true, 2);
			
			if(me.classid == NTC_CHAR_CLASS_PALADIN)
				NTM_MoveTo(me.areaid, 7892, 5298);
		}
		else
		{
			NTM_MoveTo(me.areaid, 7893, 5274);
			NTA_ClearPosition(25, true, 2);
			NTM_MoveTo(me.areaid, 7927, 5280);
			NTA_ClearPosition(25, true, 2);
			NTM_MoveTo(me.areaid, 7930, 5308);
			NTA_ClearPosition(25, true, 2);
			NTM_MoveTo(me.areaid, 7929, 5294);
			NTA_ClearPosition(60, true, 2);
			
			if(me.classid == NTC_CHAR_CLASS_PALADIN)
				NTM_MoveTo(me.areaid, 7927, 5275);
		}

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

			if(NTA_KillMonster(_monstername))
			{
				NTA_ClearPosition(40, true, 2);
				
				NTSI_PickItems();
				
				if(NTC_PutSkill(124, NTC_HAND_RIGHT))
					NTC_PingDelay(1000);
				
				if(NTConfig_Teleport)
					NTC_SwapWeapons(1);

				return true;
			}
		}
	}
	return false;
}

function NT_GetLeader(_name)  
{
	_player = GetPlayerUnit();

	if(_player)
	{
		while(_player.GetNext())
		{
			if(_player.name == _name)
				return _player;
		}
	}
}
Einfach alles in deiner NTDiabloLeechFight.ntj ersetzen.
Mach dir aber davor eine Sicherheitskopie, kann sein, dass ich irgendwo was übersehen habe, habe momentan leider keine Möglichkeit, das zu testen...

@Insaneety: Kann auch sein, dass du Diablo nicht auf Englisch hast.