Register for your free account! | Forgot your password?

You last visited: Today at 08:04

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[Release] Muddy's D2NT

Discussion on [Release] Muddy's D2NT within the Diablo 2 Programming forum part of the Diablo 2 category.

Reply
 
Old 08/21/2011, 15:54   #2956
 
elite*gold: 0
Join Date: Jul 2008
Posts: 37
Received Thanks: 0
Seit ich deine NTBot.ntj benutze bleibt der Bot nach ner Weile (wenn er reconnecten soll) im Startmenü von D2 stehen und sagt irgendwas von wegen "Using File Backup...".
Was heisst das?
mooh is offline  
Old 08/21/2011, 16:22   #2957
 
mirkoregge's Avatar
 
elite*gold: 0
Join Date: Jan 2009
Posts: 3,170
Received Thanks: 1,191
Habe grad die neue Version gezogen
Läuft alles super! Thanks! Ist sogar das Coldcrow-Script jetzt drin

Eine kleine Frage hab ich bezüglich des D2NT Managers noch.
Ist es gewollt, dass der immer im Vordergrund ist?
Ich würd zudem gerne das Datum links von der Uhrzeit haben, da ich den Bot ~4-5 am Stück laufen lasse. Wie kann ich dies ändern?
mirkoregge is offline  
Old 08/21/2011, 16:30   #2958
 
elite*gold: 0
Join Date: Aug 2009
Posts: 435
Received Thanks: 159
würde den auch gerne so haben wie den alten Manger, also nicht immer im Vordergrund...

Automule Probleme haben sich beim 2. Versuch in Luft aufgelöst

Im Rush-Entrypoint ist in der Zeile 88 eine "}" zuviel
ansonsten noch nicht weiter getestet, wird aber bald
DeathFromHeaven is offline  
Old 08/21/2011, 16:47   #2959
Administrator
 
Muddy Waters's Avatar
 
elite*gold: 41624
Join Date: Jan 2010
Posts: 22,728
Received Thanks: 12,654
Quote:
Originally Posted by mooh View Post
Seit ich deine NTBot.ntj benutze bleibt der Bot nach ner Weile (wenn er reconnecten soll) im Startmenü von D2 stehen und sagt irgendwas von wegen "Using File Backup...".
Was heisst das?
Dass versucht wird die Daten deines vorherigen Spiels auszulesen, zwecks Announcement.
Was heisst er bleibt stehen? Er soll dort für eine von dir definierte Zeit warten, sofern er das auch tut, sehe ich kein Problem.

Quote:
Originally Posted by mirkoregge View Post
Habe grad die neue Version gezogen
Läuft alles super! Thanks! Ist sogar das Coldcrow-Script jetzt drin

Eine kleine Frage hab ich bezüglich des D2NT Managers noch.
Ist es gewollt, dass der immer im Vordergrund ist?
Ich würd zudem gerne das Datum links von der Uhrzeit haben, da ich den Bot ~4-5 am Stück laufen lasse. Wie kann ich dies ändern?
Du kannst höchstens Eigenschaften der Steuerelemente selbst verändern, aber nicht die dort angezeigten Daten selbst - insofern ist das mit der Zeit nicht machbar.

Quote:
Originally Posted by DeathFromHeaven View Post
würde den auch gerne so haben wie den alten Manger, also nicht immer im Vordergrund...

Automule Probleme haben sich beim 2. Versuch in Luft aufgelöst

Im Rush-Entrypoint ist in der Zeile 88 eine "}" zuviel
ansonsten noch nicht weiter getestet, wird aber bald
Was genau meinst du? Der Rush Entry Point hat bei mir nur 79 Zeilen...
Und weil ihr alle am nörgeln seid, hänge ich mal die Resourcen in beiden Varianten an, dann kann jeder das benutzen, was er für besser hält.

LG
Muddy

P.S.: Passwort: "muddy"
Attached Files
File Type: rar Resources.rar (3.1 KB, 16 views)
Muddy Waters is offline  
Thanks
3 Users
Old 08/21/2011, 17:22   #2960
 
elite*gold: 0
Join Date: Jul 2008
Posts: 37
Received Thanks: 0
Ok, hab das Problem jetzt gefunden, aber kann es nicht beseitigen

Es liegt an deinem Script. Der führt die *.bat Datei nicht aus.
Wenn ich in der Kommandozeile die reconnect.bat im selben Verzeichnis (script) ausführe, krieg ich eine neue IP.
Wenn der Bot im Spiel wegen eines Realm Down wartet, nicht.

€: Ich benutze übrigens noch deine alte Version.

Ist der Thread jetzt kaputt?
Ich komm nicht mehr auf die letzte Seite -.-
mooh is offline  
Old 08/21/2011, 18:10   #2961
 
elite*gold: 0
Join Date: Aug 2009
Posts: 435
Received Thanks: 159
ist natürlich die MWRushgame die ich meinte^^

und wir meckern, nicht, wir tun nur unsere Meinung kund
Aber danke für die anderen Ressourcen
DeathFromHeaven is offline  
Thanks
1 User
Old 08/21/2011, 19:20   #2962
 
elite*gold: 0
Join Date: Jul 2011
Posts: 27
Received Thanks: 0
Hey Muddy, Did the update have the function to switch your weapon when your killing a boss ? If so where can i find that?
cobkillacalli is offline  
Old 08/21/2011, 20:51   #2963
 
sKullw!Ng's Avatar
 
elite*gold: 0
Join Date: Jun 2011
Posts: 10
Received Thanks: 0
Kurz Frage.. hoffentlich der richtige Platz dafür.

Ich verwende seit ca 2 Monaten Muddys Bot und bin extremst zufrieden. Alles sehr leicht verständlich.

Habe immer den Bot über Nacht+tagsüber wenn ich an der Arbeit bin laufen gehabt. Am Ende waren es so 100-130 runs, keine chickens, keine discs usw.

Seit ein paar Wochen schaffe ich nicht mal mehr 20-30 runs und dann bekomme ich "Realm Down". Das nervt extremst, weil selbst bei Routerrestart verfolgen mich die "Realm Down's" dann den ganzen Abend
Am Bot "SetUp" habe ich absolut nichts verändert.

Hat jemand eine Idee, was ich tun kann?
sKullw!Ng is offline  
Old 08/21/2011, 21:26   #2964
 
elite*gold: 0
Join Date: Aug 2009
Posts: 435
Received Thanks: 159
entweder runs länger machen, oder die Keys einfach mal 1-2 Tage ruhen lassen, dann sollte es wieder gehen
DeathFromHeaven is offline  
Old 08/21/2011, 21:45   #2965
Administrator
 
Muddy Waters's Avatar
 
elite*gold: 41624
Join Date: Jan 2010
Posts: 22,728
Received Thanks: 12,654
Quote:
Originally Posted by mooh View Post
Ok, hab das Problem jetzt gefunden, aber kann es nicht beseitigen

Es liegt an deinem Script. Der führt die *.bat Datei nicht aus.
Wenn ich in der Kommandozeile die reconnect.bat im selben Verzeichnis (script) ausführe, krieg ich eine neue IP.
Wenn der Bot im Spiel wegen eines Realm Down wartet, nicht.

€: Ich benutze übrigens noch deine alte Version.

Ist der Thread jetzt kaputt?
Ich komm nicht mehr auf die letzte Seite -.-
Seltsam, in dem Fall kann ich dir da wenig zu sagen, da ich sowas nicht verwende und keine Erfahrungen dazu gemacht habe.
Frag doch einfach mal in dem Thema, wo auch die Anleitung stand, vielleicht kann dir ja jemand anderes helfen, der das ebenfalls verwendet.

Achja, zu dem Fehler:
Lösch mal den Cache deines Browsers, dann sollte es wieder gehen.

Quote:
Originally Posted by DeathFromHeaven View Post
ist natürlich die MWRushgame die ich meinte^^

und wir meckern, nicht, wir tun nur unsere Meinung kund
Aber danke für die anderen Ressourcen
Tatsache...sowas dummes.

Quote:
Originally Posted by cobkillacalli View Post
Hey Muddy, Did the update have the function to switch your weapon when your killing a boss ? If so where can i find that?
It is.

You should find these lines in your char config in the attack section:
Code:
// Select whether or not you'd like to swap slots right before killing a boss in order to benefit from some extra MF in your second slot. 
// The first element can either be the classid of the target or its name (case insensitive), second element is the life threshold in percent.
//MWConfig_SlotSwapMonsters.push([156, 50]); // Andariel, 50%
//MWConfig_SlotSwapMonsters.push([211, 20]); // Duriel, 20%
//MWConfig_SlotSwapMonsters.push([242, 20]); // Mephisto, 20%
//MWConfig_SlotSwapMonsters.push([243, 20]); // Diablo, 20%
//MWConfig_SlotSwapMonsters.push([544, 15]); // Baal, 15%
Just uncomment the ones you'd like to use. You can also add additional bosses by adding either the classid (in case it's unique) or the monster's name.

Quote:
Originally Posted by sKullw!Ng View Post
Kurz Frage.. hoffentlich der richtige Platz dafür.

Ich verwende seit ca 2 Monaten Muddys Bot und bin extremst zufrieden. Alles sehr leicht verständlich.

Habe immer den Bot über Nacht+tagsüber wenn ich an der Arbeit bin laufen gehabt. Am Ende waren es so 100-130 runs, keine chickens, keine discs usw.

Seit ein paar Wochen schaffe ich nicht mal mehr 20-30 runs und dann bekomme ich "Realm Down". Das nervt extremst, weil selbst bei Routerrestart verfolgen mich die "Realm Down's" dann den ganzen Abend
Am Bot "SetUp" habe ich absolut nichts verändert.

Hat jemand eine Idee, was ich tun kann?
Einfach längere Runs machen, dann hat sich das. Ich habe bei 8 Bots jedenfalls keine Probleme, ich kann mich nichtmal erinnern, wann ich das letzte mal Realm Down hatte.

LG
Muddy
Muddy Waters is offline  
Old 08/21/2011, 22:07   #2966
 
sKullw!Ng's Avatar
 
elite*gold: 0
Join Date: Jun 2011
Posts: 10
Received Thanks: 0
Quote:
Originally Posted by DeathFromHeaven View Post
entweder runs länger machen, oder die Keys einfach mal 1-2 Tage ruhen lassen, dann sollte es wieder gehen
Habe den Bot damals ca 20 Tage am Stück laufen lassen, Gamelänge immer ~7Minuten, keine discs/chickens/RDs.

Dann hatte ich ca 1 Woche pausiert und gar keinen Bot verwendet. Nun wollte ich wieder anfangen zu botten und habe das erwähnte RealmDown Problem.

Quote:
Originally Posted by Muddy_Waters View Post
Einfach längere Runs machen, dann hat sich das. Ich habe bei 8 Bots jedenfalls keine Probleme, ich kann mich nichtmal erinnern, wann ich das letzte mal Realm Down hatte.

LG
Muddy
Danke, wie viel Minuten sollte denn ein Run ~ca dauern um RD zu vermeiden ?

Mich wundert es, dass es vorher so perfekt funktionierte und nun eben nicht mehr, obwohl ich nichts an den Einstellungen verändert habe.

hmmmmmm
sKullw!Ng is offline  
Old 08/22/2011, 06:44   #2967
 
elite*gold: 0
Join Date: Oct 2009
Posts: 798
Received Thanks: 165
Also man sagt eigentlich das ein Run ca 10 minuten dauern sollte, wenn du einen key benutzt, um dem Realmdown hundertprozentig zu umgehen. Ich selbst habe 4 mal Diabaal mit 2 Keys und 1 mal MF mit einem Key laufen. 1 Diabaal dauert etwa 5 Minuten maximal womit ich also bei 2 Keys auf 10 minuten komme, und die MF Sorc macht macht ein paar tc85 gebiete + countess andy mehpy, wobei sie auf 13-15 Minuten kommt. Habe seitdem ich das so laufen habe keinen einzigen Realm down bekommen....
Talltree is offline  
Thanks
1 User
Old 08/22/2011, 09:57   #2968
 
Traycas's Avatar
 
elite*gold: 0
Join Date: Jun 2011
Posts: 285
Received Thanks: 185
Hallo zusammen,

nach ein paar weiteren runs bin ich nun noch auf folgende Fehler gestoßen:

1. Ich lasse meinen Smiter im Moment Schlüssel, Organe und Torch farmen + Eldrich wegen Tränken und Baal zur Spiellänge/Erfahrung. Bei Baal ist mir aufgefallen, dass wenn der Boss der letzten Welle physisch imun ist, der Smiter ihn "nicht sieht". Er steigt nicht auf gesegneter Hammer im Angriff um und teleportiert durch den Raum um zu gucken, ob noch irgendwo ein Monster übrig ist, da sich ja die Kammer nicht öffnet. Dann bricht er das Skript irgendwann ab. Kann jetzt nicht sagen, ob das vorher auch schon so war oder erst mit dem neuen Uüdate kam.

2. beim gleichen Char habe ich das freeze-Problem, was einige andere auch haben. Ich kann noch nicht genau eingrenzen, ob es immer bei einem bestimmten Script oder einer bestimtmen Aktion passiert. Vielleicht kann ich das heute Abend nochmal etwas genauer herausfinden. Meine Sorc läuft tadellos durch, macht aber auch 30+ Min runs.

3. In Akt 3 war es meiner Sorc gestern nicht möglich einen Söldner zu kaufen. Sie ist 4x zum NPC hin, dann kam aber jedesmal das Menü zum Spiel beenden usw. anstatt das Auswahlmenü vom NPC. Nach dem vierten Mal habe ich sie von Hand erlöst...

Das erstmal als Feedback und
@Muddy: Danke für die Ressourcen und nein, es war kein Meckern, nur ein Wunsch, der von Dir erhört wurde

LG, Traycas
Traycas is offline  
Old 08/22/2011, 17:20   #2969
 
elite*gold: 0
Join Date: Aug 2011
Posts: 41
Received Thanks: 1
hey leute,....
ich kriege den bot nicht zum laufen...
der leader geht ins game und fängt an mit dem run...
der cofighter/leecher geht in den chat checkt einmal die friendslist und sonst passiert nichts mehr....
hier die nobotleech:
Code:
/**
*	This file was modified by  and 			
*	Check the programming section for updates and further scripts
*	Last Update: 15:34 20.08.2011
*/

var DelayedJoinChars               = new Array();
//###################################################################
//##############################Settings#############################
//###################################################################
	
var LeaderAccountName          = "w3574";
var LeaderName                 = "SSSSmite";
var GamePassword               = "";
var JoinGameAgain              = false; // Set to true to re-enter the same game after chicken or disconnect.

var UseCDKeyChangeTrick        = false; // Set to true to use multiple CD Keys

var JoinRandomChannel          = true;
var JoinChannelInChat          = "";
var FirstJoinMessage           = ""; // Message to post right after joining chat. Set to "" not to post any message.
var ChatMessageAfterGame       = ""; // Message to post when joining chta after a game. Set to "" not to post any message.

// If multiple leechers are to join the same game, they should do it slightly time shifted in order to avoid join bugs.
// Enter the names of your accounts OR chars below:
DelayedJoinChars.push("LeecherOne", "LeecherTwo", "LeecherThree");

//###################################################################
//##############################Delays###############################
//###################################################################

var GameMinLength              = 180000;

// realm delays (minutes)
var UnableToConnectRetry       = 2;
var RealmDownRetry             = 60;
var DisconnectedRetry          = 2;
var CdKeyInUseRetry            = 2;

// interface delays (milliseconds)
var MultipleLeecherJoinDelay   = 1000;
var JoinDelay                  = 100;
var ConnectingToBnetTimeout    = 20000;
var CharacterScreenTimeout     = 10000;
var PleaseWaitTimeout          = 10000;
var CreateGameThreshold        = 10000;
var CreateGameThresholdRandom  = 1000;
var CreateGameTimeout          = 15000;
var WaitInLineTimeout          = 15000;
var CharacterSelectDelay       = 5000
var LoginDelay                 = 1000;
var ClickDelay                 = 500;
var TextDelay                  = 500;
var ClickDelayRandom           = 500;
var TextDelayRandom            = 500;
var GameDoesNotExistDelayMin   = 600000;
var GameDoesNotExistDelayMax   = 900000;
var GameDoesNotExistTimeout    = 30000;
var WaitBeforeEnterChatMin     = 1000;
var WaitBeforeEnterChatMax     = 2000;
var WaitInChatBeforeActionsMin = 2000;
var WaitInChatBeforeActionsMax = 3000;

//###################################################################
//###################################################################
//###############DO NOT CHANGE ANYTHING BELOW THIS###################
//###################################################################
//###################################################################

//D2NT Manager Command

const D2NT_MGR_LOADING = 1;
const D2NT_MGR_READY = 2;
const D2NT_MGR_LOGIN = 3;
const D2NT_MGR_CREATE_GAME = 4;
const D2NT_MGR_INGAME = 5;
const D2NT_MGR_RESTART = 6;
const D2NT_MGR_CHICKEN = 7;
const D2NT_MGR_PRINT_STATUS = 8;
const D2NT_MGR_PRINT_LOG = 9;

var LastGameMade     = GetTickCount();
var LastGameStatus     = 0;
var NextGameMake     = 0;
var InGameAt       = 0;
var ChatActionsDone   = false;
var LastGameFailed     = false;
var SayChatMsgAfterGame = true;

Include("libs/controlInfo.ntl");

var ControlData = new controlInfo();

var SameGame = "";
var OldGame = "";
var Game = "";
var Debug = false;
var JoinChatAfterGame    = true;

function NTMain()
{
	Delay(1000);

	var _ingame = false;

	ControlData.ClickDelay = ClickDelay;
	ControlData.TextDelay = TextDelay;
	ControlData.ClickDelayRandom = ClickDelayRandom;
	ControlData.TextDelayRandom = TextDelayRandom;

	while(1)
	{
		if(me.ingame)
		{
			OldGame = me.gamename;

			if(!InGameAt)
				InGameAt = GetTickCount();

			if(!_ingame)
			{
				RunGC(); // run garbage collector between each game

				if(Load("NTBot/MWBotGame.ntj"))
				{
					_ingame = true;

					if(me.playtype > 0)
						sendEventToOOG(D2NT_MGR_INGAME, "In Game[IP:" + me.gameserverip.split(".")[3] + "]", 0);
					else
						sendEventToOOG(D2NT_MGR_INGAME, "In Game", 0);

					LastGameStatus = 2; // in game successful
				}
			}

			Delay(1000);
		}
		else
		{
			if(_ingame)
			{
				_ingame = false;
				SayChatMsgAfterGame = true;

				sendEventToOOG(D2NT_MGR_READY, "", 0);
			}

			locationAction(ControlData.getLocation());

			Delay(500);
		}
	}
}

function locationAction(location)
{
	var _randomChannel, _leaderFound, _lines, _msg, _msgLines, _lineIndex, _chat, _regGameNameWhispered, _regOffline, _regInChat, _regGameName;;
	
	switch(location.id)
	{
		case 3: // Lobby Chat
			sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name, 0);

			if(!ChatActionsDone)
			{  
				ChatActionsDone = true;

				Delay(Random(WaitInChatBeforeActionsMin, WaitInChatBeforeActionsMax));

				if(JoinRandomChannel || JoinChannelInChat != "")
				{
					SetStatusText("ÿc8Joining channel...");
					Say("/join " + (JoinRandomChannel ? getRandomString(Random(3,10)) : JoinChannelInChat));
					Delay(2000);
				}

				if(FirstJoinMessage)
				{
					Say(FirstJoinMessage);
					Delay(1000);
				}
			}

			if(SayChatMsgAfterGame)
			{
				if(ChatMessageAfterGame && OldGame != "")
					Say(ChatMessageAfterGame);
					
				SetStatusText("ÿc8Checking friendlist...");
				Say("/f l");
				SayChatMsgAfterGame = false;
				Delay(1500);
			}

			Game = "";

			if(_chat = ControlData.get(ControlData.controls.lobby.chat.textBox.channelText))
			{
				_leaderFound = false;
				_lines = _chat.GetText();
				for(_lineIndex = _lines.length - 1; _lineIndex > -1; _lineIndex--)
				{
					if(_leaderFound) // useless... :/
						break;

					if(_lines[_lineIndex].substring(0,1) == " ")
						continue;

					// retrieving the whole message
					_msg = _lines[_lineIndex].replace(/^\s+|\s+$/, "");
					_msgLines = 1;
					while(_lines[_lineIndex + _msgLines] != undefined && _lines[_lineIndex+_msgLines].substring(0,2) == "  ")
					{
						_msg += " " + _lines[_lineIndex + _msgLines].replace(/^\s+|\s+$/, "");
						_msgLines++;
					}
					
					// checking if the _msg is a friendly whisper
					if(_msg.toLowerCase().lastIndexOf(LeaderName.toLowerCase() + " (*" + LeaderAccountName.toLowerCase() + ")") > -1)
					{
						_regGameNameWhispered = /^.*(game|partie|spiel|partita|partida).*(nomm[^\s]*|called|chiamata)\s*([\w\s-]*\w)\s*\.\s*$/gi;
						if(_msg.match(_regGameNameWhispered))
							Game = _msg.replace(_regGameNameWhispered, "$3");

						if(Game != "")
						{
							_leaderFound = true;
							break;
						}
					}

					// checking if the _msg is from the friend list
					if(_msg.toLowerCase().lastIndexOf(": " + LeaderAccountName.toLowerCase() + ",") > -1)
					{
						_leaderFound = true;
						
						_regOffline = /^.*(offline|desconectado).*$/gi;
						_regInChat = /^.*(channel|canale?)\s*([\w\s-]*\w)\.?\s*$/gi;
						_regGameName = /^.*(game|partie|spiel|partita|partida)\s*([\w\s-]*\w)\s*\(priv[^\)]*\)\.\s*$/gi;

						if(_msg.match(_regOffline))
							SetStatusText("ÿc8Leader is currently offline.");
						else if(_msg.match(_regInChat))
							SetStatusText("ÿc8Waiting for leader to create a game.");
						else if(_msg.match(_regGameName))
							Game = _msg.replace(_regGameName, "$2");

						break;
					}
				}

				if(!_leaderFound)
				{
					DebugInOOG("I couldn't find the leader in my friend list!");
					SetStatusText("ÿc8Leader not found.");
				}
				
				if(Game != "")
				{
					DebugInOOG("Leader is in the game \"" + Game + "\"");
					//ControlData.click(ControlData.controls.lobby.button.join);
					//Delay(100);
					
					if(!JoinGameAgain)
					{
						if(Game != SameGame)
						{
							SetStatusText("ÿc8Joining Game: " + Game);
							
							if(UseCDKeyChangeTrick)
							{
								sendEventToOOG(D2NT_MGR_CREATE_GAME, location.name, 0);
								Delay(1000);
							}

							ControlData.click(ControlData.controls.lobby.button.join);
							Delay (200);
						}
						else
							SetStatusText("ÿc8Waiting for next game...");
					}
					else
					{
						SetStatusText("ÿc8Joining Game: " + Game);
						
						if (UseCDKeyChangeTrick)
						{
							sendEventToOOG(D2NT_MGR_CREATE_GAME, location.name, 0);
							Delay(1000);
						}

						ControlData.click(ControlData.controls.lobby.button.join);
						Delay (200);
					}

				}
			}
			else
				DebugInOOG("I can\'t read the chat!");

			if(Game != "")
				SameGame = Game;

			break;

		case 1:    // Lobby
			if(location.id == 1 && JoinChatAfterGame)
			{
				Delay(Random(WaitBeforeEnterChatMin, WaitBeforeEnterChatMax));
				ControlData.click(ControlData.controls.lobby.button.enterChat);
				break;
			}
			break;

		case 2: // Waiting In Line
			if(GetTickCount()-LastGameMade > WaitInLineTimeout)
				ControlData.click(ControlData.controls.lobby.inLine.button.cancel);
			break;

		case 4: // Create Game
			if(!ControlData.get(ControlData.controls.lobby.create.editBox.gameName))
			{
				ControlData.click(ControlData.controls.lobby.button.join);
				Delay (500);
				ControlData.click(ControlData.controls.lobby.button.create);
				Delay (500);
				break;
			}

			sendEventToOOG(D2NT_MGR_CREATE_GAME, location.name, 0);

			locationTimeout(5000, location);

			LastGameMade = GetTickCount();
			LastGameStatus = 1; // pending creation
			break;

	  case 5: // Join Game
		if (Game)
		{
			ControlData.setText( ControlData.controls.lobby.join.editBox.gameName, Game);
			Delay(100);
			ControlData.setText( ControlData.controls.lobby.join.editBox.password, GamePassword);
			for(var i = 0; i < DelayedJoinChars.length; i++)
			{
				if(me.charname.toLowerCase() == DelayedJoinChars[i].toLowerCase() || me.account.toLowerCase() == DelayedJoinChars[i].toLowerCase())
				{
					Delay(MultipleLeecherJoinDelay * i);
					break;
				}
			}
			Delay(JoinDelay);
			ControlData.click(ControlData.controls.lobby.join.button.joinGame);
			RunGC(); // run garbage collector between each game
			locationTimeout(5000, location);
			LastGameStatus = 1; // pending join
		}
		else
		{
			DebugInOOG("No game to join : cancelling");
			me.Cancel(1);
			Delay(1000);
		}
		break;

		case 6: // Ladder
			break;

		case 7: // Channel List
			break;

		case 8: // Main Menu
			if(ControlData.getCurrentRealmIndex() == me.gatewayid)
			{
				outputGameLength();
				ControlData.click(ControlData.gameTypes[me.playtype]);
			}
			else
				ControlData.click(ControlData.controls.mainMenu.button.gateway);
			break;

		case 9: // Login
			sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name, 0);
			Delay(LoginDelay);

			ControlData.setText(ControlData.controls.login.editBox.accountName, me.account);

			sendEventToOOG(D2NT_MGR_LOGIN, location.name, 0);

			locationTimeout(5000, location);
			break;

		case 10: // Login Error (this is a fatal error, so stop)
			sendEventToOOG(D2NT_MGR_RESTART, location.name, 10);
			Delay(3500);
			break;

		case 11: // Unable To Connect
			timeoutDelay(UnableToConnectRetry*60*1000, location)
			ControlData.click(ControlData.controls.login.unableToConnect.button.ok);
			break;

		case 12: // Character Select
			var _time, _control;

			sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name, 0);

			for(_time = 0 ; _time < CharacterScreenTimeout ; _time += 500)
			{
				_control = ControlData.get(ControlData.controls.characterSelect.textBox.characterInfo[me.charloc]);
				if(_control && _control.GetText() != undefined)
					break;

				Delay(500);
			}

			if(_time < CharacterScreenTimeout)
			{
				Delay(CharacterSelectDelay);

				ControlData.click(ControlData.controls.characterSelect.textBox.characters[me.charloc], 0, 0, 1);
				ControlData.click(ControlData.controls.characterSelect.textBox.characterInfo[me.charloc], 0, 0, 1);

				// reset last game made, so it doesnt make a game immediately
				InGameAt = 0;
				setNextGameMake();
			}
			else
			{
				ControlData.click(ControlData.controls.characterSelect.button.exit);
				timeoutDelay(RealmDownRetry*60*1000, location);
			}
			break;

		case 13: // Realm Down - Character Select screen
			ControlData.click(ControlData.controls.characterSelect.button.exit);
			timeoutDelay(RealmDownRetry*60*1000, location);
			break;

		case 14: // Character Select - Disconnected
			timeoutDelay(DisconnectedRetry*60*1000, location);
			ControlData.click(ControlData.controls.characterSelect.disconnected.button.ok);
			break;

		case 15: // New Character
			break;    

		case 16: // Character Select - Please Wait popup
			if(!locationTimeout(PleaseWaitTimeout, location))
				ControlData.click(ControlData.controls.characterSelect.pleaseWait.button.cancel);
			break;

		case 17: // Lobby - Lost Connection - just click okay, since we're toast anyway
			ControlData.click(ControlData.controls.lobby.lostConnection.button.ok);
			break;

		case 18: // D2 Splash
			ControlData.click(ControlData.controls.d2Splash.textBox.copyright);
			break;

		case 19: // Login - Cdkey In Use
			timeoutDelay(CdKeyInUseRetry*60*1000, location);
			ControlData.click(ControlData.controls.login.cdkeyInUse.button.ok);
			break;

		case 20: // Single Player - Select Difficulty
			ControlData.click(ControlData.singlePlayerDifficulties[me.diff]);
			break;

		case 21: // Main Menu - Connecting
			if(!locationTimeout(ConnectingToBnetTimeout, location))
				ControlData.click(ControlData.controls.mainMenu.connecting.button.cancel);
			break;

		case 22: // Login - Invalid Cdkey (classic or xpac)
			sendEventToOOG(D2NT_MGR_RESTART, location.name, 3600);
			Delay(3500);
			break;    

		case 23: // Character Select - Connecting
			if(!locationTimeout(CharacterScreenTimeout, location))
				ControlData.click(ControlData.controls.characterSelect.button.exit);
			break;

		case 24: // Server Down - not much to do but wait..
			break;

		case 25: // Lobby - Please Wait
			if(!locationTimeout(PleaseWaitTimeout, location))
				ControlData.click(ControlData.controls.lobby.pleaseWait.button.cancel);
			break;

		case 26: // Lobby - Game Name Exists
			sendEventToOOG(D2NT_MGR_PRINT_LOG, "yE00000Game already exists", 0);

			InGameAt = 0;
			LastGameStatus = 0;
			setNextGameMake();

			locationTimeout(15000, location);
			break;

		case 27: // Gateway Select
			ControlData.clickRealmEntry(me.gatewayid);
			ControlData.click(ControlData.controls.gateway.button.ok);
			break;

		case 28: // Lobby - Game Does Not Exist
			InGameAt = Random(GameDoesNotExistDelayMin, GameDoesNotExistDelayMax);
			LastGameStatus = 0;
			setNextGameMake();

			locationTimeout(GameDoesNotExistTimeout, location);
			break;
		default:
			DebugInOOG("Unhandled location : "+location.id);
			break;
	}
	//DebugInOOG("Location : "+location.id);
}

function sendEventToOOG(locationId, statusString, pendingTime)
{
	return SendCopyData("D2NT Manager", null, (locationId<<16)|pendingTime, statusString);
}

function setNextGameMake()
{
	LastGameMade = GetTickCount();
	NextGameMake = LastGameMade + CreateGameThreshold + Random(0-CreateGameThresholdRandom, CreateGameThresholdRandom) + InGameAt;
	InGameAt = 0;
	ChatActionsDone = false;
}

function outputGameLength()
{
	if(InGameAt)
	{
		duration = GetTickCount() - InGameAt;

		InGameAt = (duration < GameMinLength ? GameMinLength - duration : 0);
	}
}

function locationTimeout(time, location)
{
	endtime = GetTickCount() + time;

	while(ControlData.getLocation().id == location.id && endtime > GetTickCount())
	{
		sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name + " (" + parseInt((endtime-GetTickCount())/1000) + "s)", 0);
		Delay(500);
	}

	return (ControlData.getLocation().id != location.id);
}

function timeoutDelay(time, location)
{
	endtime = GetTickCount() + time;

	while(endtime > GetTickCount())
	{
		sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name + " (" + parseInt((endtime-GetTickCount())/1000) + "s)", 0);
		Delay(1000);
	}
}

function getRandomString(_length)
{
	_retString = "";
	_charSet = "0123456789abcdefghijklmnopqrstuvwxyz";

	while(_length--)
	{
		_retString += _charSet.charAt(Random(0, _charSet.length-1));
		Delay(1);
	}

	return _retString;
}
function DebugInOOG(logString)
{
	if (Debug)
		return SendCopyData("D2NT Manager", null, 9<<16, "-- Debug : " + logString);
	else
		return false;
}
und hier meine ntconfig vom leecher

Code:
/**
*	This file was modified by 
*	Check the programming section for updates and further scripts
*	Last Update: 17:46 17.08.2011
*
*	Hotkey				Description
*
*	Pause/Break			Pauses the current bot script.
*	Page up (PgUp)		Skips the current bot script.
*	Page down (PgDn)	Repeats the previous bot script
*	Home (Pos1)			Shows your current coordinates and areaid.
*	End					Shows current ping in status text bar.
*	Insert (Ins)		Logs all items on your char to either XML or TXT.
*	Delete (Del)		Exits the game. NOTE: Always use this key to leave a game!
*	Backspace			Force trigger auto mule. NOTE: Won't work unless auto mule is actually activated for the current char.
*/

Include("NTBot/char_configs/MWConfig_GlobalSettings.ntl");

var NTConfig_CastStatic;

function NT_LoadConfig()
{
	MW_LoadGlobalSettings();

	
	//------------------------------------------------------------------------------
	//
	// Run Configuration
	//
	//------------------------------------------------------------------------------
	
	// Use the following syntax for activating botscripts: MWConfig_Script.push([<ScriptName>, <Script runtime in minutes (0 is infinite)>]);
	// ***************** Current schedule ******************

	MWConfig_Script.push(["NTDiabloLeechFight.ntj", 10]); MWConfig_StartAtStar = true; MWConfig_EnterUnsafeTP = true; NTConfig_PreBuff = true;	NTConfig_Leader = "SSSSmite";												// If the Leecher should go to a WP and buff up before he goes into the TP. (Needs River of Flame WP for Diablo and Frigid Highlands WP for Baal)
	MWConfig_Script.push(["NTBaalLeechFight.ntj", 10]); NTConfig_KillBaal = true; MWConfig_DoBaalPreAttack = true; MWConfig_EnterUnsafeTP = true; NTConfig_Leader = "SSSSmite";
	MWConfig_Script.push(["NTPit.ntj", 10]); MWConfig_ClearPathSpectypes.Pit = 0; MWConfig_ClearAreaSpectypes.Pit = 0x01; NTConfig_ClearPitLevel1 = 0; // 0 : don't clear, 1 : clear path only, 2 : clear all
		

	// *****************************************************
	
	//------------------------------------------------------------------------------
	// Available Scripts
	//------------------------------------------------------------------------------
	/* NOTE:
	// The scripts below are actually commented out; to add a script, copy one of the lines below and add it to the current schedule above. ;)
	// You should also get yourself a decent editor that supports syntax highlighting for JavaScript, I'd recommend Notepad++. (http://notepad-plus-plus.org/download/)
	// *********************** Act I ***********************
	
	MWConfig_Script.push(["NTMausoleum.ntj", 10]); MWConfig_ClearPathSpectypes.Mausoleum = 0; MWConfig_ClearAreaSpectypes.Mausoleum = 0x01; NTConfig_KillBloodRaven = true;
	MWConfig_Script.push(["NTTristram.ntj", 10]); NTConfig_KillRakanishu = true;
	MWConfig_Script.push(["NTHole.ntj", 10]); MWConfig_ClearPathSpectypes.Hole = 0; MWConfig_ClearAreaSpectypes.Hole = 0x01; NTConfig_ClearHoleLevel1 = 1; // 0 : don't clear, 1 : clear path only, 2 : clear all
	MWConfig_Script.push(["NTTreehead.ntj", 10]);
	MWConfig_Script.push(["MWColdcrow.ntj", 10]); MWConfig_ClearCaveMode = 0; // 0: Only kill coldcrow; 1: Clear Cave Level 1; 2: Clear both Cave Level 1 & 2
	MWConfig_Script.push(["NTCountess.ntj", 5]); MWConfig_ClearPathSpectypes.Countess = 0; MWConfig_ClearAreaSpectypes.Countess = 0;
	MWConfig_Script.push(["NTPit.ntj", 10]); MWConfig_ClearPathSpectypes.Pit = 0; MWConfig_ClearAreaSpectypes.Pit = 0x01; NTConfig_ClearPitLevel1 = 2; // 0 : don't clear, 1 : clear path only, 2 : clear all
	MWConfig_Script.push(["NTAndariel.ntj", 10]);
	
	// *********************** Act II **********************
	
	MWConfig_Script.push(["NTRadament.ntj", 10]); MWConfig_ClearPathSpectypes.Radament = 0;
	MWConfig_Script.push(["MWMaggotsLair.ntj", 10]); MWConfig_ClearPathSpectypes.MaggotsLair = 0; MWConfig_ClearAreaSpectypes.MaggotsLair = 0x01;
	MWConfig_Script.push(["NTAncientTunnels.ntj", 10]); MWConfig_ClearPathSpectypes.AncientTunnels = 0; MWConfig_ClearAreaSpectypes.AncientTunnels = 0x01;
	MWConfig_Script.push(["NTSummoner.ntj", 5]); NTConfig_KillFireEye = false; MWConfig_ClearPathSpectypes.Summoner = 0;
	MWConfig_Script.push(["NTDuriel.ntj", 10]); MWConfig_ClearPathSpectypes.Duriel = 0;
	
	// ********************** Act III **********************
	
	MWConfig_Script.push(["MWFlayerJungle.ntj", 10]); MWConfig_ClearAreaSpectypes.FlayerJungle = 0x01;
	MWConfig_Script.push(["MWKurastSewers.ntj", 5]); MWConfig_ClearPathSpectypes.KurastSewers = 0;
	MWConfig_Script.push(["MWKurastTemples.ntj", 5]) MWConfig_ClearPathSpectypes.KurastTemples = 0; MWConfig_ClearAreaSpectypes.KurastTemples = 0x01;
	MWConfig_Script.push(["NTTravincal.ntj", 5]);
	MWConfig_Script.push(["NTMephisto.ntj", 5]); MWConfig_OpenMephistoChest = true; MWConfig_MephistoClearArea = true;
	
	// *********************** Act IV **********************
	
	MWConfig_Script.push(["NTIzual.ntj", 5]); MWConfig_ClearPathSpectypes.Izual = 0;
	MWConfig_Script.push(["MWRiverOfFlame.ntj", 10]); MWConfig_ClearAreaSpectypes.RiverOfFlame = 0x01;
	MWConfig_Script.push(["NTHephasto.ntj", 10]); MWConfig_ClearPathSpectypes.Hephasto = 0;
	MWConfig_Script.push(["NTDiablo.ntj", 10]); MWConfig_KillFullInfectorMob = true; MWConfig_StartAtStar = false; MWConfig_IgnoreSealOpeningErrors = false; MWConfig_FastDia = true;
	
	// *********************** Act V ***********************
	
	MWConfig_Script.push(["MWAbbadon.ntj", 10]); MWConfig_ClearPathSpectypes.Abbadon = 0; MWConfig_ClearAreaSpectypes.Abbadon = 0x01;
	MWConfig_Script.push(["MWPitOfAcheron.ntj", 10]); MWConfig_ClearPathSpectypes.PitOfAcheron = 0; MWConfig_ClearAreaSpectypes.PitOfAcheron = 0x01;
	MWConfig_Script.push(["MWInfernalPit.ntj", 10]); MWConfig_ClearPathSpectypes.InfernalPit = 0; MWConfig_ClearAreaSpectypes.InfernalPit = 0x01;
	MWConfig_Script.push(["MWHallsOfPain.ntj", 15]); MWConfig_ClearAreaSpectypes.HallsOfPain = 0x01; MWConfig_ClearHallsOfAnguish = true;
	MWConfig_Script.push(["NTPindleskin.ntj", 5]); NTConfig_NihlathakExtension = false; MWConfig_SkipOnTombVipers = true;
	MWConfig_Script.push(["NTEldritch.ntj", 5]); NTConfig_ShenkExtension = true;
	MWConfig_Script.push(["NTThreshSocket.ntj", 5]); MWConfig_ClearPathSpectypes.ThreshSocket = 0;
	MWConfig_Script.push(["NTFrozenRiver.ntj", 10]); MWConfig_ClearPathSpectypes.FrozenRiver = 0; MWConfig_ClearAreaSpectypes.FrozenRiver = 0x01;
	MWConfig_Script.push(["NTGlacialTrail.ntj", 10]); MWConfig_ClearPathSpectypes.GlacialTrail = 0; MWConfig_ClearAreaSpectypes.GlacialTrail = 0x01; 
	MWConfig_Script.push(["NTIcyCellar.ntj", 5]); MWConfig_ClearPathSpectypes.IcyCellar = 0; MWConfig_ClearAreaSpectypes.IcyCellar = 0x01;
	MWConfig_Script.push(["NTNihlathak.ntj", 5]); MWConfig_ClearPathSpectypes.Nihlathak = 0; NTConfig_PindleskinExtension = false; MWConfig_SkipOnTombVipers = true;
	MWConfig_Script.push(["MWWorldstoneKeep.ntj", 10]); MWConfig_ClearAreaSpectypes.WorldstoneKeep = 0x01; MWConfig_SkipLevelOnWitches = true; MWConfig_SkipLevelOnSouls = false; MWConfig_SkipLevelOnDeathLords = true;
	MWConfig_Script.push(["NTBaal.ntj", 10]); NTConfig_KillBaal = true; MWConfig_SkipBaalOnDolls = true; MWConfig_SkipBaalOnSouls = false; MWConfig_DoBaalPreAttack = true;
	
	// *********************** Misc ************************
	
	MWConfig_Script.push(["MWAuraStack.ntj", 10]); MWConfig_StackRepetitions = 100;
	MWConfig_Script.push(["MWSuperChests.ntj", 20]); MWConfig_SuperChestClearAreaRadius = 10; MWConfig_SuperChestAreas = ["Cave Level 2", "Mausoleum", "Hole Level 2", "Pit Level 2", "Sewers Level 3", "Halls of the Dead Level 2", "Stony Tomb Level 2", "Maggot's Lair Level 3", "Ancient Tunnels", "Tal Rasha's Tomb", "Arachnid Lair", "Swampy Pit Level 3", "Flayer Dungeon", "Sewers Level 2", "Abbadon", "Pit of Acheron", "Drifter Cavern", "Infernal Pit", "Icy Cellar", "Halls of Pain"];
	MWConfig_Script.push(["MWRush.ntj", 0]); MWConfig_IsRusher = true; MWConfig_ActiveQuestersName = ""; MWConfig_NumberOfCharsToRush = 1; MWConfig_GetHoradricCubesInNorm = true; MWConfig_QuestSchedule = ["A4Q1", "A5Q1"]; MWConfig_RushActs = [1, 2, 3, 4, 5]; 
	MWConfig_Script.push(["MWWaypointCatcher.ntj", 0]); MWConfig_WaypointCatcherActs = [1, 2, 3, 4, 5]; MWConfig_TPWaypoints = true; MWConfig_SkipHallsOfPain = true; MWConfig_ClearWaypointPaths = false; 
	MWConfig_Script.push(["MWIdleMode.ntj", 0]); MWConfig_IdleModeRuntime = 5; // Runtime in Minutes
	MWConfig_Script.push(["NTCows.ntj", 10]);
	MWConfig_Script.push(["MWBloodyRejuvs.ntj", 10]);
	MWConfig_Script.push(["MWOrganHarvest.ntj", 10]); MWConfig_EnterInvalidUberPortals = true; MWConfig_PauseOnLackOfKeys = false; MWConfig_IntendedUberPortal = 0; // Matron's Den: 133; Forgotten Sands: 134; Furnace Of Pain: 135;
	MWConfig_Script.push(["MWUberTristram.ntj", 10]); MWConfig_PauseOnLackOfOrgans = false;
	MWConfig_Script.push(["MWAnyasBargain.ntj", 10]); MWConfig_ShoppingMinGold = 500000; MWConfig_ShoppingAttempts = 200;
	
	// ************ Leech and friends by lanara ************

	MWConfig_Script.push(["NTDiabloLeechFight.ntj", 10]); MWConfig_StartAtStar = true; MWConfig_EnterUnsafeTP = true; NTConfig_PreBuff = true;	NTConfig_Leader = "LeaderNameGoesHere";												// If the Leecher should go to a WP and buff up before he goes into the TP. (Needs River of Flame WP for Diablo and Frigid Highlands WP for Baal)
	MWConfig_Script.push(["NTBaalLeech.ntj", 10]); NTConfig_KillBaal = true; MWConfig_EnterUnsafeTP = false; NTConfig_Leader = "LeaderNameGoesHere";
	MWConfig_Script.push(["NTBaalLeechFight.ntj", 10]); NTConfig_KillBaal = true; MWConfig_DoBaalPreAttack = true; MWConfig_EnterUnsafeTP = true; NTConfig_Leader = "LeaderNameGoesHere";
	
	*/
	//------------------------------------------------------------------------------
	// Misc Configuration
	//------------------------------------------------------------------------------
	
	NTConfig_SkipHealLife = 90;		// If you have more than this percent of life, you won't go to a healer.
	NTConfig_SkipHealMana = 70;		// If you have more than this percent of mana, you won't go to a healer
	NTConfig_UseMerc = true;		// Set to true if you use a mercenary, will revive merc at a reviver npc.
	MWConfig_ResetArmor = false;	// Set to true to reset your Enigma if Teleport skill is missing. WARNING: Activating this feature may - though not likely will - result in the loss of your enigma. Use at your own risk!

	//------------------------------------------------------------------------------
	// Potion Configuration
	//------------------------------------------------------------------------------
	
	NTConfig_LifeThresh = 70;		// Drink a normal potion if under this percent of life.
	NTConfig_LifeRejuvThresh = 60;	// Drink a rejuvenation potion if under this percent of life.
	NTConfig_ManaThresh = 30;		// Drink a normal potion if under this percent of mana.
	NTConfig_ManaRejuvThresh = 1;	// Drink a rejuvenation potion if under this percent of mana.
	
	NTConfig_MercLifeThresh = 50;	// This is the threshold to use a life potion on your merc in percent.
	NTConfig_MercRejuvThresh = 30;	// This is the threshold to use a rejuv potion on your merc in percent.
	
	//------------------------------------------------------------------------------
	// Chicken Configuration
	//------------------------------------------------------------------------------
	
	// This is your chicken life. If you go below this threshhold, your char will exit the game. You can either enter a percentage (1-100), an absolute threshold (>100) or 0 to deactivate life chicken.
	NTConfig_LifeChicken = 30;
	// This is your chicken mana. If you go below this threshhold, your char will exit the game. You can either enter a percentage (1-100), an absolute threshold (>100) or 0 to deactivate mana chicken.
	NTConfig_ManaChicken = 0;
	// This is your merc's chicken life in percent. If your merc goes below this threshhold, your char will exit the game.
	NTConfig_MercChicken = 0;
	// Whether or not to disable chicken when you pause the bot.
	MWConfig_DisableChickenOnPause = true;
	
	//------------------------------------------------------------------------------
	// Inventory Configuration
	//------------------------------------------------------------------------------

	// Each number represents a slot in your inventory.
	// Set to 0 if the slot and its content must not be touched.
	// Set to 1 to allow access to this slot.
	// Set to 2 to select the slot that is used for storing keys. (if keys are kept at another slot, your char will try to move them)
	NTConfig_Columns[0] = [0,1,1,1,1,0,0,0,0,0];
	NTConfig_Columns[1] = [0,1,1,1,1,0,0,0,0,0];
	NTConfig_Columns[2] = [0,1,1,1,1,0,0,0,0,0];
	NTConfig_Columns[3] = [0,1,1,1,1,2,0,0,0,0];
	
	// Number of free columns. If less full columns are free stashing is set. Call SetFreeColumns(NTConfig_Columns) to always stash right away (recommended).
	NTConfig_FreeSpace = SetFreeColumns(NTConfig_Columns);

	// Maximum gold amount carried before going to stash.
	NTConfig_MinGoldToStash = 100000;
	
	// Set to true if your char is supposed to carry, buy and pick up keys. You do not need to add keys to your .nip files, they will be picked up anyway if this is set to true.
	MWConfig_CarryKeys = true;

	//------------------------------------------------------------------------------
	// Belt Configuration
	//------------------------------------------------------------------------------
	

	// Available types : "hp" = health, "mp" = mana, "rv" = rejuvenation.
	// Define how many columns are used for each potion type.
	MWConfig_BeltColType["hp"].Columns = 1;
	MWConfig_BeltColType["mp"].Columns = 1;
	MWConfig_BeltColType["rv"].Columns = 2;
	
	// Define minimum number of potions per column. If the actual number of potions in a column is below this value, your char will visit a merchant when in town in order to buy potions.
	MWConfig_BeltColType["hp"].MinPots = 3;
	MWConfig_BeltColType["mp"].MinPots = 3;
	
	// Visit Town and buy potions if your char lacks mana when trying to loot a corpse or teleport.
	MWConfig_BuyPotionsOnLackOfMana = true;
	
	// Set to true to replace low quality potions with higher quality potions that just dropped.
	MWConfig_ReplaceLowQualityPotions = true;

	//-----------------------------------------------------------------------------------
	// NipFile Configuration
	//-----------------------------------------------------------------------------------
	
	NTConfig_NIPFilePath.push("private/normal.nip");
	NTConfig_NIPFilePath.push("private/magic_rare.nip");
	NTConfig_NIPFilePath.push("private/set.nip");
	NTConfig_NIPFilePath.push("private/unique.nip");
	NTConfig_NIPFilePath.push("private/craft.nip");
	NTConfig_NIPFilePath.push("private/temp.nip");
	
	//------------------------------------------------------------------------------
	// Pickit Configuration
	//------------------------------------------------------------------------------
	
	// Radius to check for dropped items. NOTE: The maximum is at about ~75, entering higher values will not have any effect.
	NTConfig_SnagRange = 70;
	
	// Set to true to check for dropped items whenever you kill a monster. (Recommended value to avoid crashes: false)
	MWConfig_PickItemsInstantly = false;
	
	//------------------------------------------------------------------------------
	// Chest Configuration
	//------------------------------------------------------------------------------
	
	// Select which containers shall be looted. 0: None; 1: Super Chests, 2: All
	MWConfig_OpenContainerMode = 2;
	
	// Set to true to check for dropped items right after opening a chest. NOTE: This will slow down your runs and therefore should definately be set to false when doing private games.
	MWConfig_PickChestLootsInstantly = false;
	
	// This is the range being checked for chests after clearing an area or room. NOTE: You should not set this too high, 30 is a good value.
	MWConfig_OpenChestsRange = 30;
	
	// If you do not like to open chests in a certain area, you can its areaid as an exception below. NOTE: All areaids can be found in "sdk\areas.txt".
	// MWConfig_ChestExceptions.push(<areaid1>, <areaid2>, <areaidn>);

	//------------------------------------------------------------------------------
	// Cubing Configuration
	//------------------------------------------------------------------------------
	
	// Set to true to enable cubing and crafting. NOTE: The recipes are added in the global config by default. If you like to craft certain recipe only using this very char, add those recipes below.
	NTConfig_Cubing = true;
	
	//------------------------------------------------------------------------------
	// General Configuration
	//------------------------------------------------------------------------------
	
	// Set to true to activate public mode. By activating public mode, your char will form a party, open TPs and do some chat outputs when running certain bot scripts.
	NTConfig_PublicMode = true;

	// Set to true to exit the game instantly if the game is public. This may happen sometimes due to an error pasting the password correctly.
	MWConfig_ExitGameOnMissingPassword = false;
	
	// Set to true to exit the game when another player expresses hostility towards you.
	me.quitonhostile = true;
	
	// This is the maximum time in seconds your char will remain in a single game. Set to 0 to stay in game infinitely.
	me.maxgametime = 6000;
	
	// This is the minimum time in seconds for your char to remain in a single game. Your char will not exit the game before this time elapsed.
	me.mingametime = 0;

	// Set to true to use Telekinesis to interact tih certain objects
	MWConfig_UseTelekinesis = true;
	
	//------------------------------------------------------------------------------
	// Automule Configuration
	//------------------------------------------------------------------------------	

	// Set to true to enable auto mule.
	MWConfig_Automule.Activated = false;

	// The maximum stash load in percent before auto mule is triggered.
	MWConfig_Automule.MaxLoad = 95;

	// Set to true to show your stash's current load whenever managing stash.
	MWConfig_Automule.ShowCurrentLoad = true;

	// Set to true to finish your current game before muling, otherwise the game is left right away in case your stash is full.
	MWConfig_Automule.FinishGame = true;

	// Define which items are not to be touched when muling.
	MWConfig_Automule.DontMule.push("mule/dont_mule.nip");
	MWConfig_Automule.DontMule.push("mule/gems.nip");

	//------------------------------------------------------------------------------
	// Shrine Configuration
	//------------------------------------------------------------------------------
	
	// Set to true to activate nearby shrines. Shrines will only be activated if it is actually useful.
	MWConfig_ActivateNearbyShrines = true;
	
	// If you would like to skip shrines in a certain area, you can its areaid as an exception below. NOTE: All areaids can be found in "sdk\areas.txt".
	// MWConfig_ShrineExceptions.push(<areaid1>, <areaid2>, <areaidn>);
	
	//------------------------------------------------------------------------------
	// Precast Configuration
	//------------------------------------------------------------------------------
	
	// Your precast skills can be defined in the array below. NOTE: Battle Command, Battle Orders and Shout will be cast automatically. Constants for all skill ids can be found in "scripts\libs\common\MWSkills.ntl".
	MWConfig_PrecastSkills = [MWS_SHIVER_ARMOR, MWS_ENCHANT];
	
	// Set this to true if you would like to switch slots right after casting BC, BO and Shout. If set to false, your char will remain with the BO Slot until the whole precast procedure is done.
	MWConfig_SwitchSlotsAfterBoPrecast = true;
	
	//------------------------------------------------------------------------------
	// Attack Configuration
	//------------------------------------------------------------------------------
	
	// Specify your attack skills below. NOTE: Constants for all skill ids can be found in "scripts\libs\common\MWSkills.ntl".
	NTConfig_AttackSkill[0] = 49;	// Cast your first spell once. Set to 0 if you won't
	NTConfig_AttackSkill[1] = 49;	// Cast your primary spell to boss.
	NTConfig_AttackSkill[2] = 53;	// Cast your primary spell to others.
	NTConfig_AttackSkill[3] = 0;	// Cast your primary untimed spell if primary spell is timed spell. Set to 0 if you won't
	NTConfig_AttackSkill[4] = 0;	// Cast your secondary spell if monster is immune to your primary spell. Set to 0 if you won't
	NTConfig_AttackSkill[5] = 0;	// Cast your secondary untimed spell if secondary spell is timed spell. Set to 0 if you won't
		

	// Set to true if you want to clear area after killing boss. NOTE: This only affects a few botscripts.
	NTConfig_ClearPosition = true;
	
	// Set to true to clear area when killing a boss and the position is crowded by monsters. NOTE: Setting this to true may cause NTA_KillMonster() to fail way more often.
	MWConfig_ClearBossPosition = false;
	
	// This is the number of attacks to be performed before the the character tries to move to another position. Set to 0 not to reposition.
	MWConfig_AttacksBeforeRepositioning = 50;

	// Define a time limit for your attacks for each type of monster.
	MWConfig_AttackTimeLimit[0] = 20;	// Maximum time in seconds to attack a normal monster
	MWConfig_AttackTimeLimit[1] = 120;	// Maximum time in seconds to attack a super unique monster
	MWConfig_AttackTimeLimit[2] = 30;	// Maximum time in seconds to attack a champion
	MWConfig_AttackTimeLimit[3] = 120;	// Maximum time in seconds to attack a bosse
	MWConfig_AttackTimeLimit[4] = 30;	// Maximum time in seconds to attack a minion
	
	// Define when a monster is considered immune by entering the index of one or more of your attack skills. As an example: [1, 3] means that a monster is considered immune if it is immune to both NTConfig_AttackSkill[1] and NTConfig_AttackSkill[3], whatever those may be.
	MWConfig_CheckImmunitySkills = [];
	
	// Select the behaviour of your character when encountering a monsters that is considered immune referring to the definition above.
	// 0: Don't do anything. (D2NT default)
	// 1: Get close to the monster, use static field if the monster is not immune to lightning.
	// 2: Skip the monster.
	// 3: Attack the monster using NTConfig_AttackSkill[8] and NTConfig_AttackSkill[9]
	NTConfig_BehaviourOnImmuneMonster = 0;
	
	NTConfig_AttackSkill[8] = 49;		// Skill to be used against user defined immunes.
	NTConfig_AttackSkill[9] = 49;	// Untimed Skill to be used against user defined immunes.
	
	// Always check if monsters are closing in and back off, in case they get too close. NOTE: You should at least have 105FCR in order to make this work smoothly.
	MWConfig_KeepDistanceToMonsters = true;
	// If you don't wish to evade monsters in a certain area, add it's areaid as an exception below. NOTE: All areaids can be found in "sdk\areas.txt".
	// MWConfig_EvasionExceptions.push(<areaid1>, <areaid2>, <areaidn>);
	
	// Select whether or not you'd like to swap slots right before killing a boss in order to benefit from some extra MF in your second slot. 
	// The first element can either be the classid of the target or its name (case insensitive), second element is the life threshold in percent.
	//MWConfig_SlotSwapMonsters.push([156, 50]); // Andariel, 50%
	//MWConfig_SlotSwapMonsters.push([211, 20]); // Duriel, 20%
	//MWConfig_SlotSwapMonsters.push([242, 20]); // Mephisto, 20%
	//MWConfig_SlotSwapMonsters.push([243, 20]); // Diablo, 20%
	//MWConfig_SlotSwapMonsters.push([544, 15]); // Baal, 15%
	
	// Check self safe in field (NOT in town). Set to 0 if you won't.
	// 0x01 : Potion
	// 0x02 : Poison
	// 0x04 : Amplify Damage
	// 0x08 : Weaken
	// 0x10 : Iron Maiden
	// 0x20 : Decrepify
	// 0x40 : Lower Resist
	NTConfig_CheckSelfSafe = 0;
	
	// Check merc's safe in field (NOT in town). Set to 0 if you won't.
	// 0x01 : Death
	// 0x02 : Poison
	// 0x04 : Amplify Damage
	// 0x08 : Weaken
	// 0x10 : Iron Maiden
	// 0x20 : Decrepify
	// 0x40 : Lower Resist
	NTConfig_CheckMercSafe = 0x01;


	// Cast Static Field until monster's HP lower below this percentage. Set to 100 not to use static field.
	NTConfig_CastStatic = 60;
	
	// Select the monsters you with to attack using static field. NOTE: If you do not add any monsters, static will be used against all monsters.
	MWConfig_StaticTargets.push(156); // Andariel
	MWConfig_StaticTargets.push(211); // Duriel
	MWConfig_StaticTargets.push(242); // Mephisto
	MWConfig_StaticTargets.push(243); // Diablo
	MWConfig_StaticTargets.push(544); // Baal
	MWConfig_StaticTargets.push(GetLocaleString(22500)); // Eldritch The Rectifier
	MWConfig_StaticTargets.push(GetLocaleString(22435)); // Shenk The Overseer
}
was ist daran falsch -.-
acc name in der ntbotleech ist richtig -.-
wayne2007 is offline  
Old 08/22/2011, 18:33   #2970
Administrator
 
Muddy Waters's Avatar
 
elite*gold: 41624
Join Date: Jan 2010
Posts: 22,728
Received Thanks: 12,654
Quote:
Originally Posted by Traycas View Post
Hallo zusammen,

nach ein paar weiteren runs bin ich nun noch auf folgende Fehler gestoßen:

1. Ich lasse meinen Smiter im Moment Schlüssel, Organe und Torch farmen + Eldrich wegen Tränken und Baal zur Spiellänge/Erfahrung. Bei Baal ist mir aufgefallen, dass wenn der Boss der letzten Welle physisch imun ist, der Smiter ihn "nicht sieht". Er steigt nicht auf gesegneter Hammer im Angriff um und teleportiert durch den Raum um zu gucken, ob noch irgendwo ein Monster übrig ist, da sich ja die Kammer nicht öffnet. Dann bricht er das Skript irgendwann ab. Kann jetzt nicht sagen, ob das vorher auch schon so war oder erst mit dem neuen Uüdate kam.

2. beim gleichen Char habe ich das freeze-Problem, was einige andere auch haben. Ich kann noch nicht genau eingrenzen, ob es immer bei einem bestimmten Script oder einer bestimtmen Aktion passiert. Vielleicht kann ich das heute Abend nochmal etwas genauer herausfinden. Meine Sorc läuft tadellos durch, macht aber auch 30+ Min runs.

3. In Akt 3 war es meiner Sorc gestern nicht möglich einen Söldner zu kaufen. Sie ist 4x zum NPC hin, dann kam aber jedesmal das Menü zum Spiel beenden usw. anstatt das Auswahlmenü vom NPC. Nach dem vierten Mal habe ich sie von Hand erlöst...

Das erstmal als Feedback und
@Muddy: Danke für die Ressourcen und nein, es war kein Meckern, nur ein Wunsch, der von Dir erhört wurde

LG, Traycas
1. Klingt seltsam, das lässt sich reproduzieren?

2. Wie gesagt, im Hinblick auf Freezes kann ich nur sagen, dass ich seit Wochen keine mehr hatte und alles extrem rund läuft. Wenn du eine Möglichkeit findest, das zu reproduzieren, werde ich es aber natürlich mal anschauen.

3. Es lag kein D2-seitiger Bug vor, sprich du konntest problemlos mit dem NPC interagieren?

Quote:
Originally Posted by wayne2007 View Post
hey leute,....
ich kriege den bot nicht zum laufen...
der leader geht ins game und fängt an mit dem run...
der cofighter/leecher geht in den chat checkt einmal die friendslist und sonst passiert nichts mehr....
hier die nobotleech:
Code:
/**
*	This file was modified by  and 			
*	Check the programming section for updates and further scripts
*	Last Update: 15:34 20.08.2011
*/

var DelayedJoinChars               = new Array();
//###################################################################
//##############################Settings#############################
//###################################################################
	
var LeaderAccountName          = "w3574";
var LeaderName                 = "SSSSmite";
var GamePassword               = "";
var JoinGameAgain              = false; // Set to true to re-enter the same game after chicken or disconnect.

var UseCDKeyChangeTrick        = false; // Set to true to use multiple CD Keys

var JoinRandomChannel          = true;
var JoinChannelInChat          = "";
var FirstJoinMessage           = ""; // Message to post right after joining chat. Set to "" not to post any message.
var ChatMessageAfterGame       = ""; // Message to post when joining chta after a game. Set to "" not to post any message.

// If multiple leechers are to join the same game, they should do it slightly time shifted in order to avoid join bugs.
// Enter the names of your accounts OR chars below:
DelayedJoinChars.push("LeecherOne", "LeecherTwo", "LeecherThree");

//###################################################################
//##############################Delays###############################
//###################################################################

var GameMinLength              = 180000;

// realm delays (minutes)
var UnableToConnectRetry       = 2;
var RealmDownRetry             = 60;
var DisconnectedRetry          = 2;
var CdKeyInUseRetry            = 2;

// interface delays (milliseconds)
var MultipleLeecherJoinDelay   = 1000;
var JoinDelay                  = 100;
var ConnectingToBnetTimeout    = 20000;
var CharacterScreenTimeout     = 10000;
var PleaseWaitTimeout          = 10000;
var CreateGameThreshold        = 10000;
var CreateGameThresholdRandom  = 1000;
var CreateGameTimeout          = 15000;
var WaitInLineTimeout          = 15000;
var CharacterSelectDelay       = 5000
var LoginDelay                 = 1000;
var ClickDelay                 = 500;
var TextDelay                  = 500;
var ClickDelayRandom           = 500;
var TextDelayRandom            = 500;
var GameDoesNotExistDelayMin   = 600000;
var GameDoesNotExistDelayMax   = 900000;
var GameDoesNotExistTimeout    = 30000;
var WaitBeforeEnterChatMin     = 1000;
var WaitBeforeEnterChatMax     = 2000;
var WaitInChatBeforeActionsMin = 2000;
var WaitInChatBeforeActionsMax = 3000;

//###################################################################
//###################################################################
//###############DO NOT CHANGE ANYTHING BELOW THIS###################
//###################################################################
//###################################################################

//D2NT Manager Command

const D2NT_MGR_LOADING = 1;
const D2NT_MGR_READY = 2;
const D2NT_MGR_LOGIN = 3;
const D2NT_MGR_CREATE_GAME = 4;
const D2NT_MGR_INGAME = 5;
const D2NT_MGR_RESTART = 6;
const D2NT_MGR_CHICKEN = 7;
const D2NT_MGR_PRINT_STATUS = 8;
const D2NT_MGR_PRINT_LOG = 9;

var LastGameMade     = GetTickCount();
var LastGameStatus     = 0;
var NextGameMake     = 0;
var InGameAt       = 0;
var ChatActionsDone   = false;
var LastGameFailed     = false;
var SayChatMsgAfterGame = true;

Include("libs/controlInfo.ntl");

var ControlData = new controlInfo();

var SameGame = "";
var OldGame = "";
var Game = "";
var Debug = false;
var JoinChatAfterGame    = true;

function NTMain()
{
	Delay(1000);

	var _ingame = false;

	ControlData.ClickDelay = ClickDelay;
	ControlData.TextDelay = TextDelay;
	ControlData.ClickDelayRandom = ClickDelayRandom;
	ControlData.TextDelayRandom = TextDelayRandom;

	while(1)
	{
		if(me.ingame)
		{
			OldGame = me.gamename;

			if(!InGameAt)
				InGameAt = GetTickCount();

			if(!_ingame)
			{
				RunGC(); // run garbage collector between each game

				if(Load("NTBot/MWBotGame.ntj"))
				{
					_ingame = true;

					if(me.playtype > 0)
						sendEventToOOG(D2NT_MGR_INGAME, "In Game[IP:" + me.gameserverip.split(".")[3] + "]", 0);
					else
						sendEventToOOG(D2NT_MGR_INGAME, "In Game", 0);

					LastGameStatus = 2; // in game successful
				}
			}

			Delay(1000);
		}
		else
		{
			if(_ingame)
			{
				_ingame = false;
				SayChatMsgAfterGame = true;

				sendEventToOOG(D2NT_MGR_READY, "", 0);
			}

			locationAction(ControlData.getLocation());

			Delay(500);
		}
	}
}

