Guest User

Untitled

a guest
Jan 23rd, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 27.74 KB | None | 0 0
  1. //######################################################
  2. //####### Follow-Bot revision 2.0 , 3-30-11 #######
  3. //######################################################
  4. var _ping = 900; // Warns you if your followers ping is above this number (0 to disable)
  5. var _earlybreak = true; //change this to false if you haven't edited NTM_Move.ntl file with my modifications.
  6. var _walk = true; //change this to false if you want teleport-capable bots to teleport to snag items.
  7.  
  8. var _leadername = NTConfig_Leader;
  9. var _attack = false;
  10. var NTConfig_Leader;
  11. var _leadera;
  12. var _act;
  13. var _melee = true;
  14.  
  15. //----- NO EDITS NEEDED BELOW THIS LINE -----//
  16. //Variable Declaration
  17. var _attack = true;
  18. var _party = true;
  19. var _target;
  20. var _leaderpos = null;
  21. var _count = 0;
  22. var _pause = false;
  23. var _snagDelayerCounter = 0;
  24. var _snagDelayer = 70; // How many iterations to wait before performing a pickup command (pickup command adds lag to the bot)
  25. var _lastPortalOwner = null;
  26. var _changeAreaHelper = 0;
  27. var _dontFollow = false;
  28. var _timeToRebuff;
  29. var _needToGotoPortalSpot = true;
  30.  
  31. function UnStickMe() {
  32. //var _backattack = false;
  33. //var _clearposoff = true;
  34. //if (_attack = true){ _backattack = true; }
  35. _pause = false;
  36. _dontFollow = false;
  37. NTM_MoveTo(NTConfig_Leader.areaid, _leaderpos.x, _leaderpos.y, 0, false, _earlybreak, _walk);
  38. //if (_backattack = true){ _attack = true; }
  39. //NTH_Follow();
  40. //NTDS_ClearPosition(0)
  41. return;
  42. }
  43.  
  44. function FollowSay(nString){
  45. if(arguments.length = 0)
  46. return; //return and do nothing if no arguments are provided
  47. if(typeof(nString) != 'string')
  48. return; //return and do nothing if a string isn't provided as input arg
  49. if((typeof(_respondIf) == 'boolean') && ( _respondIf)) //check that _respondVar exists and is set to either true or false
  50. Say(nString);
  51. return;
  52. }
  53.  
  54. function NTMain(){
  55. //Initialization
  56. Include("libs/common/NTCommon.ntl");
  57. NTC_IncludeLibs();
  58. NTC_IncludeConfig("NTBot/char_configs");
  59. NT_LoadConfig();
  60. NTSI_LoadNIPFiles("NTBot/item_configs");
  61. NTA_Initialize();
  62. RegisterEvent(EVENT_GAMEMSG, NTH_Talk);
  63.  
  64. if(typeof(_dontAttack) === 'undefined')
  65. _dontAttack = false;
  66. if(typeof(_dontPickUp) === 'undefined')
  67. _dontPickUp = false;
  68. if(typeof(_buffTimer) === 'undefined')
  69. _buffTimer = 56000;
  70. _timeToRebuff = GetTickCount() - _buffTimer;
  71.  
  72. _target = GetPlayerUnit(); //Find Leader
  73. if(_target){
  74. while(_target.GetNext()){
  75. if(_target.name == NTConfig_Leader){
  76. NTConfig_Leader = _target;
  77. break;
  78. }
  79. }
  80. }
  81. while(!NTC_InMyParty(NTConfig_Leader.name))
  82. {
  83. Print("Delaying for leader to join party..");
  84. Delay(2000);
  85. if(!NTH_InGame(NTConfig_Leader.name))
  86. NTH_ExitGame();
  87. }
  88. if (NTConfig_Leader.areaid <= 0)
  89. {
  90. Print("Waiting to receive leader data..");
  91. FollowSay("Locked-on to " + NTConfig_Leader.name)
  92. while(NTConfig_Leader.areaid <= 0)
  93. {
  94. Delay(1000);
  95. if(!NTH_InGame(NTConfig_Leader.name))
  96. NTH_ExitGame();
  97. }
  98. }
  99. NTTM_CheckAct();
  100. if (NTH_GetAct(me.areaid) != NTH_GetAct(NTConfig_Leader.areaid))
  101. NTH_GotoCorrectTown();
  102.  
  103. var _tickTimer = GetTickCount();
  104. while(1)
  105. {
  106. if( _ping != 0 && ((GetTickCount()-_tickTimer)/1000) > 10 && me.ping > _ping)
  107. {
  108. FollowSay("/w " + NTConfig_Leader.name + " High Ping Warning: " + me.ping);
  109. _tickTimer = GetTickCount();
  110. }
  111. if(NTC_InMyParty(NTConfig_Leader.name) && !_pause)
  112. {
  113. if (me.areaid == NTConfig_Leader.areaid)
  114. {
  115. _changeAreaHelper = 0;
  116. _needToGotoPortalSpot = true;
  117. _dontFollow = false;
  118. }
  119. if(_leaderpos == null)
  120. _leaderpos = NTH_GetLeader();
  121. else if (!_dontFollow || NTConfig_Leader.areaid == me.areaid)
  122. NTH_Follow();
  123.  
  124. if (!_dontPickUp && !NTH_InTown() && (_snagDelayerCounter > _snagDelayer))
  125. {
  126. NTSI_PickItems(_walk);
  127. _snagDelayerCounter=0;
  128. }
  129. else
  130. _snagDelayerCounter++;
  131. if(me.areaid != NTConfig_Leader.areaid && !_pause)
  132. {
  133. if ((_changeAreaHelper == 0) && (_leaderpos != null))
  134. {
  135. _changeAreaHelper = 1;
  136. var _preX = _leaderpos.x;
  137. var _preY = _leaderpos.y;
  138. Delay(200);
  139. if (_preX == _leaderpos.x && _preY == _leaderpos.y)
  140. {
  141. _dontFollow = true;
  142. NTH_ChangeArea();
  143. }
  144. }
  145. else
  146. NTH_ChangeArea();
  147. }
  148. }
  149. if (_dontAttack)
  150. Delay(100);
  151. else if (_pause)
  152. {
  153. if (NTDS_ClearPosition(Math.round(_aggressionRange/2), true))
  154. Delay(100);
  155. }
  156.  
  157. if(!NTH_InGame(NTConfig_Leader.name))
  158. NTH_ExitGame();
  159.  
  160. if(!NTC_InMyParty(NTConfig_Leader.name))
  161. Delay(100);
  162. }
  163. }
  164.  
  165. function NTH_GetLeader()
  166. {
  167. _target = NTC_FindUnit(NTC_UNIT_PLAYER);
  168. if(_target)
  169. {
  170. do
  171. {
  172. //Print("Found target " + _target.name);
  173. if(_target.name.toLowerCase() == NTConfig_Leader.name.toLowerCase())
  174. return _target;
  175.  
  176. } while(_target.GetNext());
  177. }
  178. return null;
  179. }
  180.  
  181.  
  182. function NTH_Follow()
  183. {
  184. if(GetDistance(me.x, me.y, _leaderpos.x, _leaderpos.y) > _leashRange)
  185. {
  186. NTM_MoveTo(NTConfig_Leader.areaid, _leaderpos.x, _leaderpos.y, 0, false, _earlybreak, _walk);
  187. Delay(25);
  188. return;
  189. }
  190. if(!NTH_InTown())
  191. {
  192. if (GetTickCount() - _timeToRebuff > _buffTimer)
  193. {
  194. NTP_DoPrecast(true);
  195. _timeToRebuff = GetTickCount();
  196. }
  197. if (_dontAttack)
  198. Delay(75);
  199. else if (NTDS_ClearPosition(_aggressionRange, true))
  200. Delay(75)
  201. }
  202. else
  203. Delay(75);
  204. }
  205.  
  206. function NTH_ChangeArea()
  207. {
  208. if (me.areaid == NTConfig_Leader.areaid)
  209. {
  210. _needToGotoPortalSpot = true;
  211. return;
  212. }
  213. Delay(100);
  214. if(NTH_InTown())
  215. {
  216. me.Cancel(1); //cancel open wps if any
  217. if (((NTConfig_Leader.areaid == 47) && (me.areaid == 40) && NTM_TakeStair(NTConfig_Leader.areaid)) || //act 2 sewers 1
  218. ((NTConfig_Leader.areaid == 121) && (me.areaid == 109) && TakeAnyaPortal()) || //anya portal
  219. ((NTConfig_Leader.areaid == 39) && (me.areaid == 1) && NTH_TakeCowPortal(18))) //cow portal
  220. {
  221. _needToGotoPortalSpot = true;
  222. return;
  223. }
  224. if (NTH_GetAct(me.areaid) != NTH_GetAct(NTConfig_Leader.areaid))
  225. {
  226. if(NTH_UseWpToLeader())
  227. {
  228. _needToGotoPortalSpot = true;
  229. return;
  230. }
  231. NTH_GotoCorrectTown();
  232. }
  233. if (me.areaid == NTConfig_Leader.areaid)
  234. {
  235. _needToGotoPortalSpot = true;
  236. return;
  237. }
  238. if (_needToGotoPortalSpot)
  239. {
  240. NTTM_TownMove("portalspot");
  241. if((NTH_AttemptPlayerTP(NTConfig_Leader.name)) ||
  242. (_lastPortalOwner != null && NTH_AttemptPlayerTP(_lastPortalOwner)) ||
  243. (NTH_UseWpToLeader()))
  244. {
  245. _needToGotoPortalSpot = true;
  246. return;
  247. }
  248. NTTM_TownMove("portalspot");
  249. }
  250. _needToGotoPortalSpot = false;
  251. if(NTH_AttemptPlayerTP(NTConfig_Leader.name))
  252. {
  253. _needToGotoPortalSpot = true;
  254. return;
  255. }
  256. FollowSay("Dear leader, please make a portal for me.");
  257. Delay(2000);
  258. return;
  259. }
  260. _needToGotoPortalSpot = true;
  261. if(NTH_InTown(NTConfig_Leader))
  262. GotoTown();
  263. if ((NTConfig_Leader.areaid == 132) && (me.areaid == 131) && TakeBaalPortal()) //baal chamber
  264. return;
  265. else if(!NTM_TakeStair(NTConfig_Leader.areaid))
  266. {
  267. //Delay(200);
  268. if (me.areaid == NTConfig_Leader.areaid)
  269. return;
  270. if(!NTM_TakeWaypoint(NTConfig_Leader.areaid))
  271. {
  272. //FollowSay("Can't take WP to reach leader. Heading to town.");
  273. GotoTown();
  274. }
  275. }
  276. }
  277.  
  278. function NTH_AttemptPlayerTP(playername)
  279. {
  280. if (arguments.length < 1)
  281. playername = NTConfig_Leader.name;
  282.  
  283. var _portalname = GetLocaleString(3226);
  284. var _portal = NTC_FindUnit(NTC_UNIT_OBJECT, _portalname);
  285. if(_portal)
  286. {
  287. do
  288. {
  289. Delay(200);
  290. if(_portal.mode == 2 && NTC_CheckOwner(_portal, playername))
  291. {
  292. if (NTConfig_Leader.areaid == (_portal.subareaid-768))
  293. {
  294. _lastPortalOwner = null;
  295. NTM_UsePortal("BluePortal", NTConfig_Leader.areaid, playername);
  296. Delay(200);
  297. return true;
  298. }
  299. }
  300. } while (_portal.GetNext());
  301. }
  302.  
  303. return false;
  304. }
  305.  
  306. function NTH_UseWpToLeader()
  307. {
  308. NTTM_CheckAct();
  309. NTTM_TownMove("waypoint");
  310. if (NTM_TakeWaypoint(NTConfig_Leader.areaid)) //take WP to leader area
  311. {
  312. Delay(500);
  313. return true;
  314. }
  315. Delay(200);
  316. me.Cancel(1);
  317. return false;
  318. }
  319.  
  320. function NTH_GetAct(areaid)
  321. {
  322. if (areaid < 40)
  323. return 1;
  324. if (areaid < 75)
  325. return 2;
  326. if (areaid < 103)
  327. return 3;
  328. if (areaid < 109)
  329. return 4;
  330. return 5;
  331. }
  332.  
  333. function GotoTown()
  334. {
  335. if(NTH_UseWpToTown())
  336. return;
  337. NTH_UseAnyPortal();
  338. if(!NTH_InTown())
  339. {
  340. NTM_MakeTP();
  341. _lastPortalOwner = me.name;
  342. NTM_UsePortal("BluePortal");
  343. if (me.classid == NTC_CHAR_CLASS_PALADIN) //we just switched our aura, remember to put it back when we're out of town
  344. _timeToRebuff = GetTickCount() - _buffTimer;
  345. Delay(500);
  346. }
  347. }
  348.  
  349. function NTH_UseWpToTown()
  350. {
  351. if(me.areaid < 40)
  352. {
  353. if(NTM_TakeWaypoint(1))
  354. {
  355. me.Cancel(1);
  356. return true;
  357. }
  358. }
  359. else if(me.areaid < 75)
  360. {
  361. if(NTM_TakeWaypoint(40))
  362. {
  363. me.Cancel(1);
  364. return true;
  365. }
  366. }
  367. else if(me.areaid < 103)
  368. {
  369. if(NTM_TakeWaypoint(75))
  370. {
  371. me.Cancel(1);
  372. return true;
  373. }
  374. }
  375. else if(me.areaid < 109)
  376. {
  377. if(NTM_TakeWaypoint(103))
  378. {
  379. me.Cancel(1);
  380. return true;
  381. }
  382. }
  383. else
  384. {
  385. if(NTM_TakeWaypoint(109))
  386. {
  387. me.Cancel(1);
  388. return true;
  389. }
  390. }
  391. return false;
  392. }
  393.  
  394. function NTH_GotoCorrectTown()
  395. {
  396. if(NTConfig_Leader.areaid < 40 && me.areaid >= 40)
  397. {
  398. NTTM_TownMove("waypoint");
  399. NTM_TakeWaypoint(1);
  400. me.Cancel(1);
  401. }
  402. else if(NTConfig_Leader.areaid < 75 && me.areaid != 40)
  403. {
  404. NTTM_TownMove("waypoint");
  405. NTM_TakeWaypoint(40);
  406. me.Cancel(1);
  407. }
  408. else if(NTConfig_Leader.areaid < 103 && me.areaid != 75)
  409. {
  410. NTTM_TownMove("waypoint");
  411. NTM_TakeWaypoint(75);
  412. me.Cancel(1);
  413. }
  414. else if(NTConfig_Leader.areaid < 109 && me.areaid != 103)
  415. {
  416. NTTM_TownMove("waypoint");
  417. NTM_TakeWaypoint(103);
  418. me.Cancel(1);
  419. }
  420. else if (me.areaid != 109)
  421. {
  422. NTTM_TownMove("waypoint");
  423. NTM_TakeWaypoint(109);
  424. me.Cancel(1);
  425. }
  426. }
  427.  
  428. function NTH_InTown(player)
  429. {
  430. if(arguments.length < 1)
  431. player = me;
  432.  
  433. if(player.areaid == 1 || player.areaid == 40 || player.areaid == 75 || player.areaid == 103 || player.areaid == 109)
  434. return true;
  435.  
  436. return false;
  437. }
  438.  
  439. function NTH_UsePortal(leader)
  440. {
  441. var _portal = NTC_FindUnit(NTC_UNIT_OBJECT, GetLocaleString(3226));
  442. var _preareaid = me.areaid;
  443. if(_portal)
  444. {
  445. do
  446. {
  447. if(_portal.mode == 2 && NTC_CheckOwner(_portal, leader) && GetDistance(me, _portal) <= 30)
  448. {
  449. while(me.areaid == _preareaid && _portal)
  450. {
  451. NTM_MoveTo(me.areaid, _portal.x+1, _portal.y);
  452.  
  453. NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _portal);
  454.  
  455. Delay(500);
  456.  
  457. if(me.areaid != _preareaid)
  458. return;
  459. }
  460. }
  461. } while(_portal.GetNext());
  462. }
  463. return;
  464. }
  465.  
  466. function NTH_UseAnyPortal()
  467. {
  468. var _portal = NTC_FindUnit(NTC_UNIT_OBJECT, GetLocaleString(3226));
  469. var _preareaid = me.areaid;
  470. do
  471. {
  472. if(_portal != null && _portal.mode == 2 && GetDistance(me, _portal) <= 30)
  473. {
  474. while(me.areaid == _preareaid && _portal)
  475. {
  476. NTM_MoveTo(me.areaid, _portal.x+1, _portal.y);
  477.  
  478. NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _portal);
  479. _lastPortalOwner = _portal.GetParent();
  480.  
  481. Delay(500);
  482.  
  483. if(me.areaid != _preareaid)
  484. return;
  485. }
  486. }
  487. } while(_portal && _portal.GetNext());
  488. return;
  489. }
  490.  
  491. function NTH_InGame(playerName)
  492. {
  493. _target = GetPlayerUnit();
  494. if(_target)
  495. {
  496. do
  497. {
  498. if(_target.name == playerName)
  499. return true;
  500. } while(_target.GetNext());
  501. }
  502. return false;
  503. }
  504.  
  505. function NTH_Talk(msg, type, command)
  506. {
  507. if (arguments.length < 3)
  508. command = 0;
  509. if((msg.indexOf(NTConfig_Leader.name) != -1 && msg.indexOf("-wait") != -1) || command == 1){
  510. _pause = true;
  511. FollowSay("I'll just wait here for a few minutes..");
  512. }
  513. else if((msg.indexOf(NTConfig_Leader.name) != -1 && msg.indexOf("-go") != -1) || command == 2){
  514. // _pause = false;
  515. // _changeAreaHelper = 0;
  516. // _dontFollow = false;
  517. UnStickMe() // Testing this out.....
  518. FollowSay("Lets do this!");
  519. }
  520. else if((msg.indexOf(NTConfig_Leader.name) != -1 && msg.indexOf("-town") != -1) || command == 3)
  521. {
  522. if(!NTH_InTown())
  523. {
  524. GotoTown();
  525. FollowSay("Running some errands in town");
  526. NTTMGR_TownManager();
  527. FollowSay("Ok, I'm ready for battle!");
  528. } else
  529. {
  530. FollowSay("Running some errands in town");
  531. NTTMGR_TownManager();
  532. FollowSay("Ok, I'm ready for battle!");
  533. }
  534. if (me.classid == NTC_CHAR_CLASS_PALADIN) //townmanager switches to vigor, so make sure we switch back.
  535. _timeToRebuff = GetTickCount() - _buffTimer;
  536. }
  537. else if((msg.indexOf(NTConfig_Leader.name) != -1 && msg.indexOf("-res") != -1) || command == 4){
  538. if( me.hp == 0){
  539. FollowSay("Ressurecting now..");
  540. me.Cancel(0);
  541. Delay(100);
  542. NTTM_TownMove("portalspot");
  543. Delay(100);
  544. NTH_UsePortal(NTConfig_Leader.name);
  545. Delay(200);
  546. NTT_GetCorpses();
  547. }
  548. }
  549. else if((msg.indexOf(NTConfig_Leader.name) != -1 && msg.indexOf("-tp") != -1) || command == 5){
  550. var _portalTarget = msg.split(" ")[msg.split(" ").length-1];
  551. if(_portalTarget != "-tp"){
  552. if( _portalTarget == me.name){
  553. FollowSay("TP up for later use");
  554. NTM_MakeTP();
  555. }
  556. }
  557. else{
  558. FollowSay("TP up for later use");
  559. NTM_MakeTP();
  560. }
  561. }
  562. else if((msg.indexOf(NTConfig_Leader.name) != -1 && msg.indexOf("-mytp") != -1) || command == 6){
  563. if(NTH_InTown()){
  564. FollowSay("I'm on my way back " + NTConfig_Leader.name);
  565. NTTM_TownMove("portalspot");
  566. me.Cancel(1); //cancel open wps if any
  567. NTH_UsePortal(NTConfig_Leader.name);
  568. Delay(1600);
  569. }
  570. else{
  571. FollowSay("I'm going to town");
  572. NTH_UsePortal(NTConfig_Leader.name);
  573. Delay(500);
  574. }
  575. }
  576. else if((msg.indexOf(NTConfig_Leader.name) != -1 && msg.indexOf("-taketp") != -1) || command == 7){
  577. var _portalTarget = msg.split(" ")[msg.split(" ").length-1];
  578. if(NTH_InTown()){
  579. FollowSay("Heading back to the fight through " + _portalTarget + "'s TP");
  580. NTTM_TownMove("portalspot");
  581. me.Cancel(1); //cancel open wps if any
  582. NTH_UsePortal(_portalTarget);
  583. Delay(600);
  584. }
  585. else{
  586. FollowSay("Taking TP back to town");
  587. NTM_UseAnyPortal();
  588. Delay(500);
  589. }
  590. }
  591. else if((msg.indexOf(NTConfig_Leader.name) != -1 && msg.indexOf("-grabwp") != -1) || command == 8){
  592. if(!NTDS_GrabWayPoint()){
  593. FollowSay("I can't grab this waypoint!");
  594. Delay(200);
  595. }
  596. else{
  597. FollowSay("I got the WP");
  598. Delay(200);
  599. }
  600. }
  601.  
  602. else if((msg.indexOf(NTConfig_Leader.name) != -1 && msg.indexOf("-exit") != -1) || command == 11)
  603. {
  604. var _exitTarget = msg.split(" ")[msg.split(" ").length-1];
  605.  
  606. if(_exitTarget != "-exit")
  607. {
  608. if( _exitTarget == me.name)
  609. {
  610. FollowSay("Re-Joining Game.");
  611. ExitGame();
  612. }
  613. }
  614. }
  615. else if((msg.indexOf(NTConfig_Leader.name) != -1 && msg.indexOf("-script") != -1) || command == 12){
  616. NTH_ReloadMe()
  617. }
  618. if((msg.indexOf(NTConfig_Leader.name) != -1 && msg.indexOf("-akara") != -1)){
  619. QuestAkara()
  620. FollowSay("Getting Akara Quest..");
  621. }
  622. if((msg.indexOf(NTConfig_Leader.name) != -1 && msg.indexOf("-goeast") != -1)){
  623. QuestGoEast()
  624. }
  625. if((msg.indexOf(NTConfig_Leader.name) != -1 && msg.indexOf("-drog") != -1)){ //use before arcane and Tals tomb
  626. QuestDrog()
  627. FollowSay("Talking to Drognan..");
  628. }
  629. if((msg.indexOf(NTConfig_Leader.name) != -1 && msg.indexOf("-atma") != -1)){ //use before arcane and Tals tomb
  630. QuestAtma()
  631. FollowSay("Talking to Atma..");
  632. }
  633. if((msg.indexOf(NTConfig_Leader.name) != -1 && msg.indexOf("-saileast") != -1)){
  634. QuestSailEast()
  635. }
  636. if((msg.indexOf(NTConfig_Leader.name) != -1 && msg.indexOf("-questact3") != -1)){
  637. QuestBirdTome()
  638. FollowSay("Getting act 3 quests..");
  639. }
  640. if((msg.indexOf(NTConfig_Leader.name) != -1 && msg.indexOf("-meph") != -1)){ // talks to cain for Meph
  641. QuestMeph()
  642. FollowSay("Talking to cain so I can get Meph..");
  643. }
  644. if((msg.indexOf(NTConfig_Leader.name) != -1 && msg.indexOf("-tyrael") != -1)){ // talks to tyrael
  645. QuestTyrael()
  646. FollowSay("Talking to Tyrael..");
  647. }
  648. if((msg.indexOf(NTConfig_Leader.name) != -1 && msg.indexOf("-larzuk") != -1)){ // talks to larzuk
  649. QuestLarzuk()
  650. FollowSay("Talking to Larzuk for socket quest..");
  651. }
  652. if((msg.indexOf(NTConfig_Leader.name) != -1 && msg.indexOf("-malah") != -1)){ // talks to Malah
  653. QuestMalah()
  654. FollowSay("Talking to Malah for resists..");
  655. }
  656. }
  657.  
  658. function isTooFar()
  659. {
  660. if((GetDistance(me.x, me.y, _leaderpos.x, _leaderpos.y) > _maxStrayRange) || (NTH_InTown(NTConfig_Leader)))
  661. return true;
  662.  
  663. return false;
  664. }
  665.  
  666. function NTDS_ClearPosition(range, pickitem, safelevel)
  667. {
  668. var _orgx, _orgy;
  669. var _spectype = [0x01, 0x01];
  670. var _skiplist;
  671. var _attackcount = 0;
  672. var _target;
  673. var _distance, _mingid, _mindistance;
  674. var _result;
  675.  
  676. if(NTConfig_AttackSkill[1] < 0 || NTConfig_AttackSkill[3] < 0)
  677. return false;
  678.  
  679. switch(arguments.length)
  680. {
  681. case 0:
  682. range = 20;
  683. case 1:
  684. pickitem = false;
  685. case 2:
  686. safelevel = 0;
  687. default:
  688. if(NTConfig_CheckSelfSafe < 0x01 && NTConfig_CheckMercSafe < 0x01)
  689. safelevel = 0;
  690. break;
  691. }
  692. _orgx = me.x;
  693. _orgy = me.y;
  694. for(var i = 0 ; i < _spectype.length ; i++)
  695. {
  696. _skiplist = new Array();
  697. while(_attackcount < (i+1)*100)
  698. {
  699. if (!_pause && isTooFar())
  700. {
  701. //Say('Leader is far away. Following.');
  702. return false;
  703. }
  704. _mindistance = 100000;
  705. _target = NTC_FindUnit(NTC_UNIT_MONSTER);
  706. if(_target)
  707. {
  708. do
  709. {
  710. if(_skiplist.indexOf(_target.gid) < 0)
  711. {
  712. if(_target.IsAttackable() && (_target.spectype&_spectype[i]))
  713. {
  714. if(GetDistance(_orgx, _orgy, _target.x, _target.y) <= range && NTA_IsValidMonster(_target))
  715. {
  716. _distance = GetDistance(me, _target);
  717.  
  718. if(_distance < _mindistance)
  719. {
  720. _mingid = _target.gid;
  721. _mindistance = _distance;
  722. }
  723. }
  724. }
  725. else
  726. _skiplist.push(_target.gid);
  727. }
  728. } while(_target.GetNext());
  729. }
  730.  
  731. if (!_pause && isTooFar())
  732. {
  733. //Say('Leader is far away. Following.');
  734. return false;
  735. }
  736. if(_mindistance < 100000)
  737. {
  738. _target = NTC_FindUnit(NTC_UNIT_MONSTER, _mingid);
  739.  
  740. if(_target)
  741. {
  742. _result = NTA_Attack(_target, (_attackcount%30) == 0);
  743.  
  744. switch(_result)
  745. {
  746. case 1:
  747. _skiplist.push(_mingid);
  748. break;
  749. case 2:
  750. case 3:
  751. _attackcount++;
  752. break;
  753. default:
  754. return false;
  755. }
  756. }
  757. }
  758. else
  759. break;
  760. }
  761. }
  762.  
  763. if(me.classid == NTC_CHAR_CLASS_PALADIN)
  764. {
  765. if(_attackcount > 2 && (parseInt(me.hp*100/me.hpmax) < NTConfig_UseRedemptionHP || parseInt(me.mp*100/me.mpmax) < NTConfig_UseRedemptionMP))
  766. {
  767. if(NTC_PutSkill(124, NTC_HAND_RIGHT))
  768. NTC_PingDelay(1000);
  769. }
  770. }
  771. if(!_dontPickUp && pickitem && _attackcount > 0)
  772. NTSI_PickItems();
  773. switch(safelevel)
  774. {
  775. case 1:
  776. return NTTMGR_CheckSafe(0x00, NTConfig_CheckMercSafe&0x01);
  777. case 2:
  778. return NTTMGR_CheckSafe(NTConfig_CheckSelfSafe, NTConfig_CheckMercSafe);
  779. }
  780. return true;
  781. }
  782.  
  783. function NTDS_GrabWayPoint()
  784. {
  785. var _areaid = me.areaid;
  786. _open = true;
  787. var _unit;
  788. var _wp;//this will be unit object of wp found in the switch below
  789.  
  790. switch(_areaid)
  791. {
  792. case 3:
  793. _wp = 119;
  794. break;
  795. case 4:
  796. _wp = 119;
  797. break;
  798. case 5:
  799. _wp = 119;
  800. break;
  801. case 6:
  802. _wp = 119;
  803. break;
  804. case 27:
  805. _wp = 119;
  806. break;
  807. case 29:
  808. _wp = 157;
  809. break;
  810. case 32:
  811. _wp = 119;
  812. break;
  813. case 35:
  814. _wp = 157;
  815. break;
  816. case 42:
  817. _wp = 156;
  818. break;
  819. case 43:
  820. _wp = 156;
  821. break;
  822. case 44:
  823. _wp = 156;
  824. break;
  825. case 46:
  826. _wp = 402;
  827. break;
  828. case 48:
  829. _wp = 323;
  830. break;
  831. case 52:
  832. _wp = 288;
  833. break;
  834. case 57:
  835. _wp = 156;
  836. break;
  837. case 74:
  838. _wp = 402;
  839. break;
  840. case 76:
  841. _wp = 237;
  842. break;
  843. case 77:
  844. _wp = 237;
  845. break;
  846. case 78:
  847. _wp = 237;
  848. break;
  849. case 79:
  850. _wp = 237;
  851. break;
  852. case 80:
  853. _wp = 237;
  854. break;
  855. case 81:
  856. _wp = 237;
  857. break;
  858. case 83:
  859. _wp = 237;
  860. break;
  861. case 101:
  862. _wp = 324;
  863. break;
  864. case 106:
  865. _wp = 238;
  866. break;
  867. case 107:
  868. _wp = 238;
  869. break;
  870. case 111:
  871. _wp = 496;
  872. break;
  873. case 112:
  874. _wp = 496;
  875. break;
  876. case 113:
  877. _wp = 511;
  878. break;
  879. case 115:
  880. _wp = 511;
  881. break;
  882. case 117:
  883. _wp = 496;
  884. break;
  885. case 118:
  886. _wp = 511;
  887. break;
  888. case 129:
  889. _wp = 494;
  890. break;
  891. }
  892. NTM_MoveToPresetUnit(_areaid, NTC_UNIT_OBJECT, _wp, 1, 1);
  893. if(_open)
  894. {
  895. _unit = NTC_FindUnit(NTC_UNIT_OBJECT, _wp);
  896.  
  897. if(_unit){
  898. if(GetDistance(me, _unit) > 2)
  899. NTM_MoveTo(_unit.areaid, _unit.x+1, _unit.y);
  900.  
  901. NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _unit);
  902. NTC_PingDelay(1000);
  903. me.Cancel(1);
  904.  
  905. return true;
  906. }
  907. }
  908.  
  909. return false;
  910. }
  911.  
  912. function NTH_TakeCowPortal(range)
  913. {
  914. var _NTR_STRING_PORTAL = GetLocaleString(3226);
  915. var _portal = NTC_FindUnit(NTC_UNIT_OBJECT, _NTR_STRING_PORTAL);
  916.  
  917. if (_portal)
  918. {
  919. var _isClick;
  920. var _preAreaId = me.areaid;
  921. do
  922. {
  923. if (GetDistance(me, _portal) < range && _portal.mode == 2)
  924. {
  925. for (var i = 0; i < 40; i++)
  926. {
  927. if ((i % 10) == 0)
  928. {
  929. if(NTM_GetCloserInt(_portal))
  930. _isClick = NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _portal);
  931. }
  932. if (_isClick)
  933. {
  934. NTC_Delay(200);
  935. break;
  936. }
  937. }
  938. NTC_PingDelay(1000);
  939. var j = 0;
  940. var check = true;
  941. do
  942. {
  943. if (me.areaid != _preAreaId)
  944. {
  945. NTC_PingDelay(500);
  946. check = false;
  947. return true;
  948. }
  949. j++;
  950. } while(j < 40 && check == true);
  951. }
  952. } while (_portal.GetNext());
  953. }
  954. return false;
  955. }
  956.  
  957. function TakeBaalPortal()
  958. {
  959. NTM_MoveTo(me.areaid, 15092, 5010);
  960. _portal = NTC_FindUnit(NTC_UNIT_OBJECT, 563, 1);
  961. if(!_portal)
  962. {
  963. FollowSay("Couldn't find the portal to baal.");
  964. return false;
  965. }
  966. for (var i=0; i<5; i++)
  967. {
  968. if(!NTM_UsePortal("Portal", 132, null, _portal))
  969. {
  970. FollowSay("Couldn't take the portal to baal.");
  971. return false;
  972. }
  973. if (me.areaid == 132)
  974. break;
  975. }
  976. if (i==5)
  977. return false;
  978. return true;
  979. }
  980.  
  981. function TakeAnyaPortal()
  982. {
  983. if(!NTTM_TownMove("portal"))
  984. {
  985. FollowSay("Couldn't reach anya portal.");
  986. return false;
  987. }
  988.  
  989. if(!NTM_UsePortal("Portal", 121))
  990. {
  991. FollowSay("Couldn't use anya portal.");
  992. return false;
  993. }
  994. return true;
  995. }
  996. function NTH_ReloadMe()
  997. {
  998. NTC_SendMsgToScript("NTBotGame.ntj", "reload");
  999. Delay(200);
  1000. }
  1001. function NTH_ExitGame()
  1002. {
  1003. Print("Leader has left the game.");
  1004. NTC_SendMsgToScript("NTBotGame.ntj", "SCRIPT_END");
  1005. Delay(10000);
  1006. }
  1007.  
  1008. function QuestAkara(){ // For act 1 Akara quest (respec/skill)
  1009. if(me.areaid == 1)
  1010. NTTM_TownMove("akara");
  1011. var _npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_AKARA, 8);
  1012. if(_npc)
  1013. if(NTT_DoInteract(_npc)){
  1014. me.SelectNPCMenu(0x0D35);
  1015. me.Cancel(0);
  1016. me.Cancel(1);
  1017. }
  1018. NTTM_TownMove("kashya");
  1019. _npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_KASHYA, 8);
  1020. if(_npc)
  1021. if(NTT_DoInteract(_npc)){
  1022. me.SelectNPCMenu(0x0D35);
  1023. me.Cancel(0);
  1024. me.Cancel(1);
  1025. }
  1026. _pause = false;
  1027. }
  1028. function QuestGoEast(){ // Act 1 to 2
  1029. if(me.areaid == 1)
  1030. _pause = true;
  1031. NTTM_TownMove("warriv");
  1032. var _npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_WARRIV_ACT_1, 8);
  1033. if(_npc)
  1034. if(NTT_DoInteract(_npc)){
  1035. me.SelectNPCMenu(0x0D36);
  1036. NTC_Delay(2000);
  1037. }
  1038. _pause = false;
  1039. }
  1040. function QuestAtma(){ // After Raidament in sewers
  1041. if(me.areaid == 40)
  1042. _pause = true;
  1043. NTTM_TownMove("atma");
  1044. var _npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_ATMA);
  1045. if(_npc)
  1046. if(NTT_DoInteract(_npc)){
  1047. me.SelectNPCMenu(0x0D35);
  1048. me.Cancel(0);
  1049. me.Cancel(1);
  1050. }
  1051. _pause = false;
  1052. }
  1053. function QuestDrog(){ // talk to drognan
  1054. if(me.areaid == 40)
  1055. _pause = true;
  1056. NTTM_TownMove("drognan");
  1057. var _npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_DROGNAN);
  1058. if(_npc)
  1059. if(NTT_DoInteract(_npc)){
  1060. me.SelectNPCMenu(0x0D35);
  1061. me.Cancel(0);
  1062. me.Cancel(1);
  1063. }
  1064. _pause = false;
  1065. }
  1066. function QuestSailEast(){ // Act 2 to 3
  1067. if(me.areaid == 40)
  1068. _pause = true;
  1069. NTTM_TownMove("jerhyn");
  1070. var _npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_JERHYN, 8);
  1071. if(_npc)
  1072. if(NTT_DoInteract(_npc)){
  1073. me.SelectNPCMenu(0x0D35);
  1074. me.Cancel(0)
  1075. me.Cancel(1)
  1076. }
  1077. NTTM_TownMove("meshif");
  1078. _npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_MESHIF_ACT_2, 8);
  1079. if(_npc)
  1080. if(NTT_DoInteract(_npc)){
  1081. me.SelectNPCMenu(0x0D38);
  1082. NTC_Delay(2000);
  1083. }
  1084. _pause = false;
  1085. }
  1086. function QuestBirdTome(){ // Act 3 quests - if u wait u can get Skill + Health at same time
  1087. if(me.areaid == 75)
  1088. _pause = true;
  1089. NTTM_TownMove("alkor");
  1090. var _npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_ALKOR, 8);
  1091. if(_npc)
  1092. if(NTT_DoInteract(_npc)){
  1093. me.SelectNPCMenu(0x0D35);
  1094. me.Cancel(0);
  1095. me.Cancel(1);
  1096. }
  1097. NTTM_TownMove("meshif");
  1098. _npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_MESHIF_ACT_3);
  1099. if(_npc)
  1100. if(NTT_DoInteract(_npc))
  1101. {
  1102. me.SelectNPCMenu(0x0D35);
  1103. me.Cancel(0);
  1104. me.Cancel(1);
  1105. }
  1106. NTTM_TownMove("alkor");
  1107. _npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_ALKOR);
  1108. if(_npc)
  1109. if(NTT_DoInteract(_npc)){
  1110. me.SelectNPCMenu(0x0D35);
  1111. me.Cancel(0);
  1112. me.Cancel(1);
  1113. }
  1114. NTTM_TownMove("portalspot");
  1115. _pause = false;
  1116. }
  1117. function QuestMeph(){ // talk to drognan
  1118. if(me.areaid == 75)
  1119. _pause = true;
  1120. NTTM_TownMove("cain");
  1121. var _npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_CAIN_ACT_3);
  1122. if(_npc)
  1123. if(NTT_DoInteract(_npc)){
  1124. me.SelectNPCMenu(0x0D35);
  1125. me.Cancel(0);
  1126. me.Cancel(1);
  1127. }
  1128. _pause = false;
  1129. }
  1130.  
  1131. function QuestTyrael(){ // +2 skill points Tyrael
  1132. if(me.areaid == 103)
  1133. NTTM_TownMove("tyrael");
  1134. var _npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_TYRAEL_ACT_4, 8);
  1135. if(_npc)
  1136. if(NTT_DoInteract(_npc)){
  1137. me.SelectNPCMenu(0x0D35);
  1138. me.Cancel(0);
  1139. me.Cancel(1);
  1140. }
  1141. _pause = false;
  1142. }
  1143.  
  1144. function QuestToAct5(){ // Quest act 4 to 5
  1145. if(me.areaid == 103)
  1146. _pause = true;
  1147. NTTM_TownMove("tyrael");
  1148. var _npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_TYREAL_ACT_4, 8);
  1149. if(_npc)
  1150. if(NTT_DoInteract(_npc)){
  1151. me.SelectNPCMenu(0x58D2);
  1152. NTC_Delay(1500);
  1153. }
  1154. _pause = false;
  1155. }
  1156. function QuestLarzuk(){
  1157. if(me.areaid == 109)
  1158. NTTM_TownMove("larzuk");
  1159. var _npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_LARZUK, 8);
  1160. if(_npc)
  1161. if(NTT_DoInteract(_npc)){
  1162. me.SelectNPCMenu(0x0D35);
  1163. me.Cancel(0);
  1164. me.Cancel(1);
  1165. }
  1166. NTTM_TownMove("portalspot");
  1167. _pause = false;
  1168. }
  1169. function QuestMalah(){
  1170. if(me.areaid == 109)
  1171. NTTM_TownMove("malah");
  1172. var _npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_MALAH, 8);
  1173. if(_npc)
  1174. if(NTT_DoInteract(_npc)){
  1175. me.SelectNPCMenu(0x0D35);
  1176. me.Cancel(0);
  1177. me.Cancel(1);
  1178. }
  1179. NTTM_TownMove("portalspot");
  1180. _pause = false;
  1181. }
Add Comment
Please, Sign In to add comment