Ist ja auch nicht im Sternenlooper, sondern in meinem.
machts fast noch schlimmer [gefühlt]Quote:
Versuchs mal mit dieser NTBot.ntj:
Code:var channelUsers = new Array(); //################################################################### //###########################Einstellungen########################### //################################################################### // Wenn ihr nur einen Key benutzt, dann diesen Wert mindestens auf 180000 setzen, damit ihr keine realmdowns bekommt var gameMinLength = 10000; var joinChatAfterLogin = false; // true = Bot geht in den Chat, um .login/Announces zu machen var joinChannelInChat = "OP MyBaal"; // Wenn der Bot in keinen bestimmten Channel soll, dann nichts eintragen var channelLogin = true; // true = Bot schreibt .login nachdem er eingeloggt ist channelUsers.push("Account Name"); // Hier deinen Account Name eintragen channelUsers.push("Char Name"); // Hier deinen Char Name eintragen // %game --> "gamename-" // %counter --> number of the next game // %time --> time in seconds till game creation // %password --> game password var gameAnnouncement = "Next Game: %game%counter in %time seconds."; // Wenn keine NG message im Chat geposted werden soll, dann nichts eintragen //---------------------------------------------------------------------------------------------------------------------------------------------------------- //################################################################### //##############################Delays############################### //################################################################### // realm delays (minutes) var unableToConnectRetry = 2; var realmDownRetry = 60; var disconnectedRetry = 2; var cdkeyInUseRetry = 2; // interface delays (milliseconds) var connectingToBnetTimeout = 20000; var characterScreenTimeout = 10000; var pleaseWaitTimeout = 10000; var createGameThreshold = 10000; var createGameThresholdRandom = 2500; var createGameTimeout = 15000; var waitInLineTimeout = 60000; var characterSelectDelay = 1000; var loginDelay = 1000; var clickDelay = 1000; var textDelay = 1000; var clickDelayRandom = 500; var textDelayRandom = 500; var gameDoesNotExistDelayMin = 600000; var gameDoesNotExistDelayMax = 900000; var gameDoesNotExistTimeout = 30000; var gameAnnouncementDelay = 5000; var gameAnnouncementDelayRandom = 500; var waitBeforeEnterChatMin = 1000; var waitBeforeEnterChatMax = 2000; var waitInChatBeforeActionsMin = 2000; var waitInChatBeforeActionsMax = 3000; //################################################################### //################################################################### //###############DO NOT CHANGE ANYTHING BELOW THIS################### //################################################################### //################################################################### // D2NT Manager Command const D2NT_MGR_LOADING = 1; const D2NT_MGR_READY = 2; const D2NT_MGR_LOGIN = 3; const D2NT_MGR_CREATE_GAME = 4; const D2NT_MGR_INGAME = 5; const D2NT_MGR_RESTART = 6; const D2NT_MGR_CHICKEN = 7; const D2NT_MGR_PRINT_STATUS = 8; const D2NT_MGR_PRINT_LOG = 9; var lastGameMade = GetTickCount(); var lastGameStatus = 0; var nextGameMake = 0; var inGameAt = 0; var chatActionsDone = false; var lastGameFailed = false; var joinedChannel = false; var justJoined = true; var joinRandomChannel = false; Include("libs/controlInfo.ntl"); var controlData = new controlInfo(); 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) { RunGC(); // run garbage collector between each game 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); } locationAction(controlData.getLocation()); Delay(500); } } } function locationAction(location) { switch(location.id) { case 3: // Lobby Chat if(justJoined) { justJoined = false; if(isChannelUser(me.account, me.charname)) { for(var i = 0; i < 3; i++) { SetStatusText("ÿc2Chat actions enabled!"); Delay(150); SetStatusText(""); Delay(150); } } else { for(var i = 0; i < 3; i++) { SetStatusText("ÿc1Chat actions disabled!"); Delay(150); SetStatusText(""); Delay(150); } } } if(!chatActionsDone && isChannelUser(me.account, me.charname)) { chatActionsDone = true; Delay(Random(waitInChatBeforeActionsMin, waitInChatBeforeActionsMax)); if(!joinedChannel && (joinRandomChannel || joinChannelInChat != "")) { var rndChannel = getRandomString(Random(3,10)); SetStatusText("ÿc8Joining Channel " + (joinRandomChannel ? rndChannel : joinChannelInChat) ); Delay(1000); Say("/join " + (joinRandomChannel ? rndChannel : joinChannelInChat)); joinedChannel = true; Delay(1000); if(channelLogin) { SetStatusText("ÿc8Channel Login..."); Say(".login"); Delay(1000); } } } case 1: // Lobby if(location.id == 1 && joinChatAfterLogin) { 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(); lastGameFailed = true; Delay(5000); case 2: outputGameLength(); lastGameStatus = 0; setNextGameMake(); if(lastGameFailed) { SetStatusText("ÿc1Failed to join!"); sendEventToOOG(D2NT_MGR_PRINT_LOG, "ÿE00000Game " + ((getGameCounter(me.gamename, true)) ? ("(" + getGameCounter(me.gamename, true) + ")") : "") + " creation failed!", 0) Delay(2500); } sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name, 0); break; } } else { if(joinChannelInChat && gameAnnouncement && me.gamename && isChannelUser(me.account, me.charname)) { var tempDelay = (gameAnnouncementDelay > 5000) ? gameAnnouncementDelay : 5000 + (gameAnnouncementDelayRandom > 500) ? Random(0, gameAnnouncementDelayRandom) : 500; var gameText = gameAnnouncement; gameText = gameText.replace("%password", me.gamepassword); gameText = gameText.replace("%game", getGameName(me.gamename)); gameText = gameText.replace("%counter", getGameCounter(me.gamename, false)); gameText = gameText.replace("%time", parseInt((nextGameMake - GetTickCount() - tempDelay)/1000+3.0)); if(parseInt((nextGameMake - GetTickCount() - tempDelay)/1000+3.0) > 5) { Delay(tempDelay); Say(gameText); } } timeoutDelay(nextGameMake-GetTickCount(), location, true); } 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); locationTimeout(5000, location); lastGameMade = GetTickCount(); lastGameStatus = 1; // pending creation break; case 5: // Join Game break; case 6: // Ladder break; case 7: // Channel List break; case 8: // Main Menu if(controlData.getCurrentRealmIndex() == me.gatewayid) { outputGameLength(); controlData.click(controlData.gameTypes[me.playtype]); } else controlData.click(controlData.controls.mainMenu.button.gateway); break; case 9: // Login sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name, 0); Delay(loginDelay); controlData.setText(controlData.controls.login.editBox.accountName, me.account); sendEventToOOG(D2NT_MGR_LOGIN, location.name, 0); locationTimeout(5000, location); break; case 10: // Login Error (this is a fatal error, so stop) sendEventToOOG(D2NT_MGR_RESTART, location.name, 10); Delay(3500); break; case 11: // Unable To Connect timeoutDelay(unableToConnectRetry*60*1000, location) controlData.click(controlData.controls.login.unableToConnect.button.ok); break; case 12: // Character Select var _time, _control; sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name, 0); for(_time = 0 ; _time < characterScreenTimeout ; _time += 500) { _control = controlData.get(controlData.controls.characterSelect.textBox.characterInfo[me.charloc]); if(_control && _control.GetText() != undefined) break; Delay(500); } if(_time < characterScreenTimeout) { Delay(characterSelectDelay); controlData.click(controlData.controls.characterSelect.textBox.characters[me.charloc], 0, 0, 1); controlData.click(controlData.controls.characterSelect.textBox.characterInfo[me.charloc], 0, 0, 1); // reset last game made, so it doesnt make a game immediately inGameAt = 0; setNextGameMake(); } else { controlData.click(controlData.controls.characterSelect.button.exit); timeoutDelay(realmDownRetry*60*1000, location); } break; case 13: // Realm Down - Character Select screen controlData.click(controlData.controls.characterSelect.button.exit); timeoutDelay(realmDownRetry*60*1000, location); break; case 14: // Character Select - Disconnected timeoutDelay(disconnectedRetry*60*1000, location); controlData.click(controlData.controls.characterSelect.disconnected.button.ok); break; case 15: // New Character break; case 16: // Character Select - Please Wait popup if(!locationTimeout(pleaseWaitTimeout, location)) controlData.click(controlData.controls.characterSelect.pleaseWait.button.cancel); break; case 17: // Lobby - Lost Connection - just click okay, since we're toast anyway controlData.click(controlData.controls.lobby.lostConnection.button.ok); break; case 18: // D2 Splash controlData.click(controlData.controls.d2Splash.textBox.copyright); break; case 19: // Login - Cdkey In Use timeoutDelay(cdkeyInUseRetry*60*1000, location); controlData.click(controlData.controls.login.cdkeyInUse.button.ok); break; case 20: // Single Player - Select Difficulty controlData.click(controlData.singlePlayerDifficulties[me.diff]); break; case 21: // Main Menu - Connecting if(!locationTimeout(connectingToBnetTimeout, location)) controlData.click(controlData.controls.mainMenu.connecting.button.cancel); break; case 22: // Login - Invalid Cdkey (classic or xpac) sendEventToOOG(D2NT_MGR_RESTART, location.name, 3600); Delay(3500); break; case 23: // Character Select - Connecting if(!locationTimeout(characterScreenTimeout, location)) controlData.click(controlData.controls.characterSelect.button.exit); break; case 24: // Server Down - not much to do but wait.. break; case 25: // Lobby - Please Wait if(!locationTimeout(pleaseWaitTimeout, location)) controlData.click(controlData.controls.lobby.pleaseWait.button.cancel); if(!locationTimeout(pleaseWaitTimeout, location)) sendEventToOOG(D2NT_MGR_RESTART, location.name, 60); break; case 26: // Lobby - Game Name Exists sendEventToOOG(D2NT_MGR_PRINT_LOG, "ÿE00000Game already exists", 0); SetStatusText("ÿc1Game akready exists!"); inGameAt = 0; lastGameStatus = 0; setNextGameMake(); locationTimeout(15000, location); break; case 27: // Gateway Select controlData.clickRealmEntry(me.gatewayid); controlData.click(controlData.controls.gateway.button.ok); break; case 28: // Lobby - Game Does Not Exist inGameAt = Random(gameDoesNotExistDelayMin, gameDoesNotExistDelayMax); lastGameStatus = 0; setNextGameMake(); locationTimeout(gameDoesNotExistTimeout, location); break; } } 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, showNextGameStatus) { if(arguments.length < 3) showNextGameStatus = false; endtime = GetTickCount() + time; while(endtime > GetTickCount()) { sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name + " (" + parseInt((endtime-GetTickCount())/1000) + "s)", 0); if(showNextGameStatus) { if(lastGameFailed && parseInt((endtime-GetTickCount())/1000) > 30) { if(parseInt((endtime-GetTickCount())/1000) % 30 == 0) { SetStatusText("ÿc1Last game failed!"); Delay(5000); } if(me.gamename && getGameCounter(me.gamename, false)) SetStatusText("ÿc8Next game: " + getGameName(me.gamename) + getGameCounter(me.gamename, false) + " (" + parseInt((endtime-GetTickCount())/1000) + "s)"); else SetStatusText("ÿc8Game creation pending... (" + parseInt((endtime-GetTickCount())/1000) + "s)"); } else if(parseInt((endtime-GetTickCount())/1000) >= 0) { if(me.gamename && getGameCounter(me.gamename, false)) SetStatusText("ÿc8Next game: " + getGameName(me.gamename) + getGameCounter(me.gamename, false) + " (" + parseInt((endtime-GetTickCount())/1000) + "s)"); else SetStatusText("ÿc8Game creation pending... (" + parseInt((endtime-GetTickCount())/1000) + "s)"); } if(me.ingame) endtime = GetTickCount(); } Delay(1000); } if(showNextGameStatus) SetStatusText("ÿc8Creating game..."); } function getRandomString(_length) { _retString = ""; _charSet = "0123456789abcdefghijklmnopqrstuvwxyz"; while(_length--) { _retString += _charSet.charAt(Random(0, _charSet.length-1)); Delay(1); } return _retString; } function getGameName(lastGameString) { if(!lastGameString) return ""; else return (lastGameString.substr(0, lastGameString.lastIndexOf('-')+1)); } function getGameCounter(lastGameString, simple) { var myCount, countString; if(!lastGameString) return "-1"; else { countString = lastGameString.slice(lastGameString.lastIndexOf('-')+1); switch(countString) { case "08": myCount = 9; break; case "09": myCount = 10; break; default: myCount = parseInt(countString) + 1; break; } if(!simple) { if(myCount <= 9) return ('0' + myCount); } return myCount; } } function isChannelUser(accountname, charname) { for(var i = 0; i < channelUsers.length; i++) { if(accountname.toLowerCase() == channelUsers[i].toLowerCase() || charname.toLowerCase() == channelUsers[i].toLowerCase()) return true; } return false; }
Hmm.. [Only registered and activated users can see links. Click Here To Register...] Wenn ihr nicht auf Channel Announcements angewiesen seid, könnt ihr die ausm Sternenlooper nehmen. Sonst ka, muss mal schaun, dass ich Muddys neue Version umbaue.Quote:
machts fast noch schlimmer [gefühlt]
Könntest du schon, würde aber wenig Sinn machen. Ich schätze mal du hast einfach übersehen, dass du im Startpost dieses Threads eine D2NT Version herunterladen kannst.Quote:
jetz verlinkst du mich wieder hierher bezüglich meiner Frage im Sternenlooper Thread ^^ was is nu mit dem??
//################################################## #################
//#########################BotType festlegen#########################
//################################################## #################
NTConfig_BotType = 1;
// 1 = Leader
// 2 = Co-Leecher
// 3 = Leecher
kann ich das einfach in die charconfigs einfügen?
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 = false; // 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 = ""; // 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";
// 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;
}
}
bringt ne bot.ntj eig was? bei mir crashen ausschließlich die co-leecher.Quote:
Könntest du schon, würde aber wenig Sinn machen. Ich schätze mal du hast einfach übersehen, dass du im Startpost dieses Threads eine D2NT Version herunterladen kannst.
@L4V3y: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 = false; // 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 = ""; // 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"; // 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; } }
@DavLad: Ich glaube nicht, dass dir noch irgendjemand helfen kann, tut mir Leid. [Only registered and activated users can see links. Click Here To Register...]
Die Co-Leecher? [Only registered and activated users can see links. Click Here To Register...] eigentlich gabs das Problem nur beim Leader. [Only registered and activated users can see links. Click Here To Register...]Quote:
bringt ne bot.ntj eig was? bei mir crashen ausschließlich die co-leecher.
mal test0rnQuote:
Hast du bei den Leechern FastPick aktiviert? Gut möglich, dass die Restarts daran liegen.
Es ist bekannt, dass ich Diablo doof finde. [Only registered and activated users can see links. Click Here To Register...] Mal mit dieser NTDiabloLeechFight versuchen, glaub hatte bei anderen funktioniert.Quote:
ist bzgl des rumstehens nach dem 3. siegelboss denn was bekannt?
function NTMain()
{
Include("libs/common/NTCommon.ntl");
NTC_IncludeLibs();
NTC_IncludeConfig("NTBot/char_configs");
NT_LoadConfig();
NTSI_LoadNIPFiles("NTBot/item_configs");
NTA_Initialize();
if(!NTTM_CheckAct())
{
NTC_SendMsgToScript("NTBotGame.ntj", "NTTM_CheckAct()");
return;
}
if(me.areaid != 103)
{
if(!NTTM_TownMove("waypoint"))
{
NTC_SendMsgToScript("NTBotGame.ntj", "NTTM_TownMove()");
return;
}
if(!NTM_TakeWaypoint(103))
{
NTC_SendMsgToScript("NTBotGame.ntj", "NTM_TakeWaypoint()");
return;
}
}
NTTMGR_TownManager();
NTTM_TownMove("portalspot");
for(i = 0; i <= 100; i++)
{
if(NTC_InMyParty(NTConfig_Leader))
break;
Delay(200);
}
while(me.areaid == 103 && NTC_InMyParty(NTConfig_Leader))
{
if(NT_GetLeader(NTConfig_Leader).areaid >= 129)
{
NTC_SendMsgToScript("NTBotGame.ntj", "SCRIPT_END");
return;
}
NTM_UsePortal("BluePortal", 108, NTConfig_Leader); // 50
Delay(1000);
}
NTP_DoPrecast(true);
NTA_ClearPosition(10, true);
NTM_MoveTo(me.areaid, 7792, 5291);
NTA_ClearPosition(20, true);
NTM_MoveTo(me.areaid, 7792, 5291);
NTA_ClearPosition(30, true);
if(NTConfig_Teleport)
{
NTC_SwapWeapons(1)
}
if(!NT_OpenSealsInt())
{
NTC_SendMsgToScript("NTBotGame.ntj", "NT_OpenSealsInt()");
return;
}
if(NTConfig_PublicMode)
Say(NTConfig_KillDiaMsg);
NTM_MoveTo(me.areaid, 7792, 5292);
NTP_DoPrecast(true);
NTC_FindUnit(NTC_UNIT_MONSTER, 243, 100);
if(NTConfig_Teleport)
{
NTC_SwapWeapons(0)
}
NTA_KillMonster(243);
NTSI_PickItems();
Say(NTConfig_DiaNxtGame);
NTC_SendMsgToScript("NTBotGame.ntj", "SCRIPT_END");
// Internal function
function NT_OpenSealsInt()
{
var i, _unit;
var _result;
_unit = GetPresetUnits(me.areaid, NTC_UNIT_OBJECT);
if(!_unit)
return false;
_result = false;
for(i = 0 ; i < _unit.length ; i++)
{
if(_unit[i].id == 396)
{
if(_unit[i].roomy*5 + _unit[i].y == 5275)
_result = NT_OpenVizierSealInt(1);
else
_result = NT_OpenVizierSealInt(2);
break;
}
}
if(!_result)
return false;
NTA_ClearPosition(30, true, 2);
NTP_DoPrecast(false);
_result = false;
for(i = 0 ; i < _unit.length ; i++)
{
if(_unit[i].id == 394)
{
if(_unit[i].roomx*5 + _unit[i].x == 7773)
_result = NT_OpenDeSeisSealInt(1);
else
_result = NT_OpenDeSeisSealInt(2);
break;
}
}
if(!_result)
return false;
NTA_ClearPosition(30, true, 2);
NTP_DoPrecast(true);
_result = false;
for(i = 0 ; i < _unit.length ; i++)
{
if(_unit[i].id == 392)
{
if(_unit[i].roomx*5 + _unit[i].x == 7893)
_result = NT_OpenVenomSealInt(1);
else
_result = NT_OpenVenomSealInt(2);
break;
}
}
return _result;
}
function NT_OpenVizierSealInt(type)
{
var _monstername = GetLocaleString(2851);
var i, n;
var i, n;
var _attackpos = [7740, 5300, 7792, 5291, 7740, 5280, 7720, 5280, 7720, 5300];
for(i = 0 ; i < _attackpos.length ; i += 2)
{
NTM_MoveTo(me.areaid, _attackpos[i], _attackpos[i+1]);
NTA_ClearPosition(25, true, 2);
}
NTM_MoveTo(me.areaid, 7735, 5291);
NTA_ClearPosition(40, true, 2);
for(i = 0 ; i < 3 ; i++)
{
if(type == 1)
{
NTM_MoveTo(me.areaid, 7695, 5293);
NTA_ClearPosition(25, true, 2);
NTM_MoveTo(me.areaid, 7664, 5314);
NTA_ClearPosition(25, true, 2);
NTM_MoveTo(me.areaid, 7673, 5293);
NTA_ClearPosition(25, true, 2);
NTM_MoveTo(me.areaid, 7662, 5276);
NTA_ClearPosition(25, true, 2);
NTM_MoveTo(me.areaid, 7676, 5294);
NTA_ClearPosition(60, true, 2);
if(me.classid == NTC_CHAR_CLASS_PALADIN)
NTM_MoveTo(me.areaid, 7678, 5292);
}
else
{
NTM_MoveTo(me.areaid, 7695, 5316);
NTA_ClearPosition(25, true, 2);
NTM_MoveTo(me.areaid, 7664, 5314);
NTA_ClearPosition(25, true, 2);
NTM_MoveTo(me.areaid, 7654, 5281);
NTA_ClearPosition(25, true, 2);
NTM_MoveTo(me.areaid, 7695, 5316);
NTA_ClearPosition(60, true, 2);
if(me.classid == NTC_CHAR_CLASS_PALADIN)
NTM_MoveTo(me.areaid, 7676, 5320);
}
for(n = 0 ; n < 10 ; n++)
{
NTC_Delay(200);
if(NTConfig_Teleport)
{
NTC_SwapWeapons(0)
}
if(NTA_KillMonster(_monstername))
{
NTA_ClearPosition(40);
NTSI_PickItems();
if(NTConfig_Teleport)
{
NTC_SwapWeapons(1)
}
return NTM_MoveTo(me.areaid, 7792, 5291);
}
}
}
return false;
}
function NT_OpenDeSeisSealInt(type)
{
var i, n;
var _monstername = GetLocaleString(2852);
var _attackpos = [7780, 5255, 7800, 5255, 7800, 5235, 7780, 5235, 7774, 5214];
var _monstername = GetLocaleString(2852);
for(i = 0 ; i < _attackpos.length ; i += 2)
{
NTM_MoveTo(me.areaid, _attackpos[i], _attackpos[i+1]);
NTA_ClearPosition(25, true, 2);
}
NTM_MoveTo(me.areaid, 7790, 5244);
NTA_ClearPosition(40, true, 2);
for(i = 0 ; i < 3 ; i++)
{
if(type == 1)
{
NTM_MoveTo(me.areaid, 7773, 5194);
NTA_ClearPosition(25, true, 2);
NTM_MoveTo(me.areaid, 7813, 5188);
NTA_ClearPosition(25, true, 2);
NTM_MoveTo(me.areaid, 7809, 5155);
NTA_ClearPosition(25, true, 2);
NTM_MoveTo(me.areaid, 7777, 5155);
NTA_ClearPosition(60, true, 2);
if(me.classid == NTC_CHAR_CLASS_PALADIN)
NTM_MoveTo(me.areaid, 7768, 5206);
else
NTM_MoveTo(me.areaid, 7774, 5220);
}
else
{
NTM_MoveTo(me.areaid, 7810, 5202);
NTA_ClearPosition(25, true, 2);
NTM_MoveTo(me.areaid, 7774, 5180);
NTA_ClearPosition(25, true, 2);
NTM_MoveTo(me.areaid, 7785, 5153);
NTA_ClearPosition(25, true, 2);
NTM_MoveTo(me.areaid, 7809, 5154);
NTA_ClearPosition(60, true, 2);
if(me.classid == NTC_CHAR_CLASS_PALADIN)
NTM_MoveTo(me.areaid, 7773, 5178);
else
NTM_MoveTo(me.areaid, 7788, 5192);
}
for(n = 0 ; n < 10 ; n++)
{
NTC_Delay(200);
if(NTConfig_Teleport)
{
NTC_SwapWeapons(0)
}
if(NTA_KillMonster(_monstername))
{
NTA_ClearPosition(40);
NTSI_PickItems();
if(NTConfig_Teleport)
{
NTC_SwapWeapons(1)
}
NTP_DoPrecast(false);
return NTM_MoveTo(me.areaid, 7792, 5291);
}
}
}
return false;
}
function NT_OpenVenomSealInt(type)
{
var i, n;
var _monstername = GetLocaleString(2853);
var _attackpos = [7835, 5280, 7835, 5300, 7855, 5300, 7855, 5280];
for(i = 0 ; i < _attackpos.length ; i += 2)
{
NTM_MoveTo(me.areaid, _attackpos[i], _attackpos[i+1]);
NTA_ClearPosition(25, true, 2);
}
NTM_MoveTo(me.areaid, 7843, 5292);
NTA_ClearPosition(40, true, 2);
for(i = 0 ; i < 3 ; i++)
{
if(type == 1)
{
NTM_MoveTo(me.areaid, 7871, 5293);
NTA_ClearPosition(25, true, 2);
NTM_MoveTo(me.areaid, 7893, 5307);
NTA_ClearPosition(25, true, 2);
NTM_MoveTo(me.areaid, 7912, 5280);
NTA_ClearPosition(25, true, 2);
NTM_MoveTo(me.areaid, 7931, 5293);
NTA_ClearPosition(25, true, 2);
NTM_MoveTo(me.areaid, 7908, 5293);
NTA_ClearPosition(60, true, 2);
if(me.classid == NTC_CHAR_CLASS_PALADIN)
NTM_MoveTo(me.areaid, 7892, 5298);
}
else
{
NTM_MoveTo(me.areaid, 7893, 5274);
NTA_ClearPosition(25, true, 2);
NTM_MoveTo(me.areaid, 7927, 5280);
NTA_ClearPosition(25, true, 2);
NTM_MoveTo(me.areaid, 7930, 5308);
NTA_ClearPosition(25, true, 2);
NTM_MoveTo(me.areaid, 7929, 5294);
NTA_ClearPosition(60, true, 2);
if(me.classid == NTC_CHAR_CLASS_PALADIN)
NTM_MoveTo(me.areaid, 7927, 5275);
}
for(n = 0 ; n < 10 ; n++)
{
NTC_Delay(200);
if(NTConfig_Teleport)
{
NTC_SwapWeapons(0)
}
if(NTA_KillMonster(_monstername))
{
NTSI_PickItems();
NTA_ClearPosition(40, true, 2);
}
if(NTConfig_Teleport)
{
NTC_SwapWeapons(1)
}
if(NTC_PutSkill(124, NTC_HAND_RIGHT))
NTC_PingDelay(1000);
}
return true;
}
return false;
}
function NT_GetLeader(_name)
{
_player = GetPlayerUnit();
if(_player)
{
while(_player.GetNext())
{
if(_player.name == _name)
{ return _player; }
}
}
}
}
[Only registered and activated users can see links. Click Here To Register...]Quote:
e2:
und weiter geht die crashtour ;D