Guest User

Untitled

a guest
Apr 20th, 2018
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 33.22 KB | None | 0 0
  1. //cmd vars - do NOT touch
  2. var _MyDT_PreMessage = "";
  3. var _sealpos = 0;
  4. var safex;
  5. var safey;
  6. var prevx;
  7. var prevy;
  8. //leader var, will be in char config, maybe
  9. var leader = "Dagger";
  10.  
  11. function NTMain() {
  12. Include("libs/common/NTCommon.ntl");
  13. NTC_IncludeLibs();
  14. NTC_IncludeConfig("NTBot/char_configs");
  15.  
  16. NT_LoadConfig();
  17. NTSI_LoadNIPFiles("NTBot/item_configs");
  18.  
  19. NTA_Initialize();
  20.  
  21. if(!NTTM_CheckAct()) {
  22. NTC_SendMsgToScript("NTBotGame.ntj", "NTTM_CheckAct()");
  23. return;
  24. }
  25.  
  26. NTC_Delay(1000);
  27.  
  28. if(!NTTM_CheckAct(4)) {
  29. NTC_SendMsgToScript("NTBotGame.ntj", "NTTM_CheckAct()");
  30. return;
  31. }
  32.  
  33. RegisterEvent(EVENT_GAMEMSG, quitfunc);
  34.  
  35. TD_File("NTBot/bots/TeamD.txt", 1);
  36.  
  37. if(me.classid == 1) {
  38. if(!NTTM_CheckAct(1)) {
  39. NTC_SendMsgToScript("NTBotGame.ntj", "NTTM_CheckAct()");
  40. return;
  41. }
  42.  
  43. if(NTConfig_DelayStart)
  44. Say("When seal boss is dead, town!")
  45. NTC_Delay(5000);
  46. Say("darjkeel is excellent mayor of awesome town, he maket rules now!")
  47.  
  48. Print("Loading sorc function");
  49. NTTMGR_TownManager();
  50. TD_Sorcfunc();
  51. }
  52.  
  53. if(me.classid == 3) {
  54. Print("Loading hammer function");
  55. NTTMGR_TownManager();
  56. NTTM_TownMove("portalspot");
  57.  
  58. while(1) {
  59. TD_TeamCommands();
  60. Delay(200);
  61. }
  62. }
  63.  
  64. if(me.classid == 4) {
  65. Print("Loading barb function");
  66. NTTMGR_TownManager();
  67. NTTM_TownMove("portalspot");
  68.  
  69. while(1) {
  70. TD_TeamCommands();
  71. Delay(200);
  72. }
  73. }
  74.  
  75. if(me.classid == 4) {
  76. Print("Loading Necro function");
  77. NTTMGR_TownManager();
  78. NTTM_TownMove("portalspot");
  79.  
  80. while(1) {
  81. TD_TeamCommands();
  82. Delay(200);
  83. }
  84. }
  85.  
  86. if(me.classid == 3) {
  87. Print("Loading Leech Din");
  88. NTTMGR_TownManager();
  89. NTTM_TownMove("portalspot");
  90.  
  91. while(1) {
  92. TD_TeamCommands();
  93. Delay(200);
  94. }
  95. }
  96. NTC_SendMsgToScript("NTBotGame.ntj", "SCRIPT_END");
  97. }
  98.  
  99. function TD_Sorcfunc() { //work in progress!
  100. NTC_Delay(500);
  101.  
  102. if(!NTTM_TownMove("waypoint")) {
  103. NTC_SendMsgToScript("NTBotGame.ntj", "NTTM_TownMove()");
  104. return;
  105. }
  106.  
  107. if(!NTM_TakeWaypoint(107)) {
  108. NTC_SendMsgToScript("NTBotGame.ntj", "NTM_TakeWaypoint()");
  109. return;
  110. }
  111.  
  112. NTC_Delay(500);
  113. NTM_MoveTo(me.areaid, me.x+5, me.y);
  114. for(var i = 0 ; i < 5 ; i++) {
  115. if(NTM_MakeTP())
  116. break;
  117. }
  118.  
  119. TD_File("NTBot/bots/TeamD.txt", 1, ".bo");
  120. Say("Bo Time")
  121. while(!me.GetState(32))
  122. NTC_Delay(500);
  123. Say("darjkeel also stunning handsome and sexy!")
  124.  
  125. NTP_DoPrecast(true);
  126.  
  127. if(!TD_MoveTo(108, 7802, 5591)) { //urdars! and svs!
  128. NTC_SendMsgToScript("NTBotGame.ntj", "TD_MoveTo()");
  129. return;
  130. }
  131.  
  132. if(TD_DetectLayout(1) == 1) {
  133. TD_MoveTo(me.areaid, 7701, 5299);
  134. TD_Deploy(7681, 5299, 0, 0, 15, 15);
  135. for(var i = 0 ; i < 5 ; i++) {
  136. if(NTM_MakeTP())
  137. break;
  138. }
  139. } else {
  140. TD_MoveTo(me.areaid, 7700, 5313);
  141. TD_Deploy(7680, 5313, 15, 15, 0, 0);
  142. for(var i = 0 ; i < 5 ; i++) {
  143. if(NTM_MakeTP())
  144. break;
  145. }
  146. }
  147.  
  148. TD_File("NTBot/bots/TeamD.txt", 1, ".s1"); //vizier
  149. Say("Vizier Up")
  150.  
  151. if(!TD_VizierSeal()){
  152. NTC_SendMsgToScript("NTBotGame.ntj", "Seal opening");
  153. return;
  154. }
  155.  
  156. NTM_MoveTo(me.areaid, safex, safey);
  157. NTC_CastSkill(64)
  158. NTC_CastSkill(42)
  159. NTC_CastSkill(42)
  160. NTC_CastSkill(42)
  161. NTC_CastSkill(64)
  162. NTC_CastSkill(44)
  163. NTC_CastSkill(42)
  164. NTC_CastSkill(64)
  165. NTA_KillMonster(GetLocaleString(2851));
  166. NTA_ClearPosition(0);
  167.  
  168. NTM_MoveTo(me.areaid, safex, safey);
  169. Say("Vizier Dead")
  170. NTA_ClearPosition(0);
  171. NTSI_PickItems();
  172.  
  173. if(!NTTMGR_CheckSafe(NTConfig_CheckSelfSafe, NTConfig_CheckMercSafe))
  174. {
  175. NTC_SendMsgToScript("NTBotGame.ntj", "NTTMGR_CheckSafe()");
  176. return;
  177.  
  178. }
  179. NTP_DoPrecast(true);
  180.  
  181. if(TD_DetectLayout(3) == 1) {
  182. TD_MoveTo(me.areaid, 7900, 5291);
  183. TD_Deploy(7920, 5291, 15, 15, 0, 0);
  184. for(var i = 0 ; i < 5 ; i++) {
  185. if(NTM_MakeTP())
  186. break;
  187. }
  188. } else {
  189. TD_MoveTo(me.areaid, 7910, 5278);
  190. TD_Deploy(7930, 5278, 0, 15, 15, 0);
  191. for(var i = 0 ; i < 5 ; i++) {
  192. if(NTM_MakeTP())
  193. break;
  194. }
  195. }
  196.  
  197. TD_File("NTBot/bots/TeamD.txt", 1, ".s3"); //infector
  198. Say("Infector Up")
  199.  
  200. if(!TD_InfectorSeal()){
  201. NTC_SendMsgToScript("NTBotGame.ntj", "Seal opening");
  202. return;
  203. }
  204.  
  205. NTM_MoveTo(me.areaid, safex, safey);
  206. NTC_CastSkill(64)
  207. NTC_CastSkill(42)
  208. NTC_CastSkill(42)
  209. NTC_CastSkill(42)
  210. NTC_CastSkill(64)
  211. NTC_CastSkill(44)
  212. NTC_CastSkill(42)
  213. NTC_CastSkill(64)
  214. NTA_KillMonster(GetLocaleString(2853));
  215. NTA_ClearPosition(0);
  216.  
  217. NTM_MoveTo(me.areaid, safex, safey);
  218. Say("Infector Dead")
  219. NTA_ClearPosition(0);
  220. NTSI_PickItems();
  221.  
  222.  
  223. if(!NTTMGR_CheckSafe(NTConfig_CheckSelfSafe, NTConfig_CheckMercSafe))
  224. {
  225. NTC_SendMsgToScript("NTBotGame.ntj", "NTTMGR_CheckSafe()");
  226. return;
  227. }
  228.  
  229. NTP_DoPrecast(true);
  230.  
  231. if(TD_DetectLayout(2) == 1) {
  232. TD_MoveTo(me.areaid, 7776, 5230);
  233. TD_Deploy(7776, 5220, 0, 0, 15, 15);
  234. for(var i = 0 ; i < 5 ; i++) {
  235. if(NTM_MakeTP())
  236. break;
  237. }
  238. } else {
  239. TD_MoveTo(me.areaid, 7779, 5200);
  240. TD_Deploy(7779, 5180, 0, 0, 15, 15);
  241. for(var i = 0 ; i < 5 ; i++) {
  242. if(NTM_MakeTP())
  243. break;
  244. }
  245. }
  246.  
  247. TD_File("NTBot/bots/TeamD.txt", 1, ".s2"); //de seis
  248. Say("Seis Up")
  249. if(!TD_DeSeisSeal()){
  250. NTC_SendMsgToScript("NTBotGame.ntj", "Seal opening");
  251. return;
  252. }
  253. NTM_MoveTo(me.areaid, safex, safey);
  254. NTC_CastSkill(64)
  255. NTC_CastSkill(42)
  256. NTC_CastSkill(42)
  257. NTC_CastSkill(42)
  258. NTC_CastSkill(64)
  259. NTC_CastSkill(44)
  260. NTC_CastSkill(42)
  261. NTC_CastSkill(64)
  262. NTA_ClearPosition(0);
  263. NTA_KillMonster(GetLocaleString(2852));
  264.  
  265. NTM_MoveTo(me.areaid, safex, safey);
  266. NTC_Delay(7000);
  267. Say("Seis Dead")
  268. NTA_ClearPosition(0);
  269. NTSI_PickItems();
  270.  
  271. if(!NTTMGR_CheckSafe(NTConfig_CheckSelfSafe, NTConfig_CheckMercSafe))
  272. {
  273. NTC_SendMsgToScript("NTBotGame.ntj", "NTTMGR_CheckSafe()");
  274. return;
  275. }
  276. NTP_DoPrecast(true);
  277.  
  278.  
  279. if(!NTM_MoveTo(me.areaid, 7745, 5245)) {
  280. NTC_SendMsgToScript("NTBotGame.ntj", "NTM_MoveTo()");
  281. return;
  282.  
  283. }
  284. NTM_MakeTP();
  285. Say("Diablo Up")
  286.  
  287. TD_File("NTBot/bots/TeamD.txt", 1, ".d");
  288.  
  289. if(!NTA_KillMonster(243)) {
  290. NTC_Delay(30000);
  291. return;
  292. }
  293. NTSI_PickItems();
  294.  
  295. Say("Diablo Dead")
  296. //anything else?
  297. }
  298.  
  299. //--internal functions--
  300.  
  301. function quitfunc(msg, type) { //quit when leader leaves game
  302. if(msg.indexOf(leader) != -1 && (msg.indexOf("weaken") != -1 || msg.indexOf("timeout") != -1)) { //if leader quits
  303. //if(msg.indexOf("weaken") != -1 || msg.indexOf("timeout") != -1) { //if anyone quits
  304. NTC_Delay(500);
  305. ExitGame();
  306. }
  307. }
  308.  
  309. function TD_Preattack(classid, extrahammers) { //extra hammers = hammers cast after the seal boss is spawned
  310. NTC_PutSkill(NTConfig_AttackSkill[4], NTC_HAND_RIGHT);
  311. while(!NTC_FindUnit(NTC_UNIT_MONSTER, classid))
  312. NTC_CastSkill(NTConfig_AttackSkill[3], 2);
  313. for(var i = 0 ; i < extrahammers ; i++) {
  314. NTC_CastSkill(NTConfig_AttackSkill[3], 2);
  315. }
  316. }
  317.  
  318. function TD_VizierSeal() { //vizier
  319. for(var i = 0 ; i < 5 ; i++){
  320. NTM_MoveToPresetUnit(me.areaid, 2, 395);
  321. var _seal = NTC_FindUnit(NTC_UNIT_OBJECT, 395, 5);
  322. NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _seal);
  323.  
  324. NTC_Delay(350);
  325.  
  326. if(_seal.mode <= 0)
  327. NTM_MoveTo(me.areaid, safex, safey);
  328. else
  329. break;
  330.  
  331. NTC_Delay(250);
  332.  
  333. if(i == 4 && _seal.mode <= 0)
  334. return false;
  335. }
  336. for(i = 0 ; i < 5 ; i++){
  337. NTM_MoveToPresetUnit(me.areaid, 2, 396);
  338. _seal = NTC_FindUnit(NTC_UNIT_OBJECT, 396, 5);
  339. NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _seal);
  340.  
  341. NTC_Delay(350);
  342.  
  343. if(_seal.mode <= 0)
  344. NTM_MoveTo(me.areaid, safex, safey);
  345. else
  346. break;
  347.  
  348. NTC_Delay(250);
  349.  
  350. if(i == 4 && _seal.mode <= 0)
  351. return false;
  352. }
  353. return true;
  354. }
  355.  
  356. function TD_DeSeisSeal(){ //de seis
  357. for(var i = 0 ; i < 5 ; i++){
  358. NTM_MoveToPresetUnit(me.areaid, 2, 394);
  359. _seal = NTC_FindUnit(NTC_UNIT_OBJECT, 394, 5);
  360. NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _seal);
  361.  
  362. NTC_Delay(350);
  363.  
  364. if(_seal.mode <= 0)
  365. NTM_MoveTo(me.areaid, safex, safey);
  366. else
  367. break;
  368.  
  369. NTC_Delay(250);
  370.  
  371. if(i == 4 && _seal.mode <= 0)
  372. return false;
  373. }
  374. return true;
  375. }
  376.  
  377. function TD_InfectorSeal() { //infector
  378. for(var i = 0 ; i < 5 ; i++){
  379. NTM_MoveToPresetUnit(me.areaid, 2, 393);
  380. _seal = NTC_FindUnit(NTC_UNIT_OBJECT, 393, 5);
  381. NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _seal);
  382.  
  383. NTC_Delay(350);
  384.  
  385. if(_seal.mode <= 0)
  386. NTM_MoveTo(me.areaid, safex, safey);
  387. else
  388. break;
  389.  
  390. NTC_Delay(250);
  391.  
  392. if(i == 4 && _seal.mode <= 0)
  393. return false;
  394. }
  395. for(i = 0 ; i < 5 ; i++){
  396. NTM_MoveToPresetUnit(me.areaid, 2, 392);
  397. _seal = NTC_FindUnit(NTC_UNIT_OBJECT, 392, 5);
  398. NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _seal);
  399.  
  400. NTC_Delay(350);
  401.  
  402. if(_seal.mode <= 0)
  403. NTM_MoveTo(me.areaid, safex, safey);
  404. else
  405. break;
  406.  
  407. NTC_Delay(250);
  408.  
  409. if(i == 4 && _seal.mode <= 0)
  410. return false;
  411. }
  412. return true;
  413. }
  414.  
  415. function TD_TeamCommands() {
  416. var _msg = TD_File("NTBot/bots/TeamD.txt", 0);
  417.  
  418. if (_msg && _msg != _MyDT_PreMessage) {
  419. _MyDT_PreMessage = _msg;
  420.  
  421. switch (_msg.substring(_msg.indexOf("/") + 1)) {
  422. case ".bo":
  423. if(me.classid == 3) { //Hammerdin
  424. NTM_UsePortal("BluePortal", 107, leader);
  425. NTC_Delay(500);
  426. NTP_DoPrecast(true);
  427.  
  428. while(!me.GetState(32))
  429. NTC_Delay(3500);
  430.  
  431. if(!NTM_UsePortal("BluePortal", 103, leader)) //or make my own?
  432. NTTM_CheckAct();
  433. }
  434. if(me.classid == 4) { //Barb
  435. NTM_UsePortal("BluePortal", 107, leader);
  436. while(!me.GetState(32))
  437. NTP_DoPrecast(false);
  438. if(!NTM_UsePortal("BluePortal", 103, leader)) //or make my own?
  439. NTTM_CheckAct();
  440. }
  441. if(me.classid == 2) { //Necro
  442. NTM_UsePortal("BluePortal", 107, leader);
  443. NTC_Delay(500);
  444. NTP_DoPrecast(true);
  445.  
  446. while(!me.GetState(32))
  447. NTC_Delay(3500);
  448.  
  449. if(!NTM_UsePortal("BluePortal", 103, leader)) //or make my own?
  450. NTTM_CheckAct();
  451. }
  452. break;
  453. case ".s1": //vizier
  454. if(me.classid == 3) { //Hammerdin
  455. NTM_UsePortal("BluePortal", 108, leader);
  456.  
  457. TD_Preattack(GetLocaleString(2851), 5);
  458. TD_KillMonster(GetLocaleString(2851));
  459. NTA_ClearPosition(5);
  460. NTSI_PickItems();
  461.  
  462.  
  463. if(!NTM_UsePortal("BluePortal", 103, leader)) //or make my own?
  464. NTTM_CheckAct();
  465. NTP_DoPrecast(true);
  466. }
  467.  
  468. if(me.classid == 4) { //Barb
  469. NTM_UsePortal("BluePortal", 108, leader);
  470. NTC_CastSkill(130);
  471. NTP_DoPrecast(false);
  472. NTC_CastSkill(130);
  473. NTC_Delay(2000);
  474. TD_KillMonster(GetLocaleString(2851));
  475. NTSI_PickItems();
  476.  
  477.  
  478. if(!NTM_UsePortal("BluePortal", 103, leader)) //or make my own?
  479. NTTM_CheckAct();
  480. }
  481.  
  482. break;
  483. case ".s2": //de seis
  484. if(me.classid == 3) { //Hammerdin
  485. NTM_UsePortal("BluePortal", 108, leader);
  486.  
  487. TD_Preattack(GetLocaleString(2852), 10);
  488. TD_KillMonster(GetLocaleString(2852));
  489. NTA_ClearPosition(15);
  490. NTSI_PickItems();
  491.  
  492. if(!NTM_UsePortal("BluePortal", 103, leader)) //or make my own?
  493. NTTM_CheckAct();
  494. NTP_DoPrecast(true);
  495. }
  496.  
  497.  
  498. if(me.classid == 4) { //Barb
  499. NTM_UsePortal("BluePortal", 108, leader);
  500. NTC_CastSkill(130);
  501. NTP_DoPrecast(true);
  502. NTC_CastSkill(130);
  503. NTC_Delay(2000);
  504. TD_KillMonster(GetLocaleString(2852));
  505. NTSI_PickItems();
  506.  
  507.  
  508. if(!NTM_UsePortal("BluePortal", 103, leader)) //or make my own?
  509. NTTM_CheckAct();
  510. }
  511.  
  512. break;
  513. case ".s3": //infector
  514. if(me.classid == 3) { //Hammerdin
  515. NTM_UsePortal("BluePortal", 108, leader);
  516.  
  517. TD_Preattack(GetLocaleString(2853), 5);
  518. TD_KillMonster(GetLocaleString(2853));
  519. NTA_ClearPosition(15);
  520. NTSI_PickItems();
  521.  
  522. if(!NTM_UsePortal("BluePortal", 103, leader)) //or make my own?
  523. NTTM_CheckAct();
  524. NTP_DoPrecast(true);
  525. }
  526.  
  527.  
  528. if(me.classid == 4) { //Barb
  529. NTM_UsePortal("BluePortal", 108, leader);
  530. NTC_CastSkill(130);
  531. NTP_DoPrecast(false);
  532. NTC_CastSkill(130);
  533.  
  534. NTC_Delay(2000);
  535.  
  536. TD_KillMonster(GetLocaleString(2853));
  537. NTSI_PickItems();
  538.  
  539.  
  540. if(!NTM_UsePortal("BluePortal", 103, leader)) //or make my own?
  541. NTTM_CheckAct();
  542. }
  543.  
  544. break;
  545. case ".d":
  546. if(me.classid == 3) { //Hammerdin
  547. NTM_UsePortal("BluePortal", 108, leader);
  548. NTC_FindUnit(NTC_UNIT_MONSTER, 243, 100);
  549. if(!TD_KillMonster(243)) {
  550. NTC_SendMsgToScript("NTBotGame.ntj", "TD_KillMonster()");
  551. return;
  552. }
  553.  
  554. NTSI_PickItems();
  555. }
  556. if(me.classid == 4) { //Barb
  557. NTM_UsePortal("BluePortal", 108, leader);
  558. if(!TD_KillMonster(243)) {
  559. NTP_DoPrecast(true);
  560. return;
  561. }
  562.  
  563. NTSI_PickItems();
  564. }
  565.  
  566. break;
  567. case ".u": //urdars! and svs!
  568. if(me.classid == 3) { //Hammerdin
  569. NTM_UsePortal("BluePortal", 108, leader);
  570.  
  571. if(NTC_FindUnit(NTC_UNIT_MONSTER, 362))
  572. TD_Preattack(362, 5);
  573. else if(NTC_FindUnit(NTC_UNIT_MONSTER, 189))
  574. TD_Preattack(189, 5);
  575. NTA_ClearPosition(15);
  576. NTSI_PickItems();
  577.  
  578. if(!NTM_UsePortal("BluePortal", 103, leader)) //or make my own?
  579. NTTM_CheckAct();
  580. NTP_DoPrecast(true);
  581. }
  582. if(me.classid == 4) { //Barb
  583. NTM_UsePortal("BluePortal", 108, leader);
  584.  
  585. if(NTC_FindUnit(NTC_UNIT_MONSTER, 362))
  586. TD_Preattack(362, 5);
  587. else if(NTC_FindUnit(NTC_UNIT_MONSTER, 189))
  588. TD_Preattack(189, 5);
  589. NTSI_PickItems();
  590.  
  591. if(!NTM_UsePortal("BluePortal", 103, leader)) //or make my own?
  592. NTTM_CheckAct();
  593. }
  594.  
  595. break;
  596. }
  597. }
  598. }
  599.  
  600. function TD_DetectLayout(seal) {
  601. switch(seal) {
  602. case 1:
  603. _sealpos = GetPresetUnits(me.areaid, NTC_UNIT_OBJECT);
  604. for(var i = 0 ; i < _sealpos.length ; i++) {
  605. if(_sealpos[i].id == 396) {
  606. if(_sealpos[i].roomy*5 + _sealpos[i].y == 5275)
  607. return 1;
  608. else
  609. return 2;
  610.  
  611. break;
  612. }
  613. }
  614. break;
  615. case 2:
  616. _sealpos = GetPresetUnits(me.areaid, NTC_UNIT_OBJECT);
  617. for(i = 0 ; i < _sealpos.length ; i++) {
  618. if(_sealpos[i].id == 394) {
  619. if(_sealpos[i].roomx*5 + _sealpos[i].x == 7773)
  620. return 1;
  621. else
  622. return 2;
  623.  
  624. break;
  625. }
  626. }
  627. break;
  628. case 3:
  629. _sealpos = GetPresetUnits(me.areaid, NTC_UNIT_OBJECT);
  630. for(i = 0 ; i < _sealpos.length ; i++) {
  631. if(_sealpos[i].id == 392) {
  632. if(_sealpos[i].roomx*5 + _sealpos[i].x == 7893)
  633. return 1;
  634. else
  635. return 2;
  636.  
  637. break;
  638. }
  639. }
  640. break;
  641. }
  642. }
  643.  
  644. function TD_IsPlayerOut(area) { //function by Thursty
  645. var _player;
  646. var _myPartyId;
  647.  
  648. _player = GetPlayerUnit();
  649. _myPartyId = _player.partyid;
  650.  
  651. if(arguments.length < 1)
  652. _area = me.areaid;
  653. else
  654. _area = area;
  655.  
  656. do {
  657. if(_player.areaid == _area && _myPartyId == _player.partyid)
  658. return false;
  659.  
  660. NTC_Delay(100);
  661.  
  662. } while(_player.GetNext());
  663.  
  664. return true;
  665. }
  666.  
  667. function TD_File(path, mode, msg, delay) { //big thanks to all the koreans out there
  668. var _msg = "";
  669. var _line = "";
  670. var _fileHandle;
  671. var _isFileCheck = false;
  672.  
  673. if (arguments.length < 3) msg = "";
  674. if (arguments.length < 4) delay = (mode > 0) ? 5 : 2;
  675.  
  676. while (delay--) {
  677. if (mode == 2 && !_isFileCheck) {
  678. _fileHandle = FileOpen(path, 0);
  679. if (!_fileHandle)
  680. _fileHandle = FileOpen(path, 1);
  681.  
  682. if (_fileHandle)
  683. _fileHandle.Close();
  684.  
  685. _isFileCheck = true;
  686. }
  687.  
  688. _fileHandle = FileOpen(path, mode);
  689. if (_fileHandle)
  690. break;
  691.  
  692. if (delay)
  693. Delay(200);
  694. }
  695.  
  696. if (_fileHandle) {
  697. if (mode == 0) {
  698. while (!_fileHandle.eof) {
  699. _line = _fileHandle.ReadLine();
  700. if (_line || !_fileHandle.eof)
  701. _msg += _line + msg;
  702. }
  703. }
  704. else if (msg)
  705. _fileHandle.WriteLine(msg);
  706.  
  707. _fileHandle.Close();
  708. }
  709.  
  710. return _msg;
  711. }
  712.  
  713. function TD_MoveTo(areaid, x, y, retry, clearpath)
  714. {
  715. var i, n;
  716. var _teleport;
  717. var _path;
  718. var _retry = 0;
  719.  
  720. if(x == me.x && y == me.y)
  721. return true;
  722.  
  723. if(arguments.length < 4)
  724. retry = 3;
  725.  
  726. if(arguments.length < 5)
  727. clearpath = false;
  728.  
  729. if(NTC_InTown() || NTC_GetSkillLevel(54) < 1)
  730. _teleport = false;
  731. else
  732. _teleport = true;
  733.  
  734. _path = GetPath(areaid, me.x, me.y, x, y, _teleport);
  735.  
  736. if(!_path)
  737. return false;
  738.  
  739. for(i = 0 ; i < _path.length ; i++)
  740. {
  741. for(n = 0 ; n < 2 ; n++)
  742. {
  743. if(_teleport)
  744. {
  745. if(NTM_TeleportTo(_path[i][0], _path[i][1])){
  746. if(TDConfig_FindUrdarsAndVenoms)
  747. TD_FindUrdar();
  748. break;
  749. }
  750. }
  751. else
  752. {
  753. if(NTM_WalkTo(_path[i][0], _path[i][1]))
  754. break;
  755. }
  756. }
  757.  
  758. if(n < 2)
  759. {
  760. if(clearpath)
  761. {
  762. if(!NTA_ClearPosition(20, true, 2))
  763. return false;
  764.  
  765. NTP_DoPrecast(false);
  766.  
  767. NTM_MoveTo(me.areaid, _path[i][0], _path[i][1], 1);
  768. }
  769. }
  770. else if(_retry < retry)
  771. {
  772. _path = GetPath(areaid, me.x, me.y, x, y, _teleport);
  773.  
  774. if(!_path)
  775. return false;
  776.  
  777. i = -1;
  778. _retry++;
  779. }
  780. else
  781. return false;
  782. }
  783.  
  784. return true;
  785. }
  786.  
  787. function TD_FindUrdar(){
  788. var _urdar = NTC_FindUnit(NTC_UNIT_MONSTER, 189);
  789. var _sv = NTC_FindUnit(NTC_UNIT_MONSTER, 362);
  790.  
  791. if(_urdar){
  792. do{
  793. if (_urdar.classid == 189 && (_urdar.spectype == 9 || _urdar.spectype == 17) && _urdar.mode != 0 && _urdar.hp > 0 && _urdar.mode != 12 && _urdar.IsAttackable()){
  794. NTC_SendLogToOOG(NTC_LOG_COMMON, "ÿc8Killing Urdars!"); //COMMENT THIS LINE IF TESTING IS SUCCESSFUL
  795.  
  796. //NTM_MoveTo(me.areaid, _urdar.x, _urdar.y);
  797. TD_Deploy(_urdar.x, _urdar.y, 20, 20, 0, 20);
  798.  
  799. for(var i = 0 ; i < 5 ; i++) {
  800. if(NTM_MakeTP())
  801. break;
  802. }
  803.  
  804. TD_File("NTBot/bots/TeamD.txt", 1, ".u");
  805.  
  806. NTA_ClearPosition(12);
  807.  
  808. while(!TD_IsPlayerOut()) {
  809. NTA_ClearPosition();
  810. NTSI_PickItems();
  811. }
  812.  
  813. TD_File("NTBot/bots/TeamD.txt", 1, "bla");
  814.  
  815. NTC_Delay(250);
  816. break;
  817. }
  818. } while(_urdar.GetNext());
  819. }
  820. else if(_sv){
  821. do{
  822. if (_sv.classid == 362 && (_sv.spectype == 9 || _sv.spectype == 17) && _sv.mode != 0 && _sv.hp > 0 && _sv.mode != 12 && _sv.IsAttackable()){
  823. NTC_SendLogToOOG(NTC_LOG_COMMON, "ÿc8Killing Super Venoms!"); //COMMENT THIS LINE IF TESTING IS SUCCESSFUL
  824.  
  825. //NTM_MoveTo(me.areaid, _sv.x, _sv.y);
  826. TD_Deploy(_sv.x, _sv.y, 20, 20, 0, 20);
  827.  
  828. for(var i = 0 ; i < 5 ; i++) {
  829. if(NTM_MakeTP())
  830. break;
  831. }
  832.  
  833. prevx = me.x;
  834. prevy = me.y;
  835.  
  836. TD_File("NTBot/bots/TeamD.txt", 1, ".u");
  837.  
  838. NTA_ClearPosition(15);
  839.  
  840. while(!TD_IsPlayerOut()) {
  841. NTA_ClearPosition();
  842. NTSI_PickItems();
  843. NTM_MoveTo(me.areaid, prevx, prevy);
  844. }
  845.  
  846. TD_File("NTBot/bots/TeamD.txt", 1, "bla");
  847.  
  848. NTC_Delay(250);
  849. break;
  850. }
  851. } while(_sv.GetNext());
  852. }
  853. }
  854.  
  855. function TD_Deploy(x, y, plusx, minusx, plusy, minusy) { //you can build up to 5 positions (x-shaped), center position is x, y; rest are +/- offsets
  856. var _monster = NTC_FindUnit(NTC_UNIT_MONSTER);
  857. var num = [0, 0, 0, 0, 0];
  858. var firstnum = 100;
  859.  
  860. if(!_monster)
  861. return NTM_MoveTo(me.areaid, x, y);
  862.  
  863. do {
  864. if(GetDistance(_monster.x, _monster.y, x, y) <= 15)
  865. if(_monster.classid != 306)
  866. num[0]++;
  867. if(GetDistance(_monster.x, _monster.y, x + plusx, y) <= 15)
  868. if(_monster.classid != 306)
  869. num[1]++;
  870. if(GetDistance(_monster.x, _monster.y, x - minusx, y) <= 15)
  871. if(_monster.classid != 306)
  872. num[2]++;
  873. if(GetDistance(_monster.x, _monster.y, x, y + plusy) <= 15)
  874. if(_monster.classid != 306)
  875. num[3]++;
  876. if(GetDistance(_monster.x, _monster.y, x, y - minusy) <= 15)
  877. if(_monster.classid != 306)
  878. num[4]++;
  879. }while(_monster.GetNext())
  880.  
  881. for(var i = 0 ; i < num.length ; i++) {
  882. //Print("ÿc1" + num[i] + " ÿc:monsters at position ÿc;" + i); //doesn't count storm casters as of v0.8
  883. if(num[i] < firstnum)
  884. firstnum = num[i];
  885. }
  886.  
  887. if(firstnum == num[0]) {
  888. safex = x;
  889. safey = y;
  890. NTM_MoveTo(me.areaid, x, y);
  891. }
  892. else if(firstnum == num[1]) {
  893. safex = x + plusx;
  894. safey = y;
  895. NTM_MoveTo(me.areaid, x + plusx, y);
  896. }
  897. else if(firstnum == num[2]) {
  898. safex = x - minusx;
  899. safey = y;
  900. NTM_MoveTo(me.areaid, x - minusx, y);
  901. }
  902. else if(firstnum == num[3]) {
  903. safex = x;
  904. safey = y + plusy;
  905. NTM_MoveTo(me.areaid, x, y + plusy);
  906. }
  907. else if(firstnum == num[4]) {
  908. safex = x;
  909. safey = y - minusy;
  910. NTM_MoveTo(me.areaid, x, y - minusy);
  911. }
  912. }
  913.  
  914. function TD_KillMonster(classid)
  915. {
  916. var _target;
  917.  
  918. if(NTConfig_AttackSkill[1] < 1)
  919. return false;
  920.  
  921. _target = NTC_FindUnit(NTC_UNIT_MONSTER, classid, 5);
  922.  
  923. if(!_target)
  924. return false;
  925.  
  926. if(_target.IsAttackable())
  927. {
  928. var _attackcount = 0;
  929.  
  930. while(_attackcount < 300 && NTA_IsValidMonster(_target))
  931. {
  932. if(NTA_Attack(_target, (_attackcount%30) == 0) < 2)
  933. break;
  934.  
  935. if((_attackcount%10) == 5)
  936. NTM_MoveTo(me.areaid, _target.x+5, _target.y);
  937. else if((_attackcount%10) == 0)
  938. NTM_MoveTo(me.areaid, _target.x, _target.y+5);
  939.  
  940. _attackcount++;
  941. }
  942. }
  943.  
  944. return (_target.hp <= 0 || _target.mode == 0 || _target.mode == 12);
  945. }
Add Comment
Please, Sign In to add comment