Hai leute,
ich hab hier so ein kleines problem mit der NTLeechStarter.ntj er startet ganz normal dann geht er ins game und dann kommt dieser fehler
-> d2nt/scripts/NTBot/NTBotGame.ntj (32) : ReferenceError:NT_LoadConfig is not defined <-
char name ist aber richtig eingegebn :/
woran kann das noch liegen bitte sagt mir ein paar sachen was ich umstellen muss damit der fehler nicht mehr kommt??
hier mal die NTLeechStarter.ntj
Code:
//credit for this goes to D2od who knows way more than I do
// =============================================================================
// Leader Account settings
// =============================================================================
var leaderAccountName = "sleipnir1339";
var leaderName = "wwwNewKids_com";
// =============================================================================
// Game password (leave blank if none)
// =============================================================================
var gamepassword = "";
// =============================================================================
// UseCDKeyChangeTrick :
// if true, the follow bot will say his gamename/gamepwd (set in the OOG) in chat before each game
// in order to increment his number of runs (to switch CDKeys after xx runs)
// if false, the follow bot will never change his CDKey
// =============================================================================
var UseCDKeyChangeTrick = false;
// =============================================================================
// Debug : set to true if you are experiencing problems with your JoinBot
// it will log in your OOG the lobby chat actions
// =============================================================================
var Debug = false;
////////////////////////////////////////////////////////////////////////////////
// Lobby chat settings :
////////////////////////////////////////////////////////////////////////////////
// Set to true to join the chat after each game (needed for JoinBot)
var joinChatAfterGame = true;
// Message said when you first enter the chat
var firstJoinMessage = "";
// Message said after each game
var chatMessageAfterGame = "";
// if this is true, will join a random channel, otherwise it will use the channel below..
var joinRandomChannel = false;
// Name of the channel you want to join (leave blank if you want to stay in the default channel)
var joinChannelInChat = "op elitebaal";
////////////////////////////////////////////////////////////////////////////////
// Delays:
////////////////////////////////////////////////////////////////////////////////
// Minimum game length, waits in the lobby if last game was too short
// I recommend to keep a value > 300000 (milliseconds) to avoid bnet temporary ban
var gameMinLength = 420000;
// realm delays (minutes)
var unableToConnectRetry = 5;
var realmDownRetry = 120;
var disconnectedRetry = 5;
var cdkeyInUseRetry = 5;
// interface delays (milliseconds)
var connectingToBnetTimeout = 20000;
var characterScreenTimeout = 10000;
var pleaseWaitTimeout = 10000;
var createGameThreshold = 10000;
var createGameThresholdRandom = 1000;
var createGameTimeout = 15000;
var waitInLineTimeout = 15000;
var characterSelectDelay = 1000;
var loginDelay = 1000;
var clickDelay = 500;
var textDelay = 500;
var clickDelayRandom = 500;
var textDelayRandom = 500;
var gameDoesNotExistDelayMin = 600000;
var gameDoesNotExistDelayMax = 900000;
var gameDoesNotExistTimeout = 30000;
var waitBeforeEnterChatMin = 1000;
var waitBeforeEnterChatMax = 2000;
var waitInChatBeforeActionsMin = 2000;
var waitInChatBeforeActionsMax = 3000;
// Only for JoinBot (friend list delay, milliseconds)
var LeaderOfflineDelay = 30000;
var LeaderInChatDelay = 10000;
var GameIsFullDelay = 30000;
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
// DO NOT EDIT ANYTHING BELOW THIS
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//D2NT Manager Command
const D2NT_MGR_LOADING = 1;
const D2NT_MGR_READY = 2;
const D2NT_MGR_LOGIN = 3;
const D2NT_MGR_CREATE_GAME = 4;
const D2NT_MGR_INGAME = 5;
const D2NT_MGR_RESTART = 6;
const D2NT_MGR_CHICKEN = 7;
const D2NT_MGR_PRINT_STATUS = 8;
const D2NT_MGR_PRINT_LOG = 9;
var lastGameMade = GetTickCount();
var lastGameStatus = 0;
var nextGameMake = 0;
var inGameAt = 0;
var chatActionsDone = false;
var lastGameFailed = false;
var sayChatMsgAfterGame = false;
Include("libs/controlInfo.ntl");
Include("libs/common/NTColorConverter.ntl");
var controlData = new controlInfo();
var game = '';
var _gamename = "";
var _gamepassword = "";
var _leaderOfflineTick = -LeaderOfflineDelay;
var _leaderInChatTick = -LeaderInChatDelay;
var _GameIsFullTick = -GameIsFullDelay;
function NTMain()
{
Delay(1000);
var _ingame = false;
controlData.clickDelay = clickDelay;
controlData.textDelay = textDelay;
controlData.clickDelayRandom = clickDelayRandom;
controlData.textDelayRandom = textDelayRandom;
while(1)
{
if(me.ingame)
{
_gamename = me.gamename;
_gamepassword = me.gamepassword;
if(!inGameAt)
inGameAt = GetTickCount();
if(!_ingame)
{
RunGC(); // run garbage collector between each game
if(Load("NTBot/NTBotGame.ntj"))
{
_ingame = true;
if(me.playtype > 0)
sendEventToOOG(D2NT_MGR_INGAME, "In Game[IP:" + me.gameserverip.split(".")[3] + "]", 0);
else
sendEventToOOG(D2NT_MGR_INGAME, "In Game", 0);
lastGameStatus = 2; // in game successful
// To exit game as soon as the leader quits
//Load("NTBot/NTCheckLeader.ntj");
// to party only the leader
//Load("NTBot/tools/NTTools_AutoPartyJoinFriendGames.ntj");
}
}
Delay(1000);
}
else
{
if(_ingame)
{
_ingame = false;
sayChatMsgAfterGame = true;
sendEventToOOG(D2NT_MGR_READY, "", 0);
}
locationAction(controlData.getLocation());
Delay(500);
}
}
}
function locationAction(location)
{
switch(location.id)
{
case 3: // Lobby Chat
sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name, 0);
if(!chatActionsDone)
{
Delay(Random(waitInChatBeforeActionsMin, waitInChatBeforeActionsMax));
if(joinRandomChannel || joinChannelInChat != "")
{
Say("/join " + (joinRandomChannel ? getRandomString(Random(3,10)) : joinChannelInChat));
Delay(1000);
}
if(firstJoinMessage)
{
Say(firstJoinMessage);
Delay(200);
}
chatActionsDone = true;
}
if (chatMessageAfterGame && _gamename != "" && sayChatMsgAfterGame == true)
{
Say(chatMessageAfterGame);
sayChatMsgAfterGame = false;
Delay(200);
}
game = '';
var _tick = GetTickCount();
if ((_leaderOfflineTick < 0 || (_leaderOfflineTick + LeaderOfflineDelay) < _tick)
&& (_leaderInChatTick < 0 || (_leaderInChatTick + LeaderInChatDelay) < _tick)
&& (_GameIsFullTick < 0 || (_GameIsFullTick + GameIsFullDelay) < _tick))
{
DebugInOOG('Locating the leader : '+leaderAccountName);
Say('/f l');
Delay(1500);
}
if(chat = controlData.get(controlData.controls.lobby.chat.textBox.channelText))
{
var found_leader = false;
lines = chat.GetText();
if(!lines) { break; }
for (var line_id = lines.length - 1; line_id > -1; line_id--)
{
if (found_leader) // useless... :/
break;
if (lines[line_id].substring(0,1) == " ")
continue;
// retrieving the whole message
var msg = lines[line_id].replace(/^\s+|\s+$/, "");
var msglines = 1;
while (lines[line_id+msglines] != undefined && lines[line_id+msglines].substring(0,2) == " ")
{
msg += " " + lines[line_id+msglines].replace(/^\s+|\s+$/, "");
msglines++;
}
if (msg.lastIndexOf(leaderName) >= 0)
DebugInOOG("yc8found him :;"+msg);
// checking if the msg is a friendly whisper
if (msg.lastIndexOf(leaderName + ' (*' +leaderAccountName+')') > -1)
{
var regGameNameWhispered=/^.*(game|partie|spiel|partita|partida).*(nomm[^\s]*|called|chiamata)\s*([\w\s-]*\w)\s*\.\s*$/gi;
if (msg.match(regGameNameWhispered))
game = msg.replace(regGameNameWhispered, "$3");
if (game != '')
{
found_leader = true;
break;
}
}
// checking if the msg is from the friend list
if (msg.lastIndexOf(': '+leaderAccountName+',') > -1)
{
found_leader = true;
var regOffline=/^.*(offline|desconectado).*$/gi;
var regInChat=/^.*(channel|canale?)\s*([\w\s-]*\w)\.?\s*$/gi;
var regGameName=/^.*(game|partie|spiel|partita|partida)\s*([\w\s-]*\w)\s*\(priv[^\)]*\)\.\s*$/gi;
if (msg.match(regOffline)
&& (_leaderOfflineTick < 0 || (_leaderOfflineTick + LeaderOfflineDelay) < _tick))
{
DebugInOOG('Leader is offline, delay '+Math.round(LeaderOfflineDelay/1000)+' sec for next /f l.');
_leaderOfflineTick = GetTickCount();
}
else if (msg.match(regInChat)
&& (_leaderInChatTick < 0 || (_leaderInChatTick + LeaderInChatDelay) < _tick))
{
DebugInOOG('Leader is in the chat "'+msg.replace(regInChat, "$2")+'", delay '+Math.round(LeaderInChatDelay/1000)+' sec for next /f l.');
_leaderInChatTick = GetTickCount();
}
else if (msg.match(regGameName)
&& ((_leaderOfflineTick < 0 || (_leaderOfflineTick + LeaderOfflineDelay) < _tick)
&& (_leaderInChatTick < 0 || (_leaderInChatTick + LeaderInChatDelay) < _tick)))
{
game = msg.replace(regGameName, "$2");
}
else if ((_leaderInChatTick < 0 || (_leaderInChatTick + LeaderInChatDelay) < _tick)
&& (_leaderOfflineTick < 0 || (_leaderOfflineTick + LeaderOfflineDelay) < _tick))
{
// unhandled line, supposelly "In Realm"
DebugInOOG('The leader was in the the lobby but not in chat, delay '+Math.round(LeaderInChatDelay/1000)+' sec for next /f l.');
_leaderInChatTick = GetTickCount();
}
break;
}
}
if (found_leader == false)
DebugInOOG('I couldn\'t find the leader in my friend list!');
if (game!="")
{
if (UseCDKeyChangeTrick)
{
// increasing the number of runs in the OOG (for CDKey switch)
// Problem : the gamename/gamepassword set in your OOG will be typed in the lobbyChat
// this may output a red message in the lobby chat if you have a password set (not a real problem)
// I recommend to set a gamename like "Run" and no gamepassword in your OOG. -> this will output "Run-01", "Run-02", etc in lobby chat before joining games
sendEventToOOG(D2NT_MGR_CREATE_GAME, location.name, 0);
Delay(1000);
}
DebugInOOG('Leader is in the game "' + game + '"');
controlData.click(controlData.controls.lobby.button.join);
Delay(100);
}
}
else
{
DebugInOOG('I can\'t read the chat!');
//DebugInOOG('You probably haven\'t added the lobby chat controlinfo coordinates!');
Delay(30000);
}
break;
case 1: // Lobby
if(location.id == 1 && joinChatAfterGame)
{
Delay(Random(waitBeforeEnterChatMin, waitBeforeEnterChatMax));
controlData.click(controlData.controls.lobby.button.enterChat);
break;
}
break;
case 2: // Waiting In Line
if(GetTickCount()-lastGameMade > waitInLineTimeout)
controlData.click(controlData.controls.lobby.inLine.button.cancel);
break;
case 4: // Create Game
if(!controlData.get(controlData.controls.lobby.create.editBox.gameName))
{
controlData.click(controlData.controls.lobby.button.join);
Delay (500);
controlData.click(controlData.controls.lobby.button.create);
Delay (500);
break;
}
sendEventToOOG(D2NT_MGR_CREATE_GAME, location.name, 0);
locationTimeout(5000, location);
lastGameMade = GetTickCount();
lastGameStatus = 1; // pending creation
break;
case 5: // Join Game
if (game)
{
controlData.setText( controlData.controls.lobby.join.editBox.gameName, game);
Delay (100);
controlData.setText( controlData.controls.lobby.join.editBox.password, gamepassword);
Delay (100);
controlData.click(controlData.controls.lobby.join.button.joinGame);
RunGC(); // run garbage collector between each game
locationTimeout(5000, location);
lastGameStatus = 1; // pending join
}
else
{
DebugInOOG('No game to join : cancelling');
me.Cancel(1);
Delay(1000);
}
break;
case 6: // Ladder
break;
case 7: // Channel List
break;
case 8: // Main Menu
if(controlData.getCurrentRealmIndex() == me.gatewayid)
{
outputGameLength();
controlData.click(controlData.gameTypes[me.playtype]);
}
else
controlData.click(controlData.controls.mainMenu.button.gateway);
break;
case 9: // Login
sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name, 0);
Delay(loginDelay);
controlData.setText(controlData.controls.login.editBox.accountName, me.account);
sendEventToOOG(D2NT_MGR_LOGIN, location.name, 0);
locationTimeout(5000, location);
break;
case 10: // Login Error (this is a fatal error, so stop)
sendEventToOOG(D2NT_MGR_RESTART, location.name, 10);
Delay(3500);
break;
case 11: // Unable To Connect
timeoutDelay(unableToConnectRetry*60*1000, location)
controlData.click(controlData.controls.login.unableToConnect.button.ok);
break;
case 12: // Character Select
var _time, _control;
sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name, 0);
for(_time = 0 ; _time < characterScreenTimeout ; _time += 500)
{
_control = controlData.get(controlData.controls.characterSelect.textBox.characterInfo[me.charloc]);
if(_control && _control.GetText() != undefined)
break;
Delay(500);
}
if(_time < characterScreenTimeout)
{
Delay(characterSelectDelay);
controlData.click(controlData.controls.characterSelect.textBox.characters[me.charloc], 0, 0, 1);
controlData.click(controlData.controls.characterSelect.textBox.characterInfo[me.charloc], 0, 0, 1);
// reset last game made, so it doesnt make a game immediately
inGameAt = 0;
setNextGameMake();
}
else
{
controlData.click(controlData.controls.characterSelect.button.exit);
timeoutDelay(realmDownRetry*60*1000, location);
}
break;
case 13: // Realm Down - Character Select screen
controlData.click(controlData.controls.characterSelect.button.exit);
timeoutDelay(realmDownRetry*60*1000, location);
break;
case 14: // Character Select - Disconnected
timeoutDelay(disconnectedRetry*60*1000, location);
controlData.click(controlData.controls.characterSelect.disconnected.button.ok);
break;
case 15: // New Character
break;
case 16: // Character Select - Please Wait popup
if(!locationTimeout(pleaseWaitTimeout, location))
controlData.click(controlData.controls.characterSelect.pleaseWait.button.cancel);
break;
case 17: // Lobby - Lost Connection - just click okay, since we're toast anyway
controlData.click(controlData.controls.lobby.lostConnection.button.ok);
break;
case 18: // D2 Splash
controlData.click(controlData.controls.d2Splash.textBox.copyright);
break;
case 19: // Login - Cdkey In Use
timeoutDelay(cdkeyInUseRetry*60*1000, location);
controlData.click(controlData.controls.login.cdkeyInUse.button.ok);
break;
case 20: // Single Player - Select Difficulty
controlData.click(controlData.singlePlayerDifficulties[me.diff]);
break;
case 21: // Main Menu - Connecting
if(!locationTimeout(connectingToBnetTimeout, location))
controlData.click(controlData.controls.mainMenu.connecting.button.cancel);
break;
case 22: // Login - Invalid Cdkey (classic or xpac)
sendEventToOOG(D2NT_MGR_RESTART, location.name, 3600);
Delay(3500);
break;
case 23: // Character Select - Connecting
if(!locationTimeout(characterScreenTimeout, location))
controlData.click(controlData.controls.characterSelect.button.exit);
break;
case 24: // Server Down - not much to do but wait..
break;
case 25: // Lobby - Please Wait
if(!locationTimeout(pleaseWaitTimeout, location))
controlData.click(controlData.controls.lobby.pleaseWait.button.cancel);
break;
case 26: // Lobby - Game Name Exists
sendEventToOOG(D2NT_MGR_PRINT_LOG, "yE00000Game already exists", 0);
inGameAt = 0;
lastGameStatus = 0;
setNextGameMake();
locationTimeout(15000, location);
break;
case 27: // Gateway Select
controlData.clickRealmEntry(me.gatewayid);
controlData.click(controlData.controls.gateway.button.ok);
break;
case 28: // Lobby - Game Does Not Exist
inGameAt = Random(gameDoesNotExistDelayMin, gameDoesNotExistDelayMax);
lastGameStatus = 0;
setNextGameMake();
locationTimeout(gameDoesNotExistTimeout, location);
break;
default:
DebugInOOG("Unhandled location : "+location.id);
break;
}
DebugInOOG("Location : "+location.id);
}
function sendEventToOOG(locationId, statusString, pendingTime)
{
return SendCopyData("D2NT Manager", null, (locationId<<16)|pendingTime, statusString);
}
function setNextGameMake()
{
lastGameMade = GetTickCount();
nextGameMake = lastGameMade + createGameThreshold + Random(0-createGameThresholdRandom, createGameThresholdRandom) + inGameAt;
inGameAt = 0;
chatActionsDone = false;
}
function outputGameLength()
{
if(inGameAt)
{
duration = GetTickCount() - inGameAt;
inGameAt = (duration < gameMinLength ? gameMinLength - duration : 0);
}
}
function locationTimeout(time, location)
{
endtime = GetTickCount() + time;
while(controlData.getLocation().id == location.id && endtime > GetTickCount())
{
sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name + " (" + parseInt((endtime-GetTickCount())/1000) + "s)", 0);
Delay(500);
}
return (controlData.getLocation().id != location.id);
}
function timeoutDelay(time, location)
{
endtime = GetTickCount() + time;
while(endtime > GetTickCount())
{
sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name + " (" + parseInt((endtime-GetTickCount())/1000) + "s)", 0);
Delay(1000);
}
}
function getRandomString(_length)
{
_retString = "";
_charSet = "0123456789abcdefghijklmnopqrstuvwxyz";
while(_length--)
{
_retString += _charSet.charAt(Random(0, _charSet.length-1));
Delay(1);
}
return _retString;
}
function DebugInOOG(logString)
{
if (Debug)
return SendCopyData("D2NT Manager", null, 9<<16, "-- Debug : " + logString);
else
return false;
}
und hier die NTBotGame.ntj
Code:
var CurScriptIndex = 0;
var LastScript = false;
var Rev = "1018.P";
// Provalone Edit //
//Include("libs/common/NTExp.ntl");
//NTE_InitializeStats();
//
var SoJNotify = false;
var CloneDiabloString = GetLocaleString(11005);
var SoJString = GetLocaleString(11004).substr(3);
var CloneDiabloNotify = false;
var SoJNotify = false;
var SoJElapsedTime = 0;
var InitLife;
var Corpses = 0;
var checkActOnce = false;
function D2NTStatus(where, time, message) { return SendCopyData('D2NT Manager', null, where << 16 | time, message); }
function NTMain()
{
Delay(1000);
InitLife = me.hp;
//Print(COLOR_4 + "[+] NTBot 4.2 [+]");
Include("libs/common/NTCommon.ntl");
NTC_IncludeLibs();
NTC_IncludeConfig("NTBot/char_configs");
Include("libs/common/NTExp.ntl");
NT_LoadConfig();
NTE_InitializeStats();
if(NTConfig_FreeSpace == 0)
Print(COLOR_2 + "Please don't forget to set NTConfig_FreeSpace in your character config to avoid your inv filling");
NT_ClearMessages(); // leech improvements
//var _time1 = NTU_timeStamp();
//Print ("Begin Parse: "+_time1);
NTSI_LoadNIPFiles("NTBot/item_configs");
//var _time2 = NTU_timeStamp();
//Print ("End Parse: "+_time2);
// ubi21 Enigma reset start
////////////////////////////
NTU_LogExitStatus("F");
// ubi21 Enigma reset end
////////////////////////////
if(NTConfig_StartDelay > 0);
NTC_Delay(NTConfig_StartDelay);
GetPath(me.areaid, me.x, me.y, me.x, me.y, true);
SetUIState(0x0A, true);
// ubi21 Enigma reset start
////////////////////////////
if(!NTT_PutBackEnigma()) {
NTC_Delay(240000); // Wait 4 mins to prevent r/d 240000
ExitGame();
}
// ubi21 Enigma reset end
////////////////////////////
if(NTConfig_CheckPassword && !me.gamepassword){
Print(COLOR_1 + "1No password found exiting game");//s
NTC_SendLogToOOG(NTC_LOG_COMMON, COLOR_1 + "Exiting Game- No Password");
NTC_Delay(2000);
ExitGame();
}
Corpses = NTT_GetCorpses();
if (Corpses > 0 || InitLife < 10)
NTU_DeathLog(Corpses, InitLife);
if(NTConfig_Script.length > 0)
{
NTCU_InitCubing();
NTT_ClearInventory();
NTT_ClearBelt();
// ubi21 Enigma reset start
////////////////////////////
if(!NTT_LookForEnigma()) {
if (GetUIState(0x01))
SetUIState(0x01, false);
NTC_Delay(240000); // Wait 4 mins to prevent r/d 240000
ExitGame();
}
// ubi21 Enigma reset end
////////////////////////////
if(NTConfig_GoWestFromLut){ // if bot starts in act 2 use warriv to go to act 1
GoWestFromLutGholein();
}
Load("NTBot/tools/NTToolsThread.ntj");
if(NTConfig_HostileHandler)
Load("NTBot/tools/NTHostHandler.ntj");
if(DPSMeter)
Load("NTBot/tools/DPS.ntj");
RegisterEvent(EVENT_GAMEMSG, NT_GameMsgEvents);
RegisterEvent(EVENT_KEYDOWN, NT_KeyEvents);
RegisterEvent(EVENT_SCRIPTMSG, NT_ScriptMsgEvents);
Load("NTBot/bots/" + NTConfig_Script[CurScriptIndex]);
SetStatusText(Rev + " "+ NTConfig_Script[CurScriptIndex]);
Include("libs/common/NTSnagit.ntl");
NTSI_ClearIgnoredItems();
NTC_LogCurScript(NTConfig_Script[CurScriptIndex]);//jinay item log
var leaderParty = false;
while(!LastScript || CloneDiabloNotify || SoJNotify || NTC_InMyParty(NTConfig_Leader)) // SoJNotify is a part of soj addon
{
NTC_Delay(1000);
for(var i = 0 ; i < NTConfig_Script.length && !leaderParty ; i++)
{
if(NTConfig_Script[i].toLowerCase().indexOf("leech") != -1)
{
for(var j = 0 ; j < NTConfig_PartyMaxTime && !NTC_InMyParty(NTConfig_Leader) ; j++)
Delay(1000);
if(NTC_InMyParty(NTConfig_Leader))
{
leaderParty = true;
}
else
{
NTC_PrintPossibleLeaders();
Print(COLOR_1 + "Can't find leader!");
Delay(500);
Print(COLOR_1 + "You either have it spelled or cased wrong");
Delay(500);
Print(COLOR_1 + "Or leader is not in game");
Delay(500);
Print(COLOR_1 + "Check logs/namelog/" + me.charname + "-leaderName.txt for possible leader names from this game"); // this should print a list of all toons in game so people can C/P if they are having probs
Delay(1500);
ExitGame();
}
break;
}
}
if(LastScript && !checkActOnce && leaderParty && NTC_InMyParty(NTConfig_Leader)) {
NTTM_CheckAct();
checkActOnce = true; // this is added so if you need to go back in someplace the bot doesn't keep towning
}
if(leaderParty && !NTC_InMyParty(NTConfig_Leader)){
if(!LastScript) {
NTE_ComputeStats(false);
}
Delay(350);
_Checkscript = GetScript();
if(_Checkscript){
NTC_StopScriptLeecher();
Delay(150);
}
NTC_CancelMenus();
Delay(NTConfig_LeechExitDelay);
ExitGame();
}
// soj addon by kolton
if(SoJNotify)
{
SoJElapsedTime += 1;
if(LastScript)
{
NTTM_CheckAct();
SetStatusText(COLOR_4 + "Waiting for SoJ sales... " + COLOR_0 + (NTConfig_SoJWaitTime*60-SoJElapsedTime));
}
if(SoJElapsedTime >= NTConfig_SoJWaitTime*60)
SoJNotify = false;
}
// soj addon end
}
}
// Provalone Edit
NTE_ComputeStats(false);
//
if(NTConfig_PublicMode && NTConfig_PropsForEtal > 0) {
Include("NTBot/char_configs/EtalPR.ntl");
for(var i = 0 ; i < NTConfig_PropsForEtal ; i++) {
Say(NTC_RandomSelect(etalSpam));
Delay(1500);
}
Say("Check out d2etal.com");
Delay(1000); // change this to 1 second
}
ExitGame();
}
function NT_GameMsgEvents(msg, type)
{
// ubi21 Enigma reset start
////////////////////////////
var _holdPauseCheck = "";
// ubi21 Enigma reset end
////////////////////////////
_area = GetArea();
if(type == 4)
{
if(msg.indexOf(CloneDiabloString) != -1)
{
CloneDiabloNotify = true;
SoJNotify = false;
NTC_SendLogToOOG(NTC_LOG_COMMON, COLOR_4 + CloneDiabloString);
SetStatusText(COLOR_1 + CloneDiabloString);
D2NTStatus("Stop", 0, "Stop"); //This is a fake ID itll just interrupt the current status loop. Simple but effective.
D2NTStatus(8, 0, CloneDiabloString);
me.maxgametime = 0;
// ubi21 Enigma reset start
////////////////////////////
_holdPauseCheck = NTU_GetExitStatus();
while(_holdPauseCheck == "T") {
NTC_Delay(500);
_holdPauseCheck = NTU_GetExitStatus();
}
// ubi21 Enigma reset end
////////////////////////////
NTC_StopScript(NTConfig_Script[CurScriptIndex]);
NTC_Delay(500);
NTTM_CheckAct();
}
else if(msg.indexOf(SoJString) != -1 && !CloneDiabloNotify && NTConfig_SoJWaitTime > 0)
{ // part of soj addon. !CloneDiabloNotify was added to prevent timer start on oversales after Diablo walks.
SoJNotify = true;
SoJElapsedTime = 0;
NTC_SendLogToOOG(NTC_LOG_COMMON, COLOR_4 + msg);
me.maxgametime = 0;
}
}
else if(type == 1 && (msg.toLowerCase().indexOf("d2nt") != -1 || msg.toLowerCase().indexOf("error") != -1 || msg.toLowerCase().indexOf("fail") != -1))
{
var date = new Date().toLocaleFormat("<%a, %b %d, %H:%M>");
var logfile = FileOpen("logs/errorlog/"+me.charname+"-errorlog.txt", 2);
if(!logfile)
var logfile = FileOpen("logs/errorlog/"+me.charname+"-errorlog.txt", 1);
logfile.WriteLine(date + " - " + msg);
logfile.Close();
}
else if(type == 1 && (msg.toLowerCase().indexOf("skipped") != -1 ))
{
var date = new Date().toLocaleFormat("<%a, %b %d, %H:%M>");
var logfile = FileOpen("logs/skiplog/"+me.charname+"-skiplog.txt", 2);
if(!logfile)
var logfile = FileOpen("logs/skiplog/"+me.charname+"-skiplog.txt", 1);
logfile.WriteLine(date + " - " + msg + " ( " + _area.name + " ) ");
logfile.Close();
}
else if(type == 0 && msg.indexOf(NTConfig_Leader) != -1){ // leech improvements
NTC_CheckPlayer(NTConfig_Leader);
//Print(COLOR_1 + "The leader is in " + _leaderareaid);
if((_leaderareaid == 130 || _leaderareaid == 131) && msg.indexOf(NTConfig_TakeTpBaal) != -1){ // all baal leech scripts will use the same one
//Print(COLOR_8 + "received take baal take tp message")
NT_File("logs/messagecomands/"+me.charname+"-baal.txt", 1, "takebtp")
}
else if((_leaderareaid == 130 || _leaderareaid == 131) && msg.indexOf(NTConfig_GrabShrine) != -1){ // so you can set the var for grabbing shrine different from the take tp one
//Print(COLOR_8 + "received take shrine message")
NT_File("logs/messagecomands/"+me.charname+"-baal.txt", 1, "grabshrine")
}
else if(_leaderareaid == 108 && msg.indexOf(NTConfig_TakeTpDiablo) != -1){ // all diablo leech scripts will use the same one
//Print(COLOR_8 + "received take diablo tp message")
NT_File("logs/messagecomands/"+me.charname+"-diablo.txt", 1, "takedtp")
}
else if(_leaderareaid == 83 && msg.indexOf(NTConfig_TakeTpTravincal) != -1){ // all diablo leech scripts will use the same one
//Print(COLOR_8 + "received take travincal tp message")
NT_File("logs/messagecomands/"+me.charname+"-trav.txt", 1, "takettp")
}
// add in something here that if leader recieves a message indexOf("entered") it will send the join game message. make sure it is something specific to entered battlenet message
}
}
/*
function NT_KeyEvents(keycode)
{
var _script;
switch(keycode)
{
case 19: //Pause/Break
_script = NTC_FindScript(NTConfig_Script[CurScriptIndex]);
if(_script)
{
if(_script.running)
{
_script.Stop();
NT_ClearMessages();
NTC_Delay(300);
ClickMap(NTC_CLICK_LUP, NTC_SHIFT_NONE, null);
SetStatusText(COLOR_1 + Rev + " Paused " + NTConfig_Script[CurScriptIndex]);
}
else
{
Load("NTBot/bots/" + NTConfig_Script[CurScriptIndex]);
SetStatusText(Rev + " " + NTConfig_Script[CurScriptIndex]);
}
}
break;
case 33: //Page Up
_script = NTC_FindScript(NTConfig_Script[CurScriptIndex]);
if(_script.running)
{
_script.Stop();
NT_ClearMessages();
NTC_Delay(300);
ClickMap(NTC_CLICK_LUP, NTC_SHIFT_NONE, null);
SetStatusText(COLOR_11 + Rev + " Stopped " + NTConfig_Script[CurScriptIndex]);
break;
}
else
{
for(i=0; i<NTConfig_Script.length-1; i++)
{
if(CurScriptIndex < NTConfig_Script.length-1)
CurScriptIndex++;
else
CurScriptIndex = 0;
}
SetStatusText(COLOR_14 + Rev + " Back to " + NTConfig_Script[CurScriptIndex]);
break;
}
case 34: //Page Down
_script = NTC_FindScript(NTConfig_Script[CurScriptIndex]);
if(_script.running)
{
_script.Stop();
NT_ClearMessages();
SetStatusText(COLOR_11 + Rev + " Stopped " + NTConfig_Script[CurScriptIndex]);
}
else if(++CurScriptIndex < NTConfig_Script.length)
SetStatusText(COLOR_14 + Rev + " Skipped to " + NTConfig_Script[CurScriptIndex]);
else if(++CurScriptIndex >= NTConfig_Script.length)
{
CurScriptIndex = 0;
SetStatusText(COLOR_2 + Rev + " Skipped to " + NTConfig_Script[CurScriptIndex]);
}
break;
case 97: //1 (Num Lock)
{
NTU_DropItems();
}
break;
case 98: //2 (Num Lock)
{
NTU_DevelopementTools();
}
break;
case 99: //3 (Num Lock)
{
NTU_LogPrint("logs/testlog/"+me.charname+"-Coords.txt", " New Coord[" + me.x + ", " + me.y + "] " );
}
break;
case 100: //4 (Num Lock)
{
//NTU_KeyPressList();
}
break;
case 101: //5 (Num Lock)
{
NTU_TLInventory();
}
break;
case 102: //6 (Num Lock)
{
NTU_CursorILvl();
}
break;
case 103: //7 (Num Lock)
{
NTT_CheckFreeStashSpace(true);
NTT_CheckFreeInventorySpace(true);
}
break;
case 105: //9 (Num Lock)
{
NTU_CheckMyStats();
}
break;
case 106: //* (Num Lock)
{
NTU_CheckCoord();
}
break;
case 107: //+ (Num Lock)
{
NTU_TLNipCheck();
}
break;
}
}*/
function NT_KeyEvents(keycode)
{
var _script;
switch(keycode) {
case Do_PauseBot:
_script = NTC_FindScript(NTConfig_Script[CurScriptIndex]);
if(_script) {
if(_script.running) {
_script.Stop();
NT_ClearMessages();
NTC_Delay(300);
ClickMap(NTC_CLICK_LUP, NTC_SHIFT_NONE, null);
SetStatusText(COLOR_1 + Rev + " Paused " + NTConfig_Script[CurScriptIndex]);
}
else {
Load("NTBot/bots/" + NTConfig_Script[CurScriptIndex]);
SetStatusText(Rev + " " + NTConfig_Script[CurScriptIndex]);
}
}
break;
case Do_PrevScript:
_script = NTC_FindScript(NTConfig_Script[CurScriptIndex]);
if(_script.running) {
_script.Stop();
NT_ClearMessages();
NTC_Delay(300);
ClickMap(NTC_CLICK_LUP, NTC_SHIFT_NONE, null);
SetStatusText(COLOR_11 + Rev + " Stopped " + NTConfig_Script[CurScriptIndex]);
break;
}
else {
for(i=0; i<NTConfig_Script.length-1; i++) {
if(CurScriptIndex < NTConfig_Script.length-1)
CurScriptIndex++;
else
CurScriptIndex = 0;
}
SetStatusText(COLOR_14 + Rev + " Back to " + NTConfig_Script[CurScriptIndex]);
}
break;
case Do_NextScript:
_script = NTC_FindScript(NTConfig_Script[CurScriptIndex]);
if(_script.running) {
_script.Stop();
NT_ClearMessages();
SetStatusText(COLOR_11 + Rev + " Stopped " + NTConfig_Script[CurScriptIndex]);
}
else if(++CurScriptIndex < NTConfig_Script.length)
SetStatusText(COLOR_14 + Rev + " Skipped to " + NTConfig_Script[CurScriptIndex]);
else if(++CurScriptIndex >= NTConfig_Script.length) {
CurScriptIndex = 0;
SetStatusText(COLOR_2 + Rev + " Skipped to " + NTConfig_Script[CurScriptIndex]);
}
break;
case Do_DropItems:
NTU_DropItems();
break;
case Do_DevTools:
NTU_DevelopementTools();
break;
case Do_CoordLog:
NTU_LogPrint("logs/testlog/"+me.charname+"-Coords.txt", " New Coord[" + me.x + ", " + me.y + "] " );
break;
case Do_HotKeyList:
Key_HotList();
break;
case Do_CursorILvL:
NTU_CursorILvl();
break;
case Do_StatsLog:
NTU_CheckMyStats();
break;
case Do_PrintCoord:
NTU_CheckCoord();
break;
case Do_CheckSpace:
if(CheckStashSpace)
NTT_CheckFreeStashSpace(true);
if(CheckInvSpace)
NTT_CheckFreeInventorySpace(true);
break;
case Do_NipCheck:
NTU_TLNipCheck();
break;
case Do_InvTxtLog:
NTU_TLInventory();
break;
case Do_CheckBPs:
T_BPsPrint();
break;
case Do_ExitGame:
Print(COLOR_4 + "Calculating stats for game!");
NTE_ComputeStats(false);
ExitGame();
break;
}
}
function NT_ScriptMsgEvents(msg)
{
var _area;
switch(msg)
{
case "QuitGame":
NTC_StopScript(NTConfig_Script[CurScriptIndex]);
NTC_CancelMenus();
LastScript = true;
break;
case "HOSTILE":
NTC_SendMsgToScript(NTConfig_Script[CurScriptIndex], "pause");
break;
case "SCRIPT_END":
if(++CurScriptIndex < NTConfig_Script.length)
{
NTTM_CheckAct();
Load("NTBot/bots/" + NTConfig_Script[CurScriptIndex]);
SetStatusText(Rev + " " + NTConfig_Script[CurScriptIndex]);
NTC_LogCurScript(NTConfig_Script[CurScriptIndex]);
}
else{
LastScript = true;
}
break;
default:
Print(COLOR_1 + NTConfig_Script[CurScriptIndex] + " : " + msg + " failed");
_area = GetArea();
if(_area)
NTC_SendLogToOOG(NTC_LOG_COMMON, COLOR_1 + NTConfig_Script[CurScriptIndex] + " : " + msg + " failed (" + _area.name + ")");
else
NTC_SendLogToOOG(NTC_LOG_COMMON, COLOR_1 + NTConfig_Script[CurScriptIndex] + " : " + msg + " failed (unknown area)");
if(++CurScriptIndex < NTConfig_Script.length)
{
NTTM_CheckAct();
Load("NTBot/bots/" + NTConfig_Script[CurScriptIndex]);
SetStatusText(Rev + " " + NTConfig_Script[CurScriptIndex]);
NTC_LogCurScript(NTConfig_Script[CurScriptIndex]);
}
else
LastScript = true;
break;
}
}
function NT_ClearMessages(){ // leech improvemetst
for(var i = 0 ; i < NTConfig_Script.length ; i++){
if(NTConfig_Script[i].toLowerCase().indexOf("leech") != -1){
if(NTConfig_Script[i].toLowerCase().indexOf("baal") != -1){
NT_File("logs/messagecomands/"+me.charname+"-baal.txt", 1, " ");
}
if(NTConfig_Script[i].toLowerCase().indexOf("diablo") != -1){
NT_File("logs/messagecomands/"+me.charname+"-diablo.txt", 1, " ");
}
if(NTConfig_Script[i].toLowerCase().indexOf("trav") != -1){
NT_File("logs/messagecomands/"+me.charname+"-trav.txt", 1, " ");
}
}
}
}
function NTC_CancelMenus() { // more koreans
while (GetUIState(0x01) || GetUIState(0x08) || GetUIState(0x0C) || GetUIState(0x0F) || GetUIState(0x14) ||
GetUIState(0x17) || GetUIState(0x19) || GetUIState(0x1A) || GetUIState(0x24)){
for (var i = 0; i < 40; i++){
if ((i % 20) == 0){
me.Cancel(1);
}
Delay(100);
if (!GetUIState(0x01) && !GetUIState(0x08) && !GetUIState(0x0C) && !GetUIState(0x0F) && !GetUIState(0x14) &&
!GetUIState(0x17) && !GetUIState(0x19) && !GetUIState(0x1A) && !GetUIState(0x24)){
NTC_PingDelay(300);
break;
}
}
}
}
function NTC_StopScriptLeecher(){
_script = NTC_FindScript(NTConfig_Script[CurScriptIndex]);
if(_script){
if(_script.running){
_script.Stop();
NTC_Delay(150);
ClickMap(NTC_CLICK_LUP, NTC_SHIFT_NONE, null);
}
}
return;
}
function NTC_PrintPossibleLeaders()
{
var _player;
var _myPartyId;
_player = GetPlayerUnit();
if(_player)
{
do
{
if( _player.name == me.name)
continue;
NTC_LogPrintSimple("logs/namelog/"+me.charname+"-leaderName.txt", _player.name);
} while(_player.GetNext());
}
return false;
}