suche followbot

09/23/2010 02:29 ldevil#31
Ok, interessiert evtl. keinen, aber der Bot funktioniert auch mit 7 Follow Sorcies:


Auch wenn ich anmerken muss, dass ich es nicht für den Ladder beginn empfehlen würde, zumindest nicht so. Da man ihnen keinen Bogen in die Hand drücken kann, sind die Bot's eigentlich die ganze Zeit oom und da das Script nicht wirklich dafür ausgelegt ist, bleiben die Follower dann einfach stehen, bis sie ein Chicken machen oder der Gegner tot ist. Mit Rückzug ist also nix :)
Auch bleibt oft einer oder gleich mehrere der Bots stecken oder man wird von ihnen umzingelt und kommt nicht mehr weg ... man müsste noch paar Commands einbauen. Damit man sie besser kontrollieren kann. Auch ein "Problem" ist, dass sie kein "Precast" machen während dem Rumlaufen, käme dann so auf die Commands raus:

- Scatter: Damit man nicht eingesperrt wird.
- Forc Follow: Für den Rückzug, wenn man nicht durch's Portal zurück will.
- Stop / Pause / Idle: Gibt's fast schon mit aus der Party gehen ;)
- Precast: Zwingen ein Precast zu machen
- Talk to Closest NPC / TownManager: Akara heilen, oder gleich auch noch Pots und so kaufen, stashen cuben,...

Dazu wär natürlich geil, wenn man ihnen Stats und Skillpoints vordefinieren könnte und die dann beim Level-Up oder per Befehl verteilt würden :)

Die Befehle müsste man wohl per say übergeben was natürlich nur für private games geeignet ist. Aber ja, evtl. etwas gar viel Aufwand für den Nutzen ^^
09/23/2010 03:11 benni-#32
Code:
//----- SET THIS TO YOUR LEADERS IN-GAME NAME -----//
var _leaderName = "LeaderCharNameHierEingeben";
//----- NO EDITS NEEDED BELOW THIS LINE -----//
var _pause = false;

function NTMain()
{
    //Initialization
    Include("libs/common/NTCommon.ntl");
    NTC_IncludeLibs();
    NTC_IncludeConfig("NTBot/char_configs");
    NT_LoadConfig();
    NTSI_LoadNIPFiles("NTBot/item_configs");
    NTA_Initialize();
    RegisterEvent(EVENT_GAMEMSG, NTH_Talk);
   
    var _leader = _leaderName;
   
    //Variable Declaration
    var _attack = true;
    var _party = false;
    var _target;
    var _leaderpos = null;
    var _count = 0;
   
    //Find Leader
    _target = GetPlayerUnit();
    if(_target)
    {
        while(_target.GetNext())
        {
            if(_target.name.toLowerCase() == _leader.toLowerCase())
            {
                _leader = _target;
                break;
            }
        }
    }
   
    while(!NTC_InMyParty(_leader.name))
    {
        Delay(500);
        //Print("Delaying for leader to join party..");
    }
   
    //Ready Check
    function NTH_ReadyCheck()
    {
        NTTM_CheckAct();
           
        if(me.areaid != _leader.areaid)
        {
            NTTM_TownMove("waypoint");
           
            if(_leader.areaid == 1 || _leader.areaid == 40 || _leader.areaid == 75 || _leader.areaid == 103 || _leader.areaid == 109)
            {
                if(!NTM_TakeWaypoint(_leader.areaid))
                {
                    NTM_TakeWaypoint(1);
                }
            }
            else
            {
                if(_leader.areaid < 40 || _leader.areaid == 0)
                    NTM_TakeWaypoint(1);
                else if(_leader.areaid < 75)
                    NTM_TakeWaypoint(40);
                else if(_leader.areaid < 103)
                    NTM_TakeWaypoint(75);
                else if(_leader.areaid < 109)
                    NTM_TakeWaypoint(103);
                else
                    NTM_TakeWaypoint(109);
               
                if(me.areaid != 40)
                    NTTM_TownMove("portalspot");
                else
                    NTTM_TownMove("stash");
            }
        }
    }
   
    //Bot
    while(1)
    {   
        if(NTC_InMyParty(_leader.name) && !_pause)
        {   
            NTSI_PickItems();
           
            if(_leaderpos == null)
                _leaderpos = NTH_GetLeader();
            else
                NTH_Follow();
           
            if(me.areaid != _leader.areaid && NTH_GetLeader() == null)
                NTH_ChangeArea();
        }
        else
            NTA_ClearPosition(15, true);
           
        if(!NTH_InGame(_leader.name))
        {
            Print("Leader isn't in the game!");
            NTC_SendMsgToScript("NTBotGame.ntj", "SCRIPT_END");
           
            Delay(10000);
        }
       
        Delay(100);
    }

    //Internal Functions
    function NTH_GetLeader()
    {
        _target = NTC_FindUnit(NTC_UNIT_PLAYER);

        if(_target)
        {
            do
            {
                //Print(_target.name);
                if(_target.name == _leader.name)
                    return _target;
                       
            } while(_target.GetNext());
        }
       
        return null;
    }

    function NTH_Follow()
    {
        if(_leaderpos.mode == 3 || _leaderpos.mode == 2)
            _count = 0;
       
        if(_leaderpos.mode == 1 || _leaderpos.mode == 4)
            _count++;

        if(_count >= 10 || _leaderpos.mode == 7 || _leaderpos.mode == 10 || _leaderpos.mode == 8)
            NTA_ClearPosition(15, true);
           
        if(GetDistance(me.x, me.y, _leaderpos.x, _leaderpos.y) > 7)
            NTM_MoveTo(_leader.areaid, _leaderpos.x, _leaderpos.y);
    }
   
    function NTH_ChangeArea()
    {
        if(NTH_InTown())
        {
            NTTM_TownMove("waypoint");
           
            NTM_TakeWaypoint(_leader.areaid);
           
            if(!NTH_InTown())
                NTP_DoPrecast(true);
        }
        else if(!NTH_InTown(_leader))
        {
            if(!NTM_TakeStair(_leader.areaid))
            {
                ;
            }
        }
        else
        {
            if(!NTM_TakeWaypoint(_leader.areaid))
                NTH_UsePortal(_leader.name);
        }
    }
}

function NTH_InTown(player)
{
    if(arguments.length < 1)
        player = me;
   
    if(player.areaid == 1 || player.areaid == 40 || player.areaid == 75 || player.areaid == 103 || player.areaid == 109)
        return true;
       
    return false;
}

function NTH_UsePortal(leader)
{
    var _portal = NTC_FindUnit(NTC_UNIT_OBJECT, GetLocaleString(3226));
    var _preareaid = me.areaid;

    if(_portal)
    {
        do
        {
            if(_portal.mode == 2 && NTC_CheckOwner(_portal, leader) && GetDistance(me, _portal) <= 30)
            {
                while(me.areaid == _preareaid && _portal)
                {
                    NTM_MoveTo(me.areaid, _portal.x+1, _portal.y);
                       
                    NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _portal);
                       
                    Delay(500);
                   
                    if(me.areaid != _preareaid)
                        return;
                }
            }
        } while(_target.GetNext());
    }
   
    return;
}

function NTH_InGame(playerName)
{
    _target = GetPlayerUnit();

    if(_target)
    {
        do
        {
            if(_target.name == playerName)
                return true;
        } while(_target.GetNext());
    }
    return false;
}

var busy = 0;

function NTH_Talk(msg, type)
{
   if(busy)
   {
      if(msg.indexOf("-tp") != -1 || msg.indexOf("-taketp") != -1 || msg.indexOf("-wait") != -1 || msg.indexOf("-go") != -1 || msg.indexOf("-town") != -1 || msg.indexOf("-mytp") != -1 || msg.indexOf("-res") != -1)
      {
         Delay(200);
            Say("I\'m currently in the middle of something");
         return;
      }
   }
   if(msg.indexOf(_leaderName) != -1 && msg.indexOf("-tp") != -1)
    {
    busy = 1;
      var _portalTarget = msg.split(" ")[msg.split(" ").length-1];

        if(_portalTarget != "-tp")
        {
            if( _portalTarget == me.name)
            {
                Say("TP up for later use");
                NTM_MakeTP();
            }   
        }
      else
        {
            Say("TP up for later use");
            NTM_MakeTP();
        }
   busy = 0;
   }
   if(msg.indexOf(_leaderName) != -1 && msg.indexOf("-taketp") != -1)
    {
    busy = 1;
      var _portalTarget = msg.split(" ")[msg.split(" ").length-1];

        if(NTH_InTown())
        {
            Say("Heading back to the fight through " + _portalTarget + "'s TP");
            NTTM_TownMove("portalspot");
            NTH_UsePortal(_portalTarget);
            Delay(2000);
        }
        else
        {
            Say("Taking " + _portalTarget + "'s TP back to town");
            NTH_UsePortal(_portalTarget);
            Delay(1000);
        }
    busy = 0;
   }
   if( msg.indexOf(_leaderName) != -1 && msg.indexOf("-wait") != -1)
    {
    busy = 1;
      _pause = true;
        Say("I'll just wait here for a few minutes..");
    busy = 2;
   }
    if( msg.indexOf(_leaderName) != -1 && msg.indexOf("-go") != -1)
    {
    busy = 1;
      _pause = false;
        Say("Lets do this!");
    busy = 0;
   }
   if(msg.indexOf(_leaderName) != -1 && msg.indexOf("-town") !=-1)
   {
      
      var _currentArea = GetArea();
      var _prevArea = me.areaid;
         
      Print(_currentArea.name);
      Delay(200);
      busy = 1;
      
      if(me.areaid ==1)
      {
         Say("I\'m already in " + _currentArea.name);
            Delay(200);
               NTTMGR_TownManager();
               Delay(200);
            Say("My duty\'s are done");
         NTTM_TownMove("portalspot");
      }
      else
      {
         Say("Comming from " + _currentArea.name + " Give me 2 seconds.");
         
         Delay(200);
         if(!NTH_InTown())
         {
            NTM_MakeTP();
            NTM_UsePortal("BluePortal");
         }
         else
         {
            if(me.areaid !=1)
            {
               if(me.areaid == 40 || 75 || 103 || 109)
               {
                  NTTM_TownMove("waypoint");
                  NTM_TakeWaypoint(1);
               }
            }
         }
            NTTMGR_TownManager();
            
            NTTM_TownMove("portalspot");
            
            Say("Waiting to come back");
            
            busy = 0;
            
            
            while(NTH_InTown())
            Delay(100);
      }
   busy = 0;
   }
   if(msg.indexOf(_leaderName) != -1 && msg.indexOf("-back") !=-1)
   {
   //---------------------------------------------\\
   //--Can't Get This to Work---------------------\\
   //--Get area name of leader, and say it--------\\
   //   var _leadersID = _leaderName.areaid;      //GetArea(_leaderName);
   //   var _leadersArea = GetArea(_leadersID);
   //   var _leadersPlace = _leadersArea.name;
   //   var ToGo = _leadersPlace;
   //--------------------------------------------\\
   busy = 1;
      if(NTH_InTown())
      {
         Say("Comming back to " + _leaderName); // + ToGo);
            NTTM_TownMove("portalspot");
               Delay(200);
            NTM_UsePortal("BluePortal");
         busy = 0;
         //return;
      }
      else
      {
         if(!NTH_InTown())
         {
            Say("I\'m not in town");
               busy = 0;
            //return;
         }
      }
      busy = 0;
      //return;
   }
   if(msg.indexOf(_leaderName) != -1 && msg.indexOf("-mytp") != -1)
    {
    busy = 1;
      if(NTH_InTown())
        {
            Say("I'm on my way back");
            NTTM_TownMove("portalspot");
            NTH_UsePortal(_leaderName);
            Delay(2000);
        }
        else
        {
            Say("I'm going to town");
            NTH_UsePortal(_leaderName);
            Delay(1000);
        }
    busy = 0;
   }
    if( msg.indexOf(_leaderName) != -1 && msg.indexOf("-res") != -1)
    {
   busy = 1;
        if( me.hp == 0)
        {
            Say("Ressurecting now..");
            me.Cancel(0);
            Delay(100);
            NTTM_TownMove("portalspot");
            Delay(100);
            NTH_UsePortal(_leaderName);
            Delay(200);
            NTT_GetCorpses();
        }
    busy = 0;
    }
    if(msg.indexOf(_leader.name) != -1 && msg.indexOf("-bo") != -1)
      {
         if(!NTP_DoPrecastCTA(true))
         {
            if(!NTC_InTown() && me.classid == NTC_CHAR_CLASS_BARBARIAN)
            {
               NTC_CastSkill(155, NTC_HAND_RIGHT); // Battle Command
               NTC_CastSkill(149, NTC_HAND_RIGHT); // Battle Orders
               NTC_CastSkill(138, NTC_HAND_RIGHT); // Shout
            }
         }
      } 
    if( msg.indexOf(_leaderName) != -1 && msg.indexOf("-grabwp") != -1)
    {
        if(!NTDS_GrabWayPoint())
        {
            Say("stairbuilder must have fucked something up");
            Delay(2000);
        }
        else
        {
            if(NTDS_GrabWayPoint())
                Say("Got WP TYVM");
                Delay(1000);
        }
    } 
      if( msg.indexOf(_leaderName) != -1 && msg.indexOf("-cmd") != -1)
    {
        if(me.classid == NTC_CHAR_CLASS_NECROMANCER)
        {
            Say("-wait : Pauses the bots (they still defend themselves but wont follow)");
            Delay(200);
            Say("-------------------------------------------------------------------------------------------");
            Delay(2000);
            Say("-go : Resumes following the leader");
            Delay(200);
            Say("-------------------------------------------------------------------------------------------");
            Delay(2000);
            Say("-town : Runs the town manager to let your bots heal at NPCs, repair etc when you visit town");
            Delay(200);
            Say("-------------------------------------------------------------------------------------------");
            Delay(2000);
            Say("-tp : Causes bots to make a TP");
            Delay(200);
            Say("-------------------------------------------------------------------------------------------");
            Delay(2000);
            Say("-mytp:  When you and you're bots are done in town you can now send them back through your TP before you take it.");
            Delay(200);
            Say("-------------------------------------------------------------------------------------------");
            Delay(2000);
            Say("-bo: Barb will cast Battle Command / Battle Orders / Shout");
            Delay(200);
            Say("-------------------------------------------------------------------------------------------");
            Delay(2000);
            Say("-grabwp: Chars will try to grab the WP"); 
            Say("-------------------------------------------------------------------------------------------");
            Delay(2000);
            Say("-res: Ressurects the dead Follower");
              
        }
    } 
}
Habe das kleine Follow Script zusammen gesucht und zusammen gebastelt. Habe es auch zum überprüfen an Muddy geschickt, falls er es absegnet werde ich euch nochmal bescheid geben und die jeweiligen Funktionen beschreiben.
Die meisten erschliessen sich von alleine wenn ihr das script durchgeht. :)

Btw das Script stammt nicht von mir habs auf EoN teilweise aufgeschnappt und Stück für Stück zusammen gesetzt.
09/23/2010 09:24 xXx__xXx#33
hmm bin mal gespannt ob der funktioniert, Pm mich doch Pls wenn Mudy das OKEY gibt,...

LG
09/23/2010 13:39 ldevil#34
Quote:
Originally Posted by rage5 View Post
Habe das kleine Follow Script zusammen gesucht und zusammen gebastelt. Habe es auch zum überprüfen an Muddy geschickt, falls er es absegnet werde ich euch nochmal bescheid geben und die jeweiligen Funktionen beschreiben.
Die meisten erschliessen sich von alleine wenn ihr das script durchgeht. :)

Btw das Script stammt nicht von mir habs auf EoN teilweise aufgeschnappt und Stück für Stück zusammen gesetzt.
Sieht interessant aus, werds nacher Mal testen :)
09/23/2010 14:33 benni-#35
Ich bin mal gespannt einige Funktionen gehen bei mir nicht und sobald ich ihn in -wait setze reagiert er gar nicht mehr :x und sagt mir ständig das er noch was zu tun hat ^^

ich hoffe ein scripter kann uns dabei helfen :)

an sich finde ich die idee des scripts nämlich sehr gelungen
09/23/2010 15:07 ldevil#36
Quote:
Originally Posted by rage5 View Post
Ich bin mal gespannt einige Funktionen gehen bei mir nicht und sobald ich ihn in -wait setze reagiert er gar nicht mehr :x und sagt mir ständig das er noch was zu tun hat ^^

ich hoffe ein scripter kann uns dabei helfen :)

an sich finde ich die idee des scripts nämlich sehr gelungen
Das Problem ist hier:

Code:
if(busy)
das müsste so aussehen:

Code:
if(busy == 1)
09/23/2010 15:10 benni-#37
Code:
} 
      if( msg.indexOf(_leaderName) != -1 && msg.indexOf("-cmd") != -1)
    {
        if(me.classid == NTC_CHAR_CLASS_[COLOR="Red"]NECROMANCER[/COLOR])
Ausserdem ist mir aufgefallen das nur der necro das posted

schlecht wenn man keinen necro nutzt ^^

also dort oben das rot markierte grad mit der klasse ersetzen die euch folgt

Danke für den Tipp mit dem busy == 1 ist mir nicht aufgefallen :P
09/23/2010 19:13 benni-#38
so habs jetzt soweit das es funzt

Code:
//----- SET THIS TO YOUR LEADERS IN-GAME NAME -----//
var _leaderName = "leaderName";
//----- NO EDITS NEEDED BELOW THIS LINE -----//
var _pause = false;

function NTMain()
{
    //Initialization
    Include("libs/common/NTCommon.ntl");
    NTC_IncludeLibs();
    NTC_IncludeConfig("NTBot/char_configs");
    NT_LoadConfig();
    NTSI_LoadNIPFiles("NTBot/item_configs");
    NTA_Initialize();
    RegisterEvent(EVENT_GAMEMSG, NTH_Talk);
   
    var _leader = _leaderName;
   
    //Variable Declaration
    var _attack = true;
    var _party = true;
    var _target;
    var _leaderpos = null;
    var _count = 0;
   
    //Find Leader
    _target = GetPlayerUnit();
    if(_target)
    {
        while(_target.GetNext())
        {
            if(_target.name.toLowerCase() == _leader.toLowerCase())
            {
                _leader = _target;
                break;
            }
        }
    }
   
    while(!NTC_InMyParty(_leader.name))
    {
        Delay(500);
        //Print("Delaying for leader to join party..");
    }
   
    //Ready Check
    function NTH_ReadyCheck()
    {
        NTTM_CheckAct();
           
        if(me.areaid != _leader.areaid)
        {
            NTTM_TownMove("waypoint");
           
            if(_leader.areaid == 1 || _leader.areaid == 40 || _leader.areaid == 75 || _leader.areaid == 103 || _leader.areaid == 109)
            {
                if(!NTM_TakeWaypoint(_leader.areaid))
                {
                    NTM_TakeWaypoint(1);
                }
            }
            else
            {
                if(_leader.areaid < 40 || _leader.areaid == 0)
                    NTM_TakeWaypoint(1);
                else if(_leader.areaid < 75)
                    NTM_TakeWaypoint(40);
                else if(_leader.areaid < 103)
                    NTM_TakeWaypoint(75);
                else if(_leader.areaid < 109)
                    NTM_TakeWaypoint(103);
                else
                    NTM_TakeWaypoint(109);
               
                if(me.areaid != 40)
                    NTTM_TownMove("portalspot");
                else
                    NTTM_TownMove("stash");
            }
        }
    }
   
    //Bot
    while(1)
    {   
        if(NTC_InMyParty(_leader.name) && !_pause)
        {   
            NTSI_PickItems();
           
            if(_leaderpos == null)
                _leaderpos = NTH_GetLeader();
            else
                NTH_Follow();
           
            if(me.areaid != _leader.areaid && NTH_GetLeader() == null)
                NTH_ChangeArea();
        }
        else
           NTA_ClearPosition(15, true); 
           
        if(!NTH_InGame(_leader.name))
        {
            Print("Leader isn't in the game!");
            NTC_SendMsgToScript("NTBotGame.ntj", "SCRIPT_END");
           
            Delay(10000);
        }
       
        Delay(100);
    }

    //Internal Functions
    function NTH_GetLeader()
    {
        _target = NTC_FindUnit(NTC_UNIT_PLAYER);

        if(_target)
        {
            do
            {
                //Print(_target.name);
                if(_target.name == _leader.name)
                    return _target;
                       
            } while(_target.GetNext());
        }
       
        return null;
    }

    function NTH_Follow()
    {
        if(_leaderpos.mode == 3 || _leaderpos.mode == 2)
            _count = 0;
       
        if(_leaderpos.mode == 1 || _leaderpos.mode == 4)
            _count++;

        if(_count >= 10 || _leaderpos.mode == 7 || _leaderpos.mode == 10 || _leaderpos.mode == 8)
           NTA_ClearPosition(15, true); 
           
        if(GetDistance(me.x, me.y, _leaderpos.x, _leaderpos.y) > 7)
            NTM_MoveTo(_leader.areaid, _leaderpos.x, _leaderpos.y);
    }
   
    function NTH_ChangeArea()
    {
        if(NTH_InTown())
        {
            NTTM_TownMove("waypoint");
           
            NTM_TakeWaypoint(_leader.areaid);
           
            if(!NTH_InTown())
                NTP_DoPrecast(true);
        }
        else if(!NTH_InTown(_leader))
        {
            if(!NTM_TakeStair(_leader.areaid))
            {
                ;
            }
        }
        else
        {
            if(!NTM_TakeWaypoint(_leader.areaid))
                NTH_UsePortal(_leader.name);
        }
    }
}

function NTH_InTown(player)
{
    if(arguments.length < 1)
        player = me;
   
    if(player.areaid == 1 || player.areaid == 40 || player.areaid == 75 || player.areaid == 103 || player.areaid == 109)
        return true;
       
    return false;
}

function NTH_UsePortal(leader)
{
    var _portal = NTC_FindUnit(NTC_UNIT_OBJECT, GetLocaleString(3226));
    var _preareaid = me.areaid;

    if(_portal)
    {
        do
        {
            if(_portal.mode == 2 && NTC_CheckOwner(_portal, leader) && GetDistance(me, _portal) <= 30)
            {
                while(me.areaid == _preareaid && _portal)
                {
                    NTM_MoveTo(me.areaid, _portal.x+1, _portal.y);
                       
                    NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _portal);
                       
                    Delay(500);
                   
                    if(me.areaid != _preareaid)
                        return;
                }
            }
        } while(_target.GetNext());
    }
   
    return;
}

function NTH_InGame(playerName)
{
    _target = GetPlayerUnit();

    if(_target)
    {
        do
        {
            if(_target.name == playerName)
                return true;
        } while(_target.GetNext());
    }
    return false;
}

var busy = 0;

function NTH_Talk(msg, type)
{
   if(busy)
   {
      if(msg.indexOf("-tp") != -1 || msg.indexOf("-taketp") != -1 || msg.indexOf("-wait") != -1 || msg.indexOf("-go") != -1 || msg.indexOf("-town") != -1 || msg.indexOf("-mytp") != -1 || msg.indexOf("-res") != -1)
      {
         Delay(200);
            Say("I\'m currently in the middle of something");
         return;
      }
   }
   if(msg.indexOf(_leaderName) != -1 && msg.indexOf("-tp") != -1)
    {
    busy = 1;
      var _portalTarget = msg.split(" ")[msg.split(" ").length-1];

        if(_portalTarget != "-tp")
        {
            if( _portalTarget == me.name)
            {
                Say("TP up for later use");
                NTM_MakeTP();
            }   
        }
      else
        {
            Say("TP up for later use");
            NTM_MakeTP();
        }
   busy = 0;
   }
   if(msg.indexOf(_leaderName) != -1 && msg.indexOf("-taketp") != -1)
    {
    busy = 1;
      var _portalTarget = msg.split(" ")[msg.split(" ").length-1];

        if(NTH_InTown())
        {
            Say("Heading back to the fight through " + _portalTarget + "'s TP");
            NTTM_TownMove("portalspot");
            NTH_UsePortal(_portalTarget);
            Delay(2000);
        }
        else
        {
            Say("Taking " + _portalTarget + "'s TP back to town");
            NTH_UsePortal(_portalTarget);
            Delay(1000);
        }
    busy = 0;
   }
   if( msg.indexOf(_leaderName) != -1 && msg.indexOf("-wait") != -1)
    {
    busy = 1;
      _pause = true;
        Say("I'll just wait here for a few minutes..");
    busy = 0;
   }
    if( msg.indexOf(_leaderName) != -1 && msg.indexOf("-go") != -1)
    {
    busy = 1;
      _pause = false;
        Say("Lets do this!");
    busy = 0;
   }
   if(msg.indexOf(_leaderName) != -1 && msg.indexOf("-town") !=-1)
   {
      
      var _currentArea = GetArea();
      var _prevArea = me.areaid;
         
      Print(_currentArea.name);
      Delay(200);
      busy = 1;
      
      if(me.areaid ==1)
      {
         Say("I\'m already in " + _currentArea.name);
            Delay(200);
               NTTMGR_TownManager();
               Delay(200);
            Say("My duty\'s are done");
         NTTM_TownMove("portalspot");
      }
      else
      {
         Say("Comming from " + _currentArea.name + " Give me 2 seconds.");
         
         Delay(200);
         if(!NTH_InTown())
         {
            NTM_MakeTP();
            NTM_UsePortal("BluePortal");
         }
         else
         {
            if(me.areaid !=1)
            {
               if(me.areaid == 40 || 75 || 103 || 109)
               {
                  NTTM_TownMove("waypoint");
                  NTM_TakeWaypoint(1);
               }
            }
         }
            NTTMGR_TownManager();
            
            NTTM_TownMove("portalspot");
            
            Say("Waiting to come back");
            
            busy = 0;
            
            
            while(NTH_InTown())
            Delay(100);
      }
   busy = 0;
   }
   if(msg.indexOf(_leaderName) != -1 && msg.indexOf("-back") !=-1)
   {
   //---------------------------------------------\\
   //--Can't Get This to Work---------------------\\
   //--Get area name of leader, and say it--------\\
   //   var _leadersID = _leaderName.areaid;      //GetArea(_leaderName);
   //   var _leadersArea = GetArea(_leadersID);
   //   var _leadersPlace = _leadersArea.name;
   //   var ToGo = _leadersPlace;
   //--------------------------------------------\\
   busy = 1;
      if(NTH_InTown())
      {
         Say("Comming back to " + _leaderName); // + ToGo);
            NTTM_TownMove("portalspot");
               Delay(200);
            NTM_UsePortal("BluePortal");
         busy = 0;
         //return;
      }
      else
      {
         if(!NTH_InTown())
         {
            Say("I\'m not in town");
               busy = 0;
            //return;
         }
      }
      busy = 0;
      //return;
   }
   if(msg.indexOf(_leaderName) != -1 && msg.indexOf("-mytp") != -1)
    {
    busy = 1;
      if(NTH_InTown())
        {
            Say("I'm on my way back");
            NTTM_TownMove("portalspot");
            NTH_UsePortal(_leaderName);
            Delay(2000);
        }
        else
        {
            Say("I'm going to town");
            NTH_UsePortal(_leaderName);
            Delay(1000);
        }
    busy = 0;
   }
    if( msg.indexOf(_leaderName) != -1 && msg.indexOf("-res") != -1)
    {
   busy = 1;
        if( me.hp == 0)
        {
            Say("Ressurecting now..");
            me.Cancel(0);
            Delay(100);
            NTTM_TownMove("portalspot");
            Delay(100);
            NTH_UsePortal(_leaderName);
            Delay(200);
            NTT_GetCorpses();
        }
    busy = 0;
    }
    if(msg.indexOf(_leader.name) != -1 && msg.indexOf("-bo") != -1)
      {
         if(!NTP_DoPrecastCTA(true))
         {
            if(!NTC_InTown() && me.classid == NTC_CHAR_CLASS_BARBARIAN)
            {
               NTC_CastSkill(155, NTC_HAND_RIGHT); // Battle Command
               NTC_CastSkill(149, NTC_HAND_RIGHT); // Battle Orders
               NTC_CastSkill(138, NTC_HAND_RIGHT); // Shout
            }
         }
      } 
    if( msg.indexOf(_leaderName) != -1 && msg.indexOf("-grabwp") != -1)
    {
        if(!NTDS_GrabWayPoint())
        {
            Say("stairbuilder must have fucked something up");
            Delay(2000);
        }
        else
        {
            if(NTDS_GrabWayPoint())
                Say("Got WP TYVM");
                Delay(1000);
        }
    } 

    var helper = "helperName"; 
    if( msg.indexOf(_leaderName) != -1 && msg.indexOf("-cmd") != -1 && me.name == helper)
    {
        Say("-wait : Pauses the bots (they still defend themselves but wont follow)");
        Delay(200);
        Say("-go : Resumes following the leader");
        Delay(200);
        Say("-town : Runs the town manager to let your bots heal at NPCs, repair etc when you visit town");
        Delay(200);
        Say("-tp : Causes bots to make a TP");
        Delay(200);
        Say("-mytp:  Orders bots to take your TP");
        Delay(200);
        Say("-bo: Barb will cast Battle Command / Battle Orders / Shout");
        Delay(200);
        Say("-grabwp: Chars will try to grab the WP");
        Delay(200);
        Say("-res: Ressurects the dead Follower");
        Delay(200);
    }
}
büddeschön

2 Dinge müsst ihr editieren:

var _leaderName = "leaderName";
var helper = "helperName";

Habe für alle Commands ausser -res ein script für das numpad

[Only registered and activated users can see links. Click Here To Register...]

das hier runterladen und den einen ordner + die 2 files in den scripts ordner entpacken

jetzt als entry point im d2nt einfach NTResetHelper.ntj wählen

das sollte es gewesen sein :)

Hier nochmal eine Liste was das Numpad script kann:

Quote:
show or hide enemy - keypad '-'
show or hide missile - keypad '+'
auto party on/off - keypad '*'
Say "-wait"- keypad '1'
Say "-go" - keypad '2'
Say"-town" - keypad '3'
Say"-tp" - keypad '4'
Say "-mytp" - keypad '5'
Say "-res" - keypad '6'
make tp - keypad '7'
make tp and take to town - keypad '8'
Say "-bo" - keypad '9'
09/23/2010 19:27 lanara#39
*Dieser Beitrag existiert nicht, bitte gehn sie weiter. Hier gibts nichts zu sehn!*
09/23/2010 19:30 benni-#40
Quote:
Originally Posted by lanara View Post
Doof nur wenn man 7 Sorcs im Stick hat, denn wenn man dann die Commands abruft fängt jede an zu spammen. :P Außer man muted sich für die anderen bzw. schickts nur einem per send.
habe ich in dem post über dir alles editiert :)

ausserdem entlastet das numpad script den spieler sehr :)
09/23/2010 19:39 lanara#41
Immer diese Editierer, nenene. :o
09/23/2010 20:23 benni-#42
Quote:
Originally Posted by lanara View Post
Immer diese Editierer, nenene. :o
hihi ^^
09/23/2010 22:16 ldevil#43
Hm, ok meins ist wohl nicht wirklich anders, abgesehen dass ich finde mein Code ist schöner :P Hab alle commands auf "." geändert, also ".tp" und so, weil man keine Punkte im Namen haben kann, ein - aber schon. Und ich hab das eigentlich immer.

Dazu kommen:
.precast: Verführt alle Bots dazu nen Precast durchzuführen (ersetzt .bo)
.scatter: Der Char beginnt zu stinken und die Bots treten ein Stück zur Seite ;) Denn mit 7 Followern passierts gern wenn man nicht aufpasst, dass die alle rund um einem herum stehen und man sich nicht mehr bewegen kann.
.exit: Macht, dass die Bots das Spiel verlassen.

Man kann auch Befehle "stacken" also ".scatter.precast" oder so.

Und das ".cmd <charname>" funktioniert nur wenn man angibt welcher Bot was sagen soll. Da man das ja wohl eh extrem selten nutzt find ich das schöner als wenn mans "hardcoded".

Code:
/////////////////////////////////////////////////////////////////
//
//     Enter your Leader's name here.
//
    var _leaderName = "MC-Shine";
//
//
//
/////////////////////////////////////////////////////////////////

//Variable Declaration
var _attack = true;
var _party = false;
var _target;
var _leaderpos = null;
var _count = 0;
var _portal;
var _leader = _leaderName;

function NTMain() 
{
    //Initialization
    Include("libs/common/NTCommon.ntl"); 
    NTC_IncludeLibs(); 
    NTC_IncludeConfig("NTBot/char_configs");
    NT_LoadConfig(); 
    NTSI_LoadNIPFiles("NTBot/item_configs"); 
    NTA_Initialize();
    RegisterEvent(EVENT_GAMEMSG, NTH_Talk);

    
    //Find Leader
    _target = GetPlayerUnit();
    if(_target)
    {
        while(_target.GetNext())
        {
            if(_target.name.toLowerCase() == _leader.toLowerCase())
            {
                _leader = _target;
                break;
            }
        }
    }
    
    while(!NTC_InMyParty(_leader.name))
        Delay(500);
    
    //Ready Check
    NTH_ReadyCheck();
    Print("ÿc8Ready!");
    
    //Bot
    while(1)
    {
        if(NTC_InMyParty(_leader.name))
        {
            if(_leaderpos == null)
            {
                _leaderpos = NTH_GetLeader();
            }
            
            if(_leaderpos != null)
            {
                NTH_Follow();
            }
            
            if(me.areaid != _leader.areaid && NTH_GetLeader() == null)
            {
                Print("ÿc8Change Area");
                NTH_ChangeArea();
            }
        }
        else
            NTA_ClearPosition(15, true);
            
        if(!NTH_InGame(_leader.name))
        {
            NTC_SendMsgToScript("FollowGame.ntj", "SCRIPT_END");
            
            Delay(10000);
        }
        
        Delay(100)
    }
}


function NTH_ReadyCheck()
{
    NTTM_CheckAct();
        
    if(me.areaid != _leader.areaid)
    {
        NTTM_TownMove("waypoint");
        
        if(_leader.areaid == 1 || _leader.areaid == 40 || _leader.areaid == 75 || _leader.areaid == 103 || _leader.areaid == 109)
        {
            if(!NTM_TakeWaypoint(_leader.areaid))
            {
                NTM_TakeWaypoint(1);
            }
        }
        else
        {
            if(_leader.areaid < 40 || _leader.areaid == 0)
                NTM_TakeWaypoint(1);
            else if(_leader.areaid < 75)
                NTM_TakeWaypoint(40);
            else if(_leader.areaid < 103)
                NTM_TakeWaypoint(75);
            else if(_leader.areaid < 109)
                NTM_TakeWaypoint(103);
            else
                NTM_TakeWaypoint(109);
            
            if(me.areaid != 40)
                NTTM_TownMove("portalspot");
            else
                NTTM_TownMove("stash");
        }
    }
}

//Internal Functions
function NTH_GetLeader()
{
    _target = NTC_FindUnit(NTC_UNIT_PLAYER);

    if(_target)
    {
        do
        {
            if(_target.name == _leader.name)
                return _target;
                    
        } while(_target.GetNext());
    }
        
    return null;
}

function NTH_Follow()
{
    if(_leaderpos.mode == 3 || _leaderpos.mode == 2)
        _count = 0;
        
    if(_leaderpos.mode == 1 || _leaderpos.mode == 4)
        _count++;

    if(_count >= 10 || _leaderpos.mode == 7 || _leaderpos.mode == 10 || _leaderpos.mode == 8)
        NTA_ClearPosition(15, true);
        
    if(GetDistance(me.x, me.y, _leaderpos.x, _leaderpos.y) > 7 || (_leader.areaid != me.areaid))
        NTM_MoveTo(_leader.areaid, _leaderpos.x, _leaderpos.y);
}
    
function NTH_ChangeArea()
{
    if(NTH_InTown())
    {
        var _portal = NTC_FindUnit(NTC_UNIT_OBJECT, GetLocaleString(3226));
        if(!NTM_UsePortal("Portal", _leader.areaid, null, _portal))
        {
            NTTM_TownMove("waypoint");
            if(!NTM_TakeWaypoint(_leader.areaid))
            {
                NTC_SendMsgToScript("FollowGame.ntj", "NTH_ChangeArea()  _leader.areaid = "+_leader.areaid);
                return;
            }
        }
    
        if(!NTH_InTown())
            NTP_DoPrecast(true);
    }
    else if(!NTH_InTown(_leader))
    {
        if(!NTM_TakeStair(_leader.areaid))
        {        
            var _portal = NTC_FindUnit(NTC_UNIT_OBJECT, GetLocaleString(3226));
            if(!NTM_UsePortal("Portal", _leader.areaid, null, _portal))
            {
                if(!NTM_TakeWaypoint(_leader.areaid))
                {
                    NTC_SendMsgToScript("FollowGame.ntj", "NTH_ChangeArea()  _leader.areaid = "+_leader.areaid);
                    return;
                }
            }
        }
    }
    else
    {
        if(!NTM_TakeWaypoint(_leader.areaid))
            NTH_UsePortal(_leader.name);
    }
}


function NTH_InTown(player)
{
    if(arguments.length < 1)
        player = me;
    
    if(player.areaid == 1 || player.areaid == 40 || player.areaid == 75 || player.areaid == 103 || player.areaid == 109)
        return true;
        
    return false;
}

function NTH_UsePortal(leader)
{
    var _portal = NTC_FindUnit(NTC_UNIT_OBJECT, GetLocaleString(3226));
    var _preareaid = me.areaid;

    if(_portal)
    {
        do
        {
            if(_portal.mode == 2 && NTC_CheckOwner(_portal, leader) && GetDistance(me, _portal) <= 30)
            {
                while(me.areaid == _preareaid && _portal)
                {
                    NTM_MoveTo(me.areaid, _portal.x+1, _portal.y);
                        
                    NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _portal);
                        
                    Delay(500);
                    
                    if(me.areaid != _preareaid)
                        return;
                }
            }
        } while(_target.GetNext());
    }
    
    return;
}

function NTH_InGame(playerName)
{
    _target = GetPlayerUnit();

    if(_target)
    {
        do
        {
            if(_target.name == playerName)
                return true;
        } while(_target.GetNext());
    }
    return false;
}

var busy = 0;

function NTH_Talk(msg, type)
{
    var _msg = msg.split(":");
    var _commands = _msg[1].split(".");
    var _speaker = _msg[0].toLowerCase();
    var _lowleader = _leaderName.toLowerCase();

    if (type != 8)
        Print("ÿc8[DEBUG] Read a message of type " + type + ": " + _speaker.indexOf(_lowleader) + " " + _msg[1]);

    if (_speaker.indexOf(_lowleader) != -1)
    {
        if (busy == 1)
        {
            Delay(200);
            Say("I\'m currently in the middle of something");
            return;    
        } else {
            for (i=1; i < _commands.length; i++)
            {
                DG_Cmd(_commands[i].split(" "));
            }
        }
    }
    return;
}

function DG_Cmd(cmd)
{
    busy = 1;

    Print("ÿc8[DEBUG] Executing Command: " + cmd[0]);

    switch (cmd[0])
    {
    case "tp":
        
        if (cmd.length > 1)
            var _portalTarget = cmd[1];

        if(_portalTarget)
        {
            if( _portalTarget == me.name)
            {
                Say("TP up for later use");
                NTM_MakeTP();
            }   
        }else{
            Say("TP up for later use");
            NTM_MakeTP();
        }
        
        break;
    case "taketp":
        
        if (cmd.length > 1)
            var _portalTarget = cmd[1];
        else
            var _portalTarget = leaderName;

        if(NTH_InTown())
        {
            Say("Heading back to the fight through " + _portalTarget + "'s TP");
            NTTM_TownMove("portalspot");
            NTH_UsePortal(_portalTarget);
            Delay(2000);
            }else{
            Say("Taking " + _portalTarget + "'s TP back to town");
            NTH_UsePortal(_portalTarget);
            Delay(1000);
        }
        
        break;
    case "wait":
    
        _pause = true;
        Say("I'll just wait here for a few minutes..");
        busy = 2;
        
        break;
    case "go":
        _pause = false;
        Say("Lets do this!");

        break;
    case "town":
        var _currentArea = GetArea();
        var _prevArea = me.areaid;
        Print("ÿc8[DEBUG] Area: " + _currentArea.name);
        Delay(200);
      
        if(me.areaid == 1)
        {
            Say("I\'m already in " + _currentArea.name);
            Delay(200);
            NTTMGR_TownManager();
            Delay(200);
            Say("My duty\'s are done");
            NTTM_TownMove("portalspot");
        }else{
            Say("Comming from " + _currentArea.name + ", give me 2 seconds.");         
            Delay(200);
            if(!NTH_InTown())
            {
                NTM_MakeTP();
                NTM_UsePortal("BluePortal");
            }else{
                if(me.areaid !=1)
                {
                    if(me.areaid == 40 || 75 || 103 || 109)
                    {
                        NTTM_TownMove("waypoint");
                        NTM_TakeWaypoint(1);
                    }
                }
            }
            
            NTTMGR_TownManager();
            NTTM_TownMove("portalspot");
            Say("Waiting to come back");            
            
            while(NTH_InTown())
                Delay(100);
        }
        break;
    case "precast":
        
        if(!NTH_InTown())
            NTP_DoPrecast(true);
            
        break;
    case "scatter":
        if(_leader.areaid == me.areaid)
            NTM_MoveTo(_leader.areaid, _leaderpos.x  - 2*(_leaderpos.x - me.x), _leaderpos.y - 2*(_leaderpos.y - me.y));
    
        Delay(2500);
        break;
    case "res":
        if( me.hp == 0)
        {
            Say("Ressurecting now...");
            me.Cancel(0);
            Delay(100);
            NTTM_TownMove("portalspot");
            Delay(100);
            NTH_UsePortal(_leaderName);
            Delay(200);
            NTT_GetCorpses();
        }
        break;
    case "mytp":
        if(NTH_InTown())
        {
            Say("I'm on my way back");
            NTTM_TownMove("portalspot");
            NTH_UsePortal(_leaderName);
            Delay(2000);
        }else{
            Say("I'm going to town");
            NTH_UsePortal(_leaderName);
            Delay(1000);
        }
        break;
    case "takewp":
        if(!NTDS_GrabWayPoint())
        {
            Say("stairbuilder must have fucked something up");
            Delay(2000);
        }else{
            if(NTDS_GrabWayPoint())
                Say("Got WP TYVM");
                
            Delay(1000);
        }
        break;
    case "exit":
        NTC_SendMsgToScript("FollowGame.ntj", "SCRIPT_END");
        break;
    case "cmd":
        if (cmd.length > 1)
            var _name = cmd[1];
        else
        {
            Say("You have to specify a charname to avoid Spamm.");
            break;
        }
        if (_name == me.name)
        {
            Say(".wait : Pauses the bots (they still defend themselves but wont follow)");
            Delay(1000);
            Say(".go : Resumes following the leader");
            Delay(1500);
            Say(".town : Runs the town manager to let your bots heal at NPCs, repair etc when you visit town");
            Delay(1000);
            Say(".tp [charname]: Causes [charname] to make a TP. ");
            Delay(1500);
            Say(".taketp [charname]: Causes the bots to take [charname]'s TP. If no argument is supplied takes your TP.");
            Delay(1000);
            Say(".mytp:  When you and you're bots are done in town you can now send them back through your TP before you take it.");
            Delay(1500);
            Say(".grabwp: Chars will try to grab the WP"); 
            Delay(1000);
            Say(".res: Ressurects the dead Follower");
            Delay(1500);
            Say(".precast: Forces the bots to do precasting");
            Delay(1000);
            Say(".scatter: Bots will move away from you and wait a short time giving you time to move away if locked in.");
            Delay(1000);
            Say(".exit: Bots will leave the game.");
        }
        break;
    default:
        if (cmd[0])
            Say("Type .cmd <Charname> for a list of available commands");
        break;
    }
    
    if (busy != 2)
        busy = 0;

    return;
}
Hab die meisten Befehle von dem Script von rage5 übernommen, aber einige auch editiert. Für die die mein EntryPoint wollen / das VideoTut brauchen, hier die neue Version der Files:
09/23/2010 22:39 benni-#44
Ohne Sprachausgabe:
Code:
//----- SET THIS TO YOUR LEADERS IN-GAME NAME -----//
var _leader = "LeaderName"; // The name of the character you will be legitimately playing
var _helper = "PrimaryHelperName"; // The name of your primary helper  (if running more than 1 barb make this your battle order barb)
var _ping = 500; // Warns you if your followers ping is above this number (0 to disable)

//----- NO EDITS NEEDED BELOW THIS LINE -----//
//Variable Declaration
var _attack = true;
var _party = true;
var _target;
var _leaderpos = null;
var _count = 0;
var _pause = false;

function NTMain() 
{
    //Initialization
    Include("libs/common/NTCommon.ntl"); 
    NTC_IncludeLibs(); 
    NTC_IncludeConfig("NTBot/char_configs");
    NT_LoadConfig(); 
    NTSI_LoadNIPFiles("NTBot/item_configs"); 
    NTA_Initialize();
    RegisterEvent(EVENT_GAMEMSG, NTH_Talk);
        
    //Find Leader
    _target = GetPlayerUnit();
    if(_target)
    {
        while(_target.GetNext())
        {
            if(_target.name == _leader)
            {
                _leader = _target;
                break;
            }
        }
    }
    
    while(!NTC_InMyParty(_leader.name))
    {
        Delay(1000);
        Print("Delaying for leader to join party..");
    }
    
    NTH_ReadyCheck();
        
    //Bot
    var _tickTimer = GetTickCount();
    while(1)
    {    
        if( _ping != 0 && ((GetTickCount()-_tickTimer)/1000) > 10 && me.ping > _ping)
        {
            Say("High Ping Warning: " + me.ping);
            _tickTimer = GetTickCount();    
        }
    
        if(NTC_InMyParty(_leader.name) && !_pause)
        {    
            NTSI_PickItems();
            
            if(_leaderpos == null)
                _leaderpos = NTH_GetLeader();
            else
                NTH_Follow();
            
            if(me.areaid != _leader.areaid && NTH_GetLeader() == null)
                NTH_ChangeArea();
        }
        else
        {
            if(NTConfig_AttackSkill[1] == 0 && NTConfig_AttackSkill[1] == 0)
                NTDS_ClearPosition(15, true);
            else
                NTA_ClearPosition(15, true);
        }
            
        if(!NTH_InGame(_leader.name))
        {
            Print("Leader isn't in the game!");
            NTC_SendMsgToScript("NTBotGame.ntj", "SCRIPT_END");
            Delay(10000);
        }
            
        Delay(100);
    }
}

function NTH_GetLeader()
{
    _target = NTC_FindUnit(NTC_UNIT_PLAYER);

    if(_target)
    {
        do
        {
            //Print(_target.name);
            if(_target.name == _leader.name)
                return _target;
                    
        } while(_target.GetNext());
    }
    
    return null;
}

function NTH_ReadyCheck()
{
    NTTM_CheckAct();
        
    if(me.areaid != _leader.areaid)
    {
        NTTM_TownMove("waypoint");
        
        if(_leader.areaid == 1 || _leader.areaid == 40 || _leader.areaid == 75 || _leader.areaid == 103 || _leader.areaid == 109)
        {
            if(!NTM_TakeWaypoint(_leader.areaid))
            {
                NTM_TakeWaypoint(1);
            }
        }
        else
        {
            if(_leader.areaid < 40 || _leader.areaid == 0)
                NTM_TakeWaypoint(1);
            else if(_leader.areaid < 75)
                NTM_TakeWaypoint(40);
            else if(_leader.areaid < 103)
                NTM_TakeWaypoint(75);
            else if(_leader.areaid < 109)
                NTM_TakeWaypoint(103);
            else
                NTM_TakeWaypoint(109);
            
            if(me.areaid != 40)
                NTTM_TownMove("portalspot");
            else
                NTTM_TownMove("stash");
        }
    }
}

function NTH_Follow()
{
    if(_leaderpos.mode == 3 || _leaderpos.mode == 2)
        _count = 0;
    
    if(_leaderpos.mode == 1 || _leaderpos.mode == 4)
        _count++;

    if(_count >= 10 || _leaderpos.mode == 7 || _leaderpos.mode == 10 || _leaderpos.mode == 8)
    {
        if(NTConfig_AttackSkill[1] == 0 && NTConfig_AttackSkill[1] == 0)
            NTDS_ClearPosition(15, true);
        else
            NTA_ClearPosition(15, true);
    }
        
    if(GetDistance(me.x, me.y, _leaderpos.x, _leaderpos.y) > 7)
        NTM_MoveTo(_leader.areaid, _leaderpos.x, _leaderpos.y);
}

function NTH_ChangeArea()
{
    if(NTH_InTown())
    {
        NTTM_TownMove("waypoint");

        while(!NTM_TakeWaypoint(_leader.areaid))
        {
            me.Cancel(1);
            Delay(5000);
        }
        
        if(!NTH_InTown())
            NTP_DoPrecast(true);
    }
    else if(!NTH_InTown(_leader))
    {
        if(!NTM_TakeStair(_leader.areaid))
        {
            if(!NTM_TakeWaypoint(_leader.areaid))
            {
                me.Cancel(1);
                NTH_UseAnyPortal();
                if(!NTH_InTown())
                {
                    NTM_MakeTP();
                    NTM_UsePortal("BluePortal");
                }
            }
        }
    } else
    {
        if(!NTM_TakeWaypoint(_leader.areaid))
        {
            me.Cancel(1);
            NTH_UseAnyPortal();
            if(!NTH_InTown())
            {
                NTM_MakeTP();
                NTM_UsePortal("BluePortal");
            }
        }
    }
}

function NTH_InTown(player)
{
    if(arguments.length < 1)
        player = me;
    
    if(player.areaid == 1 || player.areaid == 40 || player.areaid == 75 || player.areaid == 103 || player.areaid == 109)
        return true;
        
    return false;
}

function NTH_UsePortal(leader)
{
    var _portal = NTC_FindUnit(NTC_UNIT_OBJECT, GetLocaleString(3226));
    var _preareaid = me.areaid;

    if(_portal)
    {
        do
        {
            if(_portal.mode == 2 && NTC_CheckOwner(_portal, leader) && GetDistance(me, _portal) <= 30)
            {
                while(me.areaid == _preareaid && _portal)
                {
                    NTM_MoveTo(me.areaid, _portal.x+1, _portal.y);
                        
                    NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _portal);
                        
                    Delay(500);
                    
                    if(me.areaid != _preareaid)
                        return;
                }
            }
        } while(_portal.GetNext());
    }
    
    return;
}

function NTH_UseAnyPortal()
{
    var _portal = NTC_FindUnit(NTC_UNIT_OBJECT, GetLocaleString(3226));
    var _preareaid = me.areaid;
    
    do
    {
        if(_portal != null && _portal.mode == 2 && GetDistance(me, _portal) <= 30)
        {                    
            while(me.areaid == _preareaid && _portal)
            {
                NTM_MoveTo(me.areaid, _portal.x+1, _portal.y);
                    
                NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _portal);
                    
                Delay(500);
                
                if(me.areaid != _preareaid)
                    return;
            }
        }
    } while(_portal && _portal.GetNext());
    
    return;
}    

function NTH_InGame(playerName)
{
    _target = GetPlayerUnit();

    if(_target)
    {
        do
        {
            if(_target.name == playerName)
                return true;
        } while(_target.GetNext());
    }
    return false;
}

function NTH_Talk(msg, type)
{
    if( msg.indexOf(_leader.name) != -1 && msg.indexOf("-wait") != -1)
    {
        _pause = true;
        Print("I'll just wait here for a few minutes..");
    }
    if( msg.indexOf(_leader.name) != -1 && msg.indexOf("-go") != -1)
    {
        _pause = false;
        Print("Lets do this!");
    }
    if( msg.indexOf(_leader.name) != -1 && msg.indexOf("-town") != -1)
    {
         if(!NTH_InTown())
         {
            NTH_UseAnyPortal();

            if(!NTH_InTown())
            {
                NTM_MakeTP();
                NTM_UsePortal("BluePortal");
            }
            
            Print("Running some errands in town");
            NTTMGR_TownManager();
            Print("Ok, I'm ready for battle!");
         } else
         {
            Print("Running some errands in town");
            NTTMGR_TownManager();
            Print("Ok, I'm ready for battle!");
         }
    }
    
        if( msg.indexOf(_leader.name) != -1 && msg.indexOf("-res") != -1)
    {
        if( me.hp == 0)
        {
            Print("Ressurecting now..");
            me.Cancel(0);
            Delay(100);
            NTTM_TownMove("portalspot");
            Delay(100);
            NTH_UsePortal(_leader.name);
            Delay(200);
            NTT_GetCorpses();
        }
    }
    
    if( msg.indexOf(_leader.name) != -1 && msg.indexOf("-tp") != -1)
    {
        var _portalTarget = msg.split(" ")[msg.split(" ").length-1];
        
        //Print(_portalTarget.toLowerCase());
        if(_portalTarget != "-tp")
        {
            if( _portalTarget == me.name)
            {
                Print("TP up for later use");
                NTM_MakeTP();
            }    
        } else
        {
            Print("TP up for later use");
            NTM_MakeTP();
        }
    }
    if( msg.indexOf(_leader.name) != -1 && msg.indexOf("-mytp") != -1)
    {
        if(NTH_InTown())
        {
            Print("I'm on my way back " + _leader.name);
            NTTM_TownMove("portalspot");
            NTH_UsePortal(_leader.name);
            Delay(2000);
        }
        else 
        {
            Print("I'm going to town");
            NTH_UsePortal(_leader.name);
            Delay(1000);
        }
    }
    
    if(msg.indexOf(_leader.name) != -1 && msg.indexOf("-taketp") != -1)
    {
        var _portalTarget = msg.split(" ")[msg.split(" ").length-1];

        if(NTH_InTown())
        {
            Print("Heading back to the fight through " + _portalTarget + "'s TP");
            NTTM_TownMove("portalspot");
            NTH_UsePortal(_portalTarget);    
            Delay(2000);
        }
        else 
        {
            Print("Taking TP back to town");
            NTM_UseAnyPortal();
            Delay(1000);
        }
    }
    
    if( msg.indexOf(_leader.name) != -1 && msg.indexOf("-grabwp") != -1)
    {
        if(!NTDS_GrabWayPoint())
        {
            Print("I can't grab this waypoint!");
            Delay(200);
        }
        else
        {
            Print("I got the WP");
            Delay(200);
        }
    }
    
    if(msg.indexOf(_leader.name) != -1 && msg.indexOf("-bo") != -1)
    {
        if(!NTC_InTown() && me.name == _helper && me.classid == NTC_CHAR_CLASS_BARBARIAN)
        {
            Say("Casting Barbarian Buffs!");
            NTC_CastSkill(155, NTC_HAND_RIGHT); // Battle Command
            NTC_CastSkill(149, NTC_HAND_RIGHT); // Battle Orders
            NTC_CastSkill(138, NTC_HAND_RIGHT); // Shout
        }
        else if (!NTC_InTown() && me.classid == NTC_CHAR_CLASS_BARBARIAN)
        {
            var _castBo = true;
            _primaryBarb = GetPlayerUnit();
            do{
                if(_primaryBarb.name == _helper && _primaryBarb.classid == NTC_CHAR_CLASS_BARBARIAN)
                {
                    _castBo == false;
                    break;
                }
            }while(_primaryBarb.GetNext());

            if(_castBo)
            {
                Say("Casting Barbarian Buffs!");
                NTC_CastSkill(155, NTC_HAND_RIGHT); // Battle Command
                NTC_CastSkill(149, NTC_HAND_RIGHT); // Battle Orders
                NTC_CastSkill(138, NTC_HAND_RIGHT); // Shout
            }
        } else if (!NTC_InTown())
            NTP_DoPrecastCTA(true);
    } 
    
    if(msg.indexOf(_leader.name) != -1 && msg.indexOf("-scatter") != -1)
    {
        if(_leader.areaid == me.areaid)
                NTM_MoveTo(_leader.areaid, _leaderpos.x  - 2*(_leaderpos.x - me.x), _leaderpos.y - 2*(_leaderpos.y - me.y));
        Delay(2500);
    }
    
    
    if( msg.indexOf(_leader.name) != -1 && msg.indexOf("-cmd") != -1 && me.name == _helper)
    {
        Say("-wait : Pauses the bots (they still defend themselves but wont follow)");
        Delay(200);
        Say("-go : Resumes following the leader");
        Delay(200);
        Say("-town : Runs the town manager to let your bots heal at NPCs, repair etc when you visit town");
        Delay(200);
        Say("-tp : Causes bots to make a TP");
        Delay(200);
        Say("-tp NAME : Causes a specific bot to make a TP");
        Delay(200);
        Say("-taketp NAME : Causes bots to take a certain TP");
        Delay(200);
        Say("-mytp:  Orders your bots to take your TP");
        Delay(200);
        Say("-bo: Barb will cast Battle Command / Battle Orders / Shout");
        Delay(200);
        Say("-grabwp: Chars will try to grab the WP");
        Delay(200);
        Say("-res: Ressurects the dead Follower");
        Delay(200);
        Say("-scatter: Spreads the bots out incase they get you stuck");
        Delay(200);
    }
}

function NTDS_ClearPosition(range, pickitem, safelevel)
{
    var _orgx, _orgy;
    var _spectype = [0x0A, 0x01, 0x01];
    var _skiplist;
    var _attackcount = 0;
    var _target;
    var _distance, _mingid, _mindistance;
    var _result;

    if(NTConfig_AttackSkill[1] < 0 || NTConfig_AttackSkill[3] < 0)
        return false;

    switch(arguments.length)
    {
    case 0:
        range = 20;
    case 1:
        pickitem = false;
    case 2:
        safelevel = 0;
    default:
        if(NTConfig_CheckSelfSafe < 0x01 && NTConfig_CheckMercSafe < 0x01)
            safelevel = 0;
        break;
    }

    _orgx = me.x;
    _orgy = me.y;

    for(var i = 0 ; i < _spectype.length ; i++)
    {
        _skiplist = new Array();

        while(_attackcount < (i+1)*100)
        {
            _mindistance = 100000;

            _target = NTC_FindUnit(NTC_UNIT_MONSTER);

            if(_target)
            {
                do
                {
                    if(_skiplist.indexOf(_target.gid) < 0)
                    {
                        if(_target.IsAttackable() && (_target.spectype&_spectype[i]))
                        {
                            if(GetDistance(_orgx, _orgy, _target.x, _target.y) <= range && NTA_IsValidMonster(_target))
                            {
                                _distance = GetDistance(me, _target);

                                if(_distance < _mindistance)
                                {
                                    _mingid = _target.gid;
                                    _mindistance = _distance;
                                }
                            }
                        }
                        else
                            _skiplist.push(_target.gid);
                    }
                } while(_target.GetNext());
            }

            if(_mindistance < 100000)
            {
                _target = NTC_FindUnit(NTC_UNIT_MONSTER, _mingid);

                if(_target)
                {
                    _result = NTA_Attack(_target, (_attackcount%30) == 0);

                    switch(_result)
                    {
                    case 1:
                        _skiplist.push(_mingid);
                        break;
                    case 2:
                    case 3:
                        _attackcount++;
                        break;
                    default:
                        return false;
                    }
                }
            }
            else
                break;
        }
    }

    if(me.classid == NTC_CHAR_CLASS_PALADIN)
    {
        if(_attackcount > 2 && (parseInt(me.hp*100/me.hpmax) < NTConfig_UseRedemptionHP || parseInt(me.mp*100/me.mpmax) < NTConfig_UseRedemptionMP))
        {
            if(NTC_PutSkill(124, NTC_HAND_RIGHT))
                NTC_PingDelay(1000);
        }
    }

    if(NTConfig_OpenChest)
    {
        _target = NTC_GetSpecialChest();

        if(_target && GetDistance(_orgx, _orgy, _target.x, _target.y) <= range && NTC_OpenChest(_target))
            _attackcount++;
    }

    if(pickitem && _attackcount > 0)
        NTSI_PickItems();

    switch(safelevel)
    {
    case 1:
        return NTTMGR_CheckSafe(0x00, NTConfig_CheckMercSafe&0x01);
    case 2:
        return NTTMGR_CheckSafe(NTConfig_CheckSelfSafe, NTConfig_CheckMercSafe);
    }

    return true;
}

function NTDS_GrabWayPoint()
{
    var _areaid = me.areaid;
    _open = true;
    var _unit;
    var _wp;//this will be unit object of wp found in the switch below

    switch(_areaid)
    {
        case 3:
            _wp = 119;
                break;
        case 4:
            _wp = 119;
                break;
        case 5:
            _wp = 119;
                break;
        case 6:
            _wp = 119;
                break;
        case 27:
            _wp = 119;
                break;
        case 29:
            _wp = 157;
                break;
        case 32:
            _wp = 119;
                break;
        case 35:
            _wp = 157;
                break;
        case 42:
            _wp = 156;
                break;
        case 43:
            _wp = 156;
                break;
        case 44:
            _wp = 156;
                break;
        case 46:
            _wp = 402;
                break;
        case 48:
            _wp = 323;
                break;
        case 52:
            _wp = 288;
                break;
        case 57:
            _wp = 156;
                break;
        case 74:
            _wp = 402;
                break;
        case 76:
            _wp = 237;
                break;
        case 77:
            _wp = 237;
                break;
        case 78:
            _wp = 237;
                break;
        case 79:
            _wp = 237;
                break;
        case 80:
            _wp = 237;
                break;
        case 81:
            _wp = 237;
                break;
        case 83:
            _wp = 237;
                break;
        case 101:
            _wp = 324;
                break;
        case 106:
            _wp = 238;
                break;
        case 107:
            _wp = 238;
                break;
        case 111:
            _wp = 496;
                break;
        case 112:
            _wp = 496;
                break;
        case 113:
            _wp = 511;
                break;
        case 115:
            _wp = 511;
                break;
        case 117:
            _wp = 496;
                break;
        case 118:
            _wp = 511;
                break;
        case 129:
            _wp = 494;
                break;    
    }
    
    NTM_MoveToPresetUnit(_areaid, NTC_UNIT_OBJECT, _wp, 1, 1);

    if(_open)
    {
        _unit = NTC_FindUnit(NTC_UNIT_OBJECT, _wp);

        if(_unit){
            if(GetDistance(me, _unit) > 2)
                NTM_MoveTo(_unit.areaid, _unit.x+1, _unit.y);

            NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _unit);
            NTC_PingDelay(1000);
            me.Cancel(1);

            return true;
        }
    }

    return false;
}
Mit Sprachausgabe
Code:
//----- SET THIS TO YOUR LEADERS IN-GAME NAME -----//
var _leader = "LeaderName"; // The name of the character you will be legitimately playing
var _helper = "PrimaryHelperName"; // The name of your primary helper  (if running more than 1 barb make this your battle order barb)
var _ping = 500; // Warns you if your followers ping is above this number (0 to disable)

//----- NO EDITS NEEDED BELOW THIS LINE -----//
//Variable Declaration
var _attack = true;
var _party = true;
var _target;
var _leaderpos = null;
var _count = 0;
var _pause = false;

function NTMain() 
{
    //Initialization
    Include("libs/common/NTCommon.ntl"); 
    NTC_IncludeLibs(); 
    NTC_IncludeConfig("NTBot/char_configs");
    NT_LoadConfig(); 
    NTSI_LoadNIPFiles("NTBot/item_configs"); 
    NTA_Initialize();
    RegisterEvent(EVENT_GAMEMSG, NTH_Talk);
        
    //Find Leader
    _target = GetPlayerUnit();
    if(_target)
    {
        while(_target.GetNext())
        {
            if(_target.name == _leader)
            {
                _leader = _target;
                break;
            }
        }
    }
    
    while(!NTC_InMyParty(_leader.name))
    {
        Delay(1000);
        Say("Delaying for leader to join party..");
    }
    
    NTH_ReadyCheck();
        
    //Bot
    var _tickTimer = GetTickCount();
    while(1)
    {    
        if( _ping != 0 && ((GetTickCount()-_tickTimer)/1000) > 10 && me.ping > _ping)
        {
            Say("High Ping Warning: " + me.ping);
            _tickTimer = GetTickCount();    
        }
    
        if(NTC_InMyParty(_leader.name) && !_pause)
        {    
            NTSI_PickItems();
            
            if(_leaderpos == null)
                _leaderpos = NTH_GetLeader();
            else
                NTH_Follow();
            
            if(me.areaid != _leader.areaid && NTH_GetLeader() == null)
                NTH_ChangeArea();
        }
        else
        {
            if(NTConfig_AttackSkill[1] == 0 && NTConfig_AttackSkill[1] == 0)
                NTDS_ClearPosition(15, true);
            else
                NTA_ClearPosition(15, true);
        }
            
        if(!NTH_InGame(_leader.name))
        {
            Say("Leader isn't in the game!");
            NTC_SendMsgToScript("NTBotGame.ntj", "SCRIPT_END");
            Delay(10000);
        }
            
        Delay(100);
    }
}

function NTH_GetLeader()
{
    _target = NTC_FindUnit(NTC_UNIT_PLAYER);

    if(_target)
    {
        do
        {
            //Print(_target.name);
            if(_target.name == _leader.name)
                return _target;
                    
        } while(_target.GetNext());
    }
    
    return null;
}

function NTH_ReadyCheck()
{
    NTTM_CheckAct();
        
    if(me.areaid != _leader.areaid)
    {
        NTTM_TownMove("waypoint");
        
        if(_leader.areaid == 1 || _leader.areaid == 40 || _leader.areaid == 75 || _leader.areaid == 103 || _leader.areaid == 109)
        {
            if(!NTM_TakeWaypoint(_leader.areaid))
            {
                NTM_TakeWaypoint(1);
            }
        }
        else
        {
            if(_leader.areaid < 40 || _leader.areaid == 0)
                NTM_TakeWaypoint(1);
            else if(_leader.areaid < 75)
                NTM_TakeWaypoint(40);
            else if(_leader.areaid < 103)
                NTM_TakeWaypoint(75);
            else if(_leader.areaid < 109)
                NTM_TakeWaypoint(103);
            else
                NTM_TakeWaypoint(109);
            
            if(me.areaid != 40)
                NTTM_TownMove("portalspot");
            else
                NTTM_TownMove("stash");
        }
    }
}

function NTH_Follow()
{
    if(_leaderpos.mode == 3 || _leaderpos.mode == 2)
        _count = 0;
    
    if(_leaderpos.mode == 1 || _leaderpos.mode == 4)
        _count++;

    if(_count >= 10 || _leaderpos.mode == 7 || _leaderpos.mode == 10 || _leaderpos.mode == 8)
    {
        if(NTConfig_AttackSkill[1] == 0 && NTConfig_AttackSkill[1] == 0)
            NTDS_ClearPosition(15, true);
        else
            NTA_ClearPosition(15, true);
    }
        
    if(GetDistance(me.x, me.y, _leaderpos.x, _leaderpos.y) > 7)
        NTM_MoveTo(_leader.areaid, _leaderpos.x, _leaderpos.y);
}

function NTH_ChangeArea()
{
    if(NTH_InTown())
    {
        NTTM_TownMove("waypoint");

        while(!NTM_TakeWaypoint(_leader.areaid))
        {
            me.Cancel(1);
            Delay(5000);
        }
        
        if(!NTH_InTown())
            NTP_DoPrecast(true);
    }
    else if(!NTH_InTown(_leader))
    {
        if(!NTM_TakeStair(_leader.areaid))
        {
            if(!NTM_TakeWaypoint(_leader.areaid))
            {
                me.Cancel(1);
                NTH_UseAnyPortal();
                if(!NTH_InTown())
                {
                    NTM_MakeTP();
                    NTM_UsePortal("BluePortal");
                }
            }
        }
    } else
    {
        if(!NTM_TakeWaypoint(_leader.areaid))
        {
            me.Cancel(1);
            NTH_UseAnyPortal();
            if(!NTH_InTown())
            {
                NTM_MakeTP();
                NTM_UsePortal("BluePortal");
            }
        }
    }
}

function NTH_InTown(player)
{
    if(arguments.length < 1)
        player = me;
    
    if(player.areaid == 1 || player.areaid == 40 || player.areaid == 75 || player.areaid == 103 || player.areaid == 109)
        return true;
        
    return false;
}

function NTH_UsePortal(leader)
{
    var _portal = NTC_FindUnit(NTC_UNIT_OBJECT, GetLocaleString(3226));
    var _preareaid = me.areaid;

    if(_portal)
    {
        do
        {
            if(_portal.mode == 2 && NTC_CheckOwner(_portal, leader) && GetDistance(me, _portal) <= 30)
            {
                while(me.areaid == _preareaid && _portal)
                {
                    NTM_MoveTo(me.areaid, _portal.x+1, _portal.y);
                        
                    NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _portal);
                        
                    Delay(500);
                    
                    if(me.areaid != _preareaid)
                        return;
                }
            }
        } while(_portal.GetNext());
    }
    
    return;
}

function NTH_UseAnyPortal()
{
    var _portal = NTC_FindUnit(NTC_UNIT_OBJECT, GetLocaleString(3226));
    var _preareaid = me.areaid;
    
    do
    {
        if(_portal != null && _portal.mode == 2 && GetDistance(me, _portal) <= 30)
        {                    
            while(me.areaid == _preareaid && _portal)
            {
                NTM_MoveTo(me.areaid, _portal.x+1, _portal.y);
                    
                NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _portal);
                    
                Delay(500);
                
                if(me.areaid != _preareaid)
                    return;
            }
        }
    } while(_portal && _portal.GetNext());
    
    return;
}    

function NTH_InGame(playerName)
{
    _target = GetPlayerUnit();

    if(_target)
    {
        do
        {
            if(_target.name == playerName)
                return true;
        } while(_target.GetNext());
    }
    return false;
}

function NTH_Talk(msg, type)
{
    if( msg.indexOf(_leader.name) != -1 && msg.indexOf("-wait") != -1)
    {
        _pause = true;
        Say("I'll just wait here for a few minutes..");
    }
    if( msg.indexOf(_leader.name) != -1 && msg.indexOf("-go") != -1)
    {
        _pause = false;
        Say("Lets do this!");
    }
    if( msg.indexOf(_leader.name) != -1 && msg.indexOf("-town") != -1)
    {
         if(!NTH_InTown())
         {
            NTH_UseAnyPortal();

            if(!NTH_InTown())
            {
                NTM_MakeTP();
                NTM_UsePortal("BluePortal");
            }
            
            Say("Running some errands in town");
            NTTMGR_TownManager();
            Say("Ok, I'm ready for battle!");
         } else
         {
            Say("Running some errands in town");
            NTTMGR_TownManager();
            Say("Ok, I'm ready for battle!");
         }
    }
    
        if( msg.indexOf(_leader.name) != -1 && msg.indexOf("-res") != -1)
    {
        if( me.hp == 0)
        {
            Say("Ressurecting now..");
            me.Cancel(0);
            Delay(100);
            NTTM_TownMove("portalspot");
            Delay(100);
            NTH_UsePortal(_leader.name);
            Delay(200);
            NTT_GetCorpses();
        }
    }
    
    if( msg.indexOf(_leader.name) != -1 && msg.indexOf("-tp") != -1)
    {
        var _portalTarget = msg.split(" ")[msg.split(" ").length-1];
        
        //Print(_portalTarget.toLowerCase());
        if(_portalTarget != "-tp")
        {
            if( _portalTarget == me.name)
            {
                Say("TP up for later use");
                NTM_MakeTP();
            }    
        } else
        {
            Say("TP up for later use");
            NTM_MakeTP();
        }
    }
    if( msg.indexOf(_leader.name) != -1 && msg.indexOf("-mytp") != -1)
    {
        if(NTH_InTown())
        {
            Say("I'm on my way back " + _leader.name);
            NTTM_TownMove("portalspot");
            NTH_UsePortal(_leader.name);
            Delay(2000);
        }
        else 
        {
            Say("I'm going to town");
            NTH_UsePortal(_leader.name);
            Delay(1000);
        }
    }
    
    if(msg.indexOf(_leader.name) != -1 && msg.indexOf("-taketp") != -1)
    {
        var _portalTarget = msg.split(" ")[msg.split(" ").length-1];

        if(NTH_InTown())
        {
            Say("Heading back to the fight through " + _portalTarget + "'s TP");
            NTTM_TownMove("portalspot");
            NTH_UsePortal(_portalTarget);    
            Delay(2000);
        }
        else 
        {
            Say("Taking TP back to town");
            NTM_UseAnyPortal();
            Delay(1000);
        }
    }
    
    if( msg.indexOf(_leader.name) != -1 && msg.indexOf("-grabwp") != -1)
    {
        if(!NTDS_GrabWayPoint())
        {
            Say("I can't grab this waypoint!");
            Delay(200);
        }
        else
        {
            Say("I got the WP");
            Delay(200);
        }
    }
    
    if(msg.indexOf(_leader.name) != -1 && msg.indexOf("-bo") != -1)
    {
        if(!NTC_InTown() && me.name == _helper && me.classid == NTC_CHAR_CLASS_BARBARIAN)
        {
            Say("Casting Barbarian Buffs!");
            NTC_CastSkill(155, NTC_HAND_RIGHT); // Battle Command
            NTC_CastSkill(149, NTC_HAND_RIGHT); // Battle Orders
            NTC_CastSkill(138, NTC_HAND_RIGHT); // Shout
        }
        else if (!NTC_InTown() && me.classid == NTC_CHAR_CLASS_BARBARIAN)
        {
            var _castBo = true;
            _primaryBarb = GetPlayerUnit();
            do{
                if(_primaryBarb.name == _helper && _primaryBarb.classid == NTC_CHAR_CLASS_BARBARIAN)
                {
                    _castBo == false;
                    break;
                }
            }while(_primaryBarb.GetNext());

            if(_castBo)
            {
                Say("Casting Barbarian Buffs!");
                NTC_CastSkill(155, NTC_HAND_RIGHT); // Battle Command
                NTC_CastSkill(149, NTC_HAND_RIGHT); // Battle Orders
                NTC_CastSkill(138, NTC_HAND_RIGHT); // Shout
            }
        } else if (!NTC_InTown())
            NTP_DoPrecastCTA(true);
    } 
    
    if(msg.indexOf(_leader.name) != -1 && msg.indexOf("-scatter") != -1)
    {
        if(_leader.areaid == me.areaid)
                NTM_MoveTo(_leader.areaid, _leaderpos.x  - 2*(_leaderpos.x - me.x), _leaderpos.y - 2*(_leaderpos.y - me.y));
        Delay(2500);
    }
    
    
    if( msg.indexOf(_leader.name) != -1 && msg.indexOf("-cmd") != -1 && me.name == _helper)
    {
        Say("-wait : Pauses the bots (they still defend themselves but wont follow)");
        Delay(200);
        Say("-go : Resumes following the leader");
        Delay(200);
        Say("-town : Runs the town manager to let your bots heal at NPCs, repair etc when you visit town");
        Delay(200);
        Say("-tp : Causes bots to make a TP");
        Delay(200);
        Say("-tp NAME : Causes a specific bot to make a TP");
        Delay(200);
        Say("-taketp NAME : Causes bots to take a certain TP");
        Delay(200);
        Say("-mytp:  Orders your bots to take your TP");
        Delay(200);
        Say("-bo: Barb will cast Battle Command / Battle Orders / Shout");
        Delay(200);
        Say("-grabwp: Chars will try to grab the WP");
        Delay(200);
        Say("-res: Ressurects the dead Follower");
        Delay(200);
        Say("-scatter: Spreads the bots out incase they get you stuck");
        Delay(200);
    }
}

function NTDS_ClearPosition(range, pickitem, safelevel)
{
    var _orgx, _orgy;
    var _spectype = [0x0A, 0x01, 0x01];
    var _skiplist;
    var _attackcount = 0;
    var _target;
    var _distance, _mingid, _mindistance;
    var _result;

    if(NTConfig_AttackSkill[1] < 0 || NTConfig_AttackSkill[3] < 0)
        return false;

    switch(arguments.length)
    {
    case 0:
        range = 20;
    case 1:
        pickitem = false;
    case 2:
        safelevel = 0;
    default:
        if(NTConfig_CheckSelfSafe < 0x01 && NTConfig_CheckMercSafe < 0x01)
            safelevel = 0;
        break;
    }

    _orgx = me.x;
    _orgy = me.y;

    for(var i = 0 ; i < _spectype.length ; i++)
    {
        _skiplist = new Array();

        while(_attackcount < (i+1)*100)
        {
            _mindistance = 100000;

            _target = NTC_FindUnit(NTC_UNIT_MONSTER);

            if(_target)
            {
                do
                {
                    if(_skiplist.indexOf(_target.gid) < 0)
                    {
                        if(_target.IsAttackable() && (_target.spectype&_spectype[i]))
                        {
                            if(GetDistance(_orgx, _orgy, _target.x, _target.y) <= range && NTA_IsValidMonster(_target))
                            {
                                _distance = GetDistance(me, _target);

                                if(_distance < _mindistance)
                                {
                                    _mingid = _target.gid;
                                    _mindistance = _distance;
                                }
                            }
                        }
                        else
                            _skiplist.push(_target.gid);
                    }
                } while(_target.GetNext());
            }

            if(_mindistance < 100000)
            {
                _target = NTC_FindUnit(NTC_UNIT_MONSTER, _mingid);

                if(_target)
                {
                    _result = NTA_Attack(_target, (_attackcount%30) == 0);

                    switch(_result)
                    {
                    case 1:
                        _skiplist.push(_mingid);
                        break;
                    case 2:
                    case 3:
                        _attackcount++;
                        break;
                    default:
                        return false;
                    }
                }
            }
            else
                break;
        }
    }

    if(me.classid == NTC_CHAR_CLASS_PALADIN)
    {
        if(_attackcount > 2 && (parseInt(me.hp*100/me.hpmax) < NTConfig_UseRedemptionHP || parseInt(me.mp*100/me.mpmax) < NTConfig_UseRedemptionMP))
        {
            if(NTC_PutSkill(124, NTC_HAND_RIGHT))
                NTC_PingDelay(1000);
        }
    }

    if(NTConfig_OpenChest)
    {
        _target = NTC_GetSpecialChest();

        if(_target && GetDistance(_orgx, _orgy, _target.x, _target.y) <= range && NTC_OpenChest(_target))
            _attackcount++;
    }

    if(pickitem && _attackcount > 0)
        NTSI_PickItems();

    switch(safelevel)
    {
    case 1:
        return NTTMGR_CheckSafe(0x00, NTConfig_CheckMercSafe&0x01);
    case 2:
        return NTTMGR_CheckSafe(NTConfig_CheckSelfSafe, NTConfig_CheckMercSafe);
    }

    return true;
}

function NTDS_GrabWayPoint()
{
    var _areaid = me.areaid;
    _open = true;
    var _unit;
    var _wp;//this will be unit object of wp found in the switch below

    switch(_areaid)
    {
        case 3:
            _wp = 119;
                break;
        case 4:
            _wp = 119;
                break;
        case 5:
            _wp = 119;
                break;
        case 6:
            _wp = 119;
                break;
        case 27:
            _wp = 119;
                break;
        case 29:
            _wp = 157;
                break;
        case 32:
            _wp = 119;
                break;
        case 35:
            _wp = 157;
                break;
        case 42:
            _wp = 156;
                break;
        case 43:
            _wp = 156;
                break;
        case 44:
            _wp = 156;
                break;
        case 46:
            _wp = 402;
                break;
        case 48:
            _wp = 323;
                break;
        case 52:
            _wp = 288;
                break;
        case 57:
            _wp = 156;
                break;
        case 74:
            _wp = 402;
                break;
        case 76:
            _wp = 237;
                break;
        case 77:
            _wp = 237;
                break;
        case 78:
            _wp = 237;
                break;
        case 79:
            _wp = 237;
                break;
        case 80:
            _wp = 237;
                break;
        case 81:
            _wp = 237;
                break;
        case 83:
            _wp = 237;
                break;
        case 101:
            _wp = 324;
                break;
        case 106:
            _wp = 238;
                break;
        case 107:
            _wp = 238;
                break;
        case 111:
            _wp = 496;
                break;
        case 112:
            _wp = 496;
                break;
        case 113:
            _wp = 511;
                break;
        case 115:
            _wp = 511;
                break;
        case 117:
            _wp = 496;
                break;
        case 118:
            _wp = 511;
                break;
        case 129:
            _wp = 494;
                break;    
    }
    
    NTM_MoveToPresetUnit(_areaid, NTC_UNIT_OBJECT, _wp, 1, 1);

    if(_open)
    {
        _unit = NTC_FindUnit(NTC_UNIT_OBJECT, _wp);

        if(_unit){
            if(GetDistance(me, _unit) > 2)
                NTM_MoveTo(_unit.areaid, _unit.x+1, _unit.y);

            NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _unit);
            NTC_PingDelay(1000);
            me.Cancel(1);

            return true;
        }
    }

    return false;
}
UPDATED JETZT AUCH MIT SCATTER VON ldevil

Das ist mein jetziges Script!

Dazu nutze ich noch wie oben geposted

[Only registered and activated users can see links. Click Here To Register...]

das hier runterladen und den einen ordner + die 2 files in den scripts ordner entpacken

jetzt als entry point im d2nt einfach NTResetHelper.ntj wählen

das sollte es gewesen sein :)

Hier nochmal eine Liste was das Numpad script kann:

Quote:
show or hide enemy - keypad '-'
show or hide missile - keypad '+'
auto party on/off - keypad '*'
Say "-wait"- keypad '1'
Say "-go" - keypad '2'
Say"-town" - keypad '3'
Say"-tp" - keypad '4'
Say "-mytp" - keypad '5'
Say "-res" - keypad '6'
make tp - keypad '7'
make tp and take to town - keypad '8'
Say "-bo" - keypad '9'
Läuft super zusammen! Der Reset kann kommen!
09/23/2010 23:25 ldevil#45
Läuft dein Script wirklich gut mit 7 followern? Weil meine bleiben immer mal wieder wo hängen -.-