function locationAction(location)
{
	var _randomChannel, _leaderFound, _lines, _msg, _msgLines, _lineIndex, _chat, _regGameNameWhispered, _regOffline, _regInChat, _regGameName;;
	
	switch(location.id)
	{
		case 3: // Lobby Chat
			sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name, 0);

			if(!ChatActionsDone)
			{  
				ChatActionsDone = true;

				Delay(Random(WaitInChatBeforeActionsMin, WaitInChatBeforeActionsMax));

				if(JoinRandomChannel || JoinChannelInChat != "")
				{
					SetStatusText("ÿc8Joining channel...");
					Say("/join " + (JoinRandomChannel ? getRandomString(Random(3,10)) : JoinChannelInChat));
					Delay(2000);
				}

				if(FirstJoinMessage)
				{
					Say(FirstJoinMessage);
					Delay(1000);
				}
			}

			if(SayChatMsgAfterGame)
			{
				if(ChatMessageAfterGame && OldGame != "")
					Say(ChatMessageAfterGame);
					
				SetStatusText("ÿc8Checking friendlist...");
				Say("/f l");
				SayChatMsgAfterGame = false;
				Delay(1500);
			}

			Game = "";

			if(_chat = ControlData.get(ControlData.controls.lobby.chat.textBox.channelText))
			{
				_leaderFound = false;
				_lines = _chat.GetText();
				for(_lineIndex = _lines.length - 1; _lineIndex > -1; _lineIndex--)
				{
					if(_leaderFound) // useless... :/
						break;

					if(_lines[_lineIndex].substring(0,1) == " ")
						continue;

					// retrieving the whole message
					_msg = _lines[_lineIndex].replace(/^\s+|\s+$/, "");
					_msgLines = 1;
					while(_lines[_lineIndex + _msgLines] != undefined && _lines[_lineIndex+_msgLines].substring(0,2) == "  ")
					{
						_msg += " " + _lines[_lineIndex + _msgLines].replace(/^\s+|\s+$/, "");
						_msgLines++;
					}
					
					// checking if the _msg is a friendly whisper
					if(_msg.toLowerCase().lastIndexOf(LeaderName.toLowerCase() + " (*" + LeaderAccountName.toLowerCase() + ")") > -1)
					{
						_regGameNameWhispered = /^.*(game|partie|spiel|partita|partida).*(nomm[^\s]*|called|chiamata)\s*([\w\s-]*\w)\s*\.\s*$/gi;
						if(_msg.match(_regGameNameWhispered))
							Game = _msg.replace(_regGameNameWhispered, "$3");

						if(Game != "")
						{
							_leaderFound = true;
							break;
						}
					}

					// checking if the _msg is from the friend list
					if(_msg.toLowerCase().lastIndexOf(": " + LeaderAccountName.toLowerCase() + ",") > -1)
					{
						_leaderFound = true;
						
						_regOffline = /^.*(offline|desconectado).*$/gi;
						_regInChat = /^.*(channel|canale?)\s*([\w\s-]*\w)\.?\s*$/gi;
						_regGameName = /^.*(game|partie|spiel|partita|partida)\s*([\w\s-]*\w)\s*\(priv[^\)]*\)\.\s*$/gi;

						if(_msg.match(_regOffline))
							SetStatusText("ÿc8Leader is currently offline.");
						else if(_msg.match(_regInChat))
							SetStatusText("ÿc8Waiting for leader to create a game.");
						else if(_msg.match(_regGameName))
							Game = _msg.replace(_regGameName, "$2");

						break;
					}
				}

				if(!_leaderFound)
				{
					DebugInOOG("I couldn't find the leader in my friend list!");
					SetStatusText("ÿc8Leader not found.");
				}
				
				if(Game != "")
				{
					DebugInOOG("Leader is in the game \"" + Game + "\"");
					//ControlData.click(ControlData.controls.lobby.button.join);
					//Delay(100);
					
					if(!JoinGameAgain)
					{
						if(Game != SameGame)
						{
							SetStatusText("ÿc8Joining Game: " + Game);
							
							if(UseCDKeyChangeTrick)
							{
								sendEventToOOG(D2NT_MGR_CREATE_GAME, location.name, 0);
								Delay(1000);
							}

							ControlData.click(ControlData.controls.lobby.button.join);
							Delay (200);
						}
						else
							SetStatusText("ÿc8Waiting for next game...");
					}
					else
					{
						SetStatusText("ÿc8Joining Game: " + Game);
						
						if (UseCDKeyChangeTrick)
						{
							sendEventToOOG(D2NT_MGR_CREATE_GAME, location.name, 0);
							Delay(1000);
						}

						ControlData.click(ControlData.controls.lobby.button.join);
						Delay (200);
					}

				}
			}
			else
				DebugInOOG("I can\'t read the chat!");

			if(Game != "")
				SameGame = Game;

			break;

		case 1:    // Lobby
			if(location.id == 1 && JoinChatAfterGame)
			{
				Delay(Random(WaitBeforeEnterChatMin, WaitBeforeEnterChatMax));
				ControlData.click(ControlData.controls.lobby.button.enterChat);
				break;
			}
			break;

		case 2: // Waiting In Line
			if(GetTickCount()-LastGameMade > WaitInLineTimeout)
				ControlData.click(ControlData.controls.lobby.inLine.button.cancel);
			break;

		case 4: // Create Game
			if(!ControlData.get(ControlData.controls.lobby.create.editBox.gameName))
			{
				ControlData.click(ControlData.controls.lobby.button.join);
				Delay (500);
				ControlData.click(ControlData.controls.lobby.button.create);
				Delay (500);
				break;
			}

			sendEventToOOG(D2NT_MGR_CREATE_GAME, location.name, 0);

			locationTimeout(5000, location);

			LastGameMade = GetTickCount();
			LastGameStatus = 1; // pending creation
			break;

	  case 5: // Join Game
		if (Game)
		{
			ControlData.setText( ControlData.controls.lobby.join.editBox.gameName, Game);
			Delay(100);
			ControlData.setText( ControlData.controls.lobby.join.editBox.password, GamePassword);
			for(var i = 0; i < DelayedJoinChars.length; i++)
			{
				if(me.charname.toLowerCase() == DelayedJoinChars[i].toLowerCase() || me.account.toLowerCase() == DelayedJoinChars[i].toLowerCase())
				{
					Delay(MultipleLeecherJoinDelay * i);
					break;
				}
			}
			Delay(JoinDelay);
			ControlData.click(ControlData.controls.lobby.join.button.joinGame);
			RunGC(); // run garbage collector between each game
			locationTimeout(5000, location);
			LastGameStatus = 1; // pending join
		}
		else
		{
			DebugInOOG("No game to join : cancelling");
			me.Cancel(1);
			Delay(1000);
		}
		break;

		case 6: // Ladder
			break;

		case 7: // Channel List
			break;

		case 8: // Main Menu
			if(ControlData.getCurrentRealmIndex() == me.gatewayid)
			{
				outputGameLength();
				ControlData.click(ControlData.gameTypes[me.playtype]);
			}
			else
				ControlData.click(ControlData.controls.mainMenu.button.gateway);
			break;

		case 9: // Login
			sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name, 0);
			Delay(LoginDelay);

			ControlData.setText(ControlData.controls.login.editBox.accountName, me.account);

			sendEventToOOG(D2NT_MGR_LOGIN, location.name, 0);

			locationTimeout(5000, location);
			break;

		case 10: // Login Error (this is a fatal error, so stop)
			sendEventToOOG(D2NT_MGR_RESTART, location.name, 10);
			Delay(3500);
			break;

		case 11: // Unable To Connect
			timeoutDelay(UnableToConnectRetry*60*1000, location)
			ControlData.click(ControlData.controls.login.unableToConnect.button.ok);
			break;

		case 12: // Character Select
			var _time, _control;

			sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name, 0);

			for(_time = 0 ; _time < CharacterScreenTimeout ; _time += 500)
			{
				_control = ControlData.get(ControlData.controls.characterSelect.textBox.characterInfo[me.charloc]);
				if(_control && _control.GetText() != undefined)
					break;

				Delay(500);
			}

			if(_time < CharacterScreenTimeout)
			{
				Delay(CharacterSelectDelay);

				ControlData.click(ControlData.controls.characterSelect.textBox.characters[me.charloc], 0, 0, 1);
				ControlData.click(ControlData.controls.characterSelect.textBox.characterInfo[me.charloc], 0, 0, 1);

				// reset last game made, so it doesnt make a game immediately
				InGameAt = 0;
				setNextGameMake();
			}
			else
			{
				ControlData.click(ControlData.controls.characterSelect.button.exit);
				timeoutDelay(RealmDownRetry*60*1000, location);
			}
			break;

		case 13: // Realm Down - Character Select screen
			ControlData.click(ControlData.controls.characterSelect.button.exit);
			timeoutDelay(RealmDownRetry*60*1000, location);
			break;

		case 14: // Character Select - Disconnected
			timeoutDelay(DisconnectedRetry*60*1000, location);
			ControlData.click(ControlData.controls.characterSelect.disconnected.button.ok);
			break;

		case 15: // New Character
			break;    

		case 16: // Character Select - Please Wait popup
			if(!locationTimeout(PleaseWaitTimeout, location))
				ControlData.click(ControlData.controls.characterSelect.pleaseWait.button.cancel);
			break;

		case 17: // Lobby - Lost Connection - just click okay, since we're toast anyway
			ControlData.click(ControlData.controls.lobby.lostConnection.button.ok);
			break;

		case 18: // D2 Splash
			ControlData.click(ControlData.controls.d2Splash.textBox.copyright);
			break;

		case 19: // Login - Cdkey In Use
			timeoutDelay(CdKeyInUseRetry*60*1000, location);
			ControlData.click(ControlData.controls.login.cdkeyInUse.button.ok);
			break;

		case 20: // Single Player - Select Difficulty
			ControlData.click(ControlData.singlePlayerDifficulties[me.diff]);
			break;

		case 21: // Main Menu - Connecting
			if(!locationTimeout(ConnectingToBnetTimeout, location))
				ControlData.click(ControlData.controls.mainMenu.connecting.button.cancel);
			break;

		case 22: // Login - Invalid Cdkey (classic or xpac)
			sendEventToOOG(D2NT_MGR_RESTART, location.name, 3600);
			Delay(3500);
			break;    

		case 23: // Character Select - Connecting
			if(!locationTimeout(CharacterScreenTimeout, location))
				ControlData.click(ControlData.controls.characterSelect.button.exit);
			break;

		case 24: // Server Down - not much to do but wait..
			break;

		case 25: // Lobby - Please Wait
			if(!locationTimeout(PleaseWaitTimeout, location))
				ControlData.click(ControlData.controls.lobby.pleaseWait.button.cancel);
			break;

		case 26: // Lobby - Game Name Exists
			sendEventToOOG(D2NT_MGR_PRINT_LOG, "yE00000Game already exists", 0);

			InGameAt = 0;
			LastGameStatus = 0;
			setNextGameMake();

			locationTimeout(15000, location);
			break;

		case 27: // Gateway Select
			ControlData.clickRealmEntry(me.gatewayid);
			ControlData.click(ControlData.controls.gateway.button.ok);
			break;

		case 28: // Lobby - Game Does Not Exist
			InGameAt = Random(GameDoesNotExistDelayMin, GameDoesNotExistDelayMax);
			LastGameStatus = 0;
			setNextGameMake();

			locationTimeout(GameDoesNotExistTimeout, location);
			break;
		default:
			DebugInOOG("Unhandled location : "+location.id);
			break;
	}
	//DebugInOOG("Location : "+location.id);
}

function sendEventToOOG(locationId, statusString, pendingTime)
{
	return SendCopyData("D2NT Manager", null, (locationId<<16)|pendingTime, statusString);
}

function setNextGameMake()
{
	LastGameMade = GetTickCount();
	NextGameMake = LastGameMade + CreateGameThreshold + Random(0-CreateGameThresholdRandom, CreateGameThresholdRandom) + InGameAt;
	InGameAt = 0;
	ChatActionsDone = false;
}

function outputGameLength()
{
	if(InGameAt)
	{
		duration = GetTickCount() - InGameAt;

		InGameAt = (duration < GameMinLength ? GameMinLength - duration : 0);
	}
}

function locationTimeout(time, location)
{
	endtime = GetTickCount() + time;

	while(ControlData.getLocation().id == location.id && endtime > GetTickCount())
	{
		sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name + " (" + parseInt((endtime-GetTickCount())/1000) + "s)", 0);
		Delay(500);
	}

	return (ControlData.getLocation().id != location.id);
}

function timeoutDelay(time, location)
{
	endtime = GetTickCount() + time;

	while(endtime > GetTickCount())
	{
		sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name + " (" + parseInt((endtime-GetTickCount())/1000) + "s)", 0);
		Delay(1000);
	}
}

function getRandomString(_length)
{
	_retString = "";
	_charSet = "0123456789abcdefghijklmnopqrstuvwxyz";

	while(_length--)
	{
		_retString += _charSet.charAt(Random(0, _charSet.length-1));
		Delay(1);
	}

	return _retString;
}
function DebugInOOG(logString)
{
	if (Debug)
		return SendCopyData("D2NT Manager", null, 9<<16, "-- Debug : " + logString);
	else
		return false;
}
und hier meine ntconfig vom leecher

Code:
/**
*	This file was modified by 
*	Check the programming section for updates and further scripts
*	Last Update: 17:46 17.08.2011
*
*	Hotkey				Description
*
*	Pause/Break			Pauses the current bot script.
*	Page up (PgUp)		Skips the current bot script.
*	Page down (PgDn)	Repeats the previous bot script
*	Home (Pos1)			Shows your current coordinates and areaid.
*	End					Shows current ping in status text bar.
*	Insert (Ins)		Logs all items on your char to either XML or TXT.
*	Delete (Del)		Exits the game. NOTE: Always use this key to leave a game!
*	Backspace			Force trigger auto mule. NOTE: Won't work unless auto mule is actually activated for the current char.
*/

Include("NTBot/char_configs/MWConfig_GlobalSettings.ntl");

var NTConfig_CastStatic;

