also ich habe durch die suche nix gefunden und der Fred zum Sternenlooper Bot hat fast 300 Seiten -.-
Also ich habe nen Pala als Leader und ein DUDU der leecher soll.
Habe in der Leech.ntj den Channel und denn ACC eingestellt.
Die finden sind auch.
Allerdings:
Will der Dudu dann ein Game join, schreibt er in Gamename
"In the Game (Gamename) und dann PW
Das Game gibt es natürlich nicht.
Ich find leider die endsprechende Zeile in der ntj nicht.
Code:
//############################################################################################################################## // Do Not distribute these scripts without the credits ######################################################################### //############################################################################################################################## //Regards - Medix from http://www.************* ################################################################################# //############################################################################################################################## var gameMinLength = 90000; // 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 = 5000; // time in milliseconds to wait between making games var createGameThresholdRandom = 1000; // 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 Becks"; // 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 = "MULE ACC NAME"; var MulePassword = "MULE ACC PW"; var MuleCharLocation = 0; // charloc 1 = 0 , charloc 2 = 1 , charloc 3 = 2, ..... counts +1 after mule is full var MuleGame = "MULE GAME NAME"; var MuleGamePassword ="MULE GAME PW"; //######################################################################################################################################### //################################LEECHBOT SETTINGS######################################################################################## //######################################################################################################################################### var leaderAccountName = "XXXXXXXXXX"; // Leader // achtet auf groß und kleinschreibung!! var gamepassword = 'de'; // Wenn du ein Passwort für deine Baalruns verwendest, schreibe es hier zwischen die zwei '' var ChatFLDelay = 8000 //delay between /f l in ms var JoinGameAgain = true; // Bot joins same game again after leaving it due chicken //######################################################################################################################################### //######################################################################################################################################### //######################################################################################################################################### // 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 = 'Becks-Baal'; 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('' + 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('' + 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; } }