[D2NT Release] Game Announcements im Channel

06/02/2010 22:40 SaTaNTsR#61

Wieso joint er bei mir den channel nicht

Code:
/**
*    This file was modified by [email][Only registered and activated users can see links. Click Here To Register...][/email]                
*    Check the programming section for updates and further scripts                            *
*    Last Update: 05/28/2010                            
*/

var gameMinLength        = 120000;    // time in milliseconds, minimum game length, 180 seconds default (1 game/3 minutes)
var unableToConnectRetry    = 5;        // time in minutes to retry connecting on connection fail (real value is +/- 1 min)
var realmDownRetry        = 300;        // time in minutes to retry connecting on a realm down (default is 300 minutes)
var disconnectedRetry        = 5;        // time in minutes to retry on a disconnection (usually ip ban related)
var cdkeyInUseRetry        = 5;        // time in minutes to retry on a cdkey in use error message (set to 0 to stop)
var connectingToBnetTimeout    = 20000;    // time in milliseconds to wait for a login to time out and click cancel and retry
var characterScreenTimeout    = 10000;    // time in milliseconds to wait for character screen to appear
var pleaseWaitTimeout        = 10000;    // time in milliseconds to wait for a please wait popup
var createGameThreshold        = 15000;        // time in milliseconds to wait between making games
var createGameThresholdRandom    = 5000;        // time in milliseconds to randomly add +/- to the game create time
var createGameTimeout        = 15000;    // time in milliseconds to register a failed to create game
var waitInLineTimeout        = 60000;    // time in milliseconds to wait in lines for a create game (60 second default)
var characterSelectDelay    = 1000;        // time in milliseconds to wait before selecting a character on the char screen
var loginDelay            = 1000;        // time in milliseconds to wait before submitting login information
var clickDelay            = 1000;        // wait X milliseconds before next action after a click event
var textDelay            = 1000;        // wait X milliseconds before next action after inserting text into a textbox
var clickDelayRandom        = 500;        // random amount of time to add to a click
var textDelayRandom        = 500;        // random amount of time to add to a text set
var gameDoesNotExistDelayMin    = 600000;    // how long to wait when a Game Does Not Exist occurs - minimum - default 10 minutes
var gameDoesNotExistDelayMax    = 900000;    // how long to wait when a Game Does Not Exist occurs - maximum - default 15 minutes
var gameDoesNotExistTimeout    = 30000;    // how long to wait for the dialog to disappear (default 30 seconds, don't change this)
var joinChatAfterLogin        = true;        // join chat after login
var joinRandomChannel        = false;        // if this is true, will join a random channel, otherwise it will use the channel below..
var joinChannelInChat        = "OP Lastbaal";        // leave blank not to join a private channel
var channelLogin            = true;    // type ".login" once after joining the channel
var channelUsers             = new Array(); // dynamic array that holds channel users
//---------------------------------------------------------------------------------------------------------------------------------------------------------
// add any char/account here that is supposed to perform chat actions/game announcements or join a private channel
channelUsers.push("someAccountName");
channelUsers.push("someCharName");
//----------------------------------------------------------------------------------------------------------------------------------------------------------
//These key expressions are replaced that way: %game --> "gamename-",%counter --> number of the next game, %time --> time in seconds till game creation, %password --> game password
//Note that the announcement will start after the first run, so there won't be any anncouncement right after login
var gameAnnouncement        = "Next Game will be %game%counter!!"; // leave blank not to post a channel announcement
var gameAnnouncementDelay    = 5000;        // wait X milliseconds before posting the announcement message (don't set this too low!)
var gameAnnouncementDelayRandom = 500; // random amount of time to add to a to the announcement delay
//----------------------------------------------------------------------------------------------------------------------------------------------------------
var waitBeforeEnterChatMin    = 1000;        // min how long to wait before entering chat
var waitBeforeEnterChatMax    = 2000;        // max how long to wait before entering chat
var waitInChatBeforeActionsMin    = 2000;        // min how long to wait before joining channel
var waitInChatBeforeActionsMax    = 3000;        // max how long to wait before joining channel

// 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    joinedChannel = false;
var justJoined = true;

Include("libs/controlInfo.ntl");

var controlData = new controlInfo();

...
.....

Wieso joint er bei mir den channel nicht
06/02/2010 23:34 SaTaNTsR#62
Ich bräcuhte jetzt echt ma hilfe : /




erledigt
06/03/2010 03:47 k3k3.#63
hat sich erledigt -.-
06/03/2010 10:42 Muddy Waters#64
Quote:
Originally Posted by SaTaNTsR View Post

Wieso joint er bei mir den channel nicht

Code:
/**
*    This file was modified by [EMAIL="[Only registered and activated users can see links. Click Here To Register...]"][Only registered and activated users can see links. Click Here To Register...][/EMAIL]                
*    Check the programming section for updates and further scripts                            *
*    Last Update: 05/28/2010                            
*/

var gameMinLength        = 120000;    // time in milliseconds, minimum game length, 180 seconds default (1 game/3 minutes)
var unableToConnectRetry    = 5;        // time in minutes to retry connecting on connection fail (real value is +/- 1 min)
var realmDownRetry        = 300;        // time in minutes to retry connecting on a realm down (default is 300 minutes)
var disconnectedRetry        = 5;        // time in minutes to retry on a disconnection (usually ip ban related)
var cdkeyInUseRetry        = 5;        // time in minutes to retry on a cdkey in use error message (set to 0 to stop)
var connectingToBnetTimeout    = 20000;    // time in milliseconds to wait for a login to time out and click cancel and retry
var characterScreenTimeout    = 10000;    // time in milliseconds to wait for character screen to appear
var pleaseWaitTimeout        = 10000;    // time in milliseconds to wait for a please wait popup
var createGameThreshold        = 15000;        // time in milliseconds to wait between making games
var createGameThresholdRandom    = 5000;        // time in milliseconds to randomly add +/- to the game create time
var createGameTimeout        = 15000;    // time in milliseconds to register a failed to create game
var waitInLineTimeout        = 60000;    // time in milliseconds to wait in lines for a create game (60 second default)
var characterSelectDelay    = 1000;        // time in milliseconds to wait before selecting a character on the char screen
var loginDelay            = 1000;        // time in milliseconds to wait before submitting login information
var clickDelay            = 1000;        // wait X milliseconds before next action after a click event
var textDelay            = 1000;        // wait X milliseconds before next action after inserting text into a textbox
var clickDelayRandom        = 500;        // random amount of time to add to a click
var textDelayRandom        = 500;        // random amount of time to add to a text set
var gameDoesNotExistDelayMin    = 600000;    // how long to wait when a Game Does Not Exist occurs - minimum - default 10 minutes
var gameDoesNotExistDelayMax    = 900000;    // how long to wait when a Game Does Not Exist occurs - maximum - default 15 minutes
var gameDoesNotExistTimeout    = 30000;    // how long to wait for the dialog to disappear (default 30 seconds, don't change this)
var joinChatAfterLogin        = true;        // join chat after login
var joinRandomChannel        = false;        // if this is true, will join a random channel, otherwise it will use the channel below..
var joinChannelInChat        = "OP Lastbaal";        // leave blank not to join a private channel
var channelLogin            = true;    // type ".login" once after joining the channel
var channelUsers             = new Array(); // dynamic array that holds channel users
//---------------------------------------------------------------------------------------------------------------------------------------------------------
[B][COLOR=Red]// add any char/account here that is supposed to perform chat actions/game announcements or join a private channel[/COLOR][/B]
channelUsers.push("someAccountName");
channelUsers.push("someCharName");
//----------------------------------------------------------------------------------------------------------------------------------------------------------
//These key expressions are replaced that way: %game --> "gamename-",%counter --> number of the next game, %time --> time in seconds till game creation, %password --> game password
//Note that the announcement will start after the first run, so there won't be any anncouncement right after login
var gameAnnouncement        = "Next Game will be %game%counter!!"; // leave blank not to post a channel announcement
var gameAnnouncementDelay    = 5000;        // wait X milliseconds before posting the announcement message (don't set this too low!)
var gameAnnouncementDelayRandom = 500; // random amount of time to add to a to the announcement delay
//----------------------------------------------------------------------------------------------------------------------------------------------------------
var waitBeforeEnterChatMin    = 1000;        // min how long to wait before entering chat
var waitBeforeEnterChatMax    = 2000;        // max how long to wait before entering chat
var waitInChatBeforeActionsMin    = 2000;        // min how long to wait before joining channel
var waitInChatBeforeActionsMax    = 3000;        // max how long to wait before joining channel

// 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    joinedChannel = false;
var justJoined = true;

Include("libs/controlInfo.ntl");

var controlData = new controlInfo();

...
.....

Wieso joint er bei mir den channel nicht
Hast es ja schon selbst gefunden. ;)

:rtfm:

Quote:
Originally Posted by k3k3. View Post
hat sich erledigt -.-
Scheinbar leiste ich durch meine Abwesenheit Hilfe zur Selbsthilfe, gefällt mir. :)

Lg
Muddy
06/06/2010 14:44 fritzus#65
der schreibt bei mir einfach nich in channel ...
also überhaupt nicht ..
der joint noch nichma den vorgegebenen channel
bitte helft mir
06/06/2010 18:04 red.eye#66
Quote:
channelUsers.push("someAccountName");
channelUsers.push("someCharName");

kann man in der zeile evtl mehrere user eintragen?

wenn ja, wie^^

peace
06/06/2010 18:19 Muddy Waters#67
Quote:
Originally Posted by fritzus View Post
der schreibt bei mir einfach nich in channel ...
also überhaupt nicht ..
der joint noch nichma den vorgegebenen channel
bitte helft mir
Die Chars bzw. Accounts sind als Channel User eingetragen? Wenn nicht, bitte umsetzen, steht an sich auch ausdrücklich im Kommentar dazu. ;)

Quote:
Originally Posted by red.eye View Post
kann man in der zeile evtl mehrere user eintragen?

wenn ja, wie^^

peace
Das ganze ist ein dynamisches String Array. Du kannst somit soviele Strings eintragen, bis dein Arbeitsspeicher laut STOP ruft, das dürfen dann allerdings einige Millionen bzw. Milliarden Datensätze werden.

Die Elementfunktion push() hängt dabei einen beliebigen Datensatz hinten an das Array an. Du kannst demnach beliebig viele Datensätze hinzufügen, indem du sie einfach mit besagter Funktion anhängst, Syntax:
Code:
channelUsers.push("A");
channelUsers.push("B");
channelUsers.push("C");
channelUsers.push("D");
channelUsers.push("weitereNamen");
Ich hoffe das beantwortet deine frage. ;)

Lg
Muddy
06/15/2010 13:15 Gipfel22#68
Moin, meiner scheisst bei dem öffenen der ersten seals immer ab (public)
kann das an diesen einstellungen in der datei ntbot.ntj liegen die ich mir einfach von der seite hier kopiert habe?
06/15/2010 18:36 Muddy Waters#69
Quote:
Originally Posted by Gipfel22 View Post
Moin, meiner scheisst bei dem öffenen der ersten seals immer ab (public)
kann das an diesen einstellungen in der datei ntbot.ntj liegen die ich mir einfach von der seite hier kopiert habe?
Nein, dieser Threat läuft zwar parallel, hat aber eigentlich nichts mit dem aktuell laufendem Script ingame zu tun. ;)

Lg
Muddy
06/16/2010 09:48 RezChams#70
So sieht das in meiner version aus/ die von Sternlooper v3.4

Code:
var gameMinLength      = 180000;   // time in milliseconds, minimum game length, 180 seconds default (1 game/3 minutes)
var unableToConnectRetry   = 5;      // time in minutes to retry connecting on connection fail (real value is +/- 1 min)
var realmDownRetry      = 180;      // time in minutes to retry connecting on a realm down (default is 120 minutes)
var disconnectedRetry      = 5;      // time in minutes to retry on a disconnection (usually ip ban related)
var cdkeyInUseRetry      = 5;      // time in minutes to retry on a cdkey in use error message (set to 0 to stop)
var connectingToBnetTimeout   = 20000;   // time in milliseconds to wait for a login to time out and click cancel and retry
var characterScreenTimeout   = 10000;   // time in milliseconds to wait for character screen to appear
var pleaseWaitTimeout      = 10000;   // time in milliseconds to wait for a please wait popup
var createGameThreshold      = 15000;      // time in milliseconds to wait between making games
var createGameThresholdRandom   = 2000;      // time in milliseconds to randomly add +/- to the game create time
var createGameTimeout      = 15000;   // time in milliseconds to register a failed to create game
var waitInLineTimeout      = 60000;   // time in milliseconds to wait in lines for a create game (60 second default)
var characterSelectDelay   = 1000;      // time in milliseconds to wait before selecting a character on the char screen
var loginDelay         = 1000;      // time in milliseconds to wait before submitting login information
var clickDelay         = 500;      // wait X milliseconds before next action after a click event
var textDelay         = 500;      // wait X milliseconds before next action after inserting text into a textbox
var clickDelayRandom      = 500;      // random amount of time to add to a click
var textDelayRandom      = 500;      // random amount of time to add to a text set
var gameDoesNotExistDelayMin   = 1000;   // how long to wait when a Game Does Not Exist occurs - minimum - default 10 minutes
var gameDoesNotExistDelayMax   = 1000;   // how long to wait when a Game Does Not Exist occurs - maximum - default 15 minutes
var gameDoesNotExistTimeout   = 30000;   // how long to wait for the dialog to disappear (default 30 seconds, don't change this)
var joinChatAfterGame      = true;   // join chat after leaving a game
var joinRandomChannel      = false;      // if this is true, will join a random channel, otherwise it will use the channel below..
var joinChannelInChat      = "OP GovBaal";      // leave blank to not join a private channel
var waitBeforeEnterChatMin   = 1000;      // min how long to wait before entering chat
var waitBeforeEnterChatMax   = 2000;      // max how long to wait before entering chat
var waitInChatBeforeActionsMin   = 2000;      // min how long to wait before joining channel
var waitInChatBeforeActionsMax   = 3000;      // max how long to wait before joining channel
var JoinFromChat = true;
//########################################################################################################################################
//################################AUTOMULE SETTINGS#######################################################################################
//########################################################################################################################################
var MuleAccount = "";
var MulePassword = "";
var MuleCharLocation = 5; // charloc 1 = 0 , charloc 2 = 1 , charloc 3 = 2, ..... counts +1 after mule is full
var MuleGame = "k1kmule";
var MuleGamePassword ="xx1";







// 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;

