Deutsche NT-Bot Anleitung !

04/23/2009 12:06 nomad2k#706
Nehme mal an, dass du das ganze unter deinem normalen os laufen bzw momentan ja eher nicht laufen hast, richtig?
versuchs mal in ner virtuellen maschine (ob virtual pc, vmware oder virtualbox bleibt dir überlassen, virtual pc hat bei mir aber eine deutlich höhere auslastung erzeugt als virtualbox, weil virtualbox die grafikbeschleunigung deiner grafikkarte weiterleiten kann, muss man aber extra aktivieren)
04/23/2009 12:28 Candym4n#707
Danke für den Tipp.
Ich lass aber erstmal die Finger davon. Es muss doch was geben womit das Problem leicht behoben wird. Bei allen andern gehts ja auch.
04/23/2009 13:17 nomad2k#708
die meisten anderen lassens glaub ich auch in ner vm laufen ;) Allein schon deshalb weil man dann nebenher auch noch am pc arbeiten oder sonstwas kann.
Bei d2nt kann man das dia fenster ja nicht mehr minimieren.
04/23/2009 13:59 FlashLoaded#709
hey alle,kann mir jmd. sagen woran es liegt,wenn der bot nach ca. einer std runs nen timeban bekommt(der dauert teilweise bis zu 6 std. :( )
dieses problem besteht erst seit kurzer zeit...muss ich vlt die delay zeit ändern,dass er länger wartet um games zu machen?!
bitte um hilfe
04/23/2009 14:03 Candym4n#710
Quote:
Originally Posted by nomad2k View Post
die meisten anderen lassens glaub ich auch in ner vm laufen ;) Allein schon deshalb weil man dann nebenher auch noch am pc arbeiten oder sonstwas kann.
Bei d2nt kann man das dia fenster ja nicht mehr minimieren.
Hm.Nagut ich werds bei Zeit mal probieren.

An Flash:
Ja. Der Bot ist wohl zu schnell. Ich glaub bei 20 games pro stunde bekommt man nen timeban.
04/23/2009 14:20 FlashLoaded#711
Quote:
Originally Posted by Candym4n View Post
Hm.Nagut ich werds bei Zeit mal probieren.

An Flash:
Ja. Der Bot ist wohl zu schnell. Ich glaub bei 20 games pro stunde bekommt man nen timeban.
Ja,aber meine min game zeit ist 3mins(er braucht sogar 4mins/run),d.h. der schafft pro std. 15 runs.Chicken tut er vlt 1mal die std....:/
Aber es liegt wohl an der run/std. anzahl,denn ich bekomm exakt nach 1 std. immer timeban
04/23/2009 17:58 plackaty#712
kann man den nt bot auch so einstellen das er public invitet und portal setzt bei dia bzw baal?
04/23/2009 18:02 nomad2k#713
einfach in der config
Code:
NTConfig_PublicMode = false;
in
Code:
NTConfig_PublicMode = true;
setzen
04/23/2009 19:21 plackaty#714
danke public geht ja aber gibt es eine möglichkeit dem bot zu sagen das auch andere ein siegel bei diablo öffnen?
ansonsten macht er fehlermeldung und bricht ab und geht zu baal
04/23/2009 19:34 nomad2k#715
könntest dir evtl was zurechtskripten, dass er erst nach dem jeweiligen siegelboß sucht ihn killt und beim nächsten siegel weitermacht, wenn der nicht da ist das siegel öffnet und dann nochmal nach dem jeweiligen siegelboß sucht, ihn killt und dann beim nächsten siegel weitermacht.
Aber falls deine frage ist obs sowas fertig gibt: Nein, da musst schon selbst ran.

Oder sag den leechern einfach sie sollen die finger von den siegeln lassen, oder nutz dafür den kukbot.
04/23/2009 22:41 shorthoof007#716
so ich habs zwar schonmal wo gelesen aber ich finde es nichtmehr!
meine sorc ist zwar nackt sollte aber dennoch mephi auf normal umhauen
lvl 87 Lightsorc, sie zappt brav hin dann kommt aber fehlermeldung von wegen
NTMephisto.ntj:NTA_KillBoss()failed(Kerker des Hasses,Level 3)

bin für jede antwort dankbar ;)
mfg
04/24/2009 06:12 FlashLoaded#717
leute ich brauch dringend hilfe!!!!
heute nacht hat mein bot nach 4 std einfach timeban bekommen,obwohl er nur 13 games/std. macht und 0 mal gechickt ist...bin echt ratlos bitte um hilfe :(
04/24/2009 07:14 njomnjomnjom#718
Hui ich hab meinen zusammen 1000 runs am stück rekord gebrochen. (3 chars, lange runs)

@FlashLoaded: Vielleicht keine chicks aber restarts? Oder imune Gegner zufällig 7 mal hintereinander? (naja unwarscheinlich) Aber ansonsten hab ich keine Idee.
04/24/2009 13:55 FlashLoaded#719
Ne,ich seh ja im verlauf die gamedauer...er hat konstant alle 5mins ein game gemacht und nach 4 std(manachmal sogar schon nach einer)steht da login...login...login..login,also er versucht alle zwei std login weil er timeban hat auf einmal....:(

oda stimmt was an meiner config nicht?!

Include("config/NTConfig.ntl");

var NTConfig_PutAura;
var NTConfig_UseRedemption;

function NT_LoadConfig()
{
//------------------------------------------------------------------------------
// Boss configuration
//------------------------------------------------------------------------------
NTConfig_PublicMode = false;
me.quitonhostile = false;

//NTConfig_Script.push("NTAncientTunnels.ntj");
//NTConfig_Script.push("NTPit.ntj"); NTConfig_ClearPitLevel1 = 0; // 0 : don't clear, 1 : clear path only, 2 : clear all
//NTConfig_Script.push("NTMausoleum.ntj");
//NTConfig_Script.push("NTPindleskin.ntj"); NTConfig_NihlathakExtension = false;
//NTConfig_Script.push("NTThreshSocket.ntj");
//NTConfig_Script.push("NTFrozenRiver.ntj"); NTConfig_ClearFrozenRiver = false;
//NTConfig_Script.push("NTGlacialTrail.ntj"); NTConfig_ClearGlacialTrail = false;
//NTConfig_Script.push("NTIcyCellar.ntj"); NTConfig_ClearIcyCellar = false;
//NTConfig_Script.push("NTBaal.ntj"); NTConfig_KillBaal = true;
//NTConfig_Script.push("NTTravincal.ntj");
//NTConfig_Script.push("NTDiablo.ntj");
NTConfig_Script.push("NTEldritch.ntj"); NTConfig_ShenkExtension = true;
NTConfig_Script.push("NTMephisto.ntj");
NTConfig_Script.push("NTSummoner.ntj");
NTConfig_Script.push("NTDuriel.ntj");
NTConfig_Script.push("NTAndariel.ntj");
NTConfig_Script.push("NTCountess.ntj");
NTConfig_Script.push("NTNihlathak.ntj"); NTConfig_PindleskinExtension = false;

me.maxgametime = 600; // time in seconds, maximum game length (0 is infinite)
NTConfig_StartDelay = 0; // Delay time in milliseconds to start;
NTConfig_AreaDelay = 500; // Delay time in milliseconds to change area;
NTConfig_SnagDelay = 500; // Delay time in milliseconds to wait before starting picking items

NTConfig_SkipHealLife = 90; // 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_SkipHealCurses = false;// If you want to skip curses, set to true
NTConfig_UseMerc = false; // Set to true if you use a mercenary, will revive merc at a reviver npc.
NTConfig_ResetWeapon = false; // Set to true to reset weapon when reviving merc

NTConfig_LifeThresh = 60; // Drink a normal potion if under this percent of life.
NTConfig_LifeRejuvThresh = 40; // Drink a rejuvenation potion if under this percent of life.
NTConfig_ManaThresh = 30; // Drink a normal potion if under this percent of mana.
NTConfig_ManaRejuvThresh = 10; // Drink a rejuvenation potion if under this percent of mana.
NTConfig_LifeChicken = 30; // This is your chicken life percent. If you go below this life total, exit game.
NTConfig_ManaChicken = 0; // This is your chicken mana percent. If you go below this mana total, exit game.

NTConfig_MercLifeThresh = 60; // This is the threshold to use a life potion on your merc in percent.
NTConfig_MercRejuvThresh = 40; // This is the threshold to use a rejuv potion on your merc in percent.
NTConfig_MercChicken = 20; // This is your mercs chicken life percent. If he goes below this, exit game.

NTConfig_FreeSpace = 8; // Number of free columns. If less full columns are free stashing is set.

// The numbers correspond to your inventory. Set 0 to keep whatever is there, 1 to stash it.
NTConfig_Columns[0] = [1,1,1,1,1,1,1,1,0,0];
NTConfig_Columns[1] = [1,1,1,1,1,1,1,1,0,0];
NTConfig_Columns[2] = [1,1,1,1,1,1,1,1,0,0];
NTConfig_Columns[3] = [1,1,1,1,1,1,1,1,0,0];

NTConfig_MinGoldToStash = 100000; // Maximum gold amount carried before going to stash

//----------------------------------------------------------------------------------------------
// Type of potion used in each belt column
// Available types : "hp" = health | "mp" = mana | "rv" = rejuv. Can use other potion types too.
// Keep equal types at adjacent columns. First HP then MP and then HP again is a bad choice.
// Keep HP and MP at the beginning of the belt (in case you want to use rejuv and other types).
// Rejuvenations MUST, I REPEAT MUST be at the end of the belt (last x columns).
// To use rejuvenations only, put "rv" in all columns.
//----------------------------------------------------------------------------------------------
NTConfig_BeltColType[0] = "hp";
NTConfig_BeltColType[1] = "hp";
NTConfig_BeltColType[2] = "mp";
NTConfig_BeltColType[3] = "rv";

//----------------------------------------------------------------------------
// Minimum amount of potions in each column before needing refilling
// If there's less potions then this number in the column we go and shop.
// Set to 4 to go shopping as soon as there's a potion missing.
// Recommend leaving columns set to "rv" at 0. Since shops won't carry rejuvs.
//----------------------------------------------------------------------------
NTConfig_BeltColMin[0] = 1;
NTConfig_BeltColMin[1] = 1;
NTConfig_BeltColMin[2] = 1;
NTConfig_BeltColMin[3] = 0;

//-----------------------------------------------------------------------------------
// SnagIt configuration
// Here is a list of preset nip files assuming you use nip package.
// If you want to add your own .nip files, just copy any line and enter the
// To disable a .nip file, just add "//" at the start of the line or delete the line.
//-----------------------------------------------------------------------------------
NTConfig_NIPFilePath.push("uniques.nip");
NTConfig_NIPFilePath.push("sets.nip");
NTConfig_NIPFilePath.push("whites.nip");
NTConfig_NIPFilePath.push("runes.nip");
NTConfig_NIPFilePath.push("rares.nip");
NTConfig_NIPFilePath.push("magics.nip");
NTConfig_NIPFilePath.push("gems.nip");
NTConfig_NIPFilePath.push("charmsjewels.nip");
NTConfig_NIPFilePath.push("ringsamulets.nip");
NTConfig_NIPFilePath.push("potions.nip");
NTConfig_NIPFilePath.push("moneymaker.nip");
NTConfig_NIPFilePath.push("keys.nip");

NTConfig_SnagRange = 40; // Radius to check for dropped items. 40 is a good number here

//------------------------------------------------------------------------------
// Cubing configuration
// Supported gems and runes recipe only
//------------------------------------------------------------------------------
NTConfig_Cubing = false; // Enable cubing

//NTConfig_CubingItem.push(["gcw",0,3]); //Chipped Diamond gcw
//NTConfig_CubingItem.push(["gcv",0,3]); //Chipped Amethyst gcv
//NTConfig_CubingItem.push(["gcb",0,3]); //Chipped Saphire gcb
//NTConfig_CubingItem.push(["gcy",0,3]); //Chipped Topaz gcy
//NTConfig_CubingItem.push(["gcr",0,3]); //Chipped Ruby gcr
//NTConfig_CubingItem.push(["gcg",0,3]); //Chipped Emerald gcg
//NTConfig_CubingItem.push(["skc",0,3]); //Chipped Skull skc

//NTConfig_CubingItem.push(["gfw",0,3]); //Flawed Diamond gfw
//NTConfig_CubingItem.push(["gfv",0,3]); //Flawed Amethyst gfv
//NTConfig_CubingItem.push(["gfb",0,3]); //Flawed Saphire gfb
//NTConfig_CubingItem.push(["gfy",0,3]); //Flawed Topaz gfy
//NTConfig_CubingItem.push(["gfr",0,3]); //Flawed Ruby gfr
//NTConfig_CubingItem.push(["gfg",0,3]); //Flawed Emerald gfg
//NTConfig_CubingItem.push(["skf",0,3]); //Flawed Skull skf

//NTConfig_CubingItem.push(["gsw",0,3]); //Normal Diamond gsw
//NTConfig_CubingItem.push(["gsv",0,3]); //Normal Amethyst gsv
//NTConfig_CubingItem.push(["gsb",0,3]); //Normal Saphire gsb
//NTConfig_CubingItem.push(["gsy",0,3]); //Normal Topaz gsy
//NTConfig_CubingItem.push(["gsr",0,3]); //Normal Ruby gsr
//NTConfig_CubingItem.push(["gsg",0,3]); //Normal Emerald gsg
//NTConfig_CubingItem.push(["sku",0,3]); //Normal Skull sku

//NTConfig_CubingItem.push(["glw",0,3]); //Flawless Diamond glw
//NTConfig_CubingItem.push(["gzv",0,3]); //Flawless Amethyst gzv
//NTConfig_CubingItem.push(["glb",0,3]); //Flawless Saphire glb
//NTConfig_CubingItem.push(["gly",0,3]); //Flawless Topaz gly
//NTConfig_CubingItem.push(["glr",0,3]); //Flawless Ruby glr
//NTConfig_CubingItem.push(["glg",0,3]); //Flawless Emerald glg
//NTConfig_CubingItem.push(["skl",0,3]); //Flawless Skull skl

//NTConfig_CubingItem.push(["r01",0,3]); //El Rune r01
//NTConfig_CubingItem.push(["r02",0,3]); //Eld Rune r02
//NTConfig_CubingItem.push(["r03",0,3]); //Tir Rune r03
//NTConfig_CubingItem.push(["r04",0,3]); //Nef Rune r04
//NTConfig_CubingItem.push(["r05",0,3]); //Eth Rune r05
//NTConfig_CubingItem.push(["r06",0,3]); //Ith Rune r06
//NTConfig_CubingItem.push(["r07",0,3]); //Tal Rune r07
//NTConfig_CubingItem.push(["r08",0,3]); //Ral Rune r08
//NTConfig_CubingItem.push(["r09",0,3]); //Ort Rune r09

//NTConfig_CubingItem.push(["r10",0,3,"gcy",0,1]); //Thul Rune + chipped Topaz r10 + gcy
//NTConfig_CubingItem.push(["r11",0,3,"gcv",0,1]); //Amn Rune + chipped Amethyst r11 + gcv
//NTConfig_CubingItem.push(["r12",0,3,"gcb",0,1]); //Sol Rune + chipped Saphire r12 + gcb
//NTConfig_CubingItem.push(["r13",0,3,"gcr",0,1]); //Shael Rune + chipped Ruby r13 + gcr
//NTConfig_CubingItem.push(["r14",0,3,"gcg",0,1]); //Dol Rune + chipped Emerald r14 + gcg
//NTConfig_CubingItem.push(["r15",0,3,"gcw",0,1]); //Hel Rune + chipped Diamond r15 + gcw

NTConfig_CubingItem.push(["r16",0,3,"gfy",0,1]); //Io Rune + flawed Topaz r16 + gfy
NTConfig_CubingItem.push(["r17",0,3,"gfv",0,1]); //Lum Rune + flawed Amethyst r17 + gfv
NTConfig_CubingItem.push(["r18",0,3,"gfb",0,1]); //Ko Rune + flawed Saphire r18 + gfb
NTConfig_CubingItem.push(["r19",0,3,"gfr",0,1]); //Fal Rune + flawed Ruby r19 + gfr
NTConfig_CubingItem.push(["r20",0,3,"gfg",0,1]); //Lem Rune + flawed Emerald r20 + gfg
NTConfig_CubingItem.push(["r21",0,2,"gfw",0,1]); //Pul Rune + flawed Diamond r21 + gfw

NTConfig_CubingItem.push(["r22",0,2,"gsy",0,1]); //Um Rune + Topaz r22 + gsy
NTConfig_CubingItem.push(["r23",0,2,"gsv",0,1]); //Mal Rune + Amethyst r23 + gsv
//NTConfig_CubingItem.push(["r24",0,2,"gsb",0,1]); //Ist Rune + Saphire r24 + gsb
//NTConfig_CubingItem.push(["r25",0,2,"gsr",0,1]); //Gul Rune + Ruby r25 + gsr
//NTConfig_CubingItem.push(["r26",0,2,"gsg",0,1]); //Vex Rune + Emerald r26 + gsg
//NTConfig_CubingItem.push(["r27",0,2,"gsw",0,1]); //Ohm Rune + Diamond r27 + gsw

//NTConfig_CubingItem.push(["r28",0,2,"gly",0,1]); //Lo Rune + flawless Topaz r28 + gly
//NTConfig_CubingItem.push(["r29",0,2,"gzv",0,1]); //Sur Rune + flawless Amethyst r29 + gzv
//NTConfig_CubingItem.push(["r30",0,2,"glb",0,1]); //Ber Rune + flawless Saphire r30 + glb
//NTConfig_CubingItem.push(["r31",0,2,"glr",0,1]); //Jah Rune + flawless Ruby r31 + gll
//NTConfig_CubingItem.push(["r32",0,2,"glg",0,1]); //Cham Rune + flawless Emerald r32 + glg

//------------------------------------------------------------------------------
// Gamble configuration
// To specify what items to gamble, adjust the array with the desired item codes
//------------------------------------------------------------------------------
NTConfig_Gamble = true; // Enable gambling
NTConfig_GambleStopGold = 300000; // Gold amount to stop the gambling

NTConfig_GambleItem.push("rin"); // Rings
NTConfig_GambleItem.push("amu"); // Amulets
NTConfig_GambleItem.push("ci0"); // Circlets
NTConfig_GambleItem.push("ci1"); // Coronets
//NTConfig_GambleItem.push("lgl"); // Leather Gloves
//NTConfig_GambleItem.push("vgl"); // Heavy Gloves
//NTConfig_GambleItem.push("mgl"); // Chain Gloves
//NTConfig_GambleItem.push("tgl"); // Light Gauntlets
//NTConfig_GambleItem.push("hgl"); // Gauntlets


NTConfig_OpenChest = true; // Set to true to open chest

//------------------------------------------------------------------------------
// Attack configuration
//------------------------------------------------------------------------------
NTConfig_PutAura = 113; // What aura do you want to use on attack. Set to 0 if you won't
NTConfig_AttackSkill[0] = 0; // Cast your first spell once. Set to 0 if you won't
NTConfig_AttackSkill[1] = 112; // Cast your primary spell to boss.
NTConfig_AttackSkill[2] = 112; // Cast your primary spell to others.
NTConfig_AttackSkill[4] = 0; // Cast your secondary spell if monster is immune to your primary spell. Set to 0 if you won't
NTConfig_ClearPosition = false; // Set to true if you want to clear area after killing boss.
NTConfig_CheckSafe = false; // Set to true to check for curses, merc and potion (go to town if needed)

NTConfig_UseRedemption = true; // Set to true to use Redemption after killing monster.
}
04/24/2009 18:03 bizeps#720
Achtung, Important
also mein verfluchter ntbot kriegt dauernd wna...lass seperat laufen, 1baal nihlatak script und ein mf script(countess,pit,meph,andy,pindle,shenk,eldritc h)
allerdings kriegt der verflucht bot dauernd wna
starter config mf script
Quote:
var gameMinLength = 240000; // time in milliseconds, minimum game length, 180 seconds default (1 game/3 minutes)

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

// DONT EDIT ANYTHING BELOW THIS

// D2NT Manager Command
const D2NT_MGR_LOADING = 1;
const D2NT_MGR_READY = 2;
const D2NT_MGR_LOGIN = 3;
const D2NT_MGR_SELECT_CHAR = 4;
const D2NT_MGR_CREATE_GAME = 5;
const D2NT_MGR_INGAME = 6;
const D2NT_MGR_RESTART = 7;
const D2NT_MGR_CHICKEN = 8;
const D2NT_MGR_PRINT_STATUS = 9;
const D2NT_MGR_PRINT_LOG = 10;

var lastGameMade = GetTickCount();
var lastGameStatus = 0;
var nextGameMake = 0;
var inGameAt = 0;
var chatActionsDone = false;
var lastGameFailed = false;

Include("controlInfo.ntl");

var controlData = new controlInfo();

function NTMain()
{
Delay(1000);

var _ingame = false;

controlData.clickDelay = clickDelay;
controlData.textDelay = textDelay;
controlData.clickDelayRandom = clickDelayRandom;
controlData.textDelayRandom = textDelayRandom;

while(1)
{
if(me.ingame)
{
if(!inGameAt)
inGameAt = GetTickCount();

if(!_ingame)
{
_ingame = true;

sendEventToOOG(D2NT_MGR_INGAME, "In Game", parseInt(gameMinLength/1000));
lastGameStatus = 2; // in game successful
}

Delay(1000);
}
else
{
if(_ingame)
{
_ingame = false;

sendEventToOOG(D2NT_MGR_READY, "", 0);
}

locationAction(controlData.getLocation());

Delay(500);
}
}
}

function locationAction(location)
{
switch(location.id)
{
case 3: // Lobby Chat
if(!chatActionsDone)
{
chatActionsDone = true;
Delay(Random(waitInChatBeforeActionsMin, waitInChatBeforeActionsMax));

if(joinRandomChannel || joinChannelInChat != "")
{
Say("/join " + (joinRandomChannel ? getRandomString(Random(3,10)) : joinChannelInChat));
Delay(1000);
}
}
case 1: // Lobby
if(location.id == 1 && joinChatAfterGame)
{
Delay(Random(waitBeforeEnterChatMin, waitBeforeEnterChatMax));
controlData.click(controlData.controls.lobby.butto n.enterChat);
break;
}

if(GetTickCount() > nextGameMake)
{
lastGameFailed = false;

switch(lastGameStatus)
{
case 0:
controlData.click(controlData.controls.lobby.butto n.create);
nextGameMake = GetTickCount() + createGameTimeout; // set our timeout
sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name, 0);
break;
case 1: // game failed, rollover to reset timer
inGameAt = GetTickCount(); // reset inGameAt, to wait how long we should have waited..
lastGameFailed = true;
case 2:
outputGameLength();
lastGameStatus = 0;
setNextGameMake();
sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name, 0);
break;
}
}
else
timeoutDelay(nextGameMake-GetTickCount(), location);
break;

case 2: // Waiting In Line
if(GetTickCount()-lastGameMade > waitInLineTimeout)
controlData.click(controlData.controls.lobby.inLin e.button.cancel);
break;

case 4: // Create Game
sendEventToOOG(D2NT_MGR_CREATE_GAME, location.name, 0);

RunGC(); // run garbage collector between each game

locationTimeout(5000, location);

lastGameMade = GetTickCount();
lastGameStatus = 1; // pending creation
break;

case 5: // Join Game
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.bu tton.gateway);
break;

case 9: // Login
sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name, 0);
Delay(loginDelay);

controlData.setText(controlData.controls.login.edi tBox.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.unabl eToConnect.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.characterSele ct.textBox.characterInfo[me.charloc]);
if(_control && _control.GetText() != undefined)
break;

Delay(500);
}

if(_time < characterScreenTimeout)
{
Delay(characterSelectDelay);

sendEventToOOG(D2NT_MGR_SELECT_CHAR, location.name, 0);

// reset last game made, so it doesnt make a game immediately
inGameAt = 0;
setNextGameMake();

locationTimeout(5000, location);
}
else
{
timeoutDelay(realmDownRetry*60*1000, location);
controlData.click(controlData.controls.characterSe lect.button.exit);
}
break;

case 13: // Realm Down - Character Select screen
timeoutDelay(realmDownRetry*60*1000, location);
controlData.click(controlData.controls.characterSe lect.button.exit);
break;

case 14: // Character Select - Disconnected
timeoutDelay(disconnectedRetry*60*1000, location);
controlData.click(controlData.controls.characterSe lect.disconnected.button.ok);
break;

case 15: // New Character
break;

case 16: // Character Select - Please Wait popup
if(!locationTimeout(pleaseWaitTimeout, location))
controlData.click(controlData.controls.characterSe lect.pleaseWait.button.cancel);
break;

case 17: // Lobby - Lost Connection - just click okay, since we're toast anyway
controlData.click(controlData.controls.lobby.lostC onnection.button.ok);
break;

case 18: // D2 Splash
controlData.click(controlData.controls.d2Splash.te xtBox.copyright);
break;

case 19: // Login - Cdkey In Use
timeoutDelay(cdkeyInUseRetry*60*1000, location);
controlData.click(controlData.controls.login.cdkey InUse.button.ok);
break;

case 20: // Single Player - Select Difficulty
RunGC(); // run garbage collector between each game

controlData.click(controlData.singlePlayerDifficul ties[me.diff]);
break;

case 21: // Main Menu - Connecting
if(!locationTimeout(connectingToBnetTimeout, location))
controlData.click(controlData.controls.mainMenu.co nnecting.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.characterSe lect.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.pleas eWait.button.cancel);
break;

case 26: // Lobby - Game Name Exists
sendEventToOOG(D2NT_MGR_PRINT_LOG, "Game already exists", 0);

inGameAt = 0;
lastGameStatus = 0;
setNextGameMake();

locationTimeout(15000, location);
break;

case 27: // Gateway Select
controlData.clickRealmEntry(me.gatewayid);
controlData.click(controlData.controls.gateway.but ton.ok);
break;

case 28: // Lobby - Game Does Not Exist
inGameAt = Random(gameDoesNotExistDelayMin, gameDoesNotExistDelayMax);
lastGameStatus = 0;
setNextGameMake();

locationTimeout(gameDoesNotExistTimeout, location);
break;
}
}

function sendEventToOOG(locationId, statusString, pendingTime)
{
return SendCopyData("D2NT Manager", null, (locationId<<16)|pendingTime, statusString);
}

function setNextGameMake()
{
lastGameMade = GetTickCount();
nextGameMake = lastGameMade + createGameThreshold + Random(0-createGameThresholdRandom, createGameThresholdRandom) + inGameAt;
inGameAt = 0;
chatActionsDone = false;
}

function outputGameLength()
{
if(inGameAt)
{
duration = GetTickCount() - inGameAt;

inGameAt = (duration < gameMinLength ? gameMinLength - duration : 0);
}
}

function locationTimeout(time, location)
{
endtime = GetTickCount() + time;

while(controlData.getLocation().id == location.id && endtime > GetTickCount())
{
sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name + " (" + parseInt((endtime-GetTickCount())/1000) + "s)", 0);
Delay(500);
}

return (controlData.getLocation().id != location.id);
}

function timeoutDelay(time, location)
{
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));

return _retString;
}
char config
Quote:
Include("config/NTConfig.ntl");

var NTConfig_CastStatic;

function NT_LoadConfig()
{
//------------------------------------------------------------------------------
// Boss configuration
//------------------------------------------------------------------------------
NTConfig_PublicMode = false;
me.quitonhostile = false;

NTConfig_Script.push("NTPindleskin.ntj"); NTConfig_NihlathakExtension = false;
NTConfig_Script.push("NTEldritch.ntj"); NTConfig_ShenkExtension = true;
//NTConfig_Script.push("NTThreshSocket.ntj");
//NTConfig_Script.push("NTFrozenRiver.ntj"); NTConfig_ClearFrozenRiver = false;
//NTConfig_Script.push("NTGlacialTrail.ntj"); NTConfig_ClearGlacialTrail = false;
//NTConfig_Script.push("NTIcyCellar.ntj"); NTConfig_ClearIcyCellar = false;
//NTConfig_Script.push("NTDiablo.ntj");
//NTConfig_Script.push("NTTravincal.ntj");
//NTConfig_Script.push("NTSummoner.ntj");
//NTConfig_Script.push("NTDuriel.ntj");
//NTConfig_Script.push("NTAncientTunnels.ntj");
NTConfig_Script.push("NTCountess.ntj");
NTConfig_Script.push("NTPit.ntj"); NTConfig_ClearPitLevel1 = 0; // 0 : don't clear, 1 : clear path only, 2 : clear all
//NTConfig_Script.push("NTMausoleum.ntj");
NTConfig_Script.push("NTMephisto.ntj");
NTConfig_Script.push("NTAndariel.ntj");
//NTConfig_Script.push("NTBaal.ntj"); NTConfig_KillBaal = true;
//NTConfig_Script.push("NTNihlathak.ntj"); NTConfig_PindleskinExtension = false;


me.maxgametime = 2600; // time in seconds, maximum game length (0 is infinite)
NTConfig_StartDelay = 0; // Delay time in milliseconds to start;
NTConfig_AreaDelay = 5000; // Delay time in milliseconds to change area;
NTConfig_SnagDelay = 500; // Delay time in milliseconds to wait before starting picking items

NTConfig_SkipHealLife = 90; // 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_SkipHealCurses = false;// If you want to skip curses, set to true
NTConfig_UseMerc = true; // Set to true if you use a mercenary, will revive merc at a reviver npc.
NTConfig_ResetWeapon = true; // Set to true to reset weapon when reviving merc

NTConfig_LifeThresh = 60; // Drink a normal potion if under this percent of life.
NTConfig_LifeRejuvThresh = 40; // Drink a rejuvenation potion if under this percent of life.
NTConfig_ManaThresh = 30; // Drink a normal potion if under this percent of mana.
NTConfig_ManaRejuvThresh = 1; // Drink a rejuvenation potion if under this percent of mana.
NTConfig_LifeChicken = 30; // This is your chicken life percent. If you go below this life total, exit game.
NTConfig_ManaChicken = 0; // This is your chicken mana percent. If you go below this mana total, exit game.

NTConfig_MercLifeThresh = 60; // This is the threshold to use a life potion on your merc in percent.
NTConfig_MercRejuvThresh = 40; // This is the threshold to use a rejuv potion on your merc in percent.
NTConfig_MercChicken = 20; // This is your mercs chicken life percent. If he goes below this, exit game.

NTConfig_FreeSpace = 4; // Number of free columns. If less full columns are free stashing is set.

// The numbers correspond to your inventory. Set 0 to keep whatever is there, 1 to stash it.
NTConfig_Columns[0] = [1,1,1,0,0,0,0,0,0,0];
NTConfig_Columns[1] = [1,1,1,0,0,0,0,0,0,0];
NTConfig_Columns[2] = [1,1,1,0,0,0,0,0,0,0];
NTConfig_Columns[3] = [1,1,1,0,0,0,0,0,0,0];

NTConfig_MinGoldToStash = 100000; // Maximum gold amount carried before going to stash

//----------------------------------------------------------------------------------------------
// Type of potion used in each belt column
// Available types : "hp" = health | "mp" = mana | "rv" = rejuv. Can use other potion types too.
// Keep equal types at adjacent columns. First HP then MP and then HP again is a bad choice.
// Keep HP and MP at the beginning of the belt (in case you want to use rejuv and other types).
// Rejuvenations MUST, I REPEAT MUST be at the end of the belt (last x columns).
// To use rejuvenations only, put "rv" in all columns.
//----------------------------------------------------------------------------------------------
NTConfig_BeltColType[0] = "hp";
NTConfig_BeltColType[1] = "mp";
NTConfig_BeltColType[2] = "rv";
NTConfig_BeltColType[3] = "hp";

//----------------------------------------------------------------------------
// Minimum amount of potions in each column before needing refilling
// If there's less potions then this number in the column we go and shop.
// Set to 4 to go shopping as soon as there's a potion missing.
// Recommend leaving columns set to "rv" at 0. Since shops won't carry rejuvs.
//----------------------------------------------------------------------------
NTConfig_BeltColMin[0] = 4;
NTConfig_BeltColMin[1] = 4;
NTConfig_BeltColMin[2] = 0;
NTConfig_BeltColMin[3] = 4;

//-----------------------------------------------------------------------------------
// SnagIt configuration
// Here is a list of preset nip files assuming you use nip package.
// If you want to add your own .nip files, just copy any line and enter the
// To disable a .nip file, just add "//" at the start of the line or delete the line.
//-----------------------------------------------------------------------------------
NTConfig_NIPFilePath.push("uniques.nip");
//NTConfig_NIPFilePath.push("sets.nip");
//NTConfig_NIPFilePath.push("whites.nip");
//NTConfig_NIPFilePath.push("runes.nip");
//NTConfig_NIPFilePath.push("rares.nip");
//NTConfig_NIPFilePath.push("magics.nip");
//NTConfig_NIPFilePath.push("gems.nip");
//NTConfig_NIPFilePath.push("charmsjewels.nip");
//NTConfig_NIPFilePath.push("ringsamulets.nip");
//NTConfig_NIPFilePath.push("potions.nip");
//NTConfig_NIPFilePath.push("moneymaker.nip");
//NTConfig_NIPFilePath.push("keys.nip");

NTConfig_SnagRange = 40; // Radius to check for dropped items. 40 is a good number here

//------------------------------------------------------------------------------
// Cubing configuration
// Supported gems and runes recipe only
//------------------------------------------------------------------------------
NTConfig_Cubing = false; // Enable cubing

//NTConfig_CubingItem.push(["gcw",0,3]); //Chipped Diamond gcw
//NTConfig_CubingItem.push(["gcv",0,3]); //Chipped Amethyst gcv
//NTConfig_CubingItem.push(["gcb",0,3]); //Chipped Saphire gcb
//NTConfig_CubingItem.push(["gcy",0,3]); //Chipped Topaz gcy
//NTConfig_CubingItem.push(["gcr",0,3]); //Chipped Ruby gcr
//NTConfig_CubingItem.push(["gcg",0,3]); //Chipped Emerald gcg
//NTConfig_CubingItem.push(["skc",0,3]); //Chipped Skull skc

//NTConfig_CubingItem.push(["gfw",0,3]); //Flawed Diamond gfw
//NTConfig_CubingItem.push(["gfv",0,3]); //Flawed Amethyst gfv
//NTConfig_CubingItem.push(["gfb",0,3]); //Flawed Saphire gfb
//NTConfig_CubingItem.push(["gfy",0,3]); //Flawed Topaz gfy
//NTConfig_CubingItem.push(["gfr",0,3]); //Flawed Ruby gfr
//NTConfig_CubingItem.push(["gfg",0,3]); //Flawed Emerald gfg
//NTConfig_CubingItem.push(["skf",0,3]); //Flawed Skull skf

//NTConfig_CubingItem.push(["gsw",0,3]); //Normal Diamond gsw
//NTConfig_CubingItem.push(["gsv",0,3]); //Normal Amethyst gsv
//NTConfig_CubingItem.push(["gsb",0,3]); //Normal Saphire gsb
//NTConfig_CubingItem.push(["gsy",0,3]); //Normal Topaz gsy
//NTConfig_CubingItem.push(["gsr",0,3]); //Normal Ruby gsr
//NTConfig_CubingItem.push(["gsg",0,3]); //Normal Emerald gsg
//NTConfig_CubingItem.push(["sku",0,3]); //Normal Skull sku

//NTConfig_CubingItem.push(["glw",0,3]); //Flawless Diamond glw
//NTConfig_CubingItem.push(["gzv",0,3]); //Flawless Amethyst gzv
//NTConfig_CubingItem.push(["glb",0,3]); //Flawless Saphire glb
//NTConfig_CubingItem.push(["gly",0,3]); //Flawless Topaz gly
//NTConfig_CubingItem.push(["glr",0,3]); //Flawless Ruby glr
//NTConfig_CubingItem.push(["glg",0,3]); //Flawless Emerald glg
//NTConfig_CubingItem.push(["skl",0,3]); //Flawless Skull skl

//NTConfig_CubingItem.push(["r01",0,3]); //El Rune r01
//NTConfig_CubingItem.push(["r02",0,3]); //Eld Rune r02
//NTConfig_CubingItem.push(["r03",0,3]); //Tir Rune r03
//NTConfig_CubingItem.push(["r04",0,3]); //Nef Rune r04
//NTConfig_CubingItem.push(["r05",0,3]); //Eth Rune r05
//NTConfig_CubingItem.push(["r06",0,3]); //Ith Rune r06
//NTConfig_CubingItem.push(["r07",0,3]); //Tal Rune r07
//NTConfig_CubingItem.push(["r08",0,3]); //Ral Rune r08
//NTConfig_CubingItem.push(["r09",0,3]); //Ort Rune r09

//NTConfig_CubingItem.push(["r10",0,3,"gcy",0,1]); //Thul Rune + chipped Topaz r10 + gcy
//NTConfig_CubingItem.push(["r11",0,3,"gcv",0,1]); //Amn Rune + chipped Amethyst r11 + gcv
//NTConfig_CubingItem.push(["r12",0,3,"gcb",0,1]); //Sol Rune + chipped Saphire r12 + gcb
//NTConfig_CubingItem.push(["r13",0,3,"gcr",0,1]); //Shael Rune + chipped Ruby r13 + gcr
//NTConfig_CubingItem.push(["r14",0,3,"gcg",0,1]); //Dol Rune + chipped Emerald r14 + gcg
//NTConfig_CubingItem.push(["r15",0,3,"gcw",0,1]); //Hel Rune + chipped Diamond r15 + gcw

//NTConfig_CubingItem.push(["r16",0,3,"gfy",0,1]); //Io Rune + flawed Topaz r16 + gfy
//NTConfig_CubingItem.push(["r17",0,3,"gfv",0,1]); //Lum Rune + flawed Amethyst r17 + gfv
//NTConfig_CubingItem.push(["r18",0,3,"gfb",0,1]); //Ko Rune + flawed Saphire r18 + gfb
//NTConfig_CubingItem.push(["r19",0,3,"gfr",0,1]); //Fal Rune + flawed Ruby r19 + gfr
//NTConfig_CubingItem.push(["r20",0,3,"gfg",0,1]); //Lem Rune + flawed Emerald r20 + gfg
//NTConfig_CubingItem.push(["r21",0,2,"gfw",0,1]); //Pul Rune + flawed Diamond r21 + gfw

//NTConfig_CubingItem.push(["r22",0,2,"gsy",0,1]); //Um Rune + Topaz r22 + gsy
//NTConfig_CubingItem.push(["r23",0,2,"gsv",0,1]); //Mal Rune + Amethyst r23 + gsv
//NTConfig_CubingItem.push(["r24",0,2,"gsb",0,1]); //Ist Rune + Saphire r24 + gsb
//NTConfig_CubingItem.push(["r25",0,2,"gsr",0,1]); //Gul Rune + Ruby r25 + gsr
//NTConfig_CubingItem.push(["r26",0,2,"gsg",0,1]); //Vex Rune + Emerald r26 + gsg
//NTConfig_CubingItem.push(["r27",0,2,"gsw",0,1]); //Ohm Rune + Diamond r27 + gsw

//NTConfig_CubingItem.push(["r28",0,2,"gly",0,1]); //Lo Rune + flawless Topaz r28 + gly
//NTConfig_CubingItem.push(["r29",0,2,"gzv",0,1]); //Sur Rune + flawless Amethyst r29 + gzv
//NTConfig_CubingItem.push(["r30",0,2,"glb",0,1]); //Ber Rune + flawless Saphire r30 + glb
//NTConfig_CubingItem.push(["r31",0,2,"glr",0,1]); //Jah Rune + flawless Ruby r31 + gll
//NTConfig_CubingItem.push(["r32",0,2,"glg",0,1]); //Cham Rune + flawless Emerald r32 + glg

//------------------------------------------------------------------------------
// Gamble configuration
// To specify what items to gamble, adjust the array with the desired item codes
//------------------------------------------------------------------------------
//NTConfig_Gamble = true; // Enable gambling
//NTConfig_GambleStopGold = 300000; // Gold amount to stop the gambling

//NTConfig_GambleItem.push("rin"); // Rings
//NTConfig_GambleItem.push("amu"); // Amulets
//NTConfig_GambleItem.push("ci0"); // Circlets
//NTConfig_GambleItem.push("ci1"); // Coronets
//NTConfig_GambleItem.push("lgl"); // Leather Gloves
//NTConfig_GambleItem.push("vgl"); // Heavy Gloves
//NTConfig_GambleItem.push("mgl"); // Chain Gloves
//NTConfig_GambleItem.push("tgl"); // Light Gauntlets
//NTConfig_GambleItem.push("hgl"); // Gauntlets


NTConfig_OpenChest = true; // Set to true to open chest

//------------------------------------------------------------------------------
// Attack configuration
//------------------------------------------------------------------------------
NTConfig_AttackSkill[0] = 49; // Cast your first spell once. Set to 0 if you won't
NTConfig_AttackSkill[1] = 49; // Cast your primary spell to boss.
NTConfig_AttackSkill[2] = 49; // Cast your primary spell to others.
NTConfig_AttackSkill[3] = 53; // Cast your primary untimed spell if primary spell is timed spell. Set to 0 if you won't
NTConfig_AttackSkill[4] = 0; // Cast your secondary spell if monster is immune to your primary spell. Set to 0 if you won't
NTConfig_AttackSkill[5] = 0; // Cast your secondary untimed spell if secondary spell is timed spell. Set to 0 if you won't
NTConfig_ClearPosition = true; // Set to true if you want to clear area after killing boss.
NTConfig_CheckSafe = true; // Set to true to check for curses, merc and potion (go to town if needed)

NTConfig_CastStatic = 100; // Cast Static Field until monster's HP lower less than this percent. Set to 100 if you won't
}
baal starter script
Quote:
var gameMinLength = 240000; // time in milliseconds, minimum game length, 180 seconds default (1 game/3 minutes)

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

