Advertisement
kolton

Untitled

Oct 31st, 2011
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 26.17 KB | None | 0 0
  1. var NTM_AreaWPArray = [
  2. 0, 0x01, 0, 0x03, 0x04, 0x05, 0x06, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0..15
  3. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x1b, 0, 0x1d, 0, 0, // 16..31
  4. 0x20, 0, 0, 0x23, 0, 0, 0, 0, 0x28, 0, 0x2a, 0x2b, 0x2c, 0, 0x2e, 0, // 32..47
  5. 0x30, 0, 0, 0, 0x34, 0, 0, 0, 0, 0x39, 0, 0, 0, 0, 0, 0, // 48..63
  6. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, // 64..79
  7. 0x50, 0x51, 0, 0x53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 80..95
  8. 0, 0, 0, 0, 0, 0x65, 0, 0x67, 0, 0, 0x6a, 0x6b, 0, 0x6d, 0, 0x6f, // 96..111
  9. 0x70, 0x71, 0, 0x73, 0, 0x75, 0x76, 0, 0, 0, 0, 0x7b, 0, 0, 0, 0, // 112..127
  10. 0, 0x81, 0, 0, 0]; // 128..132
  11.  
  12. var NTM_Waypoints = [
  13. 0x01, 0x03, 0x04, 0x05, 0x06, 0x1b, 0x1d, 0x20, 0x23, // 0 ..8 act1
  14. 0x28, 0x30, 0x2a, 0x39, 0x2b, 0x2c, 0x34, 0x4a, 0x2e, // 9 ..17 act2
  15. 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x53, 0x65, // 18..26 act3
  16. 0x67, 0x6a, 0x6b, // 27..29 act4
  17. 0x6d, 0x6f, 0x70, 0x71, 0x73, 0x7b, 0x75, 0x76, 0x81]; // 30..38 act5
  18.  
  19. var usedWp = false;
  20.  
  21. function NTM_MoveTo(x, y, retry, clearpath)
  22. {
  23. var _teleport;
  24. var _path;
  25. var _result;
  26. var _retry = 0;
  27.  
  28. if(!NTC_WaitCastDone())
  29. return false;
  30.  
  31. if(x == me.x && y == me.y)
  32. return true;
  33.  
  34. if(arguments.length < 3)
  35. retry = 3;
  36.  
  37. if(arguments.length < 4)
  38. clearpath = false;
  39.  
  40. if(NTC_InTown() || NTC_CheckSkill(54) < 1 || !NTConfig_Teleport)
  41. _teleport = false;
  42. else
  43. _teleport = true;
  44.  
  45. if (getDistance(me.x, me.y, x, y) < 30) {
  46. if (_teleport) {
  47. for (var i = 0; i < 5; i += 1) {
  48. if (NTM_TeleportTo(x, y)) {
  49. return true;
  50. }
  51. }
  52. }
  53. }
  54.  
  55. if (getDistance(me.x,me.y,x,y) <= 15) {
  56. if (NTM_WalkTo(x, y)) {
  57. return true;
  58. }
  59. }
  60.  
  61. if(_teleport)
  62. _path = getPath(me.area, me.x, me.y, x, y, true, 30);
  63. else
  64. _path = getPath(me.area, me.x, me.y, x, y, false, 10);
  65.  
  66. if (!_path) {
  67. print("getpath(" + me.area + ", " + me.x + ", " + me.y + ", " + x + ", " + y + ", " + _teleport + ") failed");
  68.  
  69. if (_teleport) {
  70. _path = getPath(me.area, me.x, me.y, x, y, true, 25);
  71.  
  72. if (!_path) {
  73. return false;
  74. }
  75. } else {
  76. return false;
  77. }
  78. }
  79.  
  80. for(var i = 0 ; i < _path.length ; i++)
  81. {
  82. for(var n = 0 ; n < 5 ; n++)
  83. {
  84. if(_teleport)
  85. {
  86. if(NTM_TeleportTo(_path[i].x, _path[i].y))
  87. break;
  88. }
  89. else
  90. {
  91. if(NTM_WalkTo(_path[i].x, _path[i].y))
  92. break;
  93. }
  94. }
  95.  
  96. if(n < 5)
  97. {
  98. if(clearpath)
  99. {
  100. if(!NTA_ClearPosition(20, TYPE_NOT_NORMAL))
  101. return false;
  102. }
  103. }
  104. else
  105. {
  106. print("ntmove retry");
  107.  
  108. if(_retry++ < retry)
  109. {
  110. _path = getPath(me.area, me.x, me.y, x, y, _teleport, 25);
  111.  
  112. if(!_path)
  113. return false;
  114.  
  115. i = -1;
  116. }
  117. else
  118. return false;
  119. }
  120. }
  121.  
  122. return true;
  123. }
  124.  
  125. function NTM_MoveToObject(unittype, low, high, offsetx, offsety, clearpath)
  126. {
  127. var _unit;
  128.  
  129. if(arguments.length < 3)
  130. high = low;
  131.  
  132. if(arguments.length < 4)
  133. {
  134. offsetx = 0;
  135. offsety = 0;
  136. }
  137.  
  138. if(arguments.length < 6)
  139. clearpath = false;
  140.  
  141. _unit = NTC_GetPresetUnits(unittype);
  142.  
  143. if(!_unit)
  144. {
  145. print("cant find unit");
  146. return false;
  147. }
  148.  
  149. for(var i = 0 ; i < _unit.length ; i++)
  150. {
  151.  
  152. if(_unit[i].id >= low && _unit[i].id <= high)
  153. {
  154. return NTM_MoveTo(_unit[i].roomx*5+_unit[i].x+offsetx, _unit[i].roomy*5+_unit[i].y+offsety, 3, clearpath);
  155. }
  156. }
  157.  
  158. print("Failed to find PresetUnit");
  159. return false;
  160. }
  161.  
  162. function NTM_TeleportTo(x, y)
  163. {
  164. NTC_DoCast(54, NTC_HAND_RIGHT, x, y);
  165.  
  166. //NTC_PutSkill(54, NTC_HAND_RIGHT);
  167. //me.castXY(NTC_HAND_RIGHT, x, y);
  168.  
  169. for(var i = 0 ; i < 15 ; i++)
  170. {
  171. if(Math.abs(me.x-x) < 5 && Math.abs(me.y-y) < 5)
  172. return true;
  173.  
  174. NTC_Delay(40);
  175. }
  176.  
  177. return false;
  178. }
  179.  
  180. function NTM_WalkTo(x, y)
  181. {
  182. var i, distance, nTimer,
  183. nFail = 0,
  184. attemptCount = 0;
  185.  
  186. if (me.runwalk === 0) {
  187. me.runwalk = 1;
  188. }
  189.  
  190. if (me.classid === 3 && !NTC_InTown() && NTC_CheckSkill(107)) {
  191. distance = getDistance(me.x, me.y, x, y);
  192.  
  193. if (distance > 9) {
  194. if (NTC_PutSkill(107, NTC_HAND_LEFT)) {
  195. clickMap(NTC_CLICK_LDOWN, NTC_SHIFT_HOLD, x, y);
  196.  
  197. for (i = 0; i < distance; i = i + 1) {
  198. NTC_Delay(20);
  199.  
  200. if (Math.abs(me.x - x) < 4 && Math.abs(me.y - y) < 4) {
  201. clickMap(NTC_CLICK_LUP, NTC_SHIFT_NONE, null);
  202. return true;
  203. }
  204. }
  205. }
  206. }
  207. }
  208.  
  209. MoveLoop : while (getDistance(me.x, me.y, x, y) > 3 && me.mode !== 17) {
  210. if (me.classid === 3) {
  211. NTC_PutSkill(115, NTC_HAND_RIGHT);
  212. }
  213.  
  214. clickMap(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, x, y);
  215. NTC_Delay(40);
  216. //clickMap(NTC_CLICK_LUP, NTC_SHIFT_NONE, null);
  217.  
  218. attemptCount += 1;
  219. nTimer = getTickCount();
  220.  
  221. while (me.mode !== 2 && me.mode !== 3 && me.mode !== 6) {
  222. if (me.mode === 17) {
  223. break MoveLoop;
  224. }
  225.  
  226. if ((getTickCount() - nTimer) > 500) {
  227. nFail += 1;
  228.  
  229. if (nFail >= 2) {
  230. return false;
  231. }
  232.  
  233. clickMap(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, me.x + rand(-5, 5), me.y + rand(-5, 5));
  234. NTC_Delay(40);
  235. //clickMap(NTC_CLICK_LUP, NTC_SHIFT_NONE, null);
  236.  
  237. continue MoveLoop;
  238. }
  239.  
  240. NTC_Delay(40);
  241. }
  242.  
  243. while (me.mode !== 1 && me.mode !== 5 && me.mode !== 17) {
  244. NTC_Delay(40);
  245. }
  246.  
  247. if (attemptCount >= 3) {
  248. return false;
  249. }
  250. }
  251.  
  252. return true;
  253. }
  254.  
  255. function NTM_TakeStairs(dest)
  256. {
  257. var _tileid;
  258. var _exits = getArea().exits;
  259.  
  260. for(var i = 0; i < _exits.length; i++)
  261. {
  262. if(_exits[i].type == 2 && _exits[i].target == dest)
  263. {
  264. _tileid = _exits[i].tileid;
  265. break;
  266. }
  267. }
  268.  
  269. if(!_tileid)
  270. return false;
  271.  
  272. var _unit = NTC_GetUnit(NTC_UNIT_TILE, _tileid);
  273.  
  274. if(!_unit)
  275. return false;
  276.  
  277. var _prearea = me.area;
  278.  
  279. for(var i = 0 ; i < 100 ; i++)
  280. {
  281. if((i % 25) == 0)
  282. {
  283. if(NTM_GetCloserInt(_unit))
  284. _unit.interact();
  285. }
  286.  
  287. NTC_Delay(NTC_DELAY_FRAME);
  288.  
  289. if(me.area != _prearea)
  290. break;
  291. }
  292.  
  293. while(me.area == 0)
  294. NTC_Delay(NTC_DELAY_FRAME);
  295.  
  296. if(me.area == _prearea)
  297. return false;
  298.  
  299. NTC_PingDelay(NTConfig_AreaDelay);
  300.  
  301. return true;
  302. }
  303.  
  304. function NTM_TakeUnit(unittype, classid)
  305. {
  306. var _unit;
  307. var _prearea;
  308.  
  309. _unit = NTC_GetUnit(unittype, classid);
  310.  
  311. if(!_unit)
  312. return false;
  313.  
  314. _prearea = me.area;
  315.  
  316. for(var i = 0 ; i < 20 ; i++)
  317. {
  318. if((i % 5) == 0)
  319. {
  320. if(i == 10)
  321. NTM_MoveTo(me.x+6, me.y+6);
  322.  
  323. if(NTM_GetCloserInt(_unit))
  324. _unit.interact();
  325. }
  326.  
  327. NTC_Delay(200);
  328.  
  329. if(me.area != _prearea)
  330. break;
  331. }
  332.  
  333. while(me.area == 0)
  334. NTC_Delay(200);
  335.  
  336. if(me.area == _prearea)
  337. return false;
  338.  
  339. NTC_PingDelay(NTConfig_AreaDelay);
  340.  
  341. return true;
  342. }
  343.  
  344. function postWalkDelay(){
  345. debugPrint("ntm postWalkDelay" );
  346. while (me.mode == 2 || me.mode == 6){
  347. delay(40);
  348. debugPrint("ntm takeStairsDelay walking" );
  349. }
  350. delay(200);
  351. me.cancel(0);
  352. sendCopyData(null, "OOG", 0,"Info "+NTAR_Areas[me.area]);
  353. }
  354. function preWalkDelay(){
  355. var pwTimeouts =0;
  356. debugPrint("preWalkDelay" );
  357. while ((!(me.mode == 2 || me.mode == 6)) && (pwTimeouts < 10)){
  358. delay(40);
  359. pwTimeouts = pwTimeouts +1;
  360.  
  361. debugPrint("ntm Prewalking delay"+pwTimeouts );
  362. }
  363.  
  364. }
  365.  
  366. function NTM_TakeWaypoint(area)
  367. {
  368. var _unit;
  369.  
  370. if(me.area == area)
  371. return true;
  372.  
  373. _unit = NTM_GetWaypointInt();
  374.  
  375. if(!_unit)
  376. return false;
  377.  
  378. if(NTC_InTown())
  379. me.cancel();
  380.  
  381. for(var i = 0 ; i < 80 ; i++)
  382. {
  383. if((i % 10) == 0)
  384. {
  385. if(NTM_MoveCloseCoords(_unit.x, _unit.y, 7))
  386. _unit.interact(area);
  387. }
  388.  
  389. if (i % 10 === 9) {
  390. NTM_WalkTo(me.x + rand(-5, 5), me.y + rand(-5, 5));
  391. NTM_GetCloserInt(_unit);
  392. }
  393.  
  394. NTC_Delay(200);
  395.  
  396. while(me.area == 0)
  397. Delay(200);
  398.  
  399. if(me.area == area)
  400. return true;
  401. }
  402.  
  403. return false;
  404. }
  405.  
  406. function NTM_UsePortal(how, dest, ownername, portal)
  407. {
  408. if(me.area == dest)
  409. return true;
  410.  
  411. if(NTC_InTown())
  412. me.cancel();
  413.  
  414. if(NTM_ChangeAreaInt(how, dest, ownername, portal))
  415. {
  416. NTC_Delay(NTConfig_AreaDelay);
  417. return true;
  418. }
  419.  
  420. return false;
  421. }
  422.  
  423. function NTM_MakeTP(use)
  424. {
  425. if(NTC_InTown())
  426. return true;
  427.  
  428. var _usetp = true;
  429.  
  430. if(arguments.length < 1)
  431. _usetp = false;
  432.  
  433. var i, _portal;
  434. var _prevarea = me.area;
  435. //var _tptome = me.getItem("tbk");
  436. var _tptome;
  437. var _items = me.getItems();
  438. var _oldportal;
  439. var _oldgid = null;
  440.  
  441. if (!_items) {
  442. print("no tome")
  443. return false;
  444. }
  445.  
  446. for (i = 0; i < _items.length; i += 1) {
  447. if (_items[i].code === "tbk" && _items[i].location === 0) {
  448. _tptome = _items[i];
  449.  
  450. break;
  451. }
  452. }
  453.  
  454. /*if(_tptome.location != 0) // not in inventory
  455. while(_tptome.getNext())
  456. if(_tptome.location == 0)
  457. break;*/
  458.  
  459. if(!_tptome || !_tptome.getStat(70))
  460. return false;
  461.  
  462. _oldportal = NTC_GetUnit(NTC_UNIT_OBJECT, "Portal");
  463.  
  464. if(_oldportal)
  465. {
  466. do
  467. {
  468. if(NTC_CheckOwner(_oldportal))
  469. {
  470. _oldgid = _oldportal.gid;
  471. break;
  472. }
  473. }while(_oldportal.getNext());
  474. }
  475.  
  476. for(var i = 0 ; i < 200 ; i++)
  477. {
  478. if(me.mode == 17)
  479. break;
  480.  
  481. if(i % 25 == 0)
  482. _tptome.interact();
  483.  
  484. _portal = NTC_GetUnit(NTC_UNIT_OBJECT, "Portal");
  485.  
  486. if(_portal)
  487. {
  488. do
  489. {
  490. if(NTC_CheckOwner(_portal) && _portal.gid != _oldgid)
  491. {
  492. if(_usetp)
  493. {
  494. _portal.interact();
  495.  
  496. delay(750);
  497.  
  498. if(me.area != _prevarea)
  499. {
  500. while(me.area == 0)
  501. delay(200);
  502.  
  503. return true;
  504. }
  505. }
  506. else
  507. return true;
  508. }
  509. }while(_portal.getNext());
  510. }
  511.  
  512. delay(25);
  513. }
  514.  
  515. return false;
  516. }
  517.  
  518. // Internal function
  519. function NTM_GetWaypointInt()
  520. {
  521. var _waypoint;
  522. var _classid;
  523.  
  524. for(var i = 0 ; i <= 2 ; i++)
  525. {
  526. _waypoint = NTC_GetUnit(NTC_UNIT_OBJECT);
  527.  
  528. if(_waypoint)
  529. {
  530. do
  531. {
  532. _classid = _waypoint.classid;
  533.  
  534. if(_classid == 119 || _classid == 145 || _classid == 156 || _classid == 157
  535. || _classid == 237 || _classid == 238 || _classid == 288 || _classid == 323
  536. || _classid == 324 || _classid == 398 || _classid == 402 || _classid == 429
  537. || _classid == 494 || _classid == 496 || _classid == 511 || _classid == 539)
  538. return _waypoint;
  539. } while(_waypoint.getNext());
  540. }
  541.  
  542. if(i < 2)
  543. NTC_Delay(500);
  544. }
  545.  
  546. return null;
  547. }
  548.  
  549. function NTM_ChangeAreaInt(how, dest, ownername, myportal) {
  550. var i, _portal, _prearea, _found,
  551. _playerportal = false;
  552.  
  553. if (how) {
  554. switch (how) {
  555. case "Waypoint":
  556. var _unit;
  557.  
  558. if (me.area === dest) {
  559. return true;
  560. }
  561.  
  562. _unit = NTM_GetWaypointInt();
  563.  
  564. if (!_unit) {
  565. return false;
  566. }
  567.  
  568. if (NTC_InTown()) {
  569. me.cancel();
  570. }
  571.  
  572. for (var i = 0 ; i < 80 ; i++) {
  573. if (i % 10 === 0) {
  574. if (NTM_MoveCloseCoords(_unit.x, _unit.y, 7)) {
  575. _unit.interact(dest);
  576. }
  577. }
  578.  
  579. if (i % 10 === 9) {
  580. NTM_WalkTo(me.x + rand(-5, 5), me.y + rand(-5, 5));
  581. NTM_GetCloserInt(_unit);
  582. }
  583.  
  584. NTC_PingDelay(200);
  585.  
  586. while (me.area === 0) {
  587. delay(200);
  588. }
  589.  
  590. if (me.area === dest || !dest) {
  591. return true;
  592. }
  593. }
  594.  
  595. return false;
  596. case "BluePortal":
  597. if (!ownername) {
  598. ownername = me.name;
  599. }
  600.  
  601. _playerportal = true;
  602.  
  603. break;
  604. }
  605. }
  606.  
  607. if (myportal) {
  608. _found = true;
  609. _portal = myportal;
  610. } else if (ownername) {
  611. _portal = NTC_GetUnit(2, "Portal");
  612.  
  613. if (_portal) {
  614. do {
  615. if (_portal.mode === 2 && _portal.getParent() === ownername && NTC_InMyParty(ownername)) {
  616. _found = true;
  617. break;
  618. }
  619. } while (_portal.getNext());
  620. }
  621. } else if (dest) {
  622. print("use portal")
  623.  
  624. _portal = NTC_GetUnit(2, "Portal");
  625.  
  626. if (_portal) {
  627. do {
  628. if (_portal.mode === 2 && _portal.objtype === dest && (NTC_InMyParty(_portal.getParent()) || !_portal.getParent())) {
  629. _found = true;
  630. break;
  631. }
  632. } while (_portal.getNext());
  633. }
  634. }
  635.  
  636. if (!_found) {
  637. return false;
  638. }
  639.  
  640. _prearea = me.area;
  641.  
  642. for (i = 0; i < 40; i += 1) {
  643. if (i % 10 === 0) {
  644. if (i === 10) {
  645. NTM_MoveTo(me.x + rand(-3, 3), me.y + rand(-3, 3));
  646. }
  647.  
  648. if (me.classid === 1 && NTC_InTown() && NTC_CheckSkill(43) && getDistance(me, _portal) <= 20) {
  649. NTC_DoCast(43, NTC_HAND_RIGHT, _portal);
  650. } else if (NTM_GetCloserInt(_portal)) {
  651. _portal.interact();
  652. }
  653. }
  654.  
  655. NTC_Delay(200);
  656.  
  657. if (me.area !== _prearea) {
  658. break;
  659. }
  660. }
  661.  
  662. return (me.area !== _prearea);
  663. }
  664.  
  665. function NTM_GetStairsInt(lo, hi, area)
  666. {
  667. debugPrint("ntm getstairsint" );
  668.  
  669. var _tile = NTC_GetUnit(NTC_UNIT_TILE);
  670.  
  671. if(_tile)
  672. {
  673. do
  674. {
  675. if(_tile.type == NTC_UNIT_TILE && _tile.classid >= lo && _tile.classid <= hi)
  676. {
  677. if(!area || _tile.area == area)
  678. return copyUnit(_tile);
  679. }
  680. } while(_tile.getNext());
  681. }
  682.  
  683. return false;
  684. }
  685.  
  686. function NTM_CheckWPInt(wpHex)
  687. {
  688. for(var i = 0 ; i < 39 ; i++)
  689. {
  690. if(wpHex == NTM_Waypoints[i])
  691. return getWaypoint(i);
  692. }
  693.  
  694. return false;
  695. }
  696.  
  697. function NTM_FindCorrectPortalInt(blueportal, dest, ownername)
  698. {
  699. var _portal;
  700.  
  701. if(blueportal)
  702. {
  703. for(var i = 0 ; i <= 2 ; i++)
  704. {
  705. _portal = NTC_GetUnit(NTC_UNIT_OBJECT, "Portal");
  706.  
  707. if(_portal)
  708. {
  709. do
  710. {
  711. if(_portal.mode == 2 && NTC_CheckOwner(_portal, ownername) && getDistance(me, _portal) < 30 && _portal.objtype == dest)
  712. return _portal;
  713. } while(_portal.getNext());
  714. }
  715.  
  716. if(i < 2)
  717. NTC_Delay(500);
  718. }
  719.  
  720. return -2;
  721. }
  722. else
  723. {
  724. for(var i = 0 ; i <= 2 ; i++)
  725. {
  726. _portal = NTC_GetUnit(NTC_UNIT_OBJECT, "Portal");
  727.  
  728. if(_portal)
  729. {
  730. do
  731. {
  732. if(_portal.mode == 2 && (!_portal.getParent() && _portal.objtype == dest || _portal.getParent() == ownername))
  733. return _portal;
  734. } while(_portal.getNext());
  735. }
  736. }
  737. }
  738.  
  739. return -3;
  740. }
  741.  
  742. function NTM_FindPortalAreaInt(dest)
  743. {
  744. var _portal;
  745.  
  746. for(var i = 0 ; i <= 2 ; i++)
  747. {
  748. _portal = NTC_GetUnit(NTC_UNIT_OBJECT, "Portal");
  749.  
  750. if(_portal)
  751. {
  752. do
  753. {
  754. if(_portal.mode == 2 && _portal.objtype == dest)
  755. {
  756. if(_portal.getParent())
  757. {
  758. if(NTC_CheckOwner(_portal) || NTC_InMyParty(_portal.getParent()))
  759. return _portal;
  760. }
  761. else
  762. return _portal;
  763. }
  764. }while(_portal.getNext());
  765. }
  766.  
  767. if(i < 2)
  768. NTC_Delay(500);
  769. }
  770.  
  771. return -1;
  772. }
  773.  
  774. function NTM_GetCloserInt(object)
  775. {
  776. if(getDistance(me, object) > 4)
  777. return NTM_MoveTo(object.x, object.y);
  778.  
  779. return true;
  780. }
  781.  
  782. function NTM_MoveCloseInt(x, y, maxrange)
  783. {
  784. var _dist = getDistance(me.x, me.y, x, y);
  785.  
  786. if(_dist > maxrange)
  787. {
  788. var _destx, _desty;
  789.  
  790. _destx = me.x + Math.round((_dist-maxrange)*(x-me.x) / _dist);
  791. _desty = me.y + Math.round((_dist-maxrange)*(y-me.y) / _dist);
  792.  
  793. NTM_MoveTo(_destx, _desty);
  794. }
  795.  
  796. return true;
  797. }
  798.  
  799. function NTM_TravelTO(area)
  800. {
  801. var tries = 0;
  802. var stuckAtWP = false;
  803. var StuckAtWPRetries = 5;
  804.  
  805. while(me.area != area)
  806. {
  807. var notFound = false;
  808. var tempAction = currentAction;
  809. var nextlvl = area;
  810.  
  811. while(!notFound)
  812. {
  813. NTC_Delay(10);
  814.  
  815. if(tries > 50)
  816. return false;
  817.  
  818. if(NTC_InTown())
  819. {
  820. NTC_PutSkill(115, NTC_HAND_RIGHT);
  821.  
  822. if(!usedWp)
  823. {
  824. NTTM_TownMove("waypoint");
  825. NTM_TakeWaypoint(area);
  826. usedWp = true;
  827. }
  828.  
  829. if(NTM_FindPortalAreaInt(nextlvl) != -1)
  830. {
  831. NTM_ChangeAreaInt("Portal", nextlvl, null, NTM_FindPortalAreaInt(nextlvl));
  832. NTTM_TownMove("portalspot");
  833. break;
  834. }
  835.  
  836. if(NTM_AreaWPArray[nextlvl] && NTM_CheckWPInt(NTM_AreaWPArray[nextlvl]))
  837. {
  838. if(stuckAtWP == nextlvl)
  839. {
  840. NTTM_TownMove("stash");
  841.  
  842. stuckAtWP = false;
  843. StuckAtWPRetries = StuckAtWPRetries-1;
  844.  
  845. if(StuckAtWPRetries == 0)
  846. quit();
  847. }
  848.  
  849. NTTM_TownMove("waypoint");
  850. NTM_TakeWaypoint(nextlvl);
  851. stuckAtWP = nextlvl;
  852. usedWp=true;
  853. break;
  854. }
  855. }
  856.  
  857. if(NTM_GotoLevel(nextlvl,true))
  858. break;
  859.  
  860. if(!usedWp && NTM_AreaWPArray[nextlvl])
  861. {
  862. NTM_GotoWaypoint(me.area, true, 100)
  863. usedWp = true;
  864. }
  865.  
  866. if(NTM_AreaWPArray[nextlvl] && NTM_CheckWPInt(NTM_AreaWPArray[nextlvl]))
  867. {
  868. if(NTM_GotoWaypoint(me.area,false,100))
  869. {
  870. NTM_TakeWaypoint(nextlvl);
  871. break;
  872. }
  873.  
  874. if (NTTMGR_CheckScrolls(1) > 0)
  875. {
  876. NTTM_CheckAct()
  877. NTTMGR_TownManager();
  878. NTTM_TownMove("waypoint");
  879. break;
  880. }
  881.  
  882. if(NTM_GotoWaypoint(me.area))
  883. {
  884. NTM_TakeWaypoint(nextlvl);
  885. break;
  886. }
  887. }
  888.  
  889. var curlvl = nextlvl;
  890. nextlvl = NTAR_PreviousAreas[curlvl];
  891.  
  892. if(me.area == area)
  893. notFound = true;
  894. }
  895.  
  896. //NTP_UpdatePrecast();
  897. }
  898.  
  899. return true;
  900. }
  901.  
  902. function NTM_OpenDoor()
  903. { // only opens act 4 town door atm
  904. var myDoor = getUnit(2);
  905.  
  906. if(myDoor)
  907. {
  908. do
  909. {
  910. if(myDoor.name == "gate" && getDistance(me, myDoor) < 10)
  911. {
  912. while(myDoor.mode == 0)
  913. {
  914. clickMap(0, 0, myDoor);
  915. NTC_Delay(rand(10,20));
  916. clickMap(2, 0, myDoor);
  917. NTC_Delay(200);
  918. //myDoor.interact();
  919. }
  920. }
  921. }while(myDoor.getNext());
  922. }
  923. }
  924.  
  925. function NTM_GotoLevel(exitAreaId, goThru)
  926. {
  927. var exit = getArea().exits;
  928.  
  929. if(exitAreaId == 50 && me.area == 40) // lut gholein -> palace cellar level 1
  930. NTTM_TownMove("palace");
  931.  
  932. if(exitAreaId == 33 && me.area == 32)
  933. {
  934. NTM_MoveTo(20027, 5023);
  935. return NTM_TeleportTo(20049, 4991);
  936. }
  937.  
  938. if(exitAreaId == 41 && me.area == 40)
  939. NTTM_TownMove("exit");
  940.  
  941. if(exitAreaId == 110 && me.area == 109) //bloody hills
  942. {
  943. NTTM_TownMoveXY(5025,5096);
  944. NTM_OpenDoor();
  945. }
  946.  
  947. if(exitAreaId == 38 && me.area == 4) //trist
  948. {
  949. if(!NTM_MoveToObject(NTC_UNIT_OBJECT, 17, 17, 5, 5))
  950. return false;
  951.  
  952. NTC_Delay(500);
  953.  
  954. if(goThru)
  955. {
  956. if(!NTM_UsePortal("Portal", 38))
  957. return false;
  958. }
  959.  
  960. return true;
  961. }
  962.  
  963. if(exitAreaId == 46 && me.area == 74)
  964. { //arcane sanct > maji cannon
  965. if(!NTM_MoveToObject(NTC_UNIT_OBJECT, 357, 357, 0, 0))
  966. return false;
  967.  
  968. var _unit = NTC_GetUnit(NTC_UNIT_OBJECT, 357);
  969.  
  970. _unit.interact();
  971.  
  972. NTC_Delay(350);
  973.  
  974. me.cancel();
  975.  
  976. NTC_PingDelay(2500);
  977.  
  978. if(!NTM_UsePortal("Portal", 46))
  979. return false;
  980.  
  981. return true;
  982. }
  983.  
  984. if(exitAreaId == 2 && me.area == 1) // rogue encampment -> blood moor
  985. {
  986. NTTM_TownMove("exit");
  987.  
  988. var _roomAct1Town = getRoom(1);
  989. var _roomAct1BloodMoor = getRoom(2);
  990.  
  991. if(_roomAct1Town && _roomAct1BloodMoor)
  992. {
  993. var x = _roomAct1Town.getStat(4) - _roomAct1BloodMoor.getStat(4);
  994. var y = _roomAct1Town.getStat(5) - _roomAct1BloodMoor.getStat(5);
  995.  
  996. // South Exit
  997. if(x < 0 && y < 0)
  998. {
  999. NTM_WalkTo(me.x+30, me.y);
  1000. return NTM_WalkTo(me.x+30, me.y);
  1001. }
  1002. // North Exit
  1003. else if(x > 0 && y < 0)
  1004. {
  1005. return NTM_WalkTo(me.x-30, me.y);
  1006. }
  1007. // West Exit
  1008. else if(x == 0 && y < 0)
  1009. {
  1010. return NTM_WalkTo(me.x, me.y+30);
  1011. }
  1012. // East Exit
  1013. else if(x == 0 && y > 0)
  1014. {
  1015. return NTM_WalkTo(me.x, me.y-30);
  1016. }
  1017. }
  1018. }
  1019.  
  1020. if(me.area == 54 && exitAreaId == 74) // palace cellar 3 -> arcane sanctuary
  1021. {
  1022. NTM_MoveTo(10073, 8671);
  1023.  
  1024. var _arcaneportal = NTC_GetUnit(NTC_UNIT_OBJECT, 298);
  1025.  
  1026. if(_arcaneportal)
  1027. _arcaneportal.interact();
  1028.  
  1029. delay(3000);
  1030.  
  1031. NTM_UsePortal("Portal", 74);
  1032.  
  1033. return true;
  1034. }
  1035.  
  1036. if(me.area == 40 && exitAreaId == 47) // lut gholein -> sewers
  1037. NTTM_TownMove("sewers");
  1038.  
  1039. for(var n = 0 ; n < exit.length ; n++)
  1040. {
  1041. var target = exit[n].target;
  1042.  
  1043. if(target == exitAreaId)
  1044. {
  1045. NTM_MoveTo(exit[n].x, exit[n].y);
  1046.  
  1047. if(goThru)
  1048. {
  1049. if(exit[n].type == 2)
  1050. return NTM_takeTile(exit[n].tileid);
  1051.  
  1052. NTM_EnterArea(exitAreaId);
  1053. }
  1054.  
  1055. return true;
  1056. }
  1057. }
  1058.  
  1059. return false;
  1060. }
  1061.  
  1062. function NTM_takeTile(tileId)
  1063. {
  1064. //Obtain the unit for the tile and store old area
  1065. var tileUnit = getUnit(5, tileId);
  1066. var oldArea = me.area;
  1067. //Insure we have the unit
  1068.  
  1069. //Keep trying to go thru the tile until area changes
  1070. var _prearea = me.area;
  1071.  
  1072. for(var i = 0 ; i < 100 ; i++)
  1073. {
  1074. if((i % 25) == 0)
  1075. {
  1076. if(!tileUnit)
  1077. return false;
  1078. //if(NTM_GetCloserInt(tileUnit))
  1079. tileUnit.interact();
  1080. }
  1081.  
  1082. NTC_Delay(40);
  1083. if(me.area != _prearea)
  1084. break;
  1085. }
  1086.  
  1087. preWalkDelay();
  1088.  
  1089. while(me.area == 0)
  1090. NTC_Delay(NTC_DELAY_FRAME);
  1091.  
  1092. if(me.area == _prearea)
  1093. return false;
  1094.  
  1095. debugPrint("ntm takeStairsDelay" );
  1096. postWalkDelay();
  1097. NTC_Delay(50);
  1098. return true;
  1099. }
  1100.  
  1101. function NTM_GotoWaypoint(area, get, maxdistance)
  1102. {
  1103. print("GoToWP");
  1104.  
  1105. var _classID = [119, 145, 156, 157, 237, 238, 288, 323, 324, 398, 402, 429, 494, 496, 511, 539];
  1106. var _waypoint = getPresetUnits(area, NTC_UNIT_OBJECT);
  1107.  
  1108. if(!_waypoint || _waypoint.length == undefined)
  1109. return false;
  1110.  
  1111. for(var i = 0 ; i < _waypoint.length ; i++)
  1112. {
  1113. if(_classID.indexOf(_waypoint[i].id) != -1)
  1114. {
  1115. NTM_MoveTo(_waypoint[i].roomx * 5 + _waypoint[i].x, _waypoint[i].roomy * 5 + _waypoint[i].y);
  1116.  
  1117. if(!get)
  1118. return true;
  1119.  
  1120. _waypoint = NTC_GetUnit(NTC_UNIT_OBJECT, _waypoint[i].id);
  1121.  
  1122. if(_waypoint)
  1123. {
  1124. if(!_waypoint.mode)
  1125. {
  1126. for(var n = 0 ; n < 40 ; n++)
  1127. {
  1128. if(n % 5 == 0)
  1129. _waypoint.interact();
  1130.  
  1131. NTC_Delay(200);
  1132.  
  1133. if(_waypoint.mode)
  1134. return true;
  1135. }
  1136. }
  1137. }
  1138. }
  1139. }
  1140.  
  1141. return false;
  1142. }
  1143.  
  1144. function NTM_EnterArea(id)
  1145. {
  1146. var _room = getRoom(id);
  1147. var _rooms = new Array();
  1148.  
  1149. if(!_room)
  1150. return false;
  1151.  
  1152. do
  1153. {
  1154. _rooms.push([parseInt(_room.x*5 + _room.xsize/2), parseInt(_room.y*5 + _room.ysize/2)]);
  1155. }while(_room.getNext());
  1156.  
  1157. _rooms.sort(NTA_SortRoomInt);
  1158.  
  1159. _room = _rooms.shift();
  1160.  
  1161. return NTM_MoveTo(_room[0], _room[1]);
  1162.  
  1163. //return false;
  1164. }
  1165.  
  1166. // vector class
  1167. function vector()
  1168. {
  1169. if(arguments.length == 2)
  1170. {
  1171. this.x = arguments[0];
  1172. this.y = arguments[1];
  1173. }
  1174. else if(arguments.length == 1)
  1175. {
  1176. this.x = arguments[0].x;
  1177. this.y = arguments[0].y;
  1178. }
  1179. else
  1180. {
  1181. this.x = 0;
  1182. this.y = 0;
  1183. }
  1184.  
  1185. this.rotate = vector_rotate;
  1186. this.normalize = vector_normalize;
  1187. this.length = vector_length;
  1188. this.setlength = vector_setlength;
  1189. this.toString = vector_toString;
  1190. this.set = vector_set;
  1191. this.angle = vector_angle;
  1192. }
  1193.  
  1194. function vector_rotate(degree)
  1195. {
  1196. if(!degree)
  1197. return true;
  1198.  
  1199. var l = this.length();
  1200. if(!l)
  1201. return false;
  1202.  
  1203. this.normalize();
  1204.  
  1205. var rad = degree * (Math.PI/180);
  1206.  
  1207. var nx = this.x * Math.cos(rad) - this.y * Math.sin(rad);
  1208. var ny = this.x * Math.sin(rad) + this.y * Math.cos(rad);
  1209.  
  1210. this.x = nx;
  1211. this.y = ny;
  1212.  
  1213. this.normalize();
  1214. if(l != 1)
  1215. this.setlength(l);
  1216.  
  1217. return true;
  1218. }
  1219.  
  1220. function vector_angle(v)
  1221. {
  1222. var rad_degree = 180 / Math.PI;
  1223.  
  1224. return Math.acos((this.x*v.x) + (this.y*v.y)) * rad_degree;
  1225. }
  1226.  
  1227. function vector_length()
  1228. {
  1229. return Math.sqrt((this.x*this.x) + (this.y*this.y));
  1230. }
  1231.  
  1232. function vector_setlength(length)
  1233. {
  1234. this.normalize();
  1235. this.x *= length;
  1236. this.y *= length;
  1237. }
  1238.  
  1239. function vector_normalize()
  1240. {
  1241. var l = this.length();
  1242. if(!l)
  1243. return false;
  1244.  
  1245. this.x /= l;
  1246. this.y /= l;
  1247.  
  1248. return true;
  1249. }
  1250.  
  1251. function vector_toString()
  1252. {
  1253. str = "(";
  1254. str += Math.round(this.x*1000)/1000;
  1255. str += " , ";
  1256. str += Math.round(this.y*1000)/1000;
  1257. str += ") : ";
  1258. str += Math.round(this.length()*1000)/1000;
  1259.  
  1260. return str;
  1261. }
  1262.  
  1263. function vector_set(tx, ty)
  1264. {
  1265. if(arguments.length == 1)
  1266. {
  1267. this.x = tx.x;
  1268. this.y = tx.y;
  1269. }
  1270. else if(arguments.length == 2)
  1271. {
  1272. this.x = tx;
  1273. this.y = ty;
  1274. }
  1275. }
  1276.  
  1277. // coord class
  1278. function coord()
  1279. {
  1280. this.data = null;
  1281.  
  1282. if(arguments.length == 3)
  1283. {
  1284. this.x = arguments[0];
  1285. this.y = arguments[1];
  1286. this.data = arguments[2];
  1287. }
  1288. else if(arguments.length == 2)
  1289. {
  1290. this.x = arguments[0];
  1291. this.y = arguments[1];
  1292. }
  1293. else if(arguments.length == 1)
  1294. {
  1295. this.x = arguments[0].x;
  1296. this.y = arguments[0].y;
  1297. }
  1298. else
  1299. {
  1300. this.x = 0;
  1301. this.y = 0;
  1302. }
  1303.  
  1304. this.dist = coord_dist;
  1305. this.dist2 = coord_dist2;
  1306. this.dir = coord_dir;
  1307. this.move = coord_move;
  1308. this.set = coord_set;
  1309. this.toString = coord_toString;
  1310. }
  1311.  
  1312. function coord_set(tx, ty, d)
  1313. {
  1314. if(arguments.length == 1)
  1315. {
  1316. this.x = tx.x;
  1317. this.y = tx.y;
  1318.  
  1319. if(tx.data)
  1320. this.data = tx.data;
  1321. else
  1322. this.data = null;
  1323. }
  1324. else if(arguments.length == 2)
  1325. {
  1326. this.x = tx;
  1327. this.y = ty;
  1328. this.data = null;
  1329. }
  1330. else if(arguments.length == 3)
  1331. {
  1332. this.x = tx;
  1333. this.y = ty;
  1334. this.data = d;
  1335. }
  1336. }
  1337.  
  1338. function coord_dist(tx, ty)
  1339. {
  1340. if(arguments.length == 1)
  1341. {
  1342. var vx = this.x - tx.x;
  1343. var vy = this.y - tx.y;
  1344.  
  1345. return Math.round(Math.sqrt((vx*vx) + (vy*vy)));
  1346. }
  1347. else if(arguments.length == 2)
  1348. {
  1349. var vx = this.x - tx;
  1350. var vy = this.y - ty;
  1351.  
  1352. return Math.round(Math.sqrt((vx*vx) + (vy*vy)));
  1353. }
  1354. return false;
  1355. }
  1356.  
  1357. function coord_dist2(tx, ty)
  1358. {
  1359. if(arguments.length == 1)
  1360. {
  1361. vx = this.x - tx.x;
  1362. vy = this.y - tx.y;
  1363.  
  1364. return Math.floor((vx*vx) + (vy*vy));
  1365. }
  1366. else if(arguments.length == 2)
  1367. {
  1368. vx = this.x - tx;
  1369. vy = this.y - ty;
  1370.  
  1371. return Math.floor((vx*vx) + (vy*vy));
  1372. }
  1373. return false;
  1374. }
  1375.  
  1376. function coord_dir(tx, ty)
  1377. {
  1378. if(arguments.length == 1)
  1379. {
  1380. var v = new vector(tx.x-this.x, tx.y-this.y);
  1381. v.normalize();
  1382.  
  1383. return v;
  1384. }
  1385. else if(arguments.length == 2)
  1386. {
  1387. v = new vector(tx-this.x, ty-this.y);
  1388. v.normalize();
  1389.  
  1390. return v;
  1391. }
  1392.  
  1393. return false;
  1394. }
  1395.  
  1396. function coord_move(vec, d)
  1397. {
  1398. if(d)
  1399. {
  1400. this.x += Math.round(vec.x*d);
  1401. this.y += Math.round(vec.y*d);
  1402.  
  1403. return true;
  1404. }
  1405. else if(vec.length())
  1406. {
  1407. this.x += Math.round(vec.x);
  1408. this.y += Math.round(vec.y);
  1409.  
  1410. return true;
  1411. }
  1412.  
  1413. return false;
  1414. }
  1415.  
  1416. function coord_toString()
  1417. {
  1418. return "( " + this.x + " , " + this.y + " ) " + this.data;
  1419. }
  1420.  
  1421. // custom
  1422.  
  1423. function NTM_MoveCloseCoords(x, y, maxrange)
  1424. {
  1425. var _result = true;
  1426. var _dist = getDistance(me.x, me.y, x, y);
  1427.  
  1428. if (_dist > maxrange)
  1429. {
  1430. var _destx, _desty;
  1431.  
  1432. _destx = me.x + Math.round((_dist - maxrange) * (x - me.x) / _dist);
  1433. _desty = me.y + Math.round((_dist - maxrange) * (y - me.y) / _dist);
  1434.  
  1435. _result = NTM_MoveTo(_destx, _desty);
  1436. }
  1437.  
  1438. return _result;
  1439. }
  1440.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement