Fast Diablo:
Bei einem Diablo-Run hat man zusätzlich die Möglichkeit nur die Seals zu öffnen und dann Diablo zu killen. Ohne sich um jedes Monster zu kümmern. Sprich ein Fast Diablo Run.
Überarbeitete Script NTDiablo.ntj
Code:
/** * This file was modified by* Check the programming section for updates and further scripts * Last Update: 02/05/2011 */ function NTMain() { Include("libs/common/NTCommon.ntl"); NTC_IncludeLibs(); NTC_IncludeConfig("NTBot/char_configs"); NT_LoadConfig(); NTSI_LoadNIPFiles("NTBot/item_configs"); MWC_Initialize(); var _monsterCount, _attackpos; if(!NTTM_CheckAct(me.act, true)) { NTC_SendMsgToScript("MWBotGame.ntj", NTTM_CheckAct, 20, me.act, true); return; } NTTMGR_TownManager(); if(!NTTM_TownMove("waypoint")) { NTC_SendMsgToScript("MWBotGame.ntj", NTTM_TownMove, 28, "waypoint"); return; } if(!NTM_TakeWaypoint(107)) { NTC_SendMsgToScript("MWBotGame.ntj", NTM_TakeWaypoint, 34, 107); return; } NTP_DoPrecast(true); if(!NTM_MoveTo(108, 7797, 5560)) { NTC_SendMsgToScript("MWBotGame.ntj", NTM_MoveTo, 42, 108, 7797, 5560); return; } if(!MWConfig_StartAtStar && !MWConfig_FastDiablo) { _attackpos = [7792, 5525, 7793, 5501, 7773, 5495, 7768, 5480, 7767, 5458, 7770, 5438, 7774, 5417, 7767, 5391, 7768, 5369, 7769, 5345, 7770, 5320, 7780, 5308]; if(!NTM_MoveTo(108, 7790, 5544)) { NTC_SendMsgToScript("MWBotGame.ntj", NTM_MoveTo, 52, me.areaid, 7790, 5544); return; } if(NTConfig_PublicMode) { _monsterCount = MWA_FindNearbyMonsters(20); if(_monsterCount > 1) { if(_monsterCount < 3) Say("TP cold, " + _monsterCount + " monsters close!"); else if(_monsterCount < 6) Say("TP warm, " + _monsterCount + " monsters close!"); else Say("TP hot, " + _monsterCount + " monsters close!"); } else Say("TP up, no monsters close!"); NTM_MakeTP(); } NTA_ClearPosition(25, false, 2); NTM_MoveTo(108, 7790, 5544); NTC_PingDelay(1000); NTA_ClearPosition(25, true, 2); NTM_MoveTo(108, 7790, 5544); if(NTConfig_PublicMode) { if(MWA_FindNearbyMonsters(15) < 2) Say("TP safe!"); else Say("TP is not safe!"); for(var i = 0; i < _attackpos.length; i += 2) { NTM_MoveTo(108, _attackpos[i], _attackpos[i + 1], 3, true); NTA_ClearPosition(50, true, 2); } } } if(!MWConfig_FastDiablo || NTConfig_PublicMode) { Say("Public ist AN || FastDiablo ist AUS!"); if(MWConfig_StartAtStar) { NTM_MoveTo(108, 7792, 5292); _monsterCount = MWA_FindNearbyMonsters(25); if(_monsterCount > 1) { if(_monsterCount < 3) Say("TP cold, " + _monsterCount + " monsters close!"); else if(_monsterCount < 6) Say("TP warm, " + _monsterCount + " monsters close!"); else Say("TP hot, " + _monsterCount + " monsters close!"); } else Say("TP up, no monsters close!"); } NTM_MakeTP(); NTP_DoPrecast(true); NTA_ClearPosition(30); } //NTM_MoveTo(108, 7792, 5292, 3, true); if(!NT_OpenSealsInt()) { NTC_SendMsgToScript("MWBotGame.ntj", NT_OpenSealsInt, 133); return; } if(!NTTMGR_CheckSafe(NTConfig_CheckSelfSafe, NTConfig_CheckMercSafe)) { NTC_SendMsgToScript("MWBotGame.ntj", NTTMGR_CheckSafe, 139, NTConfig_CheckSelfSafe, NTConfig_CheckMercSafe); return; } if(!NTM_MoveTo(me.areaid, 7792, 5292)) { NTC_SendMsgToScript("MWBotGame.ntj", NTM_MoveTo, 145, me.areaid, 7792, 5292); return; } if(!MWConfig_FastDiablo) { NTP_DoPrecast(true); } if(me.classid == NTC_CHAR_CLASS_PALADIN && !MWC_CheckForExpShrineUsers()) { NTC_PutSkill(109, NTC_HAND_RIGHT); } NTC_FindUnit(NTC_UNIT_MONSTER, 243, 150); if(!NTA_KillMonster(243)) { NTC_SendMsgToScript("MWBotGame.ntj", NTA_KillMonster, 158, 243); return; } NTSI_PickItems(); if(NTConfig_PublicMode) { Say("Next game"); } NTC_SendMsgToScript("MWBotGame.ntj", "SCRIPT_END"); } // Internal function function NT_OpenSealsInt() { var i, _unit; var _result; _unit = GetPresetUnits(me.areaid, NTC_UNIT_OBJECT); if(!_unit) return false; _result = false; for(i = 0 ; i < _unit.length ; i++) { if(_unit[i].id == 396) { if(_unit[i].roomy*5 + _unit[i].y == 5275) _result = NT_OpenVizierSealInt(1); else _result = NT_OpenVizierSealInt(2); break; } } if(!_result) return false; if(!MWConfig_FastDiablo) { NTM_MoveTo(me.areaid, 7792, 5292, 3, true); NTA_ClearPosition(40); NTP_DoPrecast(); } _result = false; for(i = 0 ; i < _unit.length ; i++) { if(_unit[i].id == 394) { if(_unit[i].roomx*5 + _unit[i].x == 7773) _result = NT_OpenDeSeisSealInt(1); else _result = NT_OpenDeSeisSealInt(2); break; } } if(!_result) return false; if(!MWConfig_FastDiablo) { NTM_MoveTo(me.areaid, 7792, 5292, 3, true); NTA_ClearPosition(40); NTP_DoPrecast(true); } _result = false; for(i = 0 ; i < _unit.length ; i++) { if(_unit[i].id == 392) { if(_unit[i].roomx*5 + _unit[i].x == 7893) _result = NT_OpenVenomSealInt(1); else _result = NT_OpenVenomSealInt(2); break; } } return _result; } function NT_OpenVizierSealInt(type) { var i, n; var _attackpos = [7740, 5300, 7740, 5280, 7720, 5280, 7720, 5300]; var _monstername = GetLocaleString(2851); if(!MWConfig_FastDiablo) { for(i = 0 ; i < _attackpos.length ; i += 2) { NTM_MoveTo(me.areaid, _attackpos[i], _attackpos[i+1], 3, true); NTA_ClearPosition(30, true, 2); } } for(i = 0; i < 4; i++) { if(!MW_OpenSeal(395) || !MW_OpenSeal(396)) { NTC_Delay(2500); continue; } if(type == 1) NTM_MoveTo(me.areaid, 7665, 5277); for(n = 0; n < 10; n++) { NTC_Delay(200); if(NTA_KillMonster(_monstername)) { if(!MWConfig_FastDiablo) { NTA_ClearPosition(); } NTSI_PickItems(); return NTM_MoveTo(me.areaid, 7750, 5280); } } } return false; } function NT_OpenDeSeisSealInt(type) { var i, n; var _attackpos = [7780, 5255, 7800, 5255, 7800, 5235, 7780, 5235]; var _monstername = GetLocaleString(2852); var _deSeis, _dist; if(!MWConfig_FastDiablo) { if(type == 1) _attackpos.push(7773, 5215, 7773, 5197, 7794, 5196, 7813, 5189, 7814, 5171, 7804, 5156, 7787, 5154); else _attackpos.push(7811, 5216, 7810, 5197, 7787, 5192, 7772, 5183, 7773, 5166, 7784, 5154, 7800, 5154); switch(me.classid) { case NTC_CHAR_CLASS_BARBARIAN: case NTC_CHAR_CLASS_PALADIN: _dist = 8; break; case NTC_CHAR_CLASS_DRUID: _dist = 10; break; default: _dist = 12; } for(i = 0; i < _attackpos.length; i += 2) { NTM_MoveTo(me.areaid, _attackpos[i], _attackpos[i+1]); NTA_ClearPosition(30, true, 2); } } for(i = 0; i < 4; i++) { if(type == 1) { MW_OpenSeal(394); NTM_MoveTo(me.areaid, 7791, 5198); _deSeis = NTC_FindUnit(NTC_UNIT_MONSTER, _monstername, 3); if(_deSeis) { if(_deSeis.y >= 5185) NTM_MoveTo(me.areaid, 7776, _deSeis.y - _dist); else NTM_MoveTo(me.areaid, 7776, _deSeis.y + _dist); } else { if(!MWConfig_FastDiablo) { NTA_ClearPosition(20); } } } else { MW_OpenSeal(394); NTM_MoveTo(me.areaid, 7789, 5154); _deSeis = NTC_FindUnit(NTC_UNIT_MONSTER, _monstername, 3); if(_deSeis && _deSeis.y + _dist <= 5201) { if(!NTM_MoveTo(me.areaid, 7776, _deSeis.y + _dist)) NTM_MoveTo(me.areaid, 7776, _deSeis.y - _dist); } else NTM_MoveTo(me.areaid, 7776, 5195); } for(n = 0; n < 10; n++) { NTC_Delay(200); if(NTA_KillMonster(_monstername)) { if(!MWConfig_FastDiablo) { NTA_ClearPosition(30); } NTSI_PickItems(); return NTM_MoveTo(me.areaid, 7800, 5255); } } } return false; } function NT_OpenVenomSealInt(type) { var i, n; var _attackpos = [7835, 5280, 7835, 5300, 7855, 5300, 7855, 5280]; var _monstername = GetLocaleString(2853); var _sealOrder; if(MWConfig_KillFullInfectorMob) _sealOrder = [392, 393]; else _sealOrder = [393, 392]; if(!MWConfig_FastDiablo) { for(i = 0 ; i < _attackpos.length ; i += 2) { NTM_MoveTo(me.areaid, _attackpos[i], _attackpos[i+1], 3, true); NTA_ClearPosition(30, true, 2); } } for(i = 0; i < 4; i++) { if(!MW_OpenSeal(_sealOrder[0])) { NTM_MoveTo(me.areaid, _attackpos[_attackpos.length - 2], _attackpos[_attackpos.length - 1], 3, true); NTC_Delay(2500); continue; } if(_sealOrder[1] == 392 && !MW_OpenSeal(_sealOrder[1])) { NTM_MoveTo(me.areaid, _attackpos[_attackpos.length - 2], _attackpos[_attackpos.length - 1], 3, true); NTC_Delay(2500); continue; } if(type == 1) NTM_MoveTo(me.areaid, 7892, 5298); else NTM_MoveTo(me.areaid, 7937, 5305); for(n = 0 ; n < 10 ; n++) { NTC_Delay(200); if(NTA_KillMonster(_monstername)) { NTSI_PickItems(); if(!MWConfig_FastDiablo) { NTA_ClearPosition(40); } if(NTC_PutSkill(124, NTC_HAND_RIGHT)) NTC_PingDelay(1000); if(_sealOrder[1] == 393) { for(i = 0; i < 4; i++) { if(MW_OpenSeal(393)) break; NTC_Delay(2500); } } return true; } } } return false; } function MW_OpenSeal(classid) { var _seal, _x, _y, _unit; _unit = GetPresetUnits(me.areaid, NTC_UNIT_OBJECT); if(!_unit) return false; for(i = 0 ; i < _unit.length ; i++) { if(_unit[i].id == classid) { _x = _unit[i].roomx * 5 + _unit[i].x; _y = _unit[i].roomy * 5 + _unit[i].y; break; } } NTM_MoveTo(me.areaid, _x + 1, _y + 1); if(!MWConfig_FastDiablo) { NTA_ClearPosition(25, true, 2, false, false); } _seal = NTC_FindUnit(NTC_UNIT_OBJECT, classid, 5); if(!_seal) return false; if(_seal.mode > 0) return true; for(var i = 0; i < 8; i++) { if((i % 2) == 0) { if(GetDistance(me, _seal) > 2) NTM_MoveTo(_seal.areaid, _seal.x + 1, _seal.y +1 ); NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _seal); } NTC_Delay(500); if(_seal.mode > 0) return true; if(!MWConfig_FastDiablo) { NTA_ClearPosition(20, true, 2, false, false); } } return false; }
Code:
/** * This file was modified by* Check the programming section for updates and further scripts * Last Update: 01/28/2011 */ var MWConfig_Script = new Array(); var MWConfig_ChestExceptions = new Array(); var MWConfig_FindItemExceptions = new Array(); var MWConfig_ShrineExceptions = new Array(); var MWConfig_EvasionExceptions = new Array(); var MWConfig_CheckImmunitySkills = new Array(); var MWConfig_CommandAssignedToNumpad = new Array(10); var MWConfig_BulletinBoardColors = new Array(); var MWConfig_BulletinBoardFileMode; var MWConfig_BulletinBoardFilePath; var MWConfig_LogStashToTxt; var MWConfig_UseXMLItemlog; var MWConfig_LogSoldItems; var MWConfig_LowestRuneToLog; var MWConfig_NipDebugMode; var MWConfig_SortStash; var MWConfig_TornadoRange; var MWConfig_TwisterRange; var MWConfig_TrapRatio = new Array(); var MWConfig_AttacksBeforeRepositioning; var MWConfig_KeepDistanceToMonsters; var MWConfig_AttackTimeLimit = new Array(5); var MWConfig_StaticTargets = new Array(); var MWConfig_IsRusher = false; var MWConfig_ActiveQuestersName; var MWConfig_NumberOfCharsToRush; var MWConfig_GetHoradricCubesInNorm; var MWConfig_QuestSchedule = new Array(); var MWConfig_RushActs = new Array(); var MWConfig_EnterInvalidUberPortals; var MWConfig_IntendedUberPortal; var MWConfig_PauseOnLackOfKeys; var MWConfig_PauseOnLackOfOrgans; var MWConfig_ClearWaypointPaths; var MWConfig_SkipHallsOfPain; var MWConfig_TPWaypoints; var MWConfig_WaypointCatcherActs; var MWConfig_ShowGoldPickupsPerScript; var MWConfig_ShowGoldPickups; var MWConfig_ShowPotionPickups; var MWConfig_UseFindItem; var MWConfig_FindItemRange; var MWConfig_BuyPotionsOnLackOfMana; var MWConfig_PickLootedItemsInstantly; var MWConfig_PickChestLootsInstantly; var MWConfig_PickItemsInstantly; var MWConfig_OpenAllNearbyChests; var MWConfig_OpenChestsRange; var MWConfig_ResetArmor; var MWConfig_AlwaysSellTrashItems; var MWConfig_IdentAtCain; var MWConfig_IdentAfterPickup; var MWConfig_MinItemsToIdent; var MWConfig_ActivateNearbyShrines; var MWConfig_SkeletonMinionCount; var MWConfig_MageMinionCount; var MWConfig_ReviveMinionCount; var MWConfig_CheckSojSales; var MWConfig_WorldEventAccount; var MWConfig_WorldEventWaitTime; var MWConfig_ClearPathToKurastTemplesSpectype; var MWConfig_ClearPathToKurastSewersSpectype; var MWConfig_ClearPathToSummonerSpectype; var MWConfig_OpenMephistoChest; var MWConfig_MephistoClearArea; var MWConfig_KillFullInfectorMob; var MWConfig_FastDiablo; var MWConfig_StartAtStar; var MWConfig_ClearPathToDurielSpectype; var MWConfig_ClearPathToPitSpectype; var MWConfig_ClearPathToTunnelsSpectype; var MWConfig_SkipLevelOnWitches; var MWConfig_SkipLevelOnSouls; var MWConfig_SkipLevelOnDeathLords; var MWConfig_SkipOnTombVipers; var MWConfig_ClearCountessRoomsSpectype; var NTConfig_NihlathakExtension; var NTConfig_PindleskinExtension; var NTConfig_ShenkExtension; var NTConfig_ClearFrozenRiver; var NTConfig_ClearGlacialTrail; var NTConfig_ClearIcyCellar; var MWConfig_SkipBaalOnDolls; var MWConfig_SkipBaalOnSouls; var NTConfig_KillBaal; var NTConfig_ClearA3SewersLevel1; var NTConfig_KillFireEye; var NTConfig_ClearPitLevel1; var NTConfig_KillBloodRaven; var NTConfig_ClearHoleLevel1; var NTConfig_KillRakanishu; var MWConfig_DoBaalPreAttack; var MWConfig_SuperChestAreas; var MWConfig_SuperChestClearAreaRadius; var MWConfig_IdleModeRuntime; var NTConfig_StartDelay; var NTConfig_AreaDelay; var NTConfig_SnagDelay; var MWConfig_ExitGameOnMissingPassword; var NTConfig_SkipHealLife; var NTConfig_SkipHealMana; var NTConfig_UseMerc; var NTConfig_LifeThresh; var NTConfig_LifeRejuvThresh; var NTConfig_ManaThresh; var NTConfig_ManaRejuvThresh; var NTConfig_LifeChicken; var NTConfig_ManaChicken; var MWConfig_UseChickenLog; var NTConfig_MercLifeThresh; var NTConfig_MercRejuvThresh; var NTConfig_MercChicken; var NTConfig_FreeSpace; var NTConfig_Columns = new Array(4); NTConfig_Columns[0] = new Array(10); NTConfig_Columns[1] = new Array(10); NTConfig_Columns[2] = new Array(10); NTConfig_Columns[3] = new Array(10); var NTConfig_MinGoldToStash; var MWConfig_ReplaceLowQualityPotions; var MWConfig_BeltTypeColQuantity = new Array(); var NTConfig_BeltColType = new Array(4); var NTConfig_NIPFilePath = new Array(); var NTConfig_SnagRange; var MWConfig_PickUpPriorityItemsFirst; var MWConfig_PickUpMoneymakers; var MWConfig_MinimumTpScrollCount; var MWConfig_MinimumIdScrollCount; var MWConfig_CarryKeys; var MWConfig_ShowCubedGemsInCommonLog; var MWConfig_ClearCubeAfterCubing; var MWConfig_UseAdvancedCubingAlgorithm; var MWConfig_RestrictKeptItemsFromCubing; var NTConfig_Cubing; var NTConfig_CubingItem = new Array(); var NTConfig_Gamble; var NTConfig_GambleStartGold; var NTConfig_GambleStopGold; var NTConfig_GambleItem = new Array(); var MWConfig_AutoParty; var NTConfig_PublicMode; var NTConfig_CheckCloneDiablo; var NTConfig_OpenChest; var MWConfig_GameErrorLimit; var MWConfig_UseTelekinesis; var MWConfig_ShowOverheadStatus; var NTConfig_AttackSkill = new Array(10); var MWConfig_PrecastSkills = new Array(); var MWConfig_SwitchSlotsAfterBoPrecast; var MWConfig_ClearBossPosition; var NTConfig_ClearPosition; var NTConfig_CheckSelfSafe; var NTConfig_CheckMercSafe; var MWConfig_CheckSelfSafeTown; var MWConfig_CheckMercSafeTown;
Der Aufruf von Diablo sieht dann bei dem Charakter wie folgt aus:
Code:
MWConfig_Script.push(["NTDiablo.ntj", 10]); MWConfig_StartAtStar = true; // false: start at entrance, true: start at star MWConfig_FastDiablo = true; // Öffnet nur die Seals und killt Diablo (Schwerer-Modus) MWConfig_KillFullInfectorMob = false; // Wird bei FastDiablo ignoriert!
Clone Diablo:
Ich hab den IP-Check mit dem Idle Bot kombiniert. (wenn es dazu bessere Vorschläge gibt bzw. so etwas ähnliches was ich übersehen hab, bitte um Aufklärung)
Neues Check-IP Script mit Idle-Bot: NTCloneHunter.ntj
Code:
function NTMain()
{
Include("NTBot/HotIP.ntl");
Include("libs/common/NTCommon.ntl");
NTC_IncludeLibs();
NTC_IncludeConfig("NTBot/char_configs");
NT_LoadConfig();
NTSI_LoadNIPFiles("NTBot/item_configs");
MWC_Initialize();
if(!NTTM_CheckAct(me.act, true))
{
NTC_SendMsgToScript("MWBotGame.ntj", NTTM_CheckAct, 18, me.act, true);
return;
}
var _idletime = 3600000; // Wartezeit im Game bei Hot-IP Fund (in ms), bevor der Bot weiterläuft ( 3600000 ms = 1 Stunde )
var _serverip = me.gameserverip.split(".")[3];
var _hot = 0;
//--------------------------------------------------------------------------------------
for( var i = 0; i <= (_hotips.length-1); i++ )
{
if( _hotips[i] == _serverip )
{
_hot = _serverip;
}
}
if( _hot != 0 )
{
Print( "ÿc3 >>> ÿc2HOT-IP gefunden! (ÿc8IP: " + _hot + "ÿc2)! ÿc9Warte " + ( _idletime / 1000 ) + " Sekunden ..." );
NTC_SendLogToOOG(NTC_LOG_COMMON, "ÿc3 >>> ÿc2HOT-IP gefunden! (ÿc8IP: " + _hot + "ÿc2)! Game: ÿc3" + me.gamename + "//" + me.gamepassword );
//---------------------------------------------------------------
//***************************************************************
NTTMGR_TownManager();
var _endtime, _starttick, _loops;
_loops = 0;
_starttick = GetTickCount();
while((!MWConfig_IdleModeRuntime || MWConfig_IdleModeRuntime * 6E4 + _starttick > GetTickCount()))
{
SetStatusText("ÿc8Switching to Act " + (1 + _loops % 5) + "...");
NTTM_CheckAct(1 + _loops % 5);
SetStatusText("ÿc8Moving to Portal Spot...");
NTTM_TownMove("portalspot");
_endtime = GetTickCount() + 6E4; // Wait 60 seconds in each act
while(_endtime > GetTickCount() && ((MWConfig_IdleModeRuntime) ? (MWConfig_IdleModeRuntime * 6E4 + _starttick > GetTickCount()) : true))
{
SetStatusText("ÿc2Running ÿc8MWIdleMode (" + ((parseInt((GetTickCount() - _starttick) / 36E5) >= 1) ? parseInt((GetTickCount() - _starttick) / 36E5) + "h" : "") + (parseInt((GetTickCount() - _starttick) / 6E4) % 60) + "m"+ (parseInt((GetTickCount() - _starttick) / 1E3) % 60) +"s) ["+ ((MWConfig_IdleModeRuntime) ? ((MWConfig_IdleModeRuntime / 60 > 1) ? parseInt(MWConfig_IdleModeRuntime / 60) + "h" : "") + (MWConfig_IdleModeRuntime % 60) + "m" : "inf") + "]");
NTC_Delay(1000);
}
_loops++;
}
//***************************************************************
//---------------------------------------------------------------
NTC_Delay( _idletime );
}
else
{
Print( "ÿc9Keine Hot-IP gefunden." );
}
NTC_SendMsgToScript("MWBotGame.ntj", "SCRIPT_END");
}
Code:
// Prüft ob Game ein Clone-Diablo Game ist. Falls ja wird hier der Run angehalten. // In der Datei scripts/NTBot/HotIP.ntl die IP's einstellen! MWConfig_Script.push(["NTCloneHunter.ntj", 1]); MWConfig_IdleModeRuntime = 5;
Code:
// ------------------------------------------------------------------------------------------ // Check die Hot-IP's auf der folgenden Seite: // http://dclone.eskysse.com/index.php?l=3 // ------------------------------------------------------------------------------------------ // Hier beliebige Hot-IP's eintragen. Wenn nicht gesucht werden soll, einfach 0 eintragen. // ------------------------------------------------------------------------------------------ var _hotips = [ "58", "44"];
------------------------
Würde mich über Feedback freuen





* Check the programming section for updates and further scripts
* Last Update: 02/05/2011
*/
function NTMain()
{
Include("libs/common/NTCommon.ntl");
NTC_IncludeLibs();
NTC_IncludeConfig("NTBot/char_configs");
NT_LoadConfig();
NTSI_LoadNIPFiles("NTBot/item_configs");
MWC_Initialize();
var _monsterCount, _attackpos;
if(!NTTM_CheckAct(me.act, true))
{
NTC_SendMsgToScript("MWBotGame.ntj", NTTM_CheckAct, 20, me.act, true);
return;
}
NTTMGR_TownManager();
if(!NTTM_TownMove("waypoint"))
{
NTC_SendMsgToScript("MWBotGame.ntj", NTTM_TownMove, 28, "waypoint");
return;
}
if(!NTM_TakeWaypoint(107))
{
NTC_SendMsgToScript("MWBotGame.ntj", NTM_TakeWaypoint, 34, 107);
return;
}
NTP_DoPrecast(true);
if(!NTM_MoveTo(108, 7797, 5560))
{
NTC_SendMsgToScript("MWBotGame.ntj", NTM_MoveTo, 42, 108, 7797, 5560);
return;
}
if(!MWConfig_StartAtStar && !MWConfig_FastDiablo)
{
_attackpos = [7792, 5525, 7793, 5501, 7773, 5495, 7768, 5480, 7767, 5458, 7770, 5438, 7774, 5417, 7767, 5391, 7768, 5369, 7769, 5345, 7770, 5320, 7780, 5308];
if(!NTM_MoveTo(108, 7790, 5544))
{
NTC_SendMsgToScript("MWBotGame.ntj", NTM_MoveTo, 52, me.areaid, 7790, 5544);
return;
}
if(NTConfig_PublicMode)
{
_monsterCount = MWA_FindNearbyMonsters(20);
if(_monsterCount > 1)
{
if(_monsterCount < 3)
Say("TP cold, " + _monsterCount + " monsters close!");
else if(_monsterCount < 6)
Say("TP warm, " + _monsterCount + " monsters close!");
else
Say("TP hot, " + _monsterCount + " monsters close!");
}
else
Say("TP up, no monsters close!");
NTM_MakeTP();
}
NTA_ClearPosition(25, false, 2);
NTM_MoveTo(108, 7790, 5544);
NTC_PingDelay(1000);
NTA_ClearPosition(25, true, 2);
NTM_MoveTo(108, 7790, 5544);
if(NTConfig_PublicMode)
{
if(MWA_FindNearbyMonsters(15) < 2)
Say("TP safe!");
else
Say("TP is not safe!");
for(var i = 0; i < _attackpos.length; i += 2)
{
NTM_MoveTo(108, _attackpos[i], _attackpos[i + 1], 3, true);
NTA_ClearPosition(50, true, 2);
}
}
}
if(!MWConfig_FastDiablo || NTConfig_PublicMode)
{
Say("Public ist AN || FastDiablo ist AUS!");
if(MWConfig_StartAtStar)
{
NTM_MoveTo(108, 7792, 5292);
_monsterCount = MWA_FindNearbyMonsters(25);
if(_monsterCount > 1)
{
if(_monsterCount < 3)
Say("TP cold, " + _monsterCount + " monsters close!");
else if(_monsterCount < 6)
Say("TP warm, " + _monsterCount + " monsters close!");
else
Say("TP hot, " + _monsterCount + " monsters close!");
}
else
Say("TP up, no monsters close!");
}
NTM_MakeTP();
NTP_DoPrecast(true);
NTA_ClearPosition(30);
}
//NTM_MoveTo(108, 7792, 5292, 3, true);
if(!NT_OpenSealsInt())
{
NTC_SendMsgToScript("MWBotGame.ntj", NT_OpenSealsInt, 133);
return;
}
if(!NTTMGR_CheckSafe(NTConfig_CheckSelfSafe, NTConfig_CheckMercSafe))
{
NTC_SendMsgToScript("MWBotGame.ntj", NTTMGR_CheckSafe, 139, NTConfig_CheckSelfSafe, NTConfig_CheckMercSafe);
return;
}
if(!NTM_MoveTo(me.areaid, 7792, 5292))
{
NTC_SendMsgToScript("MWBotGame.ntj", NTM_MoveTo, 145, me.areaid, 7792, 5292);
return;
}
if(!MWConfig_FastDiablo)
{
NTP_DoPrecast(true);
}
if(me.classid == NTC_CHAR_CLASS_PALADIN && !MWC_CheckForExpShrineUsers())
{
NTC_PutSkill(109, NTC_HAND_RIGHT);
}
NTC_FindUnit(NTC_UNIT_MONSTER, 243, 150);
if(!NTA_KillMonster(243))
{
NTC_SendMsgToScript("MWBotGame.ntj", NTA_KillMonster, 158, 243);
return;
}
NTSI_PickItems();
if(NTConfig_PublicMode)
{
Say("Next game");
}
NTC_SendMsgToScript("MWBotGame.ntj", "SCRIPT_END");
}
// Internal function
function NT_OpenSealsInt()
{
var i, _unit;
var _result;
_unit = GetPresetUnits(me.areaid, NTC_UNIT_OBJECT);
if(!_unit)
return false;
_result = false;
for(i = 0 ; i < _unit.length ; i++)
{
if(_unit[i].id == 396)
{
if(_unit[i].roomy*5 + _unit[i].y == 5275)
_result = NT_OpenVizierSealInt(1);
else
_result = NT_OpenVizierSealInt(2);
break;
}
}
if(!_result)
return false;
if(!MWConfig_FastDiablo)
{
NTM_MoveTo(me.areaid, 7792, 5292, 3, true);
NTA_ClearPosition(40);
NTP_DoPrecast();
}
_result = false;
for(i = 0 ; i < _unit.length ; i++)
{
if(_unit[i].id == 394)
{
if(_unit[i].roomx*5 + _unit[i].x == 7773)
_result = NT_OpenDeSeisSealInt(1);
else
_result = NT_OpenDeSeisSealInt(2);
break;
}
}
if(!_result)
return false;
if(!MWConfig_FastDiablo)
{
NTM_MoveTo(me.areaid, 7792, 5292, 3, true);
NTA_ClearPosition(40);
NTP_DoPrecast(true);
}
_result = false;
for(i = 0 ; i < _unit.length ; i++)
{
if(_unit[i].id == 392)
{
if(_unit[i].roomx*5 + _unit[i].x == 7893)
_result = NT_OpenVenomSealInt(1);
else
_result = NT_OpenVenomSealInt(2);
break;
}
}
return _result;
}
function NT_OpenVizierSealInt(type)
{
var i, n;
var _attackpos = [7740, 5300, 7740, 5280, 7720, 5280, 7720, 5300];
var _monstername = GetLocaleString(2851);
if(!MWConfig_FastDiablo)
{
for(i = 0 ; i < _attackpos.length ; i += 2)
{
NTM_MoveTo(me.areaid, _attackpos[i], _attackpos[i+1], 3, true);
NTA_ClearPosition(30, true, 2);
}
}
for(i = 0; i < 4; i++)
{
if(!MW_OpenSeal(395) || !MW_OpenSeal(396))
{
NTC_Delay(2500);
continue;
}
if(type == 1)
NTM_MoveTo(me.areaid, 7665, 5277);
for(n = 0; n < 10; n++)
{
NTC_Delay(200);
if(NTA_KillMonster(_monstername))
{
if(!MWConfig_FastDiablo)
{
NTA_ClearPosition();
}
NTSI_PickItems();
return NTM_MoveTo(me.areaid, 7750, 5280);
}
}
}
return false;
}
function NT_OpenDeSeisSealInt(type)
{
var i, n;
var _attackpos = [7780, 5255, 7800, 5255, 7800, 5235, 7780, 5235];
var _monstername = GetLocaleString(2852);
var _deSeis, _dist;
if(!MWConfig_FastDiablo)
{
if(type == 1)
_attackpos.push(7773, 5215, 7773, 5197, 7794, 5196, 7813, 5189, 7814, 5171, 7804, 5156, 7787, 5154);
else
_attackpos.push(7811, 5216, 7810, 5197, 7787, 5192, 7772, 5183, 7773, 5166, 7784, 5154, 7800, 5154);
switch(me.classid)
{
case NTC_CHAR_CLASS_BARBARIAN:
case NTC_CHAR_CLASS_PALADIN:
_dist = 8;
break;
case NTC_CHAR_CLASS_DRUID:
_dist = 10;
break;
default:
_dist = 12;
}
for(i = 0; i < _attackpos.length; i += 2)
{
NTM_MoveTo(me.areaid, _attackpos[i], _attackpos[i+1]);
NTA_ClearPosition(30, true, 2);
}
}
for(i = 0; i < 4; i++)
{
if(type == 1)
{
MW_OpenSeal(394);
NTM_MoveTo(me.areaid, 7791, 5198);
_deSeis = NTC_FindUnit(NTC_UNIT_MONSTER, _monstername, 3);
if(_deSeis)
{
if(_deSeis.y >= 5185)
NTM_MoveTo(me.areaid, 7776, _deSeis.y - _dist);
else
NTM_MoveTo(me.areaid, 7776, _deSeis.y + _dist);
}
else
{
if(!MWConfig_FastDiablo)
{
NTA_ClearPosition(20);
}
}
}
else
{
MW_OpenSeal(394);
NTM_MoveTo(me.areaid, 7789, 5154);
_deSeis = NTC_FindUnit(NTC_UNIT_MONSTER, _monstername, 3);
if(_deSeis && _deSeis.y + _dist <= 5201)
{
if(!NTM_MoveTo(me.areaid, 7776, _deSeis.y + _dist))
NTM_MoveTo(me.areaid, 7776, _deSeis.y - _dist);
}
else
NTM_MoveTo(me.areaid, 7776, 5195);
}
for(n = 0; n < 10; n++)
{
NTC_Delay(200);
if(NTA_KillMonster(_monstername))
{
if(!MWConfig_FastDiablo)
{
NTA_ClearPosition(30);
}
NTSI_PickItems();
return NTM_MoveTo(me.areaid, 7800, 5255);
}
}
}
return false;
}
function NT_OpenVenomSealInt(type)
{
var i, n;
var _attackpos = [7835, 5280, 7835, 5300, 7855, 5300, 7855, 5280];
var _monstername = GetLocaleString(2853);
var _sealOrder;
if(MWConfig_KillFullInfectorMob)
_sealOrder = [392, 393];
else
_sealOrder = [393, 392];
if(!MWConfig_FastDiablo)
{
for(i = 0 ; i < _attackpos.length ; i += 2)
{
NTM_MoveTo(me.areaid, _attackpos[i], _attackpos[i+1], 3, true);
NTA_ClearPosition(30, true, 2);
}
}
for(i = 0; i < 4; i++)
{
if(!MW_OpenSeal(_sealOrder[0]))
{
NTM_MoveTo(me.areaid, _attackpos[_attackpos.length - 2], _attackpos[_attackpos.length - 1], 3, true);
NTC_Delay(2500);
continue;
}
if(_sealOrder[1] == 392 && !MW_OpenSeal(_sealOrder[1]))
{
NTM_MoveTo(me.areaid, _attackpos[_attackpos.length - 2], _attackpos[_attackpos.length - 1], 3, true);
NTC_Delay(2500);
continue;
}
if(type == 1)
NTM_MoveTo(me.areaid, 7892, 5298);
else
NTM_MoveTo(me.areaid, 7937, 5305);
for(n = 0 ; n < 10 ; n++)
{
NTC_Delay(200);
if(NTA_KillMonster(_monstername))
{
NTSI_PickItems();
if(!MWConfig_FastDiablo)
{
NTA_ClearPosition(40);
}
if(NTC_PutSkill(124, NTC_HAND_RIGHT))
NTC_PingDelay(1000);
if(_sealOrder[1] == 393)
{
for(i = 0; i < 4; i++)
{
if(MW_OpenSeal(393))
break;
NTC_Delay(2500);
}
}
return true;
}
}
}
return false;
}
function MW_OpenSeal(classid)
{
var _seal, _x, _y, _unit;
_unit = GetPresetUnits(me.areaid, NTC_UNIT_OBJECT);
if(!_unit)
return false;
for(i = 0 ; i < _unit.length ; i++)
{
if(_unit[i].id == classid)
{
_x = _unit[i].roomx * 5 + _unit[i].x;
_y = _unit[i].roomy * 5 + _unit[i].y;
break;
}
}
NTM_MoveTo(me.areaid, _x + 1, _y + 1);
if(!MWConfig_FastDiablo)
{
NTA_ClearPosition(25, true, 2, false, false);
}
_seal = NTC_FindUnit(NTC_UNIT_OBJECT, classid, 5);
if(!_seal)
return false;
if(_seal.mode > 0)
return true;
for(var i = 0; i < 8; i++)
{
if((i % 2) == 0)
{
if(GetDistance(me, _seal) > 2)
NTM_MoveTo(_seal.areaid, _seal.x + 1, _seal.y +1 );
NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _seal);
}
NTC_Delay(500);
if(_seal.mode > 0)
return true;
if(!MWConfig_FastDiablo)
{
NTA_ClearPosition(20, true, 2, false, false);
}
}
return false;
}
