|
You last visited: Today at 18:02
Advertisement
new idea on item find barb script
Discussion on new idea on item find barb script within the Diablo 2 Programming forum part of the Diablo 2 category.
01/04/2014, 23:26
|
#1
|
elite*gold: 0
Join Date: Dec 2013
Posts: 39
Received Thanks: 0
|
new idea on item find barb script
heres the link to the thread I found regarding item finder script
im wondering whats the chance of turning it into a potion finder
a lil change of the attack code ? and the case # for a cow/bovine
since I play classic only I potion find NM cows for full rejuvs
|
|
|
01/07/2014, 12:31
|
#2
|
elite*gold: 0
Join Date: Dec 2013
Posts: 39
Received Thanks: 0
|
bmp
|
|
|
01/09/2014, 01:53
|
#3
|
elite*gold: 0
Join Date: Dec 2013
Posts: 39
Received Thanks: 0
|
@muddy
cow id is like 179 , what else you think I have to change to get it to potion VS item find
just the attack code ?
|
|
|
01/16/2014, 02:27
|
#4
|
elite*gold: 0
Join Date: Dec 2013
Posts: 39
Received Thanks: 0
|
any person that has any ideas , I would appreciate it
|
|
|
01/23/2014, 09:56
|
#5
|
elite*gold: 0
Join Date: Dec 2013
Posts: 39
Received Thanks: 0
|
what do I need to modify so the barb will loot corpse in this script?
Code:
/*///////////////////////////////////////////////////////////////
Author: DysfunctionaI @ BlizzHackers, DysfunctionaI @ D2JSP
/////////////////////////////////////////////////////////////////
This file MUST be named NTHelperBotv2.ntj
If you're having a problem, then read the release thread first,
to see if your problem has already been discussed. If it hasn't,
then post your problem there; don't PM me. All command edits go
in NTHCommands.ntj
//////////////////////////////////////////////////////////////////
DON'T EDIT THIS FILE UNLESS YOU KNOW WHAT YOU'RE DOING!
////////////////////////////////////////////////////////////////*/
//Variable Declaration
Include("libs/common/NTCommon.ntl");
NTC_IncludeConfig("NTBot/char_configs");
var _leader = null;
var _leaderhandle = null;
var _leadername = NTH_Leader;
var _verbal = NTH_Verbal;
var _attack = NTH_Attack;
var _trigger = NTH_Trigger;
var _autoskill = NTH_AutoSkill;
var _useteleport = NTH_Teleport;
var _updatedleader = null;
var _target;
var _wp;
var _level = me.GetStat(12);
var _stay = false;
var _stuckx;
var _stucky;
var _stuckcount = 0;
var _autoskillcount = 0;
var _levelcount = 0;
var _getleadercount = 10;
function NTMain()
{
//Initialization
Include("NTBot/tools/NTHCommands.ntj");
NTC_IncludeLibs();
NT_LoadConfig();
NTSI_LoadNIPFiles("NTBot/item_configs");
NTA_Initialize();
RegisterEvent(EVENT_GAMEMSG, NTH_Talk);
NTConfig_PublicMode = false;
me.maxgametime = 0;
//Start Game
if(_autoskill)
{
switch(me.classid)
{
case NTC_CHAR_CLASS_AMAZON:
case NTC_CHAR_CLASS_BARBARIAN:
case NTC_CHAR_CLASS_DRUID:
case NTC_CHAR_CLASS_ASSASSIN:
NTH_Say("AutoSkill is not currently availible for my class. Disabling.");
_autoskill = false;
break;
default:
NTH_AttackSetup();
break;
}
}
while(!NTC_InMyParty(_leadername))
{
NTH_PartyLeader();
Delay(1000);
}
NTH_GetLeaderHandle();
//Bot
while(NTH_InGame(_leadername))
{
if(me.hp < 1 && (me.mode == 17 || me.mode == 0))
NTH_Revive();
if(!_stay && NTC_InMyParty(_leadername))
{
if(_getleadercount++ > 9)
{
_getleadercount = 0;
_updatedleader = NTH_GetLeader();
}
if(_updatedleader != null)
NTH_Follow();
else
{
if(me.areaid != _leaderhandle.areaid)
NTH_ChangeArea();
else
_updatedleader = NTH_GetLeader();
}
}
else
{
NTH_PartyLeader();
if(_attack && !NTC_InTown())
NTH_ClearPosition();
Delay(500);
}
Delay(100)
}
NTC_SendMsgToScript("NTBotGame.ntj", "SCRIPT_END");
return;
}
//GetLeader
function NTH_GetLeader()
{
_target = NTC_FindUnit(NTC_UNIT_PLAYER);
if(_target)
{
do
{
if(_target.name == _leadername)
return _target;
} while(_target.GetNext());
}
return null;
}
//Follow
function NTH_Follow()
{
if(GetDistance(me.x, me.y, _leader.x, _leader.y) > 4)
{
if(_stuckcount > 11)
{
_stuckcount = 0;
NTH_MoveTo(_leaderhandle.areaid, _leader.x, _leader.y, 15);
if(GetDistance(me.x, me.y, _leader.x, _leader.y) > 8)
NTH_ClearPosition(true);
}
_stuckx = me.x;
_stucky = me.y;
ClickMap(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _leader.x, _leader.y);
ClickMap(NTC_CLICK_LUP, NTC_SHIFT_NONE, null);
Delay(100);
if(me.x == _stuckx && me.y == _stucky)
_stuckcount++;
}
else if(!NTC_InTown() && _attack)
{
_stuckcount = 0;
NTH_ClearPosition();
}
else
{
_stuckcount = 0;
Delay(200);
}
}
//ChangeArea
function NTH_ChangeArea()
{
var i;
var _orgcoords;
while(me.areaid == 0 || _leaderhandle.areaid == 0)
Delay(200);
// Walking Into New Area
if(GetDistance(me.x, me.y, _leader.x, _leader.y) < 50)
{
for(i = 0; i < 8; i++)
{
_orgcoords = _leader.x + _leader.y;
Delay(100);
if(_leader.x+_leader.y != _orgcoords)
{
ClickMap(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _leader.x, _leader.y);
ClickMap(NTC_CLICK_LUP, NTC_SHIFT_NONE, null);
Delay(500);
return;
}
}
}
if(!NTH_TakeWaypoint(_leaderhandle.areaid))
{
if(!NTH_TakeStair(_leaderhandle.areaid))
{
if(!NTH_UsePortal("none"))
{
Say("I'm stuck");
Delay(50);
while(!NTH_GetLeader())
{
if(!NTC_InTown() && _attack)
NTH_ClearPosition(true);
Delay(500);
}
}
}
}
if(!NTC_InTown())
NTP_DoPrecast(true);
}
//Talk
function NTH_Talk(msg, type)
{
if(msg.indexOf(_leadername) != -1 && msg.charAt(_leadername.length+8) == _trigger)
{
var _command;
var _variable;
msg = msg.toLowerCase();
msg = msg.substring(_leadername.length+9)
msg = msg.split(" ");
_command = msg[0];
_variable = msg[1];
if(_variable == "")
_variable = undefined;
NTH_Commands(_command, _variable);
return;
}
}
//GetLeaderHandle
function NTH_GetLeaderHandle()
{
while(!_leaderhandle)
{
_target = GetPlayerUnit();
if(_target)
{
while(_target.GetNext())
{
if(_target.name == _leadername)
{
_leaderhandle = _target;
break;
}
}
}
Delay(500);
}
while(!_leader)
{
_leader = NTH_GetLeader();
Delay(100);
}
}
//Revive
function NTH_Revive()
{
var _message = new Array(4);
while(!NTC_InTown())
{
me.Cancel(0);
Delay(1000);
}
NTTM_TownMove("portalspot");
_message[1] = "Lmk when it's safe";
_message[2] = "TP and tell me if it's safe";
_message[3] = "Call me when it's safe";
_message[4] = "Just waiting for a safe TP";
_message[0] = _message[Random(1, 4)];
Say(_message[0]);
Delay(50);
while(!NTH_GetLeader())
Delay(500);
return;
}
//InGame
function NTH_InGame(playerName)
{
_target = GetPlayerUnit();
if(_target)
{
do
{
if(_target.name == playerName)
return true;
} while(_target.GetNext());
}
return false;
}
//Say
function NTH_Say(response)
{
if(_verbal)
{
Say(response);
Delay(50);
}
else
Print(response);
}
//TakeStair
function NTH_TakeStair(areaid)
{
var _unit;
var i;
_unit = NTM_GetStairInt(areaid);
if(!_unit)
return false;
for(i = 0; i < 6; i++)
{
NTM_MoveTo(me.areaid, _unit.x+1, _unit.y, 10);
NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _unit);
Delay(500);
if(me.areaid == areaid)
return true;
}
return false;
}
//UsePortal
function NTH_UsePortal(leader, areaid)
{
var _portal;
var _preareaid = me.areaid;
if(arguments.length < 2)
areaid = 0;
if(me.areaid == 102) // Portal to A4
{
_portal = NTC_FindUnit(NTC_UNIT_OBJECT, 342);
for(var i = 0; i < 10; i++)
{
NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _portal);
Delay(500);
if(me.areaid != _preareaid)
return true;
}
return false;
}
_portal = NTC_FindUnit(NTC_UNIT_OBJECT, GetLocaleString(3226));
if(_portal)
{
if(leader != "none")
{
do
{
if(_portal.mode == 2 && NTC_CheckOwner(_portal, leader) && GetDistance(me, _portal) <= 30)
{
if(areaid != 0)
if(_portal.subareaid != areaid)
return false;
while(me.areaid == _preareaid && _portal)
{
NTM_MoveTo(me.areaid, _portal.x+1, _portal.y, 10);
NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _portal);
Delay(500);
if(me.areaid != _preareaid)
return true;
}
}
} while(_portal.GetNext());
}
else
{
do
{
if(_portal.mode == 2 && GetDistance(me, _portal) <= 30)
{
while(me.areaid == _preareaid && _portal)
{
NTM_MoveTo(me.areaid, _portal.x+1, _portal.y, 10);
NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _portal);
Delay(500);
if(me.areaid != _preareaid)
return true;
}
}
} while(_portal.GetNext());
}
}
return false;
}
//TakeWaypoint
function NTH_TakeWaypoint(areaid)
{
if(me.areaid == areaid)
return true;
switch(areaid)
{
case 1:
case 3:
case 4:
case 5:
case 6:
case 27:
case 29:
case 32:
case 35:
case 40:
case 42:
case 43:
case 44:
case 46:
case 48:
case 52:
case 57:
case 74:
case 75:
case 76:
case 77:
case 78:
case 79:
case 80:
case 81:
case 83:
case 101:
case 103:
case 106:
case 107:
case 109:
case 111:
case 112:
case 113:
case 115:
case 117:
case 118:
case 129:
break;
default:
return false;
}
var _unit = NTM_GetWaypointInt();
if(!_unit)
return false;
if(NTC_InTown())
me.Cancel(1);
for(var i = 0 ; i < 20 ; i++)
{
if(me.areaid == _leaderhandle.areaid)
return true;
if((i % 10) == 0)
{
NTH_MoveTo(_unit.areaid, _unit.x, _unit.y, 10);
NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _unit);
}
Delay(200);
if(GetUIState(0x14))
{
if(me.TakeWaypoint(areaid))
{
Delay(200);
return true;
}
else
{
NTH_Say("I don't have that waypoint!");
while(!NTH_GetLeader())
{
if(!NTC_InTown() && _attack)
NTH_ClearPosition(true);
Delay(500);
}
return true;
}
break;
}
}
return false;
}
//PartyLeader
function NTH_PartyLeader()
{
var _player = GetPlayerUnit();
if(_player)
{
var _mypartyid = _player.partyid;
while(_player.GetNext())
{
if(_player.name == _leadername)
{
if(_player.partyid == 65535 || _player.partyid != _mypartyid)
{
if(_player.partyflag == 2)
{
me.ClickParty(_player, 2);
return;
}
if(_player.partyid == 65535)
{
if(_player.partyflag == 4)
return;
me.ClickParty(_player, 2);
NTC_Delay(NTC_DELAY_FRAME);
if(_player.partyflag == 4 || (_player.partyid != 65535 && _player.partyid == _mypartyid))
return;
}
}
}
}
}
}
//Attack Setup
function NTH_AttackSetup()
{
var i;
var n = 0;
var _skillset = new Array;
var _build = new Array;
_skillset[0] = 0;
switch(me.classid)
{
case NTC_CHAR_CLASS_AMAZON:
return;
case NTC_CHAR_CLASS_SORCERESS:
_skillset[1] = NTC_GetSkillLevel(36); // Fire Bolt
_skillset[2] = NTC_GetSkillLevel(39); // Ice Bolt
_skillset[3] = NTC_GetSkillLevel(38); // Charged Bolt
for(i = 1; i <= 3; i++)
if(_skillset[i] > _skillset[n])
{
_skillset[0] = i;
n = i;
}
if(_skillset[0] == 1)
_build = [47, 36];
else if(_skillset[0] == 2)
_build = [59, 55, 45, 39];
else if(_skillset[0] == 3)
_build = [49, 38];
if(_skillset[0])
{
for(i = 0; i < _build.length; i++)
{
if(NTC_GetSkillLevel(_build[i]))
{
NTConfig_AttackSkill[1] = _build[i];
NTConfig_AttackSkill[3] = _build[i];
break;
}
}
}
else
{
NTConfig_AttackSkill[1] = 0;
NTConfig_AttackSkill[3] = 0;
}
return;
case NTC_CHAR_CLASS_NECROMANCER:
return;
case NTC_CHAR_CLASS_PALADIN:
_skillset[1] = NTC_GetSkillLevel(96); // Sacrifice
_skillset[2] = NTC_GetSkillLevel(112); // Blessed Hammer
for(i = 1; i <= 3; i++)
if(_skillset[i] > _skillset[n])
{
_skillset[0] = i;
n = i;
}
if(_skillset[0] == 1)
_build = [106, 96];
else if(_skillset[0] == 2)
_build = [112];
if(_skillset[0])
{
for(i = 0; i < _build.length; i++)
{
if(NTC_GetSkillLevel(_build[i]))
{
NTConfig_AttackSkill[1] = _build[i];
NTConfig_AttackSkill[3] = _build[i];
break;
}
}
}
else
{
NTConfig_AttackSkill[1] = 0;
NTConfig_AttackSkill[3] = 0;
}
return;
case NTC_CHAR_CLASS_BARBARIAN:
return;
case NTC_CHAR_CLASS_DRUID:
return;
case NTC_CHAR_CLASS_ASSASSIN:
return;
}
}
//ClearPosition
function NTH_ClearPosition(stuck)
{
NTP_DoPrecast(false);
if(_autoskill)
{
if(_autoskillcount++ > 30)
{
_autoskillcount = 0;
NTH_AttackSetup();
}
}
var _orgx, _orgy;
var _spectype = [0x01,0x01,0x0A];
var _skiplist;
var _attackcount = 0;
var _target;
var _distance, _mingid, _mindistance;
var _result;
var range = 20;
if(arguments.length == 1)
range = 3;
else
stuck = false;
if(NTConfig_AttackSkill[1] < 1 || NTConfig_AttackSkill[3] < 1)
return false;
_orgx = me.x;
_orgy = me.y;
for(var i = 0 ; i < _spectype.length ; i++)
{
_skiplist = new Array();
while(_attackcount < (i+1)*100)
{
if(_attackcount > 49)
break;
_mindistance = 100000;
_target = NTC_FindUnit(NTC_UNIT_MONSTER);
if(_target)
{
do
{
if(_skiplist.indexOf(_target.gid) < 0)
{
if(_target.IsAttackable() && (_target.spectype&_spectype[i]))
{
if(GetDistance(_orgx, _orgy, _target.x, _target.y) <= range && NTA_IsValidMonster(_target))
{
_distance = GetDistance(me, _target);
if(_distance < _mindistance)
{
_mingid = _target.gid;
_mindistance = _distance;
}
}
}
else
_skiplist.push(_target.gid);
}
} while(_target.GetNext());
}
if(_mindistance < 100000)
{
_target = NTC_FindUnit(NTC_UNIT_MONSTER, _mingid);
if(_target)
{
_result = NTA_Attack(_target, (_attackcount%30) == 0);
if((!stuck && GetDistance(me.x, me.y, _leader.x, _leader.y) > 20 && !_stay) || !_attack || me.mode == 17 || me.hp < 1)
return;
switch(_result)
{
case 1:
_skiplist.push(_mingid);
break;
case 2:
case 3:
_attackcount++;
break;
default:
return false;
}
}
}
else
break;
}
}
if(_attackcount > 0)
NTH_PickItems();
if(_levelcount++ > 10)
{
_levelcount = 0;
if(me.GetStat(12) > _level)
{
Say("!I feel much stronger now");
Delay(50);
_level = me.GetStat(12);
}
}
return true;
}
//MoveTo
function NTH_MoveTo(areaid, x, y, force)
{
var i, n;
var _teleport;
var _path;
if(x == me.x && y == me.y)
return true;
if(arguments.length < 4)
force = 0;
if(NTC_InTown() || NTC_GetSkillLevel(54) < 1 || !_useteleport)
_teleport = false;
else
_teleport = true;
_path = GetPath(areaid, me.x, me.y, x, y, _teleport);
if(_path)
{
for(i = 0 ; i < _path.length ; i++)
{
for(n = 0 ; n < 2 ; n++)
{
if(_teleport)
{
if(NTM_TeleportTo(_path[i][0]+Random(-n, n), _path[i][1]+Random(-n, n)))
break;
}
else
{
if(!NTH_WalkTo(_path[i][0], _path[i][1], force))
return;
break;
}
}
}
}
return true;
}
//WalkTo
function NTH_WalkTo(x, y, force)
{
// force of 10 is just force
// force of 15 is to return to leader
var i;
var _prex1, _prey1;
var _prex2, _prey2;
if(arguments.length < 3)
force = 0;
if(me.runwalk == 0)
me.runwalk = 1;
for(i = 0 ; i < 90 ; i++)
{
if((i % 10) == 0)
{
if((i % 60) == 0)
{
_prex1 = me.x;
_prey1 = me.y;
if((i % 120) == 0)
{
_prex2 = me.x;
_prey2 = me.y;
}
}
if((!_stay && force == 0 && GetDistance(me.x, me.y, _leader.x, _leader.y) > 20) || !_attack || me.mode == 17 || me.hp < 1)
return false;
if(force == 15 && GetDistance(me.x, me.y, _leader.x, _leader.y) < 10)
return false;
ClickMap(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, x, y);
}
NTC_Delay(NTC_DELAY_FRAME);
if(Math.abs(me.x-x) < 2 && Math.abs(me.y-y) < 2)
break;
if((i % 10) == 9)
{
ClickMap(NTC_CLICK_LUP, NTC_SHIFT_NONE, null);
NTC_Delay(NTC_DELAY_FRAME);
if((i % 60) == 59)
{
if(me.x == _prex1 && me.y == _prey1 && !NTC_InTown())
{
NTH_ClearPosition(2);
NTP_DoPrecast(false);
}
if((i % 120) == 119 && me.x == _prex2 && me.y == _prey2)
return true;
}
}
}
ClickMap(NTC_CLICK_LUP, NTC_SHIFT_NONE, null);
NTC_Delay(NTC_DELAY_FRAME);
return true;
}
//PickItems
function NTH_PickItems()
{
var i, _mode;
for(i = 0 ; i < 25 ; i++)
{
_mode = me.mode;
if((_mode >= 1 && _mode <= 3) || _mode == 5 || _mode == 6)
break;
NTC_Delay(NTC_DELAY_FRAME);
}
if(i < parseInt(100/NTC_DELAY_FRAME))
NTC_PingDelay(NTConfig_SnagDelay-(i*NTC_DELAY_FRAME));
var i;
var _item;
var _checkeditem, _checkeditems;
var _value;
var _minindex, _mindistance;
_item = NTC_FindUnit(NTC_UNIT_ITEM);
if(!_item)
return;
_checkeditems = new Array();
do
{
if(_item.mode == 3 || _item.mode == 5)
{
if(NTSI_IsIgnoredItemInt(_item.classid))
continue;
if(GetDistance(me, _item) <= NTConfig_SnagRange)
{
_value = NTSI_CheckItem(_item);
if(_value)
_checkeditems.push(new NTSI_ItemInt(_item, _value));
}
}
} while(_item.GetNext());
while(_checkeditems.length > 0)
{
_mindistance = 100000;
for(i = 0 ; i < _checkeditems.length ; i++)
{
_value = GetDistance(me.x, me.y, _checkeditems[i].x, _checkeditems[i].y);
if(_value < _mindistance)
{
_minindex = i;
_mindistance = _value;
}
}
_checkeditem = _checkeditems.splice(_minindex, 1)[0];
_item = NTC_FindUnit(NTC_UNIT_ITEM, _checkeditem.GID);
if(_item)
{
if(!NTSI_IsLimitedItemInt(_item))
{
if(NTT_CheckSpace(_item.xsize, _item.ysize))
{
if(NTH_SnagItem(_item))
{
switch(_checkeditem.ClassID)
{
case 515: // Rejuvenation Potion
case 516: // Full Rejuvenation Potion
Print("Picked up " + GetLocaleString(2209+_checkeditem.ClassID-515));
break;
case 587: // Minor Healing Potion
case 588: // Light Healing Potion
case 589: // Healing Potion
case 590: // Greater Healing Potion
case 591: // Super Healing Potion
case 592: // Minor Mana Potion
case 593: // Light Mana Potion
case 594: // Mana Potion
case 595: // Greater Mana Potion
case 596: // Super Mana Potion
Print("Picked up " + GetLocaleString(2266+_checkeditem.ClassID-587));
break;
default:
Print("Picked up " + NTC_ItemQualityToD2Color[_item.quality] + _item.name.split("\n")[0]);
if(_item.quality < 4 && _checkeditem.Status < 2 && _item.itemtype != 4 && (_item.itemtype < 76 || _item.itemtype > 81))
NTC_SendLogToOOG(NTC_LOG_ITEM, "Kept " + NTC_ItemQualityToMGRColor[_item.quality] + _item.name.split("\n")[0] + ";" + _item.itemdesc);
break;
}
}
}
else
{
NTH_Say("My inventory is full!");
return;
}
}
}
}
}
//SnagItem
function NTH_SnagItem(snagitem)
{
var i;
var _classid;
_classid = snagitem.classid;
for(i = 0 ; i < 40 ; i++)
{
if((i % 10) == 0 && (snagitem.mode == 3 || snagitem.mode == 5))
{
if(GetDistance(me, snagitem) > 3)
NTH_MoveTo(snagitem.areaid, snagitem.x, snagitem.y, 10);
if(NTC_ClearCursor())
NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, snagitem);
}
NTC_Delay(NTC_DELAY_FRAME);
if(_classid == 523)
{
Print("Picked up " + GetLocaleString(2215));
return false;
}
else if(snagitem.mode != 3 && snagitem.mode != 5)
{
var _parent;
NTC_PingDelay(100);
_parent = snagitem.GetParent();
return (_parent && _parent.gid == me.gid);
}
}
return false;
}
|
|
|
01/28/2014, 04:21
|
#6
|
elite*gold: 0
Join Date: Dec 2013
Posts: 39
Received Thanks: 0
|
I was offered this at another site tried to modify the commands for the NTcommands that tie into the NThelperbot script that the barb runs
[code]<<<@!1!@>>>
gives me (251)error
Code:
/*///////////////////////////////////////////////////////////////
Author: DysfunctionaI @ BlizzHackers, DysfunctionaI @ D2JSP
/////////////////////////////////////////////////////////////////
This is the command file, where you may edit or make new commands.
Potential commands are limitless, but I have written up most of
the more useful ones here. Adding commands became really popular
in my last release, so I decided to make it easier for people to
write their own commands.
The layout is simple. You get two variables to work with:
'command' is the command that the leader typed
'variable' is the payload (if any), which comes after a command
Example:
The leader types "-dropgold 500"
The 'command' would be 'dropgold'
The 'variable' would be '500'
Example 2:
The leader types "-walk"
The 'command' would be 'walk'
The 'variable' would be 'undefined'
You may also use the functions available in the NTHelperBot.ntj
script. Not all of them will work with your custom commands
perfectly, so check them out before using them. If they don't fit
your needs, I advise against editing the function, and instead,
just writing a new one here, because your edits could easily break
the bot.
Don't forget to put return; at the end of your commands.
//////////////////////////////////////////////////////////////////
Have fun! Command section below!
////////////////////////////////////////////////////////////////*/
function NTH_Commands(command, variable)
{
/////////////////
// town
/////////////////
if(command == "town")
{
if(NTC_InTown())
{
NTH_Say("Doing town stuff");
NTTMGR_TownManager();
NTTM_TownMove("portalspot");
}
else
NTH_Say("I'm not in town!");
return;
}
/////////////////
// tp
/////////////////
if(command == "1")
{
NTH_Say("Taking your TP");
if(NTC_InTown())
{
NTTM_TownMove("portalspot");
NTH_UsePortal(_leadername);
while(!NTH_GetLeader())
{
if(_attack)
NTH_ClearPosition(true);
Delay(500);
}
}
else
{
NTH_UsePortal(_leadername);
while(!NTH_GetLeader())
Delay(500);
}
return;
}
/////////////////
// safe
/////////////////
if(command == "safe")
{
if(NTC_InTown())
{
NTTM_TownMove("portalspot");
if(NTH_UsePortal(_leadername))
NTT_GetCorpses();
while(!NTH_GetLeader())
{
if(_attack)
NTH_ClearPosition(true);
Delay(500);
}
}
return;
}
/////////////////
// precast
/////////////////
if(command == "precast")
{
NTP_DoPrecast(true);
return;
}
/////////////////
// come
/////////////////
if(command == "2")
{
_stay = false;
NTH_Say("Ill go");
ClickMap(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _leader.x, _leader.y);
ClickMap(NTC_CLICK_LUP, NTC_SHIFT_NONE, null);
return;
}
/////////////////
// stay
/////////////////
if(command == "3")
{
NTH_Say("Istay");
_stay = true;
return;
}
/////////////////
// pick
/////////////////
if(command == "pick")
{
NTH_Say("Picking up items");
NTH_PickItems();
return;
}
Code:
/////////////////
// body
/////////////////
if(command == "body")
{
NTH_Say("Checking For Bodies!");
Delay(200);
var _corpse ;
var _orgx ;
var _orgy ;
var _startTick ;
var _reposition = false ;
if (arguments . length < 1 | | ! range)
range = 25 ;
_corpse = NTC_FindUnit (NTC_UNIT_MONSTER);
_orgx = me . x ;
_orgy = me . y ;
NTC_PingDelay (100);
if (_corpse)
{
do
{
if ( GetDistance ( _orgx , _orgy , _corpse . x , _corpse . y ) <= range && NTA_CheckLootStatus ( _corpse ) && NTA_IsLootable ( _corpse . classid ))
{
if ( GetDistance ( me . x , me . y , _corpse . x , _corpse . y ) > = 8 )
{
if (! NTM_MoveTo ( me . areaid , _corpse . x , _corpse . y ))
continue ;
}
_startTick = GetTickCount ();
_reposition = false ;
while ( NTA_CheckLootStatus ( _corpse ) && ! _corpse . IsAttackable ())
{
NTC_CastSkill ( 131 , NTC_HAND_RIGHT , _corpse );
NTC_PingDelay ( 50 );
if ( GetTickCount () > = _startTick + 1000 && ! _reposition ) / / repositioning after 1sec
{
_reposition = true ;
if (! NTM_MoveTo ( me . areaid , _corpse . x , _corpse . y ))
break;
}
if ( GetTickCount () > = _startTick + 2500 ) / / skipping monster after 2.5sec
{
if ( me . mp < 10 )
{
Print ( "Lack of ?c3Mana?c0!" );
if ( NTConfig_BuyPotsIfLackOfMana )
{
if ( NTTMGR_VisitTown ())
Delay(100);
}
break;
}
var _filehandle = FileOpen ( "FailedtoLoot.txt" , 2 );
var _dateString = new Date . () toLocaleFormat ( "% a% m /% d /% y% H:% M:% S" );
if ( _filehandle )
{
var _states = "States ::" ;
for ( var i = 0 ; i < 144 ; i + +)
{
if ( _corpse . GetState ( i ))
_states + = "state (" + i + "):" + _corpse . GetState ( i ) + "<->" ;
}
_filehandle . WriteLine ( "[" + _dateString + "] Could not loot:" + _corpse . name + "[" + _corpse . classid + "] (Location:" + me . areaid + ")" + _states );
_filehandle . Close ();
}
Print ( "YC; Could not loot:" + _corpse . name + "[" + _corpse . classid + "] <Mode:" + _corpse . fashion + "> (Location:" + me . areaid + ")" );
break;
}
}
/ * If (GetTickCount () <_startTick + 2000)
NTC_SendMsgToScript ("NTBotGame.ntj", "SET_LOOTED_NULL") * /
}
} while ( _corpse . GetNext ());
NTC_PingDelay ( 100 );
NTSI_PickItems ();
return true;
}
return false ;
}
Code:
/////////////////
// help
/////////////////
if(command == "help")
{
NTH_Say("stay | come | attack on/off | tp | maketp | safe | aura (name) | wp | talk | shrine | town | precast | pick | body | verbal");
return;
}
/////////////////
// maketp
/////////////////
if(command == "maketp")
{
if(!NTC_InTown())
{
if(NTM_MakeTP())
NTH_Say("TP up");
else
NTH_Say("I don't have any TPs!");
}
else
NTH_Say("I can't TP here!");
return;
}
/////////////////
// verbal
/////////////////
if(command == "verbal")
{
if(variable == undefined || (variable != "on" && variable != "off"))
{
if(_verbal)
Say("Verbal messages ON");
else
Say("/w "+_leadername+" Verbal messages are OFF");
Delay(50);
}
else
{
if(variable == "on")
{
_verbal = true;
NTH_Say("Verbal messages ON");
}
else
{
_verbal = false;
Say("/w "+_leadername+" Verbal messages OFF");
}
}
return;
}
/////////////////
// attack
/////////////////
if(command == "attack")
{
if(variable == undefined || (variable != "on" && variable != "off"))
{
if(_attack)
NTH_Say("Attack is ON");
else
NTH_Say("Attack is OFF");
}
else
{
if(variable == "on")
{
_attack = true;
NTH_Say("I'll attack at will");
}
else
{
_attack = false;
NTH_Say("I won't attack anymore");
}
}
return;
}
/////////////////
// shrine
/////////////////
if(command == "shrine")
{
_target = NTC_FindUnit(NTC_UNIT_OBJECT, "shrine");
if(!_target)
_target = NTC_FindUnit(NTC_UNIT_OBJECT, "well");
if(_target)
{
do
{
if(GetDistance(_leader.x, _leader.y, _target.x, _target.y) < 15)
break;
} while(_target.GetNext());
if(GetDistance(_leader.x, _leader.y, _target.x, _target.y) < 15)
{
NTH_Say("Grabbing shrine");
if(GetDistance(me.x, me.y, _target.x, _target.y) > 3)
NTH_MoveTo(_target.areaid, _target.x+5, _target.y+5, 10);
NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _target);
Delay(500);
}
else
NTH_Say("Which shrine?");
}
else
NTH_Say("I don't see a shrine!");
return;
}
/////////////////
// talk
/////////////////
if(command == "talk")
{
if(!NTC_InTown())
{
NTH_Say("No one to talk to out here!");
return;
}
var _npc = false;
var _target = NTC_FindUnit(NTC_UNIT_NPC);
if(_target)
{
do
{
if(_target.classid > 6 && _target.name != "an evil force" && GetDistance(_leader.x, _leader.y, _target.x, _target.y) < 10)
{
var _npc = true;
NTH_Say("I'll talk to "+_target.name);
if(NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _target))
{
Delay(1000);
if(_target.classid == 155) // Warriv A1
me.SelectNPCMenu(0x0D36);
else if(_target.classid == 155) // Warriv A2
me.SelectNPCMenu(0x0D37);
else if(_target.classid == 210) // Meshif A2
me.SelectNPCMenu(0x0D38);
else if(_target.classid == 264) // Meshif A3
me.SelectNPCMenu(0x0D39);
else if(_target.classid == 367) // Tyrael A4
me.SelectNPCMenu(0x58D2);
else
{
me.SelectNPCMenu(0x0000);
me.Cancel(0);
me.Cancel(1);
}
while(!NTH_GetLeader())
Delay(500);
}
else
{
Delay(1000);
NTH_Say("I had a problem talking to that NPC...");
}
break;
}
} while(_target.GetNext());
if(!_npc)
NTH_Say("Show me what NPC to talk to!");
return;
}
return;
}
/////////////////
// aura
/////////////////
if(command == "ara")
{
if(me.classid != NTC_CHAR_CLASS_PALADIN)
return;
var _aura = 0;
if(variable == "pray" || variable == "pray")
_aura = 99;
else if(variable == "clean" || variable == "clean")
_aura = 109;
else if(variable == "med" || variable == "meditation")
_aura = 120;
else if(variable == "vig" || variable == "vig")
_aura = 115;
else if(variable == "salv" || variable == "salvation")
_aura = 125;
else if(variable == "might")
_aura = 98;
else if(variable == "conc" || variable == "concentration")
_aura = 113;
else if(variable == "fana" || variable == "fanaticism")
_aura = 122;
else if(variable == "convic" || variable == "conviction")
_aura = 123;
if(_aura)
{
if(NTC_GetSkillLevel(_aura))
{
NTH_Say("OK, I'll use that aura");
NTC_PutSkill(_aura, NTC_HAND_RIGHT);
NTConfig_AttackSkill[2] = _aura;
NTConfig_AttackSkill[4] = _aura;
}
else
NTH_Say("I don't have that aura!");
}
else
NTH_Say("I don't recognize that aura!");
return;
}
/////////////////
// wp
/////////////////
if(command == "wp")
{
_target;
var _wp = null;
switch(me.areaid)
{
case 3:
_wp = 119;
break;
case 4:
_wp = 119;
break;
case 5:
_wp = 119;
break;
case 6:
_wp = 119;
break;
case 27:
_wp = 119;
break;
case 29:
_wp = 157;
break;
case 32:
_wp = 119;
break;
case 35:
_wp = 157;
break;
case 42:
_wp = 156;
break;
case 43:
_wp = 156;
break;
case 44:
_wp = 156;
break;
case 46:
_wp = 402;
break;
case 48:
_wp = 323;
break;
case 52:
_wp = 288;
break;
case 57:
_wp = 156;
break;
case 74:
_wp = 402;
break;
case 76:
_wp = 237;
break;
case 77:
_wp = 237;
break;
case 78:
_wp = 237;
break;
case 79:
_wp = 237;
break;
case 80:
_wp = 237;
break;
case 81:
_wp = 237;
break;
case 83:
_wp = 237;
break;
case 101:
_wp = 324;
break;
case 106:
_wp = 238;
break;
case 107:
_wp = 238;
break;
case 111:
_wp = 496;
break;
case 112:
_wp = 496;
break;
case 113:
_wp = 511;
break;
case 115:
_wp = 511;
break;
case 117:
_wp = 496;
break;
case 118:
_wp = 511;
break;
case 129:
_wp = 494;
break;
}
if(_wp != null)
{
NTH_Say("Grabbing waypoint");
NTM_MoveToPresetUnit(me.areaid, NTC_UNIT_OBJECT, _wp, 1, 1);
_target = NTC_FindUnit(NTC_UNIT_OBJECT, _wp);
if(_target)
{
if(GetDistance(me, _target) > 2)
NTM_MoveTo(_target.areaid, _target.x+1, _target.y);
Delay(500);
NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _target);
Delay(1000);
me.Cancel(1);
}
}
else
NTH_Say("There's no waypoint here!");
return;
}
}
|
|
|
04/15/2014, 21:54
|
#7
|
elite*gold: 0
Join Date: Dec 2013
Posts: 39
Received Thanks: 0
|
im going to start back up and try modding and getting this to work
has anyone have more ideas for me to try?
|
|
|
04/17/2014, 11:31
|
#8
|
elite*gold: 0
Join Date: Dec 2013
Posts: 39
Received Thanks: 0
|
helperbot.ntj (47) : ref error : NTA_initialize not defined
nt_attack below
Code:
const NTA_DAMAGE_NONE = 0;
const NTA_DAMAGE_PHYSICAL = 1;
const NTA_DAMAGE_MAGIC = 2;
const NTA_DAMAGE_FIRE = 3;
const NTA_DAMAGE_LIGHTNING = 4;
const NTA_DAMAGE_COLD = 5;
const NTA_DAMAGE_POISON = 6;
var _NTA_SkillHand = new Array(7);
var _NTA_SkillDamage = new Array(7);
var _NTA_SkillRange = new Array(7);
var _CurseState;
var _SpearCount = 0;
var _SumCount = 0;
var _SkeleCount = 0;
var _MageCount = 0;
var _SumBreak = 0;
var _sorcattack = 0;
function NTA_Initialize()
{
if(NTConfig_AttackSkill[1] == 0 || NTConfig_AttackSkill[3] == 0)
NTA_DetectAttackPattern();
for(var i = 0 ; i < 8 ; i++)
{
if(NTConfig_AttackSkill[i] > 0)
{
_NTA_SkillHand[i] = GetBaseStat("skills.txt", NTConfig_AttackSkill[i], 166) ? 2 : NTC_HAND_RIGHT;
_NTA_SkillDamage[i] = NTA_GetDamageType(NTConfig_AttackSkill[i]);
switch(NTConfig_AttackSkill[i])
{
case 280: // Normal Attack
_NTA_SkillRange[i] = 2;
break;
case 6: //Magic Arrow
case 7: //Fire Arrow
_NTA_SkillRange[i] = 20;
break;
case 8: //Inner Sight
_NTA_SkillRange[i] = 13;
break;
case 10: //Jab
_NTA_SkillRange[i] = 3;
break;
case 11: //Cold Arrow
case 12: //Multiple Shot
_NTA_SkillRange[i] = 20;
break;
case 14: //Power Strike
_NTA_SkillRange[i] = 20;
break;
case 15: //Poison Javelin
_NTA_SkillRange[i] = 10;
break;
case 16: //Exploding Arrow
_NTA_SkillRange[i] = 10;
break;
case 17: //Slow Missiles
_NTA_SkillRange[i] = 13;
break;
case 19: //Impale
_NTA_SkillRange[i] = 3;
break;
case 20: //Lightning Bolt
case 21: //Ice arrow
case 22: //Guided arrow
_NTA_SkillRange[i] = 20;
break;
case 24: //Charged Strike
_NTA_SkillRange[i] = 3;
break;
case 25: //Plague jav
_NTA_SkillRange[i] = 10;
break;
case 26://Strafe
case 27://Immolation Arrow
_NTA_SkillRange[i] = 20;
break;
case 30: //Fend
_NTA_SkillRange[i] = 3;
break;
case 31: //Freezing arrow
_NTA_SkillRange[i] = 15;
break;
case 35: //Lightning Fury
_NTA_SkillRange[i] = 12;
break;
case 38: //Charged Bolt
_NTA_SkillRange[i] = 20;
break;
case 44: //Frost Nova
case 48: //Nova
_NTA_SkillRange[i] = 10;
break;
case 64: //Frozen Orb
_NTA_SkillRange[i] = 15;
break;
case 74: //Corpse Explosion
case 84: //Bone Spear
_NTA_SkillRange[i] = 15;
break;
case 92://Poison Nova
_NTA_SkillRange[i] = 7;
break;
case 93://Bone Spirit
_NTA_SkillRange[i] = 25;
break;
case 95: //Revive
_NTA_SkillRange[i] = 20;
case 97: //Smite
_NTA_SkillRange[i] = 3;
break;
case 101: //Holy Bolt
_NTA_SkillRange[i] = 15;
break;
case 106: //Zeal
case 112: //Blessed Hammer
_NTA_SkillRange[i] = 3;
break;
case 144: //Concentrate
_NTA_SkillRange[i] = 8;
break;
case 147: //Frenzy
_NTA_SkillRange[i] = 2;
break;
case 151: //Whirlwind
_NTA_SkillRange[i] = 8;
break;
case 152: //Berserk
_NTA_SkillRange[i] = 3;
break;
case 225: //Fire Storm
case 229: //Molten Boulder
case 230: //Arctic Blast
case 232: //Feral Rage
case 233: //Maul
case 238: //Rabies
case 239: //Fire Claws
case 240: //Twister
case 242: //Hunger
case 243: //Shockwave
case 244: //Volcano
_NTA_SkillRange[i] = 3;
break;
case 245: //Tornado
_NTA_SkillRange[i] = 3;
break;
case 248: //Fury
_NTA_SkillRange[i] = 3;
break;
case 271: // Lightning Sentry
case 276: // Death Sentry
case 261: // Charged Bolt Sentry
_NTA_SkillRange[i] = 20;
break;
case 251: // Fire Blast
case 256: // Shockweb Sentry
_NTA_SkillRange[i] = 15;
break;
default:
_NTA_SkillRange[i] = 25;
break;
}
function NTA_KillMonster (classid)
{
var _target;
if (NTConfig_AttackSkill [1] <1)
return false;
_target = NTC_FindUnit (NTC_UNIT_MONSTER, classid, 5);
if (! _target)
return false;
if (_target.IsAttackable ())
{
_attackcount var = 0;
while (_attackcount <300 && NTA_IsValidMonster (_target))
{
if (NTA_Attack (_target, (_attackcount% 30) == 0) <2)
break;
_attackcount + +;
}
}
return (_target.hp <= 0 | | _target.mode == 0 | | _target.mode == 12);
}
function NTA_ClearPosition (range, pickitem, safe level, recursion)
{
var _orgx, _orgy;
var _spectype = [0x0A, 0x01, 0x01];
var _skiplist;
_attackcount var = 0;
var _target;
var _distance, _mingid, _mindistance;
var _result;
if (NTConfig_AttackSkill [1] <1 | | NTConfig_AttackSkill [3] <1)
return false;
switch (arguments.length)
{
case 0:
range = 20;
case 1:
pickitem = false;
case 2:
safe level = 0;
case 3:
recursion = true;
default:
if (NTConfig_CheckSelfSafe <0x01 && NTConfig_CheckMercSafe <0x01)
safe level = 0;
break;
}
_orgx = me.x;
_orgy = me.y;
for (var i = 0; i <_spectype.length; i + +)
{
_skiplist = new Array ();
while (_attackcount <(i +1) * 100)
{
_mindistance = 100000;
_target = NTC_FindUnit (NTC_UNIT_MONSTER);
if (_target)
{
do
{
if (_skiplist.indexOf (_target.gid) <0)
{
if (_target.IsAttackable () && (_target.spectype & _spectype [i]))
{
if (GetDistance (_orgx, _orgy, _target.x, _target.y) <= range && NTA_IsValidMonster (_target))
{
_distance = GetDistance (me, _target);
if (_distance <_mindistance)
{
_mingid = _target.gid;
_mindistance = _distance;
}
}
}
else
_skiplist.push (_target.gid);
}
} While (_target.GetNext ());
}
if (_mindistance <100000)
{
_target = NTC_FindUnit (NTC_UNIT_MONSTER, _mingid);
if (_target)
{
_result = NTA_Attack (_target, (_attackcount% 30) == 0);
switch (_result)
{
case 1:
_skiplist.push (_mingid);
break;
case 2:
case 3:
_attackcount + +;
break;
default:
return false;
}
}
}
else
break;
}
}
if (me.classid == NTC_CHAR_CLASS_PALADIN)
{
if (_attackcount> 2 && (parseInt (me.hp * 100/me.hpmax) <NTConfig_UseRedemptionHP | | parseInt (me.mp * 100/me.mpmax) <NTConfig_UseRedemptionMP))
{
if (NTC_PutSkill (124 NTC_HAND_RIGHT))
NTC_PingDelay (1000);
}
}
if (NTConfig_UseFindItem me.classid && == && NTC_CHAR_CLASS_BARBARIAN _attackcount> 2)
{
if (! NTA_CheckForCloseMonsters (10))
{
/ / Print ("YC <No Monsters close - looting");
NTA_FindItem (NTConfig_FindItemRange);
}
else
{
/ / Print ("ÿc1Close Monster detected - clearing area");
if (recursion)
{
NTA_ClearPosition (15, false, 0, false);
NTA_FindItem (NTConfig_FindItemRange);
}
}
}
if (NTConfig_OpenChest)
{
_target = NTC_GetSpecialChest ();
if (_target && GetDistance (_orgx, _orgy, _target.x, _target.y) <= range && NTC_OpenChest (_target))
_attackcount + +;
}
if (pickitem && _attackcount> 0)
NTSI_PickItems ();
/ *
if (! NTA_CheckForCloseMonsters (15))
NTA_OpenChests ();
* /
switch (safe level)
{
case 1:
return NTTMGR_CheckSafe (0x00, 0x01 & NTConfig_CheckMercSafe);
case 2:
return NTTMGR_CheckSafe (NTConfig_CheckSelfSafe, NTConfig_CheckMercSafe);
}
return true;
}
function NTA_ClearLevel (pickitem, safe level)
{
var i;
var _room, _rooms;
var _distance, _minindex, _mindistance;
_room = getRoom ();
if (! _room)
return false;
switch (arguments.length)
{
case 0:
pickitem = true;
case 1:
safe level = 2;
default:
if (NTConfig_CheckSelfSafe <0x01 && NTConfig_CheckMercSafe <0x01)
safe level = 0;
break;
}
_rooms = new Array ();
do
{
_rooms.push ([parseInt (_room.x * 5 + _room.xsize * 5/2), parseInt (_room.y * 5 + _room.ysize * 5/2)]);
} While (_room.GetNext ());
while (_rooms.length> 0)
{
_mindistance = 100000;
for (i = 0; i <_rooms.length; i + +)
{
_distance = GetDistance (me.x, me.y, _rooms [i] [0], _rooms [i] [1]);
if (_distance <_mindistance)
{
_minindex = i;
_mindistance = _distance;
}
}
if (NTM_MoveTo (me.areaid, _rooms [_minindex] [0], _rooms [_minindex] [1], 1))
{
if (! NTA_ClearRoom (pickitem, safe level))
return false;
NTP_DoPrecast (false);
}
_rooms.splice (_minindex, 1);
}
return true;
}
function NTA_ClearRoom (pickitem, safe level)
{
var _room;
var _spectype = [0x0A, 0x01, 0x01];
var _skiplist;
_attackcount var = 0;
var _target;
var _distance, _mingid, _mindistance;
var _result;
if (NTConfig_AttackSkill [1] <1 | | NTConfig_AttackSkill [3] <1)
return false;
_room = me.GetRoom ();
if (! _room)
return false;
switch (arguments.length)
{
case 0:
pickitem = false;
case 1:
safe level = 0;
default:
if (NTConfig_CheckSelfSafe <0x01 && NTConfig_CheckMercSafe <0x01)
safe level = 0;
break;
}
for (var i = 0; i <_spectype.length; i + +)
{
_skiplist = new Array ();
while (_attackcount <(i +1) * 100)
{
_mindistance = 100000;
_target = NTC_FindUnit (NTC_UNIT_MONSTER);
if (_target)
{
do
{
if (_skiplist.indexOf (_target.gid) <0)
{
if (_target.IsAttackable () && (_target.spectype & _spectype [i]))
{
if (_room.UnitInRoom (_target) && NTA_IsValidMonster (_target))
{
_distance = GetDistance (me, _target);
if (_distance <_mindistance)
{
_mingid = _target.gid;
_mindistance = _distance;
}
}
}
else
_skiplist.push (_target.gid);
}
} While (_target.GetNext ());
}
if (_mindistance <100000)
{
_target = NTC_FindUnit (NTC_UNIT_MONSTER, _mingid);
if (_target)
{
_result = NTA_Attack (_target, (_attackcount% 30) == 0);
switch (_result)
{
case 1:
_skiplist.push (_mingid);
break;
case 2:
case 3:
_attackcount + +;
break;
default:
return false;
}
}
}
else
break;
}
}
if (me.classid == NTC_CHAR_CLASS_PALADIN)
{
if (_attackcount> 2 && (parseInt (me.hp * 100/me.hpmax) <NTConfig_UseRedemptionHP | | parseInt (me.mp * 100/me.mpmax) <NTConfig_UseRedemptionMP))
{
if (NTC_PutSkill (124 NTC_HAND_RIGHT))
NTC_PingDelay (1000);
}
}
if (NTConfig_UseFindItem me.classid && == && NTC_CHAR_CLASS_BARBARIAN _attackcount> 2)
{
if (! NTA_CheckForCloseMonsters (5))
{
/ / Print ("YC <No Monsters close - looting");
NTA_FindItem (NTConfig_FindItemRange);
}
}
if (NTConfig_OpenChest)
{
_target = NTC_GetSpecialChest ();
if (_target && _room.UnitInRoom (_target) && NTC_OpenChest (_target))
_attackcount + +;
}
if (pickitem && _attackcount> 0)
NTSI_PickItems ();
/ *
if (! NTA_CheckForCloseMonsters (15))
NTA_OpenChests ();
* /
switch (safe level)
{
case 1:
return NTTMGR_CheckSafe (0x00, 0x01 & NTConfig_CheckMercSafe);
case 2:
return NTTMGR_CheckSafe (NTConfig_CheckSelfSafe, NTConfig_CheckMercSafe);
}
return true;
}
function NTA_IsValidMonster (monster)
{
var _classid;
if (monster.hp <= 0 | | monster.mode == 0 | | monster.mode == 12)
return false;
_classid = monster.classid;
if (((_classid> = 110 && _classid <= 113) | | _classid == 608) && monster.mode == 8) / / ignore flying scavengers
return false;
if (_classid == 68 && monster.mode == 14) / / ignore burrowing maggots
return false;
if (_classid> = 258 && _classid <= 263 && monster.mode == 14) / / ignore submerged Water Watchers
return false;
if (monster.GetState (53) | | monster.GetState (96)) / / Conversion, Revive
return false;
return true;
}
function NTA_GetDamageType (skillid)
{
if (skillid == 74) / / Corpse Explosion
return NTA_DAMAGE_PHYSICAL;
if (skillid == 112) / / Blessed Hammer
return NTA_DAMAGE_NONE;
switch (GetBaseStat ("skills.txt" skillid, 233))
{
case "cold":
return NTA_DAMAGE_COLD;
case "fire":
return NTA_DAMAGE_FIRE;
case "ltng":
return NTA_DAMAGE_LIGHTNING;
case "like":
return NTA_DAMAGE_MAGIC;
case "pois":
return NTA_DAMAGE_POISON;
case "stun":
return NTA_DAMAGE_NONE;
default:
if (GetBaseStat ("skills.txt" skillid, 178) | | GetBaseStat ("skills.txt" skillid, 182)) / / aura or passive
return NTA_DAMAGE_NONE;
}
return NTA_DAMAGE_PHYSICAL;
}
function NTA_GetResistance (enemy, type)
{
switch (type)
{
case NTA_DAMAGE_PHYSICAL:
enemy.GetStat return (36);
case NTA_DAMAGE_MAGIC:
enemy.GetStat return (37);
case NTA_DAMAGE_FIRE:
enemy.GetStat return (39);
case NTA_DAMAGE_LIGHTNING:
enemy.GetStat return (41);
case NTA_DAMAGE_COLD:
enemy.GetStat return (43);
case NTA_DAMAGE_POISON:
enemy.GetStat return (45);
}
return 0;
}
NTA_DetectAttackPattern function ()
{
switch (me.classid)
{
case NTC_CHAR_CLASS_AMAZON:
return NTA_AmazonAttackPatternInt ();
case NTC_CHAR_CLASS_SORCERESS:
return NTA_SorceressAttackPatternInt ();
case NTC_CHAR_CLASS_NECROMANCER:
return NTA_NecromancerAttackPatternInt ();
case NTC_CHAR_CLASS_PALADIN:
return NTA_PaladinAttackPatternInt ();
case NTC_CHAR_CLASS_BARBARIAN:
return NTA_BarbarianAttackPatternInt ();
case NTC_CHAR_CLASS_DRUID:
return NTA_DruidAttackPatternInt ();
case NTC_CHAR_CLASS_ASSASSIN:
return NTA_AssassinAttackPatternInt ();
}
return false;
}
/ / Return value: 0 = Unrecoverable process, 1 = Unavailable attack, 2 = Onetime fail, 3 = Success
NTA_Attack function (target, first order)
{
switch (me.classid)
{
case NTC_CHAR_CLASS_AMAZON:
NTA_AmazonAttackInt return (target, first order);
case NTC_CHAR_CLASS_SORCERESS:
NTA_SorceressAttackInt return (target, first order);
case NTC_CHAR_CLASS_NECROMANCER:
NTA_NecromancerAttackInt return (target, first order);
case NTC_CHAR_CLASS_PALADIN:
NTA_PaladinAttackInt return (target, first order);
case NTC_CHAR_CLASS_BARBARIAN:
NTA_BarbarianAttackInt return (target, first order);
case NTC_CHAR_CLASS_DRUID:
NTA_DruidAttackInt return (target, first order);
case NTC_CHAR_CLASS_ASSASSIN:
NTA_AssassinAttackInt return (target, first order);
}
return 0;
}
/ / Internal function
NTA_AmazonAttackPatternInt function ()
{
return false;
}
NTA_AmazonAttackInt function (target, first order)
{
return 1;
}
function NTA_AmazonCastSkillInt (index, target)
{
return false;
}
NTA_SorceressAttackPatternInt function ()
{
var _maxindex, _maxskill;
var _avgskilllevel = new Array ();
_avgskilllevel [0] = parseInt ((me.GetSkill (59, false) + me.GetSkill (39, false) + me.GetSkill (45, false) + me.GetSkill (55, false)) / 4);
_avgskilllevel [1] = parseInt ((me.GetSkill (53, false) + me.GetSkill (38, false) + me.GetSkill (48, false) + me.GetSkill (49, false)) / 4);
_avgskilllevel [2] = parseInt ((me.GetSkill (47, false) + me.GetSkill (36, false) + me.GetSkill (56, false) + me.GetSkill (64, false)) / 4);
_avgskilllevel [3] = parseInt ((me.GetSkill (47, false) + me.GetSkill (36, false) + me.GetSkill (56, false)) / 3);
_maxindex = -1;
_maxskill = 0;
for (var i = 0; i <_avgskilllevel.length; i + +)
{
if (_avgskilllevel [i]> _maxskill)
{
_maxindex = i;
_maxskill = _avgskilllevel [i];
}
}
switch (_maxindex)
{
case 0: / / Blizzard + Glacial Spike
NTConfig_AttackSkill [1] = 59;
NTConfig_AttackSkill [2] = 55;
NTConfig_AttackSkill [3] = 59;
NTConfig_AttackSkill [4] = 55;
break;
case 1: / / Chain Lightning + Lightning
NTConfig_AttackSkill [1] = 49;
NTConfig_AttackSkill [3] = 53;
break;
case 2: / / Fireball + Frozen Orb
NTConfig_AttackSkill [0] = 64;
NTConfig_AttackSkill [1] = 47;
NTConfig_AttackSkill [3] = 47;
NTConfig_AttackSkill [5] = 64;
NTConfig_AttackSkill [6] = 55;
break;
case 3: / / Fireball Meteor +
NTConfig_AttackSkill [1] = 56;
NTConfig_AttackSkill [2] = 47;
NTConfig_AttackSkill [3] = 56;
NTConfig_AttackSkill [4] = 47;
break;
}
return (NTConfig_AttackSkill [1] && NTConfig_AttackSkill [3]);
}
NTA_SorceressAttackInt function (target, first order)
{
var _primaryindex;
if (NTTMGR_CheckCurse (NTConfig_CheckSelfSafe & 0x10, NTConfig_CheckMercSafe & 0x10))
{
if (! NTTMGR_VisitTown ())
return 0;
}
if (first order && NTConfig_AttackSkill [0]> 0 && NTA_GetResistance (target, _NTA_SkillDamage [0]) <100 && me.GetSkillStatus (NTConfig_AttackSkill [0])! = 8)
{
if (GetDistance (me, target)> _NTA_SkillRange [0] | |! Check Collision (me, target, 4))
{
var = _pos me.GetOptimalAttackPos (target.areaid, target.x, target.y, _NTA_SkillRange [0], 4);
if (_pos)
NTM_MoveTo (target.areaid, _pos [0], _pos [1], 0);
}
if (! NTC_CastSkill (NTConfig_AttackSkill [0], _NTA_SkillHand [0], target))
return 2;
return 3;
}
if (NTA_IsActBoss (target.classid) && NTConfig_CastStatic <100 && parseInt (target.hp * 100/target.hpmax)> NTConfig_CastStatic NTA_GetResistance && (target, NTA_DAMAGE_LIGHTNING) <= 80)
{
var = _staticlevel NTC_GetSkillLevel (42);
if (_staticlevel> 0)
{
var _staticrange;
var _castx, _casty;
_staticrange = Math.floor ((5 + _staticlevel-1) * 2/3);
if (GetDistance (me, target)> _staticrange | |! Check Collision (me, target, 6))
{
var = _pos me.GetOptimalAttackPos (target.areaid, target.x, target.y, _staticrange, 6);
if (_pos)
NTM_MoveTo (target.areaid, _pos [0], _pos [1], 0);
}
if (target.x <me.x)
_castx me.x = - 1;
else if (target.x> me.x)
_castx me.x = + 1;
else
_castx = me.x;
if (target.y <me.y)
_casty me.y = - 1;
else if (target.y> me.y)
_casty me.y = + 1;
else
_casty = me.y;
if (! Check Collision (target.areaid, _castx, _casty, 1))
{
_castx = me.x;
_casty = me.y;
}
if (! NTC_CastSkill (42, NTC_HAND_RIGHT, _castx, _casty))
return 2;
return 3;
}
}
_primaryindex = (target.spectype & 0x0A)? 1: 3;
if (NTA_GetResistance (target, _NTA_SkillDamage [_primaryindex]) <= 90)
{
if (! NTA_SorceressCastSkillInt (_primaryindex, target))
return 2;
return 3;
}
if (NTConfig_AttackSkill [5]> 0 && NTA_GetResistance (target, _NTA_SkillDamage [5]) <= 80)
{
if (! NTA_SorceressCastSkillInt (5, target))
return 2;
return 3;
}
if (NTA_GetResistance (target, _NTA_SkillDamage [_primaryindex]) <100 | | (_primaryindex == 1 && NTC_GetMerc ()))
{
if (! NTA_SorceressCastSkillInt (_primaryindex, target))
return 2;
return 3;
}
return 1;
}
function NTA_SorceressCastSkillInt (index, target)
{
if (me.GetSkillStatus (NTConfig_AttackSkill [index])! = 8)
{
if (GetDistance (me, target)> _NTA_SkillRange [index] | |! Check Collision (me, target, 4))
{
var = _pos me.GetOptimalAttackPos (target.areaid, target.x, target.y, _NTA_SkillRange [index], 4);
if (_pos)
NTM_MoveTo (target.areaid, _pos [0], _pos [1], 0);
}
return NTC_CastSkill (NTConfig_AttackSkill [index], _NTA_SkillHand [index], target);
}
if (NTConfig_AttackSkill [index +1]> 0)
{
if (NTConfig_AttackSkill [7]> 0 && (NTA_GetResistance (target, _NTA_SkillDamage [index +1]) <= 90 | | NTA_GetResistance (target, _NTA_SkillDamage [7]) <= 90))
{
if (NTA_GetResistance (target, _NTA_SkillDamage [index +1]) <= 90)
{
if (GetDistance (me, target)> _NTA_SkillRange [index +1] | |! Check Collision (me, target, 4))
{
var = _pos me.GetOptimalAttackPos (target.areaid, target.x, target.y, _NTA_SkillRange [index +1], 4);
if (_pos)
NTM_MoveTo (target.areaid, _pos [0], _pos [1], 0);
}
return NTC_CastSkill (NTConfig_AttackSkill [index +1], _NTA_SkillHand [index +1], target);
}
else
{
if (GetDistance (me, target)> _NTA_SkillRange [7] | |! Check Collision (me, target, 4))
{
var = _pos me.GetOptimalAttackPos (target.areaid, target.x, target.y, _NTA_SkillRange [7], 4);
if (_pos)
NTM_MoveTo (target.areaid, _pos [0], _pos [1], 0);
}
return NTC_CastSkill (NTConfig_AttackSkill [7], _NTA_SkillHand [7], target);
}
}
else
{
if (GetDistance (me, target)> _NTA_SkillRange [index +1] | |! Check Collision (me, target, 4))
{
var = _pos me.GetOptimalAttackPos (target.areaid, target.x, target.y, _NTA_SkillRange [index +1], 4);
if (_pos)
NTM_MoveTo (target.areaid, _pos [0], _pos [1], 0);
}
return NTC_CastSkill (NTConfig_AttackSkill [index +1], _NTA_SkillHand [index +1], target);
}
}
for (var i = 0; i <25; i + +)
{
NTC_Delay (NTC_DELAY_FRAME);
if (me.GetSkillStatus (NTConfig_AttackSkill [index])! = 8)
break;
}
return false;
}
NTA_NecromancerAttackPatternInt function ()
{
return false;
}
NTA_NecromancerAttackInt function (target, first order)
{
return 1;
}
function NTA_NecromancerCastSkillInt (index, target)
{
return false;
}
NTA_PaladinAttackPatternInt function ()
{
var _maxindex, _maxskill;
var _avgskilllevel = new Array ();
_avgskilllevel [0] = parseInt ((me.GetSkill (112, false) + me.GetSkill (108, false) + me.GetSkill (115, false)) / 3);
_avgskilllevel [1] = parseInt ((me.GetSkill (106, false) + me.GetSkill (96, false)) / 2);
_avgskilllevel [2] = parseInt ((me.GetSkill (121, false) + me.GetSkill (101, false) + me.GetSkill (118, false)) / 3);
_maxindex = -1;
_maxskill = 0;
for (var i = 0; i <_avgskilllevel.length; i + +)
{
if (_avgskilllevel [i]> _maxskill)
{
_maxindex = i;
_maxskill = _avgskilllevel [i];
}
}
switch (_maxindex)
{
case 0: / / Blessed Hammer
NTConfig_AttackSkill [1] = 112;
NTConfig_AttackSkill [2] = 113;
NTConfig_AttackSkill [3] = 112;
NTConfig_AttackSkill [4] = 113;
break;
case 1: / / Zeal
NTConfig_AttackSkill [1] = 106;
NTConfig_AttackSkill [2] = 122;
NTConfig_AttackSkill [3] = 106;
NTConfig_AttackSkill [4] = 122;
break;
case 2: / / Fist of the Heavens
NTConfig_AttackSkill [1] = 121;
NTConfig_AttackSkill [2] = 123;
NTConfig_AttackSkill [3] = 121;
NTConfig_AttackSkill [4] = 123;
break;
}
return (NTConfig_AttackSkill [1] && NTConfig_AttackSkill [3]);
}
NTA_PaladinAttackInt function (target, first order)
{
var _primaryindex;
if (NTTMGR_CheckCurse (NTConfig_CheckSelfSafe & 0x10, NTConfig_CheckMercSafe & 0x10))
{
if (! NTTMGR_VisitTown ())
return 0;
}
if (first order && NTConfig_AttackSkill [0]> 0 && NTA_GetResistance (target, _NTA_SkillDamage [0]) <100)
{
if (GetDistance (me, target)> _NTA_SkillRange [0] | |! Check Collision (me, target, 4))
{
var = _pos me.GetOptimalAttackPos (target.areaid, target.x, target.y, _NTA_SkillRange [0], 4);
if (_pos)
NTM_MoveTo (target.areaid, _pos [0], _pos [1], 0);
}
if (! NTC_CastSkill (NTConfig_AttackSkill [0], _NTA_SkillHand [0], target))
return 2;
return 3;
}
_primaryindex = (target.spectype & 0x0A)? 1: 3;
if (NTA_GetResistance (target, _NTA_SkillDamage [_primaryindex]) <100)
{
if (_NTA_SkillRange [_primaryindex] <4 &&! Check Collision (target.areaid, target.x, target.y, 1))
return 1;
if (! NTA_PaladinCastSkillInt (_primaryindex, target))
return 2;
return 3;
}
if (NTConfig_AttackSkill [5]> 0 && NTA_GetResistance (target, _NTA_SkillDamage [5]) <100)
{
if (_NTA_SkillRange [5] <4 &&! Check Collision (target.areaid, target.x, target.y, 1))
return 1;
if (! NTA_PaladinCastSkillInt (5, target))
return 2;
return 3;
}
return 1;
}
function NTA_PaladinCastSkillInt (index, target)
{
if (NTConfig_AttackSkill [index] == 112)
{
if (me.x-target.x <1 | | me.x-target.x> 2 | | me.y-target.y <1 | | me.y-target.y> 2)
{
if (check Collision (target.areaid, target.x +2, target.y +2, 1))
NTM_MoveTo (target.areaid, target.x +2 target.y +2, 0);
else if (me.x-target.x <-4 | | me.x-target.x> 2 | | me.y-target.y <0 | | me.y-target.y> 2)
NTM_MoveTo (target.areaid, target.x-4 target.y, 0);
}
}
else
{
if (GetDistance (me, target)> _NTA_SkillRange [index] | |! Check Collision (me, target, 4))
{
var = _pos me.GetOptimalAttackPos (target.areaid, target.x, target.y, _NTA_SkillRange [index], 4);
if (_pos)
NTM_MoveTo (target.areaid, _pos [0], _pos [1], 0);
}
}
if (NTConfig_AttackSkill [index +1]> 0)
NTC_PutSkill (NTConfig_AttackSkill [index +1], NTC_HAND_RIGHT);
return NTC_CastSkill (NTConfig_AttackSkill [index], _NTA_SkillHand [index], target);
}
NTA_BarbarianAttackPatternInt function ()
{
var _maxindex, _maxskill;
var _avgskilllevel = new Array ();
_avgskilllevel [0] = me.GetSkill (151, false);
_maxindex = -1;
_maxskill = 0;
for (var i = 0; i <_avgskilllevel.length; i + +)
{
if (_avgskilllevel [i]> _maxskill)
{
_maxindex = i;
_maxskill = _avgskilllevel [i];
}
}
switch (_maxindex)
{
case 0: / / Whirlwind
NTConfig_AttackSkill [1] = 151;
NTConfig_AttackSkill [3] = 151;
NTConfig_AttackSkill [5] = 152;
break;
}
return (NTConfig_AttackSkill [1] && NTConfig_AttackSkill [3]);
}
NTA_BarbarianAttackInt function (target, first order)
{
var _primaryindex;
if (NTTMGR_CheckCurse (NTConfig_CheckSelfSafe & 0x10, NTConfig_CheckMercSafe & 0x10))
{
if (! NTTMGR_VisitTown ())
return 0;
}
if (first order && NTConfig_AttackSkill [0]> 0 && NTA_GetResistance (target, _NTA_SkillDamage [0]) <100)
{
if (GetDistance (me, target)> _NTA_SkillRange [0] | |! Check Collision (me, target, 4))
{
var = _pos me.GetOptimalAttackPos (target.areaid, target.x, target.y, _NTA_SkillRange [0], 4);
if (_pos)
NTM_MoveTo (target.areaid, _pos [0], _pos [1], 0);
}
if (! NTC_CastSkill (NTConfig_AttackSkill [0], _NTA_SkillHand [0], target))
return 2;
return 3;
}
_primaryindex = (target.spectype & 0x0A)? 1: 3;
if (NTA_GetResistance (target, _NTA_SkillDamage [_primaryindex]) <100)
{
if ((_NTA_SkillRange [_primaryindex] <4 | |! NTConfig_AttackSkill [_primaryindex] == 151) && Check Collision (target.areaid, target.x, target.y, 1))
return 1;
if (! NTA_BarbarianCastSkillInt (_primaryindex, target))
return 2;
return 3;
}
if (NTConfig_AttackSkill [5]> 0 && NTA_GetResistance (target, _NTA_SkillDamage [5]) <100)
{
if ((_NTA_SkillRange [5] <4 | |! NTConfig_AttackSkill [5] == 151) && Check Collision (target.areaid, target.x, target.y, 1))
return 1;
if (! NTA_BarbarianCastSkillInt (5, target))
return 2;
return 3;
}
return 1;
}
function NTA_BarbarianCastSkillInt (index, target)
{
if (NTConfig_AttackSkill [index] == 151)
{
var _castx, _casty;
if (GetDistance (me, target)> _NTA_SkillRange [index] | |! Check Collision (me, target, 5))
{
var = _pos me.GetOptimalAttackPos (target.areaid, target.x, target.y, _NTA_SkillRange [index], 5);
if (_pos)
NTM_MoveTo (target.areaid, _pos [0], _pos [1], 0);
}
_castx target.x => me.x? target.x +3: target.x-3;
_casty target.y => me.y? target.y +3: target.y-3;
return NTC_CastSkill (NTConfig_AttackSkill [index], _NTA_SkillHand [index], _castx, _casty);
}
if (GetDistance (me, target)> _NTA_SkillRange [index] | |! Check Collision (me, target, 4))
{
var = _pos me.GetOptimalAttackPos (target.areaid, target.x, target.y, _NTA_SkillRange [index], 4);
if (_pos)
NTM_MoveTo (target.areaid, _pos [0], _pos [1], 0);
}
return NTC_CastSkill (NTConfig_AttackSkill [index], _NTA_SkillHand [index], target);
}
NTA_DruidAttackPatternInt function ()
{
return false;
}
NTA_DruidAttackInt function (target, first order)
{
return 1;
}
function NTA_DruidCastSkillInt (index, target)
{
return false;
}
NTA_AssassinAttackPatternInt function ()
{
return false;
}
NTA_AssassinAttackInt function (target, first order)
{
return 1;
}
function NTA_AssassinCastSkillInt (index, target)
{
return false;
}
function NTA_IsActBoss (classid)
{
switch (classid)
{
case 156: / / Andariel
case 211: / / Duriel
case 242: / / Mephisto
case 243: / / Diablo
case 544: / / Baal
return true;
}
return false;
}
function NTA_FindItem (range)
{
var _corpse;
var _orgx;
var _orgy;
var _startTick;
var _reposition = false;
if (NTC_GetSkillLevel (131) <1)
return false;
if (arguments.length <1 | |! range)
range = 25;
_corpse = NTC_FindUnit (NTC_UNIT_MONSTER);
_orgx = me.x;
_orgy = me.y;
NTC_PingDelay (50);
NTC_SwapWeapons (2);
if (_corpse)
{
do
{
if (GetDistance (_orgx, _orgy, _corpse.x, _corpse.y) <= range && (_corpse.hp <= 0 | | _corpse.mode == 0 | | _corpse.mode == 12) && _corpse.GetState (118 ) == 0 && NTA_IsLootable (_corpse.classid))
{
if (GetDistance (me.x, me.y, _corpse.x, _corpse.y)> = 8)
{
if (! NTM_MoveTo (me.areaid, _corpse.x, _corpse.y))
continue;
}
_startTick = GetTickCount ();
while (_corpse.GetState (118) = 0x400000 && (_corpse.hp <= 0 |! | _corpse.mode == 0 | | _corpse.mode == 12) && _corpse.IsAttackable (!))
{
NTC_CastSkill (131 NTC_HAND_RIGHT, _corpse);
NTC_PingDelay (50);
if (GetTickCount ()> = _startTick + 1000 &&! _reposition) / / repositioning after 1sec
{
_reposition = true;
if (! NTM_MoveTo (me.areaid, _corpse.x +1, _corpse.y +1))
break;
}
if (GetTickCount ()> = _startTick + 2500) / / skipping monster after 2.5sec
{
var file handle = FileOpen ("FailedtoLoot.txt", 2);
var date string = new Date () toLocaleFormat ("% a% m /% d /% y% H:% M:% S").;
if (filehandle)
{
filehandle.WriteLine ("[" + date string + "] Could not loot:" + _corpse.name + "[" + _corpse.classid + "] (Location:" + me.areaid + ")");
filehandle.Close ();
}
Print ("YC; Could not loot:" + _corpse.name + "[" + _corpse.classid + "] (Location:" + me.areaid + ")");
break;
}
}
}
} While (_corpse.GetNext ());
NTC_PingDelay (50);
NTC_SwapWeapons (0);
NTC_PingDelay (50);
NTSI_PickItems ();
return true;
}
return false;
}
function NTA_IsLootable (classid)
{
switch (classid)
{
case 179: / / Cow
case 156: / / Andariel
case 180: / / Sand Maggot Young
case 181: / / Rock Worm Young
case 182: / / Devourer Young
case 183: / / Giant Lamprey Young
case 184: / / World Killer Young
case 190: / / Sand Maggot Egg
case 191: / / Rock Worm Egg
case 192: / / Devourer Egg
case 193: / / Giant Lamprey Egg
case 194: / / World Killer Egg
case 206: / / Fould Crow's Nest
case 207: / / Blood Hawk Nest
case 208: / / Black Vulture nest
case 209: / / Cloud Stalker Nest
case 221: / / Duriel
case 227: / / Maggot
case 228: / / Mummy generator
case 234: / / Flying Scimitar
case 242: / / Mephisto
case 243: / / Diablo
case 250: / / Summoner
case 258: / / Water Watcher Limb
case 259: / / River Stalker Limb
case 260: / / Sygain Watcher Limb
case 261: / / Water Watcher Head
case 262: / / River Stalker Head
case 263: / / Sygain Watcher Head
case 267: / / Blood Raven
case 269: / / An evil force
case 270: / / Rogue Scout (== Merc)
case 273: / / Gargoyle Trap
case 289: / / Clay Golem
case 290: / / Blood Golem
case 291: / / Iron Golem
case 292: / / Fire Golem
case 301: / / Flesh Beast
case 302: / / Stygian Dog
case 303: / / Grotesque Wyrm
case 326: / / A Trap
case 327: / / A Trap
case 328: / / A Trap
case 329: / / A Trap
case 330: / / A Trap
case 334: / / Sucker Nest
case 335: / / Fleeder Nest
case 336: / / Blood Hook Nest
case 337: / / Blood Wing Nest
case 338: / / Act 2 guard (== Merc)
case 348: / / Turret
case 349: / / Turret
case 350: / / Turret
case 351: / / Hydra
case 352: / / Hydra
case 353: / / Hydra
case 354: / / A Trap
case 356: / / Dopplezon
case 357: / / Valkyrie
case 359: / / Iron Wolf (== Merc)
case 366: / / Compelling Orb
case 369: / / A Trap
case 371: / / Lightning Spire
case 372: / / Fire Tower
case 403: / / Traped Soul
case 404: / / Traped Soul
case 406: / / Izual
/ / ----------------
case 410: / / Wake Of Destruction
case 411: / / Charged Bolt Sentry
case 412: / / Lightning Sentry
case 413: / / Blade Creeper
case 414: / / Invisible Pet
case 415: / / Inferno Sentry
case 416: / / Death Sentry
case 417: / / Shadow Warrior
case 418: / / Shadow Master
case 419: / / Druid Hawk
case 420: / / Druid Spirit Wolf
case 421: / / Druid Fenris
case 422: / / Spirit of Barbs
case 423: / / Heart Of Wolverine
case 424: / / Oak Sage
case 425: / / Druid Plague Poppy
case 426: / / Druid Cycle of Life
case 427: / / Vine Creature
case 428: / / Druid Bear
case 429: / / Eagle
case 430: / / Wolf
case 431: / / Bear
case 432: / / Barricaded Door
case 433: / / Barricaded Door
case 434: / / Prison Door
case 435: / / Barricaded Door
case 461: / / Fanatic Minion
case 462: / / Berserk Slayer
case 463: / / Consumed Fire Boar
case 464: / / Consumed Ice Boar
case 465: / / Frenzied Hell Spawn
case 466: / / Frenzied Hell Spawn
case 467: / / Insane Hell Spawn
case 468: / / Insane Ice Spawn
case 497: / / Catapult
case 498: / / Catapult
case 499: / / Catapult
case 500: / / Catapult
case 501: / / Frozen Horror 1
case 502: / / Frozen Horror 2
case 503: / / Frozen Horror 3
case 504: / / Frozen Horror 4
case 505: / / Frozen Horror 5
case 516: / / Catapult
case 517: / / Catapult
case 518: / / Catapult
case 519: / / Catapult
case 522: / / Barbarian Fighter
case 523: / / Barbarian Fighter
case 524: / / Barricade Wall Right
case 525: / / Left Wall Barricade
case 526: / / Nihlatak
case 528: / / Evil Hat
case 535: / / Barbarian Fighter
case 536: / / Barbarian Fighter
case 537: / / Ancient Statue 1
case 538: / / Ancient Statue 2
case 539: / / Ancient Statue 3
case 540: / / Ancient Barbarian 1
case 541: / / Ancient Barbarian 2
case 542: / / Ancient Barbarian 3
case 543: / / Baal Throne
case 544: / / Baal Crab
case 545: / / Baal Taunt
case 551: / / Pain Worm
case 552: / / Pain Worm
case 553: / / Pain Worm
case 554: / / Pain Worm
case 555: / / Pain Worm
case 556: / / Bunny
case 559: / / Baal Crab to Stairs
case 560: / / Hireling
case 561: / / Hireling
case 562: / / Baal Tentacle
case 563: / / Baal Tentacle
case 564: / / Baal Tentacle
case 565: / / Baal Tentacle
case 566: / / Baal Tentacle
case 567: / / Injured Barbarian
case 568: / / Injured Barbarian
case 569: / / Injured Barbarian
case 570: / / Baal Crab Clone
case 571: / / Baal's Minions
case 572: / / Baal Minionse
case 573: / / Baal's Minions
case 574: / / World Stone Effect
return false;
break;
default:
return true;
break;
}
}
/ *
NTA_OpenChests function ()
{
var _orgx;
var _orgy;
var _chest;
if (! NTA_AreaCheckChests (me.areaid))
return false;
_orgx = me.x;
_orgy = me.y;
_chest = NTC_FindUnit (NTC_UNIT_OBJECT);
if (_chest)
{
do
{
if (_chest.mode == 0 && GetDistance (_orgx, _orgy, _chest.x, _chest.y) <20 && NTA_IsLootableChest (_chest.classid) &&! (_chest.classid == 371 && _chest.areaid == 25) && _chest.name.toLowerCase ()! = "an evil force")
{
NTC_PingDelay (100);
/ / Print ("ÿc2Opening:" + _chest.name + "[" + _chest.classid + "]");
if (! NTC_OpenChest (_chest))
{
Print ("ÿc1Could not open: Object (" + _chest.x + "|" + _chest.y + "):" + + _chest.name "[ClassID:" + _chest.classid + "mode:" + _chest. mode + "]");
var file handle = FileOpen ("FailedToOpenChest.txt", 2);
var date string = new Date () toLocaleFormat ("% a% m /% d /% y% H:% M:% S").;
if (filehandle)
{
filehandle.WriteLine ("[" + date string + "] Failed to open" + _chest.name + "[" + _chest.classid + "] ... Fashion | Area:" + _chest.mode + "|" + me. areaid);
filehandle.Close ();
}
}
}
} While (_chest.GetNext ());
NTSI_PickItems ();
return true;
}
return false;
}
function NTA_IsLootableChest (classid)
{
switch (classid)
{
case 1: / / Casket
case 3: / / Casket
case 4: / / Large Urn
case 5: / / Chest
case 6: / / Chest
case 7: / / barrel
case 8:
case 9: / / Urn
case 28: / / Undefiled Grave
case 46:
case 50:
case 51: / / Casket
case 52: / / Urn
case 53: / / Casket
case 54: / / Rogue Dead
case 55: / / Rogue Dead
case 56: / / Rogue Dead
case 57: / / Rogue Dead
case 58: / / Rogue Dead
case 79: / / Casket
case 84:
case 85:
case 87: / / Chest
case 88: / / Chest
case 89:
case 94: / / Large Urn
case 95: / / Large Urn
case 96:
case 104:
case 105: / / Armor Stand
case 106: / / Weapon Rack
case 107: / / Weapon Rack
case 109:
case 111:
case 113:
case 115:
case 118:
case 120:
case 139: / / Chest
case 140: / / Chest
case 141: / / Chest
case 141:
case 142: / / Jug
case 143: / / Jug
case 144: / / Chest
case 146: / / Chest
case 147: / / Chest
case 148: / / Chest
case 154: / / Corpse
case 155: / / Hidden Stash
case 158:
case 164:
case 166:
case 167:
case 168:
case 170:
case 171: / / Skeleton
case 173:
case 174: / / Loose rock
case 175: / / Loose Boulder
case 176:
case 177:
case 178: / / Guard Corpse
case 181: / / Chest
case 182:
case 183: / / Chest
case 185: / / stash
case 186: / / stash
case 198:
case 203: / / stash
case 204: / / stash
case 205: / / stash
case 208: / / Basket
case 209: / / Basket
case 223:
case 224:
case 225: / / Skullpile
case 239: / / Body
case 240: / / Chest
case 241: / / Chest
case 242: / / Chest
case 243:
case 244: / / Rat's Nest
case 247: / / Bed
case 266: / / Goo Pile
case 270: / / Corpse
case 271: / / Corpse
case 329: / / Chest
case 330: / / Chest
case 331:
case 332: / / Chest
case 333:
case 334:
case 335:
case 336:
case 360:
case 362:
case 363:
case 365:
case 371:
case 372:
case 389:
case 390:
case 391:
case 397: / / (Super) Chest
case 405: / / (Super) Chest
case 413:
case 416:
case 418: / / barrel
case 419: / / barrel
case 420: / / Wooden Chest
case 424: / / Burial Chest
case 425:
case 430: / / Chest
case 431:
case 432:
case 433:
case 443: / / Jar
case 444: / / Jar
case 445: / / Jar
case 455:
case 463:
/ / Case 466: / / Evil Urn
case 467:
case 468:
case 469:
case 470:
case 471:
case 477: / / Dead Barbarian
case 501:
case 502:
case 504:
case 505:
case 548:
case 549:
case 550:
case 551:
return true;
break;
default:
return false;
break;
}
}
* /
function NTA_CheckForCloseMonsters (range)
{
if (range <1 | | arguments.length <1)
return false;
var _monstersClose = false;
var = _checkMonster NTC_FindUnit (NTC_UNIT_MONSTER);
if (_checkMonster)
{
do
{
if (_checkMonster.IsAttackable () && GetDistance (me.x, me.y, _checkMonster.x, _checkMonster.y) <range && NTA_IsValidMonster (_checkMonster))
{
/ / Print ("ÿc1Close Monster detected:" + _checkMonster.name);
_monstersClose = true;
break;
}
} While (_checkMonster.GetNext ());
}
return _monstersClose;
}
/ *
function NTA_AreaCheckChests (areaid)
{
var exeptionsArray = new Array ();
exeptionsArray.push (25); / / Tower Cellar Level 5
for (var i = 0; i <exeptionsArray.length; i + +)
{
if (areaid == exeptionsArray [i])
return false;
}
return true;
}
helperbot.ntj below
Code:
/*///////////////////////////////////////////////////////////////
Author: DysfunctionaI @ BlizzHackers, DysfunctionaI @ D2JSP
/////////////////////////////////////////////////////////////////
This file MUST be named NTHelperBotv2.ntj
If you're having a problem, then read the release thread first,
to see if your problem has already been discussed. If it hasn't,
then post your problem there; don't PM me. All command edits go
in NTHCommands.ntj
//////////////////////////////////////////////////////////////////
DON'T EDIT THIS FILE UNLESS YOU KNOW WHAT YOU'RE DOING!
////////////////////////////////////////////////////////////////*/
//Variable Declaration
Include("libs/common/NTCommon.ntl");
NTC_IncludeConfig("NTBot/char_configs");
var _leader = null;
var _leaderhandle = null;
var _leadername = NTH_Leader;
var _verbal = NTH_Verbal;
var _attack = NTH_Attack;
var _trigger = NTH_Trigger;
var _autoskill = NTH_AutoSkill;
var _useteleport = NTH_Teleport;
var _updatedleader = null;
var _target;
var _wp;
var _level = me.GetStat(12);
var _stay = false;
var _stuckx;
var _stucky;
var _stuckcount = 0;
var _autoskillcount = 0;
var _levelcount = 0;
var _getleadercount = 10;
function NTMain()
{
//Initialization
Include("NTBot/tools/NTHCommands.ntj");
NTC_IncludeLibs();
NT_LoadConfig();
NTSI_LoadNIPFiles("NTBot/item_configs");
NTA_Initialize();
RegisterEvent(EVENT_GAMEMSG, NTH_Talk);
NTConfig_PublicMode = false;
me.maxgametime = 0;
//Start Game
if(_autoskill)
{
switch(me.classid)
{
case NTC_CHAR_CLASS_AMAZON:
case NTC_CHAR_CLASS_BARBARIAN:
case NTC_CHAR_CLASS_DRUID:
case NTC_CHAR_CLASS_ASSASSIN:
NTH_Say("AutoSkill is not currently availible for my class. Disabling.");
_autoskill = false;
break;
default:
NTH_AttackSetup();
break;
}
}
while(!NTC_InMyParty(_leadername))
{
NTH_PartyLeader();
Delay(1000);
}
NTH_GetLeaderHandle();
//Bot
while(NTH_InGame(_leadername))
{
if(me.hp < 1 && (me.mode == 17 || me.mode == 0))
NTH_Revive();
if(!_stay && NTC_InMyParty(_leadername))
{
if(_getleadercount++ > 9)
{
_getleadercount = 0;
_updatedleader = NTH_GetLeader();
}
if(_updatedleader != null)
NTH_Follow();
else
{
if(me.areaid != _leaderhandle.areaid)
NTH_ChangeArea();
else
_updatedleader = NTH_GetLeader();
}
}
else
{
NTH_PartyLeader();
if(_attack && !NTC_InTown())
NTH_ClearPosition();
Delay(500);
}
Delay(100)
}
NTC_SendMsgToScript("NTBotGame.ntj", "SCRIPT_END");
return;
}
//GetLeader
function NTH_GetLeader()
{
_target = NTC_FindUnit(NTC_UNIT_PLAYER);
if(_target)
{
do
{
if(_target.name == _leadername)
return _target;
} while(_target.GetNext());
}
return null;
}
//Follow
function NTH_Follow()
{
if(GetDistance(me.x, me.y, _leader.x, _leader.y) > 4)
{
if(_stuckcount > 11)
{
_stuckcount = 0;
NTH_MoveTo(_leaderhandle.areaid, _leader.x, _leader.y, 15);
if(GetDistance(me.x, me.y, _leader.x, _leader.y) > 8)
NTH_ClearPosition(true);
}
_stuckx = me.x;
_stucky = me.y;
ClickMap(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _leader.x, _leader.y);
ClickMap(NTC_CLICK_LUP, NTC_SHIFT_NONE, null);
Delay(100);
if(me.x == _stuckx && me.y == _stucky)
_stuckcount++;
}
else if(!NTC_InTown() && _attack)
{
_stuckcount = 0;
NTH_ClearPosition();
}
else
{
_stuckcount = 0;
Delay(200);
}
}
//ChangeArea
function NTH_ChangeArea()
{
var i;
var _orgcoords;
while(me.areaid == 0 || _leaderhandle.areaid == 0)
Delay(200);
// Walking Into New Area
if(GetDistance(me.x, me.y, _leader.x, _leader.y) < 50)
{
for(i = 0; i < 8; i++)
{
_orgcoords = _leader.x + _leader.y;
Delay(100);
if(_leader.x+_leader.y != _orgcoords)
{
ClickMap(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _leader.x, _leader.y);
ClickMap(NTC_CLICK_LUP, NTC_SHIFT_NONE, null);
Delay(500);
return;
}
}
}
if(!NTH_TakeWaypoint(_leaderhandle.areaid))
{
if(!NTH_TakeStair(_leaderhandle.areaid))
{
if(!NTH_UsePortal("none"))
{
Say("I'm stuck");
Delay(50);
while(!NTH_GetLeader())
{
if(!NTC_InTown() && _attack)
NTH_ClearPosition(true);
Delay(500);
}
}
}
}
if(!NTC_InTown())
NTP_DoPrecast(true);
}
//Talk
function NTH_Talk(msg, type)
{
if(msg.indexOf(_leadername) != -1 && msg.charAt(_leadername.length+8) == _trigger)
{
var _command;
var _variable;
msg = msg.toLowerCase();
msg = msg.substring(_leadername.length+9)
msg = msg.split(" ");
_command = msg[0];
_variable = msg[1];
if(_variable == "")
_variable = undefined;
NTH_Commands(_command, _variable);
return;
}
}
//GetLeaderHandle
function NTH_GetLeaderHandle()
{
while(!_leaderhandle)
{
_target = GetPlayerUnit();
if(_target)
{
while(_target.GetNext())
{
if(_target.name == _leadername)
{
_leaderhandle = _target;
break;
}
}
}
Delay(500);
}
while(!_leader)
{
_leader = NTH_GetLeader();
Delay(100);
}
}
//Revive
function NTH_Revive()
{
var _message = new Array(4);
while(!NTC_InTown())
{
me.Cancel(0);
Delay(1000);
}
NTTM_TownMove("portalspot");
_message[1] = "Lmk when it's safe";
_message[2] = "TP and tell me if it's safe";
_message[3] = "Call me when it's safe";
_message[4] = "Just waiting for a safe TP";
_message[0] = _message[Random(1, 4)];
Say(_message[0]);
Delay(50);
while(!NTH_GetLeader())
Delay(500);
return;
}
//InGame
function NTH_InGame(playerName)
{
_target = GetPlayerUnit();
if(_target)
{
do
{
if(_target.name == playerName)
return true;
} while(_target.GetNext());
}
return false;
}
//Say
function NTH_Say(response)
{
if(_verbal)
{
Say(response);
Delay(50);
}
else
Print(response);
}
//TakeStair
function NTH_TakeStair(areaid)
{
var _unit;
var i;
_unit = NTM_GetStairInt(areaid);
if(!_unit)
return false;
for(i = 0; i < 6; i++)
{
NTM_MoveTo(me.areaid, _unit.x+1, _unit.y, 10);
NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _unit);
Delay(500);
if(me.areaid == areaid)
return true;
}
return false;
}
//UsePortal
function NTH_UsePortal(leader, areaid)
{
var _portal;
var _preareaid = me.areaid;
if(arguments.length < 2)
areaid = 0;
if(me.areaid == 102) // Portal to A4
{
_portal = NTC_FindUnit(NTC_UNIT_OBJECT, 342);
for(var i = 0; i < 10; i++)
{
NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _portal);
Delay(500);
if(me.areaid != _preareaid)
return true;
}
return false;
}
_portal = NTC_FindUnit(NTC_UNIT_OBJECT, GetLocaleString(3226));
if(_portal)
{
if(leader != "none")
{
do
{
if(_portal.mode == 2 && NTC_CheckOwner(_portal, leader) && GetDistance(me, _portal) <= 30)
{
if(areaid != 0)
if(_portal.subareaid != areaid)
return false;
while(me.areaid == _preareaid && _portal)
{
NTM_MoveTo(me.areaid, _portal.x+1, _portal.y, 10);
NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _portal);
Delay(500);
if(me.areaid != _preareaid)
return true;
}
}
} while(_portal.GetNext());
}
else
{
do
{
if(_portal.mode == 2 && GetDistance(me, _portal) <= 30)
{
while(me.areaid == _preareaid && _portal)
{
NTM_MoveTo(me.areaid, _portal.x+1, _portal.y, 10);
NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _portal);
Delay(500);
if(me.areaid != _preareaid)
return true;
}
}
} while(_portal.GetNext());
}
}
return false;
}
//TakeWaypoint
function NTH_TakeWaypoint(areaid)
{
if(me.areaid == areaid)
return true;
switch(areaid)
{
case 1:
case 3:
case 4:
case 5:
case 6:
case 27:
case 29:
case 32:
case 35:
case 40:
case 42:
case 43:
case 44:
case 46:
case 48:
case 52:
case 57:
case 74:
case 75:
case 76:
case 77:
case 78:
case 79:
case 80:
case 81:
case 83:
case 101:
case 103:
case 106:
case 107:
case 109:
case 111:
case 112:
case 113:
case 115:
case 117:
case 118:
case 129:
break;
default:
return false;
}
var _unit = NTM_GetWaypointInt();
if(!_unit)
return false;
if(NTC_InTown())
me.Cancel(1);
for(var i = 0 ; i < 20 ; i++)
{
if(me.areaid == _leaderhandle.areaid)
return true;
if((i % 10) == 0)
{
NTH_MoveTo(_unit.areaid, _unit.x, _unit.y, 10);
NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _unit);
}
Delay(200);
if(GetUIState(0x14))
{
if(me.TakeWaypoint(areaid))
{
Delay(200);
return true;
}
else
{
NTH_Say("I don't have that waypoint!");
while(!NTH_GetLeader())
{
if(!NTC_InTown() && _attack)
NTH_ClearPosition(true);
Delay(500);
}
return true;
}
break;
}
}
return false;
}
//PartyLeader
function NTH_PartyLeader()
{
var _player = GetPlayerUnit();
if(_player)
{
var _mypartyid = _player.partyid;
while(_player.GetNext())
{
if(_player.name == _leadername)
{
if(_player.partyid == 65535 || _player.partyid != _mypartyid)
{
if(_player.partyflag == 2)
{
me.ClickParty(_player, 2);
return;
}
if(_player.partyid == 65535)
{
if(_player.partyflag == 4)
return;
me.ClickParty(_player, 2);
NTC_Delay(NTC_DELAY_FRAME);
if(_player.partyflag == 4 || (_player.partyid != 65535 && _player.partyid == _mypartyid))
return;
}
}
}
}
}
}
//Attack Setup
function NTH_AttackSetup()
{
var i;
var n = 0;
var _skillset = new Array;
var _build = new Array;
_skillset[0] = 0;
switch(me.classid)
{
case NTC_CHAR_CLASS_AMAZON:
return;
case NTC_CHAR_CLASS_SORCERESS:
_skillset[1] = NTC_GetSkillLevel(36); // Fire Bolt
_skillset[2] = NTC_GetSkillLevel(39); // Ice Bolt
_skillset[3] = NTC_GetSkillLevel(38); // Charged Bolt
for(i = 1; i <= 3; i++)
if(_skillset[i] > _skillset[n])
{
_skillset[0] = i;
n = i;
}
if(_skillset[0] == 1)
_build = [47, 36];
else if(_skillset[0] == 2)
_build = [59, 55, 45, 39];
else if(_skillset[0] == 3)
_build = [49, 38];
if(_skillset[0])
{
for(i = 0; i < _build.length; i++)
{
if(NTC_GetSkillLevel(_build[i]))
{
NTConfig_AttackSkill[1] = _build[i];
NTConfig_AttackSkill[3] = _build[i];
break;
}
}
}
else
{
NTConfig_AttackSkill[1] = 0;
NTConfig_AttackSkill[3] = 0;
}
return;
case NTC_CHAR_CLASS_NECROMANCER:
return;
case NTC_CHAR_CLASS_PALADIN:
_skillset[1] = NTC_GetSkillLevel(96); // Sacrifice
_skillset[2] = NTC_GetSkillLevel(112); // Blessed Hammer
for(i = 1; i <= 3; i++)
if(_skillset[i] > _skillset[n])
{
_skillset[0] = i;
n = i;
}
if(_skillset[0] == 1)
_build = [106, 96];
else if(_skillset[0] == 2)
_build = [112];
if(_skillset[0])
{
for(i = 0; i < _build.length; i++)
{
if(NTC_GetSkillLevel(_build[i]))
{
NTConfig_AttackSkill[1] = _build[i];
NTConfig_AttackSkill[3] = _build[i];
break;
}
}
}
else
{
NTConfig_AttackSkill[1] = 0;
NTConfig_AttackSkill[3] = 0;
}
return;
case NTC_CHAR_CLASS_BARBARIAN:
return;
case NTC_CHAR_CLASS_DRUID:
return;
case NTC_CHAR_CLASS_ASSASSIN:
return;
}
}
//ClearPosition
function NTH_ClearPosition(stuck)
{
NTP_DoPrecast(false);
if(_autoskill)
{
if(_autoskillcount++ > 30)
{
_autoskillcount = 0;
NTH_AttackSetup();
}
}
var _orgx, _orgy;
var _spectype = [0x01,0x01,0x0A];
var _skiplist;
var _attackcount = 0;
var _target;
var _distance, _mingid, _mindistance;
var _result;
var range = 20;
if(arguments.length == 1)
range = 3;
else
stuck = false;
if(NTConfig_AttackSkill[1] < 1 || NTConfig_AttackSkill[3] < 1)
return false;
_orgx = me.x;
_orgy = me.y;
for(var i = 0 ; i < _spectype.length ; i++)
{
_skiplist = new Array();
while(_attackcount < (i+1)*100)
{
if(_attackcount > 49)
break;
_mindistance = 100000;
_target = NTC_FindUnit(NTC_UNIT_MONSTER);
if(_target)
{
do
{
if(_skiplist.indexOf(_target.gid) < 0)
{
if(_target.IsAttackable() && (_target.spectype&_spectype[i]))
{
if(GetDistance(_orgx, _orgy, _target.x, _target.y) <= range && NTA_IsValidMonster(_target))
{
_distance = GetDistance(me, _target);
if(_distance < _mindistance)
{
_mingid = _target.gid;
_mindistance = _distance;
}
}
}
else
_skiplist.push(_target.gid);
}
} while(_target.GetNext());
}
if(_mindistance < 100000)
{
_target = NTC_FindUnit(NTC_UNIT_MONSTER, _mingid);
if(_target)
{
_result = NTA_Attack(_target, (_attackcount%30) == 0);
if((!stuck && GetDistance(me.x, me.y, _leader.x, _leader.y) > 20 && !_stay) || !_attack || me.mode == 17 || me.hp < 1)
return;
switch(_result)
{
case 1:
_skiplist.push(_mingid);
break;
case 2:
case 3:
_attackcount++;
break;
default:
return false;
}
}
}
else
break;
}
}
if(_attackcount > 0)
NTH_PickItems();
if(_levelcount++ > 10)
{
_levelcount = 0;
if(me.GetStat(12) > _level)
{
Say("!I feel much stronger now");
Delay(50);
_level = me.GetStat(12);
}
}
return true;
}
//MoveTo
function NTH_MoveTo(areaid, x, y, force)
{
var i, n;
var _teleport;
var _path;
if(x == me.x && y == me.y)
return true;
if(arguments.length < 4)
force = 0;
if(NTC_InTown() || NTC_GetSkillLevel(54) < 1 || !_useteleport)
_teleport = false;
else
_teleport = true;
_path = GetPath(areaid, me.x, me.y, x, y, _teleport);
if(_path)
{
for(i = 0 ; i < _path.length ; i++)
{
for(n = 0 ; n < 2 ; n++)
{
if(_teleport)
{
if(NTM_TeleportTo(_path[i][0]+Random(-n, n), _path[i][1]+Random(-n, n)))
if(NTConfig_UsePotionFInd && me.classid == NTC_CHAR_CLASS_BARBARIAN && _attackcount > 2)
{
if(!NTA_CheckForCloseMonsters(10))
{
//Print("ÿc<No Monsters close - looting");
NTA_FindItem(NTConfig_FindItemRange);
}
}
break;
}
else
{
if(!NTH_WalkTo(_path[i][0], _path[i][1], force))
if(NTConfig_UsePotionFInd && me.classid == NTC_CHAR_CLASS_BARBARIAN && _attackcount > 2)
{
if(!NTA_CheckForCloseMonsters(10))
{
//Print("ÿc<No Monsters close - looting");
NTA_FindItem(NTConfig_FindItemRange);
}
}
return;
break;
}
}
}
}
return true;
}
//WalkTo
function NTH_WalkTo(x, y, force)
{
// force of 10 is just force
// force of 15 is to return to leader
var i;
var _prex1, _prey1;
var _prex2, _prey2;
if(arguments.length < 3)
force = 0;
if(me.runwalk == 0)
me.runwalk = 1;
for(i = 0 ; i < 90 ; i++)
{
if((i % 10) == 0)
{
if((i % 60) == 0)
{
_prex1 = me.x;
_prey1 = me.y;
if((i % 120) == 0)
{
_prex2 = me.x;
_prey2 = me.y;
}
}
if((!_stay && force == 0 && GetDistance(me.x, me.y, _leader.x, _leader.y) > 20) || !_attack || me.mode == 17 || me.hp < 1)
return false;
if(force == 15 && GetDistance(me.x, me.y, _leader.x, _leader.y) < 10)
return false;
ClickMap(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, x, y);
}
NTC_Delay(NTC_DELAY_FRAME);
if(Math.abs(me.x-x) < 2 && Math.abs(me.y-y) < 2)
break;
if((i % 10) == 9)
{
ClickMap(NTC_CLICK_LUP, NTC_SHIFT_NONE, null);
NTC_Delay(NTC_DELAY_FRAME);
if((i % 60) == 59)
{
if(me.x == _prex1 && me.y == _prey1 && !NTC_InTown())
{
NTH_ClearPosition(2);
NTP_DoPrecast(false);
}
if((i % 120) == 119 && me.x == _prex2 && me.y == _prey2)
return true;
}
}
}
ClickMap(NTC_CLICK_LUP, NTC_SHIFT_NONE, null);
NTC_Delay(NTC_DELAY_FRAME);
if(NTConfig_UseFindItem && me.classid == NTC_CHAR_CLASS_BARBARIAN && _attackcount > 2)
{
if(!NTA_CheckForCloseMonsters(10))
{
//Print("ÿc<No Monsters close - looting");
NTA_FindItem(NTConfig_FindItemRange);
}
}
return true;
}
//PickItems
function NTH_PickItems()
{
var i, _mode;
for(i = 0 ; i < 25 ; i++)
{
_mode = me.mode;
if((_mode >= 1 && _mode <= 3) || _mode == 5 || _mode == 6)
break;
NTC_Delay(NTC_DELAY_FRAME);
}
if(i < parseInt(100/NTC_DELAY_FRAME))
NTC_PingDelay(NTConfig_SnagDelay-(i*NTC_DELAY_FRAME));
var i;
var _item;
var _checkeditem, _checkeditems;
var _value;
var _minindex, _mindistance;
_item = NTC_FindUnit(NTC_UNIT_ITEM);
if(!_item)
return;
_checkeditems = new Array();
do
{
if(_item.mode == 3 || _item.mode == 5)
{
if(NTSI_IsIgnoredItemInt(_item.classid))
continue;
if(GetDistance(me, _item) <= NTConfig_SnagRange)
{
_value = NTSI_CheckItem(_item);
if(_value)
_checkeditems.push(new NTSI_ItemInt(_item, _value));
}
}
} while(_item.GetNext());
while(_checkeditems.length > 0)
{
_mindistance = 100000;
for(i = 0 ; i < _checkeditems.length ; i++)
{
_value = GetDistance(me.x, me.y, _checkeditems[i].x, _checkeditems[i].y);
if(_value < _mindistance)
{
_minindex = i;
_mindistance = _value;
}
}
_checkeditem = _checkeditems.splice(_minindex, 1)[0];
_item = NTC_FindUnit(NTC_UNIT_ITEM, _checkeditem.GID);
if(_item)
{
if(!NTSI_IsLimitedItemInt(_item))
{
if(NTT_CheckSpace(_item.xsize, _item.ysize))
{
if(NTH_SnagItem(_item))
{
switch(_checkeditem.ClassID)
{
case 515: // Rejuvenation Potion
case 516: // Full Rejuvenation Potion
Print("Picked up " + GetLocaleString(2209+_checkeditem.ClassID-515));
break;
case 587: // Minor Healing Potion
case 588: // Light Healing Potion
case 589: // Healing Potion
case 590: // Greater Healing Potion
case 591: // Super Healing Potion
case 592: // Minor Mana Potion
case 593: // Light Mana Potion
case 594: // Mana Potion
case 595: // Greater Mana Potion
case 596: // Super Mana Potion
Print("Picked up " + GetLocaleString(2266+_checkeditem.ClassID-587));
break;
default:
Print("Picked up " + NTC_ItemQualityToD2Color[_item.quality] + _item.name.split("\n")[0]);
if(_item.quality < 4 && _checkeditem.Status < 2 && _item.itemtype != 4 && (_item.itemtype < 76 || _item.itemtype > 81))
NTC_SendLogToOOG(NTC_LOG_ITEM, "Kept " + NTC_ItemQualityToMGRColor[_item.quality] + _item.name.split("\n")[0] + ";" + _item.itemdesc);
break;
}
}
}
else
{
NTH_Say("My inventory is full!");
return;
}
}
}
}
}
//SnagItem
function NTH_SnagItem(snagitem)
{
var i;
var _classid;
_classid = snagitem.classid;
for(i = 0 ; i < 40 ; i++)
{
if((i % 10) == 0 && (snagitem.mode == 3 || snagitem.mode == 5))
{
if(GetDistance(me, snagitem) > 3)
NTH_MoveTo(snagitem.areaid, snagitem.x, snagitem.y, 10);
if(NTC_ClearCursor())
NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, snagitem);
}
NTC_Delay(NTC_DELAY_FRAME);
if(_classid == 523)
{
Print("Picked up " + GetLocaleString(2215));
return false;
}
else if(snagitem.mode != 3 && snagitem.mode != 5)
{
var _parent;
NTC_PingDelay(100);
_parent = snagitem.GetParent();
return (_parent && _parent.gid == me.gid);
}
}
return false;
}
|
|
|
 |
Similar Threads
|
[Idea] i hope find one can help me in it
09/08/2012 - SRO Private Server - 10 Replies
hello, after regards,I have an idea and would like it and I want to do it but I can't plan this idea by myself only so i came here to ask for help, my idea is i want when char reach next degree get full set sun +5 ex: when he reach level 52 when he teleport get full set / accessory / weapon sun +10 degree 6 and same thing when reach level 64 etc and max degree will be d9 i hope you understand what i mean, so any one know from where i can do this ? if you won't release this idea for free i can...
|
Bo Barb script für D2NT 3.1
12/11/2010 - Diablo 2 Programming - 9 Replies
Hallo,
könnte einer von den fähigen Jungs hier mir ne barb bo script schreiben?
leider weiss ich vom scripten NUR, das ich da nicht reinbeissen soll xD
Das script sollte für D2NT 3.1 sein und sollte das können:
1. Party nur vom Leader annehmen
2. wenn Leader ein Tp macht(das script soll auslesen wo ich gerade bin) soll der barb kommen und bo geben danach zur stadt zurück und auf neues tp warten
|
D2NT Barb Script
05/12/2010 - Diablo 2 - 19 Replies
Hat einer zufällig ein ww barb oder barb script für d2nt ?? Wäre cool
|
Barb Goldfind script?!
05/04/2010 - Diablo 2 - 1 Replies
Wollte mal fragen ob es ein script gibt ohne oder mit eni gibt das Travi nach gold farmed?
EDIT: Damit meinte ich auch dass das script bei den leichen "schrei" macht um mehr gold zu holen.
|
Anyone have idea how to find range atack ?
11/04/2009 - 12Sky2 Hacks, Bots, Cheats & Exploits - 6 Replies
i don't ask for address but how to do it, because that's as i see completely different story from the speed atack etc ...
|
All times are GMT +1. The time now is 18:03.
|
|