Advertisement
DraculaxAOE

Revised NTMove

Feb 18th, 2016
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 24.89 KB | None | 0 0
  1. var debugVoyageTo = false;
  2. var debugMove = false;
  3. function NTM_MoveTo(areaid, x, y, retry, clearpath, canswitch)
  4. {
  5. //NT_LoadConfig();
  6. //NTSI_LoadNIPFiles("NTBot/item_configs");
  7.  
  8. var i, n;
  9. var _teleport;
  10. var _path = undefined; // houstin add
  11. var _retry = 0;
  12. var _attacked = false;
  13.  
  14. if(x == me.x && y == me.y) { return true; }
  15.  
  16. if(arguments.length < 4) { retry = 3; }
  17.  
  18. if(arguments.length < 5) { clearpath = false; }
  19.  
  20. if(arguments.length < 6) { canswitch = true; }
  21.  
  22. // ubi21 Enigma reset start
  23. ////////////////////////////
  24. if(NTConfig_ResetEnigma && NTC_GetSkillLevel(54) < 1) {
  25. NTC_SendLogToOOG(NTC_LOG_COMMON, COLOR_1 + "Teleport Bug Found!");
  26. Print(COLOR_1 + "Teleport Bug Found!");
  27. NTT_ResetEnigma();
  28. }
  29. // ubi21 Enigma reset end
  30. ////////////////////////////
  31.  
  32. if(NTC_InTown() || NTC_GetSkillLevel(54) < 1) { _teleport = false; }
  33. else { _teleport = true; }
  34.  
  35. if (_teleport && GetDistance(me.x, me.y, x, y) < 30) {// houstin add
  36. return NTM_TeleportTo(x, y);
  37. }
  38.  
  39. _path = GetPath(areaid, me.x, me.y, x, y, _teleport);
  40.  
  41. if(!_path) { return (NTC_InTown() && (NTM_WalkTo(x, y) || NTTM_TownMoveXY(x, y))); }
  42.  
  43. if(NTConfig_SwitchTele && _path.length > 2 && canswitch && _teleport){
  44. if(NTC_SwapWeapons(1)){
  45. if(debugMove){
  46. switchedtoTele = me.weaponstab == 1;
  47. Print(COLOR_2 + "Swapped to tele " + switchedtoTele);
  48. }
  49. }
  50. }
  51. //NTTMGR_CheckSafe(NTConfig_CheckSelfSafe, NTConfig_CheckMercSafe);
  52.  
  53. for(i = 0 ; i < _path.length ; i++)
  54. {
  55. for(n = 0 ; n < 2 ; n++)
  56. {
  57. if(_teleport)
  58. {
  59. if(NTM_TeleportTo(_path[i][0]+Random(-n, n), _path[i][1]+Random(-n, n))) { break; }
  60. }
  61. else
  62. {
  63. if(NTM_WalkTo(_path[i][0], _path[i][1])) { break; }
  64. }
  65. }
  66.  
  67. if(!NTC_InTown()) {
  68. if((NTConfig_CheckSelfSafe.indexOf("01") != -1) && NTT_NeedPots()) {
  69. Print("I need some more potions!");
  70. return NTTMGR_VisitTown();
  71. }
  72. }
  73.  
  74. if(n < 2)
  75. {
  76. if(clearpath)
  77. {
  78. if(!NTA_ClearPosition('20', true, '2')) { return false; }
  79. NTP_DoPrecast(false);
  80. NTM_MoveTo(me.areaid, _path[i][0], _path[i][1], 1);
  81. }
  82. }
  83. else if(_retry < retry)
  84. {
  85. _path = GetPath(areaid, me.x, me.y, x, y, _teleport);
  86.  
  87. if(!_path) { return false; }
  88.  
  89. i = -1;
  90. _retry++;
  91. _attacked = false;
  92. }
  93. else if((!_attacked) && (!NTConfig_SwitchTele))
  94. {
  95. NTA_ClearPosition(10, true);
  96. //NTSI_PickItems();
  97. _attacked = true;
  98. _retry = 0;
  99. }
  100. else {
  101. return false;
  102. }
  103. }
  104.  
  105. if(NTConfig_SwitchTele && canswitch){
  106. if(NTC_SwapWeapons(0)){
  107. if(debugMove) {
  108. switchedToAttack = me.weaponstab == 0;
  109. Print(COLOR_1 + "Swapped to attack " + switchedToAttack);
  110. }
  111. }
  112. }
  113.  
  114. return true;
  115. }
  116.  
  117. function NTM_MoveToPresetUnit(areaid, unittype, classid, offsetx, offsety, clearpath)
  118. {
  119. var i, n;
  120. var _unit;
  121.  
  122. if(arguments.length < 4)
  123. {
  124. offsetx = 0;
  125. offsety = 0;
  126. }
  127.  
  128. if(arguments.length < 6)
  129. clearpath = false;
  130.  
  131. for(i = 0 ; i <= 2 ; i++)
  132. {
  133. _unit = GetPresetUnits(areaid, unittype);
  134.  
  135. if(_unit)
  136. {
  137. for(n = 0 ; n < _unit.length ; n++)
  138. {
  139. if(_unit[n].id == classid)
  140. return NTM_MoveTo(areaid, _unit[n].roomx*5+_unit[n].x+offsetx, _unit[n].roomy*5+_unit[n].y+offsety, 3, clearpath);
  141. }
  142. }
  143.  
  144. if(i < 2)
  145. NTC_Delay(500);
  146. }
  147.  
  148. return false;
  149. }
  150.  
  151. function NTM_MoveToStair(areaid, subareaid, offsetx, offsety, clearpath)
  152. {
  153. var i, n;
  154. var _unit;
  155.  
  156. if(arguments.length < 3)
  157. {
  158. offsetx = 0;
  159. offsety = 0;
  160. }
  161.  
  162. if(arguments.length < 5)
  163. clearpath = false;
  164.  
  165. for(i = 0 ; i <= 2 ; i++)
  166. {
  167. _unit = GetPresetUnits(areaid, NTC_UNIT_TILE);
  168.  
  169. if(_unit)
  170. {
  171. for(n = 0 ; n < _unit.length ; n++)
  172. {
  173. if(_unit[n].subareaid == subareaid) { return NTM_MoveTo(areaid, _unit[n].roomx*5+_unit[n].x+offsetx, _unit[n].roomy*5+_unit[n].y+offsety, 3, clearpath); }
  174. }
  175. }
  176.  
  177. if(i < 2)
  178. NTC_Delay(500);
  179. }
  180.  
  181. return false;
  182. }
  183.  
  184. function NTM_TeleportTo(x, y)
  185. {
  186. NTC_CastSkill(54, NTC_HAND_RIGHT, x, y);
  187.  
  188. if(NTConfig_TeleGrab == 1){
  189. NTConfig_TeleGrab++;
  190. NTSI_PickItems();
  191. NTConfig_TeleGrab--;
  192. }
  193.  
  194. MyCS_CatchShrine();
  195.  
  196. for(var i = 0 ; i < 15 ; i++)
  197. {
  198. if(Math.abs(me.x-x) < 4 && Math.abs(me.y-y) < 4){
  199. return true;
  200. }
  201.  
  202. NTC_Delay(NTC_DELAY_FRAME);
  203. }
  204. return false;
  205. }
  206.  
  207. function NTM_WalkTo(x, y) { // kolton's updated walkto
  208. var i, distance, nTimer,
  209. nFail = 0,
  210. attemptCount = 0;
  211.  
  212. if (me.runwalk === 0) {
  213. me.runwalk = 1;
  214. }
  215.  
  216. MoveLoop : while (GetDistance(me.x, me.y, x, y) > 3 && me.mode !== 17) {
  217. if (me.classid == 3) {
  218. NTC_PutSkill(115, NTC_HAND_RIGHT);
  219. }
  220.  
  221. ClickMap(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, x, y);
  222. NTC_Delay(40);
  223. ClickMap(NTC_CLICK_LUP, NTC_SHIFT_NONE, null);
  224.  
  225. attemptCount += 1;
  226. nTimer = GetTickCount();
  227.  
  228. while (me.mode !== 2 && me.mode !== 3 && me.mode !== 6) {
  229. if (me.mode === 17) {
  230. break MoveLoop;
  231. }
  232.  
  233. if ((GetTickCount() - nTimer) > 500) {
  234. nFail++;
  235.  
  236. if (nFail === 2) {
  237. return false;
  238. }
  239.  
  240. ClickMap(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, me.x + Random(-3, 3), me.y + Random(-3, 3));
  241. NTC_Delay(40);
  242. ClickMap(NTC_CLICK_LUP, NTC_SHIFT_NONE, null);
  243.  
  244. continue MoveLoop;
  245. }
  246.  
  247. NTC_Delay(40);
  248. }
  249.  
  250. while (me.mode !== 1 && me.mode !== 5 && me.mode !== 17) {
  251. NTC_Delay(40);
  252. }
  253.  
  254. if (attemptCount >= 3) {
  255. return false;
  256. }
  257. }
  258.  
  259. return true;
  260. }
  261.  
  262. function NTM_TakeUnit(unittype, classid)
  263. {
  264. var _unit;
  265. var _prearea;
  266.  
  267. _unit = NTC_FindUnit(unittype, classid, 5);
  268.  
  269. if(!_unit)
  270. return false;
  271.  
  272. _prearea = me.areaid;
  273.  
  274. for(var i = 0 ; i < 20 ; i++)
  275. {
  276. if((i % 5) == 0)
  277. {
  278. if(i == 10)
  279. NTM_MoveTo(_prearea, me.x+6, me.y+6);
  280.  
  281. if(NTM_GetCloserInt(_unit)){// added to fix wlaking to portal bug
  282. //Print(COLOR_1 + " it's working");
  283. NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _unit);
  284. }
  285. }
  286.  
  287. NTC_Delay(200);
  288.  
  289. if(me.areaid != _prearea)
  290. break;
  291. }
  292.  
  293. while(me.areaid == 0)
  294. NTC_Delay(200);
  295.  
  296. if(me.areaid == _prearea)
  297. return false;
  298.  
  299. NTC_PingDelay(NTConfig_AreaDelay);
  300.  
  301. return true;
  302. }
  303.  
  304. function NTM_TakeStair(areaid)
  305. {
  306. var _unit;
  307. var _prearea;
  308.  
  309. _unit = NTM_GetStairInt(areaid);
  310.  
  311. if(!_unit)
  312. return false;
  313.  
  314. _prearea = me.areaid;
  315.  
  316. for(var i = 0 ; i < 20 ; i++)
  317. {
  318. if((i % 5) == 0)
  319. {
  320. if(i == 10)
  321. NTM_MoveTo(_prearea, me.x+6, me.y+6);
  322.  
  323. if(NTM_GetCloserInt(_unit))
  324. NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _unit);
  325. }
  326.  
  327. NTC_Delay(200);
  328.  
  329. if(me.areaid != _prearea)
  330. break;
  331. }
  332.  
  333. while(me.areaid == 0)
  334. NTC_Delay(200);
  335.  
  336. if(me.areaid == _prearea)
  337. return false;
  338.  
  339. NTC_PingDelay(NTConfig_AreaDelay);
  340.  
  341. return true;
  342. }
  343.  
  344. function NTM_TakeWaypoint(areaId, delay) {
  345.  
  346. var i, j;
  347. var _unit;
  348. var _isTelekinesis;
  349.  
  350. if (me.areaid == areaId)
  351. return true;
  352.  
  353. if (arguments.length < 2)
  354. delay = 35;
  355.  
  356. if (NTC_InTown())
  357. me.Cancel(1);
  358.  
  359. _unit = NTM_GetWaypointInt();
  360. if (!_unit)
  361. return false;
  362.  
  363. _isTelekinesis = me.classid === 1 && NTConfig_Telekinesis && NTC_InTown() && NTC_GetSkillLevel(43);
  364.  
  365. for (i = 0; i < 3; i++) {
  366. if(debugVoyageTo) { Print(COLOR_9 + "Inside the main takewp for loop"); }
  367. if (_isTelekinesis) {
  368. _isTelekinesis = GetDistance(me, _unit) > 4 && GetDistance(me, _unit) < 20;
  369. if (i > 0 && _isTelekinesis)
  370. NTM_MoveCloseInt(_unit, Math.round(GetDistance(me, _unit) / 2), false);
  371. }
  372.  
  373. if (_isTelekinesis || NTM_GetCloserInt(_unit)) {
  374.  
  375. for (j = 0; j < delay; j++) {
  376. if ((j % 10) == 0) {
  377. if (i > 0) {
  378. me.Cancel(0);
  379. }
  380. _isTelekinesis ? NTC_CastSkill(43, NTC_HAND_RIGHT, _unit) : NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _unit);
  381. }
  382.  
  383. Delay(200);
  384.  
  385. if (GetUIState(0x14)) {
  386. // build wp we don't have array here
  387. NTM_CheckWps();
  388. // compare the wp we want to take to the wps we don't have
  389. if(debugVoyageTo) { Print(COLOR_9 + "destination area id = " + areaId); }
  390. if(NTConfig_VoyageToMissingWps && wpsDontHave.indexOf(areaId) != -1) {
  391. // if we don't have ws2 wp and haven't done ancients we can't get wp so tell the user
  392. if(areaId == 129 && !me.GetQuest(39, 0)) {
  393. Print("Can't get ws2 wp because you have not complete ancients quest");
  394. NTC_SendLogToOOG(NTC_LOG_COMMON, COLOR_1 + "You need to kill your ancients");
  395. return false;
  396. }
  397. // now we process everything and try and get to the destination area
  398. Print("You don't have the " + GetArea(areaId).name + " wp");
  399. Print("Let's go get it!!");
  400. try {// checks if script/function already loaded
  401. if(NTVT_VoyageToArea(areaId)){ return true;}
  402. return false; // if the above fails return false to end script
  403. }
  404. catch (e) {
  405. if(debugVoyageTo){ Print("Need to include NTVoyageTo.ntl");}
  406. Include("libs/common/NTVoyageTo.ntl");
  407. if(NTVT_VoyageToArea(areaId)){ return true;}
  408. return false; // if the above fails return false to end script
  409. }
  410. }
  411. // we have the wp so business as usual
  412. else if (me.TakeWaypoint(areaId)) {
  413. NTC_PingDelay(NTConfig_AreaDelay);
  414. return true;
  415. }
  416.  
  417.  
  418. break;
  419. }
  420. }
  421. }
  422.  
  423. if (i == 1) {
  424. NTC_RemoveLag(_unit, 1000);
  425. }
  426. else if (i == 2) {
  427. NTC_RemoveLag(_unit, 1000, 10);
  428. }
  429. }
  430.  
  431. return false;
  432. }
  433.  
  434. function NTM_UsePortal(how, dest, ownername, portal)
  435. {
  436. if(me.areaid == dest)
  437. return true;
  438.  
  439. if(NTC_InTown())
  440. me.Cancel(1);
  441.  
  442. if(NTM_ChangeAreaInt(how, dest, ownername, portal))
  443. {
  444. NTC_PingDelay(NTConfig_AreaDelay);
  445. if(me.areaid == 103){ Delay(250);NTM_MoveTo(103, 5046, 5037);}// wall bug fix
  446. return true;
  447. }
  448.  
  449. return false;
  450. }
  451.  
  452. function NTM_MakeTP(dest)
  453. {
  454. var _usetp = true;
  455. var _portal;
  456. var _portalname;
  457.  
  458. if(NTC_InTown())
  459. return true;
  460.  
  461. if(arguments.length < 1)
  462. _usetp = false;
  463.  
  464. if(!NTC_CastSkill(220, NTC_HAND_RIGHT))
  465. return false;
  466.  
  467. NTC_PingDelay(500);
  468.  
  469. _portalname = GetLocaleString(3226);
  470.  
  471. for(var i = 0 ; i <= 2 ; i++)
  472. {
  473. _portal = NTC_FindUnit(NTC_UNIT_OBJECT, _portalname);
  474.  
  475. if(_portal)
  476. {
  477. do
  478. {
  479. if(_portal.mode == 2 && NTC_CheckOwner(_portal))
  480. {
  481. if(_usetp)
  482. return NTM_UsePortal("BluePortal", dest, me.name, _portal);
  483.  
  484. return true;
  485. }
  486. } while(_portal.GetNext());
  487. }
  488.  
  489. if(i < 2)
  490. NTC_Delay(500);
  491. }
  492.  
  493. return false;
  494. }
  495.  
  496. // Internal function
  497. function NTM_GetStairInt(areaid)
  498. {
  499. var _tile;
  500.  
  501. for(var i = 0 ; i <= 2 ; i++)
  502. {
  503. _tile = NTC_FindUnit(NTC_UNIT_TILE);
  504.  
  505. if(_tile)
  506. {
  507. do
  508. {
  509. if(!areaid || _tile.subareaid == areaid)
  510. return _tile;
  511. } while(_tile.GetNext());
  512. }
  513.  
  514. if(i < 2)
  515. NTC_Delay(500);
  516. }
  517.  
  518. return null;
  519. }
  520.  
  521. function NTM_GetWaypointInt()
  522. {
  523. var _waypoint;
  524. var _classid;
  525.  
  526. for(var i = 0 ; i <= 2 ; i++)
  527. {
  528. _waypoint = NTC_FindUnit(NTC_UNIT_OBJECT);
  529.  
  530. if(_waypoint)
  531. {
  532. do
  533. {
  534. _classid = _waypoint.classid;
  535.  
  536. if(_classid == 119 || _classid == 145 || _classid == 156 || _classid == 157
  537. || _classid == 237 || _classid == 238 || _classid == 288 || _classid == 323
  538. || _classid == 324 || _classid == 398 || _classid == 402 || _classid == 429
  539. || _classid == 494 || _classid == 496 || _classid == 511 || _classid == 539)
  540. return _waypoint;
  541. } while(_waypoint.GetNext());
  542. }
  543.  
  544. if(i < 2)
  545. NTC_Delay(500);
  546. }
  547.  
  548. return null;
  549. }
  550.  
  551. function NTM_ChangeAreaInt(how, dest, ownername, myportal)
  552. {
  553. var _portal;
  554. var _playerportal = false;
  555. var _prearea;
  556.  
  557. if(how == "BluePortal")
  558. {
  559. if(!ownername)
  560. ownername = me.name;
  561.  
  562. _playerportal = true;
  563. }
  564.  
  565. if(arguments.length > 3 && myportal)
  566. _portal = myportal;
  567. else
  568. {
  569. _portal = NTM_FindCorrectPortalInt(_playerportal, dest, ownername);
  570.  
  571. if(_portal < 0)
  572. _portal = NTM_FindPortalAreaInt(dest);
  573.  
  574. if(_portal == -1)
  575. return false;
  576. }
  577.  
  578. if(!_portal)
  579. return false;
  580.  
  581. _prearea = me.areaid;
  582.  
  583. for(var i = 0 ; i < 80 ; i++)
  584. {
  585. if((i % 10) == 0)
  586. {
  587. if (me.classid === 1 && NTConfig_Telekinesis && NTC_InTown() && NTC_GetSkillLevel(43) && GetDistance(me, _portal) > 5 && GetDistance(me, _portal) < 23)
  588. {
  589. if (i > 10)
  590. NTM_MoveCloseInt(_portal, Math.round(GetDistance(me, _portal) / 2), false);
  591.  
  592. NTC_CastSkill(43, NTC_HAND_RIGHT, _portal);
  593. }
  594. else{
  595. if(NTC_GetSkillLevel(54) < 1){
  596. NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _portal);
  597. }
  598. else if(NTM_GetCloserIntS(_portal)){// added to fix walking to portal bug
  599. NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _portal);
  600. }
  601. }
  602. }
  603.  
  604. NTC_Delay(100);
  605.  
  606. if(me.areaid != _prearea)
  607. {
  608. while(me.areaid == 0)
  609. NTC_Delay(200);
  610.  
  611. if(me.areaid != _prearea)
  612. {
  613. NTC_PingDelay(NTConfig_AreaDelay);
  614. return true;
  615. }
  616.  
  617. break;
  618. }
  619. }
  620.  
  621. return (me.areaid != _prearea);
  622. }
  623.  
  624. function NTM_FindCorrectPortalInt(blueportal, dest, ownername)
  625. {
  626. var _portal;
  627. var _portalname;
  628.  
  629. _portalname = GetLocaleString(3226);
  630.  
  631. if(blueportal)
  632. {
  633. for(var i = 0 ; i <= 2 ; i++)
  634. {
  635. _portal = NTC_FindUnit(NTC_UNIT_OBJECT, _portalname);
  636.  
  637. if(_portal)
  638. {
  639. do
  640. {
  641. if(_portal.mode == 2 && NTC_CheckOwner(_portal, ownername) && GetDistance(me, _portal) <= 30 && (_portal.subareaid == dest || _portal.subareaid == dest + 768 || _portal.subareaid == dest + 256))
  642. return _portal;
  643. } while(_portal.GetNext());
  644. }
  645.  
  646. if(i < 2)
  647. NTC_Delay(500);
  648. }
  649.  
  650. return -2;
  651. }
  652. else
  653. {
  654. for(var i = 0 ; i <= 2 ; i++)
  655. {
  656. _portal = NTC_FindUnit(NTC_UNIT_OBJECT, _portalname);
  657.  
  658. if(_portal)
  659. {
  660. do
  661. {
  662. if(_portal.mode == 2 && !_portal.GetParent())
  663. return _portal;
  664. } while(_portal.GetNext());
  665. }
  666.  
  667. if(i < 2)
  668. NTC_Delay(500);
  669. }
  670. }
  671.  
  672. return -3;
  673. }
  674.  
  675. function NTM_FindPortalAreaInt(dest)
  676. {
  677. var _portal;
  678. var _portalname;
  679.  
  680. _portalname = GetLocaleString(3226);
  681.  
  682. for(var i = 0 ; i <= 2 ; i++)
  683. {
  684. _portal = NTC_FindUnit(NTC_UNIT_OBJECT, _portalname);
  685.  
  686. if(_portal)
  687. {
  688. do
  689. {
  690. if(_portal.mode == 2 && (_portal.subareaid == dest || _portal.subareaid == dest+768))
  691. {
  692. if(_portal.GetParent())
  693. {
  694. if(NTC_CheckOwner(_portal) || NTC_InMyParty(_portal.GetParent()))
  695. return _portal;
  696. }
  697. else
  698. return _portal;
  699. }
  700. } while(_portal.GetNext());
  701. }
  702.  
  703. if(i < 2)
  704. NTC_Delay(500);
  705. }
  706.  
  707. return -1;
  708. }
  709.  
  710. function NTM_GetCloserInt(unit)
  711. {
  712. if(GetDistance(me, unit) > 2)
  713. return NTM_MoveTo(unit.areaid, unit.x, unit.y);
  714.  
  715. return true;
  716. }
  717.  
  718. function NTM_GetCloserIntS(unit){
  719. //Print(COLOR_1 + " we are here");
  720. if(GetDistance(me, unit) > 3)
  721. return NTM_MoveTo(unit.areaid, unit.x+1, unit.y);
  722. return true;
  723. }
  724.  
  725. function NTM_MoveCloseInt(target, maxrange)
  726. {
  727. var _result = true;
  728. var _dist = GetDistance(me, target);
  729.  
  730. if (_dist > maxrange)
  731. {
  732. var _destx, _desty;
  733.  
  734. _destx = me.x + Math.round((_dist - maxrange) * (target.x - me.x) / _dist);
  735. _desty = me.y + Math.round((_dist - maxrange) * (target.y - me.y) / _dist);
  736.  
  737. _result = NTM_MoveTo(target.areaid, _destx, _desty, 1);
  738. }
  739.  
  740. return _result;
  741. }
  742.  
  743. // vector class
  744. function vector()
  745. {
  746. if(arguments.length == 2)
  747. {
  748. this.x = arguments[0];
  749. this.y = arguments[1];
  750. }
  751. else if(arguments.length == 1)
  752. {
  753. this.x = arguments[0].x;
  754. this.y = arguments[0].y;
  755. }
  756. else
  757. {
  758. this.x = 0;
  759. this.y = 0;
  760. }
  761.  
  762. this.rotate = vector_rotate;
  763. this.normalize = vector_normalize;
  764. this.length = vector_length;
  765. this.setlength = vector_setlength;
  766. this.toString = vector_toString;
  767. this.set = vector_set;
  768. this.angle = vector_angle;
  769. }
  770.  
  771. function vector_rotate(degree)
  772. {
  773. if(!degree)
  774. return true;
  775.  
  776. l = this.length();
  777. if(!l)
  778. return false;
  779.  
  780. this.normalize();
  781.  
  782. rad = degree * (Math.PI/180);
  783.  
  784. nx = this.x * Math.cos(rad) - this.y * Math.sin(rad);
  785. ny = this.x * Math.sin(rad) + this.y * Math.cos(rad);
  786.  
  787. this.x = nx;
  788. this.y = ny;
  789.  
  790. this.normalize();
  791. if(l != 1)
  792. this.setlength(l);
  793.  
  794. return true;
  795. }
  796.  
  797. function vector_angle(v)
  798. {
  799. rad_degree = 180 / Math.PI;
  800.  
  801. return Math.acos((this.x*v.x) + (this.y*v.y)) * rad_degree;
  802. }
  803.  
  804. function vector_length()
  805. {
  806. return Math.sqrt((this.x*this.x) + (this.y*this.y));
  807. }
  808.  
  809. function vector_setlength(length)
  810. {
  811. this.normalize();
  812. this.x *= length;
  813. this.y *= length;
  814. }
  815.  
  816. function vector_normalize()
  817. {
  818. l = this.length();
  819. if(!l)
  820. return false;
  821.  
  822. this.x /= l;
  823. this.y /= l;
  824.  
  825. return true;
  826. }
  827.  
  828. function vector_toString()
  829. {
  830. str = "(";
  831. str += Math.round(this.x*1000)/1000;
  832. str += " , ";
  833. str += Math.round(this.y*1000)/1000;
  834. str += ") : ";
  835. str += Math.round(this.length()*1000)/1000;
  836.  
  837. return str;
  838. }
  839.  
  840. function vector_set(tx, ty)
  841. {
  842. if(arguments.length == 1)
  843. {
  844. this.x = tx.x;
  845. this.y = tx.y;
  846. }
  847. else if(arguments.length == 2)
  848. {
  849. this.x = tx;
  850. this.y = ty;
  851. }
  852. }
  853.  
  854. // coord class
  855. function coord()
  856. {
  857. this.data = null;
  858.  
  859. if(arguments.length == 3)
  860. {
  861. this.x = arguments[0];
  862. this.y = arguments[1];
  863. this.data = arguments[2];
  864. }
  865. else if(arguments.length == 2)
  866. {
  867. this.x = arguments[0];
  868. this.y = arguments[1];
  869. }
  870. else if(arguments.length == 1)
  871. {
  872. this.x = arguments[0].x;
  873. this.y = arguments[0].y;
  874. }
  875. else
  876. {
  877. this.x = 0;
  878. this.y = 0;
  879. }
  880.  
  881. this.dist = coord_dist;
  882. this.dist2 = coord_dist2;
  883. this.dir = coord_dir;
  884. this.move = coord_move;
  885. this.set = coord_set;
  886. this.toString = coord_toString;
  887. }
  888.  
  889. function coord_set(tx, ty, d)
  890. {
  891. if(arguments.length == 1)
  892. {
  893. this.x = tx.x;
  894. this.y = tx.y;
  895.  
  896. if(tx.data)
  897. this.data = tx.data;
  898. else
  899. this.data = null;
  900. }
  901. else if(arguments.length == 2)
  902. {
  903. this.x = tx;
  904. this.y = ty;
  905. this.data = null;
  906. }
  907. else if(arguments.length == 3)
  908. {
  909. this.x = tx;
  910. this.y = ty;
  911. this.data = d;
  912. }
  913. }
  914.  
  915. function coord_dist(tx, ty)
  916. {
  917. if(arguments.length == 1)
  918. {
  919. vx = this.x - tx.x;
  920. vy = this.y - tx.y;
  921.  
  922. return Math.round(Math.sqrt((vx*vx) + (vy*vy)));
  923. }
  924. else if(arguments.length == 2)
  925. {
  926. vx = this.x - tx;
  927. vy = this.y - ty;
  928.  
  929. return Math.round(Math.sqrt((vx*vx) + (vy*vy)));
  930. }
  931. }
  932.  
  933. function coord_dist2(tx, ty)
  934. {
  935. if(arguments.length == 1)
  936. {
  937. vx = this.x - tx.x;
  938. vy = this.y - tx.y;
  939.  
  940. return Math.floor((vx*vx) + (vy*vy));
  941. }
  942. else if(arguments.length == 2)
  943. {
  944. vx = this.x - tx;
  945. vy = this.y - ty;
  946.  
  947. return Math.floor((vx*vx) + (vy*vy));
  948. }
  949. }
  950.  
  951. function coord_dir(tx, ty)
  952. {
  953. if(arguments.length == 1)
  954. {
  955. v = new vector(tx.x-this.x, tx.y-this.y);
  956. v.normalize();
  957.  
  958. return v;
  959. }
  960. else if(arguments.length == 2)
  961. {
  962. v = new vector(tx-this.x, ty-this.y);
  963. v.normalize();
  964.  
  965. return v;
  966. }
  967. }
  968.  
  969. function coord_move(vec, d)
  970. {
  971. if(d)
  972. {
  973. this.x += Math.round(vec.x*d);
  974. this.y += Math.round(vec.y*d);
  975.  
  976. return true;
  977. }
  978. else if(vec.length())
  979. {
  980. this.x += Math.round(vec.x);
  981. this.y += Math.round(vec.y);
  982.  
  983. return true;
  984. }
  985.  
  986. return false;
  987. }
  988.  
  989. function coord_toString()
  990. {
  991. return "( " + this.x + " , " + this.y + " ) " + this.data;
  992. }
  993.  
  994. function NTM_UseTelekinesisPortal()
  995. {
  996. var _portal = NTC_FindUnit(NTC_UNIT_OBJECT, GetLocaleString(3226));
  997.  
  998. if (_portal)
  999. {
  1000. do
  1001. {
  1002. if (_portal.name == GetLocaleString(3226) && NTC_CheckOwner(_portal) && GetDistance(me, _portal) < 23)
  1003. return true;
  1004. } while (_portal.GetNext());
  1005. }
  1006.  
  1007. return false;
  1008. }
  1009.  
  1010. function NTM_UseTelekinesisWaypoint()
  1011. {
  1012. var _waypoint = NTC_FindUnit(NTC_UNIT_OBJECT, GetLocaleString(22526));
  1013.  
  1014. if (_waypoint)
  1015. {
  1016. if(me.act == 1 || me.act == 4)
  1017. {
  1018. if (GetDistance(me, _waypoint) < 17)
  1019. return true;
  1020. }
  1021. else
  1022. {
  1023. if (GetDistance(me, _waypoint) < 20)
  1024. return true;
  1025. }
  1026. }
  1027.  
  1028. return false;
  1029. }
  1030.  
  1031. function NTM_UseTelekinesisStash()
  1032. {
  1033. var _stash = NTC_FindUnit(NTC_UNIT_OBJECT, NTC_UNIT_STASH);
  1034.  
  1035. if (_stash)
  1036. {
  1037. if (GetDistance(me, _stash) < 23)
  1038. return true;
  1039. }
  1040.  
  1041. return false;
  1042. }
  1043.  
  1044. function NTM_MoveToObject(areaid, unittype, low, high, offsetx, offsety, clearpath)
  1045. {
  1046. var _unit;
  1047.  
  1048. if(arguments.length < 4)
  1049. high = low;
  1050.  
  1051. if(arguments.length < 5)
  1052. {
  1053. offsetx = 0;
  1054. offsety = 0;
  1055. }
  1056.  
  1057. if(arguments.length < 7)
  1058. clearpath = false;
  1059.  
  1060. _unit = GetPresetUnits(areaid, unittype);
  1061.  
  1062. if(!_unit)
  1063. return false;
  1064.  
  1065. for(var i = 0 ; i < _unit.length ; i++)
  1066. {
  1067. if(_unit[i].id >= low && _unit[i].id <= high)
  1068. return NTM_MoveTo(areaid, _unit[i].roomx*5+_unit[i].x+offsetx, _unit[i].roomy*5+_unit[i].y+offsety, 3, clearpath);
  1069. }
  1070.  
  1071. return false;
  1072. }
  1073.  
  1074. // credit to korean's for this. When your stuck korean mods ftw. Just changed it a bit
  1075. function NTM_KoMoveToPresetUnit(areaId, unitType, classId, offsetX, offsetY, clearpath) {
  1076.  
  1077. var i, j;
  1078. var _oldUnits, _newUnits;
  1079.  
  1080. if (arguments.length < 4) { offsetX = 0; offsetY = 0; }
  1081. if (arguments.length < 6) { clearpath = false }
  1082. for (i = 0; i < 3; i++)
  1083. {
  1084. _oldUnits = GetPresetUnits(areaId, unitType);
  1085. if (_oldUnits)
  1086. {
  1087. for (j = 0; j < _oldUnits.length; j++)
  1088. {
  1089. if (_oldUnits[j].id == classId)
  1090. {
  1091. if (NTM_MoveTo(areaId, _oldUnits[j].roomx * 5 + _oldUnits[j].x + offsetX, _oldUnits[j].roomy * 5 + _oldUnits[j].y + offsetY, 3, clearpath))
  1092. return true;
  1093. else
  1094. {
  1095. switch (me.areaid)
  1096. {
  1097. case 28:
  1098. case 29:
  1099. case 30:
  1100. case 31:
  1101. case 51:
  1102. case 52:
  1103. case 53:
  1104. case 54:
  1105. var _moveXy = [[30, 0], [0, 30], [-30, 0], [0, -30]];
  1106.  
  1107. for (i = 0; i < 4; i++)
  1108. {
  1109. while (true)
  1110. {
  1111. if (!NTM_TeleportTo(me.x + _moveXy[i][0], me.y + _moveXy[i][1]))
  1112. break;
  1113. if (NTM_MoveTo(areaId, _oldUnits[j].roomx * 5 + _oldUnits[j].x + offsetX, _oldUnits[j].roomy * 5 + _oldUnits[j].y + offsetY, 0, clearpath))
  1114. return true;
  1115. }
  1116. }
  1117. break;
  1118. }
  1119.  
  1120. return false;
  1121. }
  1122. }
  1123. }
  1124. }
  1125.  
  1126. if (i < 2)
  1127. Delay(500);
  1128. }
  1129.  
  1130. return false;
  1131. }
  1132.  
  1133. // credit to korean's for this. When your stuck korean mods ftw. Just changed it a bit
  1134. function NTM_KoMoveToStair(areaId, subAreaId, offsetX, offsetY, clearpath) {
  1135.  
  1136. var i, j;
  1137. var _oldUnits, _newUnits;
  1138.  
  1139. if (arguments.length < 3) { offsetX = 0; offsetY = 0; }
  1140. if (arguments.length < 5) { clearpath = false }
  1141.  
  1142. for (i = 0; i < 3; i++)
  1143. {
  1144. _oldUnits = GetPresetUnits(areaId, NTC_UNIT_TILE);
  1145. if (_oldUnits)
  1146. {
  1147. for (j = 0; j < _oldUnits.length; j++)
  1148. {
  1149. if (_oldUnits[j].subareaid == subAreaId)
  1150. {
  1151. if (NTM_MoveTo(areaId, _oldUnits[j].roomx * 5 + _oldUnits[j].x + offsetX, _oldUnits[j].roomy * 5 + _oldUnits[j].y + offsetY, 3, clearpath))
  1152. return true;
  1153. else
  1154. {
  1155. switch (me.areaid)
  1156. {
  1157. case 28:
  1158. case 29:
  1159. case 30:
  1160. case 31:
  1161. case 51:
  1162. case 52:
  1163. case 53:
  1164. case 54:
  1165. var _moveXy = [[30, 0], [0, 30], [-30, 0], [0, -30]];
  1166.  
  1167. for (i = 0; i < 4; i++)
  1168. {
  1169. while (true)
  1170. {
  1171. if (!NTM_TeleportTo(me.x + _moveXy[i][0], me.y + _moveXy[i][1]))
  1172. break;
  1173. if (NTM_MoveTo(areaId, _oldUnits[j].roomx * 5 + _oldUnits[j].x + offsetX, _oldUnits[j].roomy * 5 + _oldUnits[j].y + offsetY, 0, clearpath))
  1174. return true;
  1175. }
  1176. }
  1177. break;
  1178. }
  1179.  
  1180. return false;
  1181. }
  1182. }
  1183. }
  1184. }
  1185.  
  1186. if (i < 2)
  1187. Delay(500);
  1188. }
  1189.  
  1190. return false;
  1191. }
  1192.  
  1193. var wpsDontHave = [];
  1194. function NTM_CheckWps() {
  1195. wpsDontHave = [];// clears array before rebuilding it
  1196. for(var i = 0; i < 39; i++) {
  1197. if(!GetWaypoint(i)) {
  1198. if(debugVoyageTo) { Print(COLOR_1 + "We don't have wp # " + NTC_WPIdToAreaId[i]); }
  1199. wpsDontHave.push(NTC_WPIdToAreaId[i]);
  1200. }
  1201. else if(GetWaypoint(i) && debugVoyageTo) {
  1202. Print(COLOR_2 + "We have wp # " + NTC_WPIdToAreaId[i]);
  1203. }
  1204. }
  1205. return;
  1206. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement