|
You last visited: Today at 16:39
Advertisement
[Release] Muddy's D2NT
Discussion on [Release] Muddy's D2NT within the Diablo 2 Programming forum part of the Diablo 2 category.
07/08/2011, 13:54
|
#2446
|
elite*gold: 0
Join Date: Mar 2010
Posts: 539
Received Thanks: 418
|
Quote:
Originally Posted by ieincola
pretty clear from what i see it sais "ANYA IN ACT 1"
NOT SURE where act 5 came into play.
anyway it appears that if you dont have a belt equiped then the script crashes at the first npc it goes too. so i fixed it by equiping a belt! thanks anyway! so for future reference make sure your bot is wearing a belt
thanks anyway muddy your great!
|
I think you meant Akara not Anya...
That's why i was confused...
Anya: npc in act 5
Akara: npc in act 1
|
|
|
07/08/2011, 14:23
|
#2447
|
elite*gold: 0
Join Date: Jun 2011
Posts: 16
Received Thanks: 0
|
I apologise I was writing it on an iphone and that can be a pain in the *** to punctuate.
Thanks for answering my questions about the takewp error, I wasn't really bothered about it happening just sometimes can be more frequent then restarts  . I also wanted to know how the rush bot works, do you have to have two bots running different accounts and one bot tells the other what to do, or do you run the bot and join the game as a playing car and play with it, bit confused. This is my first bot and this is all very new. Thanks for your patients as I know these are very simple questions.
|
|
|
07/08/2011, 17:00
|
#2448
|
elite*gold: 0
Join Date: Dec 2008
Posts: 2
Received Thanks: 0
|
Moin, könnt ihr mir sagen wo ich mit einer Orb Sorc gut farmen kann, habe zurzeit
Trist wegen Rejuvs drin
And
Meph
Duriel
aber irgendwie ist meine Ausbeute nicht so gut. Habe das Tal set voll + lidless
kennt wer noch paar gute spots?
|
|
|
07/08/2011, 18:11
|
#2449
|
Administrator
elite*gold: 41364
Join Date: Jan 2010
Posts: 22,727
Received Thanks: 12,652
|
Quote:
Originally Posted by ieincola
pretty clear from what i see it sais "ANYA IN ACT 1"
NOT SURE where act 5 came into play.
anyway it appears that if you dont have a belt equiped then the script crashes at the first npc it goes too. so i fixed it by equiping a belt! thanks anyway! so for future reference make sure your bot is wearing a belt
thanks anyway muddy your great!
|
You're welcome. 
There shouldn't be an error though, so I'm definitely going to check this.
Quote:
Originally Posted by wolfman95
I apologise I was writing it on an iphone and that can be a pain in the ass to punctuate.
Thanks for answering my questions about the takewp error, I wasn't really bothered about it happening just sometimes can be more frequent then restarts  . I also wanted to know how the rush bot works, do you have to have two bots running different accounts and one bot tells the other what to do, or do you run the bot and join the game as a playing car and play with it, bit confused. This is my first bot and this is all very new. Thanks for your patients as I know these are very simple questions.
|
It's actually quite simple, you basically just have to distinguish between the char that does the rush and the char that is rushed.
For the char that is actually performing the rush, all you need to do is add the rush script in his config, just like you would run any other bot script.
This should look like this:
Code:
MWConfig_Script.push(["MWRush.ntj", 0]); MWConfig_IsRusher = true; MWConfig_ActiveQuestersName = ""; MWConfig_NumberOfCharsToRush = 1; MWConfig_GetHoradricCubesInNorm = true; MWConfig_QuestSchedule = ["A2Q1", "A4Q1", "A5Q1"]; MWConfig_RushActs = [1, 2, 3, 4, 5];
The corresponding variables should be quite self-explaining - this is at least I hope them to be. All you need to do is set this script as the very first one in schedule and then (manually) join the game that was created by the char to be rushed.
The rush should then commence automatically, if not, type ".start".
Regarding the char(s) to be rushed:
Now this works a little differently. First of all, you gonna need a new profile.
In this profile, select "MWRushEntry.ntj" as your entry point.
Then check the quester's config (scripts/MWRush/MWRushConfig_Quester.ntl). Make sure the options match those selected for the char that performs the rush - the selected options must be consistent. Launching D2 is all that entry point does, so you gotta login and create a game manually. When ingame, the rush script will be executed automatically.
Note that there is a slight bug in the release version. Try this one instead:
Code:
/**
* This file was written by
* Check the programming section for updates and further scripts
* Last Update: 02/20/2011
*/
// Global variables
var _MWR_BossKilledAndariel = false;
var _MWR_BossKilledSummoner = false;
var _MWR_BossKilledDuriel = false;
var _MWR_BossKilledCouncil = false;
var _MWR_BossKilledMephisto = false;
var _MWR_BossKilledDiablo = false;
var _MWR_BossKilledSchenk = false;
var _MWR_BossKilledIzual = false;
var _MWR_BossKilledRadament = false;
var _MWR_RescuedAnya = false;
var _MWR_TPSafe = false;
var _MWR_CorrectTombId = -1;
var _MWR_IsActiveQuester;
var _MWR_ActiveQuesterName = "";
var _MWR_ActiveQuesterConfirmed = false;
var _MWR_ConfirmationRequestTicks = GetTickCount();
var _MWR_CommenceRush = false;
var _MWR_AnnounceStatus = true;
// Global constants
const _MWR_UNIT_AMULET_CLASSID = 521;
const _MWR_UNIT_STAFF_CLASSID = 92;
const _MWR_UNIT_FULLSTAFF_CLASSID = 91;
const _MWR_UNIT_BOOK_OF_SKILL = 552;
const _MWR_UNIT_SCROLL_OF_RESISTANCE = 646;
const _MWR_STATUS_WAITING = 0;
const _MWR_STATUS_INTERACTING = 1;
const _MWR_STATUS_MOVING = 2;
const _MWR_STATUS_TALKING = 3;
const _MWR_STATUS_PICKUP = 4;
function NTMain()
{
Include("libs/common/NTCommon.ntl");
NTC_IncludeLibs();
if(!NTC_IncludeConfig("NTBot/char_configs", false))
{
Include("NTBot/char_configs/NTConfig.ntl");
Include("MWRush/MWRushConfig_Quester.ntl");
}
NT_LoadConfig();
NTSI_LoadNIPFiles("NTBot/item_configs");
MWC_Initialize();
RegisterEvent(EVENT_SCRIPTMSG, MWR_ScriptMsgEvents);
var _output, _startTicks;
if(!NTTM_CheckAct())
{
NTC_SendMsgToScript("MWBotGame.ntj", NTTM_CheckAct, 62);
return;
}
if(!MWConfig_IsRusher)
{
_MWR_IsActiveQuester = MWR_SetQuesterStatus();
if(_MWR_IsActiveQuester)
{
Print("˙c2I will be the active Quester.");
if(!MWR_CarriesItem(NTC_UNIT_CUBE) && me.diff > 0 && MWConfig_RushActs.indexOf(2) > -1)
Print("˙c1WARNING: " + me.charname + " is set as active quester, but does not carry a horadric cube!");
}
else
Print("˙c2I will relax while someone else does all the work. :)");
}
SetStatusText("˙c2Waiting for all characters to join...");
while(!MWR_AllPlayersPresent() && !_MWR_CommenceRush)
NTC_Delay(1000)
_MWR_ConfirmationRequestTicks = GetTickCount();
_startTicks = GetTickCount();
if(MWConfig_IsRusher)
{
_MWR_ActiveQuesterName = "";
Say(".InvalidateQuester");
}
Print("˙c8Quests scheduled: ");
for(var i = 1; i <= 5; i++)
{
_output = "";
if(MWConfig_RushActs.indexOf(i) > -1)
{
_output = "˙c8Act˙c1 " + i + "˙c8:˙c2 ";
for(var j = 0; j < MWConfig_QuestSchedule.length; j++)
{
if(MWConfig_QuestSchedule[j].indexOf("A" + i) > -1)
_output += MWConfig_QuestSchedule[j].substr(2) + " ";
}
}
if(_output.length > 19)
Print(_output);
}
if(MWConfig_RushActs.length > 0)
{
if(MWConfig_RushActs.indexOf(1) > -1)
{
if(!MWR_DoActI())
{
NTC_SendMsgToScript("MWBotGame.ntj", MWR_DoActI, 108);
return;
}
else
Print("˙c2Act I completed!");
}
if(MWConfig_RushActs.indexOf(2) > -1)
{
if(!MWR_DoActII())
{
NTC_SendMsgToScript("MWBotGame.ntj", MWR_DoActII, 118);
return;
}
else
Print("˙c2Act II completed!");
}
if(MWConfig_RushActs.indexOf(3) > -1)
{
if(!MWR_DoActIII())
{
NTC_SendMsgToScript("MWBotGame.ntj", MWR_DoActIII, 128);
return;
}
else
Print("˙c2Act III completed!");
}
if(MWConfig_RushActs.indexOf(4) > -1)
{
if(!MWR_DoActIV())
{
NTC_SendMsgToScript("MWBotGame.ntj", MWR_DoActIV, 138);
return;
}
else
Print("˙c2Act IV completed!");
}
if(MWConfig_RushActs.indexOf(5) > -1)
{
if(!MWR_DoActV())
{
NTC_SendMsgToScript("MWBotGame.ntj", MWR_DoActV, 148);
return;
}
else
Print("˙c2Act V completed!");
}
}
MWC_SetStatusText("˙c8Rush completed in ˙c;" + MWC_ConvertTicksToTimeString(GetTickCount() - _startTicks));
Print("˙c8Rush completed in ˙c;" + MWC_ConvertTicksToTimeString(GetTickCount() - _startTicks));
UnregisterEvent(EVENT_SCRIPTMSG);
}
function MWR_DoActV()
{
if(!MWConfig_IsRusher)
{
NTTM_CheckAct(5);
if(_MWR_IsActiveQuester)
{
if(MWConfig_QuestSchedule.indexOf("A5Q1") > -1)
{
MWR_UpdateStatus(_MWR_STATUS_MOVING, "Portal");
if(!NTTM_TownMove("portalspot"))
return false;
MWR_UpdateStatus(_MWR_STATUS_WAITING, "TP Bloody Foothills");
while(!MWR_EnterNearbyTP(110) && NTC_InTown())
NTC_Delay(1000);
MWR_UpdateStatus(_MWR_STATUS_WAITING, "Quest Completion");
while(!_MWR_BossKilledSchenk)
NTC_Delay(2000);
MWR_UpdateStatus(_MWR_STATUS_MOVING, "Harrogath");
if(!MWR_CheckDeath())
{
if(!MWR_EnterNearbyTP(NTC_AREA_ID_ACT_5))
return false;
}
}
if(MWConfig_QuestSchedule.indexOf("A5Q3") > -1)
{
MWR_UpdateStatus(_MWR_STATUS_MOVING, "Portal");
if(!NTTM_TownMove("portalspot"))
return false;
MWR_UpdateStatus(_MWR_STATUS_WAITING, "TP Frozen River");
while(!_MWR_TPSafe || !MWR_EnterNearbyTP(114) && NTC_InTown())
NTC_Delay(1000);
_MWR_TPSafe = false;
_npc = NTC_FindUnit(NTC_UNIT_OBJECT, 558, 5);
if(_npc)
MWR_ActivateObject(_npc);
if(!MWR_EnterNearbyTP(NTC_AREA_ID_ACT_5))
return false;
MWR_UpdateStatus(_MWR_STATUS_MOVING, "Malah");
if(!NTTM_TownMove("malah"))
return false;
_npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_MALAH, 5);
if(_npc)
{
MWR_UpdateStatus(_MWR_STATUS_TALKING, _npc.name);
if(NTT_DoInteract(_npc))
MWR_CancelNpcInteraction();
}
MWR_UpdateStatus(_MWR_STATUS_MOVING, "Portal");
if(!NTTM_TownMove("portalspot"))
return false;
if(!MWR_EnterNearbyTP(114))
return false;
_npc = NTC_FindUnit(NTC_UNIT_OBJECT, 558, 5);
if(_npc)
{
MWR_UpdateStatus(_MWR_STATUS_TALKING, _npc.name);
MWR_ActivateObject(_npc);
MWR_CancelNpcInteraction();
Say(".Rescued Anya");
}
if(!MWR_EnterNearbyTP(NTC_AREA_ID_ACT_5))
return false;
MWR_UpdateStatus(_MWR_STATUS_MOVING, "Malah");
if(!NTTM_TownMove("malah"))
return false;
_npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_MALAH, 5);
if(_npc)
{
MWR_UpdateStatus(_MWR_STATUS_TALKING, _npc.name);
if(NTT_DoInteract(_npc))
MWR_CancelNpcInteraction();
}
if(MWR_UseQuestItem(_MWR_UNIT_SCROLL_OF_RESISTANCE))
me.Cancel(1);
}
}
else
{
if(MWConfig_QuestSchedule.indexOf("A5Q1") > -1)
{
MWR_UpdateStatus(_MWR_STATUS_WAITING, "Quest Completion");
while(!_MWR_BossKilledSchenk)
NTC_Delay(2000);
}
if(MWConfig_QuestSchedule.indexOf("A5Q3") > -1)
{
MWR_UpdateStatus(_MWR_STATUS_WAITING, "Quest Completion");
while(!_MWR_RescuedAnya)
NTC_Delay(2000);
MWR_UpdateStatus(_MWR_STATUS_MOVING, "Malah");
if(!NTTM_TownMove("malah"))
return false;
_npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_MALAH, 5);
if(_npc)
{
MWR_UpdateStatus(_MWR_STATUS_TALKING, _npc.name);
if(NTT_DoInteract(_npc))
MWR_CancelNpcInteraction();
}
if(MWR_UseQuestItem(_MWR_UNIT_SCROLL_OF_RESISTANCE))
me.Cancel(1);
}
}
}
else
{
if(!NTTM_CheckAct())
return false;
if(MWConfig_QuestSchedule.indexOf("A5Q1") > -1)
{
NTTMGR_TownManager();
if(!NTTM_TownMove("waypoint"))
return false;
if(!NTM_TakeWaypoint(111))
return false;
NTP_DoPrecast(true);
NTM_MoveTo(110, 3866, 5122);
if(!NTM_MakeTP())
return false;
else if(_MWR_AnnounceStatus)
Say("TP up @Bloody Foothills.");
NTA_ClearPosition(5, true, 2, false, false);
NTM_MoveTo(110, 3866, 5122);
while(!MWR_IsQuesterNearby() || !MWR_CheckQuesterAct())
NTC_Delay(500);
if(NTA_KillMonster(GetLocaleString(22435)))
Say(".Killed Schenk");
NTSI_PickItems();
NTA_ClearPosition(20, true, 2, false, false);
NTM_MoveTo(110, 3866, 5122);
if(!MWR_EnterNearbyTP(NTC_AREA_ID_ACT_5))
NTTM_CheckAct();
}
if(MWConfig_QuestSchedule.indexOf("A5Q3") > -1)
{
NTTMGR_TownManager();
if(!NTTM_TownMove("waypoint"))
return false;
if(!NTM_TakeWaypoint(113))
return false;
NTP_DoPrecast(true);
if(!NTM_MoveToStair(me.areaid, 114))
return false;
if(!NTM_TakeStair(114))
return false;
if(!NTM_MoveToPresetUnit(114, NTC_UNIT_OBJECT, 460, 3, 3))
return false;
NTM_MoveToPresetUnit(114, NTC_UNIT_OBJECT, 460, 3, 3);
if(!NTM_MakeTP())
return false;
else if(_MWR_AnnounceStatus)
Say("TP up @Frozen River, not safe though.");
NTA_ClearPosition(40, true, 2, false, false);
Say(".TPSafe");
while(!_MWR_RescuedAnya)
{
NTM_MoveToPresetUnit(114, NTC_UNIT_OBJECT, 460, 5, 5);
NTA_ClearPosition(40, true, 2, false, false);
NTC_Delay(5000);
}
NTM_MoveToPresetUnit(114, NTC_UNIT_OBJECT, 460, 3, 3);
if(!MWR_EnterNearbyTP(NTC_AREA_ID_ACT_5))
NTTM_CheckAct();
}
}
return true;
}
function MWR_DoActIV()
{
var _npc, _prePos;
if(!MWConfig_IsRusher)
{
NTTM_CheckAct(4);
MWR_UpdateStatus(_MWR_STATUS_MOVING, "Portal");
if(!NTTM_TownMove("portalspot"))
return false;
if(_MWR_IsActiveQuester)
{
if(MWConfig_QuestSchedule.indexOf("A4Q1") > -1)
{
MWR_UpdateStatus(_MWR_STATUS_WAITING, "TP Plains Of Despair");
while(!MWR_EnterNearbyTP(105) && NTC_InTown())
NTC_Delay(1000);
MWR_UpdateStatus(_MWR_STATUS_WAITING, "Quest Completion");
while(!_MWR_BossKilledIzual)
NTC_Delay(2000);
MWR_UpdateStatus(_MWR_STATUS_MOVING, "Pandemonium Fortress");
if(!MWR_CheckDeath())
{
if(!MWR_EnterNearbyTP(NTC_AREA_ID_ACT_4))
return false;
}
MWR_UpdateStatus(_MWR_STATUS_MOVING, "Tyrael");
if(!NTTM_TownMove("tyrael"))
return false;
_npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_TYRAEL_ACT_4, 5);
if(_npc)
{
MWR_UpdateStatus(_MWR_STATUS_TALKING, _npc.name);
MWR_TalkToNpc(_npc, true);
MWR_TalkToNpc(_npc, true);
}
MWR_UpdateStatus(_MWR_STATUS_MOVING, "Portal");
if(!NTTM_TownMove("portalspot"))
return false;
}
MWR_UpdateStatus(_MWR_STATUS_WAITING, "TP Chaos Sanctuary");
while(!_MWR_TPSafe || !MWR_EnterNearbyTP(108) && NTC_InTown())
NTC_Delay(1000);
_MWR_TPSafe = false;
NTM_WalkTo(7768, 5261);
MWR_UpdateStatus(_MWR_STATUS_WAITING, "Quest Completion");
while(!_MWR_BossKilledDiablo)
NTC_Delay(2000);
MWR_UpdateStatus(_MWR_STATUS_MOVING, "Pandemonium Fortress");
if(!MWR_CheckDeath())
{
if(!MWR_EnterNearbyTP(NTC_AREA_ID_ACT_4))
return false;
}
}
else
{
if(MWConfig_QuestSchedule.indexOf("A4Q1") > -1)
{
MWR_UpdateStatus(_MWR_STATUS_WAITING, "Quest Completion");
while(!_MWR_BossKilledIzual)
NTC_Delay(2000);
MWR_UpdateStatus(_MWR_STATUS_MOVING, "Tyrael");
if(!NTTM_TownMove("tyrael"))
return false;
_npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_TYRAEL_ACT_4, 5);
if(_npc)
{
MWR_UpdateStatus(_MWR_STATUS_TALKING, _npc.name);
MWR_TalkToNpc(_npc, true);
}
MWR_UpdateStatus(_MWR_STATUS_MOVING, "Portal");
if(!NTTM_TownMove("portalspot"))
return false;
}
MWR_UpdateStatus(_MWR_STATUS_WAITING, "Quest Completion");
while(!_MWR_BossKilledDiablo)
NTC_Delay(2000);
}
MWR_UpdateStatus(_MWR_STATUS_MOVING, "Tyrael");
if(!NTTM_TownMove("tyrael"))
return false;
if(_MWR_IsActiveQuester)
{
_npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_TYRAEL_ACT_4, 5);
if(_npc)
{
MWR_UpdateStatus(_MWR_STATUS_TALKING, _npc.name);
MWR_TalkToNpc(_npc, true);
}
}
MWR_UpdateStatus(_MWR_STATUS_WAITING, "Portal To Harrogath");
while(!MWR_UseRedPortal(566, 109))
NTC_Delay(1000);
}
else
{
if(!NTTM_CheckAct())
return false;
if(MWConfig_QuestSchedule.indexOf("A4Q1") > -1)
{
NTTMGR_TownManager();
while(!MWR_IsQuesterNearby() || !MWR_CheckQuesterAct())
NTC_Delay(500);
if(!NTTM_TownMove("waypoint"))
return false;
if(!NTM_TakeWaypoint(106))
return false;
NTP_DoPrecast(true);
if(!NTM_MoveToPresetUnit(105, NTC_UNIT_MONSTER, 256, 10, 10))
{
if(!NTM_MoveToPresetUnit(105, NTC_UNIT_MONSTER, 256, -10, -10))
{
if(!NTM_MoveToPresetUnit(105, NTC_UNIT_MONSTER, 256, 10, -10))
{
if(!NTM_MoveToPresetUnit(105, NTC_UNIT_MONSTER, 256, -10, 10))
return false;
}
}
}
_prePos = new coord(me.x, me.y);
if(!NTM_MakeTP())
return false;
else if(_MWR_AnnounceStatus)
Say("TP up @Plains of Despair.");
if(NTA_KillMonster(256))
Say(".Killed Izual");
NTSI_PickItems();
NTM_MoveTo(me.areaid, _prePos.x + 1, _prePos.y + 1);
if(!MWR_EnterNearbyTP(NTC_AREA_ID_ACT_4))
NTTM_CheckAct();
}
NTTMGR_TownManager();
if(!NTTM_TownMove("waypoint"))
return false;
if(!NTM_TakeWaypoint(107))
return false;
NTP_DoPrecast(true);
if(!NTM_MoveTo(108, 7792, 5292))
return false;
if(!MWR_ClearCS())
return false;
NTM_MoveTo(108, 7768, 5255);
while(!MWR_CheckQuesterAct())
NTC_Delay(500);
if(!NTM_MakeTP())
return false;
else
Say(".TPSafe");
while(!MWR_IsQuesterNearby() || !MWR_CheckQuesterAct())
NTC_Delay(500);
NTM_MoveTo(108, 7792, 5292);
NTP_DoPrecast(true);
NTC_PutSkill(109, NTC_HAND_RIGHT);
NTC_FindUnit(NTC_UNIT_MONSTER, 243, 150);
if(NTA_KillMonster(243))
Say(".Killed Diablo");
NTSI_PickItems();
NTM_MoveTo(108, 7768, 5255);
if(!MWR_EnterNearbyTP(NTC_AREA_ID_ACT_4))
NTTM_CheckAct();
NTTM_TownMove("tyrael");
NTC_FindUnit(NTC_UNIT_OBJECT, 566, 100);
MWR_UseRedPortal(566, 109);
}
return true;
}
function MWR_DoActIII()
{
var _npc, _waypoint, _offsetVectors, _monster, _council, _minIndex, _minDist, _dist;
if(!MWConfig_IsRusher)
{
NTTM_CheckAct(3);
MWR_UpdateStatus(_MWR_STATUS_MOVING, "Portal");
if(!NTTM_TownMove("portalspot"))
return false;
if(_MWR_IsActiveQuester)
{
MWR_UpdateStatus(_MWR_STATUS_WAITING, "TP Travincal");
while(!MWR_EnterNearbyTP(83) && NTC_InTown())
NTC_Delay(1000);
MWR_UpdateStatus(_MWR_STATUS_WAITING, "Quest Completion");
while(!_MWR_BossKilledCouncil)
NTC_Delay(2000);
MWR_UpdateStatus(_MWR_STATUS_MOVING, "Kurast Docks");
if(!MWR_CheckDeath())
{
if(!MWR_EnterNearbyTP(NTC_AREA_ID_ACT_3))
return false;
}
}
else
{
MWR_UpdateStatus(_MWR_STATUS_WAITING, "Quest Completion");
while(!_MWR_BossKilledCouncil)
NTC_Delay(2000);
}
MWR_UpdateStatus(_MWR_STATUS_MOVING, "Deckard Cain");
if(!NTTM_TownMove("cain"))
return false;
_npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_CAIN_ACT_3, 5);
if(_npc)
{
MWR_UpdateStatus(_MWR_STATUS_TALKING, _npc.name);
MWR_TalkToNpc(_npc, true);
}
MWR_UpdateStatus(_MWR_STATUS_MOVING, "Portal");
if(!NTTM_TownMove("portalspot"))
return false;
if(_MWR_IsActiveQuester)
{
MWR_UpdateStatus(_MWR_STATUS_WAITING, "TP Durance Of Hate");
while(!MWR_EnterNearbyTP(102) && NTC_InTown())
NTC_Delay(1000);
MWR_UpdateStatus(_MWR_STATUS_WAITING, "Quest Completion");
while(!_MWR_BossKilledMephisto)
NTC_Delay(2000);
NTC_Delay(2500);
}
else
{
MWR_UpdateStatus(_MWR_STATUS_WAITING, "Quest Completion");
while(!_MWR_BossKilledMephisto)
NTC_Delay(2000);
}
for(var i = 0; i < 5; i++)
{
MWR_CheckDeath();
if(NTC_InTown())
{
MWR_UpdateStatus(_MWR_STATUS_MOVING, "Portal");
if(!NTTM_TownMove("portalspot"))
continue;
if(!MWR_EnterNearbyTP(102))
continue;
}
MWR_UpdateStatus(_MWR_STATUS_INTERACTING, "Portal");
if(!MWR_UseRedPortal(342, 103))
continue;
else
return true;
}
return false;
}
else
{
if(!NTTM_CheckAct())
return false;
NTTMGR_TownManager();
if(!NTTM_TownMove("waypoint"))
return false;
if(!NTM_TakeWaypoint(83))
return false;
NTP_DoPrecast(true);
_offsetVectors = new Array();
_offsetVectors.push(new vector(51, -34));
_offsetVectors.push(new vector(51, -53));
_offsetVectors.push(new vector(51, -77));
_offsetVectors.push(new vector(51, -100));
_offsetVectors.push(new vector(49, -118));
_offsetVectors.push(new vector(59, -130));
_offsetVectors.push(new vector(79, -130));
_offsetVectors.push(new vector(93, -130));
_waypoint = NTC_FindUnit(NTC_UNIT_OBJECT, 237);
if(!_waypoint)
return false;
if(!NTM_MoveTo(me.areaid, _waypoint.x + 81, _waypoint.y - 29))
return false;
for(var i = 0; i < _offsetVectors.length; i++)
NTM_MoveTo(me.areaid, _waypoint.x + _offsetVectors[i].x, _waypoint.y + _offsetVectors[i].y);
NTA_ClearPosition(15, true, 2, false, false);
NTM_MoveTo(me.areaid, _waypoint.x + _offsetVectors[_offsetVectors.length - 1].x, _waypoint.y + _offsetVectors[_offsetVectors.length - 1].y);
if(!NTM_MakeTP())
return false;
else if(_MWR_AnnounceStatus)
Say("TP up @Travincal.");
while(!MWR_IsQuesterNearby() || !MWR_CheckQuesterAct())
{
if(GetDistance(me.x, me.y, _waypoint.x + _offsetVectors[_offsetVectors.length - 1].x, _waypoint.y + _offsetVectors[_offsetVectors.length - 1].y) > 7.5)
NTM_MoveTo(me.areaid, _waypoint.x + _offsetVectors[_offsetVectors.length - 1].x + 2, _waypoint.y + _offsetVectors[_offsetVectors.length - 1].y + 2);
NTA_ClearPosition(15, true, 2, false, false);
NTC_Delay(500);
}
NTM_MoveTo(me.areaid, _waypoint.x + 96, _waypoint.y - 90);
_council = new Array(GetLocaleString(2860), GetLocaleString(2862), GetLocaleString(2863));
while(_council.length > 0)
{
//_monster, _council, _index, _minDist
_minIndex = -1;
_minDist = 1E3;
for(var i = 0; i < _council.length; i++)
{
_monster = NTC_FindUnit(NTC_UNIT_MONSTER, _council[i], 3);
if(_monster && _monster.IsAttackable() && NTA_IsValidMonster(_monster))
{
_dist = GetDistance(_monster.x, _monster.y, _waypoint.x + _offsetVectors[_offsetVectors.length - 1].x + 5, _waypoint.y + _offsetVectors[_offsetVectors.length - 1].y + 55);
if(_dist < _minDist)
{
_minIndex = i;
_minDist = _dist;
}
}
}
if(_minIndex > -1)
{
if(NTA_KillMonster(_council[_minIndex]))
_council.splice(_minIndex, 1);
}
else
break;
}
Say(".Killed Council");
NTA_ClearPosition(50, true, 2, false, false);
NTM_MoveTo(me.areaid, _waypoint.x + 1, _waypoint.y + 1);
if(!NTM_TakeWaypoint(NTC_AREA_ID_ACT_3))
NTTM_CheckAct();
NTTMGR_TownManager();
if(!NTTM_TownMove("waypoint"))
return false;
if(!NTM_TakeWaypoint(101))
return false;
NTP_DoPrecast(true);
if(!NTM_MoveToStair(me.areaid, 102))
return false;
if(!NTM_TakeStair(102))
return false;
NTM_MoveTo(me.areaid, 17625, 8070);
NTA_ClearPosition(40, true, 2, false, false);
NTM_MoveTo(me.areaid, 17590, 8069);
if(!NTM_MakeTP())
return false;
else if(_MWR_AnnounceStatus)
Say("Tp up @Durance Of Hate.");
while(!MWR_IsQuesterNearby())
NTC_Delay(500);
NTM_MoveTo(me.areaid, 17578, 8070);
NTM_MoveTo(me.areaid, 17549, 8082);
NTM_MoveTo(me.areaid, 17541, 8070);
NTC_FindUnit(NTC_UNIT_MONSTER, 242, 10);
if(NTA_KillMonster(242))
Say(".Killed Mephisto");
else
return false;
NTSI_PickItems();
NTA_ClearPosition(30, true, 2, false, false);
NTM_MoveTo(me.areaid, 17590, 8069);
NTA_ClearPosition(40, true, 2, false, false);
NTM_MoveTo(me.areaid, 17625, 8070);
NTA_ClearPosition(40, true, 2, false, false);
NTM_MoveTo(me.areaid, 17590, 8069);
return MWR_UseRedPortal(342, 103);
}
}
function MWR_DoActII()
{
var i, j;
var _object, _npc, _journal, _journalx, _journaly, _offset, _cube, _chest, _dest, _unit, _tombs, _portal, _path, _endTicks, _preCount;
if(!MWConfig_IsRusher)
{
NTTM_CheckAct(2);
if(_MWR_IsActiveQuester)
{
_npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_JERHYN, 5);
if(_npc)
{
MWR_UpdateStatus(_MWR_STATUS_TALKING, _npc.name);
MWR_TalkToNpc(_npc, true);
}
}
// Cube
if(MWConfig_GetHoradricCubesInNorm && !MWR_CarriesItem(NTC_UNIT_CUBE) && me.diff == 0)
{
MWR_UpdateStatus(_MWR_STATUS_MOVING, "Portal");
if(!NTTM_TownMove("portalspot"))
return false;
MWR_UpdateStatus(_MWR_STATUS_WAITING, "TP Halls Of The Dead");
while(!MWR_EnterNearbyTP(60) && NTC_InTown())
NTC_Delay(1000);
MWR_UpdateStatus(_MWR_STATUS_PICKUP, "Horadric Cube");
for(var i = 0; i < 10; i++)
{
if(MWR_CarriesItem(NTC_UNIT_CUBE))
break;
MWR_PickupItem(NTC_UNIT_CUBE);
NTC_Delay(500);
}
MWR_UpdateStatus(_MWR_STATUS_MOVING, "Lut Gholein");
if(!MWR_CheckDeath())
{
if(!MWR_EnterNearbyTP(NTC_AREA_ID_ACT_2))
return false;
}
}
if(_MWR_IsActiveQuester)
{
if(MWConfig_QuestSchedule.indexOf("A2Q1") > -1)
{
MWR_UpdateStatus(_MWR_STATUS_MOVING, "Portal");
if(!NTTM_TownMove("portalspot"))
return false;
MWR_UpdateStatus(_MWR_STATUS_WAITING, "TP Sewers Level 3");
while(!MWR_EnterNearbyTP(49) && NTC_InTown())
NTC_Delay(1000);
MWR_UpdateStatus(_MWR_STATUS_WAITING, "Quest Completion");
while(!_MWR_BossKilledRadament)
NTC_Delay(1000);
if(MWR_CheckDeath())
{
MWR_UpdateStatus(_MWR_STATUS_MOVING, "Portal");
if(!NTTM_TownMove("portalspot"))
return false;
}
MWR_UpdateStatus(_MWR_STATUS_WAITING, "Portal Clearance");
while(!_MWR_TPSafe)
NTC_Delay(1000);
_MWR_TPSafe = false;
MWR_UpdateStatus(_MWR_STATUS_WAITING, "TP Sewers Level 3");
while(!MWR_EnterNearbyTP(49) && NTC_InTown())
NTC_Delay(1000);
for(i = 0; i < 10; i++)
{
MWR_PickupItem(_MWR_UNIT_BOOK_OF_SKILL);
if(MWR_CarriesItem(_MWR_UNIT_BOOK_OF_SKILL))
break;
NTC_Delay(250);
if(MWR_CountNearbyItems(_MWR_UNIT_BOOK_OF_SKILL) == 0)
break;
}
MWR_UpdateStatus(_MWR_STATUS_MOVING, "Lut Gholein");
if(!MWR_CheckDeath())
{
if(!MWR_EnterNearbyTP(NTC_AREA_ID_ACT_2))
return false;
}
if(MWR_UseQuestItem(_MWR_UNIT_BOOK_OF_SKILL))
me.Cancel(1);
}
if(!MWCU_MoveCubeToInventory())
return false;
else
{
if(MWCU_GetItemsInCube().length > 0)
{
_cube = me.GetItems(NTC_UNIT_CUBE);
MWR_UpdateStatus(_MWR_STATUS_INTERACTING, "Cube");
if(_cube && _cube.length > 0)
{
NTCU_OpenCubeInt(_cube);
NTCU_CheckCubeInventoryInt();
NTCU_ClearCubeInt();
NTCU_CloseCubeInt();
}
}
me.Cancel(1);
}
// Amulet
for(i = 0; i < 10; i++)
{
MWR_UpdateStatus(_MWR_STATUS_MOVING, "Portal");
if(!NTTM_TownMove("portalspot"))
continue;
MWR_UpdateStatus(_MWR_STATUS_WAITING, "TP Claw Viper Temple");
while(!MWR_EnterNearbyTP(61) && NTC_InTown())
NTC_Delay(1000);
if(!me.GetQuest(11, 12) || !me.GetQuest(11, 0) || !me.GetQuest(10, 12) || !me.GetQuest(10, 0))
{
MWR_UpdateStatus(_MWR_STATUS_INTERACTING, "Sun Altar");
for(j = 0; j < 20; j++)
{
_object = NTC_FindUnit(NTC_UNIT_OBJECT, 149, 5);
if(j % 5 == 0)
{
if(MWR_ActivateObject(_object))
break;
}
NTC_Delay(250);
}
if(j >= 20)
continue;
MWR_UpdateStatus(_MWR_STATUS_PICKUP, "Viper Amulet");
for(j = 0; j < 10; j++)
{
MWR_PickupItem(_MWR_UNIT_AMULET_CLASSID);
if(MWR_CarriesItem(_MWR_UNIT_AMULET_CLASSID))
break;
NTC_Delay(500);
}
if(j >= 10)
continue;
}
MWR_UpdateStatus(_MWR_STATUS_MOVING, "Lut Gholein");
if(!MWR_CheckDeath())
{
if(!MWR_EnterNearbyTP(NTC_AREA_ID_ACT_2))
continue;
}
if(!me.GetQuest(11, 12) || !me.GetQuest(11, 0) || !me.GetQuest(10, 12) || !me.GetQuest(10, 0))
{
MWR_UpdateStatus(_MWR_STATUS_INTERACTING, "Viper Amulet");
if(NTC_InTown())
MWR_MoveQuestItemToCube(_MWR_UNIT_AMULET_CLASSID);
if(MWR_CarriesItem(_MWR_UNIT_AMULET_CLASSID))
break;
}
else
break;
}
if(i >= 10)
return false;
MWR_UpdateStatus(_MWR_STATUS_MOVING, "Drognan");
if(!NTTM_TownMove("drognan"))
return false;
_npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_DROGNAN, 5);
if(_npc)
{
MWR_UpdateStatus(_MWR_STATUS_TALKING, _npc.name);
MWR_TalkToNpc(_npc, true);
}
// Staff
for(i = 0; i < 10; i++)
{
MWR_UpdateStatus(_MWR_STATUS_MOVING, "Portal");
if(!NTTM_TownMove("portalspot"))
continue;
MWR_UpdateStatus(_MWR_STATUS_WAITING, "TP Maggot's Lair");
while(!MWR_EnterNearbyTP(64) && NTC_InTown())
NTC_Delay(1000);
if(!me.GetQuest(10, 12) || !me.GetQuest(10, 0))
{
MWR_UpdateStatus(_MWR_STATUS_PICKUP, "Staff");
for(j = 0; j < 10; j++)
{
MWR_PickupItem(_MWR_UNIT_STAFF_CLASSID);
if(MWR_CarriesItem(_MWR_UNIT_STAFF_CLASSID))
break;
NTC_Delay(500);
}
if(j >= 10)
continue;
}
MWR_UpdateStatus(_MWR_STATUS_MOVING, "Lut Gholein");
if(!MWR_CheckDeath())
{
if(!MWR_EnterNearbyTP(NTC_AREA_ID_ACT_2))
continue;
}
if(!me.GetQuest(10, 12) || !me.GetQuest(10, 0))
{
MWR_UpdateStatus(_MWR_STATUS_INTERACTING, "Staff");
if(NTC_InTown())
MWR_MoveQuestItemToCube(_MWR_UNIT_STAFF_CLASSID);
if(MWR_CarriesItem(_MWR_UNIT_STAFF_CLASSID))
break;
}
else
break;
}
if(i >= 10)
return false;
if(!me.GetQuest(10, 12) || !me.GetQuest(10, 0))
{
_cube = me.GetItems(NTC_UNIT_CUBE);
MWR_UpdateStatus(_MWR_STATUS_INTERACTING, "Cube");
if(_cube && _cube.length > 0)
{
SetUIState(0x1, true);
if(!NTCU_OpenCubeInt(_cube[0]))
return false;
MWCU_Transmute(_cube[0]);
if(NTCU_CheckCubeInventoryInt() == 1)
{
NTCU_ClearCubeInt();
NTCU_CloseCubeInt();
}
else
{
NTCU_CloseCubeInt();
return false;
}
}
}
if(MWCU_MoveCubeToStash())
me.Cancel(1);
// Summoner
MWR_UpdateStatus(_MWR_STATUS_MOVING, "Portal");
if(!NTTM_TownMove("portalspot"))
return false;
MWR_UpdateStatus(_MWR_STATUS_WAITING, "TP Arcane Sanctuary");
while(!MWR_EnterNearbyTP(74) && NTC_InTown())
NTC_Delay(1000);
MWR_UpdateStatus(_MWR_STATUS_WAITING, "Quest Completion");
while(!_MWR_BossKilledSummoner)
NTC_Delay(1000);
MWR_UpdateStatus(_MWR_STATUS_MOVING, "Lut Gholein");
for(var i = 0; i < 5; i++)
{
if(!MWR_CheckDeath())
{
if(!MWR_EnterNearbyTP(NTC_AREA_ID_ACT_2))
return false;
}
if(NTC_InTown())
break;
}
// Duriel
MWR_UpdateStatus(_MWR_STATUS_MOVING, "Deckard Cain");
if(!NTTM_TownMove("cain"))
return false;
_npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_CAIN_ACT_2, 5);
if(_npc)
{
MWR_UpdateStatus(_MWR_STATUS_TALKING, _npc.name);
MWR_TalkToNpc(_npc, true);
}
MWR_UpdateStatus(_MWR_STATUS_MOVING, "Portal");
if(!NTTM_TownMove("portalspot"))
return false;
MWR_UpdateStatus(_MWR_STATUS_WAITING, "TP Tal Rasha's Tomb");
while((_MWR_CorrectTombId == -1 || !MWR_EnterNearbyTP(_MWR_CorrectTombId)) && NTC_InTown())
NTC_Delay(1000);
if(!NTC_FindUnit(NTC_UNIT_OBJECT, 100, 10) && MWR_CarriesItem(_MWR_UNIT_FULLSTAFF_CLASSID) && (!me.GetQuest(10, 12) || !me.GetQuest(10, 0)))
{
MWR_UpdateStatus(_MWR_STATUS_INTERACTING, "Orifice");
for(j = 0; j < 10; j++)
{
_object = NTC_FindUnit(NTC_UNIT_OBJECT, 152, 5);
if(j % 5 == 0)
MWR_ActivateObject(_object);
NTC_Delay(200);
if(GetUIState(0x0E))
break;
}
if(j >= 10)
return false;
MWR_InsertStaff();
}
MWR_UpdateStatus(_MWR_STATUS_MOVING, "Lut Gholein");
if(!MWR_CheckDeath())
{
if(!MWR_EnterNearbyTP(NTC_AREA_ID_ACT_2))
return false;
}
MWR_UpdateStatus(_MWR_STATUS_MOVING, "Portal");
if(!NTTM_TownMove("portalspot"))
return false;
MWR_UpdateStatus(_MWR_STATUS_WAITING, "TP Duriel's Lair");
while(!MWR_EnterNearbyTP(73) && NTC_InTown())
NTC_Delay(1000);
_npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_TYRAEL_ACT_2, 5);
if(_npc)
{
MWR_UpdateStatus(_MWR_STATUS_TALKING, _npc.name);
MWR_TalkToNpc(_npc, true);
_MWR_BossKilledDuriel = true;
Say(".Killed Duriel");
MWR_TalkToNpc(_npc, true);
}
MWR_UpdateStatus(_MWR_STATUS_MOVING, "Lut Gholein");
if(!MWR_CheckDeath())
{
for(i = 0; i < 5; i++)
{
if(MWR_EnterNearbyTP(NTC_AREA_ID_ACT_2) || MWR_EnterNearbyTP(296))
break;
NTC_Delay(2000);
}
if(i >= 5)
return false;
}
}
else
{
if(MWConfig_QuestSchedule.indexOf("A2Q1") > -1)
{
MWR_UpdateStatus(_MWR_STATUS_MOVING, "Portal");
if(!NTTM_TownMove("portalspot"))
return false;
MWR_UpdateStatus(_MWR_STATUS_WAITING, "Portal Clearance");
while(!_MWR_TPSafe)
NTC_Delay(1000);
_MWR_TPSafe = false;
MWR_UpdateStatus(_MWR_STATUS_WAITING, "TP Sewers Level 3");
while(!MWR_EnterNearbyTP(49) && NTC_InTown())
NTC_Delay(1000);
for(i = 0; i < 10; i++)
{
MWR_PickupItem(_MWR_UNIT_BOOK_OF_SKILL);
if(MWR_CarriesItem(_MWR_UNIT_BOOK_OF_SKILL))
break;
NTC_Delay(500);
}
MWR_UpdateStatus(_MWR_STATUS_MOVING, "Lut Gholein");
if(!MWR_CheckDeath())
{
if(!MWR_EnterNearbyTP(NTC_AREA_ID_ACT_2))
return false;
}
if(MWR_UseQuestItem(_MWR_UNIT_BOOK_OF_SKILL))
me.Cancel(1);
}
MWR_UpdateStatus(_MWR_STATUS_MOVING, "Jehryn");
if(!NTTM_TownMove("palacefront"))
return false;
MWR_UpdateStatus(_MWR_STATUS_WAITING, "Quest Completion");
while(!_MWR_BossKilledDuriel)
NTC_Delay(2000);
}
MWR_UpdateStatus(_MWR_STATUS_MOVING, "Jehryn");
if(!NTTM_TownMove("palacefront"))
return false;
for(i = 0; i < 5; i++)
{
_npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_JERHYN, 5);
if(_npc)
{
MWR_UpdateStatus(_MWR_STATUS_TALKING, _npc.name);
if(MWR_TalkToNpc(_npc, true))
break;
}
if(me.GetQuest(14, 4))
break;
}
MWR_UpdateStatus(_MWR_STATUS_MOVING, "Meshif");
if(!NTTM_TownMove("meshif"))
return false;
_npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_MESHIF_ACT_2, 5);
if(_npc)
{
MWR_UpdateStatus(_MWR_STATUS_TALKING, _npc.name);
MWR_TalkToNpc(_npc, true);
if(NTT_DoInteract(_npc))
{
for(i = 0; i < 16; i++)
{
if((i % 4) == 0)
me.SelectNPCMenu(0x0D38);
if(me.areaid != NTC_AREA_ID_ACT_2)
break;
NTC_Delay(500);
}
}
return i < 16;
}
}
else
{
if(!NTTM_CheckAct())
return false;
NTTMGR_TownManager();
// Cube
if(MWConfig_GetHoradricCubesInNorm && me.diff == 0)
{
NTTMGR_TownManager();
if(!NTTM_TownMove("waypoint"))
return false;
if(!NTM_TakeWaypoint(57))
return false;
NTP_DoPrecast(true);
if(NTM_MoveToStair(me.areaid, 60))
{
if(!NTM_TakeStair(60))
return false;
}
else
return false;
if(!NTM_MoveToPresetUnit(me.areaid, NTC_UNIT_OBJECT, 354, -5, -5))
return false;
NTA_ClearPosition(25, true, 2, false, false);
if(NTM_MoveToPresetUnit(me.areaid, NTC_UNIT_OBJECT, 354, -5, -5))
{
for(i = 0; i < 10; i++)
{
_chest = NTC_FindUnit(NTC_UNIT_OBJECT, 354, 5);
if(_chest)
{
if(NTC_OpenChest(_chest))
break;
}
NTC_Delay(200);
}
NTM_MoveToPresetUnit(me.areaid, NTC_UNIT_OBJECT, 354, -5, -5);
if(!NTM_MakeTP())
return false;
else if(_MWR_AnnounceStatus)
Say("TP up @Halls of the Dead.");
_endTicks = GetTickCount() + 20E3; // Wait 20 seconds at most
_preCount = MWR_CountNearbyItems(NTC_UNIT_CUBE);
while(_preCount != 0 && MWR_CountNearbyItems(NTC_UNIT_CUBE) > 0 && _endTicks > GetTickCount())
{
NTA_ClearPosition(20, true, 2, false, false);
NTC_Delay(1000);
}
NTM_MoveToPresetUnit(me.areaid, NTC_UNIT_OBJECT, 354, -5, -5)
if(!MWR_EnterNearbyTP(NTC_AREA_ID_ACT_2))
NTTM_CheckAct();
}
else
return false;
}
// Radament
if(MWConfig_QuestSchedule.indexOf("A2Q1") > -1)
{
NTTMGR_TownManager();
if(!NTTM_TownMove("waypoint"))
return false;
if(!NTM_TakeWaypoint(48))
return false;
NTP_DoPrecast(true);
if(NTM_MoveToStair(me.areaid, 49))
{
if(!NTM_TakeStair(49))
return false;
}
else
return false;
if(!NTM_MoveToPresetUnit(me.areaid, NTC_UNIT_OBJECT, 355, 3, 3))
return false;
_npc = NTC_FindUnit(NTC_UNIT_NPC, 229, 5);
if(!_npc)
return false;
NTM_MoveTo(me.areaid, _npc.x + 5, _npc.y);
if(!NTM_MakeTP())
return false;
else if(_MWR_AnnounceStatus)
Say("TP up @Sewers.");
NTM_MoveTo(me.areaid, _npc.x + 5, _npc.y + 5);
for(i = 0; i < 30; i++)
{
if(MWR_IsQuesterNearby())
break;
NTC_Delay(100);
}
if(NTA_KillMonster(229))
{
Say(".Killed Radament");
NTA_ClearPosition(40, true, 2, false, false);
NTM_MoveTo(me.areaid, _npc.x - 3, _npc.y - 3);
if(!NTM_MakeTP())
return false;
Say(".TPSafe");
NTA_ClearPosition(40, true, 2, false, false);
}
NTC_Delay(2500);
NTM_MoveToPresetUnit(me.areaid, NTC_UNIT_OBJECT, 355, 3, 3);
if(!MWR_EnterNearbyTP(NTC_AREA_ID_ACT_2))
NTTM_CheckAct();
}
// Amulet
NTTMGR_TownManager();
if(!NTTM_TownMove("waypoint"))
return false;
if(!NTM_TakeWaypoint(44))
return false;
NTP_DoPrecast(true);
if(NTM_MoveToStair(45, 58))
{
if(!NTM_TakeStair(58))
return false;
}
else
return false;
NTP_DoPrecast();
if(!NTM_MoveToStair(me.areaid, 61))
return false;
if(!NTM_TakeStair(61))
return false;
if(NTM_MoveToPresetUnit(me.areaid, NTC_UNIT_OBJECT, 149, 2, 2))
{
if(NTA_ClearPosition(30, true, 2, false, false))
{
NTM_MoveToPresetUnit(me.areaid, NTC_UNIT_OBJECT, 149, -1, -6);
if(!NTM_MakeTP())
return false;
else if(_MWR_AnnounceStatus)
Say("TP up @Claw Viper Temple.");
}
while(!MWR_IsQuesterNearby())
{
NTA_ClearPosition(10, true, 2, false, false);
NTC_Delay(500);
}
while(MWR_IsQuesterNearby())
{
NTA_ClearPosition(35, true, 2, false, false);
NTC_Delay(2500);
}
if(_MWR_AnnounceStatus)
Say("Don't forget to talk to drognan. ;)");
NTM_MoveToPresetUnit(me.areaid, NTC_UNIT_OBJECT, 149, -1, -6);
if(!MWR_EnterNearbyTP(NTC_AREA_ID_ACT_2))
NTTM_CheckAct();
}
else
return false;
// Staff
NTTMGR_TownManager();
if(!NTTM_TownMove("waypoint"))
return false;
if(!NTM_TakeWaypoint(43))
return false;
NTP_DoPrecast(true);
for(i = 0; i < 3; i++)
{
if(!NTM_MoveToStair(me.areaid, 62 + i))
return false;
if(!NTM_TakeStair(62 + i))
return false;
}
NTP_DoPrecast();
if(NTM_MoveToPresetUnit(me.areaid, NTC_UNIT_OBJECT, 356, -5, -5))
{
if(NTA_ClearPosition(25, true, 2, false, false))
{
NTM_MoveToPresetUnit(me.areaid, NTC_UNIT_OBJECT, 356, -5, -5);
var _chest;
for(i = 0; i < 10; i++)
{
_chest = NTC_FindUnit(NTC_UNIT_OBJECT, 356, 5);
if(_chest)
{
if(NTC_OpenChest(_chest))
break;
}
NTC_Delay(200);
}
if(!NTM_MakeTP())
return false;
else if(_MWR_AnnounceStatus)
Say("TP up @Maggot's Lair.");
}
_preCount = MWR_CountNearbyItems(_MWR_UNIT_STAFF_CLASSID);
while(_preCount != 0 && _preCount == MWR_CountNearbyItems(_MWR_UNIT_STAFF_CLASSID))
{
NTA_ClearPosition(10, true, 2, false, false);
NTC_Delay(1000);
}
NTM_MoveToPresetUnit(me.areaid, NTC_UNIT_OBJECT, 356, -5, -5, false);
if(!MWR_EnterNearbyTP(NTC_AREA_ID_ACT_2))
NTTM_CheckAct();
}
else
return false;
// Summoner
NTTMGR_TownManager();
if(!NTTM_TownMove("waypoint"))
return false;
if(!NTM_TakeWaypoint(74))
return false;
NTP_DoPrecast(true);
_journal = GetPresetUnits(me.areaid, NTC_UNIT_OBJECT);
for(i = 0; i < _journal.length; i++)
{
if(_journal[i].id == 357)
{
_journalx = _journal[i].roomx * 5 + _journal[i].x;
_journaly = _journal[i].roomy * 5 + _journal[i].y;
break;
}
}
_vec = new vector(_journalx - me.x, _journaly - me.y);
if(Math.abs(_vec.x) > Math.abs(_vec.y))
_vec.y = 0;
else
_vec.x = 0;
_vec.normalize();
if(_vec.x == -1 && _vec.y == 0) // Northwest
_offset = new coord(46, 1);
else if(_vec.x == 0 && _vec.y == -1) // Northeast
_offset = new coord(50, 25);
else if(_vec.x == 0 && _vec.y == 1) // Southwest
_offset = new coord(41, 6);
else // Souheast
_offset = new coord(-15, 36);
NTM_MoveToPresetUnit(me.areaid, NTC_UNIT_OBJECT, 357, _offset.x, _offset.y);
if(!NTM_MakeTP())
return false;
else if(_MWR_AnnounceStatus)
Say("TP up @Arcane Sanctuary.");
while(!MWR_IsQuesterNearby())
{
NTM_MoveToPresetUnit(me.areaid, NTC_UNIT_OBJECT, 357, _offset.x + 1, _offset.y + 1);
NTA_ClearPosition(5, true, 2, false, false);
NTC_Delay(1000);
}
if(NTA_KillMonster(250))
{
NTA_ClearPosition(20, true, 2, false, false);
_journal = NTC_FindUnit(NTC_UNIT_OBJECT, 357, 5);
if(_journal)
{
for(i = 0; i < 40; i++)
{
MWR_ActivateObject(_journal);
NTC_Delay(500);
me.Cancel(0);
me.Cancel(1);
_portal = NTM_FindPortalAreaInt(46);
NTC_Delay(250);
NTA_ClearPosition(15, true, 2, false, false);
if(_portal != -1)
break;
}
if(i >= 40)
return false;
}
NTM_UsePortal("Portal", 46);
Say(".Killed Summoner");
}
// Duriel
if(me.areaid != 46)
{
NTTM_CheckAct();
NTTMGR_TownManager();
if(!NTTM_TownMove("waypoint"))
return false;
if(!NTM_TakeWaypoint(46))
return false;
}
NTP_DoPrecast(true);
_tombs = GetRoom();
if(!_tombs)
return false;
if(!NTM_MoveToPresetUnit(me.areaid, NTC_UNIT_TILE, _tombs.correcttomb - 28, 0, 0))
return false;
_unit = NTC_FindUnit(NTC_UNIT_TILE, _tombs.correcttomb - 28, 5);
if(!_unit)
return false;
Say(".TombID " + _unit.subareaid);
if(!NTM_TakeStair(_unit.subareaid))
return false;
if(!NTM_MoveToPresetUnit(me.areaid, NTC_UNIT_OBJECT, 152, -2, 2))
return false;
NTA_ClearPosition(35, true, 2, false, false);
NTM_MoveToPresetUnit(me.areaid, NTC_UNIT_OBJECT, 152, -2, 2);
if(!NTM_MakeTP())
return false;
else if(_MWR_AnnounceStatus)
Say("TP up @Tal Rasha's Tomb.");
while(!MWR_IsQuesterNearby())
{
NTM_MoveToPresetUnit(me.areaid, NTC_UNIT_OBJECT, 152, -5, 0);
NTA_ClearPosition(30, true, 2, false, false);
NTC_Delay(500);
}
while(!NTC_FindUnit(NTC_UNIT_OBJECT, 100, 5))
{
NTM_MoveToPresetUnit(me.areaid, NTC_UNIT_OBJECT, 152, -5, 0);
NTA_ClearPosition(30, true, 2, false, false);
NTC_Delay(1000);
}
if(!NTM_TakeUnit(NTC_UNIT_OBJECT, 100))
return false;
if(!NTA_KillMonster(211))
return false;
NTSI_PickItems();
NTC_Delay(2500);
if(me.classid == NTC_CHAR_CLASS_PALADIN)
NTC_PutSkill(MWS_VIGOR, NTC_HAND_RIGHT);
else if(me.classid == NTC_CHAR_CLASS_ASSASSIN && !me.GetState(157))
NTC_CastSkill(MWS_BURST_OF_SPEED, NTC_HAND_RIGHT);
// Walk to Tyrael as path calculation and teleport do not really work in Duriels Lair
_path = new Array();
_path.push(new coord(22628, 15712));
_path.push(new coord(22615, 15707));
_path.push(new coord(22596, 15707));
_path.push(new coord(22579, 15707));
_path.push(new coord(22579, 15688));
_path.push(new coord(22579, 15670));
_path.push(new coord(22582, 15654));
_path.push(new coord(22580, 15637));
_path.push(new coord(22577, 15620));
_path.push(new coord(22577, 15603));
_path.push(new coord(22576, 15600));
for(var i = 0; i < _path.length; i++)
{
NTM_WalkTo(_path[i].x, _path[i].y);
if(GetDistance(me.x, me.y, _path[i].x, _path[i].y) > 3)
i--;
}
if(!NTM_MakeTP())
return false;
else if(_MWR_AnnounceStatus)
Say("TP up @Duriel's Lair.");
if(!MWR_EnterNearbyTP(NTC_AREA_ID_ACT_2))
NTTM_CheckAct();
NTC_Delay(10000);
return true;
}
return false;
}
function MWR_DoActI()
{
var i;
var _npc;
if(!MWConfig_IsRusher)
{
NTTM_CheckAct(1);
if(_MWR_IsActiveQuester)
{
// Enter a tp to catacombs level 4 if available
MWR_UpdateStatus(_MWR_STATUS_MOVING, "Portal");
if(!NTTM_TownMove("portalspot"))
return false;
MWR_UpdateStatus(_MWR_STATUS_WAITING, "TP Catacombs");
while(!MWR_EnterNearbyTP(37) && NTC_InTown())
NTC_Delay(1000);
// Wait for quest completion
MWR_UpdateStatus(_MWR_STATUS_WAITING, "Quest Completion");
while(!_MWR_BossKilledAndariel)
NTC_Delay(500);
MWR_UpdateStatus(_MWR_STATUS_MOVING, "Rogue Encampment");
for(var i = 0; i < 5; i++)
{
if(!MWR_CheckDeath())
{
if(!MWR_EnterNearbyTP(NTC_AREA_ID_ACT_1))
continue;
}
if(NTC_InTown())
break;
}
}
else
{
MWR_UpdateStatus(_MWR_STATUS_WAITING, "Quest Completion");
while(!_MWR_BossKilledAndariel)
NTC_Delay(2000);
}
// Talk to Warriv and go east
MWR_UpdateStatus(_MWR_STATUS_MOVING, "Warriv");
if(!NTTM_TownMove("warriv"))
return false;
_npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_WARRIV_ACT_1, 5);
if(_npc)
{
MWR_UpdateStatus(_MWR_STATUS_TALKING, _npc.name);
MWR_TalkToNpc(_npc, true);
if(NTT_DoInteract(_npc))
{
for(i = 0; i < 16; i++)
{
if((i % 4) == 0)
me.SelectNPCMenu(0x0D36);
if(me.areaid != NTC_AREA_ID_ACT_1)
break;
NTC_Delay(500);
}
}
return i < 16;
}
}
else
{
if(!NTTM_CheckAct())
return false;
NTTMGR_TownManager();
if(!NTTM_TownMove("waypoint"))
return false;
if(!NTM_TakeWaypoint(35))
return false;
NTP_DoPrecast(true);
for(i = 0; i < 2; i++)
{
if(!NTM_MoveToStair(me.areaid, 36 + i))
return false;
if(!NTM_TakeStair(36 + i))
return false;
}
if(!NTM_MoveTo(me.areaid, 22595, 9615))
return false;
NTA_ClearPosition(20, true, 2, false, false);
if(!NTM_MoveTo(me.areaid, 22584, 9613))
return false;
if(!NTM_MakeTP())
return false;
else if(_MWR_AnnounceStatus)
Say("TP up @Catacombs.");
do
{
NTM_MoveTo(me.areaid, 22595, 9615);
NTA_ClearPosition(15, true, 2, false, false);
NTC_Delay(1000);
} while(!MWR_IsQuesterNearby());
if(!NTM_MoveTo(me.areaid, 22532, 9553))
return false;
if(!NTA_KillMonster(156))
return false;
else
Say(".Killed Andariel");
NTC_PingDelay(2000);
NTSI_PickItems();
if(!NTM_MoveTo(me.areaid, 22584, 9613) || !MWR_EnterNearbyTP(NTC_AREA_ID_ACT_1))
NTTM_CheckAct();
return true;
}
}
function MWR_IsQuesterNearby()
{
var _npc;
NTC_PutSkill(109, NTC_HAND_RIGHT);
for(var i = 0; i < 5; i++)
{
_npc = NTC_FindUnit(NTC_UNIT_PLAYER);
if(_npc)
{
while(_npc.GetNext())
{
if(MWConfig_ActiveQuestersName.toLowerCase() == _npc.name.toLowerCase() || _MWR_ActiveQuesterName == "" || _MWR_ActiveQuesterName.toLowerCase() == _npc.name.toLowerCase())
{
if(NTC_InMyParty(_npc.name))
return true;
}
}
}
NTC_Delay(250);
}
return false;
}
function MWR_EnterNearbyTP(dest)
{
var _portal;
if(me.areaid == dest)
return true;
for(var i = 0; i < 5; i++)
{
_portal = NTM_FindPortalAreaInt(dest);
if(_portal != -1)
break;
NTC_Delay(400);
}
if(_portal != -1)
{
for(var i = 0; i < 30; i++)
{
if(me.areaid == dest)
{
NTC_PingDelay(500);
if(MWConfig_IsRusher && NTC_InTown())
NTC_PutSkill(115, NTC_HAND_RIGHT);
return true;
}
if(i % 5 == 0)
NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _portal);
if(i % 10 == 5)
NTM_GetCloserInt(_portal);
NTC_Delay(200);
}
}
return false;
}
function MWR_CheckDeath()
{
if(me.hp <= 0 || me.mode == 17)
{
Print("˙c1Oh noes, I died! :'(");
for(var i = 0; i < 8; i++)
{
if(i % 4 == 0)
me.Cancel(0);
if(me.hp > 0 || NTC_InTown())
return true;
NTC_Delay(250);
}
}
return false;
}
function MWR_CarriesItem(classid)
{
var _items;
_items = me.GetItems(classid);
if(_items)
{
for(var i = 0; i < _items.length; i++)
{
if(_items[i].classid == classid)
return true;
}
}
return false;
}
function MWR_PickupItem(classid)
{
var _item;
_item = NTC_FindUnit(NTC_UNIT_ITEM, classid, 2);
if(_item)
{
do
{
if(_item.classid == classid)
{
if(NTSI_PickUpItemInt(_item))
{
Print("Picked up " + NTC_ItemQualityToD2Color[MWC_GetItemColorInt(_item)] + _item.name.split("\n")[0]);
return true;
}
}
}while(_item.GetNext());
}
return false;
}
function MWR_CountNearbyItems(classid)
{
var _item, _count;
_item = NTC_FindUnit(NTC_UNIT_ITEM, classid, 5);
_count = 0;
if(_item)
{
do
{
if(_item.classid == classid)
_count++;
}while(_item.GetNext());
}
return _count;
}
function MWR_MoveQuestItemToCube(classid)
{
var n;
var _items, _cube;
_items = me.GetItems();
_cube = me.GetItems(NTC_UNIT_CUBE);
if(!_items || !_cube || _cube.length < 1)
return false;
for(var i = 0 ; i < _items.length ; i++)
{
if(_items[i].classid == classid)
{
SetUIState(0x1, true);
if(_items[i].mode == 1)
{
SetUIState(0x1, true);
for(n = 0; n < 80; n++)
{
if((n % 40) == 0)
me.ClickItem(_items[i].itemloc);
NTC_Delay(100);
if(me.itemoncursor)
{
NTC_PingDelay(200);
break;
}
}
if(n >= 80)
{
me.Cancel(1);
break;
}
}
if(NTCU_MoveItemToCubeInt(_cube[0], _items[i]))
me.Cancel(1);
return true;
}
}
}
function MWR_ActivateObject(unit)
{
if(!unit)
return false;
for(var i = 0 ; i < 10 ; i++)
{
if((i % 5) == 0)
{
if(GetDistance(me, unit) > 2)
NTM_MoveTo(unit.areaid, unit.x + 2, unit.y + 2);
NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, unit);
}
NTC_Delay(200);
if(unit.mode > 0)
return true;
}
return false;
}
function MWR_InsertStaff()
{
var _items;
_items = me.GetItems(_MWR_UNIT_FULLSTAFF_CLASSID);
if(_items)
{
for(var i = 0; i < _items.length; i++)
{
if(_items[i].classid == _MWR_UNIT_FULLSTAFF_CLASSID)
{
if(_items[i].itemloc == 0)
{
if(NTC_ItemToCursor(_items[i]))
{
NTC_Delay(250);
SubmitItem();
NTC_Delay(250);
}
me.Cancel(1);
return true;
}
break;
}
}
}
return false;
}
function MWR_UpdateStatus(status, desc)
{
var _enableConfirmation = false;
switch(status)
{
case _MWR_STATUS_WAITING:
MWC_SetStatusText("˙c2(Waiting) " + desc);
break;
case _MWR_STATUS_INTERACTING:
MWC_SetStatusText("˙c;(Interacting) " + desc);
break;
case _MWR_STATUS_MOVING:
_enableConfirmation = true;
MWC_SetStatusText("˙c8(Moving) " + desc);
break;
case _MWR_STATUS_TALKING:
_enableConfirmation = true;
MWC_SetStatusText("˙c3(Talking) " + desc);
break;
case _MWR_STATUS_PICKUP:
_enableConfirmation = true;
MWC_SetStatusText("˙c<(Picking) " + desc);
break;
default:
MWC_SetStatusText("˙c0(Misc) " + desc);
break;
}
if(_enableConfirmation && !_MWR_ActiveQuesterConfirmed && _MWR_IsActiveQuester && (GetTickCount() - _MWR_ConfirmationRequestTicks) > 30E3)
{
_MWR_ConfirmationRequestTicks = GetTickCount();
Say(".SetQuester " + me.charname);
}
}
function MWR_ScriptMsgEvents(msg)
{
var _messenger;
if(!msg)
return;
_messenger = msg.split(" ")[0];
switch(msg.split(" ")[1])
{
case "KILLED":
if(_messenger == me.charname)
break;
Print("˙c8Boss Kill: ˙c2Confirmed");
switch(msg.split(" ")[2])
{
case "ANDARIEL":
_MWR_BossKilledAndariel = true;
break;
case "SUMMONER":
_MWR_BossKilledSummoner = true;
break;
case "DURIEL":
_MWR_BossKilledDuriel = true;
break;
case "COUNCIL":
_MWR_BossKilledCouncil = true;
break;
case "MEPHISTO":
_MWR_BossKilledMephisto = true;
break;
case "DIABLO":
_MWR_BossKilledDiablo = true;
break;
case "SCHENK":
_MWR_BossKilledSchenk = true;
break;
case "IZUAL":
_MWR_BossKilledIzual = true;
break;
case "RADAMENT":
_MWR_BossKilledRadament = true;
break;
}
break;
case "TPSAFE":
if(_messenger == me.charname)
break;
_MWR_TPSafe = true;
Print("˙c2Clearance Acquired");
break;
case "TOMBID":
if(_messenger == me.charname)
break;
_MWR_CorrectTombId = parseInt(msg.split(" ")[2])
Print("˙c2ID Confirmed");
break;
case "SETQUESTER":
if(MWConfig_IsRusher && _MWR_ActiveQuesterName == "")
{
_MWR_ActiveQuesterName = msg.split(" ")[2];
_MWR_AnnounceStatus = false;
Say(".Confirmed");
if(_MWR_ActiveQuesterName == me.charname)
_MWR_IsActiveQuester = true;
}
case "CONFIRMED":
if(_messenger == me.charname)
break;
if(_MWR_IsActiveQuester)
{
_MWR_AnnounceStatus = false;
_MWR_ActiveQuesterConfirmed = true;
_MWR_ActiveQuesterName = me.charname;
}
Print("˙c8Quester Status: ˙c2Confirmed");
break;
case "INVALIDATEQUESTER":
Print("˙c8Quester Status: ˙c1Invalidated");
_MWR_ConfirmationRequestTicks = GetTickCount() + 10E3;
_MWR_ActiveQuesterConfirmed = false;
_MWR_ActiveQuesterName = "";
_MWR_AnnounceStatus = true;
break;
case "START":
_MWR_CommenceRush = true;
break;
case "RESCUED":
_MWR_RescuedAnya = true;
break;
}
return;
}
function MWR_AllPlayersPresent()
{
var _players, _count;
if(!MWConfig_NumberOfCharsToRush)
return true;
_count = 0;
_players = GetPlayerUnit();
if(_players)
{
while(_players.GetNext())
{
if(NTC_InMyParty(_players.name))
_count++;
}
}
return _count >= MWConfig_NumberOfCharsToRush;
}
function MWR_CheckQuesterAct()
{
var _players;
_players = GetPlayerUnit();
if(_players)
{
while(_players.GetNext())
{
if(_players.level < 70 && MWR_CheckAct(_players.areaid) != me.act)
return false;
}
}
return true;
}
function MWR_CheckAct(areaid)
{
if(areaid < 1 || areaid > 132)
return -1;
else if(areaid < 40)
return 1;
else if(areaid < 75)
return 2;
else if(areaid < 103)
return 3;
else if(areaid < 109)
return 4;
else
return 5;
}
function MWR_SetQuesterStatus()
{
var _players;
if(MWConfig_ActiveQuestersName)
{
if(MWConfig_ActiveQuestersName.toLowerCase() == me.charname.toLowerCase())
return true;
else
return false;
}
_players = GetPlayerUnit();
if(_players)
{
while(_players.GetNext())
{
if(_players.level <= 70)
return false;
}
}
return true;
}
function MWR_UseRedPortal(classid, dest)
{
var _portal;
_portal = NTC_FindUnit(NTC_UNIT_OBJECT);
if(_portal)
{
do
{
if(_portal.classid == classid)
{
for(var i = 0; i < 20; i++)
{
if(me.areaid == dest)
{
NTC_PingDelay(500);
return true;
}
if(i % 5 == 0)
NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _portal);
if(i % 10 == 5)
NTM_GetCloserInt(_portal);
NTC_Delay(200);
}
}
} while(_portal.GetNext());
}
return false;
}
function MWR_ClearCS()
{
var _monster;
var i;
// Grand Vizier of Chaos
for(i = 0; i < 5; i++)
{
if(MWR_OpenSeal(395) && MWR_OpenSeal(396))
break;
NTC_Delay(1000);
}
if(i >= 5)
return false;
NTC_FindUnit(NTC_UNIT_MONSTER, GetLocaleString(2851), 10);
for(i = 0; i < 10; i++)
{
if(NTA_KillMonster(GetLocaleString(2851)))
{
NTA_ClearPosition(5, true, 2, false, false);
NTSI_PickItems();
break;
}
NTC_Delay(250);
}
if(i >= 10)
return false;
// Lord De Seis
for(i = 0; i < 5; i++)
{
if(MWR_OpenSeal(394))
break;
NTC_Delay(1000);
}
if(i >= 5)
return false;
NTC_FindUnit(NTC_UNIT_MONSTER, GetLocaleString(2852), 10);
for(i = 0; i < 10; i++)
{
NTM_MoveTo(me.areaid, 7791, 5226);
NTC_Delay(250);
_monster = NTC_FindUnit(NTC_UNIT_MONSTER, GetLocaleString(2852), 10);
if(_monster)
{
NTM_MoveTo(me.areaid, 7776, _monster.y + 10);
if(NTA_KillMonster(GetLocaleString(2852)))
{
NTA_ClearPosition(10, true, 2, false, false);
NTSI_PickItems();
break;
}
}
}
if(i >= 10)
return false;
// Infector Of Souls
for(i = 0; i < 5; i++)
{
if(MWR_OpenSeal(393) && MWR_OpenSeal(392))
break;
NTC_Delay(1000);
}
if(i >= 5)
return false;
NTC_FindUnit(NTC_UNIT_MONSTER, GetLocaleString(2853), 10);
for(i = 0; i < 10; i++)
{
if(NTA_KillMonster(GetLocaleString(2853)))
{
NTA_ClearPosition(10, true, 2, false, false);
NTSI_PickItems();
break;
}
NTC_Delay(250);
}
return true;
}
function MWR_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);
_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;
NTA_ClearPosition(5, true, 2, false, false);
}
return false;
}
function MWR_TalkToNpc(npc, cancelAll)
{
var _menuLoops;
_menuLoops = 0;
for(var i = 0; i < 40; i++)
{
if(!GetUIState(0x08) && i % 10 == 0)
{
NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, npc);
NTC_PingDelay(250);
}
if(i % 5 == 0)
{
me.Cancel(0);
NTC_Delay(250);
}
if(GetUIState(0x08) || GetUIState(0x09))
{
if(_menuLoops < 5)
_menuLoops++;
else
{
if(cancelAll || GetUIState(0x09))
{
me.Cancel(1);
return !GetUIState(0x08);
}
return true;
}
}
NTC_Delay(100);
}
return false;
}
function MWR_UseQuestItem(classid)
{
var _item;
_item = me.GetItems(classid);
if(_item && _item.length > 0)
{
SetUIState(0x1, true);
for(var i = 0; i < 40; i++)
{
if(i % 10 == 0)
me.ClickItem(1, _item[0]);
_item = me.GetItems(classid);
if(!_item || _item.length == 0)
{
me.Cancel(1);
return true;
}
NTC_Delay(NTC_DELAY_FRAME);
}
}
return false;
}
Quote:
Originally Posted by Seits
Moin, könnt ihr mir sagen wo ich mit einer Orb Sorc gut farmen kann, habe zurzeit
Trist wegen Rejuvs drin
And
Meph
Duriel
aber irgendwie ist meine Ausbeute nicht so gut. Habe das Tal set voll + lidless
kennt wer noch paar gute spots?
|
Pit? Mausoleum? Ancient Tunnels?
Die würden mir spontan einfallen.
LG
Muddy
|
|
|
07/08/2011, 19:58
|
#2450
|
elite*gold: 0
Join Date: Jul 2011
Posts: 5
Received Thanks: 0
|
what of this to to change?
NTM_MoveTo(me.areaid, 7791, 5192);
else
NTM_MoveTo(me.areaid, 7937, 5305);
|
|
|
07/08/2011, 21:55
|
#2451
|
elite*gold: 0
Join Date: Jul 2011
Posts: 4
Received Thanks: 0
|
Hey Muddy,
First off thanks for the great work on this, I was up and running in no time. Your files are really well commented and the var names are almost always self-explanatory
The only issue I'm having is that the bot occasionally gets nttm_townmove("waypoint") errors. Obviously some errors are expected, but when the bot tries to exit the game upon hitting "MWConfig_GameErrorLimit", the game freezes.
The text at the top of the window says "Exiting game..." but never actually exits. The manager's "In-game" counter also infinitely counts upwards, well beyond the "me.maxgametime" setting.
I've woken up the past 2 mornings to this, where it's frozen after 10-15 games, and just sat there in the last game until I wake up and manually force the game closed.
I've tried looking for any relevant logs, but I think they've since been overwritten. I can see the error was "nttm_townmove("waypoint")" from the managers common log. It gave that same error for each of the remaining scripts that my bot had yet to complete in the game.
EDIT: Just got another error now. Not listed in the common log so I don't think it's a bot-specific error. This time, after the game was finished, it froze again on "Exiting game" , I heard an error sound, but no message was displayed. Luckily this time the manager was able to recover from the freeze and restart the game.
EDIT 2: Removed, I should read better  The above issues still stand though.
|
|
|
07/09/2011, 03:17
|
#2452
|
elite*gold: 0
Join Date: Jul 2011
Posts: 5
Received Thanks: 0
|
is it possible to have it run auradin? never tried it with auradin no bot so got to ask to see to maybe make them
|
|
|
07/09/2011, 07:32
|
#2453
|
elite*gold: 0
Join Date: May 2011
Posts: 15
Received Thanks: 1
|
Frage wie füge ich in der Pick it hinzu das er die 7 mf scs nicht mehr verkauft ?
mfg
|
|
|
07/09/2011, 07:56
|
#2454
|
elite*gold: 0
Join Date: Jan 2009
Posts: 3,170
Received Thanks: 1,191
|
entferne die // beim entsprechenden Eintrag
|
|
|
07/09/2011, 08:10
|
#2455
|
elite*gold: 0
Join Date: May 2011
Posts: 15
Received Thanks: 1
|
Es sind alle entfernt mir scheint erher das die 7er mf scs nicht in der liste sind
|
|
|
07/09/2011, 12:33
|
#2456
|
Administrator
elite*gold: 41364
Join Date: Jan 2010
Posts: 22,727
Received Thanks: 12,652
|
Quote:
Originally Posted by Anokic
what of this to to change?
NTM_MoveTo(me.areaid, 7791, 5192);
else
NTM_MoveTo(me.areaid, 7937, 5305);
|
As your question lacks context that would be required in order to give a proper reply, I'm just gonna post my current version so you can replace yours:
Code:
/**
* This file was modified by
* Check the programming section for updates and further scripts
* Last Update: 17:21 06.04.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, 7793, 5560))
{
NTC_SendMsgToScript("MWBotGame.ntj", NTM_MoveTo, 42, 108, 7797, 5560);
return;
}
if(!MWConfig_StartAtStar)
{
_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 should be safe now!");
else
Say("TP still might be warm!");
}
for(var i = 0; i < _attackpos.length; i += 2)
{
NTM_MoveTo(108, _attackpos[i], _attackpos[i + 1], 3, true);
NTA_ClearPosition(50, true, 2);
}
}
NTM_MoveTo(108, 7792, 5292);
if(NTConfig_PublicMode)
{
if(MWConfig_StartAtStar)
{
_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;
}
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)
{
Print("˙c8DEBUG::˙c1 Return: " + _unit + "(A)");
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)
{
Print("˙c8DEBUG::˙c1 Return: " + _result + "(B)");
return false;
}
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)
{
Print("˙c8DEBUG::˙c1 Return: " + _result + "(C)");
return false;
}
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;
}
}
Print("˙c8DEBUG::˙c1 Return: " + _result + "(D)");
return _result;
}
function NT_OpenVizierSealInt(type)
{
var i, n;
var _attackpos = [7740, 5300, 7740, 5280, 7720, 5280, 7720, 5300];
var _monstername = GetLocaleString(2851);
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))
{
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(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
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, 7791, 5192);
}
for(n = 0; n < 10; n++)
{
NTC_Delay(200);
if(NTA_KillMonster(_monstername))
{
NTA_ClearPosition(30);
NTSI_PickItems();
return NTM_MoveTo(me.areaid, 7800, 5255, 3, true);
}
}
}
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];
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();
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);
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;
NTA_ClearPosition(20, true, 2, false, false);
}
return false;
}
Quote:
Originally Posted by rabhw
Hey Muddy,
First off thanks for the great work on this, I was up and running in no time. Your files are really well commented and the var names are almost always self-explanatory
The only issue I'm having is that the bot occasionally gets nttm_townmove("waypoint") errors. Obviously some errors are expected, but when the bot tries to exit the game upon hitting "MWConfig_GameErrorLimit", the game freezes.
The text at the top of the window says "Exiting game..." but never actually exits. The manager's "In-game" counter also infinitely counts upwards, well beyond the "me.maxgametime" setting.
I've woken up the past 2 mornings to this, where it's frozen after 10-15 games, and just sat there in the last game until I wake up and manually force the game closed.
I've tried looking for any relevant logs, but I think they've since been overwritten. I can see the error was "nttm_townmove("waypoint")" from the managers common log. It gave that same error for each of the remaining scripts that my bot had yet to complete in the game.
EDIT: Just got another error now. Not listed in the common log so I don't think it's a bot-specific error. This time, after the game was finished, it froze again on "Exiting game" , I heard an error sound, but no message was displayed. Luckily this time the manager was able to recover from the freeze and restart the game.
EDIT 2: Removed, I should read better  The above issues still stand though.
|
I'll check this and see if I am able to reproduce your error. These freezes are likely to occur whenever the game is not left properly. However, reaching the error limit should actually result in the game being left properly, that's why this is a bit odd.
Quote:
Originally Posted by Anokic
is it possible to have it run auradin? never tried it with auradin no bot so got to ask to see to maybe make them
|
As long as you got an Eni, I don't really see any problems in using an auradin.
Aura stacking using dreams could also be achieved, though the script that is to take care of the stacking procedure is not yet included in the current version. Also note, when using stacking, there is always a chance of loosing one of your Dream helms, so you might not want to give this a try, if you're not willing to take that risk.
Quote:
Originally Posted by Bashtour
Es sind alle entfernt mir scheint erher das die 7er mf scs nicht in der liste sind
|
Dann füg es doch einfach hinzu, wo ist das Problem:
Code:
[Name] == SmallCharm && [Quality] == magic # [ItemMagicBonus] >= 7
Kannst dich ja bei Zeiten mal in  informieren.
Kind Regards
Muddy
|
|
|
07/09/2011, 12:38
|
#2457
|
elite*gold: 0
Join Date: Jun 2011
Posts: 16
Received Thanks: 0
|
OK so I got my soso to be the active quester and my pala to relax and let her do the work, but all my soso dose is walk to the bottom of the rogue encampment and do nothing, while my pala's screen says waiting for quest to be completed. Dose the rush only do three quests as it says there are only three stable enough to play ?
|
|
|
07/09/2011, 14:37
|
#2458
|
elite*gold: 0
Join Date: May 2010
Posts: 212
Received Thanks: 40
|
WW follow Barb
Mal eine Frage zum WW Barbaren (follower).
Er macht als follower, Cs in Classic. Folgendes Problem.
Er sieht den Mob, macht seinen "Ruf" und hinein mit Ww.
Trifft er nun gleich auf einen Manaburner, verschlechtern
sich seine Karten wesentlich.
Frage.
Ist es möglich, oder sinnvoll, ihm gleich nach seinem Call,
also vor der Ww Attacke, Mana zu geben? Oder wird das
gleich während der Trinkphase mit verbrannt, bzw. wirk nicht,
weil die mananzeige ja voll ist?
Oder kann man den Manaburner bis zum Schluss vielleicht
auslassen, im Cs ja unwesentlich nach Bosskill?
Danke fürs Interesse und
lG
Fred
|
|
|
07/09/2011, 15:46
|
#2459
|
elite*gold: 0
Join Date: Aug 2010
Posts: 260
Received Thanks: 12
|
Quote:
Originally Posted by Noreia
Wie bekomm ich meine Sorc dazu energieschild zu casten precast. Weil ich bild mir ein sie nutzt immer nur FA oder tut sie das auch nicht wenn ich das nicht reinschreib?
|
Code:
// Your precast skills can be defined in the array below. NOTE: Battle Command, Battle Orders and Shout will be cast automatically. Constants for all skill ids can be found in "scripts\libs\common\MWSkills.ntl".
MWConfig_PrecastSkills = [MWS_FROZEN_ARMOR, MWS_ENERGY_SHIELD, MWS_THUNDER_STORM];
such die zeite und ändere sie so, dann castet er auch den energy shield wenn es dort nicht steht, precastet er es auch nicht ...
|
|
|
07/09/2011, 16:50
|
#2460
|
Administrator
elite*gold: 41364
Join Date: Jan 2010
Posts: 22,727
Received Thanks: 12,652
|
Quote:
Originally Posted by wolfman95
OK so I got my soso to be the active quester and my pala to relax and let her do the work, but all my soso dose is walk to the bottom of the rogue encampment and do nothing, while my pala's screen says waiting for quest to be completed.
|
Please reread my post then. 
Only questers (both active and passive) use MWRushEntry.ntj for entry point. The rusher should be using NTBot.ntj and execute the rush script just like any other bot script.
Quote:
Originally Posted by fred9x9
Mal eine Frage zum WW Barbaren (follower).
Er macht als follower, Cs in Classic. Folgendes Problem.
Er sieht den Mob, macht seinen "Ruf" und hinein mit Ww.
Trifft er nun gleich auf einen Manaburner, verschlechtern
sich seine Karten wesentlich.
Frage.
Ist es möglich, oder sinnvoll, ihm gleich nach seinem Call,
also vor der Ww Attacke, Mana zu geben? Oder wird das
gleich während der Trinkphase mit verbrannt, bzw. wirk nicht,
weil die mananzeige ja voll ist?
Oder kann man den Manaburner bis zum Schluss vielleicht
auslassen, im Cs ja unwesentlich nach Bosskill?
Danke fürs Interesse und
lG
Fred
|
Ich würde mutmaßen, dass nur das verbrannt wird, was auch da ist, aber sicher bin ich mir da nicht. Das müsste man allerdings genau wissen, um eine klare Aussage über die Sinnhaftigkeit zu machen.
Das mit dem Auslassen halte ich für schwierig, denn der würde dich ja vermutlich verfolgen. Abgesehen davon hast du keine Möglichkeit auszulesen, ob es sich bei einem Gegner um einen Manaburner handelt.
Quote:
Originally Posted by RobHalford
Code:
// Your precast skills can be defined in the array below. NOTE: Battle Command, Battle Orders and Shout will be cast automatically. Constants for all skill ids can be found in "scripts\libs\common\MWSkills.ntl".
MWConfig_PrecastSkills = [MWS_FROZEN_ARMOR, MWS_ENERGY_SHIELD, MWS_THUNDER_STORM];
such die zeite und ändere sie so, dann castet er auch den energy shield wenn es dort nicht steht, precastet er es auch nicht ...
|
Eigentlich hatte ich das ja schon beantwortet...
LG
Muddy
|
|
|
 |
|
Similar Threads
|
[Release] D2NT 3.1 1.13c
07/17/2016 - Diablo 2 - 91 Replies
hi,
hab eben den d2nt3.1 gefunden. ein neues baba script is dabei.
release thread eon
D2NT3.1
|
[Realease] Muddy's Waypoint Catcher
08/21/2013 - Diablo 2 Programming - 46 Replies
Moin zusammen,
hier mal die erste Release Version eines kleinen Scripts genannt Waypoint Catcher. Das ganze ist jetzt nichtmal 24h alt, dementsprechend sind vermutlich noch einige Bugs vorhanden. Hinweise dazu nehme ich gerne entgegen. ;)
Features:
- Suchen sämtlicher Wegpunkte mit Ausnahme, wobei in Akt ein durch Probleme im Jail Bereich nach dem Wegpunkt Outer Cloister abgebrochen wird
- Wahlweise auch mit TP an jedem gefundenen Wp, sodass man damit auch anderen (nicht-Bots) die...
|
[D2NT] Long Dia Release
05/10/2011 - Diablo 2 Programming - 28 Replies
Ein kleines Script für diablo, es startet beim eingang macht ein tp cleart den weg zum star macht am star noch ein tp dann läufts wie das normale nur cleart es schöner :)
hoffe euch gefällts ich habs noch nicht wirklich getestet (2-3 runs) bugs können gerne hier gepostet werden verbesserungs vorschläge auch :D
installation:
1.)Script in den Bot ordner kopieren
2.)Script im editor oder vergleichbaren öffnen
3.) Msg´s anpassen (ist nicht schwer)
4.) in der char config die zeile...
|
D2NT 3.0 Pickit release
10/22/2010 - Diablo 2 - 77 Replies
edit
|
Muddy's D2NT Help
07/29/2010 - Diablo 2 - 3 Replies
hi i just started to use the bot it work's great.
how do i set up the skill's i use on my Sorc and pick up itme's?
.....
if you reply to this post please use english
|
All times are GMT +1. The time now is 16:44.
|
|