[Release] Muddy's D2NT

09/14/2010 18:47 fred9x9#271
Quote:
Originally Posted by Muddy_Waters View Post
Ich muss mich erstmal entschuldigen, dass ich mich hier so wenig beteilige.
Aber momentan siehts bei mir zeitlich ziemlich mau aus... :(

Und da ich auf der Arbeit auch schon den ganzen Tag programmiere, widme ich mich nach Feierabend lieber meiner Gitarre, als der D2NT Programmierung. :rolleyes:

Mal schauen ob ich die Tage mal wieder Lust habe, dann werde ich mal ein paar der hier genannten Änderungen umsetzen, allen voran ldevils AutoMule Implementierung, für dessen schöne PMs ich mich an dieser Stelle nochmal herzlich bedanken möchte! :)

Lg
Muddy
Tja Muddy, dann schlag ich dir mal einen Rollentausch vor.
Du schickst mir deine "Gitarre", das Bissel am Hals touchen und dann rumkrabbeln, das bekomme ich wohl auch noch hin. Im Gegensatz zum intelligenten Script. :D
Ich müsste dann nicht mehr am Daumen lutschen, deiner Gitarre gings vielleicht genau so gut, aaaaber, wir wären alle glücklich !!!
:cool:
Mach dir nix draus, war halt zu verlockend :rolleyes:
LG
09/15/2010 00:09 ldevil#272
Gern geschehen :)

@fred9x9: Danke, war Mal so frei und hab's "formatiert", da ja die ganzen Tabs fehlen... so kann das ja keiner lesen. Hast nähmlich nen Fehler drin, das sieht man auch wenn's korrekt formatiert ist:

Code:
else //ff long
    NTM_MoveTo(me.areaid, 7660, 5310); //ff

NTA_ClearPosition(30, true, 2); //ff
NTSI_PickItems(); //ff

{
    NT_OpenSealInt(395, 7650, 5276);
    NT_OpenSealInt(396, 7651, 5310);
    NTA_ClearPosition(); //ff
    NTSI_PickItems(); //ff
}
Ich nehm an, dass sollte eigentlich so aussehen:

Code:
else //ff long
{
    NTM_MoveTo(me.areaid, 7660, 5310); //ff
    NTA_ClearPosition(30, true, 2); //ff
    NTSI_PickItems(); //ff
    NT_OpenSealInt(395, 7650, 5276);
    NT_OpenSealInt(396, 7651, 5310);
    NTA_ClearPosition(); //ff
    NTSI_PickItems(); //ff
}
09/15/2010 00:47 fred9x9#273
Quote:
Originally Posted by ldevil View Post
Gern geschehen :)

@fred9x9: Danke, war Mal so frei und hab's "formatiert", da ja die ganzen Tabs fehlen... so kann das ja keiner lesen. Hast nähmlich nen Fehler drin, das sieht man auch wenn's korrekt formatiert ist:

Code:
else //ff long
    NTM_MoveTo(me.areaid, 7660, 5310); //ff

NTA_ClearPosition(30, true, 2); //ff
NTSI_PickItems(); //ff

{
    NT_OpenSealInt(395, 7650, 5276);
    NT_OpenSealInt(396, 7651, 5310);
    NTA_ClearPosition(); //ff
    NTSI_PickItems(); //ff
}
Ich nehm an, dass sollte eigentlich so aussehen:

Code:
else //ff long
{
    NTM_MoveTo(me.areaid, 7660, 5310); //ff
    NTA_ClearPosition(30, true, 2); //ff
    NTSI_PickItems(); //ff
    NT_OpenSealInt(395, 7650, 5276);
    NT_OpenSealInt(396, 7651, 5310);
    NTA_ClearPosition(); //ff
    NTSI_PickItems(); //ff
}
Tut mir leid, habs extra als "tablecode" über den button eingegeben. Bei mir ist alles schön formattiert (Notepad++). Deshalb wurde wohl auch einiges abgeschnitten. K. A. wie das sonst geht.

Da sieht man wieder den Programmierer, ja, denke du hast Recht. Aber macht es einen Unterschied?
Kommt davon, wenn man Subs zusammenklaut :-))


HF
09/15/2010 01:44 ldevil#274
Quote:
Originally Posted by fred9x9 View Post
Tut mir leid, habs extra als "tablecode" über den button eingegeben. Bei mir ist alles schön formattiert (Notepad++). Deshalb wurde wohl auch einiges abgeschnitten. K. A. wie das sonst geht.
[Table]-Code ist für Tabellen :D das korrekte wäre der "[code]-Code" Heisst aber Code einfügen [Code] und ist als Button ein Rautezeichen (#).

Hier steht eigentlich ein Quote aber das will das Forum gar nicht zulassen -.-

Jep es macht nen unterschied :) dafür muss man aber das ganze if..else anschauen:

Code:
if(type == 1) //ff river
{
    NT_OpenSealInt(395, 7654, 5310);
    NT_OpenSealInt(396, 7659, 5277);
    NTM_MoveTo(me.areaid, 7665, 5277);
    NTA_ClearPosition(30, true, 2); //ff
    NTSI_PickItems(); //ff
}
else //ff long
    NTM_MoveTo(me.areaid, 7660, 5310); //ff

NTA_ClearPosition(30, true, 2); //ff
NTSI_PickItems(); //ff
{
    NT_OpenSealInt(395, 7650, 5276);
    NT_OpenSealInt(396, 7651, 5310);
    NTA_ClearPosition(); //ff
    NTSI_PickItems(); //ff
}
So wird im "else" nur das "NTM_MoveTo" gemacht und der ganze Rest in jedem Fall. Die geschweiften Klammern unten haben so gar keinen Effekt ;)

Wenn also type == 1 ist, dann wird folgendes ausgeführt:

Code:
NT_OpenSealInt(395, 7654, 5310);
NT_OpenSealInt(396, 7659, 5277);
NTM_MoveTo(me.areaid, 7665, 5277);
NTA_ClearPosition(30, true, 2); //ff
NTSI_PickItems(); //ff

NTA_ClearPosition(30, true, 2); //ff
NTSI_PickItems(); //ff
NT_OpenSealInt(395, 7650, 5276);
NT_OpenSealInt(396, 7651, 5310);
NTA_ClearPosition(); //ff
NTSI_PickItems(); //ff
Was natürlich nicht korrekt ist. Ich weiss nicht wie sehr es stört, wenn er 2 Mal versucht die Siegel zu öffnen, aber anders rum ist's sicher besser ;)
09/15/2010 11:19 fred9x9#275
Quote:
Originally Posted by ldevil View Post
[Table]-Code ist für Tabellen :D das korrekte wäre der "[code]-Code" Heisst aber Code einfügen [Code] und ist als Button ein Rautezeichen (#).

Hier steht eigentlich ein Quote aber das will das Forum gar nicht zulassen -.-

Jep es macht nen unterschied :) dafür muss man aber das ganze if..else anschauen:

Code:
if(type == 1) //ff river
{
    NT_OpenSealInt(395, 7654, 5310);
    NT_OpenSealInt(396, 7659, 5277);
    NTM_MoveTo(me.areaid, 7665, 5277);
    NTA_ClearPosition(30, true, 2); //ff
    NTSI_PickItems(); //ff
}
else //ff long
    NTM_MoveTo(me.areaid, 7660, 5310); //ff

NTA_ClearPosition(30, true, 2); //ff
NTSI_PickItems(); //ff
{
    NT_OpenSealInt(395, 7650, 5276);
    NT_OpenSealInt(396, 7651, 5310);
    NTA_ClearPosition(); //ff
    NTSI_PickItems(); //ff
}
So wird im "else" nur das "NTM_MoveTo" gemacht und der ganze Rest in jedem Fall. Die geschweiften Klammern unten haben so gar keinen Effekt ;)

Wenn also type == 1 ist, dann wird folgendes ausgeführt:

Code:
NT_OpenSealInt(395, 7654, 5310);
NT_OpenSealInt(396, 7659, 5277);
NTM_MoveTo(me.areaid, 7665, 5277);
NTA_ClearPosition(30, true, 2); //ff
NTSI_PickItems(); //ff

NTA_ClearPosition(30, true, 2); //ff
NTSI_PickItems(); //ff
NT_OpenSealInt(395, 7650, 5276);
NT_OpenSealInt(396, 7651, 5310);
NTA_ClearPosition(); //ff
NTSI_PickItems(); //ff
Was natürlich nicht korrekt ist. Ich weiss nicht wie sehr es stört, wenn er 2 Mal versucht die Siegel zu öffnen, aber anders rum ist's sicher besser ;)
Danke für die Hilfe und die tolle Erläuterung,
nun weiss ich, warum die nach Typ 1 und kill, nochmal knapp an den Seals vorbeiturnt und kurz rumdummt. Es geht zwar weiter, aber ich wunderte mich schon :handsdown:
Hast ja wohl gesehen, für nen gut equipped LOD player sind es natürlich zuviele Punkte und auch zuviele check-selfsaves, aber in classic brauchste diese. Denke auch mit besserer Ausrüstung, als ich sie habe.
Letztlich wäre ein Botrun mit Sosoleader und Babafollower sehr genehm, aber das geht mit Muddys wohl nicht. Soso über bot und Baba manuell nachsenden ist problemlos und gibt bisher 0 chickens, aaaber, die sollen ja laufen, wenn ich zu faul bin, oder schlafe. :rolleyes:
hf
fred
09/15/2010 13:26 immuf#276
Hi,
mir wurde dieser D2NT hier empfohlen, weil es die Möglichkeit gibt ne Sorc bei den Gegnern etwas auf Abstand zu halten ..
Allerdings klappt das bei mir überhaupt nicht. Die Gute bleibt gerne mal in Monstermengen stehen und macht wenig Anstalten sich um neue Tränke etc. zu kümmern.
Vorhin habe ich 2x nen Baalrun ausprobiert. Beim ersten Mal wurde die Option "MWConfig_SkipBaalOnSouls = true;" ignoriert und es gab nen Chicken, weil die Teile mit geröstet haben, beim zweiten Mal dann war es relativ easy zu Baal zu kommen. Den hatte ich auf 1/4 seines Lebens runter, aber dann gabs nen Chicken, weil ich keine Tränke mehr hatte und die Sorc nicht in die Stadt gegangen ist.
Zudem könnte man noch nen ChickenTele einbauen, wenn der Merc zu viel Leben verliert, oder?
Wäre cool, wenns für die Probleme einigermaßen einfache Lösungen gäbe :D
09/15/2010 13:42 JulesWinnfiled#277
also evade funzt bei mir perfekt, abgesehen innerhalb des diablo scripts, auch bei baal funzt es wie gewollt, aber da kommt ich wegen des 0x000005 fehlers nicht über die zweite welle hinaus wenn ich muddys script verwende, mit anderen gehts, auch mit muddys d2nt und manuellem zocken gehts.

wobei das sie sich um pötte oder ums IDn kümmert in mosterhorden ist mir auch schon mal aufgefallen, ist aber die absolute ausnahme und selbst wenn das mal der fall war ist es dadurch nie zum chicken oder tod gekommen.

tipp: mach mal GreaterManaPotion in deinen nips aus, dann werden nur noch SuperManaPotions gesammelt und der bot sortiert nicht mehr greatermanapots aus wenn er supermanapots findet.

EDIT:
ich wollte nur mal berichten das ich mit diesem script hier den ersten diablo run gemacht hab, war sogar verdammt locker.

hab schon alles abgeändert, einfach in eine textdatei kopieren, als .ntj in den ordner bots speichern und mit in eure config eintragen

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

	NTP_DoPrecast(true);

	if(!NTM_MoveTo(108, 7797, 5560))
	{
		NTC_SendMsgToScript("MWBotGame.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("MWBotGame.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("MWBotGame.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("MWBotGame.ntj", "NTM_MoveTo()");
		return;
	}

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

	NTC_FindUnit(NTC_UNIT_MONSTER, 243, 100);

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

	NTSI_PickItems();

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

	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)
		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;
}
hab ihn aus irgendeiner signatur geklaut :P

den bug mit evade -> de seis -> evade gibts immer noch (wenn man evade an hat bzw. keine evade exeption definiert hat), aber nicht mehr so "scharf" weil die teleport positionen hier vieeel besser sind als bei dem beiliegenden script, das wohl eher für paladine gemacht zu sein scheint.

viel spaß!

