Advertisement
kolton

Untitled

Oct 10th, 2011
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var _leadername = "wdi"; // ~~~~EDIT THIS~~~~CaSe SeNsItIvE~~~~
  2. var _attack = true; // ~~~~EDIT THIS~~~~true OR false~~~~
  3. var _messages = true // white 'Say' messages
  4.  
  5. /*
  6. * Follower by kolton
  7. *
  8. * Commands:
  9. *   1 - take leader's tp from town / move to leader's town
  10. *   2 - take leader's tp to town
  11. *   3 - town manager
  12. *   a - attack toggle
  13. *   <charname> a - attack toggle for <charname>
  14. *   aon - attack on
  15. *   aoff - attack off
  16. *   bo - barbarian precast
  17. *   <charname> att <skillid> - change skill for <charname>
  18. *   c - get corpse
  19. *   p - pick items
  20. *   r - revive
  21. *   s - toggle stop
  22. *   <charname> s - toggle stop <charname>
  23. *   quit - exit game
  24. *
  25. *   a2-5 - move to appropriate act (after quest) !NOTE: Disable 'no sound' or game will crash!
  26. *   quest - talk to key npcs in appropriate act
  27. */
  28.  
  29. RegisterEvent(EVENT_GAMEMSG, Commands);
  30.  
  31. var _leader;
  32. var _leadera;
  33. var _stop = false;
  34.  
  35. function NTMain()
  36. {
  37.     Include("libs/common/NTCommon.ntl");
  38.     NTC_IncludeLibs();
  39.     NTC_IncludeConfig("NTBot/char_configs");
  40.  
  41.     NT_LoadConfig();
  42.     NTSI_LoadNIPFiles("NTBot/item_configs");
  43.    
  44.     NTA_Initialize();
  45.    
  46.     if(NTC_InTown())
  47.         NTTMGR_TownManager();
  48.    
  49.     if(!GetLeader(_leadername))
  50.     {
  51.         FL_Say("Leader not found or improperly configured file.");
  52.         NTC_Delay(1000);
  53.         ExitGame();
  54.     }
  55.     else
  56.         FL_Say("Leader found.");
  57.        
  58.     NTC_PingDelay(200);
  59.    
  60.     while(!NTC_InMyParty(_leadername))
  61.         NTC_Delay(500);
  62.    
  63.     FL_Say("Partied.");
  64.    
  65.     NTTM_TownMove("portalspot");
  66.    
  67.     while(NTC_InTown())
  68.         NTC_Delay(250);
  69.  
  70.     FL_Say("Initiate loop.");
  71.  
  72.     _leadera = GetLeaderUnit(_leadername);
  73.    
  74.     var _msgtick = GetTickCount();
  75.    
  76.     while(NTC_InMyParty(_leadername)) // main loop
  77.     {
  78.         //_leadera = NTC_FindUnit(NTC_UNIT_PLAYER, _leadername);
  79.        
  80.         while(!_leadera)
  81.         {
  82.             if(GetTickCount() - _msgtick > 3000)
  83.             {
  84.                 FL_Say("Leader unit not found!");
  85.                 _msgtick = GetTickCount();
  86.             }
  87.            
  88.             _leadera = GetLeaderUnit(_leadername);
  89.            
  90.             Delay(500);
  91.         }
  92.    
  93.         while(_stop)
  94.             NTC_Delay(200);
  95.            
  96.         if(GetDistance(me, _leadera) <= 50)
  97.         {
  98.             NTM_GetCloserInt(_leadera);
  99.             NTP_DoPrecast(false);
  100.             //NTM_MoveTo(_leader.areaid, _leadera.x, _leadera.y); // moves too much
  101.         }
  102.        
  103.         if(_attack)
  104.             NTA_ClearPosition(15);
  105.  
  106.         if(_leader.areaid != me.areaid && !NTC_InTown())
  107.         {
  108.             while(_leader.areaid == 0)
  109.                 Delay(100);
  110.        
  111.             switch(CheckExit(_leader.areaid))
  112.             {
  113.             case 1:
  114.                 FL_Say("Taking stairs.");
  115.                 Delay(500);
  116.                 NTM_TakeStair(_leader.areaid);
  117.                 _leadera = GetLeaderUnit(_leadername);
  118.                 break;
  119.             case 2:
  120.                 FL_Say("Using portal.");
  121.                 Delay(500);
  122.                 NTM_UsePortal(null, _leader.areaid);
  123.                 _leadera = GetLeaderUnit(_leadername);
  124.                 break;
  125.             case 3:
  126.                 FL_Say("Taking waypoint.");
  127.                 Delay(500);
  128.                 NTM_TakeWaypoint(_leader.areaid);
  129.                 _leadera = GetLeaderUnit(_leadername);
  130.                 break;
  131.             case 4:
  132.                 FL_Say("Special transit.");
  133.                 _leadera = GetLeaderUnit(_leadername);
  134.                 break;
  135.             }
  136.            
  137.             while(me.areaid == 0)
  138.                 Delay(100);
  139.         }
  140.        
  141.         if(NTC_InTown())
  142.         {
  143.             NTTM_TownMove("portalspot");
  144.            
  145.             while(NTC_InTown())
  146.                 NTC_Delay(250);
  147.         }
  148.        
  149.         NTC_Delay(25);
  150.     }
  151.    
  152.     NTC_SendMsgToScript("NTBotGame.ntj", "SCRIPT_END");
  153. }
  154.  
  155. function GetLeaderUnit(name)
  156. {
  157.     var _unit = NTC_FindUnit(NTC_UNIT_PLAYER);
  158.    
  159.     if(_unit)
  160.     {
  161.         do
  162.         {
  163.             if(_unit.name == name)
  164.                 return _unit;
  165.         }while(_unit.GetNext());
  166.     }
  167.    
  168.     return false;
  169. }
  170.  
  171. function GetLeader(name)
  172. {
  173.     _leader = GetPlayerUnit();
  174.    
  175.     if(_leader)
  176.     {
  177.         do
  178.         {
  179.             if(_leader.name == name)
  180.                 return _leader;
  181.         }while(_leader.GetNext());
  182.     }
  183.    
  184.     return false;
  185. }
  186.  
  187. function CheckLeaderAct()
  188. {
  189.     if(_leader.areaid <= 39)
  190.         return 1;
  191.     else if(_leader.areaid >= 40 && _leader.areaid <= 74)
  192.         return 2;
  193.     else if(_leader.areaid >= 75 && _leader.areaid <= 102)
  194.         return 3;
  195.     else if(_leader.areaid >= 103 && _leader.areaid <= 108)
  196.         return 4;
  197.     else
  198.         return 5;
  199. }
  200.  
  201. function Commands(msg, type)
  202. {
  203.     if(type == 0 && msg.indexOf(_leadername) > -1)
  204.     {
  205.         var _split = msg.split(":");
  206.        
  207.         if(_split.length >= 1 && _split[1] != undefined)
  208.         {
  209.             var _sender = _split[0].substring(3, _split[0].length - 3);
  210.             var _msg = _split[1].substring(1);
  211.  
  212.             if(_sender == _leadername)
  213.             {
  214.                 switch(_msg)
  215.                 {
  216.                 case "a": // attack toggle for everyone
  217.                 case (me.name + " a"): // individual attack toggle
  218.                     if(_attack)
  219.                     {
  220.                         Delay(150);
  221.                         _attack = false;
  222.                         Say("/w " + _leadername + " Attack off");
  223.                     }
  224.                     else
  225.                     {
  226.                         Delay(150);
  227.                         _attack = true;
  228.                         Say("/w " + _leadername + " Attack on");
  229.                     }
  230.                     break;
  231.                    
  232.                 case "aoff": // attack off for everyone
  233.                 case (me.name + " aoff"): // individual attack off
  234.                     Delay(150);
  235.                     _attack = false;
  236.                     Say("/w " + _leadername + " Attack off");
  237.                     break;
  238.                    
  239.                 case "aon": // attack on for everyone
  240.                 case (me.name + " aon"): // individual attack off
  241.                     Delay(150);
  242.                     _attack = true;
  243.                     Say("/w " + _leadername + " Attack on");
  244.                     break;
  245.                    
  246.                 case "c": // get corpse
  247.                     NTT_GetCorpses();
  248.                     break;
  249.                    
  250.                 case "p": // pick items
  251.                     Delay(150);
  252.                     Say("/w " + _leadername + " Picking items.");
  253.                     NTSI_PickItems();
  254.                     break;
  255.                    
  256.                 case "r": // revive
  257.                     if(me.mode == 0 || me.mode == 17 || me.hp == 0)
  258.                     {
  259.                         Delay(150);
  260.                         Say("/w " + _leadername + " Reviving...");
  261.                         me.Cancel(0);
  262.                         me.Cancel(1);
  263.                         if(NTTM_TownMove("portalspot"))
  264.                             Say("/w " + _leadername + " I'M ALIVE!!!");
  265.                     }
  266.                     break;
  267.                    
  268.                 case "1": // take leader's tp to outside of town / change act if leader is in another town
  269.                     if(NTC_InTown() && NTC_InTown(_leader))
  270.                     {
  271.                         Say("/w " + _leadername + " Going to leader's town.");
  272.                         NTTM_CheckAct(CheckLeaderAct());
  273.                         NTTM_TownMove("portalspot");
  274.                     }
  275.                     else if(NTC_InTown())
  276.                     {
  277.                         Say("/w " + _leadername + " Taking portal to leader.");
  278.                         NTTM_CheckAct(CheckLeaderAct());
  279.                         NTTM_TownMove("portalspot");
  280.                         NTM_UsePortal("BluePortal", _leader.areaid, _leadername);
  281.                         if(_attack)
  282.                             NTA_ClearPosition();
  283.                     }
  284.                     break;
  285.  
  286.                 case "2": // take leader's tp to town
  287.                     if(!NTC_InTown())
  288.                     {
  289.                         Delay(150);
  290.                         Say("/w " + _leadername + " Going to town.");
  291.                         NTM_UsePortal(null, null, _leadername);
  292.                     }
  293.                     break;
  294.                    
  295.                 case "3": // town manager
  296.                     if(NTC_InTown())
  297.                     {
  298.                         Delay(150);
  299.                         Say("/w " + _leadername + " Running town manager.");
  300.                         NTTMGR_TownManager();
  301.                         NTTM_TownMove("portalspot");
  302.                         Say("/w " + _leadername + " Ready.");
  303.                     }
  304.                     break;
  305.  
  306.                 case "quit": // exit game
  307.                     Delay(150);
  308.                     Say("/w " + _leadername + " Good riddance.");
  309.                     Delay(500);
  310.                     ExitGame();
  311.                     break;
  312.                    
  313.                 case "bo": // barbarian precast
  314.                     if(me.classid == 4)
  315.                         NTP_DoPrecast(true);
  316.                     break;
  317.                    
  318.                 case "a2": // go to act 2 using warriv
  319.                     if(me.areaid == 1)
  320.                         GoEast();
  321.                     NTTM_TownMove("portalspot");
  322.                     Say("/w " + _leadername + " a2 ready");
  323.                     break;
  324.                    
  325.                 case "a3": // act3 via meshif
  326.                     if(me.areaid == 40)
  327.                         SailEast();
  328.                     NTTM_TownMove("portalspot");
  329.                     Say("/w " + _leadername + " a3 ready");
  330.                     break;
  331.                    
  332.                 case "a4": // act 4 via mephisto portal
  333.                     if(me.areaid == 102)   
  334.                         NT_A4();
  335.                     NTTM_TownMove("portalspot");
  336.                     Say("/w " + _leadername + " a4 ready");
  337.                     break;
  338.                    
  339.                 case "a5": // act 5 via tyrael
  340.                     if(me.areaid == 103)   
  341.                         NT_A5();
  342.                     NTTM_TownMove("portalspot");
  343.                     Say("/w " + _leadername + " a5 ready");
  344.                     break;
  345.                    
  346.                 case "s": // stop toggle
  347.                 case (me.name + " s"): // individual stop toggle
  348.                     if(_stop)
  349.                     {
  350.                         _stop = false;
  351.                         Say("/w " + _leadername + " resuming");
  352.                     }
  353.                     else
  354.                     {
  355.                         _stop = true;
  356.                         Say("/w " + _leadername + " stopping");
  357.                     }
  358.                     break;
  359.                    
  360.                 case "q":
  361.                     Delay(150);
  362.                    
  363.                     Say("/w " + _leadername + " Running town quest.");
  364.                    
  365.                     switch(me.areaid)
  366.                     {
  367.                     case 1:
  368.                         QuestA1();
  369.                         Say("/w " + _leadername + " Quest Ready.");
  370.                         break;
  371.                     case 40:
  372.                         QuestA2();
  373.                         Say("/w " + _leadername + " Quest Ready.");
  374.                         break;
  375.                     case 75:
  376.                         QuestA3();
  377.                         Say("/w " + _leadername + " Quest Ready.");
  378.                         break;
  379.                     case 103:
  380.                         QuestA4();
  381.                         Say("/w " + _leadername + " Quest Ready.");
  382.                         break;
  383.                     case 109:
  384.                         QuestA5();
  385.                         Say("/w " + _leadername + " Quest Ready.");
  386.                         break;
  387.                     }
  388.                     break;
  389.                 }
  390.             }
  391.            
  392.             if((msg.indexOf(me.name) > -1 || msg.indexOf("all ") > -1) && msg.indexOf(" att ") > -1)
  393.             {
  394.                 var piece = msg.split("att ");
  395.                 if(piece && me.classid == 1)
  396.                 {
  397.                     Say("/w " + _leadername + " Attack skill is " + parseInt(piece[1]));
  398.                     NTConfig_AttackSkill[1] = parseInt(piece[1]);
  399.                     NTConfig_AttackSkill[3] = parseInt(piece[1]);
  400.                 }
  401.             }
  402.         }
  403.     }
  404.    
  405.     else if (type == 4 && msg.indexOf(_leadername) > -1 && (msg.indexOf("weaken") > -1 || msg.indexOf("timeout") > -1))
  406.         ExitGame();
  407. }
  408.  
  409. //===============================================================================================================
  410.  
  411. function CheckExit(area)
  412. {
  413.     var _unit = GetPresetUnits(me.areaid, NTC_UNIT_TILE);
  414.    
  415.     if(_unit)
  416.         for(var i in _unit)
  417.         {
  418.             if(_unit[i].subareaid == area)
  419.                 return 1;
  420.         }
  421.        
  422.     _unit = NTC_FindUnit(NTC_UNIT_OBJECT, GetLocaleString(3226));
  423.    
  424.     if(_unit)
  425.         do
  426.         {
  427.             if(_unit.subareaid == area || _unit.subareaid == area + 256 || _unit.subareaid == area + 768)
  428.                 return 2;
  429.         }while(_unit.GetNext());
  430.    
  431.     if(NTC_InTown(_leader))
  432.     {
  433.         _unit = NTM_GetWaypointInt();
  434.        
  435.         if(_unit)
  436.             return 3;
  437.     }
  438.    
  439.     if((me.areaid == 74 && area == 54 || me.areaid == 54 && area == 74) && NTM_TakeUnit(NTC_UNIT_OBJECT, 298) || // arcane portal
  440.        me.areaid >= 66 && me.areaid <= 72 && area == 73 && NTM_TakeUnit(NTC_UNIT_OBJECT, 100) // duriel's wall
  441.        )
  442.         return 4;
  443.  
  444.     return false;
  445. }
  446.  
  447. function FL_Say(msg)
  448. {
  449.     if(_messages)
  450.         Say(msg);
  451.        
  452.     return true;
  453. }
  454.  
  455. function GoEast()
  456. {
  457.     NTTM_TownMove("warriv");
  458.  
  459.     var _npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_WARRIV_ACT_1, 10);
  460.  
  461.     if(_npc)
  462.         if(NTT_DoInteract(_npc))
  463.             me.SelectNPCMenu(0x0D36);
  464. }
  465.  
  466. function SailEast()
  467. {
  468.     NTTM_TownMove("palace");
  469.  
  470.     var _npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_JERHYN, 10);
  471.  
  472.     if(_npc)
  473.         if(NTT_DoInteract(_npc))
  474.         {
  475.             me.SelectNPCMenu(0x0D35);
  476.             me.Cancel(0);
  477.             me.Cancel(1);
  478.         }
  479.  
  480.     NTTM_TownMove("meshif");
  481.  
  482.     _npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_MESHIF_ACT_2, 10);
  483.  
  484.     if(_npc)
  485.         if(NTT_DoInteract(_npc))
  486.             me.SelectNPCMenu(0x0D38);
  487. }
  488.  
  489. function NT_A5()
  490. {
  491.     NTTM_TownMove("tyrael");
  492.  
  493.     var _npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_TYREAL_ACT_4, 10);
  494.  
  495.     if(_npc)
  496.         if(NTT_DoInteract(_npc))
  497.             me.SelectNPCMenu(0x58D2);
  498. }
  499.  
  500. function NT_A4()
  501. {
  502.     if(me.areaid == 102)
  503.     {
  504.         NTM_MoveTo(me.areaid, 17590, 8068);
  505.         NTC_Delay(500);
  506.         NTM_TakeUnit(NTC_UNIT_OBJECT, 342);
  507.     }
  508. }
  509.  
  510. function QuestA1()
  511. {
  512.     NTTM_TownMove("akara");
  513.  
  514.     var _npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_AKARA, 10);
  515.  
  516.     if(_npc)
  517.         if(NTT_DoInteract(_npc))
  518.         {
  519.             me.SelectNPCMenu(0x0D35);
  520.             me.Cancel(0);
  521.             me.Cancel(1);
  522.         }
  523.  
  524.     NTTM_TownMove("kashya");
  525.  
  526.     _npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_KASHYA);
  527.  
  528.     if(_npc)
  529.         if(NTT_DoInteract(_npc))
  530.         {
  531.             me.SelectNPCMenu(0x0D35);
  532.             me.Cancel(0);
  533.             me.Cancel(1);
  534.         }
  535.  
  536.     NTTM_TownMove("portalspot");
  537. }
  538.  
  539. function QuestA2()
  540. {
  541.     NTTM_TownMove("atma");
  542.  
  543.     var _npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_ATMA);
  544.  
  545.     if(_npc)
  546.         if(NTT_DoInteract(_npc))
  547.         {
  548.             me.SelectNPCMenu(0x0D35);
  549.             me.Cancel(0);
  550.             me.Cancel(1);
  551.         }
  552.    
  553.     NTTM_TownMove("portalspot");
  554. }
  555.  
  556. function QuestA3()
  557. {
  558.     NTTM_TownMove("stash");
  559.  
  560.     var _npc = NTC_FindUnit(NTC_UNIT_NPC, 245, 10);
  561.  
  562.     if(_npc)
  563.         if(NTT_DoInteract(_npc))
  564.         {
  565.             me.SelectNPCMenu(0x0D35);
  566.             me.Cancel(0);
  567.             me.Cancel(1);
  568.         }
  569.  
  570.     NTTM_TownMove("meshif");
  571.  
  572.     _npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_MESHIF_ACT_3);
  573.  
  574.     if(_npc)
  575.         if(NTT_DoInteract(_npc))
  576.         {
  577.             me.SelectNPCMenu(0x0D35);
  578.             me.Cancel(0);
  579.             me.Cancel(1);
  580.         }
  581.  
  582.     NTTM_TownMove("alkor");
  583.  
  584.     _npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_ALKOR);
  585.  
  586.     if(_npc)
  587.         if(NTT_DoInteract(_npc))
  588.         {
  589.             me.SelectNPCMenu(0x0D35);
  590.             me.Cancel(0);
  591.             me.Cancel(1);
  592.         }
  593.        
  594.     NTTM_TownMove("portalspot");
  595. }
  596.  
  597. function QuestA4()
  598. {
  599.     NTTM_TownMove("tyrael");
  600.  
  601.     var _npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_TYRAEL_ACT_4, 10);
  602.  
  603.     if(_npc)
  604.         if(NTT_DoInteract(_npc))
  605.         {
  606.             me.SelectNPCMenu(0x0D35);
  607.             me.Cancel(0);
  608.             me.Cancel(1);
  609.         }
  610.  
  611.     NTTM_TownMove("portalspot");
  612. }
  613.  
  614. function QuestA5()
  615. {
  616.     NTTM_TownMove("malah");
  617.  
  618.     var _npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_MALAH, 10);
  619.  
  620.     if(_npc)
  621.         if(NTT_DoInteract(_npc))
  622.         {
  623.             me.SelectNPCMenu(0x0D35);
  624.             me.Cancel(0);
  625.             me.Cancel(1);
  626.         }
  627.  
  628.     NTTM_TownMove("larzuk");
  629.  
  630.     _npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_LARZUK, 10);
  631.  
  632.     if(_npc)
  633.         if(NTT_DoInteract(_npc))
  634.         {
  635.             me.SelectNPCMenu(0x0D35);
  636.             me.Cancel(0);
  637.             me.Cancel(1);
  638.         }
  639.    
  640.     NTTM_TownMove("portalspot");
  641. }
  642.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement