SHARE
TWEET

Untitled

a guest Jun 19th, 2017 43 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var _NTC_HaveMFSwitch = -1;
  2. var _mf1 = 0; var _mf2 = 0;
  3.  
  4. // Character Class
  5. const NTC_CHAR_CLASS_AMAZON = 0;
  6. const NTC_CHAR_CLASS_SORCERESS = 1;
  7. const NTC_CHAR_CLASS_NECROMANCER = 2;
  8. const NTC_CHAR_CLASS_PALADIN = 3;
  9. const NTC_CHAR_CLASS_BARBARIAN = 4;
  10. const NTC_CHAR_CLASS_DRUID = 5;
  11. const NTC_CHAR_CLASS_ASSASSIN = 6;
  12.  
  13. // Act 1 NPCs
  14. const NTC_NPC_ID_AKARA = 148;
  15. const NTC_NPC_ID_WARRIV_ACT_1 = 155;
  16. const NTC_NPC_ID_CHARSI = 154;
  17. const NTC_NPC_ID_GHEED = 147;
  18. const NTC_NPC_ID_KASHYA = 150;
  19. const NTC_NPC_ID_CAIN_TRISTRAM = 146;
  20. const NTC_NPC_ID_CAIN_ACT_1 = 244;
  21.  
  22. // Act 2 NPCs
  23. const NTC_NPC_ID_FARA = 178;
  24. const NTC_NPC_ID_LYSANDER = 202;
  25. const NTC_NPC_ID_GREIZ = 198;
  26. const NTC_NPC_ID_ELZIX = 199;
  27. const NTC_NPC_ID_MESHIF_ACT_2 = 210;
  28. const NTC_NPC_ID_DROGNAN = 177;
  29. const NTC_NPC_ID_ATMA = 176;
  30. const NTC_NPC_ID_WARRIV_ACT_2 = 175;
  31. const NTC_NPC_ID_CAIN_ACT_2 = 245;
  32. const NTC_NPC_ID_JERHYN = 201;
  33. const NTC_NPC_ID_TYRAEL_ACT_2 = 251;
  34.  
  35. // Act 3 NPCs
  36. const NTC_NPC_ID_MESHIF_ACT_3 = 264;
  37. const NTC_NPC_ID_CAIN_ACT_3 = 246;
  38. const NTC_NPC_ID_ALKOR = 254;
  39. const NTC_NPC_ID_ASHEARA = 252;
  40. const NTC_NPC_ID_ORMUS = 255;
  41. const NTC_NPC_ID_HRATLI = 253;
  42.  
  43. // Act 4 NPCs
  44. const NTC_NPC_ID_CAIN_ACT_4 = 265;
  45. const NTC_NPC_ID_HALBU = 257;
  46. const NTC_NPC_ID_TYRAEL_ACT_4 = 367;
  47. const NTC_NPC_ID_JAMELLA = 405;
  48.  
  49. // Act 5 NPCs
  50. const NTC_NPC_ID_CAIN_ACT_5 = 520;
  51. const NTC_NPC_ID_TYRAEL_ACT_5 = 521;
  52. const NTC_NPC_ID_LARZUK = 511;
  53. const NTC_NPC_ID_ANYA_FROZEN_RIVER = 527;
  54. const NTC_NPC_ID_ANYA_TOWN = 512;
  55. const NTC_NPC_ID_MALAH = 513;
  56. const NTC_NPC_ID_QUALKEHK = 515;
  57. const NTC_NPC_ID_NIHLATHAK_TOWN = 514;
  58. const NTC_NPC_ID_NIHLATHAK_HALLS_OF_VAUGHT = 526;
  59.  
  60. // UNIT types
  61. const NTC_UNIT_PLAYER = 0;
  62. const NTC_UNIT_NPC = 1;
  63. const NTC_UNIT_MERC = NTC_UNIT_NPC;
  64. const NTC_UNIT_MONSTER = NTC_UNIT_NPC;
  65. const NTC_UNIT_OBJECT = 2;
  66. const NTC_UNIT_MISSILE = 3;
  67. const NTC_UNIT_ITEM = 4;
  68. const NTC_UNIT_TILE = 5;
  69. const NTC_UNIT_STASH = 267;
  70. const NTC_UNIT_CUBE = 549;
  71.  
  72. const NTC_AREA_ID_ACT_1 = 1;
  73. const NTC_AREA_ID_ACT_2 = 40;
  74. const NTC_AREA_ID_ACT_3 = 75;
  75. const NTC_AREA_ID_ACT_4 = 103;
  76. const NTC_AREA_ID_ACT_5 = 109;
  77.  
  78. // COLOR types
  79. const NTC_COLOR_BASE_WHITE = 0;
  80. const NTC_COLOR_BASE_RED = 1;
  81. const NTC_COLOR_BASE_GREEN = 2;
  82. const NTC_COLOR_BASE_BLUE = 3;
  83. const NTC_COLOR_BASE_GOLD = 4;
  84. const NTC_COLOR_BASE_GRAY = 5;
  85. const NTC_COLOR_BASE_BLACK = 6;
  86. const NTC_COLOR_BASE_GOLD2 = 7;
  87. const NTC_COLOR_BASE_ORANGE = 8;
  88. const NTC_COLOR_BASE_YELLOW = 9;
  89.  
  90. const NTC_HAND_RIGHT = 0;
  91. const NTC_HAND_LEFT = 1;
  92.  
  93. const NTC_CLICK_LDOWN = 0;
  94. const NTC_CLICK_LHOLD = 1;
  95. const NTC_CLICK_LUP = 2;
  96. const NTC_CLICK_RDOWN = 3;
  97. const NTC_CLICK_RHOLD = 4;
  98. const NTC_CLICK_RUP = 5;
  99.  
  100. const NTC_SHIFT_NONE = 0;
  101. const NTC_SHIFT_HOLD = 1;
  102.  
  103. const NTC_LOG_COMMON = 0;
  104. const NTC_LOG_ITEM = 1;
  105.  
  106. const NTC_DELAY_FRAME = 40;
  107.  
  108. var NTC_ItemQualityToName = new Array(9);
  109. NTC_ItemQualityToName[0] = "None";
  110. NTC_ItemQualityToName[1] = "Low Quality";
  111. NTC_ItemQualityToName[2] = "Normal";
  112. NTC_ItemQualityToName[3] = "Superior";
  113. NTC_ItemQualityToName[4] = "Magic";
  114. NTC_ItemQualityToName[5] = "Set";
  115. NTC_ItemQualityToName[6] = "Rare";
  116. NTC_ItemQualityToName[7] = "Unique";
  117. NTC_ItemQualityToName[8] = "Crafted";
  118.  
  119. var NTC_ItemQualityToD2Color = new Array(11);
  120. NTC_ItemQualityToD2Color[0] = "ÿc0";
  121. NTC_ItemQualityToD2Color[1] = "ÿc0";
  122. NTC_ItemQualityToD2Color[2] = "ÿc0";
  123. NTC_ItemQualityToD2Color[3] = "ÿc0";
  124. NTC_ItemQualityToD2Color[4] = "ÿc3";
  125. NTC_ItemQualityToD2Color[5] = "ÿc2";
  126. NTC_ItemQualityToD2Color[6] = "ÿc9";
  127. NTC_ItemQualityToD2Color[7] = "ÿc4";
  128. NTC_ItemQualityToD2Color[8] = "ÿc8";
  129. NTC_ItemQualityToD2Color[9] = "ÿc;"; //purple
  130. NTC_ItemQualityToD2Color[10] = "ÿc1";//red
  131.  
  132. var NTC_ItemQualityToMGRColor = new Array(9);
  133. NTC_ItemQualityToMGRColor[0] = "ÿc6";
  134. NTC_ItemQualityToMGRColor[1] = "ÿc6";
  135. NTC_ItemQualityToMGRColor[2] = "ÿc6";
  136. NTC_ItemQualityToMGRColor[3] = "ÿc6";
  137. NTC_ItemQualityToMGRColor[4] = "ÿc3";
  138. NTC_ItemQualityToMGRColor[5] = "ÿc2";
  139. NTC_ItemQualityToMGRColor[6] = "ÿc9";
  140. NTC_ItemQualityToMGRColor[7] = "ÿc4";
  141. NTC_ItemQualityToMGRColor[8] = "ÿc8";
  142.  
  143. function NTC_IncludeConfig(filepath)
  144. {
  145.     var _configname;
  146.     var _configfile;
  147.  
  148.     switch(me.classid)
  149.     {
  150.     case NTC_CHAR_CLASS_AMAZON:
  151.         _configname = "NTConfig_Amazon_" + me.charname + ".ntl"
  152.         break;
  153.     case NTC_CHAR_CLASS_SORCERESS:
  154.         _configname = "NTConfig_Sorceress_" + me.charname + ".ntl"
  155.         break;
  156.     case NTC_CHAR_CLASS_NECROMANCER:
  157.         _configname = "NTConfig_Necromancer_" + me.charname + ".ntl"
  158.         break;
  159.     case NTC_CHAR_CLASS_PALADIN:
  160.         _configname = "NTConfig_Paladin_" + me.charname + ".ntl"
  161.         break;
  162.     case NTC_CHAR_CLASS_BARBARIAN:
  163.         _configname = "NTConfig_Barbarian_" + me.charname + ".ntl"
  164.         break;
  165.     case NTC_CHAR_CLASS_DRUID:
  166.         _configname = "NTConfig_Druid_" + me.charname + ".ntl"
  167.         break;
  168.     case NTC_CHAR_CLASS_ASSASSIN:
  169.         _configname = "NTConfig_Assassin_" + me.charname + ".ntl"
  170.         break;
  171.     }
  172.  
  173.     _configfile = FileOpen(filepath + "/" + _configname, 0);
  174.     if(_configfile)
  175.         _configfile.Close();
  176.     else
  177.     {
  178.         Print("ÿc3Loaded default config");
  179.  
  180.         switch(me.classid)
  181.         {
  182.         case NTC_CHAR_CLASS_AMAZON:
  183.             _configname = "NTConfig_Amazon.ntl"
  184.             break;
  185.         case NTC_CHAR_CLASS_SORCERESS:
  186.             _configname = "NTConfig_Sorceress.ntl"
  187.             break;
  188.         case NTC_CHAR_CLASS_NECROMANCER:
  189.             _configname = "NTConfig_Necromancer.ntl"
  190.             break;
  191.         case NTC_CHAR_CLASS_PALADIN:
  192.             _configname = "NTConfig_Paladin.ntl"
  193.             break;
  194.         case NTC_CHAR_CLASS_BARBARIAN:
  195.             _configname = "NTConfig_Barbarian.ntl"
  196.             break;
  197.         case NTC_CHAR_CLASS_DRUID:
  198.             _configname = "NTConfig_Druid.ntl"
  199.             break;
  200.         case NTC_CHAR_CLASS_ASSASSIN:
  201.             _configname = "NTConfig_Assassin.ntl"
  202.             break;
  203.         }
  204.     }
  205.  
  206.     Include(filepath + "/NTConfig.ntl");
  207.     Include(filepath + "/" + _configname);
  208. }
  209.  
  210. function NTC_IncludeLibs()
  211. {
  212.     Include("libs/common/NTAttack.ntl");
  213.     Include("libs/common/NTCubing.ntl");
  214.     Include("libs/common/NTItemParser.ntl");
  215.     Include("libs/common/NTMove.ntl");
  216.     Include("libs/common/NTPrecast.ntl");
  217.     Include("libs/common/NTSnagIt.ntl");
  218.     Include("libs/common/NTTown.ntl");
  219.     Include("libs/common/NTTownManager.ntl");
  220.     Include("libs/common/NTTownMove.ntl");
  221. }
  222.  
  223. function NTC_CastSkill(skillid, usehand, x, y)
  224. {
  225.     var _hand;
  226.     var _shift;
  227.  
  228.     if(arguments.length < 1)
  229.         return false;
  230.  
  231.     if(arguments.length == 1)
  232.     {
  233.         _hand = NTC_CLICK_RDOWN;
  234.         _shift = NTC_SHIFT_NONE;
  235.         usehand = NTC_HAND_RIGHT;
  236.     }
  237.     else
  238.     {
  239.         if(usehand == NTC_HAND_RIGHT)
  240.         {
  241.             _hand = NTC_CLICK_RDOWN;
  242.             _shift = NTC_SHIFT_NONE;
  243.         }
  244.         else if(usehand == NTC_HAND_LEFT)
  245.         {
  246.             _hand = NTC_CLICK_LDOWN;
  247.             _shift = NTC_SHIFT_NONE;
  248.         }
  249.         else
  250.         {
  251.             _hand = NTC_CLICK_LDOWN;
  252.             _shift = NTC_SHIFT_HOLD;
  253.             usehand = NTC_HAND_LEFT;
  254.         }
  255.     }
  256.  
  257.     if(NTC_PutSkill(skillid, usehand))
  258.     {
  259.         var i, n;
  260.         var _mode;
  261.  
  262.         if(!NTC_ClearCursor())
  263.             return false;
  264.  
  265.         for(i = 0 ; i < 5 ; i++)
  266.         {
  267.             switch(arguments.length)
  268.             {
  269.             case 1:
  270.             case 2:
  271.                 ClickMap(_hand, _shift, me.x, me.y);
  272.                 break;
  273.             case 3:
  274.                 if(!ClickMap(_hand, _shift, x))
  275.                 {
  276.                     NTC_Delay(NTC_DELAY_FRAME);
  277.                     return false;
  278.                 }
  279.                 break;
  280.             default:
  281.                 ClickMap(_hand, _shift, x, y);
  282.                 break;
  283.             }
  284.  
  285.             for(n = 0 ; n < 4 ; n++)
  286.             {
  287.                 NTC_Delay(NTC_DELAY_FRAME);
  288.  
  289.                 _mode = me.mode;
  290.                 if(_mode == 7 || _mode == 8 || (_mode >= 10 && _mode <= 16) || _mode == 18)
  291.                 {
  292.                     NTC_Delay(NTC_DELAY_FRAME);
  293.                     break;
  294.                 }
  295.             }
  296.  
  297.             ClickMap(_hand+2, NTC_SHIFT_NONE, null);
  298.  
  299.             if(n < 4)
  300.             {
  301.                 for(i = 0 ; i < 100 ; i++)
  302.                 {
  303.                     NTC_Delay(20);
  304.  
  305.                     if(me.mode != _mode)
  306.                         break;
  307.                 }
  308.  
  309.                 return true;
  310.             }
  311.  
  312.             NTC_Delay(NTC_DELAY_FRAME);
  313.         }
  314.     }
  315.  
  316.     return false;
  317. }
  318.  
  319. function NTC_PutSkill(skillid, hand)
  320. {
  321.     if(me.GetSkill(hand) == skillid)
  322.         return true;
  323.  
  324.     if(GetBaseStat("skills.txt", skillid, 182))
  325.         return false;
  326.  
  327.     if(NTC_GetSkillLevel(skillid) < 1)
  328.         return false;
  329.  
  330.     return me.SetSkill(skillid, hand);
  331. }
  332.  
  333. function NTC_GetSkillLevel(skillid)
  334. {
  335.     var _level = me.GetSkill(skillid, true);
  336.  
  337.     if(_level != null)
  338.         return _level;
  339.  
  340.     return 0;
  341. }
  342.  
  343. function NTC_GetCastDelay(skillid)
  344. {
  345.     var _delay = GetBaseStat("skills.txt", skillid, 165);
  346.  
  347.     if(_delay)
  348.         return (_delay*NTC_DELAY_FRAME);
  349.  
  350.     return 0;
  351. }
  352.  
  353. function NTC_SwapWeapons(switchto)
  354. {
  355.     if(arguments.length > 0 && me.weaponstab == switchto)
  356.         return true;
  357.  
  358.     NTC_PingDelay(200);
  359.  
  360.     if(!NTC_WaitIdleMode())
  361.         return false;
  362.  
  363.     return me.SwapWeapons();
  364. }
  365.  
  366. function NTC_DoClick(button, shift, x, y)
  367. {
  368.     if(arguments.length < 2)
  369.         return false;
  370.  
  371.     if(button != NTC_CLICK_LDOWN)
  372.         button = NTC_CLICK_RDOWN;
  373.  
  374.     switch(arguments.length)
  375.     {
  376.     case 2:
  377.         ClickMap(button, shift, me.x, me.y);
  378.         break;
  379.     case 3:
  380.         if(!ClickMap(button, shift, x))
  381.             return false;
  382.         break;
  383.     default:
  384.         ClickMap(button, shift, x, y);
  385.         break;
  386.     }
  387.  
  388.     NTC_Delay(200);
  389.  
  390.     ClickMap(button+2, NTC_SHIFT_NONE, null);
  391.  
  392.     return true;
  393. }
  394.  
  395. function NTC_MyGold()
  396. {
  397.     return me.GetStat(14) + me.GetStat(15);
  398. }
  399.  
  400. function NTC_MyGoldCarry()
  401. {
  402.     return me.GetStat(14);
  403. }
  404.  
  405. function NTC_StashGoldFull()
  406. {
  407.     var _maxgold;
  408.     var _level = me.GetStat(12);
  409.  
  410.     if(_level < 30)
  411.         _maxgold = Math.floor((_level+10)/10) * 50000;
  412.     else
  413.         _maxgold = 800000 + Math.floor((_level-30)/2) * 50000;
  414.  
  415.     return (_maxgold == me.GetStat(15));
  416. }
  417.  
  418. function NTC_CharGoldFull()
  419. {
  420.     return (me.GetStat(14) >= (me.GetStat(12)*10000));
  421. }
  422.  
  423. function NTC_CheckOwner(object, ownername)
  424. {
  425.     var _owner;
  426.  
  427.     if(!object)
  428.         return false;
  429.  
  430.     _owner = object.GetParent();
  431.     if(!_owner)
  432.         return false;
  433.  
  434.     if(arguments.length < 2)
  435.     {
  436.         if(_owner == me.name || _owner.name == me.name)
  437.             return true;
  438.     }
  439.     else
  440.     {
  441.         if(_owner == ownername || _owner.name == ownername)
  442.             return true;
  443.     }
  444.  
  445.     return false;
  446. }
  447.  
  448. function NTC_ItemToCursor(item)
  449. {
  450.     if(me.itemoncursor)
  451.         return true;
  452.  
  453.     for(var i = 0 ; i < 80 ; i++)
  454.     {
  455.         if((i % 40) == 0)
  456.             me.ClickItem(0, item);
  457.  
  458.         NTC_Delay(100);
  459.  
  460.         if(me.itemoncursor)
  461.         {
  462.             NTC_PingDelay(200);
  463.  
  464.             return true;
  465.         }
  466.     }
  467.  
  468.     return false;
  469. }
  470.  
  471. function NTC_ClearCursor()
  472. {
  473.     if(!me.itemoncursor)
  474.         return true;
  475.  
  476.     for(var i = 0 ; i < 40 ; i++)
  477.     {
  478.         if((i % 20) == 0)
  479.             NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE);
  480.  
  481.         NTC_Delay(100);
  482.  
  483.         if(!me.itemoncursor)
  484.             return true;
  485.     }
  486.  
  487.     return false;
  488. }
  489.  
  490. function NTC_GetMerc()
  491. {
  492.     var _merc;
  493.  
  494.     _merc = me.GetMerc();
  495.  
  496.     if(_merc)
  497.     {
  498.         if(_merc.hp > 0 && _merc.mode != 0 && _merc.mode != 12)
  499.             return _merc;
  500.     }
  501.  
  502.     return null;
  503. }
  504.  
  505. function NTC_GetSpecialChest()
  506. {
  507.     var _chest;
  508.  
  509.     _chest = NTC_FindUnit(NTC_UNIT_OBJECT, GetLocaleString(3260));
  510.  
  511.     if(_chest)
  512.     {
  513.         do
  514.         {
  515.             switch(_chest.classid)
  516.             {
  517.             case 354:
  518.             case 355:
  519.             case 356:
  520.             case 397:
  521.             case 405:
  522.             case 406:
  523.             case 407:
  524.                 return _chest;
  525.             }
  526.         } while(_chest.GetNext());
  527.     }
  528.  
  529.     return null;
  530. }
  531.  
  532. function NTC_OpenChest(chest)
  533. {
  534.     if(!chest)
  535.         return false;
  536.  
  537.     if(chest.mode > 0)
  538.         return false;
  539.  
  540.     var _switched = false;
  541.     for(var i = 0 ; i < 12 ; i++)
  542.     {
  543.         if((i % 3) == 0)
  544.         {
  545.             if(GetDistance(me, chest) > 2)
  546.                 NTM_MoveTo(chest.areaid, chest.x+1, chest.y);
  547.  
  548.             if(i==0)
  549.                 _switched = NTC_MFSwitch();
  550.  
  551.             NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, chest);
  552.         }
  553.  
  554.         NTC_Delay(200);
  555.  
  556.         if(chest.mode > 0)
  557.         {
  558.             if (_switched)
  559.                 NTC_SwapWeapons();
  560.             NTSI_PickItems();
  561.             NTSI_ShowItemsLeftOnGround(chest);
  562.             return true;
  563.         }
  564.         else
  565.         {
  566.             if(chest.areaid == 25) // countess area
  567.                 i += 6; // to avoid trying to open countess chest too long
  568.  
  569.             if ((i % 6) == 0 && !NTT_GetKey())
  570.                 NTTMGR_VisitTown();
  571.         }
  572.     }
  573.  
  574.     if (_switched)
  575.         NTC_SwapWeapons();
  576.  
  577.     return false;
  578. }
  579.  
  580. function NTC_Delay(amount, random)
  581. {
  582.     if(arguments.length < 2)
  583.         Delay(amount);
  584.     else
  585.         Delay(amount+Random(0, random));
  586. }
  587.  
  588. function NTC_PingDelay(amount)
  589. {
  590.     var _currentping = me.ping;
  591.  
  592.     if(_currentping > 100)
  593.         _currentping -= 100;
  594.     else
  595.         _currentping = 0;
  596.  
  597.     NTC_Delay(amount+_currentping);
  598. }
  599.  
  600. function NTC_InTown(who)
  601. {
  602.     var _areaid;
  603.  
  604.     if(arguments.length < 1)
  605.         who = me;
  606.  
  607.     while(who.areaid == 0)
  608.         NTC_Delay(NTC_DELAY_FRAME);
  609.  
  610.     _areaid = who.areaid;
  611.  
  612.     return (_areaid == NTC_AREA_ID_ACT_1 || _areaid == NTC_AREA_ID_ACT_2 || _areaid == NTC_AREA_ID_ACT_3 || _areaid == NTC_AREA_ID_ACT_4 || _areaid == NTC_AREA_ID_ACT_5);
  613. }
  614.  
  615. function NTC_InMyParty(playerName)
  616. {
  617.     var _player;
  618.     var _myPartyId;
  619.  
  620.     _player = GetPlayerUnit();
  621.  
  622.     if(_player)
  623.     {
  624.         _myPartyId = _player.partyid;
  625.  
  626.         if(_myPartyId != 65535)
  627.         {
  628.             do
  629.             {
  630.                 if(_player.name == playerName && _myPartyId == _player.partyid)
  631.                     return true;
  632.             } while(_player.GetNext());
  633.         }
  634.     }
  635.  
  636.     return false;
  637. }
  638.  
  639. function NTC_FindUnit(unittype, search, retry)
  640. {
  641.     var _unit;
  642.  
  643.     switch(arguments.length)
  644.     {
  645.     case 0:
  646.         return null;
  647.     case 1:
  648.         search = null;
  649.     case 2:
  650.         retry = 0;
  651.         break;
  652.     }
  653.  
  654.     for(var i = 0 ; i <= retry ; i++)
  655.     {
  656.         _unit = GetUnit(unittype, search);
  657.  
  658.         if(_unit)
  659.             return _unit;
  660.  
  661.         if(i < retry)
  662.             NTC_Delay(200);
  663.     }
  664.  
  665.     return null;
  666. }
  667.  
  668. function NTC_GetBeltSize()
  669. {
  670.     var _items = me.GetItems();
  671.  
  672.     if(!_items)
  673.         return 1;
  674.  
  675.     for(var i = 0 ; i < _items.length ; i++)
  676.     {
  677.         if(_items[i].mode == 1 && _items[i].itemloc == 8)
  678.         {
  679.             if(_items[i].classid == 344 || _items[i].classid == 345)
  680.                 return 2;
  681.             else if(_items[i].classid == 346 || _items[i].classid == 347)
  682.                 return 3;
  683.  
  684.             return 4;
  685.         }
  686.     }
  687.  
  688.     return 1;
  689. }
  690.  
  691. function NTC_FindScript(scriptname)
  692. {
  693.     var _script;
  694.     var _scriptpath;
  695.  
  696.     _script = GetScript();
  697.  
  698.     if(_script)
  699.     {
  700.         do
  701.         {
  702.             _scriptpath = _script.name.toLowerCase();
  703.  
  704.             if(_scriptpath.indexOf(scriptname.toLowerCase()) != -1)
  705.                 return _script;
  706.         } while(_script.GetNext());
  707.     }
  708.  
  709.     return null;
  710. }
  711.  
  712. function NTC_SendMsgToScript(scriptname, msg)
  713. {
  714.     var _script = NTC_FindScript(scriptname);
  715.  
  716.     if(_script)
  717.         return _script.Send(msg);
  718.  
  719.     return false;
  720. }
  721.  
  722. function NTC_StopScript(scriptname)
  723. {
  724.     var _script = NTC_FindScript(scriptname);
  725.  
  726.     if(_script)
  727.         return _script.Stop();
  728.  
  729.     return false;
  730. }
  731.  
  732. function NTC_WaitIdleMode()
  733. {
  734.     var _mode;
  735.  
  736.     for(var i = 0 ; i < 25 ; i++)
  737.     {
  738.         _mode = me.mode;
  739.  
  740.         if((_mode >= 1 && _mode <= 3) || _mode == 5 || _mode == 6)
  741.             return true;
  742.  
  743.         NTC_Delay(NTC_DELAY_FRAME);
  744.     }
  745.  
  746.     return false;
  747. }
  748.  
  749. function NTC_SendLogToOOG(type, logString)
  750. {
  751.     return SendCopyData("D2NT Manager", null, 9<<16|type, logString);
  752. }
  753.  
  754.    //--From Jinnay--
  755.  
  756. function NTC_LogCurScript(script)
  757. {
  758.  
  759.    var _hfile = FileOpen(me.charname + "_scripts.txt", 1);
  760.  
  761.    if(!_hfile)
  762.       return false;
  763.    
  764.    _hfile.WriteLine(script);
  765.    _hfile.Close();
  766.  
  767. }
  768.  
  769. function NTC_GetScript(index)
  770. {
  771.    var _script;
  772.  
  773.    if(arguments.length < 1)
  774.       index = false;
  775.  
  776.    var _hfile = FileOpen(me.charname + "_scripts.txt", 0); // open file for writing
  777.    _script = _hfile.ReadLine();
  778.    _hfile.Close();
  779.    
  780.    return _script;
  781. }
  782.  
  783. // autodetect MF Switch
  784. // returns true if switched for mf
  785. // FIXME : skullder bug (when mf is a percent of mylevel and is not 100% nor 50%)
  786. function NTC_MFSwitch()
  787. {
  788.     if(_NTC_HaveMFSwitch < 0)
  789.     {
  790.         var _equipment;
  791.  
  792.         _NTC_HaveMFSwitch = 0;
  793.  
  794.         var my_level = me.GetStat(12);
  795.  
  796.         _equipment = me.GetItems();
  797.  
  798.         if(_equipment)
  799.         {
  800.             var tal_rash_equ1 = 0;
  801.             var tal_rash_equ2 = 0;
  802.             for(var i = 0 ; i < _equipment.length ; i++)
  803.             {
  804.                 if (_equipment[i].itemloc == undefined
  805.                     || (_equipment[i].itemloc == 4 && _equipment[i].mode == 0)
  806.                     || (_equipment[i].itemloc == 0 && (_equipment[i].itemtype != 82 && _equipment[i].itemtype != 83 && _equipment[i].itemtype != 84))
  807.                     )
  808.                     continue;
  809.                 //NTC_SendLogToOOG(0,_equipment[i].itemloc+" : "+_equipment[i].itemdesc.split("\n")[0]+" mf: "+(_equipment[i].GetStat(80)+(_equipment[i].GetStat(240) == 8 ? my_level : (_equipment[i].GetStat(240) > 0 ? Math.round(my_level/2) : 0)))+";"+_equipment[i].itemdesc);
  810.                 if(_equipment[i].itemloc == 4 || _equipment[i].itemloc == 5)
  811.                 {
  812.                     if (_equipment[i].itemdesc.indexOf("Tal Rash") > 0)
  813.                     {
  814.                         tal_rash_equ1++;
  815.                     }
  816.                     if(_equipment[i].GetStat(80) > 0)
  817.                     {
  818.                         _mf1 += _equipment[i].GetStat(80);
  819.                     }
  820.                     if(_equipment[i].GetStat(240) > 0)
  821.                     {
  822.                         _mf1 += (_equipment[i].GetStat(240) == 8 ? my_level : (_equipment[i].GetStat(240) > 0 ? Math.round(my_level/2) : 0));
  823.                     }
  824.                 }
  825.                 else if (_equipment[i].itemloc == 11 || _equipment[i].itemloc == 12)
  826.                 {
  827.                     if (_equipment[i].itemdesc.indexOf("Tal Rash") > 0)
  828.                     {
  829.                         tal_rash_equ2++;
  830.                     }
  831.                     if(_equipment[i].GetStat(80) > 0)
  832.                     {
  833.                         _mf2 += _equipment[i].GetStat(80);
  834.                     }
  835.                     if(_equipment[i].GetStat(240) > 0)
  836.                     {
  837.                         _mf2 += (_equipment[i].GetStat(240) == 8 ? my_level : (_equipment[i].GetStat(240) > 0 ? Math.round(my_level/2) : 0));
  838.                     }
  839.                 }
  840.                 else if (_equipment[i].itemloc != undefined && !(_equipment[i].itemloc == 4 && _equipment[i].mode == 0))
  841.                 {
  842.                     // Topaze bug
  843.                     if (_equipment[i].itemdesc.split("\n")[1] != undefined && _equipment[i].itemdesc.split("\n")[1].indexOf("'Topaz") > -1)
  844.                     {
  845.                         _mf1 += 24;
  846.                         _mf2 += 24;
  847.                     }
  848.  
  849.                     if (_equipment[i].itemdesc.indexOf("Tal Rash") > 0)
  850.                     {
  851.                         tal_rash_equ1++;
  852.                         tal_rash_equ2++;
  853.                     }
  854.                     _mf1 += _equipment[i].GetStat(80);
  855.                     _mf1 += (_equipment[i].GetStat(240) == 8 ? my_level : (_equipment[i].GetStat(240) > 0 ? Math.round(my_level/2) : 0));
  856.                     _mf2 += _equipment[i].GetStat(80);
  857.                     _mf2 += (_equipment[i].GetStat(240) == 8 ? my_level : (_equipment[i].GetStat(240) > 0 ? Math.round(my_level/2) : 0));
  858.                 }
  859.             }
  860.             if (tal_rash_equ1 > 2)
  861.             {
  862.                 //NTC_SendLogToOOG(0,"Tri-Tal on tab 1");
  863.                 _mf1 += 65;
  864.             }
  865.             if (tal_rash_equ2 > 2)
  866.             {
  867.                 //NTC_SendLogToOOG(0,"Tri-Tal on tab 2");
  868.                 _mf2 += 65;
  869.             }
  870.             //NTC_SendLogToOOG(0,"ÿc9mf1: "+_mf1+" - mf2:"+_mf2);
  871.             if (_mf2 > _mf1)
  872.                 _NTC_HaveMFSwitch = 1;
  873.         }
  874.     }
  875.  
  876.     if(_NTC_HaveMFSwitch >= 0)
  877.     {
  878.         var _previous = me.weaponstab;
  879.         NTC_SwapWeapons(_NTC_HaveMFSwitch);
  880.         if (_previous != me.weaponstab)
  881.         {
  882.             if (_previous == 0)
  883.                 Print("ÿc7Switched for MF ("+_mf1+" + "+(_mf2-_mf1)+")");
  884.             else
  885.                 Print("ÿc7Switched for MF ("+_mf2+" + "+(_mf1-_mf2)+")");
  886.         }
  887.         return (_previous != me.weaponstab);
  888.     }
  889.  
  890.     return false;
  891. }
  892.  
  893.  
  894. function NTC_OpenAllChests(_orgx, _orgy, range)
  895. {
  896.     // Special chests
  897.     _target = NTC_GetSpecialChest();
  898.     if(_target && GetDistance(_orgx, _orgy, _target.x, _target.y) <= range && NTC_OpenChest(_target))
  899.         NTSI_PickItems();
  900.  
  901.     // normal chests
  902.     var _chests = [
  903.         3222, // = Tonneau
  904.         3224, // = Tonneau explosif
  905.         3236, // = Caisse
  906.         3237, // = Coffret
  907.         3241, // = cadavre
  908.         3242, // = Rogue mort
  909.         3243, // = Rogue mort
  910.         3246, // = Sarcophage de la Momie
  911.         3247, // = Support pour armure
  912.         3248, // = Râtelier d'armes
  913.         3249, // = Sarcophage
  914.         3251, // = Grande urne
  915.         3252, // = Jarre
  916.         3254, // = Tombe intacte
  917.         3256, // = Urne
  918.         3260, // = Coffre
  919.         3261, // = Coffre
  920.         3262, // = Coffre verrouillé
  921.         3268, // = Rocher instable
  922.         3269, // = Rocher instable
  923.         3270, // = Souche creuse
  924.         3273, // = Coffre
  925.         3275, // = Cadavre de garde
  926.         3279, // = Nid de rats
  927.         3283, // = Squelette
  928.         3284, // = Ossuaire
  929.         3285, // = Cocon
  930.         3290, // = Coffre
  931.         3293, // = Glue
  932.         3297, // = Ossuaire
  933.         3301, // = Corbeille
  934.         3302, // = Corbeille
  935.         3303, // = Amas de rochers
  936.         3307, // = Cadavre de garde
  937.         3309, // = Sarcophage
  938.         3310, // = Cadavre de villageois
  939.         3321, // = Coffre d'ossements
  940.         3322, // = Coffret
  941.         3323, // = Squelette pendu
  942.         // those are delayed i think
  943.         3271, // = Cache
  944.         3274, // = Cachette
  945.         3315, // = Cachette
  946.         ];
  947.  
  948.     for (var i = 0; i < _chests.length; i++)
  949.     {
  950.         _chest = NTC_FindUnit(NTC_UNIT_OBJECT, GetLocaleString(_chests[i]));
  951.         if(_chest)
  952.         {
  953.             do
  954.             {
  955.                 if(GetDistance(_orgx, _orgy, _chest.x, _chest.y) > range)
  956.                     continue;
  957.                 if(NTC_OpenChest(_chest))
  958.                     NTSI_PickItems();
  959.             }while(_chest.GetNext());
  960.         }
  961.     }
  962. }
RAW Paste Data
Pastebin PRO Summer Special!
Get 40% OFF on Pastebin PRO accounts!
Top