ich hoffe muddy bekommt das XML log gefixt in den 2 wochen bis ladder reset, wär cool funktionierende log files über die drops von anfang der ladder zu haben :D
oh und bitte auch das mehrfache eintragen fixen muddy :D sonst kann man so schlecht mit tools drüber und zählen lassen ...


lg
jules
09/15/2010 15:02 immuf#278
GreaterPotions werden bei mir nicht eingesammelt.
Ka woran das mit dem evade liegt, werde da wohl nochmal n bissl rumprobieren.

Was aber def. bei mir nicht funktioniert sind die SkipBaalOnDolls und -Souls. Da interessiert es den nicht, ob welche davon im Thronsaal sind, weswegen ich da dauernd n Chicken hab :(

/edit
Und schon wieder bleibt die Sorc in Hydren stehen und macht somit n Chicken.
Kann es sein, dass der Bot das sich auffüllende Leben als richtiges Leben interpretiert?
09/15/2010 15:51 JulesWinnfiled#279
SkipBaalOnDolls und die anderen beiden skip on x funktionen haben bei mir auch noch nie das gewünschte ergebnis erzielt.

war aber auch nie so das prob, meine sorc hat die souls einfach mit nem virtel FO lang gemacht :D

das problem mit dem restart des games nach der 2. welle wenn sie wieder an die ausgangsposition porten will hat also niemand ausser mir? :confused:
09/15/2010 16:01 ldevil#280
Ok, ist mir grade eingefallen, daher will ich's rasch posten bevor ich's wieder vergesse. Wer das dann schlussendlich umsetzt, oder auch nicht ist ja Nebensache ;)

Die Idee wäre aber, dass man statt all den Spells die man momentan zuweisen kann und im Endeffekt doch nicht so wirklich funktionieren einfach eine priorisierte Liste geben kann?

Sprich sowas:

NT_TimedSpells = [59];
NT_UntimedSpells = [48,47,55];

Und der Bot würde dann halt den ersten Timed & Untimed Spell nehmen gegen welchen das Monster nicht immune ist. Und die Bedingung für Immunität wäre dann sowas wie "Monster ist gegen alle Spells Immune"

Dazu könnte man dann wieder die Unterteilung Bosse / andere machen. Aber zumindest mir würde die Variante besser gefallen - nur muss ich mich dann erst Mal in das NT_Attack Dingens einarbeiten, denn da hab ich den Durchblick noch lange nicht. Aber sollte etwa so gemacht werden können:

Code:
//Pseudo Code!
for (i=0, i<NT_TimedSpells.length, i++)
{
    if (!IsImmuneTo(_monster, NT_TimedSpells[i]))
        break;
}
NTConfig_AttackSkill[0] = NT_TimedSpells[i];
Und dass dann noch für den anderen Untimed Skill. Weil eigentlich braucht man ja nur die beiden zu definieren, oder? Klar ist's nicht ganz so einfach, aber halt so als Idee :)
09/15/2010 17:00 cx23#281
also rennt soweit gut aber eins nervt a bissal der bot (mein mf baba) die gefundenen items picked idented und dann in der city dropped -- der soll den kack verkaufen -- wo stell ich das ein?
09/15/2010 17:31 JulesWinnfiled#282
Quote:
Originally Posted by cx23 View Post
also rennt soweit gut aber eins nervt a bissal der bot (mein mf baba) die gefundenen items picked idented und dann in der city dropped -- der soll den kack verkaufen -- wo stell ich das ein?
stell mal MWConfig_MinItemsToIdent auf 3-4, dann gehts öfters zum händler, du kannst auch MWConfig_IdentAfterPickup auf false stellen, dann sollte der bot immer zum händler gehen. (ungetestet)
würde ich aber nicht empfehlen, so kommt zwar nicht sehr viel gold rein, dafür spart man sich sehr viel zeit durch gerenne in der stadt und hat mehr zeit für die eigentlichen runs.

meiner verkauft auch kaum items, besonders geil ist immer wenn ein run zuende ist, sie alle items pickt, IDt und dann in die stadt zum händler geht um pötte zu kaufen :ugly:
wenn dort mehr items liegen würden als sie tragen kann macht das ja sinn, aber da liegen halt nur 3 und die passen auch ins inventar, trotzdem macht sie manchmal einfach Ident bei mephi z.B. und macht danach n TP.

