Pastebin launched a little side project called VERYVIRAL.com, check it out ;-) Want more features on Pastebin? Sign Up, it's FREE!
Guest

Cow Script

By: a guest on Jun 15th, 2010  |  syntax: None  |  size: 16.88 KB  |  views: 88  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. // D2NT Cow script
  2. // Version 1.4.1
  3. //--- CONFIG ---
  4. const _NTR_FAIL_CHECKS = 4; // Number of failed teleports before script ends. Ex. Edge of map causes a fail teleport. DEFAULT: 25
  5. const _NTR_PRE_EVERY = 25; // Number of seconds before precasting again. -1 for never. DEFAULT: 40
  6. const _NTR_CHEST_AND_ROCKS = true; // Open chest and rocks. DEFAULT: true
  7. //--- END ---
  8.  
  9. const _NTR_STRING_PORTAL = GetLocaleString(3226);
  10.  
  11. function NTMain()
  12. {
  13.    Include("libs/common/NTCommon.ntl");
  14.    NTC_IncludeLibs();
  15.    NTC_IncludeConfig("NTBot/char_configs");
  16.    NT_LoadConfig();
  17.    NTSI_LoadNIPFiles("NTBot/item_configs");
  18.    NTA_Initialize();
  19.    if(!NTTM_CheckAct())
  20.    {
  21.       NTC_SendMsgToScript("NTBotGame.ntj", "NTTM_CheckAct()");
  22.       return;
  23.    }
  24.    NTTMGR_TownManager();
  25.    
  26.    var _wirtbody, _cube, _leg, _portal, _stash, _items, i, _npc, prearea;
  27.  
  28.    for (i = 0; i < 10; i++)
  29.    {
  30.       _leg = NTC_FindUnit(NTC_UNIT_ITEM, 88);
  31.       if (_leg)
  32.       break;
  33.    }
  34.    if (!_leg)
  35.    {
  36.       if(!NTTM_TownMove("waypoint"))
  37.       {
  38.          NTC_SendMsgToScript("NTBotGame.ntj", "NTTM_TownMove()");
  39.          return;
  40.       }
  41.       if(!NTM_TakeWaypoint(4))
  42.       {
  43.          NTC_SendMsgToScript("NTBotGame.ntj", "NTM_TakeWaypoint()");
  44.          return;
  45.       }
  46.       NTP_DoPrecast(true);
  47.       if(!NTM_MoveToPresetUnit(me.areaid, NTC_UNIT_MONSTER, 737, 10, 10))
  48.       {
  49.          NTC_SendMsgToScript("NTBotGame.ntj", "NTM_MoveToPresetUnit()");
  50.          return;
  51.       }
  52.       if(NTConfig_KillRakanishuCows)
  53.       {
  54.          if(!NTTMGR_CheckSafe(0x00, NTConfig_CheckMercSafe&0x01))
  55.          {
  56.             NTC_SendMsgToScript("NTBotGame.ntj", "NTTMGR_CheckSafe()");
  57.             return;
  58.          }
  59.          if(NTA_KillMonster(GetLocaleString(2872)))
  60.          {
  61.             if(NTConfig_ClearPosition)
  62.                NTA_ClearPosition();
  63.             NTSI_PickItems();
  64.          }
  65.       }
  66.       if(!NTM_UsePortal("Portal", 38))
  67.       {
  68.          NTC_SendMsgToScript("NTBotGame.ntj", "NTM_UsePortal()");
  69.          return;
  70.       }
  71.       if(NTConfig_TristExtension)
  72.       {
  73.          if(!NTA_ClearLevel())
  74.          {
  75.             NTC_SendMsgToScript("NTBotGame.ntj", "NTA_ClearLevel()");
  76.          }
  77.       }
  78.       NTM_MoveTo(me.areaid, 25047, 5178);
  79.       if(NTA_ClearPosition(10))
  80.          NTSI_PickItems();
  81.       _wirtbody = NTC_FindUnit(NTC_UNIT_OBJECT, 268);
  82.       if(!_wirtbody)
  83.       {
  84.          NTC_SendMsgToScript("NTBotGame.ntj", "Wirt's body not found.");
  85.          return;
  86.       }
  87.       if(NTM_MoveTo(_wirtbody.areaid, _wirtbody.x+3, _wirtbody.y))
  88.       {
  89.          if(NTC_OpenChest(_wirtbody))
  90.          {
  91.             NTC_PingDelay(500);
  92.             for (i = 0; i < 10; i++)
  93.             {
  94.                _leg = NTC_FindUnit(NTC_UNIT_ITEM, 88);
  95.                if (_leg)
  96.                   break;
  97.             }
  98.             if(!NTT_CheckSpace(_leg.xsize, _leg.ysize))
  99.             {
  100.                _prearea = me.areaid;
  101.                if(NTTM_CheckAct())
  102.                {
  103.                   NTTMGR_TownManager(true);
  104.                   NTTM_TownMove("portalspot")
  105.                   NTM_UsePortal("BluePortal", _prearea)
  106.                }
  107.             }
  108.             for (i = 0; i < 20; i++)
  109.             {
  110.                if ((i % 5) == 0)
  111.                {
  112.                   if (_leg.mode == 3 || _leg.mode == 5)
  113.                   {
  114.                      if (NTC_ClearCursor())
  115.                         NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _leg);
  116.                   }
  117.                }
  118.                NTC_PingDelay(100);
  119.                if (_leg.mode != 3 && _leg.mode != 5)
  120.                {
  121.                   Print("ÿc4Got Leg");
  122.                   NTC_PingDelay(200);
  123.                   break;
  124.                }
  125.             }
  126.          }
  127.       }
  128.       if(!_leg)
  129.       {
  130.          NTC_SendMsgToScript("NTBotGame.ntj", "No leg found.");
  131.          return;
  132.       }
  133.       NTM_MakeTP();
  134.       NTM_UsePortal("BluePortal");
  135.    }
  136.    else
  137.    {
  138.       if(!NTT_CheckSpace(_leg.xsize, _leg.ysize))
  139.       {
  140.          _prearea = me.areaid;
  141.          if(NTTM_CheckAct())
  142.          {
  143.             NTTMGR_TownManager(true);
  144.             NTTM_TownMove("portalspot")
  145.             NTM_UsePortal("BluePortal", _prearea)
  146.          }
  147.       }
  148.       for (i = 0; i < 20; i++)
  149.       {
  150.          if ((i % 5) == 0)
  151.          {
  152.             if (_leg.mode == 3 || _leg.mode == 5)
  153.             {
  154.                if (NTC_ClearCursor())
  155.                   NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _leg);
  156.             }
  157.          }
  158.          NTC_PingDelay(100);
  159.          if (_leg.mode != 3 && _leg.mode != 5)
  160.          {
  161.             Print("ÿc4Who caries a leg around?");
  162.             NTC_PingDelay(200);
  163.             Print("ÿc4Dude, thats sick.");
  164.             break;
  165.          }
  166.       }
  167.    }
  168.     NTTM_TownMove("akara");
  169.     for(var i = 0 ; i < 10 ; i++)
  170.     {
  171.         _npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_AKARA);
  172.         if(_npc)
  173.          break;
  174.     }
  175.     if(_npc)
  176.     {
  177.         if(NTT_DoInteract(_npc))
  178.         {
  179.             if(NTT_DoTrade(_npc))
  180.             {
  181.             _NTR_DoID = NTT_CheckUnids();
  182.             if(_NTR_DoID)
  183.                NTTMGR_IDItems(_npc);
  184.             NTT_FillTome(_npc, 1);
  185.             NTT_FillTome(_npc, 0);
  186.             NTT_SecondTomeTP(_npc, "tbk", 1);
  187.             _portal = NTR_GetTP();
  188.             if(!_portal)
  189.             {
  190.                NTC_SendMsgToScript("NTBotGame.ntj", "No extra tome of townportal found.");
  191.                return;
  192.             }
  193.             }
  194.         }
  195.         me.Cancel(1);
  196.     }
  197.     NTTM_TownMove("stash");
  198.     for(var i = 0 ; i < 10 ; i++)
  199.     {
  200.         _stash = NTC_FindUnit(NTC_UNIT_OBJECT, NTC_UNIT_STASH);
  201.         if(_stash)
  202.          break;
  203.    }
  204.     if(NTT_DoInteract(_stash))
  205.     {
  206.         _items = me.GetItems(NTC_UNIT_CUBE);
  207.         _cube = _items[0];
  208.         if(!_cube)
  209.         {
  210.             NTC_SendMsgToScript("NTBotGame.ntj", "No cube found.");
  211.          return;
  212.         }
  213.         if(NTCU_CheckCubeInventoryInt() > 0)
  214.         {
  215.             NTCU_OpenCubeInt(_cube)
  216.             if(NTCU_ClearCubeInt() < 1)
  217.             {
  218.             NTC_SendMsgToScript("NTBotGame.ntj", "Cube cannot be emptied.");
  219.             return;
  220.          }
  221.          NTCU_CloseCubeInt();
  222.         }
  223.         NTCU_MoveItemToCubeInt(_cube,_leg)
  224.         NTCU_MoveItemToCubeInt(_cube,_portal)
  225.         NTCU_OpenCubeInt(_cube);
  226.         Transmute();
  227.         NTCU_CloseCubeInt();
  228.         me.Cancel(1);
  229.     }
  230.     NTC_PingDelay(500);
  231.     if(!NTR_TakeCowPortal(18))
  232.     {
  233.         NTC_SendMsgToScript("NTBotGame.ntj", "Failed to take Cow Portal.");
  234.         return;
  235.     }
  236.     NTP_DoPrecast();
  237.     NTR_ClearRooms();
  238.    NTC_SendMsgToScript("NTBotGame.ntj", "SCRIPT_END");
  239. }
  240.  
  241. // Internal functions
  242. function NTR_GetTP()
  243. {
  244.    var _portals = me.GetItems("tbk");
  245.    
  246.    if (_portals)
  247.    {
  248.       for (var i = 0; i < _portals.length; i++)
  249.       {
  250.          if (_portals[i].mode == 0 && (_portals[i].itemloc != 0 || NTConfig_Columns[_portals[i].y][_portals[i].x] > 0))
  251.          {
  252.             return _portals[i];
  253.          }
  254.       }
  255.    }
  256.    return false;
  257. }
  258. function abs(integer)
  259. {
  260.    if(integer < 0){
  261.       integer = -integer;
  262.    }
  263.    return integer;
  264. }
  265. function NTR_TakeCowPortal(range)
  266. {
  267.    var _portal = NTC_FindUnit(NTC_UNIT_OBJECT, _NTR_STRING_PORTAL);
  268.    
  269.    if (_portal)
  270.    {
  271.       var _isClick;
  272.       var _preAreaId = me.areaid;
  273.       do
  274.       {
  275.          if (GetDistance(me, _portal) < range && _portal.mode == 2)
  276.          {
  277.             for (var i = 0; i < 40; i++)
  278.             {
  279.                if ((i % 10) == 0)
  280.                {
  281.                   if(NTM_GetCloserInt(_portal))
  282.                      _isClick = NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _portal);
  283.                }
  284.                if (_isClick)
  285.                {
  286.                   NTC_Delay(200);
  287.                   break;
  288.                }
  289.             }
  290.             NTC_PingDelay(1000);
  291.             var j = 0;
  292.             var check = true;
  293.             do
  294.             {
  295.                if (me.areaid != _preAreaId)
  296.                {
  297.                   NTC_PingDelay(500);
  298.                   return true;
  299.                   check = false;
  300.                }
  301.                j++;
  302.             } while(j < 40 && check == true);
  303.          }
  304.       } while (_portal.GetNext());
  305.    }
  306.    return false;
  307. }
  308. function NTR_ClearPosition(range, pickitem, safelevel, failed)
  309. {
  310.    var _orgx, _orgy;
  311.    var _spectype = [0x0A, 0x01, 0x01];
  312.    var _skiplist;
  313.    var _attackcount = 0;
  314.    var _target;
  315.    var _distance, _mingid, _mindistance;
  316.    var _result;
  317.    var _cowKing;
  318.    var _test;
  319.  
  320.    if(NTConfig_AttackSkill[1] < 1 || NTConfig_AttackSkill[3] < 1)
  321.       return false;
  322.  
  323.    switch(arguments.length)
  324.    {
  325.    case 0:
  326.       range = 20;
  327.    case 1:
  328.       pickitem = false;
  329.    case 2:
  330.       safelevel = 0;
  331.    default:
  332.       if(NTConfig_CheckSelfSafe < 0x01 && NTConfig_CheckMercSafe < 0x01)
  333.          safelevel = 0;
  334.       break;
  335.    }
  336.  
  337.    _orgx = me.x;
  338.    _orgy = me.y;
  339.  
  340.    for(var i = 0 ; i < _spectype.length ; i++)
  341.    {
  342.       _skiplist = new Array();
  343.       while(_attackcount < (i+1)*100)
  344.       {
  345.          _mindistance = 100000;
  346.          _target = NTC_FindUnit(NTC_UNIT_MONSTER);
  347.          if(_target)
  348.          {
  349.             do
  350.             {
  351.                if(_skiplist.indexOf(_target.gid) < 0)
  352.                {
  353.                   if(_target.IsAttackable() && (_target.spectype&_spectype[i]))
  354.                   {
  355.                      if(GetDistance(_orgx, _orgy, _target.x, _target.y) <= range && NTA_IsValidMonster(_target))
  356.                      {
  357.                         _distance = GetDistance(me, _target);
  358.  
  359.                         if(_distance < _mindistance)
  360.                         {
  361.                            _mingid = _target.gid;
  362.                            _mindistance = _distance;
  363.                         }
  364.                      }
  365.                   }
  366.                   else
  367.                      _skiplist.push(_target.gid);
  368.                }
  369.             } while(_target.GetNext());
  370.          }
  371.          if(_mindistance < 100000)
  372.          {
  373.             _target = NTC_FindUnit(NTC_UNIT_MONSTER, _mingid);
  374.  
  375.             if(_target)
  376.             {
  377.                _cowKing = GetUnit(NTC_UNIT_MONSTER, GetLocaleString(2850));
  378.                if(_cowKing){
  379.                   return true;
  380.                }
  381.                _result = NTA_Attack(_target, (_attackcount%30) == 0);
  382.  
  383.                switch(_result)
  384.                {
  385.                case 1:
  386.                   _skiplist.push(_mingid);
  387.                   break;
  388.                case 2:
  389.                case 3:
  390.                   _attackcount++;
  391.                   break;
  392.                default:
  393.                   return false;
  394.                }
  395.             }
  396.          }
  397.          else
  398.             break;
  399.       }
  400.    }
  401.    if(me.classid == NTC_CHAR_CLASS_PALADIN)
  402.    {
  403.       if(_attackcount > 2 && (parseInt(me.hp*100/me.hpmax) < NTConfig_UseRedemptionHP || parseInt(me.mp*100/me.mpmax) < NTConfig_UseRedemptionMP))
  404.       {
  405.          if(NTC_PutSkill(124, NTC_HAND_RIGHT))
  406.             NTC_PingDelay(1000);
  407.       }
  408.    }
  409.    _cowKing = GetUnit(NTC_UNIT_MONSTER, GetLocaleString(2850));
  410.    if(_cowKing){
  411.       return true;
  412.    }
  413.    if(_NTR_CHEST_AND_ROCKS && failed == false)
  414.    {
  415.       _target = NTR_GetChest();
  416.       if(_target){
  417.          do
  418.          {
  419.          if(_target && GetDistance(_orgx, _orgy, _target.x, _target.y) <= range)
  420.          {    
  421.                if(NTC_OpenChest(_target))
  422.                   NTSI_PickItems();
  423.              
  424.          }
  425.          }while(_target.GetNext());
  426.       }
  427.       _target = NTR_GetObj(174);
  428.       if(_target){
  429.          do
  430.          {
  431.             if(_target && GetDistance(_orgx, _orgy, _target.x, _target.y) <= range)
  432.             {
  433.                if(NTM_MoveTo(me.areaid, _target.x, _target.y))
  434.                {
  435.                   if(NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _target))
  436.                   {
  437.                      Delay(200);
  438.                      NTSI_PickItems();
  439.                   }
  440.                }
  441.             }
  442.          }while(_target.GetNext());
  443.       }
  444.       _target = NTR_GetObj(175);
  445.       if(_target){
  446.          do
  447.          {
  448.             if(_target && GetDistance(_orgx, _orgy, _target.x, _target.y) <= range)
  449.             {
  450.                if(NTM_MoveTo(me.areaid, _target.x, _target.y))
  451.                {
  452.                   if(NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _target))
  453.                   {
  454.                      Delay(200);
  455.                      NTSI_PickItems();
  456.                   }
  457.                }
  458.             }
  459.          }while(_target.GetNext());
  460.       }
  461.       _target = NTR_GetObj(159);
  462.       if(_target){
  463.          do
  464.          {
  465.             if(_target && GetDistance(_orgx, _orgy, _target.x, _target.y) <= range)
  466.             {
  467.                if(NTM_MoveTo(me.areaid, _target.x, _target.y))
  468.                {
  469.                   if(NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _target))
  470.                   {
  471.                      Delay(200);
  472.                      NTSI_PickItems();
  473.                   }
  474.                }
  475.             }
  476.          }while(_target.GetNext());
  477.       }
  478.       _target = NTR_GetObj(155);
  479.       if(_target){
  480.          do
  481.          {
  482.             if(_target && GetDistance(_orgx, _orgy, _target.x, _target.y) <= range)
  483.             {
  484.                if(NTM_MoveTo(me.areaid, _target.x, _target.y))
  485.                {
  486.                   if(NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _target))
  487.                   {
  488.                      Delay(200);
  489.                      NTSI_PickItems();
  490.                   }
  491.                }
  492.             }
  493.          }while(_target.GetNext());
  494.       }
  495.    }
  496.    if(pickitem && _attackcount > 0)
  497.       NTSI_PickItems();
  498.    switch(safelevel)
  499.    {
  500.    case 1:
  501.       return NTTMGR_CheckSafe(0x00, NTConfig_CheckMercSafe&0x01);
  502.    case 2:
  503.       return NTTMGR_CheckSafe(NTConfig_CheckSelfSafe, NTConfig_CheckMercSafe);
  504.    }
  505.    return true;
  506. }
  507. function NTR_ClearRooms()
  508. {
  509.    var failcount = 0, precount = 0, x, y, offx = 0, offy = 0, goalx = 0, goaly = 0, cowoffx = 0, cowoffy = 0;
  510.    var toggle = true;
  511.    var _cowKing;
  512.    var _faillast;
  513.    
  514.    x = me.x;
  515.    y = me.y;
  516.    
  517.    //NTC_PingDelay(5000);
  518.    while (failcount <= _NTR_FAIL_CHECKS)
  519.    {
  520.       if(toggle == true && offx == goalx){
  521.          if(goaly < 0){
  522.             goaly=(0-(goaly-20));
  523.          }else{
  524.             goaly=(0-(goaly+20));
  525.          }
  526.          toggle = false;
  527.       }
  528.       if(toggle == false && offy == goaly){
  529.          if(goaly < 0){
  530.             goalx=(0-(goalx-20));
  531.          }else{
  532.             goalx=(0-(goalx+20));
  533.          }
  534.          toggle = true;
  535.       }
  536.       if(offy > goaly){
  537.          offy-=20;
  538.          y-=20;
  539.       }
  540.       if(offy < goaly){
  541.          offy+=20;
  542.          y+=20;
  543.       }
  544.       if(offx < goalx){
  545.          offx+=20;
  546.          x+=20;
  547.       }
  548.       if(offx > goalx){
  549.          offx-=20;
  550.          x-=20;
  551.       }
  552.       _cowKing = GetUnit(NTC_UNIT_MONSTER, GetLocaleString(2850));
  553.       if(!_cowKing){
  554.          NTR_ClearPosition(20, true, 0, _faillast);
  555.          if(((GetTickCount()-precount)/1000) >= _NTR_PRE_EVERY && _NTR_PRE_EVERY >= 0){
  556.             NTP_DoPrecast();
  557.             precount = GetTickCount();
  558.          }
  559.       }
  560.       if(!NTM_MoveTo(me.areaid, x, y)){
  561.          failcount++;
  562.          _faillast = true;
  563.       }else{
  564.          _faillast = false;
  565.       }
  566.    }
  567.    return true;
  568. }
  569. function NTT_SecondTomeTP(npc, type, amount)
  570. {
  571.    var _items;
  572.    var _counter = 0;
  573.  
  574.    if(arguments.length < 1)
  575.       return false;
  576.  
  577.    if(arguments.length < 2)
  578.       type = 0;
  579.  
  580.    if(arguments.length < 0)
  581.       amount = 1;
  582.  
  583.    if(amount == 0)
  584.       return false;
  585.  
  586.    if(type)
  587.       _items = npc.GetItems("tbk");
  588.  
  589.    if(_items)
  590.    {
  591.       if(_items.length > 0)
  592.       {
  593.          for(var i = 0 ; i < amount ; i++)
  594.          {
  595.             if(NTT_ShopItem(_items[0], npc, 2))
  596.                _counter++;
  597.          }
  598.       }
  599.    }
  600.    return (_counter > 0);
  601. }
  602. function NTR_GetChest()
  603. {
  604.    var _chest;
  605.  
  606.    _chest = NTC_FindUnit(NTC_UNIT_OBJECT, "chest");
  607.     if(_chest)
  608.     {
  609.       return _chest;
  610.     }
  611.  
  612.    return null;
  613. }
  614. function NTR_GetObj(num)
  615. {
  616.    var _chest;
  617.  
  618.    _chest = NTC_FindUnit(NTC_UNIT_OBJECT, num);
  619.     if(_chest)
  620.     {
  621.       return _chest;
  622.     }
  623.  
  624.    return null;
  625. }