Werde dann mal nen bischen dran rumspielen, da mir das sonst zu lange ist ;)
aber danke jetzt weiß ich wo ich das einstellen und fixen kann
aber danke jetzt weiß ich wo ich das einstellen und fixen kann
//###################################################################
//###########################Einstellungen###########################
//###################################################################
var LeaderAccountName = "LeaderAccountName";
var LeaderName = "LeaderName";
var GamePassword = "GamePassword";
var JoinGameAgain = false; // wenn der Bot nach chicken oder disconnect ins selbe Spiel nochmal gehen soll, auf true stellen
var UseCDKeyChangeTrick = false; // Wenn der LeechBot mehrere CD Keys nutzen soll, dann auf true stellen.
var JoinRandomChannel = false;
var JoinChannelInChat = "OP MyBaal";
var FirstJoinMessage = ""; // Soll der Leechbot etwas sagen, wenn er in den Chat kommt, dann hier eintragen
var ChatMessageAfterGame = ""; // Soll der Leechbot etwas sagen, wenn er aus dem Spiel kommt, dann hier eintragen
//###################################################################
//##############################Delays###############################
//###################################################################
var GameMinLength = 180000;
// 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 = 1000;
var CreateGameTimeout = 15000;
var WaitInLineTimeout = 15000;
var CharacterSelectDelay = 1000;
var LoginDelay = 1000;
var ClickDelay = 500;
var TextDelay = 500;
var ClickDelayRandom = 500;
var TextDelayRandom = 500;
var GameDoesNotExistDelayMin = 600000;
var GameDoesNotExistDelayMax = 900000;
var GameDoesNotExistTimeout = 30000;
var WaitBeforeEnterChatMin = 1000;
var WaitBeforeEnterChatMax = 2000;
var WaitInChatBeforeActionsMin = 2000;
var WaitInChatBeforeActionsMax = 3000;
//###################################################################
//###################################################################
//###############DO NOT CHANGE ANYTHING BELOW THIS###################
//###################################################################
//###################################################################
//D2NT Manager Command
const D2NT_MGR_LOADING = 1;
const D2NT_MGR_READY = 2;
const D2NT_MGR_LOGIN = 3;
const D2NT_MGR_CREATE_GAME = 4;
const D2NT_MGR_INGAME = 5;
const D2NT_MGR_RESTART = 6;
const D2NT_MGR_CHICKEN = 7;
const D2NT_MGR_PRINT_STATUS = 8;
const D2NT_MGR_PRINT_LOG = 9;
var LastGameMade = GetTickCount();
var LastGameStatus = 0;
var NextGameMake = 0;
var InGameAt = 0;
var ChatActionsDone = false;
var LastGameFailed = false;
var SayChatMsgAfterGame = true;
Include("libs/controlInfo.ntl");
var ControlData = new controlInfo();
var SameGame = "";
var OldGame = "";
var Game = "";
var Debug = false;
var JoinChatAfterGame = true;
function NTMain()
{
Delay(1000);
var _ingame = false;
ControlData.ClickDelay = ClickDelay;
ControlData.TextDelay = TextDelay;
ControlData.ClickDelayRandom = ClickDelayRandom;
ControlData.TextDelayRandom = TextDelayRandom;
while(1)
{
if(me.ingame)
{
OldGame = me.gamename;
if(!InGameAt)
InGameAt = GetTickCount();
if(!_ingame)
{
RunGC(); // run garbage collector between each game
if(Load("NTBot/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;
SayChatMsgAfterGame = true;
sendEventToOOG(D2NT_MGR_READY, "", 0);
}
locationAction(ControlData.getLocation());
Delay(500);
}
}
}
function locationAction(location)
{
var _randomChannel;
switch(location.id)
{
case 3: // Lobby Chat
sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name, 0);
if(!ChatActionsDone)
{
ChatActionsDone = true;
Delay(Random(WaitInChatBeforeActionsMin, WaitInChatBeforeActionsMax));
if(JoinRandomChannel || JoinChannelInChat != "")
{
SetStatusText("ÿc8Joining channel...");
Say("/join " + (JoinRandomChannel ? getRandomString(Random(3,10)) : JoinChannelInChat));
Delay(2000);
}
if(FirstJoinMessage)
{
Say(FirstJoinMessage);
Delay(1000);
}
}
if (SayChatMsgAfterGame == true)
{
if(ChatMessageAfterGame && OldGame != "")
Say(ChatMessageAfterGame);
SetStatusText("ÿc8Checking friendlist...");
Say("/f l");
SayChatMsgAfterGame = false;
Delay(1500);
}
Game = "";
if(chat = ControlData.get(ControlData.controls.lobby.chat.textBox.channelText))
{
var found_leader = false;
lines = chat.GetText();
for (var line_id = lines.length - 1; line_id > -1; line_id--)
{
if (found_leader) // useless... :/
break;
if (lines[line_id].substring(0,1) == " ")
continue;
// retrieving the whole message
var msg = lines[line_id].replace(/^\s+|\s+$/, "");
var msglines = 1;
while (lines[line_id+msglines] != undefined && lines[line_id+msglines].substring(0,2) == " ")
{
msg += " " + lines[line_id+msglines].replace(/^\s+|\s+$/, "");
msglines++;
}
// checking if the msg is a friendly whisper
if (msg.toLowerCase().lastIndexOf(LeaderName.toLowerCase() + " (*" + LeaderAccountName.toLowerCase() + ")") > -1)
{
var regGameNameWhispered=/^.*(game|partie|spiel|partita|partida).*(nomm[^\s]*|called|chiamata)\s*([\w\s-]*\w)\s*\.\s*$/gi;
if (msg.match(regGameNameWhispered))
Game = msg.replace(regGameNameWhispered, "$3");
if (Game != "")
{
found_leader = true;
break;
}
}
// checking if the msg is from the friend list
if (msg.toLowerCase().lastIndexOf(": " + LeaderAccountName.toLowerCase() + ",") > -1)
{
found_leader = true;
var regOffline=/^.*(offline|desconectado).*$/gi;
var regInChat=/^.*(channel|canale?)\s*([\w\s-]*\w)\.?\s*$/gi;
var regGameName=/^.*(game|partie|spiel|partita|partida)\s*([\w\s-]*\w)\s*\(priv[^\)]*\)\.\s*$/gi;
if (msg.match(regOffline))
SetStatusText("ÿc8Leader is currently offline.");
else if (msg.match(regInChat))
SetStatusText("ÿc8Waiting for leader to create a game.");
else if (msg.match(regGameName))
Game = msg.replace(regGameName, "$2");
break;
}
}
if (found_leader == false)
{
DebugInOOG("I couldn\'t find the leader in my friend list!");
SetStatusText("ÿc8Leader not found.");
}
if (Game != "")
{
DebugInOOG('Leader is in the game "' + Game + '"');
//ControlData.click(ControlData.controls.lobby.button.join);
//Delay(100);
if(!JoinGameAgain)
{
if (Game != SameGame)
{
SetStatusText("ÿc8Joining Game: " + Game);
if (UseCDKeyChangeTrick)
{
sendEventToOOG(D2NT_MGR_CREATE_GAME, location.name, 0);
Delay(1000);
}
ControlData.click(ControlData.controls.lobby.button.join);
Delay (200);
}
else
SetStatusText("ÿc8Waiting for next game...");
}
else
{
SetStatusText("ÿc8Joining Game: " + Game);
if (UseCDKeyChangeTrick)
{
sendEventToOOG(D2NT_MGR_CREATE_GAME, location.name, 0);
Delay(1000);
}
ControlData.click(ControlData.controls.lobby.button.join);
Delay (200);
}
}
}
else
{
DebugInOOG("I can\'t read the chat!");
}
if(Game != "")
SameGame = Game;
break;
case 1: // Lobby
if(location.id == 1 && JoinChatAfterGame)
{
Delay(Random(WaitBeforeEnterChatMin, WaitBeforeEnterChatMax));
ControlData.click(ControlData.controls.lobby.button.enterChat);
break;
}
break;
case 2: // Waiting In Line
if(GetTickCount()-LastGameMade > WaitInLineTimeout)
ControlData.click(ControlData.controls.lobby.inLine.button.cancel);
break;
case 4: // Create Game
if(!ControlData.get(ControlData.controls.lobby.create.editBox.gameName))
{
ControlData.click(ControlData.controls.lobby.button.join);
Delay (500);
ControlData.click(ControlData.controls.lobby.button.create);
Delay (500);
break;
}
sendEventToOOG(D2NT_MGR_CREATE_GAME, location.name, 0);
locationTimeout(5000, location);
LastGameMade = GetTickCount();
LastGameStatus = 1; // pending creation
break;
case 5: // Join Game
if (Game)
{
ControlData.setText( ControlData.controls.lobby.join.editBox.gameName, Game);
Delay (100);
ControlData.setText( ControlData.controls.lobby.join.editBox.password, GamePassword);
Delay (100);
ControlData.click(ControlData.controls.lobby.join.button.joinGame);
RunGC(); // run garbage collector between each game
locationTimeout(5000, location);
LastGameStatus = 1; // pending join
}
else
{
DebugInOOG("No game to join : cancelling");
me.Cancel(1);
Delay(1000);
}
break;
case 6: // Ladder
break;
case 7: // Channel List
break;
case 8: // Main Menu
if(ControlData.getCurrentRealmIndex() == me.gatewayid)
{
outputGameLength();
ControlData.click(ControlData.gameTypes[me.playtype]);
}
else
ControlData.click(ControlData.controls.mainMenu.button.gateway);
break;
case 9: // Login
sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name, 0);
Delay(LoginDelay);
ControlData.setText(ControlData.controls.login.editBox.accountName, me.account);
sendEventToOOG(D2NT_MGR_LOGIN, location.name, 0);
locationTimeout(5000, location);
break;
case 10: // Login Error (this is a fatal error, so stop)
sendEventToOOG(D2NT_MGR_RESTART, location.name, 10);
Delay(3500);
break;
case 11: // Unable To Connect
timeoutDelay(UnableToConnectRetry*60*1000, location)
ControlData.click(ControlData.controls.login.unableToConnect.button.ok);
break;
case 12: // Character Select
var _time, _control;
sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name, 0);
for(_time = 0 ; _time < CharacterScreenTimeout ; _time += 500)
{
_control = ControlData.get(ControlData.controls.characterSelect.textBox.characterInfo[me.charloc]);
if(_control && _control.GetText() != undefined)
break;
Delay(500);
}
if(_time < CharacterScreenTimeout)
{
Delay(CharacterSelectDelay);
ControlData.click(ControlData.controls.characterSelect.textBox.characters[me.charloc], 0, 0, 1);
ControlData.click(ControlData.controls.characterSelect.textBox.characterInfo[me.charloc], 0, 0, 1);
// reset last game made, so it doesnt make a game immediately
InGameAt = 0;
setNextGameMake();
}
else
{
ControlData.click(ControlData.controls.characterSelect.button.exit);
timeoutDelay(RealmDownRetry*60*1000, location);
}
break;
case 13: // Realm Down - Character Select screen
ControlData.click(ControlData.controls.characterSelect.button.exit);
timeoutDelay(RealmDownRetry*60*1000, location);
break;
case 14: // Character Select - Disconnected
timeoutDelay(DisconnectedRetry*60*1000, location);
ControlData.click(ControlData.controls.characterSelect.disconnected.button.ok);
break;
case 15: // New Character
break;
case 16: // Character Select - Please Wait popup
if(!locationTimeout(PleaseWaitTimeout, location))
ControlData.click(ControlData.controls.characterSelect.pleaseWait.button.cancel);
break;
case 17: // Lobby - Lost Connection - just click okay, since we're toast anyway
ControlData.click(ControlData.controls.lobby.lostConnection.button.ok);
break;
case 18: // D2 Splash
ControlData.click(ControlData.controls.d2Splash.textBox.copyright);
break;
case 19: // Login - Cdkey In Use
timeoutDelay(CdKeyInUseRetry*60*1000, location);
ControlData.click(ControlData.controls.login.cdkeyInUse.button.ok);
break;
case 20: // Single Player - Select Difficulty
ControlData.click(ControlData.singlePlayerDifficulties[me.diff]);
break;
case 21: // Main Menu - Connecting
if(!locationTimeout(ConnectingToBnetTimeout, location))
ControlData.click(ControlData.controls.mainMenu.connecting.button.cancel);
break;
case 22: // Login - Invalid Cdkey (classic or xpac)
sendEventToOOG(D2NT_MGR_RESTART, location.name, 3600);
Delay(3500);
break;
case 23: // Character Select - Connecting
if(!locationTimeout(CharacterScreenTimeout, location))
ControlData.click(ControlData.controls.characterSelect.button.exit);
break;
case 24: // Server Down - not much to do but wait..
break;
case 25: // Lobby - Please Wait
if(!locationTimeout(PleaseWaitTimeout, location))
ControlData.click(ControlData.controls.lobby.pleaseWait.button.cancel);
break;
case 26: // Lobby - Game Name Exists
sendEventToOOG(D2NT_MGR_PRINT_LOG, "yE00000Game already exists", 0);
InGameAt = 0;
LastGameStatus = 0;
setNextGameMake();
locationTimeout(15000, location);
break;
case 27: // Gateway Select
ControlData.clickRealmEntry(me.gatewayid);
ControlData.click(ControlData.controls.gateway.button.ok);
break;
case 28: // Lobby - Game Does Not Exist
InGameAt = Random(GameDoesNotExistDelayMin, GameDoesNotExistDelayMax);
LastGameStatus = 0;
setNextGameMake();
locationTimeout(GameDoesNotExistTimeout, location);
break;
default:
DebugInOOG("Unhandled location : "+location.id);
break;
}
//DebugInOOG("Location : "+location.id);
}
function sendEventToOOG(locationId, statusString, pendingTime)
{
return SendCopyData("D2NT Manager", null, (locationId<<16)|pendingTime, statusString);
}
function setNextGameMake()
{
LastGameMade = GetTickCount();
NextGameMake = LastGameMade + CreateGameThreshold + Random(0-CreateGameThresholdRandom, CreateGameThresholdRandom) + InGameAt;
InGameAt = 0;
ChatActionsDone = false;
}
function outputGameLength()
{
if(InGameAt)
{
duration = GetTickCount() - InGameAt;
InGameAt = (duration < GameMinLength ? GameMinLength - duration : 0);
}
}
function locationTimeout(time, location)
{
endtime = GetTickCount() + time;
while(ControlData.getLocation().id == location.id && endtime > GetTickCount())
{
sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name + " (" + parseInt((endtime-GetTickCount())/1000) + "s)", 0);
Delay(500);
}
return (ControlData.getLocation().id != location.id);
}
function timeoutDelay(time, location)
{
endtime = GetTickCount() + time;
while(endtime > GetTickCount())
{
sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name + " (" + parseInt((endtime-GetTickCount())/1000) + "s)", 0);
Delay(1000);
}
}
function getRandomString(_length)
{
_retString = "";
_charSet = "0123456789abcdefghijklmnopqrstuvwxyz";
while(_length--)
{
_retString += _charSet.charAt(Random(0, _charSet.length-1));
Delay(1);
}
return _retString;
}
function DebugInOOG(logString)
{
if (Debug)
return SendCopyData("D2NT Manager", null, 9<<16, "-- Debug : " + logString);
else
return false;
}
Wie auch immer das bei dir dahin gekommen ist. Oo Normal müsste da stehen:Quote:
Ich bekomme nen fehler
[Only registered and activated users can see links. Click Here To Register...]
Zeile 735: control = this.get( controlData.controls.mainMenu.button.gateway );
control = this.get( this.controls.mainMenu.button.gateway );
case 5: // Join Game
if (Game)
{
ControlData.setText( ControlData.controls.lobby.join.editBox.gameName, Game);
Delay ([COLOR="Red"]100[/COLOR]);
ControlData.setText( ControlData.controls.lobby.join.editBox.password, GamePassword);
Delay (100);
ControlData.click(ControlData.controls.lobby.join.button.joinGame);
RunGC(); // run garbage collector between each game
locationTimeout(5000, location);
LastGameStatus = 1; // pending join
}
while(NTC_InMyParty(NTConfig_Leader) [COLOR="Red"]&& NTC_FindUnit(NTC_UNIT_MONSTER, 543)[/COLOR])
Ich verweise mal still und heimlich auf diesen [Only registered and activated users can see links. Click Here To Register...].Quote:
ok vielen dank