function NT_LoadConfig()
{
	MW_LoadGlobalSettings();

	
	//------------------------------------------------------------------------------
	//
	// Run Configuration
	//
	//------------------------------------------------------------------------------
	
	// Use the following syntax for activating botscripts: MWConfig_Script.push([<ScriptName>, <Script runtime in minutes (0 is infinite)>]);
	// ***************** Current schedule ******************

	MWConfig_Script.push(["NTDiabloLeechFight.ntj", 10]); MWConfig_StartAtStar = true; MWConfig_EnterUnsafeTP = true; NTConfig_PreBuff = true;	NTConfig_Leader = "SSSSmite";												// If the Leecher should go to a WP and buff up before he goes into the TP. (Needs River of Flame WP for Diablo and Frigid Highlands WP for Baal)
	MWConfig_Script.push(["NTBaalLeechFight.ntj", 10]); NTConfig_KillBaal = true; MWConfig_DoBaalPreAttack = true; MWConfig_EnterUnsafeTP = true; NTConfig_Leader = "SSSSmite";
	MWConfig_Script.push(["NTPit.ntj", 10]); MWConfig_ClearPathSpectypes.Pit = 0; MWConfig_ClearAreaSpectypes.Pit = 0x01; NTConfig_ClearPitLevel1 = 0; // 0 : don't clear, 1 : clear path only, 2 : clear all
		

	// *****************************************************
	
	//------------------------------------------------------------------------------
	// Available Scripts
	//------------------------------------------------------------------------------
	/* NOTE:
	// The scripts below are actually commented out; to add a script, copy one of the lines below and add it to the current schedule above. ;)
	// You should also get yourself a decent editor that supports syntax highlighting for JavaScript, I'd recommend Notepad++. (http://notepad-plus-plus.org/download/)
	// *********************** Act I ***********************
	
	MWConfig_Script.push(["NTMausoleum.ntj", 10]); MWConfig_ClearPathSpectypes.Mausoleum = 0; MWConfig_ClearAreaSpectypes.Mausoleum = 0x01; NTConfig_KillBloodRaven = true;
	MWConfig_Script.push(["NTTristram.ntj", 10]); NTConfig_KillRakanishu = true;
	MWConfig_Script.push(["NTHole.ntj", 10]); MWConfig_ClearPathSpectypes.Hole = 0; MWConfig_ClearAreaSpectypes.Hole = 0x01; NTConfig_ClearHoleLevel1 = 1; // 0 : don't clear, 1 : clear path only, 2 : clear all
	MWConfig_Script.push(["NTTreehead.ntj", 10]);
	MWConfig_Script.push(["MWColdcrow.ntj", 10]); MWConfig_ClearCaveMode = 0; // 0: Only kill coldcrow; 1: Clear Cave Level 1; 2: Clear both Cave Level 1 & 2
	MWConfig_Script.push(["NTCountess.ntj", 5]); MWConfig_ClearPathSpectypes.Countess = 0; MWConfig_ClearAreaSpectypes.Countess = 0;
	MWConfig_Script.push(["NTPit.ntj", 10]); MWConfig_ClearPathSpectypes.Pit = 0; MWConfig_ClearAreaSpectypes.Pit = 0x01; NTConfig_ClearPitLevel1 = 2; // 0 : don't clear, 1 : clear path only, 2 : clear all
	MWConfig_Script.push(["NTAndariel.ntj", 10]);
	
	// *********************** Act II **********************
	
	MWConfig_Script.push(["NTRadament.ntj", 10]); MWConfig_ClearPathSpectypes.Radament = 0;
	MWConfig_Script.push(["MWMaggotsLair.ntj", 10]); MWConfig_ClearPathSpectypes.MaggotsLair = 0; MWConfig_ClearAreaSpectypes.MaggotsLair = 0x01;
	MWConfig_Script.push(["NTAncientTunnels.ntj", 10]); MWConfig_ClearPathSpectypes.AncientTunnels = 0; MWConfig_ClearAreaSpectypes.AncientTunnels = 0x01;
	MWConfig_Script.push(["NTSummoner.ntj", 5]); NTConfig_KillFireEye = false; MWConfig_ClearPathSpectypes.Summoner = 0;
	MWConfig_Script.push(["NTDuriel.ntj", 10]); MWConfig_ClearPathSpectypes.Duriel = 0;
	
	// ********************** Act III **********************
	
	MWConfig_Script.push(["MWFlayerJungle.ntj", 10]); MWConfig_ClearAreaSpectypes.FlayerJungle = 0x01;
	MWConfig_Script.push(["MWKurastSewers.ntj", 5]); MWConfig_ClearPathSpectypes.KurastSewers = 0;
	MWConfig_Script.push(["MWKurastTemples.ntj", 5]) MWConfig_ClearPathSpectypes.KurastTemples = 0; MWConfig_ClearAreaSpectypes.KurastTemples = 0x01;
	MWConfig_Script.push(["NTTravincal.ntj", 5]);
	MWConfig_Script.push(["NTMephisto.ntj", 5]); MWConfig_OpenMephistoChest = true; MWConfig_MephistoClearArea = true;
	
	// *********************** Act IV **********************
	
	MWConfig_Script.push(["NTIzual.ntj", 5]); MWConfig_ClearPathSpectypes.Izual = 0;
	MWConfig_Script.push(["MWRiverOfFlame.ntj", 10]); MWConfig_ClearAreaSpectypes.RiverOfFlame = 0x01;
	MWConfig_Script.push(["NTHephasto.ntj", 10]); MWConfig_ClearPathSpectypes.Hephasto = 0;
	MWConfig_Script.push(["NTDiablo.ntj", 10]); MWConfig_KillFullInfectorMob = true; MWConfig_StartAtStar = false; MWConfig_IgnoreSealOpeningErrors = false; MWConfig_FastDia = true;
	
	// *********************** Act V ***********************
	
	MWConfig_Script.push(["MWAbbadon.ntj", 10]); MWConfig_ClearPathSpectypes.Abbadon = 0; MWConfig_ClearAreaSpectypes.Abbadon = 0x01;
	MWConfig_Script.push(["MWPitOfAcheron.ntj", 10]); MWConfig_ClearPathSpectypes.PitOfAcheron = 0; MWConfig_ClearAreaSpectypes.PitOfAcheron = 0x01;
	MWConfig_Script.push(["MWInfernalPit.ntj", 10]); MWConfig_ClearPathSpectypes.InfernalPit = 0; MWConfig_ClearAreaSpectypes.InfernalPit = 0x01;
	MWConfig_Script.push(["MWHallsOfPain.ntj", 15]); MWConfig_ClearAreaSpectypes.HallsOfPain = 0x01; MWConfig_ClearHallsOfAnguish = true;
	MWConfig_Script.push(["NTPindleskin.ntj", 5]); NTConfig_NihlathakExtension = false; MWConfig_SkipOnTombVipers = true;
	MWConfig_Script.push(["NTEldritch.ntj", 5]); NTConfig_ShenkExtension = true;
	MWConfig_Script.push(["NTThreshSocket.ntj", 5]); MWConfig_ClearPathSpectypes.ThreshSocket = 0;
	MWConfig_Script.push(["NTFrozenRiver.ntj", 10]); MWConfig_ClearPathSpectypes.FrozenRiver = 0; MWConfig_ClearAreaSpectypes.FrozenRiver = 0x01;
	MWConfig_Script.push(["NTGlacialTrail.ntj", 10]); MWConfig_ClearPathSpectypes.GlacialTrail = 0; MWConfig_ClearAreaSpectypes.GlacialTrail = 0x01; 
	MWConfig_Script.push(["NTIcyCellar.ntj", 5]); MWConfig_ClearPathSpectypes.IcyCellar = 0; MWConfig_ClearAreaSpectypes.IcyCellar = 0x01;
	MWConfig_Script.push(["NTNihlathak.ntj", 5]); MWConfig_ClearPathSpectypes.Nihlathak = 0; NTConfig_PindleskinExtension = false; MWConfig_SkipOnTombVipers = true;
	MWConfig_Script.push(["MWWorldstoneKeep.ntj", 10]); MWConfig_ClearAreaSpectypes.WorldstoneKeep = 0x01; MWConfig_SkipLevelOnWitches = true; MWConfig_SkipLevelOnSouls = false; MWConfig_SkipLevelOnDeathLords = true;
	MWConfig_Script.push(["NTBaal.ntj", 10]); NTConfig_KillBaal = true; MWConfig_SkipBaalOnDolls = true; MWConfig_SkipBaalOnSouls = false; MWConfig_DoBaalPreAttack = true;
	
	// *********************** Misc ************************
	
	MWConfig_Script.push(["MWAuraStack.ntj", 10]); MWConfig_StackRepetitions = 100;
	MWConfig_Script.push(["MWSuperChests.ntj", 20]); MWConfig_SuperChestClearAreaRadius = 10; MWConfig_SuperChestAreas = ["Cave Level 2", "Mausoleum", "Hole Level 2", "Pit Level 2", "Sewers Level 3", "Halls of the Dead Level 2", "Stony Tomb Level 2", "Maggot's Lair Level 3", "Ancient Tunnels", "Tal Rasha's Tomb", "Arachnid Lair", "Swampy Pit Level 3", "Flayer Dungeon", "Sewers Level 2", "Abbadon", "Pit of Acheron", "Drifter Cavern", "Infernal Pit", "Icy Cellar", "Halls of Pain"];
	MWConfig_Script.push(["MWRush.ntj", 0]); MWConfig_IsRusher = true; MWConfig_ActiveQuestersName = ""; MWConfig_NumberOfCharsToRush = 1; MWConfig_GetHoradricCubesInNorm = true; MWConfig_QuestSchedule = ["A4Q1", "A5Q1"]; MWConfig_RushActs = [1, 2, 3, 4, 5]; 
	MWConfig_Script.push(["MWWaypointCatcher.ntj", 0]); MWConfig_WaypointCatcherActs = [1, 2, 3, 4, 5]; MWConfig_TPWaypoints = true; MWConfig_SkipHallsOfPain = true; MWConfig_ClearWaypointPaths = false; 
	MWConfig_Script.push(["MWIdleMode.ntj", 0]); MWConfig_IdleModeRuntime = 5; // Runtime in Minutes
	MWConfig_Script.push(["NTCows.ntj", 10]);
	MWConfig_Script.push(["MWBloodyRejuvs.ntj", 10]);
	MWConfig_Script.push(["MWOrganHarvest.ntj", 10]); MWConfig_EnterInvalidUberPortals = true; MWConfig_PauseOnLackOfKeys = false; MWConfig_IntendedUberPortal = 0; // Matron's Den: 133; Forgotten Sands: 134; Furnace Of Pain: 135;
	MWConfig_Script.push(["MWUberTristram.ntj", 10]); MWConfig_PauseOnLackOfOrgans = false;
	MWConfig_Script.push(["MWAnyasBargain.ntj", 10]); MWConfig_ShoppingMinGold = 500000; MWConfig_ShoppingAttempts = 200;
	
	// ************ Leech and friends by lanara ************

	MWConfig_Script.push(["NTDiabloLeechFight.ntj", 10]); MWConfig_StartAtStar = true; MWConfig_EnterUnsafeTP = true; NTConfig_PreBuff = true;	NTConfig_Leader = "LeaderNameGoesHere";												// If the Leecher should go to a WP and buff up before he goes into the TP. (Needs River of Flame WP for Diablo and Frigid Highlands WP for Baal)
	MWConfig_Script.push(["NTBaalLeech.ntj", 10]); NTConfig_KillBaal = true; MWConfig_EnterUnsafeTP = false; NTConfig_Leader = "LeaderNameGoesHere";
	MWConfig_Script.push(["NTBaalLeechFight.ntj", 10]); NTConfig_KillBaal = true; MWConfig_DoBaalPreAttack = true; MWConfig_EnterUnsafeTP = true; NTConfig_Leader = "LeaderNameGoesHere";
	
	*/
	//------------------------------------------------------------------------------
	// Misc Configuration
	//------------------------------------------------------------------------------
	
	NTConfig_SkipHealLife = 90;		// If you have more than this percent of life, you won't go to a healer.
	NTConfig_SkipHealMana = 70;		// If you have more than this percent of mana, you won't go to a healer
	NTConfig_UseMerc = true;		// Set to true if you use a mercenary, will revive merc at a reviver npc.
	MWConfig_ResetArmor = false;	// Set to true to reset your Enigma if Teleport skill is missing. WARNING: Activating this feature may - though not likely will - result in the loss of your enigma. Use at your own risk!

	//------------------------------------------------------------------------------
	// Potion Configuration
	//------------------------------------------------------------------------------
	
	NTConfig_LifeThresh = 70;		// Drink a normal potion if under this percent of life.
	NTConfig_LifeRejuvThresh = 60;	// Drink a rejuvenation potion if under this percent of life.
	NTConfig_ManaThresh = 30;		// Drink a normal potion if under this percent of mana.
	NTConfig_ManaRejuvThresh = 1;	// Drink a rejuvenation potion if under this percent of mana.
	
	NTConfig_MercLifeThresh = 50;	// This is the threshold to use a life potion on your merc in percent.
	NTConfig_MercRejuvThresh = 30;	// This is the threshold to use a rejuv potion on your merc in percent.
	
	//------------------------------------------------------------------------------
	// Chicken Configuration
	//------------------------------------------------------------------------------
	
	// This is your chicken life. If you go below this threshhold, your char will exit the game. You can either enter a percentage (1-100), an absolute threshold (>100) or 0 to deactivate life chicken.
	NTConfig_LifeChicken = 30;
	// This is your chicken mana. If you go below this threshhold, your char will exit the game. You can either enter a percentage (1-100), an absolute threshold (>100) or 0 to deactivate mana chicken.
	NTConfig_ManaChicken = 0;
	// This is your merc's chicken life in percent. If your merc goes below this threshhold, your char will exit the game.
	NTConfig_MercChicken = 0;
	// Whether or not to disable chicken when you pause the bot.
	MWConfig_DisableChickenOnPause = true;
	
	//------------------------------------------------------------------------------
	// Inventory Configuration
	//------------------------------------------------------------------------------

	// Each number represents a slot in your inventory.
	// Set to 0 if the slot and its content must not be touched.
	// Set to 1 to allow access to this slot.
	// Set to 2 to select the slot that is used for storing keys. (if keys are kept at another slot, your char will try to move them)
	NTConfig_Columns[0] = [0,1,1,1,1,0,0,0,0,0];
	NTConfig_Columns[1] = [0,1,1,1,1,0,0,0,0,0];
	NTConfig_Columns[2] = [0,1,1,1,1,0,0,0,0,0];
	NTConfig_Columns[3] = [0,1,1,1,1,2,0,0,0,0];
	
	// Number of free columns. If less full columns are free stashing is set. Call SetFreeColumns(NTConfig_Columns) to always stash right away (recommended).
	NTConfig_FreeSpace = SetFreeColumns(NTConfig_Columns);

	// Maximum gold amount carried before going to stash.
	NTConfig_MinGoldToStash = 100000;
	
	// Set to true if your char is supposed to carry, buy and pick up keys. You do not need to add keys to your .nip files, they will be picked up anyway if this is set to true.
	MWConfig_CarryKeys = true;

	//------------------------------------------------------------------------------
	// Belt Configuration
	//------------------------------------------------------------------------------
	

	// Available types : "hp" = health, "mp" = mana, "rv" = rejuvenation.
	// Define how many columns are used for each potion type.
	MWConfig_BeltColType["hp"].Columns = 1;
	MWConfig_BeltColType["mp"].Columns = 1;
	MWConfig_BeltColType["rv"].Columns = 2;
	
	// Define minimum number of potions per column. If the actual number of potions in a column is below this value, your char will visit a merchant when in town in order to buy potions.
	MWConfig_BeltColType["hp"].MinPots = 3;
	MWConfig_BeltColType["mp"].MinPots = 3;
	
	// Visit Town and buy potions if your char lacks mana when trying to loot a corpse or teleport.
	MWConfig_BuyPotionsOnLackOfMana = true;
	
	// Set to true to replace low quality potions with higher quality potions that just dropped.
	MWConfig_ReplaceLowQualityPotions = true;

	//-----------------------------------------------------------------------------------
	// NipFile Configuration
	//-----------------------------------------------------------------------------------
	
	NTConfig_NIPFilePath.push("private/normal.nip");
	NTConfig_NIPFilePath.push("private/magic_rare.nip");
	NTConfig_NIPFilePath.push("private/set.nip");
	NTConfig_NIPFilePath.push("private/unique.nip");
	NTConfig_NIPFilePath.push("private/craft.nip");
	NTConfig_NIPFilePath.push("private/temp.nip");
	
	//------------------------------------------------------------------------------
	// Pickit Configuration
	//------------------------------------------------------------------------------
	
	// Radius to check for dropped items. NOTE: The maximum is at about ~75, entering higher values will not have any effect.
	NTConfig_SnagRange = 70;
	
	// Set to true to check for dropped items whenever you kill a monster. (Recommended value to avoid crashes: false)
	MWConfig_PickItemsInstantly = false;
	
	//------------------------------------------------------------------------------
	// Chest Configuration
	//------------------------------------------------------------------------------
	
	// Select which containers shall be looted. 0: None; 1: Super Chests, 2: All
	MWConfig_OpenContainerMode = 2;
	
	// Set to true to check for dropped items right after opening a chest. NOTE: This will slow down your runs and therefore should definately be set to false when doing private games.
	MWConfig_PickChestLootsInstantly = false;
	
	// This is the range being checked for chests after clearing an area or room. NOTE: You should not set this too high, 30 is a good value.
	MWConfig_OpenChestsRange = 30;
	
	// If you do not like to open chests in a certain area, you can its areaid as an exception below. NOTE: All areaids can be found in "sdk\areas.txt".
	// MWConfig_ChestExceptions.push(<areaid1>, <areaid2>, <areaidn>);

	//------------------------------------------------------------------------------
	// Cubing Configuration
	//------------------------------------------------------------------------------
	
	// Set to true to enable cubing and crafting. NOTE: The recipes are added in the global config by default. If you like to craft certain recipe only using this very char, add those recipes below.
	NTConfig_Cubing = true;
	
	//------------------------------------------------------------------------------
	// General Configuration
	//------------------------------------------------------------------------------
	
	// Set to true to activate public mode. By activating public mode, your char will form a party, open TPs and do some chat outputs when running certain bot scripts.
	NTConfig_PublicMode = true;

	// Set to true to exit the game instantly if the game is public. This may happen sometimes due to an error pasting the password correctly.
	MWConfig_ExitGameOnMissingPassword = false;
	
	// Set to true to exit the game when another player expresses hostility towards you.
	me.quitonhostile = true;
	
	// This is the maximum time in seconds your char will remain in a single game. Set to 0 to stay in game infinitely.
	me.maxgametime = 6000;
	
	// This is the minimum time in seconds for your char to remain in a single game. Your char will not exit the game before this time elapsed.
	me.mingametime = 0;

	// Set to true to use Telekinesis to interact tih certain objects
	MWConfig_UseTelekinesis = true;
	
	//------------------------------------------------------------------------------
	// Automule Configuration
	//------------------------------------------------------------------------------	

	// Set to true to enable auto mule.
	MWConfig_Automule.Activated = false;

	// The maximum stash load in percent before auto mule is triggered.
	MWConfig_Automule.MaxLoad = 95;

	// Set to true to show your stash's current load whenever managing stash.
	MWConfig_Automule.ShowCurrentLoad = true;

	// Set to true to finish your current game before muling, otherwise the game is left right away in case your stash is full.
	MWConfig_Automule.FinishGame = true;

	// Define which items are not to be touched when muling.
	MWConfig_Automule.DontMule.push("mule/dont_mule.nip");
	MWConfig_Automule.DontMule.push("mule/gems.nip");

	//------------------------------------------------------------------------------
	// Shrine Configuration
	//------------------------------------------------------------------------------
	
	// Set to true to activate nearby shrines. Shrines will only be activated if it is actually useful.
	MWConfig_ActivateNearbyShrines = true;
	
	// If you would like to skip shrines in a certain area, you can its areaid as an exception below. NOTE: All areaids can be found in "sdk\areas.txt".
	// MWConfig_ShrineExceptions.push(<areaid1>, <areaid2>, <areaidn>);
	
	//------------------------------------------------------------------------------
	// Precast Configuration
	//------------------------------------------------------------------------------
	
	// Your precast skills can be defined in the array below. NOTE: Battle Command, Battle Orders and Shout will be cast automatically. Constants for all skill ids can be found in "scripts\libs\common\MWSkills.ntl".
	MWConfig_PrecastSkills = [MWS_SHIVER_ARMOR, MWS_ENCHANT];
	
	// Set this to true if you would like to switch slots right after casting BC, BO and Shout. If set to false, your char will remain with the BO Slot until the whole precast procedure is done.
	MWConfig_SwitchSlotsAfterBoPrecast = true;
	
	//------------------------------------------------------------------------------
	// Attack Configuration
	//------------------------------------------------------------------------------
	
	// Specify your attack skills below. NOTE: Constants for all skill ids can be found in "scripts\libs\common\MWSkills.ntl".
	NTConfig_AttackSkill[0] = 49;	// Cast your first spell once. Set to 0 if you won't
	NTConfig_AttackSkill[1] = 49;	// Cast your primary spell to boss.
	NTConfig_AttackSkill[2] = 53;	// Cast your primary spell to others.
	NTConfig_AttackSkill[3] = 0;	// Cast your primary untimed spell if primary spell is timed spell. Set to 0 if you won't
	NTConfig_AttackSkill[4] = 0;	// Cast your secondary spell if monster is immune to your primary spell. Set to 0 if you won't
	NTConfig_AttackSkill[5] = 0;	// Cast your secondary untimed spell if secondary spell is timed spell. Set to 0 if you won't
		

	// Set to true if you want to clear area after killing boss. NOTE: This only affects a few botscripts.
	NTConfig_ClearPosition = true;
	
	// Set to true to clear area when killing a boss and the position is crowded by monsters. NOTE: Setting this to true may cause NTA_KillMonster() to fail way more often.
	MWConfig_ClearBossPosition = false;
	
	// This is the number of attacks to be performed before the the character tries to move to another position. Set to 0 not to reposition.
	MWConfig_AttacksBeforeRepositioning = 50;

	// Define a time limit for your attacks for each type of monster.
	MWConfig_AttackTimeLimit[0] = 20;	// Maximum time in seconds to attack a normal monster
	MWConfig_AttackTimeLimit[1] = 120;	// Maximum time in seconds to attack a super unique monster
	MWConfig_AttackTimeLimit[2] = 30;	// Maximum time in seconds to attack a champion
	MWConfig_AttackTimeLimit[3] = 120;	// Maximum time in seconds to attack a bosse
	MWConfig_AttackTimeLimit[4] = 30;	// Maximum time in seconds to attack a minion
	
	// Define when a monster is considered immune by entering the index of one or more of your attack skills. As an example: [1, 3] means that a monster is considered immune if it is immune to both NTConfig_AttackSkill[1] and NTConfig_AttackSkill[3], whatever those may be.
	MWConfig_CheckImmunitySkills = [];
	
	// Select the behaviour of your character when encountering a monsters that is considered immune referring to the definition above.
	// 0: Don't do anything. (D2NT default)
	// 1: Get close to the monster, use static field if the monster is not immune to lightning.
	// 2: Skip the monster.
	// 3: Attack the monster using NTConfig_AttackSkill[8] and NTConfig_AttackSkill[9]
	NTConfig_BehaviourOnImmuneMonster = 0;
	
	NTConfig_AttackSkill[8] = 49;		// Skill to be used against user defined immunes.
	NTConfig_AttackSkill[9] = 49;	// Untimed Skill to be used against user defined immunes.
	
	// Always check if monsters are closing in and back off, in case they get too close. NOTE: You should at least have 105FCR in order to make this work smoothly.
	MWConfig_KeepDistanceToMonsters = true;
	// If you don't wish to evade monsters in a certain area, add it's areaid as an exception below. NOTE: All areaids can be found in "sdk\areas.txt".
	// MWConfig_EvasionExceptions.push(<areaid1>, <areaid2>, <areaidn>);
	
	// Select whether or not you'd like to swap slots right before killing a boss in order to benefit from some extra MF in your second slot. 
	// The first element can either be the classid of the target or its name (case insensitive), second element is the life threshold in percent.
	//MWConfig_SlotSwapMonsters.push([156, 50]); // Andariel, 50%
	//MWConfig_SlotSwapMonsters.push([211, 20]); // Duriel, 20%
	//MWConfig_SlotSwapMonsters.push([242, 20]); // Mephisto, 20%
	//MWConfig_SlotSwapMonsters.push([243, 20]); // Diablo, 20%
	//MWConfig_SlotSwapMonsters.push([544, 15]); // Baal, 15%
	
	// Check self safe in field (NOT in town). Set to 0 if you won't.
	// 0x01 : Potion
	// 0x02 : Poison
	// 0x04 : Amplify Damage
	// 0x08 : Weaken
	// 0x10 : Iron Maiden
	// 0x20 : Decrepify
	// 0x40 : Lower Resist
	NTConfig_CheckSelfSafe = 0;
	
	// Check merc's safe in field (NOT in town). Set to 0 if you won't.
	// 0x01 : Death
	// 0x02 : Poison
	// 0x04 : Amplify Damage
	// 0x08 : Weaken
	// 0x10 : Iron Maiden
	// 0x20 : Decrepify
	// 0x40 : Lower Resist
	NTConfig_CheckMercSafe = 0x01;


	// Cast Static Field until monster's HP lower below this percentage. Set to 100 not to use static field.
	NTConfig_CastStatic = 60;
	
	// Select the monsters you with to attack using static field. NOTE: If you do not add any monsters, static will be used against all monsters.
	MWConfig_StaticTargets.push(156); // Andariel
	MWConfig_StaticTargets.push(211); // Duriel
	MWConfig_StaticTargets.push(242); // Mephisto
	MWConfig_StaticTargets.push(243); // Diablo
	MWConfig_StaticTargets.push(544); // Baal
	MWConfig_StaticTargets.push(GetLocaleString(22500)); // Eldritch The Rectifier
	MWConfig_StaticTargets.push(GetLocaleString(22435)); // Shenk The Overseer
}
was ist daran falsch -.-
acc name in der ntbotleech ist richtig -.-
Checkliste:
  • Leader und Leecher haben sich gegenseitig in der friendlist, beide D2 Versionen sind Englisch.
  • Du hast die Änderungen gespeichert und danach die zugehörige D2 Instanz neu gestartet.
  • Beim Leecher ist der richtige Entry Point ausgewählt.