// DONT EDIT ANYTHING BELOW THIS

// D2NT Manager Command
const D2NT_MGR_LOADING = 1;
const D2NT_MGR_READY = 2;
const D2NT_MGR_LOGIN = 3;
const D2NT_MGR_SELECT_CHAR = 4;
const D2NT_MGR_CREATE_GAME = 5;
const D2NT_MGR_INGAME = 6;
const D2NT_MGR_RESTART = 7;
const D2NT_MGR_CHICKEN = 8;
const D2NT_MGR_PRINT_STATUS = 9;
const D2NT_MGR_PRINT_LOG = 10;

var lastGameMade = GetTickCount();
var lastGameStatus = 0;
var nextGameMake = 0;
var inGameAt = 0;
var chatActionsDone = false;
var lastGameFailed = false;

Include("controlInfo.ntl");

var controlData = new controlInfo();

function NTMain()
{
Delay(1000);

var _ingame = false;

controlData.clickDelay = clickDelay;
controlData.textDelay = textDelay;
controlData.clickDelayRandom = clickDelayRandom;
controlData.textDelayRandom = textDelayRandom;

while(1)
{
if(me.ingame)
{
if(!inGameAt)
inGameAt = GetTickCount();

if(!_ingame)
{
_ingame = true;

sendEventToOOG(D2NT_MGR_INGAME, "In Game", parseInt(gameMinLength/1000));
lastGameStatus = 2; // in game successful
}

Delay(1000);
}
else
{
if(_ingame)
{
_ingame = false;

sendEventToOOG(D2NT_MGR_READY, "", 0);
}

locationAction(controlData.getLocation());

Delay(500);
}
}
}

function locationAction(location)
{
switch(location.id)
{
case 3: // Lobby Chat
if(!chatActionsDone)
{
chatActionsDone = true;
Delay(Random(waitInChatBeforeActionsMin, waitInChatBeforeActionsMax));

if(joinRandomChannel || joinChannelInChat != "")
{
Say("/join " + (joinRandomChannel ? getRandomString(Random(3,10)) : joinChannelInChat));
Delay(1000);
}
}
case 1: // Lobby
if(location.id == 1 && joinChatAfterGame)
{
Delay(Random(waitBeforeEnterChatMin, waitBeforeEnterChatMax));
controlData.click(controlData.controls.lobby.butto n.enterChat);
break;
}

if(GetTickCount() > nextGameMake)
{
lastGameFailed = false;

switch(lastGameStatus)
{
case 0:
controlData.click(controlData.controls.lobby.butto n.create);
nextGameMake = GetTickCount() + createGameTimeout; // set our timeout
sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name, 0);
break;
case 1: // game failed, rollover to reset timer
inGameAt = GetTickCount(); // reset inGameAt, to wait how long we should have waited..
lastGameFailed = true;
case 2:
outputGameLength();
lastGameStatus = 0;
setNextGameMake();
sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name, 0);
break;
}
}
else
timeoutDelay(nextGameMake-GetTickCount(), location);
break;

case 2: // Waiting In Line
if(GetTickCount()-lastGameMade > waitInLineTimeout)
controlData.click(controlData.controls.lobby.inLin e.button.cancel);
break;

case 4: // Create Game
sendEventToOOG(D2NT_MGR_CREATE_GAME, location.name, 0);

RunGC(); // run garbage collector between each game

locationTimeout(5000, location);

lastGameMade = GetTickCount();
lastGameStatus = 1; // pending creation
break;

case 5: // Join Game
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.bu tton.gateway);
break;

case 9: // Login
sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name, 0);
Delay(loginDelay);

controlData.setText(controlData.controls.login.edi tBox.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.unabl eToConnect.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.characterSele ct.textBox.characterInfo[me.charloc]);
if(_control && _control.GetText() != undefined)
break;

Delay(500);
}

if(_time < characterScreenTimeout)
{
Delay(characterSelectDelay);

sendEventToOOG(D2NT_MGR_SELECT_CHAR, location.name, 0);

// reset last game made, so it doesnt make a game immediately
inGameAt = 0;
setNextGameMake();

locationTimeout(5000, location);
}
else
{
timeoutDelay(realmDownRetry*60*1000, location);
controlData.click(controlData.controls.characterSe lect.button.exit);
}
break;

case 13: // Realm Down - Character Select screen
timeoutDelay(realmDownRetry*60*1000, location);
controlData.click(controlData.controls.characterSe lect.button.exit);
break;

case 14: // Character Select - Disconnected
timeoutDelay(disconnectedRetry*60*1000, location);
controlData.click(controlData.controls.characterSe lect.disconnected.button.ok);
break;

case 15: // New Character
break;

case 16: // Character Select - Please Wait popup
if(!locationTimeout(pleaseWaitTimeout, location))
controlData.click(controlData.controls.characterSe lect.pleaseWait.button.cancel);
break;

case 17: // Lobby - Lost Connection - just click okay, since we're toast anyway
controlData.click(controlData.controls.lobby.lostC onnection.button.ok);
break;

case 18: // D2 Splash
controlData.click(controlData.controls.d2Splash.te xtBox.copyright);
break;

case 19: // Login - Cdkey In Use
timeoutDelay(cdkeyInUseRetry*60*1000, location);
controlData.click(controlData.controls.login.cdkey InUse.button.ok);
break;

case 20: // Single Player - Select Difficulty
RunGC(); // run garbage collector between each game

controlData.click(controlData.singlePlayerDifficul ties[me.diff]);
break;

case 21: // Main Menu - Connecting
if(!locationTimeout(connectingToBnetTimeout, location))
controlData.click(controlData.controls.mainMenu.co nnecting.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.characterSe lect.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.pleas eWait.button.cancel);
break;

case 26: // Lobby - Game Name Exists
sendEventToOOG(D2NT_MGR_PRINT_LOG, "Game already exists", 0);

inGameAt = 0;
lastGameStatus = 0;
setNextGameMake();

locationTimeout(15000, location);
break;

case 27: // Gateway Select
controlData.clickRealmEntry(me.gatewayid);
controlData.click(controlData.controls.gateway.but ton.ok);
break;

case 28: // Lobby - Game Does Not Exist
inGameAt = Random(gameDoesNotExistDelayMin, gameDoesNotExistDelayMax);
lastGameStatus = 0;
setNextGameMake();

locationTimeout(gameDoesNotExistTimeout, location);
break;
}
}

function sendEventToOOG(locationId, statusString, pendingTime)
{
return SendCopyData("D2NT Manager", null, (locationId<<16)|pendingTime, statusString);
}

function setNextGameMake()
{
lastGameMade = GetTickCount();
nextGameMake = lastGameMade + createGameThreshold + Random(0-createGameThresholdRandom, createGameThresholdRandom) + inGameAt;
inGameAt = 0;
chatActionsDone = false;
}

function outputGameLength()
{
if(inGameAt)
{
duration = GetTickCount() - inGameAt;

inGameAt = (duration < gameMinLength ? gameMinLength - duration : 0);
}
}

function locationTimeout(time, location)
{
endtime = GetTickCount() + time;

while(controlData.getLocation().id == location.id && endtime > GetTickCount())
{
sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name + " (" + parseInt((endtime-GetTickCount())/1000) + "s)", 0);
Delay(500);
}

return (controlData.getLocation().id != location.id);
}

function timeoutDelay(time, location)
{
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));

return _retString;
}
baal char script
Quote:
Include("config/NTConfig.ntl");

var NTConfig_PutAura;
var NTConfig_UseRedemption;

function NT_LoadConfig()
{
//------------------------------------------------------------------------------
// Boss configuration
//------------------------------------------------------------------------------
NTConfig_PublicMode = false;
me.quitonhostile = false;

//NTConfig_Script.push("NTPindleskin.ntj"); NTConfig_NihlathakExtension = false;
NTConfig_Script.push("NTNihlathak.ntj"); NTConfig_PindleskinExtension = false;
//NTConfig_Script.push("NTEldritch.ntj"); NTConfig_ShenkExtension = false;
//NTConfig_Script.push("NTThreshSocket.ntj");
//NTConfig_Script.push("NTFrozenRiver.ntj"); NTConfig_ClearFrozenRiver = false;
//NTConfig_Script.push("NTGlacialTrail.ntj"); NTConfig_ClearGlacialTrail = false;
//NTConfig_Script.push("NTIcyCellar.ntj"); NTConfig_ClearIcyCellar = false;
NTConfig_Script.push("NTBaal.ntj"); NTConfig_KillBaal = true;
//NTConfig_Script.push("NTDiablo.ntj");
//NTConfig_Script.push("NTMephisto.ntj");
//NTConfig_Script.push("NTTravincal.ntj");
//NTConfig_Script.push("NTSummoner.ntj");
//NTConfig_Script.push("NTDuriel.ntj");
//NTConfig_Script.push("NTAncientTunnels.ntj");
//NTConfig_Script.push("NTAndariel.ntj");
//NTConfig_Script.push("NTCountess.ntj");
//NTConfig_Script.push("NTPit.ntj"); NTConfig_ClearPitLevel1 = 1; // 0 : don't clear, 1 : clear path only, 2 : clear all
//NTConfig_Script.push("NTMausoleum.ntj");

me.maxgametime = 1000; // time in seconds, maximum game length (0 is infinite)
NTConfig_StartDelay =500; // Delay time in milliseconds to start;
NTConfig_AreaDelay = 500; // Delay time in milliseconds to change area;
NTConfig_SnagDelay = 500; // Delay time in milliseconds to wait before starting picking items

NTConfig_SkipHealLife = 90; // 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_SkipHealCurses = false;// If you want to skip curses, set to true
NTConfig_UseMerc = true; // Set to true if you use a mercenary, will revive merc at a reviver npc.
NTConfig_ResetWeapon = true; // Set to true to reset weapon when reviving merc

NTConfig_LifeThresh = 60; // Drink a normal potion if under this percent of life.
NTConfig_LifeRejuvThresh = 40; // Drink a rejuvenation potion if under this percent of life.
NTConfig_ManaThresh = 30; // Drink a normal potion if under this percent of mana.
NTConfig_ManaRejuvThresh = 1; // Drink a rejuvenation potion if under this percent of mana.
NTConfig_LifeChicken = 30; // This is your chicken life percent. If you go below this life total, exit game.
NTConfig_ManaChicken = 0; // This is your chicken mana percent. If you go below this mana total, exit game.

NTConfig_MercLifeThresh = 60; // This is the threshold to use a life potion on your merc in percent.
NTConfig_MercRejuvThresh = 40; // This is the threshold to use a rejuv potion on your merc in percent.
NTConfig_MercChicken = 20; // This is your mercs chicken life percent. If he goes below this, exit game.

NTConfig_FreeSpace = 4; // Number of free columns. If less full columns are free stashing is set.

// The numbers correspond to your inventory. Set 0 to keep whatever is there, 1 to stash it.
NTConfig_Columns[0] = [1,1,1,1,0,0,0,0,0,0];
NTConfig_Columns[1] = [1,1,1,1,0,0,0,0,0,0];
NTConfig_Columns[2] = [1,1,1,1,0,0,0,0,0,0];
NTConfig_Columns[3] = [1,1,1,1,0,0,0,0,0,0];

NTConfig_MinGoldToStash = 100000; // Maximum gold amount carried before going to stash

//----------------------------------------------------------------------------------------------
// Type of potion used in each belt column
// Available types : "hp" = health | "mp" = mana | "rv" = rejuv. Can use other potion types too.
// Keep equal types at adjacent columns. First HP then MP and then HP again is a bad choice.
// Keep HP and MP at the beginning of the belt (in case you want to use rejuv and other types).
// Rejuvenations MUST, I REPEAT MUST be at the end of the belt (last x columns).
// To use rejuvenations only, put "rv" in all columns.
//----------------------------------------------------------------------------------------------
NTConfig_BeltColType[0] = "hp";
NTConfig_BeltColType[1] = "hp";
NTConfig_BeltColType[2] = "rv";
NTConfig_BeltColType[3] = "mv";

//----------------------------------------------------------------------------

// Minimum amount of potions in each column before needing refilling
// If there's less potions then this number in the column we go and shop.
// Set to 4 to go shopping as soon as there's a potion missing.
// Recommend leaving columns set to "rv" at 0. Since shops won't carry rejuvs.
//----------------------------------------------------------------------------
NTConfig_BeltColMin[0] = 4;
NTConfig_BeltColMin[1] = 4;
NTConfig_BeltColMin[2] = 0;
NTConfig_BeltColMin[3] = 4;

//-----------------------------------------------------------------------------------
// SnagIt configuration
// Here is a list of preset nip files assuming you use nip package.
// If you want to add your own .nip files, just copy any line and enter the
// To disable a .nip file, just add "//" at the start of the line or delete the line.
//-----------------------------------------------------------------------------------
NTConfig_NIPFilePath.push("uniques.nip");
//NTConfig_NIPFilePath.push("sets.nip");
//NTConfig_NIPFilePath.push("whites.nip");
//NTConfig_NIPFilePath.push("runes.nip");
//NTConfig_NIPFilePath.push("rares.nip");
//NTConfig_NIPFilePath.push("magics.nip");
//NTConfig_NIPFilePath.push("gems.nip");
//NTConfig_NIPFilePath.push("charmsjewels.nip");
//NTConfig_NIPFilePath.push("ringsamulets.nip");
//NTConfig_NIPFilePath.push("potions.nip");
//NTConfig_NIPFilePath.push("moneymaker.nip");
//NTConfig_NIPFilePath.push("keys.nip");

NTConfig_SnagRange = 40; // Radius to check for dropped items. 40 is a good number here

//------------------------------------------------------------------------------
// Cubing configuration
// Supported gems and runes recipe only
//------------------------------------------------------------------------------
NTConfig_Cubing = false; // Enable cubing

//NTConfig_CubingItem.push(["gcw",0,3]); //Chipped Diamond gcw
//NTConfig_CubingItem.push(["gcv",0,3]); //Chipped Amethyst gcv
//NTConfig_CubingItem.push(["gcb",0,3]); //Chipped Saphire gcb
//NTConfig_CubingItem.push(["gcy",0,3]); //Chipped Topaz gcy
//NTConfig_CubingItem.push(["gcr",0,3]); //Chipped Ruby gcr
//NTConfig_CubingItem.push(["gcg",0,3]); //Chipped Emerald gcg
//NTConfig_CubingItem.push(["skc",0,3]); //Chipped Skull skc

//NTConfig_CubingItem.push(["gfw",0,3]); //Flawed Diamond gfw
//NTConfig_CubingItem.push(["gfv",0,3]); //Flawed Amethyst gfv
//NTConfig_CubingItem.push(["gfb",0,3]); //Flawed Saphire gfb
//NTConfig_CubingItem.push(["gfy",0,3]); //Flawed Topaz gfy
//NTConfig_CubingItem.push(["gfr",0,3]); //Flawed Ruby gfr
//NTConfig_CubingItem.push(["gfg",0,3]); //Flawed Emerald gfg
//NTConfig_CubingItem.push(["skf",0,3]); //Flawed Skull skf

//NTConfig_CubingItem.push(["gsw",0,3]); //Normal Diamond gsw
//NTConfig_CubingItem.push(["gsv",0,3]); //Normal Amethyst gsv
//NTConfig_CubingItem.push(["gsb",0,3]); //Normal Saphire gsb
//NTConfig_CubingItem.push(["gsy",0,3]); //Normal Topaz gsy
//NTConfig_CubingItem.push(["gsr",0,3]); //Normal Ruby gsr
//NTConfig_CubingItem.push(["gsg",0,3]); //Normal Emerald gsg
//NTConfig_CubingItem.push(["sku",0,3]); //Normal Skull sku

//NTConfig_CubingItem.push(["glw",0,3]); //Flawless Diamond glw
//NTConfig_CubingItem.push(["gzv",0,3]); //Flawless Amethyst gzv
//NTConfig_CubingItem.push(["glb",0,3]); //Flawless Saphire glb
//NTConfig_CubingItem.push(["gly",0,3]); //Flawless Topaz gly
//NTConfig_CubingItem.push(["glr",0,3]); //Flawless Ruby glr
//NTConfig_CubingItem.push(["glg",0,3]); //Flawless Emerald glg
//NTConfig_CubingItem.push(["skl",0,3]); //Flawless Skull skl

//NTConfig_CubingItem.push(["r01",0,3]); //El Rune r01
//NTConfig_CubingItem.push(["r02",0,3]); //Eld Rune r02
//NTConfig_CubingItem.push(["r03",0,3]); //Tir Rune r03
//NTConfig_CubingItem.push(["r04",0,3]); //Nef Rune r04
//NTConfig_CubingItem.push(["r05",0,3]); //Eth Rune r05
//NTConfig_CubingItem.push(["r06",0,3]); //Ith Rune r06
//NTConfig_CubingItem.push(["r07",0,3]); //Tal Rune r07
//NTConfig_CubingItem.push(["r08",0,3]); //Ral Rune r08
//NTConfig_CubingItem.push(["r09",0,3]); //Ort Rune r09

//NTConfig_CubingItem.push(["r10",0,3,"gcy",0,1]); //Thul Rune + chipped Topaz r10 + gcy
//NTConfig_CubingItem.push(["r11",0,3,"gcv",0,1]); //Amn Rune + chipped Amethyst r11 + gcv
//NTConfig_CubingItem.push(["r12",0,3,"gcb",0,1]); //Sol Rune + chipped Saphire r12 + gcb
//NTConfig_CubingItem.push(["r13",0,3,"gcr",0,1]); //Shael Rune + chipped Ruby r13 + gcr
//NTConfig_CubingItem.push(["r14",0,3,"gcg",0,1]); //Dol Rune + chipped Emerald r14 + gcg
//NTConfig_CubingItem.push(["r15",0,3,"gcw",0,1]); //Hel Rune + chipped Diamond r15 + gcw

NTConfig_CubingItem.push(["r16",0,3,"gfy",0,1]); //Io Rune + flawed Topaz r16 + gfy
NTConfig_CubingItem.push(["r17",0,3,"gfv",0,1]); //Lum Rune + flawed Amethyst r17 + gfv
NTConfig_CubingItem.push(["r18",0,3,"gfb",0,1]); //Ko Rune + flawed Saphire r18 + gfb
NTConfig_CubingItem.push(["r19",0,3,"gfr",0,1]); //Fal Rune + flawed Ruby r19 + gfr
NTConfig_CubingItem.push(["r20",0,3,"gfg",0,1]); //Lem Rune + flawed Emerald r20 + gfg
NTConfig_CubingItem.push(["r21",0,2,"gfw",0,1]); //Pul Rune + flawed Diamond r21 + gfw

NTConfig_CubingItem.push(["r22",0,2,"gsy",0,1]); //Um Rune + Topaz r22 + gsy
NTConfig_CubingItem.push(["r23",0,2,"gsv",0,1]); //Mal Rune + Amethyst r23 + gsv
//NTConfig_CubingItem.push(["r24",0,2,"gsb",0,1]); //Ist Rune + Saphire r24 + gsb
//NTConfig_CubingItem.push(["r25",0,2,"gsr",0,1]); //Gul Rune + Ruby r25 + gsr
//NTConfig_CubingItem.push(["r26",0,2,"gsg",0,1]); //Vex Rune + Emerald r26 + gsg
//NTConfig_CubingItem.push(["r27",0,2,"gsw",0,1]); //Ohm Rune + Diamond r27 + gsw

//NTConfig_CubingItem.push(["r28",0,2,"gly",0,1]); //Lo Rune + flawless Topaz r28 + gly
//NTConfig_CubingItem.push(["r29",0,2,"gzv",0,1]); //Sur Rune + flawless Amethyst r29 + gzv
//NTConfig_CubingItem.push(["r30",0,2,"glb",0,1]); //Ber Rune + flawless Saphire r30 + glb
//NTConfig_CubingItem.push(["r31",0,2,"glr",0,1]); //Jah Rune + flawless Ruby r31 + gll
//NTConfig_CubingItem.push(["r32",0,2,"glg",0,1]); //Cham Rune + flawless Emerald r32 + glg

//------------------------------------------------------------------------------
// Gamble configuration
// To specify what items to gamble, adjust the array with the desired item codes
//------------------------------------------------------------------------------
NTConfig_Gamble = false; // Enable gambling
NTConfig_GambleStopGold = 300000; // Gold amount to stop the gambling

NTConfig_GambleItem.push("rin"); // Rings
NTConfig_GambleItem.push("amu"); // Amulets
NTConfig_GambleItem.push("ci0"); // Circlets
NTConfig_GambleItem.push("ci1"); // Coronets
//NTConfig_GambleItem.push("lgl"); // Leather Gloves
//NTConfig_GambleItem.push("vgl"); // Heavy Gloves
//NTConfig_GambleItem.push("mgl"); // Chain Gloves
//NTConfig_GambleItem.push("tgl"); // Light Gauntlets
//NTConfig_GambleItem.push("hgl"); // Gauntlets


NTConfig_OpenChest = true; // Set to true to open chest

//------------------------------------------------------------------------------
// Attack configuration
//------------------------------------------------------------------------------
NTConfig_PutAura = 113; // Concentration
NTConfig_AttackSkill[0] = 0; // Cast your first spell once. Set to 0 if you won't
NTConfig_AttackSkill[1] = 112; // Blessed Hammer
NTConfig_AttackSkill[2] = 112; // Blessed Hammer
NTConfig_AttackSkill[4] = 0; // Cast your secondary spell if monster is immune to your primary spell. Set to 0 if you won't
NTConfig_ClearPosition = true; // Set to true if you want to clear area after killing boss.
NTConfig_CheckSafe = true; // Set to true to check for curses, merc and potion (go to town if needed)


NTConfig_UseRedemption = true; // Set to true to use Redemption after killing monster.
}
wär super wenn man die dauernden wnas beseitigen könnte
achja ich lass sogar auf 2vpcs laufen, mit 2 unterschiedlichen installationen und keys, falls das von beduetung ist