Include("libs/controlInfo.ntl");
Include("libs/common/NTCommon.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;

					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;

				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(GetTickCount() > nextGameMake)
		{
			var _control;

			lastGameFailed = false;

			switch(lastGameStatus)
			{
			case 0:
				_control = controlData.get(controlData.controls.lobby.button.create);
				if(_control && _control.pressed)
				{
					controlData.click(controlData.controls.lobby.button.join);
					Delay(500);
				}

				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;
		
		
		
		break;
		
	case 1:   // Lobby
		
		if(location.id == 1 && joinChatAfterGame)
		{
			Delay(Random(waitBeforeEnterChatMin, waitBeforeEnterChatMax));
			controlData.click(controlData.controls.lobby.button.enterChat);
			break;
		}

		if(GetTickCount() > nextGameMake)
		{
			var _control;

			lastGameFailed = false;

			switch(lastGameStatus)
			{
			case 0:
				_control = controlData.get(controlData.controls.lobby.button.create);
				if(_control && _control.pressed)
				{
					controlData.click(controlData.controls.lobby.button.join);
					Delay(500);
				}

				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();

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













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);
		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_SendLogToOOG(NTC_LOG_COMMON, "Log on next Mule char because current Mulechar is full!");
		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;
		
	}

}
wo stell ich da ein das der das ng schreibt
06/16/2010 15:15 Muddy Waters#71
Quote:
Originally Posted by Daarmy View Post
So sieht das in meiner version aus/ die von Sternlooper v3.4

Code:
var gameMinLength      = 180000;   // time in milliseconds, minimum game length, 180 seconds default (1 game/3 minutes)
var unableToConnectRetry   = 5;      // time in minutes to retry connecting on connection fail (real value is +/- 1 min)
var realmDownRetry      = 180;      // time in minutes to retry connecting on a realm down (default is 120 minutes)
var disconnectedRetry      = 5;      // time in minutes to retry on a disconnection (usually ip ban related)
var cdkeyInUseRetry      = 5;      // time in minutes to retry on a cdkey in use error message (set to 0 to stop)
var connectingToBnetTimeout   = 20000;   // time in milliseconds to wait for a login to time out and click cancel and retry
var characterScreenTimeout   = 10000;   // time in milliseconds to wait for character screen to appear
var pleaseWaitTimeout      = 10000;   // time in milliseconds to wait for a please wait popup
var createGameThreshold      = 15000;      // time in milliseconds to wait between making games
var createGameThresholdRandom   = 2000;      // time in milliseconds to randomly add +/- to the game create time
var createGameTimeout      = 15000;   // time in milliseconds to register a failed to create game
var waitInLineTimeout      = 60000;   // time in milliseconds to wait in lines for a create game (60 second default)
var characterSelectDelay   = 1000;      // time in milliseconds to wait before selecting a character on the char screen
var loginDelay         = 1000;      // time in milliseconds to wait before submitting login information
var clickDelay         = 500;      // wait X milliseconds before next action after a click event
var textDelay         = 500;      // wait X milliseconds before next action after inserting text into a textbox
var clickDelayRandom      = 500;      // random amount of time to add to a click
var textDelayRandom      = 500;      // random amount of time to add to a text set
var gameDoesNotExistDelayMin   = 1000;   // how long to wait when a Game Does Not Exist occurs - minimum - default 10 minutes
var gameDoesNotExistDelayMax   = 1000;   // how long to wait when a Game Does Not Exist occurs - maximum - default 15 minutes
var gameDoesNotExistTimeout   = 30000;   // how long to wait for the dialog to disappear (default 30 seconds, don't change this)
var joinChatAfterGame      = true;   // join chat after leaving a game
var joinRandomChannel      = false;      // if this is true, will join a random channel, otherwise it will use the channel below..
var joinChannelInChat      = "OP GovBaal";      // leave blank to not join a private channel
var waitBeforeEnterChatMin   = 1000;      // min how long to wait before entering chat
var waitBeforeEnterChatMax   = 2000;      // max how long to wait before entering chat
var waitInChatBeforeActionsMin   = 2000;      // min how long to wait before joining channel
var waitInChatBeforeActionsMax   = 3000;      // max how long to wait before joining channel
var JoinFromChat = true;
//########################################################################################################################################
//################################AUTOMULE SETTINGS#######################################################################################
//########################################################################################################################################
var MuleAccount = "";
var MulePassword = "";
var MuleCharLocation = 5; // charloc 1 = 0 , charloc 2 = 1 , charloc 3 = 2, ..... counts +1 after mule is full
var MuleGame = "k1kmule";
var MuleGamePassword ="xx1";







// 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;

Include("libs/controlInfo.ntl");
Include("libs/common/NTCommon.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;

                    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;

                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(GetTickCount() > nextGameMake)
        {
            var _control;

            lastGameFailed = false;

            switch(lastGameStatus)
            {
            case 0:
                _control = controlData.get(controlData.controls.lobby.button.create);
                if(_control && _control.pressed)
                {
                    controlData.click(controlData.controls.lobby.button.join);
                    Delay(500);
                }

                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;
        
        
        
        break;
        
    case 1:   // Lobby
        
        if(location.id == 1 && joinChatAfterGame)
        {
            Delay(Random(waitBeforeEnterChatMin, waitBeforeEnterChatMax));
            controlData.click(controlData.controls.lobby.button.enterChat);
            break;
        }

        if(GetTickCount() > nextGameMake)
        {
            var _control;

            lastGameFailed = false;

            switch(lastGameStatus)
            {
            case 0:
                _control = controlData.get(controlData.controls.lobby.button.create);
                if(_control && _control.pressed)
                {
                    controlData.click(controlData.controls.lobby.button.join);
                    Delay(500);
                }

                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();

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













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);
        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_SendLogToOOG(NTC_LOG_COMMON, "Log on next Mule char because current Mulechar is full!");
        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;
        
    }

}
wo stell ich da ein das der das ng schreibt
Da stellst du nicht mal eben was ein, das komplette Script müsste umgeschrieben/angepasst werden. :rolleyes:

Passt sogesehen auch denkbar schlecht in dieses Topic, schließlich befasst sich das mit dem hier veröffentlichten Script und eventuell auch leicht abgewandelten Versionen. Was du da hast ist aber wie gesagt extrem abweichend bzw. eine Version auf Basis des Standardscripts, die nach völlig anderen Gesichtspunkten umgeschrieben wurde...

Lg
Muddy
08/01/2010 00:25 ohdu#72
Ich habe da eine Frage:

Wenn ich Baalruns über Op Lastbaal mache, geht der Bot bis Baalrun-99.
Danach fängt er die runs wieder von vorne an, also Baalrun-00, Baalrun-01, usw.

Das ist natürlich kein wirkliches Problem, dennoch würde ich gerne wissen, wie man den Bot von Baalrun-99 weiterlaufen lassen kann, also Baalrun-100, Baalrun-101, usw.


Vielen Dank
MfG ohdu
08/01/2010 11:16 Muddy Waters#73
Quote:
Originally Posted by ohdu View Post
Ich habe da eine Frage:

Wenn ich Baalruns über Op Lastbaal mache, geht der Bot bis Baalrun-99.
Danach fängt er die runs wieder von vorne an, also Baalrun-00, Baalrun-01, usw.

Das ist natürlich kein wirkliches Problem, dennoch würde ich gerne wissen, wie man den Bot von Baalrun-99 weiterlaufen lassen kann, also Baalrun-100, Baalrun-101, usw.


Vielen Dank
MfG ohdu
Indem du irgendwie Kontakt zu dem Koreaner herstellst, der die D2NT Core geschrieben hat und ihn dann noch davon überzeugst, dir das ganze in Quellcode Form zu überlassen, damit du es dir nach Belieben anpassen kannst.
Aber ich denke bevor das passieren wird, hat Deutschland seine Staatsverschuldung abgebaut... :rolleyes:

Lg
Muddy
08/01/2010 23:03 ohdu#74
Quote:
Originally Posted by Muddy_Waters View Post
Indem du irgendwie Kontakt zu dem Koreaner herstellst, der die D2NT Core geschrieben hat und ihn dann noch davon überzeugst, dir das ganze in Quellcode Form zu überlassen, damit du es dir nach Belieben anpassen kannst.
Aber ich denke bevor das passieren wird, hat Deutschland seine Staatsverschuldung abgebaut... :rolleyes:

Lg
Muddy
Ein einfach "Ist nicht möglich." hätte vollkommen ausgereicht, statt eine niveaulose Antwort zu geben.
08/02/2010 15:06 Muddy Waters#75
Quote:
Originally Posted by ohdu View Post
Ein einfach "Ist nicht möglich." hätte vollkommen ausgereicht, statt eine niveaulose Antwort zu geben.
Bleib locker, das war nicht böse gemeint. ;)

Ich fände es selber schön, wenn besagte Person mal mit dem Quellcode rausrücken würde, aber da können wir wohl lange drauf warten und bleiben bis dahin was die Modifiaktionsmöglichkeiten angeht etwas eingeschränkt. :(

Lg
Muddy