|
You last visited: Today at 21:43
Advertisement
[Release] Muddy's D2NT
Discussion on [Release] Muddy's D2NT within the Diablo 2 Programming forum part of the Diablo 2 category.
09/03/2011, 20:13
|
#3181
|
elite*gold: 0
Join Date: Apr 2010
Posts: 22
Received Thanks: 1
|
Code:
/**
* This file was modified by [email] [/email] and [email] [/email]
* Check the programming section for updates and further scripts
* Last Update: 15:34 20.08.2011
*/
var DelayedJoinChars = new Array();
//###################################################################
//##############################Settings#############################
//###################################################################
var LeaderAccountName = "Obelixx";
var LeaderName = "Hummer-trummer";
var GamePassword = "";
var JoinGameAgain = true; // Set to true to re-enter the same game after chicken or disconnect.
var UseCDKeyChangeTrick = false; // Set to true to use multiple CD Keys
var JoinRandomChannel = false;
var JoinChannelInChat = "OP Snowbaal";
var FirstJoinMessage = ""; // Message to post right after joining chat. Set to "" not to post any message.
var ChatMessageAfterGame = ""; // Message to post when joining chta after a game. Set to "" not to post any message.
// If multiple leechers are to join the same game, they should do it slightly time shifted in order to avoid join bugs.
// Enter the names of your accounts OR chars below:
DelayedJoinChars.push("LeecherOne", "LeecherTwo", "LeecherThree");
//###################################################################
//##############################Delays###############################
//###################################################################
var GameMinLength = 180000;
// realm delays (minutes)
var UnableToConnectRetry = 2;
var RealmDownRetry = 60;
var DisconnectedRetry = 2;
var CdKeyInUseRetry = 2;
// interface delays (milliseconds)
var MultipleLeecherJoinDelay = 1000;
var JoinDelay = 10;
var ConnectingToBnetTimeout = 20000;
var CharacterScreenTimeout = 10000;
var PleaseWaitTimeout = 10000;
var CreateGameThreshold = 10000;
var CreateGameThresholdRandom = 1000;
var CreateGameTimeout = 15000;
var WaitInLineTimeout = 15000;
var CharacterSelectDelay = 5000
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/MWBotGame.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, _leaderFound, _lines, _msg, _msgLines, _lineIndex, _chat, _regGameNameWhispered, _regOffline, _regInChat, _regGameName;;
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)
{
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))
{
_leaderFound = false;
_lines = _chat.GetText();
for(_lineIndex = _lines.length - 1; _lineIndex > -1; _lineIndex--)
{
if(_leaderFound) // useless... :/
break;
if(_lines[_lineIndex].substring(0,1) == " ")
continue;
// retrieving the whole message
_msg = _lines[_lineIndex].replace(/^\s+|\s+$/, "");
_msgLines = 1;
while(_lines[_lineIndex + _msgLines] != undefined && _lines[_lineIndex+_msgLines].substring(0,2) == " ")
{
_msg += " " + _lines[_lineIndex + _msgLines].replace(/^\s+|\s+$/, "");
_msgLines++;
}
// checking if the _msg is a friendly whisper
if(_msg.toLowerCase().lastIndexOf(LeaderName.toLowerCase() + " (*" + LeaderAccountName.toLowerCase() + ")") > -1)
{
_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 != "")
{
_leaderFound = true;
break;
}
}
// checking if the _msg is from the friend list
if(_msg.toLowerCase().lastIndexOf(": " + LeaderAccountName.toLowerCase() + ",") > -1)
{
_leaderFound = true;
_regOffline = /^.*(offline|desconectado).*$/gi;
_regInChat = /^.*(channel|canale?)\s*([\w\s-]*\w)\.?\s*$/gi;
_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(!_leaderFound)
{
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);
for(var i = 0; i < DelayedJoinChars.length; i++)
{
if(me.charname.toLowerCase() == DelayedJoinChars[i].toLowerCase() || me.account.toLowerCase() == DelayedJoinChars[i].toLowerCase())
{
Delay(MultipleLeecherJoinDelay * i);
break;
}
}
Delay(JoinDelay);
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;
}
Botleecher.ntj
und hier:
/**
* This file was modified by [email] [/email]
* Check the programming section for updates and further scripts
* Last Update: 17:46 17.08.2011
*
* Hotkey Description
*
* Pause/Break Pauses the current bot script.
* Page up (PgUp) Skips the current bot script.
* Page down (PgDn) Repeats the previous bot script
* Home (Pos1) Shows your current coordinates and areaid.
* End Shows current ping in status text bar.
* Insert (Ins) Logs all items on your char to either XML or TXT.
* Delete (Del) Exits the game. NOTE: Always use this key to leave a game!
* Backspace Force trigger auto mule. NOTE: Won't work unless auto mule is actually activated for the current char.
*/
Include("NTBot/char_configs/MWConfig_GlobalSettings.ntl");
var NTConfig_CastStatic;
function NT_LoadConfig()
{
MW_LoadGlobalSettings();
//------------------------------------------------------------------------------
//
// Run Configuration
//
//------------------------------------------------------------------------------
// Use the following syntax for activating botscripts: MWConfig_Script.push([<ScriptName>, <Script runtime in minutes (0 is infinite)>]);
// ***************** Current schedule ******************
MWConfig_Script.push(["NTBaalLeechFight.ntj", 10]); NTConfig_KillBaal = true; MWConfig_DoBaalPreAttack = true; MWConfig_EnterUnsafeTP = true; NTConfig_Leader = "Hummer-trummer";
//*****************************************************
//------------------------------------------------------------------------------
// Available Scripts
//------------------------------------------------------------------------------
/* NOTE:
// The scripts below are actually commented out; to add a script, copy one of the lines below and add it to the current schedule above. ;)
// You should also get yourself a decent editor that supports syntax highlighting for JavaScript, I'd recommend Notepad++. ([url=http://notepad-plus-plus.org/download/]Notepad++ v5.9.3 - Current Version[/url])
// *********************** Act I ***********************
// MWConfig_Script.push(["NTMausoleum.ntj", 10]); MWConfig_ClearPathSpectypes.Mausoleum = 0; MWConfig_ClearAreaSpectypes.Mausoleum = 0x01; NTConfig_KillBloodRaven = true;
// MWConfig_Script.push(["NTTristram.ntj", 10]); NTConfig_KillRakanishu = true;
// MWConfig_Script.push(["NTHole.ntj", 10]); MWConfig_ClearPathSpectypes.Hole = 0; MWConfig_ClearAreaSpectypes.Hole = 0x01; NTConfig_ClearHoleLevel1 = 1; // 0 : don't clear, 1 : clear path only, 2 : clear all
// MWConfig_Script.push(["NTTreehead.ntj", 10]);
// MWConfig_Script.push(["MWColdcrow.ntj", 10]); MWConfig_ClearCaveMode = 0; // 0: Only kill coldcrow; 1: Clear Cave Level 1; 2: Clear both Cave Level 1 & 2
// MWConfig_Script.push(["NTCountess.ntj", 5]); MWConfig_ClearPathSpectypes.Countess = 0; MWConfig_ClearAreaSpectypes.Countess = 0;
// MWConfig_Script.push(["NTPit.ntj", 10]); MWConfig_ClearPathSpectypes.Pit = 0; MWConfig_ClearAreaSpectypes.Pit = 0x01; NTConfig_ClearPitLevel1 = 2; // 0 : don't clear, 1 : clear path only, 2 : clear all
// MWConfig_Script.push(["NTAndariel.ntj", 10]);
// *********************** Act II **********************
// MWConfig_Script.push(["NTRadament.ntj", 10]); MWConfig_ClearPathSpectypes.Radament = 0;
// MWConfig_Script.push(["MWMaggotsLair.ntj", 10]); MWConfig_ClearPathSpectypes.MaggotsLair = 0; MWConfig_ClearAreaSpectypes.MaggotsLair = 0x01;
// MWConfig_Script.push(["NTAncientTunnels.ntj", 10]); MWConfig_ClearPathSpectypes.AncientTunnels = 0; MWConfig_ClearAreaSpectypes.AncientTunnels = 0x01;
// MWConfig_Script.push(["NTSummoner.ntj", 5]); NTConfig_KillFireEye = false; MWConfig_ClearPathSpectypes.Summoner = 0;
// MWConfig_Script.push(["NTDuriel.ntj", 10]); MWConfig_ClearPathSpectypes.Duriel = 0;
// ********************** Act III **********************
MWConfig_Script.push(["MWFlayerJungle.ntj", 10]); MWConfig_ClearAreaSpectypes.FlayerJungle = 0x01;
MWConfig_Script.push(["MWKurastSewers.ntj", 5]); MWConfig_ClearPathSpectypes.KurastSewers = 0;
MWConfig_Script.push(["MWKurastTemples.ntj", 5]) MWConfig_ClearPathSpectypes.KurastTemples = 0; MWConfig_ClearAreaSpectypes.KurastTemples = 0x01;
// MWConfig_Script.push(["NTTravincal.ntj", 5]);
// MWConfig_Script.push(["NTMephisto.ntj", 5]); MWConfig_OpenMephistoChest = true; MWConfig_MephistoClearArea = true;
// *********************** Act IV **********************
// MWConfig_Script.push(["NTIzual.ntj", 5]); MWConfig_ClearPathSpectypes.Izual = 0;
// MWConfig_Script.push(["MWRiverOfFlame.ntj", 10]); MWConfig_ClearAreaSpectypes.RiverOfFlame = 0x01;
// MWConfig_Script.push(["NTHephasto.ntj", 10]); MWConfig_ClearPathSpectypes.Hephasto = 0;
// MWConfig_Script.push(["NTDiablo.ntj", 10]); MWConfig_KillFullInfectorMob = true; MWConfig_StartAtStar = false; MWConfig_IgnoreSealOpeningErrors = false; MWConfig_FastDia = true;
// *********************** Act V ***********************
// MWConfig_Script.push(["MWAbbadon.ntj", 10]); MWConfig_ClearPathSpectypes.Abbadon = 0; MWConfig_ClearAreaSpectypes.Abbadon = 0x01;
// MWConfig_Script.push(["MWPitOfAcheron.ntj", 10]); MWConfig_ClearPathSpectypes.PitOfAcheron = 0; MWConfig_ClearAreaSpectypes.PitOfAcheron = 0x01;
// MWConfig_Script.push(["MWInfernalPit.ntj", 10]); MWConfig_ClearPathSpectypes.InfernalPit = 0; MWConfig_ClearAreaSpectypes.InfernalPit = 0x01;
// MWConfig_Script.push(["MWHallsOfPain.ntj", 15]); MWConfig_ClearAreaSpectypes.HallsOfPain = 0x01; MWConfig_ClearHallsOfAnguish = true;
// MWConfig_Script.push(["NTPindleskin.ntj", 5]); NTConfig_NihlathakExtension = false; MWConfig_SkipOnTombVipers = true;
// MWConfig_Script.push(["NTEldritch.ntj", 5]); NTConfig_ShenkExtension = true;
// MWConfig_Script.push(["NTThreshSocket.ntj", 5]); MWConfig_ClearPathSpectypes.ThreshSocket = 0;
// MWConfig_Script.push(["NTFrozenRiver.ntj", 10]); MWConfig_ClearPathSpectypes.FrozenRiver = 0; MWConfig_ClearAreaSpectypes.FrozenRiver = 0x01;
// MWConfig_Script.push(["NTGlacialTrail.ntj", 10]); MWConfig_ClearPathSpectypes.GlacialTrail = 0; MWConfig_ClearAreaSpectypes.GlacialTrail = 0x01;
// MWConfig_Script.push(["NTIcyCellar.ntj", 5]); MWConfig_ClearPathSpectypes.IcyCellar = 0; MWConfig_ClearAreaSpectypes.IcyCellar = 0x01;
// MWConfig_Script.push(["NTNihlathak.ntj", 5]); MWConfig_ClearPathSpectypes.Nihlathak = 0; NTConfig_PindleskinExtension = false; MWConfig_SkipOnTombVipers = true;
// MWConfig_Script.push(["MWWorldstoneKeep.ntj", 10]); MWConfig_ClearAreaSpectypes.WorldstoneKeep = 0x01; MWConfig_SkipLevelOnWitches = true; MWConfig_SkipLevelOnSouls = false; MWConfig_SkipLevelOnDeathLords = true;
// MWConfig_Script.push(["NTBaal.ntj", 10]); NTConfig_KillBaal = true; MWConfig_SkipBaalOnDolls = true; MWConfig_SkipBaalOnSouls = false; MWConfig_DoBaalPreAttack = true;
// *********************** Misc ************************
MWConfig_Script.push(["MWAuraStack.ntj", 10]); MWConfig_StackRepetitions = 100;
MWConfig_Script.push(["MWSuperChests.ntj", 20]); MWConfig_SuperChestClearAreaRadius = 10; MWConfig_SuperChestAreas = ["Cave Level 2", "Mausoleum", "Hole Level 2", "Pit Level 2", "Sewers Level 3", "Halls of the Dead Level 2", "Stony Tomb Level 2", "Maggot's Lair Level 3", "Ancient Tunnels", "Tal Rasha's Tomb", "Arachnid Lair", "Swampy Pit Level 3", "Flayer Dungeon", "Sewers Level 2", "Abbadon", "Pit of Acheron", "Drifter Cavern", "Infernal Pit", "Icy Cellar", "Halls of Pain"];
MWConfig_Script.push(["MWRush.ntj", 0]); MWConfig_IsRusher = true; MWConfig_ActiveQuestersName = ""; MWConfig_NumberOfCharsToRush = 1; MWConfig_GetHoradricCubesInNorm = true; MWConfig_QuestSchedule = ["A4Q1", "A5Q1"]; MWConfig_RushActs = [1, 2, 3, 4, 5];
MWConfig_Script.push(["MWWaypointCatcher.ntj", 0]); MWConfig_WaypointCatcherActs = [1, 2, 3, 4, 5]; MWConfig_TPWaypoints = true; MWConfig_SkipHallsOfPain = true; MWConfig_ClearWaypointPaths = false;
MWConfig_Script.push(["MWIdleMode.ntj", 0]); MWConfig_IdleModeRuntime = 5; // Runtime in Minutes
MWConfig_Script.push(["NTCows.ntj", 10]);
MWConfig_Script.push(["MWBloodyRejuvs.ntj", 10]);
MWConfig_Script.push(["MWOrganHarvest.ntj", 10]); MWConfig_EnterInvalidUberPortals = true; MWConfig_PauseOnLackOfKeys = false; MWConfig_IntendedUberPortal = 0; // Matron's Den: 133; Forgotten Sands: 134; Furnace Of Pain: 135;
MWConfig_Script.push(["MWUberTristram.ntj", 10]); MWConfig_PauseOnLackOfOrgans = false;
MWConfig_Script.push(["MWAnyasBargain.ntj", 10]); MWConfig_ShoppingMinGold = 500000; MWConfig_ShoppingAttempts = 200;
// ************ Leech and friends by lanara ************
MWConfig_Script.push(["NTDiabloLeechFight.ntj", 10]); MWConfig_StartAtStar = true; MWConfig_EnterUnsafeTP = true; NTConfig_PreBuff = true; NTConfig_Leader = "Hummer-Trummer"; // If the Leecher should go to a WP and buff up before he goes into the TP. (Needs River of Flame WP for Diablo and Frigid Highlands WP for Baal)
MWConfig_Script.push(["NTBaalLeech.ntj", 10]); NTConfig_KillBaal = true; MWConfig_EnterUnsafeTP = true; NTConfig_Leader = "Hummer-Trummer";
MWConfig_Script.push(["NTBaalLeechFight.ntj", 10]); NTConfig_KillBaal = true; MWConfig_DoBaalPreAttack = true; MWConfig_EnterUnsafeTP = true; NTConfig_Leader = "Hummer-Trummer";
*/
//------------------------------------------------------------------------------
// Misc Configuration
//------------------------------------------------------------------------------
NTConfig_SkipHealLife = 80; // If you have more than this percent of life, you won't go to a healer.
NTConfig_SkipHealMana = 70; // If you have more than this percent of mana, you won't go to a healer
NTConfig_UseMerc = true; // Set to true if you use a mercenary, will revive merc at a reviver npc.
MWConfig_ResetArmor = false; // Set to true to reset your Enigma if Teleport skill is missing. WARNING: Activating this feature may - though not likely will - result in the loss of your enigma. Use at your own risk!
//------------------------------------------------------------------------------
// Potion Configuration
//------------------------------------------------------------------------------
NTConfig_LifeThresh = 70; // Drink a normal potion if under this percent of life.
NTConfig_LifeRejuvThresh = 50; // Drink a rejuvenation potion if under this percent of life.
NTConfig_ManaThresh = 50; // Drink a normal potion if under this percent of mana.
NTConfig_ManaRejuvThresh = 15; // Drink a rejuvenation potion if under this percent of mana.
NTConfig_MercLifeThresh = 50; // This is the threshold to use a life potion on your merc in percent.
NTConfig_MercRejuvThresh = 30; // This is the threshold to use a rejuv potion on your merc in percent.
//------------------------------------------------------------------------------
// Chicken Configuration
//------------------------------------------------------------------------------
// This is your chicken life. If you go below this threshhold, your char will exit the game. You can either enter a percentage (1-100), an absolute threshold (>100) or 0 to deactivate life chicken.
NTConfig_LifeChicken = 20;
// This is your chicken mana. If you go below this threshhold, your char will exit the game. You can either enter a percentage (1-100), an absolute threshold (>100) or 0 to deactivate mana chicken.
NTConfig_ManaChicken = 0;
// This is your merc's chicken life in percent. If your merc goes below this threshhold, your char will exit the game.
NTConfig_MercChicken = 0;
// Whether or not to disable chicken when you pause the bot.
MWConfig_DisableChickenOnPause = true;
//------------------------------------------------------------------------------
// Inventory Configuration
//------------------------------------------------------------------------------
// Each number represents a slot in your inventory.
// Set to 0 if the slot and its content must not be touched.
// Set to 1 to allow access to this slot.
// Set to 2 to select the slot that is used for storing keys. (if keys are kept at another slot, your char will try to move them)
NTConfig_Columns[0] = [0,0,0,0,0,0,0,0,0,0];
NTConfig_Columns[1] = [0,0,0,0,0,0,0,0,0,0];
NTConfig_Columns[2] = [0,0,0,0,0,0,0,0,0,0];
NTConfig_Columns[3] = [0,0,0,0,0,0,0,0,0,0];
// Number of free columns. If less full columns are free stashing is set. Call SetFreeColumns(NTConfig_Columns) to always stash right away (recommended).
NTConfig_FreeSpace = SetFreeColumns(NTConfig_Columns);
// Maximum gold amount carried before going to stash.
NTConfig_MinGoldToStash = 100000;
// Set to true if your char is supposed to carry, buy and pick up keys. You do not need to add keys to your .nip files, they will be picked up anyway if this is set to true.
MWConfig_CarryKeys = true;
//------------------------------------------------------------------------------
// Belt Configuration
//------------------------------------------------------------------------------
// Available types : "hp" = health, "mp" = mana, "rv" = rejuvenation.
// Define how many columns are used for each potion type.
MWConfig_BeltColType["hp"].Columns = 1;
MWConfig_BeltColType["mp"].Columns = 2;
MWConfig_BeltColType["rv"].Columns = 1;
// Define minimum number of potions per column. If the actual number of potions in a column is below this value, your char will visit a merchant when in town in order to buy potions.
MWConfig_BeltColType["hp"].MinPots = 3;
MWConfig_BeltColType["mp"].MinPots = 3;
// Visit Town and buy potions if your char lacks mana when trying to loot a corpse or teleport.
MWConfig_BuyPotionsOnLackOfMana = true;
// Set to true to replace low quality potions with higher quality potions that just dropped.
MWConfig_ReplaceLowQualityPotions = true;
//-----------------------------------------------------------------------------------
// NipFile Configuration
//-----------------------------------------------------------------------------------
NTConfig_NIPFilePath.push("private/normal.nip");
NTConfig_NIPFilePath.push("private/magic_rare.nip");
NTConfig_NIPFilePath.push("private/set.nip");
NTConfig_NIPFilePath.push("private/unique.nip");
NTConfig_NIPFilePath.push("private/craft.nip");
NTConfig_NIPFilePath.push("private/temp.nip");
//------------------------------------------------------------------------------
// Pickit Configuration
//------------------------------------------------------------------------------
// Radius to check for dropped items. NOTE: The maximum is at about ~75, entering higher values will not have any effect.
NTConfig_SnagRange = 70;
// Set to true to check for dropped items whenever you kill a monster. (Recommended value to avoid crashes: false)
MWConfig_PickItemsInstantly = false;
//------------------------------------------------------------------------------
// Chest Configuration
//------------------------------------------------------------------------------
// Select which containers shall be looted. 0: None; 1: Super Chests, 2: All
MWConfig_OpenContainerMode = 2;
// Set to true to check for dropped items right after opening a chest. NOTE: This will slow down your runs and therefore should definately be set to false when doing private games.
MWConfig_PickChestLootsInstantly = false;
// This is the range being checked for chests after clearing an area or room. NOTE: You should not set this too high, 30 is a good value.
MWConfig_OpenChestsRange = 30;
// If you do not like to open chests in a certain area, you can its areaid as an exception below. NOTE: All areaids can be found in "sdk\areas.txt".
// MWConfig_ChestExceptions.push(<areaid1>, <areaid2>, <areaidn>);
//------------------------------------------------------------------------------
// Cubing Configuration
//------------------------------------------------------------------------------
// Set to true to enable cubing and crafting. NOTE: The recipes are added in the global config by default. If you like to craft certain recipe only using this very char, add those recipes below.
NTConfig_Cubing = false;
//------------------------------------------------------------------------------
// General Configuration
//------------------------------------------------------------------------------
// Set to true to activate public mode. By activating public mode, your char will form a party, open TPs and do some chat outputs when running certain bot scripts.
NTConfig_PublicMode = true;
// Set to true to exit the game instantly if the game is public. This may happen sometimes due to an error pasting the password correctly.
MWConfig_ExitGameOnMissingPassword = false;
// Set to true to exit the game when another player expresses hostility towards you.
me.quitonhostile = false;
// This is the maximum time in seconds your char will remain in a single game. Set to 0 to stay in game infinitely.
me.maxgametime = 3000;
// This is the minimum time in seconds for your char to remain in a single game. Your char will not exit the game before this time elapsed.
me.mingametime = 0;
// Set to true to use Telekinesis to interact tih certain objects
MWConfig_UseTelekinesis = true;
//------------------------------------------------------------------------------
// Automule Configuration
//------------------------------------------------------------------------------
// Set to true to enable auto mule.
MWConfig_Automule.Activated = false;
// The maximum stash load in percent before auto mule is triggered.
MWConfig_Automule.MaxLoad = 95;
// Set to true to show your stash's current load whenever managing stash.
MWConfig_Automule.ShowCurrentLoad = true;
// Set to true to finish your current game before muling, otherwise the game is left right away in case your stash is full.
MWConfig_Automule.FinishGame = true;
// Define which items are not to be touched when muling.
MWConfig_Automule.DontMule.push("mule/dont_mule.nip");
MWConfig_Automule.DontMule.push("mule/gems.nip");
//------------------------------------------------------------------------------
// Shrine Configuration
//------------------------------------------------------------------------------
// Set to true to activate nearby shrines. Shrines will only be activated if it is actually useful.
MWConfig_ActivateNearbyShrines = true;
// If you would like to skip shrines in a certain area, you can its areaid as an exception below. NOTE: All areaids can be found in "sdk\areas.txt".
// MWConfig_ShrineExceptions.push(<areaid1>, <areaid2>, <areaidn>);
//------------------------------------------------------------------------------
// Precast Configuration
//------------------------------------------------------------------------------
// Your precast skills can be defined in the array below. NOTE: Battle Command, Battle Orders and Shout will be cast automatically. Constants for all skill ids can be found in "scripts\libs\common\MWSkills.ntl".
MWConfig_PrecastSkills = [MWS_SHIVER_ARMOR, MWS_ENCHANT];
// Set this to true if you would like to switch slots right after casting BC, BO and Shout. If set to false, your char will remain with the BO Slot until the whole precast procedure is done.
MWConfig_SwitchSlotsAfterBoPrecast = true;
//------------------------------------------------------------------------------
// Attack Configuration
//------------------------------------------------------------------------------
// Specify your attack skills below. NOTE: Constants for all skill ids can be found in "scripts\libs\common\MWSkills.ntl".
NTConfig_AttackSkill[0] = MWS_CHARGED_BOLT; // This skill is used once whenever attacking a new target. Set to -1 to deactivate.
NTConfig_AttackSkill[1] = MWS_LIGHTNING; // Primary skill to bosses.
NTConfig_AttackSkill[2] = -1; // Primary untimed skill to boss. Set to -1 to deactivate.
NTConfig_AttackSkill[3] = MWS_CHAIN_LIGHTNING; // Primary skill to others.
NTConfig_AttackSkill[4] = -1; // Primary untimed skill to others. Set to -1 to deactivate.
NTConfig_AttackSkill[5] = -1; // Secondary skill in case monster is immune to primary skill. Set to -1 to deactivate.
NTConfig_AttackSkill[6] = -1; // Secondary untimed skill. Set to -1 to deactivate.
NTConfig_AttackSkill[7] = -1; // Alternative untimed skill which is used if the target is immune to your untimed skill - mostly useful for FB/FO/Meteor sorcs or other sorcs that are using the same untimed skills. Set to -1 to deactivate.qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq
// Set to true if you want to clear area after killing boss. NOTE: This only affects a few botscripts.
NTConfig_ClearPosition = false;
// Set to true to clear area when killing a boss and the position is crowded by monsters. NOTE: Setting this to true may cause NTA_KillMonster() to fail way more often.
MWConfig_ClearBossPosition = false;
// This is the number of attacks to be performed before the the character tries to move to another position. Set to 0 not to reposition.
MWConfig_AttacksBeforeRepositioning = 50;
// Define a time limit for your attacks for each type of monster.
MWConfig_AttackTimeLimit[0] = 20; // Maximum time in seconds to attack a normal monster
MWConfig_AttackTimeLimit[1] = 120; // Maximum time in seconds to attack a super unique monster
MWConfig_AttackTimeLimit[2] = 30; // Maximum time in seconds to attack a champion
MWConfig_AttackTimeLimit[3] = 120; // Maximum time in seconds to attack a bosse
MWConfig_AttackTimeLimit[4] = 30; // Maximum time in seconds to attack a minion
// Define when a monster is considered immune by entering the index of one or more of your attack skills. As an example: [1, 3] means that a monster is considered immune if it is immune to both NTConfig_AttackSkill[1] and NTConfig_AttackSkill[3], whatever those may be.
MWConfig_CheckImmunitySkills = [0, 5];
// Select the behaviour of your character when encountering a monsters that is considered immune referring to the definition above.
// 0: Don't do anything. (D2NT default)
// 1: Get close to the monster, use static field if the monster is not immune to lightning.
// 2: Skip the monster.
// 3: Attack the monster using NTConfig_AttackSkill[8] and NTConfig_AttackSkill[9]
NTConfig_BehaviourOnImmuneMonster = 3;
NTConfig_AttackSkill[8] = MWS_STATIC_FIELD; // Skill to be used against user defined immunes.
// Always check if monsters are closing in and back off, in case they get too close. NOTE: You should at least have 105FCR in order to make this work smoothly.
MWConfig_KeepDistanceToMonsters = true;
// If you don't wish to evade monsters in a certain area, add it's areaid as an exception below. NOTE: All areaids can be found in "sdk\areas.txt".
// MWConfig_EvasionExceptions.push(<areaid1>, <areaid2>, <areaidn>);
// Select whether or not you'd like to swap slots right before killing a boss in order to benefit from some extra MF in your second slot.
// The first element can either be the classid of the target or its name (case insensitive), second element is the life threshold in percent.
//MWConfig_SlotSwapMonsters.push([156, 50]); // Andariel, 50%
//MWConfig_SlotSwapMonsters.push([211, 20]); // Duriel, 20%
//MWConfig_SlotSwapMonsters.push([242, 20]); // Mephisto, 20%
//MWConfig_SlotSwapMonsters.push([243, 20]); // Diablo, 20%
//MWConfig_SlotSwapMonsters.push([544, 15]); // Baal, 15%
// Check self safe in field (NOT in town). Set to 0 if you won't.
// 0x01 : Potion
// 0x02 : Poison
// 0x04 : Amplify Damage
// 0x08 : Weaken
// 0x10 : Iron Maiden
// 0x20 : Decrepify
// 0x40 : Lower Resist
NTConfig_CheckSelfSafe = 0;
// Check merc's safe in field (NOT in town). Set to 0 if you won't.
// 0x01 : Death
// 0x02 : Poison
// 0x04 : Amplify Damage
// 0x08 : Weaken
// 0x10 : Iron Maiden
// 0x20 : Decrepify
// 0x40 : Lower Resist
NTConfig_CheckMercSafe = 0x01;
// Cast Static Field until monster's HP lower below this percentage. Set to 100 not to use static field.
NTConfig_CastStatic = 60;
// Select the monsters you with to attack using static field. NOTE: If you do not add any monsters, static will be used against all monsters.
MWConfig_StaticTargets.push(156); // Andariel
MWConfig_StaticTargets.push(211); // Duriel
MWConfig_StaticTargets.push(242); // Mephisto
MWConfig_StaticTargets.push(243); // Diablo
MWConfig_StaticTargets.push(544); // Baal
MWConfig_StaticTargets.push(GetLocaleString(22500)); // Eldritch The Rectifier
MWConfig_StaticTargets.push(GetLocaleString(22435)); // Shenk The Overseer
}
charakter cfg
/**
* This file was modified by [email] [/email] and [email] [/email]
* Check the programming section for updates and further scripts
* Last Update: 15:34 20.08.2011
*/
var DelayedJoinChars = new Array();
//###################################################################
//##############################Settings#############################
//###################################################################
var LeaderAccountName = "Obelixx";
var LeaderName = "Hummer-trummer";
var GamePassword = "";
var JoinGameAgain = true; // Set to true to re-enter the same game after chicken or disconnect.
var UseCDKeyChangeTrick = false; // Set to true to use multiple CD Keys
var JoinRandomChannel = false;
var JoinChannelInChat = "OP Snowbaal";
var FirstJoinMessage = ""; // Message to post right after joining chat. Set to "" not to post any message.
var ChatMessageAfterGame = ""; // Message to post when joining chta after a game. Set to "" not to post any message.
// If multiple leechers are to join the same game, they should do it slightly time shifted in order to avoid join bugs.
// Enter the names of your accounts OR chars below:
DelayedJoinChars.push("LeecherOne", "LeecherTwo", "LeecherThree");
//###################################################################
//##############################Delays###############################
//###################################################################
var GameMinLength = 180000;
// realm delays (minutes)
var UnableToConnectRetry = 2;
var RealmDownRetry = 60;
var DisconnectedRetry = 2;
var CdKeyInUseRetry = 2;
// interface delays (milliseconds)
var MultipleLeecherJoinDelay = 1000;
var JoinDelay = 10;
var ConnectingToBnetTimeout = 20000;
var CharacterScreenTimeout = 10000;
var PleaseWaitTimeout = 10000;
var CreateGameThreshold = 10000;
var CreateGameThresholdRandom = 1000;
var CreateGameTimeout = 15000;
var WaitInLineTimeout = 15000;
var CharacterSelectDelay = 5000
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/MWBotGame.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, _leaderFound, _lines, _msg, _msgLines, _lineIndex, _chat, _regGameNameWhispered, _regOffline, _regInChat, _regGameName;;
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)
{
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))
{
_leaderFound = false;
_lines = _chat.GetText();
for(_lineIndex = _lines.length - 1; _lineIndex > -1; _lineIndex--)
{
if(_leaderFound) // useless... :/
break;
if(_lines[_lineIndex].substring(0,1) == " ")
continue;
// retrieving the whole message
_msg = _lines[_lineIndex].replace(/^\s+|\s+$/, "");
_msgLines = 1;
while(_lines[_lineIndex + _msgLines] != undefined && _lines[_lineIndex+_msgLines].substring(0,2) == " ")
{
_msg += " " + _lines[_lineIndex + _msgLines].replace(/^\s+|\s+$/, "");
_msgLines++;
}
// checking if the _msg is a friendly whisper
if(_msg.toLowerCase().lastIndexOf(LeaderName.toLowerCase() + " (*" + LeaderAccountName.toLowerCase() + ")") > -1)
{
_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 != "")
{
_leaderFound = true;
break;
}
}
// checking if the _msg is from the friend list
if(_msg.toLowerCase().lastIndexOf(": " + LeaderAccountName.toLowerCase() + ",") > -1)
{
_leaderFound = true;
_regOffline = /^.*(offline|desconectado).*$/gi;
_regInChat = /^.*(channel|canale?)\s*([\w\s-]*\w)\.?\s*$/gi;
_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(!_leaderFound)
{
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);
for(var i = 0; i < DelayedJoinChars.length; i++)
{
if(me.charname.toLowerCase() == DelayedJoinChars[i].toLowerCase() || me.account.toLowerCase() == DelayedJoinChars[i].toLowerCase())
{
Delay(MultipleLeecherJoinDelay * i);
break;
}
}
Delay(JoinDelay);
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;
}
Botleecher.ntj
und hier:
/**
* This file was modified by [email] [/email]
* Check the programming section for updates and further scripts
* Last Update: 17:46 17.08.2011
*
* Hotkey Description
*
* Pause/Break Pauses the current bot script.
* Page up (PgUp) Skips the current bot script.
* Page down (PgDn) Repeats the previous bot script
* Home (Pos1) Shows your current coordinates and areaid.
* End Shows current ping in status text bar.
* Insert (Ins) Logs all items on your char to either XML or TXT.
* Delete (Del) Exits the game. NOTE: Always use this key to leave a game!
* Backspace Force trigger auto mule. NOTE: Won't work unless auto mule is actually activated for the current char.
*/
Include("NTBot/char_configs/MWConfig_GlobalSettings.ntl");
var NTConfig_CastStatic;
function NT_LoadConfig()
{
MW_LoadGlobalSettings();
//------------------------------------------------------------------------------
//
// Run Configuration
//
//------------------------------------------------------------------------------
// Use the following syntax for activating botscripts: MWConfig_Script.push([<ScriptName>, <Script runtime in minutes (0 is infinite)>]);
// ***************** Current schedule ******************
MWConfig_Script.push(["NTBaalLeechFight.ntj", 10]); NTConfig_KillBaal = true; MWConfig_DoBaalPreAttack = true; MWConfig_EnterUnsafeTP = true; NTConfig_Leader = "Hummer-trummer";
//*****************************************************
//------------------------------------------------------------------------------
// Available Scripts
//------------------------------------------------------------------------------
/* NOTE:
// The scripts below are actually commented out; to add a script, copy one of the lines below and add it to the current schedule above. ;)
// You should also get yourself a decent editor that supports syntax highlighting for JavaScript, I'd recommend Notepad++. ([url=http://notepad-plus-plus.org/download/]Notepad++ v5.9.3 - Current Version[/url])
// *********************** Act I ***********************
// MWConfig_Script.push(["NTMausoleum.ntj", 10]); MWConfig_ClearPathSpectypes.Mausoleum = 0; MWConfig_ClearAreaSpectypes.Mausoleum = 0x01; NTConfig_KillBloodRaven = true;
// MWConfig_Script.push(["NTTristram.ntj", 10]); NTConfig_KillRakanishu = true;
// MWConfig_Script.push(["NTHole.ntj", 10]); MWConfig_ClearPathSpectypes.Hole = 0; MWConfig_ClearAreaSpectypes.Hole = 0x01; NTConfig_ClearHoleLevel1 = 1; // 0 : don't clear, 1 : clear path only, 2 : clear all
// MWConfig_Script.push(["NTTreehead.ntj", 10]);
// MWConfig_Script.push(["MWColdcrow.ntj", 10]); MWConfig_ClearCaveMode = 0; // 0: Only kill coldcrow; 1: Clear Cave Level 1; 2: Clear both Cave Level 1 & 2
// MWConfig_Script.push(["NTCountess.ntj", 5]); MWConfig_ClearPathSpectypes.Countess = 0; MWConfig_ClearAreaSpectypes.Countess = 0;
// MWConfig_Script.push(["NTPit.ntj", 10]); MWConfig_ClearPathSpectypes.Pit = 0; MWConfig_ClearAreaSpectypes.Pit = 0x01; NTConfig_ClearPitLevel1 = 2; // 0 : don't clear, 1 : clear path only, 2 : clear all
// MWConfig_Script.push(["NTAndariel.ntj", 10]);
// *********************** Act II **********************
// MWConfig_Script.push(["NTRadament.ntj", 10]); MWConfig_ClearPathSpectypes.Radament = 0;
// MWConfig_Script.push(["MWMaggotsLair.ntj", 10]); MWConfig_ClearPathSpectypes.MaggotsLair = 0; MWConfig_ClearAreaSpectypes.MaggotsLair = 0x01;
// MWConfig_Script.push(["NTAncientTunnels.ntj", 10]); MWConfig_ClearPathSpectypes.AncientTunnels = 0; MWConfig_ClearAreaSpectypes.AncientTunnels = 0x01;
// MWConfig_Script.push(["NTSummoner.ntj", 5]); NTConfig_KillFireEye = false; MWConfig_ClearPathSpectypes.Summoner = 0;
// MWConfig_Script.push(["NTDuriel.ntj", 10]); MWConfig_ClearPathSpectypes.Duriel = 0;
// ********************** Act III **********************
MWConfig_Script.push(["MWFlayerJungle.ntj", 10]); MWConfig_ClearAreaSpectypes.FlayerJungle = 0x01;
MWConfig_Script.push(["MWKurastSewers.ntj", 5]); MWConfig_ClearPathSpectypes.KurastSewers = 0;
MWConfig_Script.push(["MWKurastTemples.ntj", 5]) MWConfig_ClearPathSpectypes.KurastTemples = 0; MWConfig_ClearAreaSpectypes.KurastTemples = 0x01;
// MWConfig_Script.push(["NTTravincal.ntj", 5]);
// MWConfig_Script.push(["NTMephisto.ntj", 5]); MWConfig_OpenMephistoChest = true; MWConfig_MephistoClearArea = true;
// *********************** Act IV **********************
// MWConfig_Script.push(["NTIzual.ntj", 5]); MWConfig_ClearPathSpectypes.Izual = 0;
// MWConfig_Script.push(["MWRiverOfFlame.ntj", 10]); MWConfig_ClearAreaSpectypes.RiverOfFlame = 0x01;
// MWConfig_Script.push(["NTHephasto.ntj", 10]); MWConfig_ClearPathSpectypes.Hephasto = 0;
// MWConfig_Script.push(["NTDiablo.ntj", 10]); MWConfig_KillFullInfectorMob = true; MWConfig_StartAtStar = false; MWConfig_IgnoreSealOpeningErrors = false; MWConfig_FastDia = true;
// *********************** Act V ***********************
// MWConfig_Script.push(["MWAbbadon.ntj", 10]); MWConfig_ClearPathSpectypes.Abbadon = 0; MWConfig_ClearAreaSpectypes.Abbadon = 0x01;
// MWConfig_Script.push(["MWPitOfAcheron.ntj", 10]); MWConfig_ClearPathSpectypes.PitOfAcheron = 0; MWConfig_ClearAreaSpectypes.PitOfAcheron = 0x01;
// MWConfig_Script.push(["MWInfernalPit.ntj", 10]); MWConfig_ClearPathSpectypes.InfernalPit = 0; MWConfig_ClearAreaSpectypes.InfernalPit = 0x01;
// MWConfig_Script.push(["MWHallsOfPain.ntj", 15]); MWConfig_ClearAreaSpectypes.HallsOfPain = 0x01; MWConfig_ClearHallsOfAnguish = true;
// MWConfig_Script.push(["NTPindleskin.ntj", 5]); NTConfig_NihlathakExtension = false; MWConfig_SkipOnTombVipers = true;
// MWConfig_Script.push(["NTEldritch.ntj", 5]); NTConfig_ShenkExtension = true;
// MWConfig_Script.push(["NTThreshSocket.ntj", 5]); MWConfig_ClearPathSpectypes.ThreshSocket = 0;
// MWConfig_Script.push(["NTFrozenRiver.ntj", 10]); MWConfig_ClearPathSpectypes.FrozenRiver = 0; MWConfig_ClearAreaSpectypes.FrozenRiver = 0x01;
// MWConfig_Script.push(["NTGlacialTrail.ntj", 10]); MWConfig_ClearPathSpectypes.GlacialTrail = 0; MWConfig_ClearAreaSpectypes.GlacialTrail = 0x01;
// MWConfig_Script.push(["NTIcyCellar.ntj", 5]); MWConfig_ClearPathSpectypes.IcyCellar = 0; MWConfig_ClearAreaSpectypes.IcyCellar = 0x01;
// MWConfig_Script.push(["NTNihlathak.ntj", 5]); MWConfig_ClearPathSpectypes.Nihlathak = 0; NTConfig_PindleskinExtension = false; MWConfig_SkipOnTombVipers = true;
// MWConfig_Script.push(["MWWorldstoneKeep.ntj", 10]); MWConfig_ClearAreaSpectypes.WorldstoneKeep = 0x01; MWConfig_SkipLevelOnWitches = true; MWConfig_SkipLevelOnSouls = false; MWConfig_SkipLevelOnDeathLords = true;
// MWConfig_Script.push(["NTBaal.ntj", 10]); NTConfig_KillBaal = true; MWConfig_SkipBaalOnDolls = true; MWConfig_SkipBaalOnSouls = false; MWConfig_DoBaalPreAttack = true;
// *********************** Misc ************************
MWConfig_Script.push(["MWAuraStack.ntj", 10]); MWConfig_StackRepetitions = 100;
MWConfig_Script.push(["MWSuperChests.ntj", 20]); MWConfig_SuperChestClearAreaRadius = 10; MWConfig_SuperChestAreas = ["Cave Level 2", "Mausoleum", "Hole Level 2", "Pit Level 2", "Sewers Level 3", "Halls of the Dead Level 2", "Stony Tomb Level 2", "Maggot's Lair Level 3", "Ancient Tunnels", "Tal Rasha's Tomb", "Arachnid Lair", "Swampy Pit Level 3", "Flayer Dungeon", "Sewers Level 2", "Abbadon", "Pit of Acheron", "Drifter Cavern", "Infernal Pit", "Icy Cellar", "Halls of Pain"];
MWConfig_Script.push(["MWRush.ntj", 0]); MWConfig_IsRusher = true; MWConfig_ActiveQuestersName = ""; MWConfig_NumberOfCharsToRush = 1; MWConfig_GetHoradricCubesInNorm = true; MWConfig_QuestSchedule = ["A4Q1", "A5Q1"]; MWConfig_RushActs = [1, 2, 3, 4, 5];
MWConfig_Script.push(["MWWaypointCatcher.ntj", 0]); MWConfig_WaypointCatcherActs = [1, 2, 3, 4, 5]; MWConfig_TPWaypoints = true; MWConfig_SkipHallsOfPain = true; MWConfig_ClearWaypointPaths = false;
MWConfig_Script.push(["MWIdleMode.ntj", 0]); MWConfig_IdleModeRuntime = 5; // Runtime in Minutes
MWConfig_Script.push(["NTCows.ntj", 10]);
MWConfig_Script.push(["MWBloodyRejuvs.ntj", 10]);
MWConfig_Script.push(["MWOrganHarvest.ntj", 10]); MWConfig_EnterInvalidUberPortals = true; MWConfig_PauseOnLackOfKeys = false; MWConfig_IntendedUberPortal = 0; // Matron's Den: 133; Forgotten Sands: 134; Furnace Of Pain: 135;
MWConfig_Script.push(["MWUberTristram.ntj", 10]); MWConfig_PauseOnLackOfOrgans = false;
MWConfig_Script.push(["MWAnyasBargain.ntj", 10]); MWConfig_ShoppingMinGold = 500000; MWConfig_ShoppingAttempts = 200;
// ************ Leech and friends by lanara ************
MWConfig_Script.push(["NTDiabloLeechFight.ntj", 10]); MWConfig_StartAtStar = true; MWConfig_EnterUnsafeTP = true; NTConfig_PreBuff = true; NTConfig_Leader = "Hummer-Trummer"; // If the Leecher should go to a WP and buff up before he goes into the TP. (Needs River of Flame WP for Diablo and Frigid Highlands WP for Baal)
MWConfig_Script.push(["NTBaalLeech.ntj", 10]); NTConfig_KillBaal = true; MWConfig_EnterUnsafeTP = true; NTConfig_Leader = "Hummer-Trummer";
MWConfig_Script.push(["NTBaalLeechFight.ntj", 10]); NTConfig_KillBaal = true; MWConfig_DoBaalPreAttack = true; MWConfig_EnterUnsafeTP = true; NTConfig_Leader = "Hummer-Trummer";
*/
//------------------------------------------------------------------------------
// Misc Configuration
//------------------------------------------------------------------------------
NTConfig_SkipHealLife = 80; // If you have more than this percent of life, you won't go to a healer.
NTConfig_SkipHealMana = 70; // If you have more than this percent of mana, you won't go to a healer
NTConfig_UseMerc = true; // Set to true if you use a mercenary, will revive merc at a reviver npc.
MWConfig_ResetArmor = false; // Set to true to reset your Enigma if Teleport skill is missing. WARNING: Activating this feature may - though not likely will - result in the loss of your enigma. Use at your own risk!
//------------------------------------------------------------------------------
// Potion Configuration
//------------------------------------------------------------------------------
NTConfig_LifeThresh = 70; // Drink a normal potion if under this percent of life.
NTConfig_LifeRejuvThresh = 50; // Drink a rejuvenation potion if under this percent of life.
NTConfig_ManaThresh = 50; // Drink a normal potion if under this percent of mana.
NTConfig_ManaRejuvThresh = 15; // Drink a rejuvenation potion if under this percent of mana.
NTConfig_MercLifeThresh = 50; // This is the threshold to use a life potion on your merc in percent.
NTConfig_MercRejuvThresh = 30; // This is the threshold to use a rejuv potion on your merc in percent.
//------------------------------------------------------------------------------
// Chicken Configuration
//------------------------------------------------------------------------------
// This is your chicken life. If you go below this threshhold, your char will exit the game. You can either enter a percentage (1-100), an absolute threshold (>100) or 0 to deactivate life chicken.
NTConfig_LifeChicken = 20;
// This is your chicken mana. If you go below this threshhold, your char will exit the game. You can either enter a percentage (1-100), an absolute threshold (>100) or 0 to deactivate mana chicken.
NTConfig_ManaChicken = 0;
// This is your merc's chicken life in percent. If your merc goes below this threshhold, your char will exit the game.
NTConfig_MercChicken = 0;
// Whether or not to disable chicken when you pause the bot.
MWConfig_DisableChickenOnPause = true;
//------------------------------------------------------------------------------
// Inventory Configuration
//------------------------------------------------------------------------------
// Each number represents a slot in your inventory.
// Set to 0 if the slot and its content must not be touched.
// Set to 1 to allow access to this slot.
// Set to 2 to select the slot that is used for storing keys. (if keys are kept at another slot, your char will try to move them)
NTConfig_Columns[0] = [0,0,0,0,0,0,0,0,0,0];
NTConfig_Columns[1] = [0,0,0,0,0,0,0,0,0,0];
NTConfig_Columns[2] = [0,0,0,0,0,0,0,0,0,0];
NTConfig_Columns[3] = [0,0,0,0,0,0,0,0,0,0];
// Number of free columns. If less full columns are free stashing is set. Call SetFreeColumns(NTConfig_Columns) to always stash right away (recommended).
NTConfig_FreeSpace = SetFreeColumns(NTConfig_Columns);
// Maximum gold amount carried before going to stash.
NTConfig_MinGoldToStash = 100000;
// Set to true if your char is supposed to carry, buy and pick up keys. You do not need to add keys to your .nip files, they will be picked up anyway if this is set to true.
MWConfig_CarryKeys = true;
//------------------------------------------------------------------------------
// Belt Configuration
//------------------------------------------------------------------------------
// Available types : "hp" = health, "mp" = mana, "rv" = rejuvenation.
// Define how many columns are used for each potion type.
MWConfig_BeltColType["hp"].Columns = 1;
MWConfig_BeltColType["mp"].Columns = 2;
MWConfig_BeltColType["rv"].Columns = 1;
// Define minimum number of potions per column. If the actual number of potions in a column is below this value, your char will visit a merchant when in town in order to buy potions.
MWConfig_BeltColType["hp"].MinPots = 3;
MWConfig_BeltColType["mp"].MinPots = 3;
// Visit Town and buy potions if your char lacks mana when trying to loot a corpse or teleport.
MWConfig_BuyPotionsOnLackOfMana = true;
// Set to true to replace low quality potions with higher quality potions that just dropped.
MWConfig_ReplaceLowQualityPotions = true;
//-----------------------------------------------------------------------------------
// NipFile Configuration
//-----------------------------------------------------------------------------------
NTConfig_NIPFilePath.push("private/normal.nip");
NTConfig_NIPFilePath.push("private/magic_rare.nip");
NTConfig_NIPFilePath.push("private/set.nip");
NTConfig_NIPFilePath.push("private/unique.nip");
NTConfig_NIPFilePath.push("private/craft.nip");
NTConfig_NIPFilePath.push("private/temp.nip");
//------------------------------------------------------------------------------
// Pickit Configuration
//------------------------------------------------------------------------------
// Radius to check for dropped items. NOTE: The maximum is at about ~75, entering higher values will not have any effect.
NTConfig_SnagRange = 70;
// Set to true to check for dropped items whenever you kill a monster. (Recommended value to avoid crashes: false)
MWConfig_PickItemsInstantly = false;
//------------------------------------------------------------------------------
// Chest Configuration
//------------------------------------------------------------------------------
// Select which containers shall be looted. 0: None; 1: Super Chests, 2: All
MWConfig_OpenContainerMode = 2;
// Set to true to check for dropped items right after opening a chest. NOTE: This will slow down your runs and therefore should definately be set to false when doing private games.
MWConfig_PickChestLootsInstantly = false;
// This is the range being checked for chests after clearing an area or room. NOTE: You should not set this too high, 30 is a good value.
MWConfig_OpenChestsRange = 30;
// If you do not like to open chests in a certain area, you can its areaid as an exception below. NOTE: All areaids can be found in "sdk\areas.txt".
// MWConfig_ChestExceptions.push(<areaid1>, <areaid2>, <areaidn>);
//------------------------------------------------------------------------------
// Cubing Configuration
//------------------------------------------------------------------------------
// Set to true to enable cubing and crafting. NOTE: The recipes are added in the global config by default. If you like to craft certain recipe only using this very char, add those recipes below.
NTConfig_Cubing = false;
//------------------------------------------------------------------------------
// General Configuration
//------------------------------------------------------------------------------
// Set to true to activate public mode. By activating public mode, your char will form a party, open TPs and do some chat outputs when running certain bot scripts.
NTConfig_PublicMode = true;
// Set to true to exit the game instantly if the game is public. This may happen sometimes due to an error pasting the password correctly.
MWConfig_ExitGameOnMissingPassword = false;
// Set to true to exit the game when another player expresses hostility towards you.
me.quitonhostile = false;
// This is the maximum time in seconds your char will remain in a single game. Set to 0 to stay in game infinitely.
me.maxgametime = 3000;
// This is the minimum time in seconds for your char to remain in a single game. Your char will not exit the game before this time elapsed.
me.mingametime = 0;
// Set to true to use Telekinesis to interact tih certain objects
MWConfig_UseTelekinesis = true;
//------------------------------------------------------------------------------
// Automule Configuration
//------------------------------------------------------------------------------
// Set to true to enable auto mule.
MWConfig_Automule.Activated = false;
// The maximum stash load in percent before auto mule is triggered.
MWConfig_Automule.MaxLoad = 95;
// Set to true to show your stash's current load whenever managing stash.
MWConfig_Automule.ShowCurrentLoad = true;
// Set to true to finish your current game before muling, otherwise the game is left right away in case your stash is full.
MWConfig_Automule.FinishGame = true;
// Define which items are not to be touched when muling.
MWConfig_Automule.DontMule.push("mule/dont_mule.nip");
MWConfig_Automule.DontMule.push("mule/gems.nip");
//------------------------------------------------------------------------------
// Shrine Configuration
//------------------------------------------------------------------------------
// Set to true to activate nearby shrines. Shrines will only be activated if it is actually useful.
MWConfig_ActivateNearbyShrines = true;
// If you would like to skip shrines in a certain area, you can its areaid as an exception below. NOTE: All areaids can be found in "sdk\areas.txt".
// MWConfig_ShrineExceptions.push(<areaid1>, <areaid2>, <areaidn>);
//------------------------------------------------------------------------------
// Precast Configuration
//------------------------------------------------------------------------------
// Your precast skills can be defined in the array below. NOTE: Battle Command, Battle Orders and Shout will be cast automatically. Constants for all skill ids can be found in "scripts\libs\common\MWSkills.ntl".
MWConfig_PrecastSkills = [MWS_SHIVER_ARMOR, MWS_ENCHANT];
// Set this to true if you would like to switch slots right after casting BC, BO and Shout. If set to false, your char will remain with the BO Slot until the whole precast procedure is done.
MWConfig_SwitchSlotsAfterBoPrecast = true;
//------------------------------------------------------------------------------
// Attack Configuration
//------------------------------------------------------------------------------
// Specify your attack skills below. NOTE: Constants for all skill ids can be found in "scripts\libs\common\MWSkills.ntl".
NTConfig_AttackSkill[0] = MWS_CHARGED_BOLT; // This skill is used once whenever attacking a new target. Set to -1 to deactivate.
NTConfig_AttackSkill[1] = MWS_LIGHTNING; // Primary skill to bosses.
NTConfig_AttackSkill[2] = -1; // Primary untimed skill to boss. Set to -1 to deactivate.
NTConfig_AttackSkill[3] = MWS_CHAIN_LIGHTNING; // Primary skill to others.
NTConfig_AttackSkill[4] = -1; // Primary untimed skill to others. Set to -1 to deactivate.
NTConfig_AttackSkill[5] = -1; // Secondary skill in case monster is immune to primary skill. Set to -1 to deactivate.
NTConfig_AttackSkill[6] = -1; // Secondary untimed skill. Set to -1 to deactivate.
NTConfig_AttackSkill[7] = -1; // Alternative untimed skill which is used if the target is immune to your untimed skill - mostly useful for FB/FO/Meteor sorcs or other sorcs that are using the same untimed skills. Set to -1 to deactivate.qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq
// Set to true if you want to clear area after killing boss. NOTE: This only affects a few botscripts.
NTConfig_ClearPosition = false;
// Set to true to clear area when killing a boss and the position is crowded by monsters. NOTE: Setting this to true may cause NTA_KillMonster() to fail way more often.
MWConfig_ClearBossPosition = false;
// This is the number of attacks to be performed before the the character tries to move to another position. Set to 0 not to reposition.
MWConfig_AttacksBeforeRepositioning = 50;
// Define a time limit for your attacks for each type of monster.
MWConfig_AttackTimeLimit[0] = 20; // Maximum time in seconds to attack a normal monster
MWConfig_AttackTimeLimit[1] = 120; // Maximum time in seconds to attack a super unique monster
MWConfig_AttackTimeLimit[2] = 30; // Maximum time in seconds to attack a champion
MWConfig_AttackTimeLimit[3] = 120; // Maximum time in seconds to attack a bosse
MWConfig_AttackTimeLimit[4] = 30; // Maximum time in seconds to attack a minion
// Define when a monster is considered immune by entering the index of one or more of your attack skills. As an example: [1, 3] means that a monster is considered immune if it is immune to both NTConfig_AttackSkill[1] and NTConfig_AttackSkill[3], whatever those may be.
MWConfig_CheckImmunitySkills = [0, 5];
// Select the behaviour of your character when encountering a monsters that is considered immune referring to the definition above.
// 0: Don't do anything. (D2NT default)
// 1: Get close to the monster, use static field if the monster is not immune to lightning.
// 2: Skip the monster.
// 3: Attack the monster using NTConfig_AttackSkill[8] and NTConfig_AttackSkill[9]
NTConfig_BehaviourOnImmuneMonster = 3;
NTConfig_AttackSkill[8] = MWS_STATIC_FIELD; // Skill to be used against user defined immunes.
// Always check if monsters are closing in and back off, in case they get too close. NOTE: You should at least have 105FCR in order to make this work smoothly.
MWConfig_KeepDistanceToMonsters = true;
// If you don't wish to evade monsters in a certain area, add it's areaid as an exception below. NOTE: All areaids can be found in "sdk\areas.txt".
// MWConfig_EvasionExceptions.push(<areaid1>, <areaid2>, <areaidn>);
// Select whether or not you'd like to swap slots right before killing a boss in order to benefit from some extra MF in your second slot.
// The first element can either be the classid of the target or its name (case insensitive), second element is the life threshold in percent.
//MWConfig_SlotSwapMonsters.push([156, 50]); // Andariel, 50%
//MWConfig_SlotSwapMonsters.push([211, 20]); // Duriel, 20%
//MWConfig_SlotSwapMonsters.push([242, 20]); // Mephisto, 20%
//MWConfig_SlotSwapMonsters.push([243, 20]); // Diablo, 20%
//MWConfig_SlotSwapMonsters.push([544, 15]); // Baal, 15%
// Check self safe in field (NOT in town). Set to 0 if you won't.
// 0x01 : Potion
// 0x02 : Poison
// 0x04 : Amplify Damage
// 0x08 : Weaken
// 0x10 : Iron Maiden
// 0x20 : Decrepify
// 0x40 : Lower Resist
NTConfig_CheckSelfSafe = 0;
// Check merc's safe in field (NOT in town). Set to 0 if you won't.
// 0x01 : Death
// 0x02 : Poison
// 0x04 : Amplify Damage
// 0x08 : Weaken
// 0x10 : Iron Maiden
// 0x20 : Decrepify
// 0x40 : Lower Resist
NTConfig_CheckMercSafe = 0x01;
// Cast Static Field until monster's HP lower below this percentage. Set to 100 not to use static field.
NTConfig_CastStatic = 60;
// Select the monsters you with to attack using static field. NOTE: If you do not add any monsters, static will be used against all monsters.
MWConfig_StaticTargets.push(156); // Andariel
MWConfig_StaticTargets.push(211); // Duriel
MWConfig_StaticTargets.push(242); // Mephisto
MWConfig_StaticTargets.push(243); // Diablo
MWConfig_StaticTargets.push(544); // Baal
MWConfig_StaticTargets.push(GetLocaleString(22500)); // Eldritch The Rectifier
MWConfig_StaticTargets.push(GetLocaleString(22435)); // Shenk The Overseer
}
charakter cfg
|
|
|
09/03/2011, 22:33
|
#3182
|
Administrator
elite*gold: 41624
Join Date: Jan 2010
Posts: 22,728
Received Thanks: 12,654
|
Ich sehe dort keine klaren Fehler. Bist du sicher, dass der Charname des Leaders richtig ist? Denn wenn dem nicht so wäre, könnte die Friend list nachricht nicht richtig ausgelesen werden.
Verwenden außerdem Leader, sowie Leecher eine Englische D2 Version, sprich ist die Nachricht beim Spieleintritt des Leaders auf Englisch?
LG
Muddy
|
|
|
09/03/2011, 22:35
|
#3183
|
elite*gold: 0
Join Date: Apr 2010
Posts: 22
Received Thanks: 1
|
Ja ist auf englisch,
der fragt non stop /f list ab, er joint net nach grüner Schrift, sondern nach /f list, wenn er sieht der lead ist in "baal-xx", solange der den spieler nicht im game sieht, kommt immer /f list spamming, dann kommt connect zum bnet fehlgeschlagen", dann darf ich router neustarten
Code:
SetStatusText("ÿc8Checking friendlist...");
Say("/f list");
SayChatMsgAfterGame = true;
Delay(1000);
und es dauert so lange bis er auf join drückt, möchte das er schneller join klickt,
und mein kollege ( der lead )
hat 60 sek timer, das sein bot next game in 60 sek auf macht, wie pass ich das an?
edit: er fragt nur noch 1 mal /f list ab wenn er zurück in den channel kommt ( ausn Spiel in den Channel ) und dann sieht er das mein Lead noch im alten Game ist, dann versucht er ganze zeit join baal-xx" zu machen, wie ändere ich das ab?
und ist das normal das er immer wieder neu "join channel" macht?
wie macht man das, dass er nun alle 15-30 sek /f list abruft
|
|
|
09/04/2011, 00:47
|
#3184
|
elite*gold: 0
Join Date: Aug 2011
Posts: 11
Received Thanks: 8
|
Hi,
ich hab grad die aktuellste Version geladen und wollte das autoMule testen.
Leider kommt immer die Meldung automule disabled  nachdem ich es endlich hinbekommen hab das [AM] ready is ;(
Code:
//------------------------------------------------------------------------------
// Automule Configuration
//------------------------------------------------------------------------------
// Set to true to enable auto mule.
MWConfig_Automule.Activated = true;
// The maximum stash load in percent before auto mule is triggered.
MWConfig_Automule.MaxLoad = 90;
// Set to true to show your stash's current load whenever managing stash.
MWConfig_Automule.ShowCurrentLoad = true;
// Set to true to finish your current game before muling, otherwise the game is left right away in case your stash is full.
MWConfig_Automule.FinishGame = true;
// Define which items are not to be touched when muling.
MWConfig_Automule.DontMule.push("mule/dont_mule.nip");
MWConfig_Automule.DontMule.push("mule/gems.nip");
Gibt es ausser in der NTConfig_AutoMule und der Charconfig einstellungen für den Automule?
|
|
|
09/04/2011, 01:06
|
#3185
|
Administrator
elite*gold: 41624
Join Date: Jan 2010
Posts: 22,728
Received Thanks: 12,654
|
Quote:
Originally Posted by alianer
Ja ist auf englisch,
der fragt non stop /f list ab, er joint net nach grüner Schrift, sondern nach /f list, wenn er sieht der lead ist in "baal-xx", solange der den spieler nicht im game sieht, kommt immer /f list spamming, dann kommt connect zum bnet fehlgeschlagen", dann darf ich router neustarten
Code:
SetStatusText("ÿc8Checking friendlist...");
Say("/f list");
SayChatMsgAfterGame = true;
Delay(1000);
und es dauert so lange bis er auf join drückt, möchte das er schneller join klickt,
und mein kollege ( der lead )
hat 60 sek timer, das sein bot next game in 60 sek auf macht, wie pass ich das an?
edit: er fragt nur noch 1 mal /f list ab wenn er zurück in den channel kommt ( ausn Spiel in den Channel ) und dann sieht er das mein Lead noch im alten Game ist, dann versucht er ganze zeit join baal-xx" zu machen, wie ändere ich das ab?
und ist das normal das er immer wieder neu "join channel" macht?
wie macht man das, dass er nun alle 15-30 sek /f list abruft
|
Ich denke du solltest JoinGameAgain auf false setzen.
Nein, sollte er an sich nicht. Soweit ich das im Code nachvollzeihen kann, wird die Friendlist nur ein einziges mal nach Eintritt in den Channel abgerufen. Aber so ganz genau weiß ich es nicht, ist schließlich der Entry Point von lanara und nicht von mir. Wenn ich dazu komme, teste ich es morgen mal selber und schaue ob ich es reproduzieren kann.
Quote:
Originally Posted by Dynaevil
Hi,
ich hab grad die aktuellste Version geladen und wollte das autoMule testen.
Leider kommt immer die Meldung automule disabled  nachdem ich es endlich hinbekommen hab das [AM] ready is ;(
Code:
//------------------------------------------------------------------------------
// Automule Configuration
//------------------------------------------------------------------------------
// Set to true to enable auto mule.
MWConfig_Automule.Activated = true;
// The maximum stash load in percent before auto mule is triggered.
MWConfig_Automule.MaxLoad = 90;
// Set to true to show your stash's current load whenever managing stash.
MWConfig_Automule.ShowCurrentLoad = true;
// Set to true to finish your current game before muling, otherwise the game is left right away in case your stash is full.
MWConfig_Automule.FinishGame = true;
// Define which items are not to be touched when muling.
MWConfig_Automule.DontMule.push("mule/dont_mule.nip");
MWConfig_Automule.DontMule.push("mule/gems.nip");
Gibt es ausser in der NTConfig_AutoMule und der Charconfig einstellungen für den Automule?
|
Sieht so aus, als hättest du die Variable in der globalen Config nicht auf true gesetzt. Wobei in der  eigentlich deutlich steht, dass du dies musst - solltest du vielleicht nochmal lesen.
Achja, ich meine in der hochgeladenen Version funktioniert das mit dem Automule auf Knopfdruck nicht - nicht dass du dich wunderst.
LG
Muddy
|
|
|
09/04/2011, 01:12
|
#3186
|
elite*gold: 0
Join Date: Aug 2011
Posts: 11
Received Thanks: 8
|
Achso verdammt ich versuch das die ganze Zeit auszulösen weil ich mal sehn wollt was und wie genau er das macht -.-
Naja dafür grad beim beobachten gesehn wie er nen gheeds liegen lässt :P direkt geangelt das teil 158 40 15 O_o
Mach grad noch feineinstellungen das mein Leecher besser mitläuft irgendwie leavt der nach dem CS run obwohl es mit Baal weiter gehen sollte. Mit den älteren Leecherscripten funktioniert es wieder, irgendwie findet er mit den aktuellsten nicht den weg von akt4 zu akt5 und umgekehrt
Und eine Frage hätte ich noch zu dem Itemlog wo stellt man ein das da was angezeigt wird?
|
|
|
09/04/2011, 02:06
|
#3187
|
elite*gold: 0
Join Date: Mar 2009
Posts: 258
Received Thanks: 14
|
Ich hab ein Problem und zwar will ich open runs machen , nun ist das so das er bei dia kein tp macht und nur durch telet aber bei baal macht er es auf. was muss ich umstellen??
und eine andere Frage wie kann ich meine assa sagen sie sollen shadow master oder so nutzen?
|
|
|
09/04/2011, 02:54
|
#3188
|
elite*gold: 0
Join Date: Aug 2011
Posts: 11
Received Thanks: 8
|
Das sollte sie standartmässig schon tun. In dem Assasinenprofil Line 302 steht das zumindest mal drinnen
Code:
MWConfig_PrecastSkills = [MWS_CLOAK_OF_SHADOWS, MWS_FADE, MWS_SHADOW_MASTER];
|
|
|
09/04/2011, 09:30
|
#3189
|
elite*gold: 0
Join Date: Aug 2008
Posts: 424
Received Thanks: 49
|
Quote:
Originally Posted by Dynaevil
Achso verdammt ich versuch das die ganze Zeit auszulösen weil ich mal sehn wollt was und wie genau er das macht -.-
Naja dafür grad beim beobachten gesehn wie er nen gheeds liegen lässt :P direkt geangelt das teil 158 40 15 O_o
Mach grad noch feineinstellungen das mein Leecher besser mitläuft irgendwie leavt der nach dem CS run obwohl es mit Baal weiter gehen sollte. Mit den älteren Leecherscripten funktioniert es wieder, irgendwie findet er mit den aktuellsten nicht den weg von akt4 zu akt5 und umgekehrt
Und eine Frage hätte ich noch zu dem Itemlog wo stellt man ein das da was angezeigt wird?
|
Bei der Charconfig use XML Log, Sold Item Log,...
das alles auf true setzen ist ziemlich weit unten!
|
|
|
09/04/2011, 11:05
|
#3190
|
elite*gold: 0
Join Date: Nov 2007
Posts: 87
Received Thanks: 11
|
there is a big problem with the automule in the latest revision (2).
I dont know how is it possible, but it never does the thing that i want... there is no problem with the config, thats for sure. in version 1.2 worked like a charm (the automule), but sice the 1.3, i can't figure out whats the problem...
i tested a lot, and i got some serious issues... some examples
1. logs back with the bot account, that just dropped the items, and picks up the items that it should with the first mule account...
2. from the char selection window, it selects random, i dont know how... first the second char, then the first char, and then it repeats selecting the first char... WTF???
3. i think it can't handle wich char is full and wich not...
and it always wants to enter 8 times into a game with 1 mule account, but why??? it should go on if no other item is on the ground to pick up with the account... but it keeps logging back to game...
its really interesting, but it doesnt work for me as i want to.
plz post your config, if it works for you 100%, cause this is madness... i cant even test it, its always doing something else...
my config
Code:
/**
* This file was written by
* Check the programming section for updates and further scripts
* Last Update: 15:45 20.08.2011
*/
function NT_LoadMuleConfig()
{
var _newMule;
Automule.MuleIsFullThreshold = 0.95;
switch(me.account.toLowerCase())
{
//------------------------------------------------------------------------------
// Full account sample - Copy the below case if you'd like to assign a full mule account to your bot char.
// Note: you have to create both the account and the mules yourself before using them for auto mule.
//
case "er01": // <-- Enter your bot's account name here. (lower case only!)
Automule.GameName = "mygame01"; // Enter the name of your mule game here. Note: don't use the same game for multiple bot chars.
Automule.GameNamePassword = "thepw1"; // Enter the password of your mule game here.
for(var i = 0; i < 8; i++)
{
_newMule = new Mule(); // Create a new mule object. (no need to change anything here)
_newMule.Account = "unique"; // Enter the name of your mule account here.
_newMule.Password = "mypwhere"; // Enter the password for your mule account here.
_newMule.NipFiles.push("mule/munique.nip"); // Enter any number of mule paths here.
_newMule.CharLoc = i; // Enter the the mule's location here. Check the FAQ if you don't know what this is about.
Automule.Mules.push(_newMule); // Add the mule you just created. (no need to change anything here)
}
for(var i = 0; i < 8; i++)
{
_newMule = new Mule(); // Create a new mule object. (no need to change anything here)
_newMule.Account = "keys"; // Enter the name of your mule account here.
_newMule.Password = "mypwhere"; // Enter the password for your mule account here.
_newMule.NipFiles.push("mule/mkey.nip"); // Enter any number of mule paths here.
_newMule.CharLoc = i; // Enter the the mule's location here. Check the FAQ if you don't know what this is about.
Automule.Mules.push(_newMule); // Add the mule you just created. (no need to change anything here)
}
for(var i = 0; i < 8; i++)
{
_newMule = new Mule(); // Create a new mule object. (no need to change anything here)
_newMule.Account = "temp"; // Enter the name of your mule account here.
_newMule.Password = "mypwhere"; // Enter the password for your mule account here.
_newMule.NipFiles.push("mule/mrest.nip"); // Enter any number of mule paths here.
_newMule.CharLoc = i; // Enter the the mule's location here. Check the FAQ if you don't know what this is about.
Automule.Mules.push(_newMule); // Add the mule you just created. (no need to change anything here)
}
break;
case "er02": // <-- Enter your bot's account name here. (lower case only!)
Automule.GameName = "mygame02"; // Enter the name of your mule game here. Note: don't use the same game for multiple bot chars.
Automule.GameNamePassword = "thepw1"; // Enter the password of your mule game here.
for(var i = 0; i < 8; i++)
{
_newMule = new Mule(); // Create a new mule object. (no need to change anything here)
_newMule.Account = "unique1"; // Enter the name of your mule account here.
_newMule.Password = "mypwhere"; // Enter the password for your mule account here.
_newMule.NipFiles.push("mule/munique.nip"); // Enter any number of mule paths here.
_newMule.CharLoc = i; // Enter the the mule's location here. Check the FAQ if you don't know what this is about.
Automule.Mules.push(_newMule); // Add the mule you just created. (no need to change anything here)
}
for(var i = 0; i < 8; i++)
{
_newMule = new Mule(); // Create a new mule object. (no need to change anything here)
_newMule.Account = "keys1"; // Enter the name of your mule account here.
_newMule.Password = "mypwhere"; // Enter the password for your mule account here.
_newMule.NipFiles.push("mule/mkey.nip"); // Enter any number of mule paths here.
_newMule.CharLoc = i; // Enter the the mule's location here. Check the FAQ if you don't know what this is about.
Automule.Mules.push(_newMule); // Add the mule you just created. (no need to change anything here)
}
for(var i = 0; i < 8; i++)
{
_newMule = new Mule(); // Create a new mule object. (no need to change anything here)
_newMule.Account = "temp1"; // Enter the name of your mule account here.
_newMule.Password = "mypwhere"; // Enter the password for your mule account here.
_newMule.NipFiles.push("mule/mrest.nip"); // Enter any number of mule paths here.
_newMule.CharLoc = i; // Enter the the mule's location here. Check the FAQ if you don't know what this is about.
Automule.Mules.push(_newMule); // Add the mule you just created. (no need to change anything here)
}
break;
case "er03": // <-- Enter your bot's account name here. (lower case only!)
Automule.GameName = "mygame03"; // Enter the name of your mule game here. Note: don't use the same game for multiple bot chars.
Automule.GameNamePassword = "thepw1"; // Enter the password of your mule game here.
for(var i = 0; i < 8; i++)
{
_newMule = new Mule(); // Create a new mule object. (no need to change anything here)
_newMule.Account = "unique2"; // Enter the name of your mule account here.
_newMule.Password = "mypwhere"; // Enter the password for your mule account here.
_newMule.NipFiles.push("mule/munique.nip"); // Enter any number of mule paths here.
_newMule.CharLoc = i; // Enter the the mule's location here. Check the FAQ if you don't know what this is about.
Automule.Mules.push(_newMule); // Add the mule you just created. (no need to change anything here)
}
for(var i = 0; i < 8; i++)
{
_newMule = new Mule(); // Create a new mule object. (no need to change anything here)
_newMule.Account = "keys2"; // Enter the name of your mule account here.
_newMule.Password = "mypwhere"; // Enter the password for your mule account here.
_newMule.NipFiles.push("mule/mkey.nip"); // Enter any number of mule paths here.
_newMule.CharLoc = i; // Enter the the mule's location here. Check the FAQ if you don't know what this is about.
Automule.Mules.push(_newMule); // Add the mule you just created. (no need to change anything here)
}
for(var i = 0; i < 8; i++)
{
_newMule = new Mule(); // Create a new mule object. (no need to change anything here)
_newMule.Account = "temp2"; // Enter the name of your mule account here.
_newMule.Password = "mypwhere"; // Enter the password for your mule account here.
_newMule.NipFiles.push("mule/mrest.nip"); // Enter any number of mule paths here.
_newMule.CharLoc = i; // Enter the the mule's location here. Check the FAQ if you don't know what this is about.
Automule.Mules.push(_newMule); // Add the mule you just created. (no need to change anything here)
}
break;
}
}
// INTERNAL FUNCTIONS
function Mule(acc, pw, loc, nips)
{
this.Account = acc;
this.Password = pw;
this.NipFiles = (!nips || typeof nips != "array") ? new Array() : nips;
this.CharLoc = loc;
this.Load;
}
edit:
as i test it, i think it logs with the first char, that he knows is not full (from log) and then it starts again from the first char, but why???
when i delet the logs (thought it can solve some problem...) then it just repeats logging back wiht the first mule char...
Is it possible perhaps to get back the automule of the version 1.2, but the rest stays 1.3?
Hope u know muddy what can be the problem.
in my opinion this 'for(var i = 0; i < 8; i++)' will always want to run 8 times, but it should get out of this cycle if "nothing to mule on this acc" comes up.
Anyway, my 1.2 works fine, except that it doesnt have garbage collector.
Can u tell me plz, how to implement it? I already found the RunGC() in the scripts, but where does it come from? 1.2 with GC would be the best solution for now for me.
thx for help!
|
|
|
09/04/2011, 12:24
|
#3191
|
elite*gold: 0
Join Date: Feb 2010
Posts: 11
Received Thanks: 0
|
nutze seit heute auch muddys. mein problem ist das ich gern einstellen möchte das er am ende des baalruns sagt "ng is XYZ in XX seconds" kann mir einer sagen wo das hingehört. bin echt nen nap wenns ums botten geht . hab den normalen D2NT grad so gerafft das der rennt
edit 1: ich brauchs für die public runs die ich eig nur wegen exp machen will. klappt bis jetzt ganz gut wenn zumindest einer mit joind für die w2. den rest pack ich so.
|
|
|
09/04/2011, 13:43
|
#3192
|
elite*gold: 0
Join Date: Dec 2007
Posts: 100
Received Thanks: 11
|
bei mir ist das problem wenn es denn eines ist, dass mein bot bevor er ein neues game aufmacht erstmal restarted..
hab schon viel gesucht und ausprobiert aber er macht es bei 80% der fälle komischerweise ab und zu auch wieder nicht.
sieht so aus als ob er die 20sekunden wartet bis er ein neues game aufmachen soll auf das "create new game" klickt und dann schliesst sich sofort das game-window und ja restarted ansonsten läuft er eigentlich fehlerfrei ( also keine restarts im game oder so abgesehen von dem ein oder anderen freeze)
|
|
|
09/04/2011, 14:19
|
#3193
|
Administrator
elite*gold: 41624
Join Date: Jan 2010
Posts: 22,728
Received Thanks: 12,654
|
Quote:
Originally Posted by Dynaevil
Achso verdammt ich versuch das die ganze Zeit auszulösen weil ich mal sehn wollt was und wie genau er das macht -.-
Naja dafür grad beim beobachten gesehn wie er nen gheeds liegen lässt :P direkt geangelt das teil 158 40 15 O_o
Mach grad noch feineinstellungen das mein Leecher besser mitläuft irgendwie leavt der nach dem CS run obwohl es mit Baal weiter gehen sollte. Mit den älteren Leecherscripten funktioniert es wieder, irgendwie findet er mit den aktuellsten nicht den weg von akt4 zu akt5 und umgekehrt
Und eine Frage hätte ich noch zu dem Itemlog wo stellt man ein das da was angezeigt wird?
|
Ich glaube ich weiß woher das Problem mit den Leecherscripten rührt, ich werde es mal beheben und in eine neue Revision packen.
Quote:
Originally Posted by Atronia
Ich hab ein Problem und zwar will ich open runs machen , nun ist das so das er bei dia kein tp macht und nur durch telet aber bei baal macht er es auf. was muss ich umstellen??
und eine andere Frage wie kann ich meine assa sagen sie sollen shadow master oder so nutzen?
|
Du musst NTConfig_PublicMode auf true setzen.
Quote:
Originally Posted by ender02
there is a big problem with the automule in the latest revision (2).
I dont know how is it possible, but it never does the thing that i want... there is no problem with the config, thats for sure. in version 1.2 worked like a charm (the automule), but sice the 1.3, i can't figure out whats the problem...
i tested a lot, and i got some serious issues... some examples
1. logs back with the bot account, that just dropped the items, and picks up the items that it should with the first mule account...
2. from the char selection window, it selects random, i dont know how... first the second char, then the first char, and then it repeats selecting the first char... WTF???
3. i think it can't handle wich char is full and wich not...
and it always wants to enter 8 times into a game with 1 mule account, but why??? it should go on if no other item is on the ground to pick up with the account... but it keeps logging back to game...
its really interesting, but it doesnt work for me as i want to.
plz post your config, if it works for you 100%, cause this is madness... i cant even test it, its always doing something else...
my config
[...]
edit:
as i test it, i think it logs with the first char, that he knows is not full (from log) and then it starts again from the first char, but why???
when i delet the logs (thought it can solve some problem...) then it just repeats logging back wiht the first mule char...
Is it possible perhaps to get back the automule of the version 1.2, but the rest stays 1.3?
Hope u know muddy what can be the problem.
in my opinion this 'for(var i = 0; i < 8; i++)' will always want to run 8 times, but it should get out of this cycle if "nothing to mule on this acc" comes up.
Anyway, my 1.2 works fine, except that it doesnt have garbage collector.
Can u tell me plz, how to implement it? I already found the RunGC() in the scripts, but where does it come from? 1.2 with GC would be the best solution for now for me.
thx for help!
|
I'll see into this and fix all possible bugs, thanks making me aware of this issue.
Quote:
Originally Posted by Instinct666
nutze seit heute auch muddys. mein problem ist das ich gern einstellen möchte das er am ende des baalruns sagt "ng is XYZ in XX seconds" kann mir einer sagen wo das hingehört. bin echt nen nap wenns ums botten geht . hab den normalen D2NT grad so gerafft das der rennt
edit 1: ich brauchs für die public runs die ich eig nur wegen exp machen will. klappt bis jetzt ganz gut wenn zumindest einer mit joind für die w2. den rest pack ich so.
|
Das geht derzeit nicht, weil du dafür eine Funktion bräuchtest, die dir aus dem aktuellen Spielnamen den Namen des nachfolgenden Spiels ableitet.
Ich werde sowas mal hinzufügen.
Quote:
Originally Posted by 3v3n_Black3R
bei mir ist das problem wenn es denn eines ist, dass mein bot bevor er ein neues game aufmacht erstmal restarted..
hab schon viel gesucht und ausprobiert aber er macht es bei 80% der fälle komischerweise ab und zu auch wieder nicht.
sieht so aus als ob er die 20sekunden wartet bis er ein neues game aufmachen soll auf das "create new game" klickt und dann schliesst sich sofort das game-window und ja restarted ansonsten läuft er eigentlich fehlerfrei ( also keine restarts im game oder so abgesehen von dem ein oder anderen freeze)
|
Sollte an sich nicht so sein. 
Hast du denn die komplette letzte Revision runtergeladen oder nur ein paar der veränderten Scripte ersetzt?
LG
Muddy
|
|
|
09/04/2011, 14:25
|
#3194
|
elite*gold: 0
Join Date: Jul 2008
Posts: 37
Received Thanks: 0
|
Quote:
Originally Posted by Muddy_Waters
Was für Bosse, was für ein Char?
Sofern du Statik einsetzt oder das Ziel immun ist und du es so konfiguriert hast, dass sich auf das Ziel zubewegt wird, damit der Merc den Rest erledigt, ist das normal. 
|
Vorrangig bei Meph.
Der Char ist ne Lightning-Sorc
Und wie stell ich ein, dass der sich eben nicht auf das Ziel zubewegt?
Darf ich dann kein Static mehr benutzen? Das wär aber mist...
|
|
|
09/04/2011, 14:31
|
#3195
|
Administrator
elite*gold: 41624
Join Date: Jan 2010
Posts: 22,728
Received Thanks: 12,654
|
Quote:
Originally Posted by mooh
Vorrangig bei Meph.
Der Char ist ne Lightning-Sorc
Und wie stell ich ein, dass der sich eben nicht auf das Ziel zubewegt?
Darf ich dann kein Static mehr benutzen? Das wär aber mist...
|
MWConfig_CheckImmunitySkills mit einem leeren Array initialisieren bzw. NTConfig_BehaviourOnImmuneMonster auf 0 setzen.
Wenn du Statik benutzt, wird deine Sorc solange nicht ausweichen, bis der Angriff mit Statik beendet ist, sprich das Ziel weniger Leben hat, als du festgelegt hast.
LG
Muddy
|
|
|
 |
|
Similar Threads
|
[Release] D2NT 3.1 1.13c
07/17/2016 - Diablo 2 - 91 Replies
hi,
hab eben den d2nt3.1 gefunden. ein neues baba script is dabei.
release thread eon
D2NT3.1
|
[Realease] Muddy's Waypoint Catcher
08/21/2013 - Diablo 2 Programming - 46 Replies
Moin zusammen,
hier mal die erste Release Version eines kleinen Scripts genannt Waypoint Catcher. Das ganze ist jetzt nichtmal 24h alt, dementsprechend sind vermutlich noch einige Bugs vorhanden. Hinweise dazu nehme ich gerne entgegen. ;)
Features:
- Suchen sämtlicher Wegpunkte mit Ausnahme, wobei in Akt ein durch Probleme im Jail Bereich nach dem Wegpunkt Outer Cloister abgebrochen wird
- Wahlweise auch mit TP an jedem gefundenen Wp, sodass man damit auch anderen (nicht-Bots) die...
|
[D2NT] Long Dia Release
05/10/2011 - Diablo 2 Programming - 28 Replies
Ein kleines Script für diablo, es startet beim eingang macht ein tp cleart den weg zum star macht am star noch ein tp dann läufts wie das normale nur cleart es schöner :)
hoffe euch gefällts ich habs noch nicht wirklich getestet (2-3 runs) bugs können gerne hier gepostet werden verbesserungs vorschläge auch :D
installation:
1.)Script in den Bot ordner kopieren
2.)Script im editor oder vergleichbaren öffnen
3.) Msg´s anpassen (ist nicht schwer)
4.) in der char config die zeile...
|
D2NT 3.0 Pickit release
10/22/2010 - Diablo 2 - 77 Replies
edit
|
Muddy's D2NT Help
07/29/2010 - Diablo 2 - 3 Replies
hi i just started to use the bot it work's great.
how do i set up the skill's i use on my Sorc and pick up itme's?
.....
if you reply to this post please use english
|
All times are GMT +1. The time now is 21:44.
|
|