LG
Muddy
Muddy Waters is offline  
Reply


Similar Threads Similar Threads
[Release] D2NT 3.1 1.13c
07/17/2016 - Diablo 2 - 91 Replies
hi, hab eben den d2nt3.1 gefunden. ein neues baba script is dabei. release thread eon D2NT3.1
[Realease] Muddy's Waypoint Catcher
08/21/2013 - Diablo 2 Programming - 46 Replies
Moin zusammen, hier mal die erste Release Version eines kleinen Scripts genannt Waypoint Catcher. Das ganze ist jetzt nichtmal 24h alt, dementsprechend sind vermutlich noch einige Bugs vorhanden. Hinweise dazu nehme ich gerne entgegen. ;) Features: - Suchen sämtlicher Wegpunkte mit Ausnahme, wobei in Akt ein durch Probleme im Jail Bereich nach dem Wegpunkt Outer Cloister abgebrochen wird - Wahlweise auch mit TP an jedem gefundenen Wp, sodass man damit auch anderen (nicht-Bots) die...
[D2NT] Long Dia Release
05/10/2011 - Diablo 2 Programming - 28 Replies
Ein kleines Script für diablo, es startet beim eingang macht ein tp cleart den weg zum star macht am star noch ein tp dann läufts wie das normale nur cleart es schöner :) hoffe euch gefällts ich habs noch nicht wirklich getestet (2-3 runs) bugs können gerne hier gepostet werden verbesserungs vorschläge auch :D installation: 1.)Script in den Bot ordner kopieren 2.)Script im editor oder vergleichbaren öffnen 3.) Msg´s anpassen (ist nicht schwer) 4.) in der char config die zeile...
D2NT 3.0 Pickit release
10/22/2010 - Diablo 2 - 77 Replies
edit
Muddy's D2NT Help
07/29/2010 - Diablo 2 - 3 Replies
hi i just started to use the bot it work's great. how do i set up the skill's i use on my Sorc and pick up itme's? ..... if you reply to this post please use english



All times are GMT +1. The time now is 08:05.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.