Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var _leadername = "wdi"; // ~~~~EDIT THIS~~~~CaSe SeNsItIvE~~~~
- var _attack = true; // ~~~~EDIT THIS~~~~true OR false~~~~
- var _messages = true // white 'Say' messages
- /*
- * Follower by kolton
- *
- * Commands:
- * 1 - take leader's tp from town / move to leader's town
- * 2 - take leader's tp to town
- * 3 - town manager
- * a - attack toggle
- * <charname> a - attack toggle for <charname>
- * aon - attack on
- * aoff - attack off
- * bo - barbarian precast
- * <charname> att <skillid> - change skill for <charname>
- * c - get corpse
- * p - pick items
- * r - revive
- * s - toggle stop
- * <charname> s - toggle stop <charname>
- * quit - exit game
- *
- * a2-5 - move to appropriate act (after quest) !NOTE: Disable 'no sound' or game will crash!
- * quest - talk to key npcs in appropriate act
- */
- RegisterEvent(EVENT_GAMEMSG, Commands);
- var _leader;
- var _leadera;
- var _stop = false;
- function NTMain()
- {
- Include("libs/common/NTCommon.ntl");
- NTC_IncludeLibs();
- NTC_IncludeConfig("NTBot/char_configs");
- NT_LoadConfig();
- NTSI_LoadNIPFiles("NTBot/item_configs");
- NTA_Initialize();
- if(NTC_InTown())
- NTTMGR_TownManager();
- if(!GetLeader(_leadername))
- {
- FL_Say("Leader not found or improperly configured file.");
- NTC_Delay(1000);
- ExitGame();
- }
- else
- FL_Say("Leader found.");
- NTC_PingDelay(200);
- while(!NTC_InMyParty(_leadername))
- NTC_Delay(500);
- FL_Say("Partied.");
- NTTM_TownMove("portalspot");
- while(NTC_InTown())
- NTC_Delay(250);
- FL_Say("Initiate loop.");
- _leadera = GetLeaderUnit(_leadername);
- var _msgtick = GetTickCount();
- while(NTC_InMyParty(_leadername)) // main loop
- {
- //_leadera = NTC_FindUnit(NTC_UNIT_PLAYER, _leadername);
- while(!_leadera)
- {
- if(GetTickCount() - _msgtick > 3000)
- {
- FL_Say("Leader unit not found!");
- _msgtick = GetTickCount();
- }
- _leadera = GetLeaderUnit(_leadername);
- Delay(500);
- }
- while(_stop)
- NTC_Delay(200);
- if(GetDistance(me, _leadera) <= 50)
- {
- NTM_GetCloserInt(_leadera);
- NTP_DoPrecast(false);
- //NTM_MoveTo(_leader.areaid, _leadera.x, _leadera.y); // moves too much
- }
- if(_attack)
- NTA_ClearPosition(15);
- if(_leader.areaid != me.areaid && !NTC_InTown())
- {
- while(_leader.areaid == 0)
- Delay(100);
- switch(CheckExit(_leader.areaid))
- {
- case 1:
- FL_Say("Taking stairs.");
- Delay(500);
- NTM_TakeStair(_leader.areaid);
- _leadera = GetLeaderUnit(_leadername);
- break;
- case 2:
- FL_Say("Using portal.");
- Delay(500);
- NTM_UsePortal(null, _leader.areaid);
- _leadera = GetLeaderUnit(_leadername);
- break;
- case 3:
- FL_Say("Taking waypoint.");
- Delay(500);
- NTM_TakeWaypoint(_leader.areaid);
- _leadera = GetLeaderUnit(_leadername);
- break;
- case 4:
- FL_Say("Special transit.");
- _leadera = GetLeaderUnit(_leadername);
- break;
- }
- while(me.areaid == 0)
- Delay(100);
- }
- if(NTC_InTown())
- {
- NTTM_TownMove("portalspot");
- while(NTC_InTown())
- NTC_Delay(250);
- }
- NTC_Delay(25);
- }
- NTC_SendMsgToScript("NTBotGame.ntj", "SCRIPT_END");
- }
- function GetLeaderUnit(name)
- {
- var _unit = NTC_FindUnit(NTC_UNIT_PLAYER);
- if(_unit)
- {
- do
- {
- if(_unit.name == name)
- return _unit;
- }while(_unit.GetNext());
- }
- return false;
- }
- function GetLeader(name)
- {
- _leader = GetPlayerUnit();
- if(_leader)
- {
- do
- {
- if(_leader.name == name)
- return _leader;
- }while(_leader.GetNext());
- }
- return false;
- }
- function CheckLeaderAct()
- {
- if(_leader.areaid <= 39)
- return 1;
- else if(_leader.areaid >= 40 && _leader.areaid <= 74)
- return 2;
- else if(_leader.areaid >= 75 && _leader.areaid <= 102)
- return 3;
- else if(_leader.areaid >= 103 && _leader.areaid <= 108)
- return 4;
- else
- return 5;
- }
- function Commands(msg, type)
- {
- if(type == 0 && msg.indexOf(_leadername) > -1)
- {
- var _split = msg.split(":");
- if(_split.length >= 1 && _split[1] != undefined)
- {
- var _sender = _split[0].substring(3, _split[0].length - 3);
- var _msg = _split[1].substring(1);
- if(_sender == _leadername)
- {
- switch(_msg)
- {
- case "a": // attack toggle for everyone
- case (me.name + " a"): // individual attack toggle
- if(_attack)
- {
- Delay(150);
- _attack = false;
- Say("/w " + _leadername + " Attack off");
- }
- else
- {
- Delay(150);
- _attack = true;
- Say("/w " + _leadername + " Attack on");
- }
- break;
- case "aoff": // attack off for everyone
- case (me.name + " aoff"): // individual attack off
- Delay(150);
- _attack = false;
- Say("/w " + _leadername + " Attack off");
- break;
- case "aon": // attack on for everyone
- case (me.name + " aon"): // individual attack off
- Delay(150);
- _attack = true;
- Say("/w " + _leadername + " Attack on");
- break;
- case "c": // get corpse
- NTT_GetCorpses();
- break;
- case "p": // pick items
- Delay(150);
- Say("/w " + _leadername + " Picking items.");
- NTSI_PickItems();
- break;
- case "r": // revive
- if(me.mode == 0 || me.mode == 17 || me.hp == 0)
- {
- Delay(150);
- Say("/w " + _leadername + " Reviving...");
- me.Cancel(0);
- me.Cancel(1);
- if(NTTM_TownMove("portalspot"))
- Say("/w " + _leadername + " I'M ALIVE!!!");
- }
- break;
- case "1": // take leader's tp to outside of town / change act if leader is in another town
- if(NTC_InTown() && NTC_InTown(_leader))
- {
- Say("/w " + _leadername + " Going to leader's town.");
- NTTM_CheckAct(CheckLeaderAct());
- NTTM_TownMove("portalspot");
- }
- else if(NTC_InTown())
- {
- Say("/w " + _leadername + " Taking portal to leader.");
- NTTM_CheckAct(CheckLeaderAct());
- NTTM_TownMove("portalspot");
- NTM_UsePortal("BluePortal", _leader.areaid, _leadername);
- if(_attack)
- NTA_ClearPosition();
- }
- break;
- case "2": // take leader's tp to town
- if(!NTC_InTown())
- {
- Delay(150);
- Say("/w " + _leadername + " Going to town.");
- NTM_UsePortal(null, null, _leadername);
- }
- break;
- case "3": // town manager
- if(NTC_InTown())
- {
- Delay(150);
- Say("/w " + _leadername + " Running town manager.");
- NTTMGR_TownManager();
- NTTM_TownMove("portalspot");
- Say("/w " + _leadername + " Ready.");
- }
- break;
- case "quit": // exit game
- Delay(150);
- Say("/w " + _leadername + " Good riddance.");
- Delay(500);
- ExitGame();
- break;
- case "bo": // barbarian precast
- if(me.classid == 4)
- NTP_DoPrecast(true);
- break;
- case "a2": // go to act 2 using warriv
- if(me.areaid == 1)
- GoEast();
- NTTM_TownMove("portalspot");
- Say("/w " + _leadername + " a2 ready");
- break;
- case "a3": // act3 via meshif
- if(me.areaid == 40)
- SailEast();
- NTTM_TownMove("portalspot");
- Say("/w " + _leadername + " a3 ready");
- break;
- case "a4": // act 4 via mephisto portal
- if(me.areaid == 102)
- NT_A4();
- NTTM_TownMove("portalspot");
- Say("/w " + _leadername + " a4 ready");
- break;
- case "a5": // act 5 via tyrael
- if(me.areaid == 103)
- NT_A5();
- NTTM_TownMove("portalspot");
- Say("/w " + _leadername + " a5 ready");
- break;
- case "s": // stop toggle
- case (me.name + " s"): // individual stop toggle
- if(_stop)
- {
- _stop = false;
- Say("/w " + _leadername + " resuming");
- }
- else
- {
- _stop = true;
- Say("/w " + _leadername + " stopping");
- }
- break;
- case "q":
- Delay(150);
- Say("/w " + _leadername + " Running town quest.");
- switch(me.areaid)
- {
- case 1:
- QuestA1();
- Say("/w " + _leadername + " Quest Ready.");
- break;
- case 40:
- QuestA2();
- Say("/w " + _leadername + " Quest Ready.");
- break;
- case 75:
- QuestA3();
- Say("/w " + _leadername + " Quest Ready.");
- break;
- case 103:
- QuestA4();
- Say("/w " + _leadername + " Quest Ready.");
- break;
- case 109:
- QuestA5();
- Say("/w " + _leadername + " Quest Ready.");
- break;
- }
- break;
- }
- }
- if((msg.indexOf(me.name) > -1 || msg.indexOf("all ") > -1) && msg.indexOf(" att ") > -1)
- {
- var piece = msg.split("att ");
- if(piece && me.classid == 1)
- {
- Say("/w " + _leadername + " Attack skill is " + parseInt(piece[1]));
- NTConfig_AttackSkill[1] = parseInt(piece[1]);
- NTConfig_AttackSkill[3] = parseInt(piece[1]);
- }
- }
- }
- }
- else if (type == 4 && msg.indexOf(_leadername) > -1 && (msg.indexOf("weaken") > -1 || msg.indexOf("timeout") > -1))
- ExitGame();
- }
- //===============================================================================================================
- function CheckExit(area)
- {
- var _unit = GetPresetUnits(me.areaid, NTC_UNIT_TILE);
- if(_unit)
- for(var i in _unit)
- {
- if(_unit[i].subareaid == area)
- return 1;
- }
- _unit = NTC_FindUnit(NTC_UNIT_OBJECT, GetLocaleString(3226));
- if(_unit)
- do
- {
- if(_unit.subareaid == area || _unit.subareaid == area + 256 || _unit.subareaid == area + 768)
- return 2;
- }while(_unit.GetNext());
- if(NTC_InTown(_leader))
- {
- _unit = NTM_GetWaypointInt();
- if(_unit)
- return 3;
- }
- if((me.areaid == 74 && area == 54 || me.areaid == 54 && area == 74) && NTM_TakeUnit(NTC_UNIT_OBJECT, 298) || // arcane portal
- me.areaid >= 66 && me.areaid <= 72 && area == 73 && NTM_TakeUnit(NTC_UNIT_OBJECT, 100) // duriel's wall
- )
- return 4;
- return false;
- }
- function FL_Say(msg)
- {
- if(_messages)
- Say(msg);
- return true;
- }
- function GoEast()
- {
- NTTM_TownMove("warriv");
- var _npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_WARRIV_ACT_1, 10);
- if(_npc)
- if(NTT_DoInteract(_npc))
- me.SelectNPCMenu(0x0D36);
- }
- function SailEast()
- {
- NTTM_TownMove("palace");
- var _npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_JERHYN, 10);
- if(_npc)
- if(NTT_DoInteract(_npc))
- {
- me.SelectNPCMenu(0x0D35);
- me.Cancel(0);
- me.Cancel(1);
- }
- NTTM_TownMove("meshif");
- _npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_MESHIF_ACT_2, 10);
- if(_npc)
- if(NTT_DoInteract(_npc))
- me.SelectNPCMenu(0x0D38);
- }
- function NT_A5()
- {
- NTTM_TownMove("tyrael");
- var _npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_TYREAL_ACT_4, 10);
- if(_npc)
- if(NTT_DoInteract(_npc))
- me.SelectNPCMenu(0x58D2);
- }
- function NT_A4()
- {
- if(me.areaid == 102)
- {
- NTM_MoveTo(me.areaid, 17590, 8068);
- NTC_Delay(500);
- NTM_TakeUnit(NTC_UNIT_OBJECT, 342);
- }
- }
- function QuestA1()
- {
- NTTM_TownMove("akara");
- var _npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_AKARA, 10);
- if(_npc)
- if(NTT_DoInteract(_npc))
- {
- me.SelectNPCMenu(0x0D35);
- me.Cancel(0);
- me.Cancel(1);
- }
- NTTM_TownMove("kashya");
- _npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_KASHYA);
- if(_npc)
- if(NTT_DoInteract(_npc))
- {
- me.SelectNPCMenu(0x0D35);
- me.Cancel(0);
- me.Cancel(1);
- }
- NTTM_TownMove("portalspot");
- }
- function QuestA2()
- {
- NTTM_TownMove("atma");
- var _npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_ATMA);
- if(_npc)
- if(NTT_DoInteract(_npc))
- {
- me.SelectNPCMenu(0x0D35);
- me.Cancel(0);
- me.Cancel(1);
- }
- NTTM_TownMove("portalspot");
- }
- function QuestA3()
- {
- NTTM_TownMove("stash");
- var _npc = NTC_FindUnit(NTC_UNIT_NPC, 245, 10);
- if(_npc)
- if(NTT_DoInteract(_npc))
- {
- me.SelectNPCMenu(0x0D35);
- me.Cancel(0);
- me.Cancel(1);
- }
- NTTM_TownMove("meshif");
- _npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_MESHIF_ACT_3);
- if(_npc)
- if(NTT_DoInteract(_npc))
- {
- me.SelectNPCMenu(0x0D35);
- me.Cancel(0);
- me.Cancel(1);
- }
- NTTM_TownMove("alkor");
- _npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_ALKOR);
- if(_npc)
- if(NTT_DoInteract(_npc))
- {
- me.SelectNPCMenu(0x0D35);
- me.Cancel(0);
- me.Cancel(1);
- }
- NTTM_TownMove("portalspot");
- }
- function QuestA4()
- {
- NTTM_TownMove("tyrael");
- var _npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_TYRAEL_ACT_4, 10);
- if(_npc)
- if(NTT_DoInteract(_npc))
- {
- me.SelectNPCMenu(0x0D35);
- me.Cancel(0);
- me.Cancel(1);
- }
- NTTM_TownMove("portalspot");
- }
- function QuestA5()
- {
- NTTM_TownMove("malah");
- var _npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_MALAH, 10);
- if(_npc)
- if(NTT_DoInteract(_npc))
- {
- me.SelectNPCMenu(0x0D35);
- me.Cancel(0);
- me.Cancel(1);
- }
- NTTM_TownMove("larzuk");
- _npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_LARZUK, 10);
- if(_npc)
- if(NTT_DoInteract(_npc))
- {
- me.SelectNPCMenu(0x0D35);
- me.Cancel(0);
- me.Cancel(1);
- }
- NTTM_TownMove("portalspot");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement