Register for your free account! | Forgot your password?

You last visited: Today at 01:11

  • 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 03/05/2011, 16:53   #751
Administrator
 
Muddy Waters's Avatar
 
elite*gold: 41364
Join Date: Jan 2010
Posts: 22,727
Received Thanks: 12,652
Quote:
Originally Posted by jannimanni View Post
sieht bei mir aktuell so aus
Code:
MWConfig_BeltTypeColQuantity["rv"] = [4, 3];
    MWConfig_BeltTypeColQuantity["rv"] = [0, 0];
    MWConfig_BeltTypeColQuantity["rv"] = [0, 0];
hab aber auch schon
Code:
MWConfig_BeltTypeColQuantity["rv"] = [2, 3];
    MWConfig_BeltTypeColQuantity["rv"] = [1, 0];
    MWConfig_BeltTypeColQuantity["rv"] = [1, 0];
ausprobiert
Wobei beide Varianten gleichermaßen falsch sind.

Du wirst tatsächlich nicht die Kommentare gelesen haben und dich an der Einstellung in anderen bzw. meinen alten Versionen gerichtet haben.

Sämtliche Dinge im Bezug auf Gürtel und Tränke werden in Version 1.2 über eine dafür vorgesehen Klasse gesteuert.
Die ganze Umsetzung ist etwas komplexer, ermöglicht dafür aber einige Dinge, die mit den alten und mittlerweile entfernten Funktionen nicht umsetzbar waren.

Es ist nun so, dass du nicht mehr Vorgeben musst, welche Art von Trank in welche Spalte deines Gürtels soll - das ergibt sich alles automatisch.
Stattdessen gibst du nurnoch an, wieviele Spalten du für welche Art von Trank möchtest.
Wenn du also nur Rejuvs nutzen möchtest, wäre die korrekte Einstellung dafür:
Code:
MWConfig_BeltTypeColQuantity["hp"] = [0, 3];
MWConfig_BeltTypeColQuantity["mp"] = [0, 3];
MWConfig_BeltTypeColQuantity["rv"] = [4, 0];
Mit der ersten Zahl lege ich fest, wieviele Spalten ich mit der angegebenen Sorte trank belegen möchte.
Die zweite Zahl ist die Mindestmenge bei einem Besuch in der Stadt, was natürlich für Rejuvs uninteressant ist.
Aber die 3 bei "hp", bedeutet Beispielsweise, dass der Char einen Händler aufsucht, wenn er sich in der Stadt befindet und in einer der "hp" Spalten weniger als 3 Tränke vorhanden sind.

Anfangs etwas ungewohnt, aber eigentlich recht einfach, wenn man den Sinn verstanden hat.

Lg
Muddy
Muddy Waters is offline  
Old 03/05/2011, 17:01   #752
 
elite*gold: 0
Join Date: Nov 2010
Posts: 34
Received Thanks: 27
Quote:
Originally Posted by Muddy_Waters View Post
Das liegt vermutlich daran, dass die gute grundsätzlich Immun gegen Kälte ist und somit nicht mit Orb attackiert wird.

Kann deine Sorc auch noch was anderes als Orb?

[...]

Lg
Muddy
Hallo Muddy,

ja, sie ist eine FO/FBall/Meteor-Soso
Bei Immunen ist sie so eingestellt, dass sie sich drauftelt, statikt und der Merc den Rest macht
Onkarion is offline  
Old 03/05/2011, 17:02   #753
 
elite*gold: 0
Join Date: Feb 2011
Posts: 115
Received Thanks: 2
aaaaah okay, habs begriffen

hab schon angefangen die hp und mp zeile auszukommentieren :P

danköö ^^

edit: Funzt wieder alles prima,

thanks again mud ^^
jannimanni is offline  
Old 03/05/2011, 17:28   #754
Administrator
 
Muddy Waters's Avatar
 
elite*gold: 41364
Join Date: Jan 2010
Posts: 22,727
Received Thanks: 12,652
Quote:
Originally Posted by Onkarion View Post
Hallo Muddy,

ja, sie ist eine FO/FBall/Meteor-Soso
Bei Immunen ist sie so eingestellt, dass sie sich drauftelt, statikt und der Merc den Rest macht
Ich werde nochmal über den Algorithmus drüber schauen, allerdings vermutlich erst morgen, da ich in etwa einer Stunde erstmal für den Rest des Abends weg bin.

Grundsätzlich wollte ich diese ganze Überprüfung der Resistenzen nochmal überarbeiten, sodass neben einem Infinity Söldner auch solche mit Reaper's Toll in die Überprüfung einfließen.

@jannimanni
Sag ich doch, eigentlich alles ganz einfach.

Lg
Muddy
Muddy Waters is offline  
Old 03/05/2011, 17:36   #755
 
elite*gold: 0
Join Date: Feb 2011
Posts: 44
Received Thanks: 13
@janni
hatte das selbe problem. Lösung:
Code:
	MWConfig_BeltTypeColQuantity["hp"] = [0, 0];
	MWConfig_BeltTypeColQuantity["mp"] = [0, 0];
	MWConfig_BeltTypeColQuantity["rv"] = [4, 0];
ahh schon gelöst...

@Muddy

ich lass das mit den leecherscript einfach ich lass über deins den Bot laufen und über lanaras die leecher und warte bis du nen neues RLS herausbringst wo es integriert ist trotzdem danke für alles bisher
jexhammer is offline  
Old 03/05/2011, 18:47   #756
 
elite*gold: 0
Join Date: Nov 2010
Posts: 34
Received Thanks: 27
Quote:
Originally Posted by Muddy_Waters View Post
Ich werde nochmal über den Algorithmus drüber schauen, allerdings vermutlich erst morgen, da ich in etwa einer Stunde erstmal für den Rest des Abends weg bin.

Grundsätzlich wollte ich diese ganze Überprüfung der Resistenzen nochmal überarbeiten, sodass neben einem Infinity Söldner auch solche mit Reaper's Toll in die Überprüfung einfließen.

@jannimanni
Sag ich doch, eigentlich alles ganz einfach.

Lg
Muddy
Ist kein Problem
Hab den Bot nochmal runtergeladen und ihn bis auf die Stashbelegung original gelassen. Der Fehler tritt nach wie vor auf.

Grüße
Onkarion
Onkarion is offline  
Old 03/05/2011, 18:52   #757
Administrator
 
Muddy Waters's Avatar
 
elite*gold: 41364
Join Date: Jan 2010
Posts: 22,727
Received Thanks: 12,652
Quote:
Originally Posted by jexhammer View Post
@janni
hatte das selbe problem. Lösung:
Code:
    MWConfig_BeltTypeColQuantity["hp"] = [0, 0];
    MWConfig_BeltTypeColQuantity["mp"] = [0, 0];
    MWConfig_BeltTypeColQuantity["rv"] = [4, 0];
ahh schon gelöst...

@Muddy

ich lass das mit den leecherscript einfach ich lass über deins den Bot laufen und über lanaras die leecher und warte bis du nen neues RLS herausbringst wo es integriert ist trotzdem danke für alles bisher
Nur um es mal erwähnt zu haben: Aller Wahrscheinlichkeit bestünde der Änderungsaufwand aus zwei Buchstaben.

Quote:
Originally Posted by Onkarion View Post
Ist kein Problem
Hab den Bot nochmal runtergeladen und ihn bis auf die Stashbelegung original gelassen. Der Fehler tritt nach wie vor auf.

Grüße
Onkarion
Das ist unnötig, liegt wie gesagt am Algorithmus.

Lg
Muddy

P.S.: Bin jetzt erstmal weg, eventuell schaue ich spät Abends nochmal rein.
Muddy Waters is offline  
Old 03/05/2011, 19:47   #758
 
elite*gold: 0
Join Date: Feb 2011
Posts: 44
Received Thanks: 13
ahh ich glaube ich habs
jexhammer is offline  
Old 03/05/2011, 20:14   #759
 
elite*gold: 0
Join Date: Feb 2011
Posts: 44
Received Thanks: 13
Ich habs jetzt. Läuft soweit alles ganz gut, aber was du letztens meintest ist eingetreten, er erkennt nicht das der Run vorbei ist. Er stoppt zwar das Script aber steht ewig im Spiel. Hab Das Leechscript mal dran vllt kannst mir ja nochmal mit 1-2 Zeilen helfen

Code:
// DONT EDIT 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 zxetay = false;
var samegame = '';
var oldgame = '';
var check = 1;

Include("libs/controlInfo.ntl");
Include("libs/common/NTCommon.ntl");
//Include("joinBotSettings.ntl");
NTC_IncludeLibs();
var controlData = new controlInfo();

var game = '';

function NTMain()
{
	Delay(1000);
	var _ingame = false;

	controlData.clickDelay = clickDelay;
	controlData.textDelay = textDelay;
	controlData.clickDelayRandom = clickDelayRandom;
	controlData.textDelayRandom = textDelayRandom;

	while(1)
	{
		if(me.ingame)
		{
			if(!inGameAt)
			inGameAt = GetTickCount();

			if(!_ingame)
			{
			if(zxetay){
							if(Load("NTBot/NTMule.ntj"))
				{
					_ingame = true;

					sendEventToOOG(D2NT_MGR_INGAME, "In Game", 0);
					lastGameStatus = 2; // in game successful
				}
			
			}
			
			else {
			
			
				if(Load("NTBot/NTBotGame.ntj"))
				{
					_ingame = true;

					sendEventToOOG(D2NT_MGR_INGAME, "In Game", 0);
					lastGameStatus = 2; // in game successful
				}
			}
}
			Delay(1000);
		}
		else
		{
			if(_ingame)
			{
				_ingame = false;

				sendEventToOOG(D2NT_MGR_READY, "", 0);
			}


			RegisterEvent(EVENT_SCRIPTMSG, NT_ScriptMsgEvents1);




			locationAction(controlData.getLocation());


			Delay(500);
		}
	}
}

function locationAction(location)
{
	switch(location.id)
	{

	case 3: // Lobby Chat
		if(!chatActionsDone)
		{
			chatActionsDone = true;
			Delay(Random(waitInChatBeforeActionsMin, waitInChatBeforeActionsMax));

			if(joinRandomChannel || joinChannelInChat != "")
			{
				Say("/join " + (joinRandomChannel ? getRandomString(Random(3,10)) : joinChannelInChat));
				Delay(1000);
				if(check == 1)
				{
					sendEventToOOG(D2NT_MGR_CREATE_GAME, location.name, 0);
					outputGameLength();
					lastGameStatus = 0;
					setNextGameMake();
					sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name, 0);
					check = check + 1;
				}
			}
		}

		if(JoinFromChat){
			game = '';
			if (joinChannelInChat)
			Delay (1200);
			//Say('Locating the leader : '+leaderAccountName);

			Say('/f l');
			Delay(ChatFLDelay);
			if(chat = controlData.get(controlData.controls.lobby.chat.textBox.channelText))
			{
				var errors = '';
				var found_leader = false;
				lines = chat.GetText();
				for (var friend = 0; friend < lines.length; friend++)
				{
					if (lines[friend].lastIndexOf(': '+leaderAccountName+',') > -1)
					{
						game = '';
						found_leader = true;
						var regOfflineEnglish=/^\d\s?:\s?(\w*)\s?,\s?offline\s*$/gi;
						var regGameNameEnglish=/^\s*(the\s)?(game\s)?([\w\s-]*\w)\s\(private\)\.\s*$/gi;
						var regGameNameFrench=/^\s*(la\s)?(partie\s)?([\w\s-]*\w)\s\(priv[^\)]*\)\.\s*$/gi;             
						var regGameNameGerman=/^\s*(Destruction\s)?(in\s)?(das\s)?(Spiel\s)?\'([\w\s-]*\w)\'\s\(privat[^\)]*\)\.\s*$/gi;

				if (lines[friend].match(regOfflineEnglish)) 
				
				{
					errors += (errors == '' ? '' : ' ') + 'leader is offline';
				//  if (joinChannelInChat)
					// Say('Leader is offline, delay 10 sec.');
				//  Delay(5000);
				} //err starts here
				if (lines[friend + 1].match(regGameNameEnglish) && lines[friend+1].substr(1, 1) != ':')
				{
					game = lines[friend + 1].replace(regGameNameEnglish, "$3");
				}
				if (!game && lines[friend + 1].match(regGameNameFrench) && lines[friend+1].substr(1, 1) != ':')
				{
					game = lines[friend + 1].replace(regGameNameFrench, "$3");
				}
			
				if (!game && lines[friend + 1].match(regGameNameGerman) && lines[friend+1].substr(1, 1) != ':')
				{
					game = lines[friend + 1].replace(regGameNameGerman, "$5");
				} 
				if (!game && lines[friend + 1].match(regGameNameFrench) && lines[friend+1].substr(1, 1) != ':')
				{
					game = lines[friend + 1].replace(regGameNameFrench, "$3");
				}
				if(!JoinGameAgain)
				{
				 if (game != '' && game != samegame)
				{
					if (joinChannelInChat)
						Delay(500);
						//Say('I found him! In the game ' + game);

					controlData.click(controlData.controls.lobby.button.join);
					Delay (200);
				}
				else
				{
					if(!errors)
					{
						errors = 'leader is not in game.';
					}
				
				}
				}
				
				else
				{
				if (game != '')
				{
					if (joinChannelInChat)
						Delay(500);
						//Say('I found him! In the game ' + game);

					controlData.click(controlData.controls.lobby.button.join);
					Delay (200);
				}
				else
				{
					if(!errors)
					{
						errors = 'leader is not in game.';
					}
				
				}
				
				}
			}
			}
			if (!found_leader && joinChannelInChat)
			{
			if (errors)
				Say('Errors : ' + errors);
			else
				Say('I couldn\'t find the leader in my friend list.');
						Delay(1500);
					}
				}
				else
				{
					if (joinChannelInChat)
					Say('I can\'t read the chat!');
					Delay(1500);
				}
				
			}
			errors = '';
			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;
			}

			if(GetTickCount() > nextGameMake)
			{
				lastGameFailed = false;

				switch(lastGameStatus)
				{
				case 0:
					controlData.click(controlData.controls.lobby.button.create);
					nextGameMake = GetTickCount() + createGameTimeout; // set our timeout
					sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name, 0);
					break;
				case 1: // game failed, rollover to reset timer
					//inGameAt = GetTickCount(); // reset inGameAt, to wait how long we should have waited..
					lastGameFailed = true;
				case 2:
					outputGameLength();
					lastGameStatus = 0;
					setNextGameMake();
					sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name, 0);
					break;
				}
			}
			//else
			// timeoutDelay(nextGameMake-GetTickCount(), location);
			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);
			}
			sendEventToOOG(D2NT_MGR_CREATE_GAME, location.name, 0);

			RunGC(); // run garbage collector between each game

			locationTimeout(5000, location);

			lastGameMade = GetTickCount();
			lastGameStatus = 1; // pending creation
			break;

		case 5: // Join Game
  		      if(!controlData.get(controlData.controls.lobby.join.editBox.gameName))
     			   {
      		      controlData.click(controlData.controls.lobby.button.create);
       		     Delay (1000);
         		   controlData.click(controlData.controls.lobby.button.join);
         		   Delay (1000);
      			  }
       			 if (game != '')
      			  {
      
       		     controlData.setText( controlData.controls.lobby.join.editBox.gameName, game);
        	    Delay (200);
         	   controlData.setText( controlData.controls.lobby.join.editBox.password, gamepassword);
           	 Delay (200);
 	           controlData.click(controlData.controls.lobby.join.button.joinGame);
	            Delay (800);
 	      controlData.click(controlData.controls.lobby.button.quit);                       
	            Delay (800);
 	           controlData.click(controlData.controls.lobby.button.join); 
	            RunGC(); // run garbage collector between each game
 	           //locationTimeout(1000, location);
 	           lastGameStatus = 1; // pending join
 		  check = 1;
 		       }
		      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
			RunGC(); // run garbage collector between each game

			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, "Game 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);
 			 controlData.click(controlData.controls.lobby.button.quit); 
     			 lastGameStatus = 0;
 			 controlData.click(controlData.controls.lobby.button.quit); 
    			  setNextGameMake();
		}
	}













	function locationActionA(location)
	{
		switch(location.id)
		{

		case 3: // Lobby Chat

			break;

			
		case 1:   // Lobby

			Delay(500);
			controlData.click(controlData.controls.lobby.button.join);
			Delay(500);
			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);
			}
			sendEventToOOG(D2NT_MGR_CREATE_GAME, location.name, 0);

			RunGC(); // run garbage collector between each game

			locationTimeout(5000, location);

			lastGameMade = GetTickCount();
			lastGameStatus = 1; // pending creation
			break;

		case 5: // Join Game
			if(!controlData.get(controlData.controls.lobby.join.editBox.gameName))
			{
				controlData.click(controlData.controls.lobby.button.create);
				Delay (500);
				controlData.click(controlData.controls.lobby.button.join);
				Delay (500);
			}
			
			
			controlData.setText( controlData.controls.lobby.join.editBox.gameName, MuleGame);
			Delay (200);
			controlData.setText( controlData.controls.lobby.join.editBox.password, MuleGamePassword);
			Delay (200);
			controlData.click(controlData.controls.lobby.join.button.joinGame);
			RunGC(); // run garbage collector between each game
			//locationTimeout(1000, location);
			lastGameStatus = 1; // pending join
			check = 1;
			
			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, MuleAccount);
			Delay(1000)
			controlData.setText(controlData.controls.login.editBox.password, MulePassword);
			Delay(500);
			controlData.click(controlData.controls.login.button.logIn);
			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[MuleCharLocation]);
				if(_control && _control.GetText() != undefined)
				break;

				Delay(500);
			}

			if(_time < characterScreenTimeout)
			{
				Delay(characterSelectDelay);

				controlData.click(controlData.controls.characterSelect.textBox.characters[MuleCharLocation], 0, 0, 1);
				controlData.click(controlData.controls.characterSelect.textBox.characterInfo[MuleCharLocation], 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
			RunGC(); // run garbage collector between each game

			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, "Game 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

			controlData.click(controlData.controls.lobby.button.quit);


			//lastGameStatus = 0;
			//setNextGameMake();

			//locationTimeout(gameDoesNotExistTimeout, location);
			break;
		}
	}





	function locationActionB(location)
	{
		switch(location.id)
		{

		case 3: // Lobby Chat
			Delay(5000);
			controlData.click(controlData.controls.lobby.button.create);

			break;

			
		case 1:   // Lobby

			Delay(5000);
			controlData.click(controlData.controls.lobby.button.create);

			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);
			}
			
			controlData.setText( controlData.controls.lobby.create.editBox.gameName, MuleGame);
			Delay (200);
			controlData.setText( controlData.controls.lobby.create.editBox.password, MuleGamePassword);
			Delay (200);
			controlData.click(controlData.controls.lobby.create.button.normal);
			Delay(500);
			controlData.click(controlData.controls.lobby.create.button.createGame);
			Delay(500);	
			
			//sendEventToOOG(D2NT_MGR_CREATE_GAME, location.name, 0);

			RunGC(); // run garbage collector between each game

			locationTimeout(5000, location);

			lastGameMade = GetTickCount();
			lastGameStatus = 1; // pending creation
			break;

		case 5: // Join Game
			if(!controlData.get(controlData.controls.lobby.join.editBox.gameName))
			{
				controlData.click(controlData.controls.lobby.button.create);
				Delay (500);
				controlData.click(controlData.controls.lobby.button.join);
				Delay (500);
			}
			
			
			controlData.setText( controlData.controls.lobby.join.editBox.gameName, MuleGame);
			Delay (200);
			controlData.setText( controlData.controls.lobby.join.editBox.password, MuleGamePassword);
			Delay (200);
			controlData.click(controlData.controls.lobby.join.button.joinGame);
			RunGC(); // run garbage collector between each game
			//locationTimeout(1000, location);
			lastGameStatus = 1; // pending join
			check = 1;
			
			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, MuleAccount);
			Delay(1000)
			controlData.setText(controlData.controls.login.editBox.password, MulePassword);
			Delay(500);
			controlData.click(controlData.controls.login.button.logIn);
			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
			RunGC(); // run garbage collector between each game

			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, "Game 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

			controlData.click(controlData.controls.lobby.button.quit);


			//lastGameStatus = 0;
			//setNextGameMake();

			//locationTimeout(gameDoesNotExistTimeout, location);
			break;
		}
	}






	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 NT_ScriptMsgEvents1(msg)
	{
		
		

		switch(msg)
		{


		case "MULE":

			ExitGame();	
			NTC_SendLogToOOG(NTC_LOG_COMMON, "Log on Mule Account");
			NTC_Delay(2000);
			//ExitGame();
			NTC_Delay(20000);
			controlData.click(controlData.controls.lobby.button.quit);
			NTC_Delay(2000);
			controlData.click(controlData.controls.characterSelect.button.exit);
			NTC_Delay(2000);

			while(1)

			{
				if(!me.ingame){
					locationActionA(controlData.getLocation());
				}
				else{
					Delay(5000);
					Load("NTBot/bots/NTJOIN.ntj");
					break;
				}
			}


			break;
			
			
		case "MULE_START":
			
			Delay(5000);
			while(1)

			{
				if(!me.ingame){
					locationActionB(controlData.getLocation());
				}
				else{
					Delay(5000);
					Load("NTBot/bots/NTMule.ntj");
					break;
				}
			}

zxetay = true;
			
			break;


			
		case "MULE_FULL":
			
			ExitGame();
			NTC_Delay(10000);
			controlData.click(controlData.controls.lobby.button.quit);
			MuleCharLocation++;
						while(1)

			{
				if(!me.ingame){
					locationActionA(controlData.getLocation());
				}
				else{
					Delay(5000);
					Load("NTBot/bots/NTJOIN.ntj");
					break;
				}
			}
			
	
	zxetay  = true;

			break;
			
			
		case "DONE":
		
		ExitGame();
		NTC_Delay(10000);
		NTC_SendLogToOOG(NTC_LOG_COMMON, "Finished Muling!");
		NTC_Delay(2000);
		controlData.click(controlData.controls.lobby.button.quit);
		NTC_Delay(2000);
		controlData.click(controlData.controls.characterSelect.button.exit);
		
		zxetay = false;
			
		}

	}
jexhammer is offline  
Old 03/06/2011, 03:15   #760
Administrator
 
Muddy Waters's Avatar
 
elite*gold: 41364
Join Date: Jan 2010
Posts: 22,727
Received Thanks: 12,652
Quote:
Originally Posted by jexhammer View Post
Ich habs jetzt. Läuft soweit alles ganz gut, aber was du letztens meintest ist eingetreten, er erkennt nicht das der Run vorbei ist. Er stoppt zwar das Script aber steht ewig im Spiel. Hab Das Leechscript mal dran vllt kannst mir ja nochmal mit 1-2 Zeilen helfen

Code:
// DONT EDIT 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 zxetay = false;
var samegame = '';
var oldgame = '';
var check = 1;

Include("libs/controlInfo.ntl");
Include("libs/common/NTCommon.ntl");
//Include("joinBotSettings.ntl");
NTC_IncludeLibs();
var controlData = new controlInfo();

var game = '';

function NTMain()
{
    Delay(1000);
    var _ingame = false;

    controlData.clickDelay = clickDelay;
    controlData.textDelay = textDelay;
    controlData.clickDelayRandom = clickDelayRandom;
    controlData.textDelayRandom = textDelayRandom;

    while(1)
    {
        if(me.ingame)
        {
            if(!inGameAt)
            inGameAt = GetTickCount();

            if(!_ingame)
            {
            if(zxetay){
                            if(Load("NTBot/NTMule.ntj"))
                {
                    _ingame = true;

                    sendEventToOOG(D2NT_MGR_INGAME, "In Game", 0);
                    lastGameStatus = 2; // in game successful
                }
            
            }
            
            else {
            
            
                if(Load("NTBot/[COLOR=Red][B]MW[/B][/COLOR]BotGame.ntj"))
                {
                    _ingame = true;

                    sendEventToOOG(D2NT_MGR_INGAME, "In Game", 0);
                    lastGameStatus = 2; // in game successful
                }
            }
}
            Delay(1000);
        }
        else
        {
            if(_ingame)
            {
                _ingame = false;

                sendEventToOOG(D2NT_MGR_READY, "", 0);
            }


            RegisterEvent(EVENT_SCRIPTMSG, NT_ScriptMsgEvents1);




            locationAction(controlData.getLocation());


            Delay(500);
        }
    }
}

function locationAction(location)
{
    switch(location.id)
    {

    case 3: // Lobby Chat
        if(!chatActionsDone)
        {
            chatActionsDone = true;
            Delay(Random(waitInChatBeforeActionsMin, waitInChatBeforeActionsMax));

            if(joinRandomChannel || joinChannelInChat != "")
            {
                Say("/join " + (joinRandomChannel ? getRandomString(Random(3,10)) : joinChannelInChat));
                Delay(1000);
                if(check == 1)
                {
                    sendEventToOOG(D2NT_MGR_CREATE_GAME, location.name, 0);
                    outputGameLength();
                    lastGameStatus = 0;
                    setNextGameMake();
                    sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name, 0);
                    check = check + 1;
                }
            }
        }

        if(JoinFromChat){
            game = '';
            if (joinChannelInChat)
            Delay (1200);
            //Say('Locating the leader : '+leaderAccountName);

            Say('/f l');
            Delay(ChatFLDelay);
            if(chat = controlData.get(controlData.controls.lobby.chat.textBox.channelText))
            {
                var errors = '';
                var found_leader = false;
                lines = chat.GetText();
                for (var friend = 0; friend < lines.length; friend++)
                {
                    if (lines[friend].lastIndexOf(': '+leaderAccountName+',') > -1)
                    {
                        game = '';
                        found_leader = true;
                        var regOfflineEnglish=/^\d\s?:\s?(\w*)\s?,\s?offline\s*$/gi;
                        var regGameNameEnglish=/^\s*(the\s)?(game\s)?([\w\s-]*\w)\s\(private\)\.\s*$/gi;
                        var regGameNameFrench=/^\s*(la\s)?(partie\s)?([\w\s-]*\w)\s\(priv[^\)]*\)\.\s*$/gi;             
                        var regGameNameGerman=/^\s*(Destruction\s)?(in\s)?(das\s)?(Spiel\s)?\'([\w\s-]*\w)\'\s\(privat[^\)]*\)\.\s*$/gi;

                if (lines[friend].match(regOfflineEnglish)) 
                
                {
                    errors += (errors == '' ? '' : ' ') + 'leader is offline';
                //  if (joinChannelInChat)
                    // Say('Leader is offline, delay 10 sec.');
                //  Delay(5000);
                } //err starts here
                if (lines[friend + 1].match(regGameNameEnglish) && lines[friend+1].substr(1, 1) != ':')
                {
                    game = lines[friend + 1].replace(regGameNameEnglish, "$3");
                }
                if (!game && lines[friend + 1].match(regGameNameFrench) && lines[friend+1].substr(1, 1) != ':')
                {
                    game = lines[friend + 1].replace(regGameNameFrench, "$3");
                }
            
                if (!game && lines[friend + 1].match(regGameNameGerman) && lines[friend+1].substr(1, 1) != ':')
                {
                    game = lines[friend + 1].replace(regGameNameGerman, "$5");
                } 
                if (!game && lines[friend + 1].match(regGameNameFrench) && lines[friend+1].substr(1, 1) != ':')
                {
                    game = lines[friend + 1].replace(regGameNameFrench, "$3");
                }
                if(!JoinGameAgain)
                {
                 if (game != '' && game != samegame)
                {
                    if (joinChannelInChat)
                        Delay(500);
                        //Say('I found him! In the game ' + game);

                    controlData.click(controlData.controls.lobby.button.join);
                    Delay (200);
                }
                else
                {
                    if(!errors)
                    {
                        errors = 'leader is not in game.';
                    }
                
                }
                }
                
                else
                {
                if (game != '')
                {
                    if (joinChannelInChat)
                        Delay(500);
                        //Say('I found him! In the game ' + game);

                    controlData.click(controlData.controls.lobby.button.join);
                    Delay (200);
                }
                else
                {
                    if(!errors)
                    {
                        errors = 'leader is not in game.';
                    }
                
                }
                
                }
            }
            }
            if (!found_leader && joinChannelInChat)
            {
            if (errors)
                Say('Errors : ' + errors);
            else
                Say('I couldn\'t find the leader in my friend list.');
                        Delay(1500);
                    }
                }
                else
                {
                    if (joinChannelInChat)
                    Say('I can\'t read the chat!');
                    Delay(1500);
                }
                
            }
            errors = '';
            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;
            }

            if(GetTickCount() > nextGameMake)
            {
                lastGameFailed = false;

                switch(lastGameStatus)
                {
                case 0:
                    controlData.click(controlData.controls.lobby.button.create);
                    nextGameMake = GetTickCount() + createGameTimeout; // set our timeout
                    sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name, 0);
                    break;
                case 1: // game failed, rollover to reset timer
                    //inGameAt = GetTickCount(); // reset inGameAt, to wait how long we should have waited..
                    lastGameFailed = true;
                case 2:
                    outputGameLength();
                    lastGameStatus = 0;
                    setNextGameMake();
                    sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name, 0);
                    break;
                }
            }
            //else
            // timeoutDelay(nextGameMake-GetTickCount(), location);
            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);
            }
            sendEventToOOG(D2NT_MGR_CREATE_GAME, location.name, 0);

            RunGC(); // run garbage collector between each game

            locationTimeout(5000, location);

            lastGameMade = GetTickCount();
            lastGameStatus = 1; // pending creation
            break;

        case 5: // Join Game
                if(!controlData.get(controlData.controls.lobby.join.editBox.gameName))
                    {
                    controlData.click(controlData.controls.lobby.button.create);
                    Delay (1000);
                    controlData.click(controlData.controls.lobby.button.join);
                    Delay (1000);
                    }
                    if (game != '')
                    {
      
                    controlData.setText( controlData.controls.lobby.join.editBox.gameName, game);
                Delay (200);
                controlData.setText( controlData.controls.lobby.join.editBox.password, gamepassword);
                Delay (200);
                controlData.click(controlData.controls.lobby.join.button.joinGame);
                Delay (800);
           controlData.click(controlData.controls.lobby.button.quit);                       
                Delay (800);
                controlData.click(controlData.controls.lobby.button.join); 
                RunGC(); // run garbage collector between each game
                //locationTimeout(1000, location);
                lastGameStatus = 1; // pending join
           check = 1;
                }
              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
            RunGC(); // run garbage collector between each game

            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, "Game 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);
              controlData.click(controlData.controls.lobby.button.quit); 
                  lastGameStatus = 0;
              controlData.click(controlData.controls.lobby.button.quit); 
                  setNextGameMake();
        }
    }













    function locationActionA(location)
    {
        switch(location.id)
        {

        case 3: // Lobby Chat

            break;

            
        case 1:   // Lobby

            Delay(500);
            controlData.click(controlData.controls.lobby.button.join);
            Delay(500);
            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);
            }
            sendEventToOOG(D2NT_MGR_CREATE_GAME, location.name, 0);

            RunGC(); // run garbage collector between each game

            locationTimeout(5000, location);

            lastGameMade = GetTickCount();
            lastGameStatus = 1; // pending creation
            break;

        case 5: // Join Game
            if(!controlData.get(controlData.controls.lobby.join.editBox.gameName))
            {
                controlData.click(controlData.controls.lobby.button.create);
                Delay (500);
                controlData.click(controlData.controls.lobby.button.join);
                Delay (500);
            }
            
            
            controlData.setText( controlData.controls.lobby.join.editBox.gameName, MuleGame);
            Delay (200);
            controlData.setText( controlData.controls.lobby.join.editBox.password, MuleGamePassword);
            Delay (200);
            controlData.click(controlData.controls.lobby.join.button.joinGame);
            RunGC(); // run garbage collector between each game
            //locationTimeout(1000, location);
            lastGameStatus = 1; // pending join
            check = 1;
            
            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, MuleAccount);
            Delay(1000)
            controlData.setText(controlData.controls.login.editBox.password, MulePassword);
            Delay(500);
            controlData.click(controlData.controls.login.button.logIn);
            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[MuleCharLocation]);
                if(_control && _control.GetText() != undefined)
                break;

                Delay(500);
            }

            if(_time < characterScreenTimeout)
            {
                Delay(characterSelectDelay);

                controlData.click(controlData.controls.characterSelect.textBox.characters[MuleCharLocation], 0, 0, 1);
                controlData.click(controlData.controls.characterSelect.textBox.characterInfo[MuleCharLocation], 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
            RunGC(); // run garbage collector between each game

            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, "Game 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

            controlData.click(controlData.controls.lobby.button.quit);


            //lastGameStatus = 0;
            //setNextGameMake();

            //locationTimeout(gameDoesNotExistTimeout, location);
            break;
        }
    }





    function locationActionB(location)
    {
        switch(location.id)
        {

        case 3: // Lobby Chat
            Delay(5000);
            controlData.click(controlData.controls.lobby.button.create);

            break;

            
        case 1:   // Lobby

            Delay(5000);
            controlData.click(controlData.controls.lobby.button.create);

            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);
            }
            
            controlData.setText( controlData.controls.lobby.create.editBox.gameName, MuleGame);
            Delay (200);
            controlData.setText( controlData.controls.lobby.create.editBox.password, MuleGamePassword);
            Delay (200);
            controlData.click(controlData.controls.lobby.create.button.normal);
            Delay(500);
            controlData.click(controlData.controls.lobby.create.button.createGame);
            Delay(500);    
            
            //sendEventToOOG(D2NT_MGR_CREATE_GAME, location.name, 0);

            RunGC(); // run garbage collector between each game

            locationTimeout(5000, location);

            lastGameMade = GetTickCount();
            lastGameStatus = 1; // pending creation
            break;

        case 5: // Join Game
            if(!controlData.get(controlData.controls.lobby.join.editBox.gameName))
            {
                controlData.click(controlData.controls.lobby.button.create);
                Delay (500);
                controlData.click(controlData.controls.lobby.button.join);
                Delay (500);
            }
            
            
            controlData.setText( controlData.controls.lobby.join.editBox.gameName, MuleGame);
            Delay (200);
            controlData.setText( controlData.controls.lobby.join.editBox.password, MuleGamePassword);
            Delay (200);
            controlData.click(controlData.controls.lobby.join.button.joinGame);
            RunGC(); // run garbage collector between each game
            //locationTimeout(1000, location);
            lastGameStatus = 1; // pending join
            check = 1;
            
            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, MuleAccount);
            Delay(1000)
            controlData.setText(controlData.controls.login.editBox.password, MulePassword);
            Delay(500);
            controlData.click(controlData.controls.login.button.logIn);
            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
            RunGC(); // run garbage collector between each game

            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, "Game 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

            controlData.click(controlData.controls.lobby.button.quit);


            //lastGameStatus = 0;
            //setNextGameMake();

            //locationTimeout(gameDoesNotExistTimeout, location);
            break;
        }
    }






    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 NT_ScriptMsgEvents1(msg)
    {
        
        

        switch(msg)
        {


        case "MULE":

            ExitGame();    
            NTC_SendLogToOOG(NTC_LOG_COMMON, "Log on Mule Account");
            NTC_Delay(2000);
            //ExitGame();
            NTC_Delay(20000);
            controlData.click(controlData.controls.lobby.button.quit);
            NTC_Delay(2000);
            controlData.click(controlData.controls.characterSelect.button.exit);
            NTC_Delay(2000);

            while(1)

            {
                if(!me.ingame){
                    locationActionA(controlData.getLocation());
                }
                else{
                    Delay(5000);
                    Load("NTBot/bots/NTJOIN.ntj");
                    break;
                }
            }


            break;
            
            
        case "MULE_START":
            
            Delay(5000);
            while(1)

            {
                if(!me.ingame){
                    locationActionB(controlData.getLocation());
                }
                else{
                    Delay(5000);
                    Load("NTBot/bots/NTMule.ntj");
                    break;
                }
            }

zxetay = true;
            
            break;


            
        case "MULE_FULL":
            
            ExitGame();
            NTC_Delay(10000);
            controlData.click(controlData.controls.lobby.button.quit);
            MuleCharLocation++;
                        while(1)

            {
                if(!me.ingame){
                    locationActionA(controlData.getLocation());
                }
                else{
                    Delay(5000);
                    Load("NTBot/bots/NTJOIN.ntj");
                    break;
                }
            }
            
    
    zxetay  = true;

            break;
            
            
        case "DONE":
        
        ExitGame();
        NTC_Delay(10000);
        NTC_SendLogToOOG(NTC_LOG_COMMON, "Finished Muling!");
        NTC_Delay(2000);
        controlData.click(controlData.controls.lobby.button.quit);
        NTC_Delay(2000);
        controlData.click(controlData.controls.characterSelect.button.exit);
        
        zxetay = false;
            
        }

    }
Ganz schön chaotisch das ganze, aber jedem das seine.
Ich habe dir die notwendige Änderung mal fett rot hervorgehoben.

Damit das Bot Script korrekt beendet wird, musst du ebenfalls nichts weiter machen, als sicherzustellen, dass die Script messages an das richtige Script gesendet werden.
Das wird dort NTBotGame.ntj heissen, heisst bei mir aber MWBotGame.ntj.

Einfach an allen Stellen entsprechend umbenennen und es sollte gehen.

Lg
Muddy
Muddy Waters is offline  
Old 03/06/2011, 11:08   #761
 
kal_el's Avatar
 
elite*gold: 0
Join Date: Jan 2009
Posts: 7,310
Received Thanks: 2,205
Quote:
Wollt ihr beispielsweise intensiv Caster Amulette craften, bietet es sich an, dieses Rezept doppelt einzufügen.
also einfach nur in der MWConfig_GlobalSettings.ntl
doppelt reinschreiben?
oder sonst noch wo?

edit:
die num pad meldung "2"
treshhold.. da steht bei health chicken "669" beim ersten game start.. kann man das irgendwie rücksetzen... oder wird das von selbst erledigt'?

edit 2: 3.4 Die Globale Config

Quote:
Auch hier solltet ihr alles nach euren Wünschen anpassen, aber dabei im Hinterkopf behalten, dass die dortigen Einstellungen für sämtliche Chars übernommen werden.
also, wenn ich 2 chars laufen hab, cuben beide das selbe (global).
soll einer nur ringe machen und einer nur amus, dann füge ich das rezept einfach in der entsprechenden charconfig. unter dem punkt "Cubing Configuration" hinzu... right?

edit 3:
wie erklär ich das jetzt....
Quote:
[MaxQuantity] == 2 && [Name] == KoRune
er nimmt nur 2 ko mit, ok...
er soll danach 2 fal-runen cuben...
und von jeder weiteren rune 1 z.b
würde er dann nachdem er die 2 ko hat noch weitere aufheben um die fal zu cuben?
oder ist danach schluss?
das gilt auch für alle weitere runen die ich haben möchte z.B brauch ich 2 ist.. möchte aber dann noch ne gul haben... würde er dann cuben.. die 2 "ist" unberührt lassen und sich 2 weitere "ist" suchen um ne gul zu cuben?

so eine funktion gabs beim mmbot es wurde das aufbewahrt was man angab und der rest wurde weitergecubed.
ich hoff das war jetzt einigermasen verständlich

jetzt aber das letzte edit :
NTCows..
zeile 86 ergab nen syntaxfehler
Quote:
if(!NTT_CheckSpace(_leg.xsize, _leg.ysize))
NTTMGR_VisitTown())
hab rot weggemacht, jetzt gehts.
scheint ja dann die richtige stelle gewesen zu sein ...?
ok.. dann an diese stelle ein semikolon setzen
kal_el is offline  
Old 03/06/2011, 13:08   #762
Administrator
 
Muddy Waters's Avatar
 
elite*gold: 41364
Join Date: Jan 2010
Posts: 22,727
Received Thanks: 12,652
Zu 0:
Ja ganz genau, einfach doppelt einfügen, entweder in die Char Config selbst, wenn es für einen bestimmten Char sein soll, oder eben in der globalen Config, wenn es direkt für alle Chars sein soll.

Zu 1:
Inwiefern Rücksetzen?
Das ist ja nur eine Ausgabe, die die Eigenschaften me.chickenhp sowie me.chickenmp ausgibt, welche man nicht direkt kennt, wenn man die Chicken Schwelle prozentual angibt (was man ja nicht mehr unbedingt muss).

Zu 2:
Exakt, siehe 0.

Zu 3:
Nein, weil diese Einstellung nicht das Aufwerten von Runen selbst betrifft.

Ich war der Meinung, dass es eher unwahrscheinlich ist, dass man Runen hochcubt, die man eigentlich lieber so aufbewahren würde.

Deshalb bezieht sich das eher auf die Restlichen Rezepte und somit auf low runes und gems.

Die Idee dabei war, bestimmte lowies aufzubewahren, die man Beispielsweise gerade für ein Runenwort braucht.

Wenn ich also etwa Caster Amulette crafte, während MWConfig_RestrictKeptItemsFromCubing den Wert true hat und dann die folgende Zeile in meinen .nip Files habe:
Code:
[MaxQuantity] == 2 && [Name] == RalRune
Würden die ersten 2 gefundenen RALs nicht zum Cuben verwendet.

Eine dritte würde dann nicht mehr aufgrund der .nip Files aufgehoben, sondern um damit zu Craften.

Zu 4:
Das kommt davon, wenn man Sachen anpasst ohne sie zu testen.

Und ja, das ist Zeile 86, aber bitte entferne die schließende Klammer nicht nur, sondern ersetze sie stattdessen durch ein Semikolon.

Lg
Muddy
Muddy Waters is offline  
Thanks
1 User
Old 03/06/2011, 13:39   #763
 
elite*gold: 0
Join Date: Jul 2006
Posts: 469
Received Thanks: 235
Die neue Version sieht ja ziemlich nett aus. Vorallem das mit der Telekinese find ich Klasse, damit ist das Kisten öffnen gleich viel effizienter

Ich bin dabei das AutoMule mit der neuen Version zu testen. Mal sehen was passiert wenn der Stash voll is
ldevil is offline  
Old 03/06/2011, 13:46   #764
Administrator
 
Muddy Waters's Avatar
 
elite*gold: 41364
Join Date: Jan 2010
Posts: 22,727
Received Thanks: 12,652
Quote:
Originally Posted by ldevil View Post
Die neue Version sieht ja ziemlich nett aus. Vorallem das mit der Telekinese find ich Klasse, damit ist das Kisten öffnen gleich viel effizienter

Ich bin dabei das AutoMule mit der neuen Version zu testen. Mal sehen was passiert wenn der Stash voll is
Das war mir eigentlich zwischendurch eingefallen und ich war dann ziemlich verwundert, dass ich das nicht schon viel eher eingbunden habe, da es je eigentlich schnell gemacht ist.

Wenn das mit dem Automule klappt, kannste dich ja mal bei mir melden. Ich hätte nichts dagegen, das fest einzubinden, dann hättest du in Zukunft weniger extra Abeit.

Lg
Muddy
Muddy Waters is offline  
Old 03/06/2011, 14:19   #765
 
elite*gold: 0
Join Date: Jul 2006
Posts: 469
Received Thanks: 235
Hm, ich weiss nicht wieso, aber ich hab jetzt immer den Fehler gekriegt, dass _ignorestring nicht definiert sei. Hab die Definition jetzt einfach in MWT_CheckStash() eingefügt, nun klappts (wieder), komischerweise hab ich den Fehler erst seit ich nen anderen gefixt habe

Code:
function MWT_Stash_Check()
{
	var _items, _targetSlot;
	[COLOR="Red"]var _ignorestring = _NTT_IgnoredItems.join();[/COLOR]
	
	this.RefreshProperties();
		
	_items = MWC_GetItems(MWC_LOC_INVENTORY);
	
	if(!_items)
		return false;

	for(var i = 0; i < _items.length; i++)
	{
		// Checked whether the item is supposed to be stashed
		if(NTConfig_Columns[_items[i].y][_items[i].x] == 1)
		{
			_check = NTSI_CheckItem(_items[i], true);
			
			if(_ignorestring.indexOf(_items[i].code) != -1 || _check <= 0 || _check == 3)
				continue;
		}
		else
			continue;
			
		
		// The item is supposed to be stash - check if the room will suffice
		_targetSlot = this.GetTargetSlot(_items[i]);

		if(_targetSlot.x > -1) // Return true if a valid stash position was found
			return true;
		else if(_items[i].xsize == 1 && _items[i].ysize == 1)
			return false;
	}

	return false;
}
Liegt das daran, dass du nun ne Stash Klasse hast?

Wär nett wenn du mir das erklären könntest, wie ich es korrekt mache. Weil ich kann ja nicht an deinen Funktionen rumbasteln sonst bin ich noch Schuld, wenn dein Bot nimmer läuft
ldevil 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 01:12.


Powered by vBulletin®
Copyright ©2000 - 2025, 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 ©2025 elitepvpers All Rights Reserved.