ist mir aber relativ egal, gameln ist eh fürn eimer wenn man kein goldbarb ist, finde ich.
hauptsache man hat genug geld falls der merc dann doch mal rippen sollte, aber das sollte eigentlich nie zum problem werden.
gambeln tut sie dann halt nicht so oft, aber hin und wieder.
09/15/2010 18:09 immuf#283
Quote:
Originally Posted by immuf View Post
GreaterPotions werden bei mir nicht eingesammelt.
Ka woran das mit dem evade liegt, werde da wohl nochmal n bissl rumprobieren.

Was aber def. bei mir nicht funktioniert sind die SkipBaalOnDolls und -Souls. Da interessiert es den nicht, ob welche davon im Thronsaal sind, weswegen ich da dauernd n Chicken hab :(

/edit
Und schon wieder bleibt die Sorc in Hydren stehen und macht somit n Chicken.
Kann es sein, dass der Bot das sich auffüllende Leben als richtiges Leben interpretiert?
Das gleiche Prob jetzt mit Manatränken .. die Sorc holt einfach keine obwohl das Mana leer ist. Ich fürchte es könnte daran liegen, dass ich noch Rejv Tränke im Inv hab ..
09/15/2010 19:17 JulesWinnfiled#284
Quote:
Originally Posted by immuf View Post
Das gleiche Prob jetzt mit Manatränken .. die Sorc holt einfach keine obwohl das Mana leer ist. Ich fürchte es könnte daran liegen, dass ich noch Rejv Tränke im Inv hab ..
hast du MWConfig_BuyPotionsOnLackOfMana auf true? dann müsste das eigentlich funktionieren, tut es bei mir zumindest, egal wie viele RV pots ich noch hab.

nur mit HP geht das ganze nicht, die funktion ist nur für mana pötte gedacht, was eigentlich sehr schade ist, da es so vorkommen kann das der char sich zu tode/chicken kämpft (oder pots findet), aber das ist ein anderes thema.

EDIT:
falls das gar nicht geht mach mal folgenden workaround, so hab ich es gemacht als es die funktion MWConfig_BuyPotionsOnLackOfMana noch nicht gab bzw. eher als ich noch sternenloopers benutz hab.

set einfach NTConfig_ManaRejuvThresh auf 1-3% dann nimmt sie zur not einen RV trank wenn das mana unter dem eingestellten wert ist, hat "damals" (vor 2 wochen als ich NT das erste mal kennengelernt hab^^) immer sehr gut funktioniert.
09/15/2010 19:47 fred9x9#285
Einen Fehler bei deSeis behoben dank der Hilfe von IDevil.
Danke nochmal.
Einen weiteren bei deSeis gefunden und behoben.

Nun habe ich bei Venom noch ein Problem.
Es kommt vor, dass Venom tot ist und meine Soso nicht zu Dia will.
Und wenn ich es richtig sehe, unabhängig vom Standort der seals.
Kann da bitte mal jemand drüberschauen und mir nen Tipp geben?

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: 09/05/2010
*   Modyfied for Classic Soso by [Only registered and activated users can see links. Click Here To Register...]
*   Last update 09/15/2010
*/

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

	NTP_DoPrecast(true);

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

	if(!MWConfig_StartAtStar)
	{
		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("MWBotGame.ntj", "NTM_MoveTo()");
			return;
		}

		if(NTConfig_PublicMode)
		{
			var _monsterCount = MWA_FindNearbyMonsters(20);
			
			if(_monsterCount)
			{
				if(_monsterCount < 3)
					Say("TP cold, " + _monsterCount + " Monsters close!");
				else if(_monsterCount < 6)
					Say("TP warm, " + _monsterCount + " Monsters close!");
				else
					Say("TP hot, " + _monsterCount + " Monsters close!");
			}
			else
				Say("TP up, no Monsters close!");
				
			NTM_MakeTP();
		}
		
		NTA_ClearPosition(25, false, 2);

		NTM_MoveTo(me.areaid, 7790, 5544);

		NTC_PingDelay(1000);

		NTA_ClearPosition(25, true, 2);

		NTM_MoveTo(me.areaid, 7790, 5544);
		
		if(NTConfig_PublicMode)
		{
			if(MWA_FindNearbyMonsters(15) < 2)
				Say("TP should be safe now!");
			else
				Say("TP still might be warm!");
		}
	
		for(var i = 0 ; i < _attackpos.length ; i += 2)
		{
			NTM_MoveTo(me.areaid, _attackpos[i], _attackpos[i+1], 3, true);

			NTA_ClearPosition(35, true, 2);
			
		
		}
	}
	
	NTM_MoveTo(me.areaid, 7792, 5292);
	
	if(NTConfig_PublicMode) 
	{
		if(MWConfig_StartAtStar)
		{
			var _monsterCount = MWA_FindNearbyMonsters(25);
			
			if(_monsterCount)
			{
				if(_monsterCount < 3)
					Say("TP cold, cleaning Star, then Vizier, " + _monsterCount + " Monsters close!");
				else if(_monsterCount < 6)
					Say("TP warm, cleaning Star, then Vizier, " + _monsterCount + " Monsters close!");
				else
					Say("TP hot, cleaning Star, then Vizier, " + _monsterCount + " Monsters close!");
			}
			else
				Say("TP up, no Monsters close!");
		}
		Say("Cleaning Star, then Vizier!");
		Say("Let me open Seals !");
		NTM_MakeTP();
	}
	NTC_Delay(1000);
	NTP_DoPrecast(true);
	NTA_ClearPosition(30);
	NTM_MoveTo(me.areaid, 7792, 5292, 3, true);
	
	if(!NT_OpenSealsInt())
	{
		NTC_SendMsgToScript("MWBotGame.ntj", "NT_OpenSealsInt()");
		return;
	}

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

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

	NTC_FindUnit(NTC_UNIT_MONSTER, 243, 100);

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

	NTSI_PickItems();

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

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

	NTM_MoveTo(me.areaid, 7792, 5292, 3, true);
	NTA_ClearPosition(40);
	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)
		return false;

	NTM_MoveTo(me.areaid, 7792, 5292, 3, true);
	NTA_ClearPosition(40);
	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 _attackpos = [7793, 5267, 7815, 5288, 7798, 5314, 7770, 5288, 7750, 5308, 7730, 5300, 7720, 5306, 7700, 5300, 7680, 5300, 7670, 5300, 7660, 5315, 7660, 5292]; //ff
	var _monstername = GetLocaleString(2851);

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

		NTA_ClearPosition(30, true, 2);
		
	NTSI_PickItems(); //ff
	
	
	}

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

			NTM_MoveTo(me.areaid, 7665, 5277);
			NTA_ClearPosition(30, true, 2); //ff
			NTSI_PickItems();  //ff
		}
		else									//ff long
		{
			NTM_MoveTo(me.areaid, 7660, 5310); //ff
			NTA_ClearPosition(30, true, 2); //ff
			NTSI_PickItems();  //ff
					
			NT_OpenSealInt(395, 7650, 5276);
			NT_OpenSealInt(396, 7651, 5310);
			
			NTA_ClearPosition(); //ff

			NTSI_PickItems(); //ff
				
		}

		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)
{
	Say("DeSeis now, let me open Seal!"); //ff
	var i, n;
	var _attackpos = [7781, 5260, 7783, 5245, 7786, 5253, 7802, 5253, 7814, 5253, 7775, 5238]; //ff 
	var _monstername = GetLocaleString(2852);
	var _deSeis, _dist;

	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;
	}
	
	for(i = 0 ; i < _attackpos.length ; i += 2)
	{
		NTM_MoveTo(me.areaid, _attackpos[i], _attackpos[i+1]);

		NTA_ClearPosition(25, true, 2);
		
		NTSI_PickItems();  //ff
		
	}

	for(i = 0 ; i < 3 ; i++)
	{
		if(type == 1) 							//ff long
		
			NTM_MoveTo(me.areaid, 7769, 5210); //ff 
			NTA_ClearPosition(30); //ff
			NTSI_PickItems();  //ff
		
			NTM_MoveTo(me.areaid, 7769, 5190); //ff 
			NTA_ClearPosition(30); //ff
			NTSI_PickItems();  //ff
		
			NTM_MoveTo(me.areaid, 7817, 5170); //ff 
			NTA_ClearPosition(30); //ff
			NTSI_PickItems();  //ff
			
			NTM_MoveTo(me.areaid, 7817, 5160); //ff 
			NTA_ClearPosition(30); //ff
			NTSI_PickItems();  //ff
		
		    NTM_MoveTo(me.areaid, 7817, 5156); //ff 
			NTA_ClearPosition(30); //ff
			NTSI_PickItems();  //ff
		
			NTM_MoveTo(me.areaid, 7790, 5158); //ff 
			NTA_ClearPosition(30); //ff
			NTSI_PickItems();  //ff
			
			NTTMGR_CheckSafe(NTConfig_CheckSelfSafe); //ff
			
			NTC_Delay(200);
			NT_OpenSealInt(394, 7769, 5159);  // war 5158
			
			_deSeis = NTC_FindUnit(NTC_UNIT_MONSTER, _monstername, 5);

			NTM_MoveTo(me.areaid, 7790, 5194); //ff 
			NTA_ClearPosition(30); //ff
			NTSI_PickItems();  //ff
			
			NTM_MoveTo(me.areaid, 7771, 5196); 
			NTA_ClearPosition(30); 
			NTSI_PickItems();  //ff
		
			//ff NTM_MoveTo(me.areaid, 7771, 5196); 
			
			
			if(_deSeis)
			{ //ff
				NTM_MoveTo(me.areaid, 7776, _deSeis.y + _dist); 
				NTA_ClearPosition(30); //ff
				NTSI_PickItems(); //ff
				
				NTM_MoveTo(me.areaid, 7776, 5195); //ff
				NTA_ClearPosition(30); //ff
				NTSI_PickItems();  //ff
			} //ff		
			else 										//ff short
		{
			
			NTM_MoveTo(me.areaid, 7773, 5189); //ff
			NTA_ClearPosition(30); //ff
			NTSI_PickItems(); //ff
			
			NTM_MoveTo(me.areaid, 7773, 5153); //ff
			NTA_ClearPosition(30); //ff
			NTSI_PickItems(); //ff
			
			NT_OpenSealInt(394, 7810, 5156);
			_deSeis = NTC_FindUnit(NTC_UNIT_MONSTER, _monstername, 5);
			
			NTM_MoveTo(me.areaid, 7790, 5156); //ff 
			NTA_ClearPosition(30); //ff
			NTSI_PickItems(); //ff
			
			NTM_MoveTo(me.areaid, 7780, 5156); //ff 
			NTA_ClearPosition(30); //ff
			NTSI_PickItems(); //ff
			
			NTM_MoveTo(me.areaid, 7800, 5193); //ff
			NTA_ClearPosition(30); //ff
			NTSI_PickItems(); //ff
			
			// ff NTM_MoveTo(me.areaid, 7770, 5169);
			
			_deSeis = NTC_FindUnit(NTC_UNIT_MONSTER, _monstername, 5);
			
			if(_deSeis && _deSeis.y + _dist <= 5201)
			{ //ff
			
				NTM_MoveTo(me.areaid, 7776, _deSeis.y + _dist); 
				NTA_ClearPosition(30); //ff
				NTSI_PickItems();  //ff
			
			}  // ff
			else
			{ // ff
				NTM_MoveTo(me.areaid, 7776, 5195);
				NTA_ClearPosition(30); //ff
				NTSI_PickItems();  //ff
			}	// ff	
		}

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

			NTA_ClearPosition(30); //ff
				NTSI_PickItems();  //ff
			
			if(NTA_KillMonster(_monstername))
			{
				NTA_ClearPosition(30);
				NTSI_PickItems();

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

	return false;
}

function NT_OpenVenomSealInt(type)
{	
	Say("Venom now, let me open Seals!")
	var i, n;
	var _attackpos = [7817, 5274, 7825, 5280, 7835, 5292, 7835, 5283, 7855, 5288]; 
	var _monstername = GetLocaleString(2853);

	NTP_DoPrecast(true); //ff
	
	for(i = 0 ; i < _attackpos.length ; i += 2)
	{
		NTM_MoveTo(me.areaid, _attackpos[i], _attackpos[i+1], 3, true);
		NTA_ClearPosition(15, true, 2); //ff war 30, true, 2
		NTSI_PickItems();  //ff
		
		
	}

	for(i = 0 ; i < 3 ; i++)
	{
		if(type == 1)         						//ff short
		{
		
			NTM_MoveTo(me.areaid, 7875, 5300); //ff 
			NTA_ClearPosition(); //ff
			
			NTM_MoveTo(me.areaid, 7895, 5300); //ff 
			NTA_ClearPosition(); //ff
			
			NTM_MoveTo(me.areaid, 7910, 5300); //ff 
			NTA_ClearPosition(); //ff
			
			NTM_MoveTo(me.areaid, 7920, 5300); //ff 
			NTA_ClearPosition(); //ff
			NTSI_PickItems(30);
		
			NT_OpenSealInt(393, 7915, 5280);
			NT_OpenSealInt(392, 7895, 5318);

			NTM_MoveTo(me.areaid, 7880, 5300); //ff 
			NTA_ClearPosition(); //ff
			
			NTM_MoveTo(me.areaid, 7890, 5300); //ff 
			NTA_ClearPosition(); //ff
			
			NTM_MoveTo(me.areaid, 7895, 5300); //ff 
			NTA_ClearPosition(); //ff
			
			NTM_MoveTo(me.areaid, 7900, 5300); //ff
			NTA_ClearPosition(); //ff
			
			NTM_MoveTo(me.areaid, 7905, 5300); //ff
			NTA_ClearPosition(30); //ff
			NTSI_PickItems(30);
			
			//ff NTM_MoveTo(me.areaid, 7892, 5298);
		}
		else                   						//ff long
		{
		
			NTM_MoveTo(me.areaid, 7875, 5277); //ff 
			NTA_ClearPosition(); //ff
			
			NTM_MoveTo(me.areaid, 7895, 5277); //ff 
			NTA_ClearPosition(); //ff
			
			NTM_MoveTo(me.areaid, 7910, 5277); //ff 
			NTA_ClearPosition(); //ff
			NTSI_PickItems(30);
		
			NT_OpenSealInt(393, 7905, 5277);                      
			
			NTA_ClearPosition(); //ff
			
			NTM_MoveTo(me.areaid, 7931, 5272); //ff 
			NTA_ClearPosition(); //ff
			
			NTM_MoveTo(me.areaid, 7934, 5285); //ff
			NTA_ClearPosition(); //ff
			
			NTM_MoveTo(me.areaid, 7935, 5305); //ff 
			NTA_ClearPosition(); //ff	
			
			NTM_MoveTo(me.areaid, 7931, 5310); //ff 
			NTA_ClearPosition(); //ff	
			
			NTM_MoveTo(me.areaid, 7921, 5310); //ff 
			NTA_ClearPosition(); //ff	
			NTSI_PickItems(30);
			
			NT_OpenSealInt(392, 7916, 5310);

			NTM_MoveTo(me.areaid, 7937, 5310); //ff
			NTA_ClearPosition(30); //ff
			
			NTM_MoveTo(me.areaid, 7937, 5300); //ff 
			NTA_ClearPosition(30); //ff
			
			NTM_MoveTo(me.areaid, 7937, 5290); //ff
			NTA_ClearPosition(30); //ff
			
			NTM_MoveTo(me.areaid, 7937, 5280); //ff
			NTA_ClearPosition(30); //ff
			
			NTM_MoveTo(me.areaid, 7880, 5275); //ff 
			NTA_ClearPosition(30); //ff	
			NTSI_PickItems(30);
			
						//ff NTM_MoveTo(me.areaid, 7937, 5305);
		}

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

			NTA_ClearPosition(30, true, 2); //ff
				NTSI_PickItems(); //ff
			
			if(NTA_KillMonster(_monstername))
			{
			
				NTA_ClearPosition(30, true, 2); //ff
				NTSI_PickItems();

				if(NTC_PutSkill(124, NTC_HAND_RIGHT))
					NTC_PingDelay(1000);
					NTA_ClearPosition(30, true, 2); //ff
				return true;
			}
		}
	}

	return false;
}

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

	NTM_MoveTo(me.areaid, x, y);

	NTA_ClearPosition(30, true, 2);

	NTSI_PickItems(); //ff
	
	_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+1);

			NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _seal);
		}

		NTC_Delay(500);

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

	return false;
}
Danke für die Mühe.