Advertisement
Guest User

Untitled

a guest
Jun 23rd, 2017
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.99 KB | None | 0 0
  1. function NTMain()
  2. {
  3.  
  4. Include("libs/common/NTCommon.ntl");
  5. NTC_IncludeLibs();
  6. NTC_IncludeConfig("NTBot/char_configs");
  7.  
  8. NT_LoadConfig();
  9. NTSI_LoadNIPFiles("NTBot/item_configs");
  10.  
  11. NTA_Initialize(); // 10
  12.  
  13. var FrontToStarX = [7792,7794,7791,7777,7813,7769,7782,7802,7819,7768,7770,7791,7819];
  14. var FrontToStarY = [5564,5529,5495,5486,5486,5445,5421,5421,5446,5390,5355,5355,5376];
  15.  
  16. var FrontToStarFastX = [7799,7802,7802,7819,7821,7821,7821];
  17. var FrontToStarFastY = [5569,5531,5498,5486,5450,5416,5376];
  18.  
  19.  
  20.  
  21. if(!NTTM_CheckAct())
  22. {
  23. NTC_SendMsgToScript("NTBotGame.ntj", "NTTM_CheckAct()");
  24. return;
  25. }
  26.  
  27. if(me.areaid != 103)
  28. {
  29. if(!NTTM_TownMove("waypoint"))
  30. {
  31. NTC_SendMsgToScript("NTBotGame.ntj", "NTTM_TownMove()");
  32. return;
  33. }
  34.  
  35. if(!NTM_TakeWaypoint(103))
  36. {
  37. NTC_SendMsgToScript("NTBotGame.ntj", "NTM_TakeWaypoint()");
  38. return;
  39. }
  40. }
  41.  
  42. NTTMGR_TownManager();
  43.  
  44. NTTM_TownMove("portalspot");
  45.  
  46. //wait for party
  47. for(i = 0; i <= 100; i++)
  48. {
  49. if(NTC_InMyParty(NTConfig_Leader))
  50. break;
  51.  
  52. //Party Leader only!
  53. _player = GetPlayerUnit();
  54. if(_player)
  55. {
  56. _mypartyid = _player.partyid;
  57. while(_player.GetNext())
  58. {
  59. if(_player.name == _Leader && _player.partyflag == 2 && (_player.partyid == 65535 || _player.partyid != _mypartyid))
  60. {
  61. me.ClickParty(_player, 2);
  62. break;
  63. }
  64. }
  65. }
  66.  
  67. NTC_Delay(200);
  68. }
  69.  
  70.  
  71. while(me.areaid == 103 && NTC_InMyParty(NTConfig_Leader))
  72. {
  73. NTM_UsePortal("BluePortal", 108, NTConfig_Leader); // 50
  74. Delay(1000);
  75.  
  76. }
  77.  
  78. NTP_DoPrecast(true);
  79.  
  80. if(!NTM_MoveTo(108, 7792, 5565))
  81. {
  82. NTC_SendMsgToScript("NTBotGame.ntj", "NTM_MoveTo()");
  83. return;
  84. }
  85.  
  86. if(NTConfig_ClearFromFront == 1)
  87. {
  88. if(NTConfig_MakeTP == 1)
  89. {
  90. var _x = me.x;
  91. var _y = me.y;
  92. NT_Clear(20, true, 1);
  93. if(me.x != _x && me.y != _y) NTM_MoveTo(108, _x, _y);
  94. NT_Clear(20, true, 1);
  95. if(me.x != _x && me.y != _y) NTM_MoveTo(108, _x, _y);
  96. NTM_MakeTP();
  97. if(NTConfig_WaitAndBO == 1)
  98. {
  99. Say(NTConfig_BOSayMsg + " " + NTConfig_BOWait);
  100. NTC_Delay(NTConfig_BOWait*1000);
  101. NTP_DoPrecast(true);
  102. }
  103. }
  104.  
  105. for(var i = 0; i < FrontToStarX.length; i++)
  106. {
  107. NT_Clear(35, true, 1);
  108. NTM_MoveTo(108, FrontToStarX[i], FrontToStarY[i]);
  109. if(NTConfig_OpenHiddenStashes == 1) NT_OpenHiddenStashes();
  110. }
  111. }
  112.  
  113. else
  114. {
  115. NTM_MoveTo(108, 7791, 5290);
  116. }
  117.  
  118. NT_GetSeals();
  119.  
  120. NT_KillDiablo();
  121.  
  122. NTC_SendMsgToScript("NTBotGame.ntj", "SCRIPT_END");
  123. }
  124.  
  125. function NT_VizierSeal(type)
  126. {
  127. var V1X = [7768,7755,7741,7733,7723,7714,7707,7680,7666];// |||||||||
  128. var V1Y = [5289,5295,5282,5291,5300,5282,5315,5310,5311];// |||
  129.  
  130. var V2X = [7767,7756,7744,7747,7750,7741,7729,7720,7720,7721,7719,7712,7700,7687,7676];// ||| |||
  131. var V2Y = [5292,5284,5275,5290,5303,5310,5314,5312,5301,5288,5273,7292,5294,5294,5292];// |||
  132.  
  133. if(type == 1)
  134. {
  135. for(var i = 0; i < V1X.length; i++)
  136. {
  137. NTM_MoveTo(108, V1X[i], V1Y[i]);
  138. if(NTConfig_OpenHiddenStashes == 1) NT_OpenHiddenStashes();
  139. if(NTConfig_FastMode != 1) NT_Clear(25, true, 1);
  140. }
  141.  
  142. for(var n = 0; n < 2; n++)
  143. {
  144. NT_OpenSeal(396, 7667, 5315);
  145. NTM_MoveTo(108, 7672, 5307);
  146.  
  147. for(var i = 0 ; i < 15 ; i++)
  148. {
  149. NTC_Delay(100);
  150. if(NT_KillMonster(GetLocaleString(2851), 1))
  151. {
  152. if(NTConfig_FastMode != 1) NT_Clear(30, false, 1);
  153. NTSI_PickItems();
  154. NT_OpenSeal(395, 7664, 5275);
  155. return NT_BackToStar();
  156. }
  157. }
  158.  
  159. NT_OpenSeal(395, 7664, 5275);
  160. }
  161.  
  162. }
  163.  
  164. else
  165. {
  166.  
  167. for(var i = 0; i < V2X.length; i++)
  168. {
  169. NTM_MoveTo(108, V2X[i], V2Y[i]);
  170. if(NTConfig_OpenHiddenStashes == 1) NT_OpenHiddenStashes();
  171. if(NTConfig_FastMode != 1) NT_Clear(25, true, 1);
  172. }
  173.  
  174. for(var n = 0; n < 2; n++)
  175. {
  176.  
  177. NT_OpenSeal(396, 7664, 5275);
  178. NTM_MoveTo(108, 7667, 5292);
  179.  
  180. for(var i = 0 ; i < 30 ; i++)
  181. {
  182. NTC_Delay(150);
  183. if(NT_KillMonster(GetLocaleString(2851), 1))
  184. {
  185. if(NTConfig_FastMode != 1) NT_Clear(30, false, 1);
  186. NTSI_PickItems();
  187. NT_OpenSeal(395, 7667, 5315);
  188. return NT_BackToStar();
  189. }
  190. }
  191.  
  192. NT_OpenSeal(395, 7667, 5315);
  193. }
  194. }
  195.  
  196. return NT_BackToStar();
  197. }
  198.  
  199. function NT_DeSeisSeal(type)
  200. {
  201. var S1X = [7786,7801,7786,7787,7810,7811,7810,7790,7774,7773,7794];// shape of an "S" or "5"
  202. var S1Y = [5263,5249,5245,5227,5233,5215,5198,5194,5181,5156,5154];
  203.  
  204. var S2X = [7791,7783,7800,7809,7785,7773,7773,7776,7794,7811,7817,7815,7798,7785];// Shape of "2"
  205. var S2Y = [5265,5256,5247,5232,5230,5222,5212,5194,5194,5193,5177,5157,5155,5155];
  206.  
  207.  
  208. if(type == 2)
  209. {
  210.  
  211. for(var i = 0; i < S2X.length; i++)
  212. {
  213. NTM_MoveTo(108, S2X[i], S2Y[i]);
  214. NT_Clear(25, true, 1);
  215. if(NTConfig_OpenHiddenStashes == 1) NT_OpenHiddenStashes();
  216. }
  217.  
  218. for(var n = 0; n < 2; n++)
  219. {
  220. NT_OpenSeal(394, 7773, 5155);
  221. NTM_MoveTo(108, 7809, 5202);
  222. NTM_TeleportTo(7812, 5224);
  223. NTM_MoveTo(108, 7793, 5234);
  224.  
  225. for(i = 0 ; i < 15 ; i++)
  226. {
  227. NTC_Delay(100);
  228. if(NT_KillMonster(GetLocaleString(2852), 1))
  229. {
  230. NTSI_PickItems();
  231. if(NTConfig_FastMode != 1) NT_ClearPosition(40, true, 1);
  232. return NT_BackToStar();
  233. }
  234. else
  235. {
  236. NT_OpenSeal(394, 7773, 5155);
  237. NTM_MoveTo(108, 7809, 5202);
  238. NTM_TeleportTo(7812, 5224);
  239. NTM_MoveTo(108, 7793, 5234);
  240.  
  241. for(i = 0 ; n < 15 ; i++)
  242. {
  243. NTC_Delay(100);
  244. if(NT_KillMonster(GetLocaleString(2852), 1))
  245. {
  246. NTSI_PickItems();
  247. if(NTConfig_FastMode != 1) NT_ClearPosition(40, true, 1);
  248. return NT_BackToStar();
  249. }
  250. }
  251. }
  252. }
  253. }
  254. }
  255. else
  256. {
  257. for(var i = 0; i < S1X.length; i++)
  258. {
  259. NTM_MoveTo(108, S1X[i], S1Y[i]);
  260. NT_Clear(25, true, 1);
  261. if(NTConfig_OpenHiddenStashes == 1) NT_OpenHiddenStashes();
  262. }
  263.  
  264. for(var n = 0; n < 2; n++)
  265. {
  266. NT_OpenSeal(394, 7803, 5154);
  267. NTM_MoveTo(108, 7789, 5157);
  268.  
  269. for(i = 0 ; i < 15 ; i++)
  270. {
  271. NTC_Delay(100);
  272. if(NT_KillMonster(GetLocaleString(2852), 1))
  273. {
  274. NTSI_PickItems();
  275. if(NTConfig_FastMode != 1) NT_ClearPosition(40, true, 1);
  276. return NT_BackToStar();
  277. }
  278. }
  279. }
  280. }
  281.  
  282. return NT_BackToStar();
  283. }
  284.  
  285. function NT_InfectorSeal(type)
  286. {
  287. var I1X = [7822,7826,7832,7850,7858,7868,7877,7891,7907,7927,7932];// looks like a hook
  288. var I1Y = [5297,5278,5307,5278,7305,5297,5276,5276,5276,5279,5298];
  289.  
  290. var I2X = [7825,7827,7834,7845,7855,7852,7875,7896,7917];// shape of a "t"
  291. var I2Y = [5293,5276,5291,5315,5301,5278,5293,5295,5291];
  292.  
  293.  
  294. if(type == 2)
  295. {
  296. for(var i = 0; i < I2X.length; i++)
  297. {
  298. NTM_MoveTo(108, I2X[i], I2Y[i]);
  299. NT_Clear(25, true, 1);
  300. if(NTConfig_OpenHiddenStashes == 1) NT_OpenHiddenStashes();
  301. }
  302.  
  303. for(var n = 0; n < 2; n++)
  304. {
  305. NT_OpenSeal(392, 7895, 5309);
  306. NTM_MoveTo(108, 7899, 5295);
  307.  
  308. for(i = 0 ; i < 15 ; i++)
  309. {
  310. NTC_Delay(200);
  311.  
  312. if(NT_KillMonster(GetLocaleString(2853), 1))
  313. {
  314. if(NTConfig_FastMode != 1) NT_Clear(40, false, 1);
  315. NTSI_PickItems();
  316. NT_OpenSeal(393, 7895, 5275);
  317. return NT_BackToStar();
  318. }
  319. }
  320.  
  321. NT_OpenSeal(393, 7915, 5275);
  322. }
  323. }
  324.  
  325. else
  326. {
  327. for(var i = 0; i < I1X.length; i++)
  328. {
  329. NTM_MoveTo(108, I1X[i], I1Y[i]);
  330. NT_Clear(25, true, 1);
  331. if(NTConfig_OpenHiddenStashes == 1) NT_OpenHiddenStashes();
  332. }
  333.  
  334. for(var n = 0; n < 2; n++)
  335. {
  336. NT_OpenSeal(392, 7924, 5315);
  337. NTM_MoveTo(108, 7932, 5297);
  338.  
  339. for(i = 0 ; i < 15 ; i++)
  340. {
  341. NTC_Delay(200);
  342.  
  343. if(NT_KillMonster(GetLocaleString(2853), 1))
  344. {
  345. if(NTConfig_FastMode != 1) NT_Clear(40, false, 1);
  346. NTSI_PickItems();
  347. NT_OpenSeal(393, 7915, 5275);
  348. return NT_BackToStar();
  349. }
  350. }
  351.  
  352. NT_OpenSeal(393, 7915, 5275);
  353. }
  354. }
  355.  
  356. return NT_BackToStar();
  357. }
  358.  
  359. function NT_KillDiablo()
  360. {
  361. if(NTConfig_MakeTP == 1)
  362. {
  363. NTM_MoveTo(108, 7827, 5284);
  364. NTM_MakeTP();
  365. NTM_MoveTo(108, 7791, 5290);
  366. }
  367.  
  368. NTC_FindUnit(NTC_UNIT_MONSTER, 243, 100);
  369.  
  370. if(!NT_KillMonster(243, 2))
  371. {
  372. NTC_SendMsgToScript("NTBotGame.ntj", "NTA_KillMonster()");
  373. return;
  374.  
  375. }
  376.  
  377. NTSI_PickItems();
  378. NTC_Delay(500);
  379.  
  380. if(NTConfig_NextGameMsg != '')
  381. Say(NTConfig_NextGameMsg);
  382.  
  383. NTC_Delay(250);
  384. }
  385.  
  386. function NT_BackToStar()
  387. {
  388. NTM_MoveTo(108, 7791, 5290);
  389.  
  390. if(NTConfig_FastMode != 1) NT_Clear(25, true, 1);
  391.  
  392. if(me.x != 7791 && me.y != 5290) NTM_MoveTo(108, 7791, 5290);
  393.  
  394. if(NTConfig_FastMode != 1)
  395. {
  396. NTP_DoPrecast(true);
  397. NTTMGR_CheckSafe(NTConfig_CheckSelfSafe, NTConfig_CheckMercSafe)
  398. }
  399. }
  400.  
  401. function NT_GetSeals()
  402. {
  403. if(me.x != 7791 && me.y != 5290)
  404. {
  405. NTM_MoveTo(108, 7791, 5290);
  406. NT_Clear(20, true, 1);
  407. }
  408.  
  409. if(NTConfig_MakeTP == 1 && NTConfig_FastMode != 1)
  410. {
  411. NT_Clear(20, true, 1);
  412. NTM_MoveTo(108, 7791, 5290);
  413. NTM_MakeTP();
  414. if(NTConfig_WaitAndBO == 1)
  415. {
  416. Say(NTConfig_BOSayMsg + " " + NTConfig_BOWait);
  417. NTC_Delay(NTConfig_BOWait*1000);
  418. NTP_DoPrecast(true);
  419. }
  420. }
  421.  
  422. Print("ÿc5Getting seal information...");
  423.  
  424. var _result = false;
  425. var viztype, venomtype, seistype;
  426.  
  427.  
  428. var pre = GetPresetUnits(108, NTC_UNIT_OBJECT);
  429.  
  430. for(var i = 0; i < pre.length; i++)
  431. {
  432. if(pre[i].id == 396)
  433. {
  434. if(pre[i].roomy*5 + pre[i].y == 5275 && pre[i].roomx*5 + pre[i].x == 7655)
  435.  
  436. viztype = 2;
  437. else
  438.  
  439. viztype = 1;
  440. }
  441.  
  442. if(pre[i].id == 394)
  443. {
  444. if(pre[i].roomx*5 + pre[i].x != 7773)
  445. seistype = 1;
  446. else
  447. seistype = 2;
  448. }
  449.  
  450. if(pre[i].id == 392)
  451. {
  452. if(pre[i].roomx*5 + pre[i].x == 7893)
  453. venomtype = 2;
  454. else
  455. venomtype = 1;
  456. }
  457. }
  458.  
  459. Print("ÿc5Grand Vizier of Chaos, Type: " + viztype);
  460. Print("ÿc5Lord De Seis, Type: " + seistype);
  461. Print("ÿc5Infector of Souls, Type: " + venomtype);
  462.  
  463. for(var i = 0; i < 3; i++)
  464. {
  465. switch(NTConfig_SealOrder[i])
  466. {
  467. case 'w':
  468. _result = NT_VizierSeal(viztype);
  469. _result = false;
  470. break;
  471. case 'n':
  472. _result = NT_DeSeisSeal(seistype);
  473. _result = false;
  474. break;
  475. case 'e':
  476. _result = false;
  477. _result = NT_InfectorSeal(venomtype);
  478. break;
  479. default:
  480. _result = NT_VizierSeal(viztype);
  481.  
  482. _result = false;
  483.  
  484. _result = NT_DeSeisSeal(seistype);
  485.  
  486. _result = false;
  487.  
  488. _result = NT_InfectorSeal(venomtype);
  489.  
  490. return _result;
  491. break;
  492. }
  493. }
  494.  
  495. return _result;
  496. }
  497.  
  498. function NT_OpenSeal(classid, x, y)
  499. {
  500. NTM_MoveTo(108, x, y);
  501.  
  502. if(NTConfig_FastMode != 1)
  503. NT_Clear(40, true, 1);
  504.  
  505. var seal = NTC_FindUnit(NTC_UNIT_OBJECT, classid, 10);
  506.  
  507. if(seal.mode > 0) return;
  508.  
  509. for(var i = 0; i < 4; i++)
  510. {
  511. if((i % 2) == 0)
  512. {
  513. if(GetDistance(me, seal) > 2) NTM_MoveTo(seal.areaid, seal.x+4, seal.y);
  514.  
  515. if(seal.mode > 0) return Print("ÿc5Seal " + classid + " is now activated!");
  516. }
  517.  
  518. NTC_Delay(200);
  519. }
  520. }
  521.  
  522. function NT_CheckShrine()
  523. {
  524. NTC_Delay(250);
  525.  
  526. var shrine = NTC_FindUnit(NTC_UNIT_OBJECT, GetLocaleString(2225), 3);
  527.  
  528. if(shrine)
  529. {
  530. do
  531. {
  532. if(GetDistance(me.x,me.y,shrine.x,shrine.y) < 15)
  533. {
  534. switch(shrine.shrinetype)
  535. {
  536. case 12: // skill shrine
  537. case 13: // mana recharge shrine
  538. NTM_MoveTo(108, shrine.x, shrine.y);
  539. NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, shrine);
  540. break;
  541. default:
  542. break;
  543. }
  544. }
  545.  
  546. }while(shrine.GetNext());
  547. }
  548.  
  549. NTP_DoPrecast(true);
  550. }
  551.  
  552. function NT_OpenHiddenStashes()
  553. {
  554. var _chest = GetUnit(NTC_UNIT_OBJECT, GetLocaleString(3274));
  555.  
  556. if(_chest)
  557. do
  558. {
  559. if(GetDistance(me.x,me.y,_chest.x,_chest.y) < 20 && !_chest.mode > 0 )
  560. {
  561. NTM_MoveTo(108, _chest.x+1, _chest.y)
  562. if(NTC_OpenChest(_chest))
  563. {
  564. NTSI_PickItems();
  565. break;
  566. }
  567. }
  568.  
  569. }while(_chest.GetNext());
  570. }
  571.  
  572. function NT_KillMonster(classid, retry)
  573. {
  574. if(arguments.length < 2)
  575. retry = 0;
  576.  
  577. var _target;
  578.  
  579. if(NTConfig_AttackSkill[1] < 1)
  580. return false;
  581.  
  582. _target = NTC_FindUnit(NTC_UNIT_MONSTER, classid, retry);
  583.  
  584. if(!_target)
  585. return false;
  586.  
  587. if(_target.IsAttackable())
  588. {
  589. var _attackcount = 0;
  590.  
  591. while(_attackcount < 300 && NTA_IsValidMonster(_target))
  592. {
  593. if(NTA_Attack(_target, (_attackcount%30) == 0) < 2)
  594. break;
  595.  
  596. _attackcount++;
  597. }
  598. }
  599.  
  600. if(_target.hp <= 0 || _target.mode == 0 || _target.mode == 12)
  601. return true;
  602.  
  603. }
  604.  
  605. function NT_Clear(range, pickitem, safelevel)
  606. {
  607. if(NTConfig_SkipRegularMonsters == 1) NT_ClearPosition(range, pickitem, safelevel, 1);
  608.  
  609. else NT_ClearPosition(range, pickitem, safelevel, 0);
  610. }
  611.  
  612. function NT_ClearPosition(range, pickitem, safelevel, spectype)
  613. {
  614. var _orgx, _orgy;
  615. var _skiplist;
  616. var _attackcount = 0;
  617. var _target;
  618. var _distance, _mingid, _mindistance;
  619. var _result;
  620.  
  621.  
  622. if(NTConfig_AttackSkill[1] < 1 || NTConfig_AttackSkill[3] < 1)
  623. return false;
  624.  
  625. switch(arguments.length)
  626. {
  627. case 0:
  628. range = 20;
  629. case 1:
  630. pickitem = true;
  631. case 2:
  632. safelevel = 0;
  633. case 3:
  634. spectype = 0;
  635. default:
  636. if(NTConfig_CheckSelfSafe < 0x01 && NTConfig_CheckMercSafe < 0x01)
  637. safelevel = 0;
  638. break;
  639. }
  640.  
  641. _orgx = me.x;
  642. _orgy = me.y;
  643.  
  644.  
  645. _skiplist = new Array();
  646.  
  647. while(_attackcount < (i+1)*100)
  648. {
  649. _mindistance = 100000;
  650.  
  651. _target = NTC_FindUnit(NTC_UNIT_MONSTER);
  652.  
  653. if(_target)
  654. {
  655. do
  656. {
  657. if(_skiplist.indexOf(_target.gid) < 0)
  658. {
  659.  
  660. if(_target.IsAttackable() && (_target.spectype != spectype))
  661. {
  662.  
  663. if(GetDistance(_orgx, _orgy, _target.x, _target.y) <= range && NTA_IsValidMonster(_target))
  664. {
  665. _distance = GetDistance(me, _target);
  666.  
  667. if(_distance < _mindistance)
  668. {
  669. _mingid = _target.gid;
  670. _mindistance = _distance;
  671. }
  672. }
  673. }
  674. else
  675. _skiplist.push(_target.gid);
  676. }
  677. } while(_target.GetNext());
  678. }
  679.  
  680. if(_mindistance < 100000)
  681. {
  682. _target = NTC_FindUnit(NTC_UNIT_MONSTER, _mingid);
  683.  
  684. if(_target)
  685. {
  686. _result = NTA_Attack(_target, (_attackcount%30) == 0);
  687.  
  688. switch(_result)
  689. {
  690. case 1:
  691. _skiplist.push(_mingid);
  692. break;
  693. case 2:
  694. case 3:
  695. _attackcount++;
  696. break;
  697. default:
  698. return false;
  699. }
  700. }
  701. }
  702. else
  703. break;
  704. }
  705.  
  706.  
  707. if(me.classid == NTC_CHAR_CLASS_PALADIN)
  708. {
  709. if(_attackcount > 2 && (parseInt(me.hp*100/me.hpmax) < NTConfig_UseRedemptionHP || parseInt(me.mp*100/me.mpmax) < NTConfig_UseRedemptionMP))
  710. {
  711. if(NTC_PutSkill(124, NTC_HAND_RIGHT))
  712. NTC_PingDelay(1000);
  713. }
  714. }
  715.  
  716. if(me.classid == NTC_CHAR_CLASS_SORCERESS)
  717. {
  718. if(_attackcount > 2)
  719. NTC_CastSkill(58, NTC_HAND_RIGHT);
  720. }
  721.  
  722. if(pickitem && _attackcount > 0)
  723. NTSI_PickItems();
  724.  
  725. switch(safelevel)
  726. {
  727. case 1:
  728. return NTTMGR_CheckSafe(0x00, NTConfig_CheckMercSafe&0x01);
  729. case 2:
  730. return NTTMGR_CheckSafe(NTConfig_CheckSelfSafe, NTConfig_CheckMercSafe);
  731. }
  732.  
  733. return true;
  734. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement