suche followbot

10/15/2010 23:57 jockel#106
hab die charconfig, die rage5 gepostet hat 1:1 übernommen.
10/16/2010 00:06 lanara#107
Haste sie auch richtig umbenannt?
10/16/2010 00:10 jockel#108
NTConfig_Sorceress_charname.ntl heißt sie, wobei charname natürlich der charaktername ist. Ich habe auch auf Groß- und Kleinschreibung geachtet beim Benennen ....
10/17/2010 12:08 jockel#109
Hab ihn nach einigem Testen dann doch soweit, dass er funktioniert. Allerdings geht er jetzt durch keine tps, die ich gemacht habe. Er nimmt die Party an und wartet... und wartet... und geht nicht durch das tp, welches ich gemacht habe.... Jemand 'ne idee?
10/17/2010 15:43 ldevil#110
Gibt doch nen Befehl dafür? Zumindest ich hatte einen .mytp oder .taketp oder sowas
10/17/2010 17:20 jockel#111
Quote:
Originally Posted by ldevil View Post
Gibt doch nen Befehl dafür? Zumindest ich hatte einen .mytp oder .taketp oder sowas
wo finde ich den exakten wortlaut? ^^ steht das irgendwo?
10/18/2010 11:43 benni-#112
Quote:
Originally Posted by jockel View Post
wo finde ich den exakten wortlaut? ^^ steht das irgendwo?
Die stehen alle im thread hier.

Code:
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);
10/21/2010 09:47 jockel#113
Nur um die Sache zu vereinfachen, habe ich die zwei Posts, die bei mir des Problems Lösung waren zusammen geschoben; Ich hoffe der Ersteller hat nichts dagegen :)

Quote:
Originally Posted by ldevil View Post
Ich schick dir einfach rasch die "Anleitung" wie ich's gemacht hab:

1. Muddies Version saugen: [Only registered and activated users can see links. Click Here To Register...]
2. Das hier downloaden: [Only registered and activated users can see links. Click Here To Register...]
3. Die Files aus dem RAR in die jeweiligen Ordner kopieren
4. Neues Config für jeden "Follow"-Char (Das heisst auch einstellen mit welchen Spells man angreift!)
5. Neues Profil erstellen mit Follow.ntj als Entrypoint.

Ich übernehm keine Garantie für das von mir veränderte Script, oder die von mir erstellten Teile. Jegliche Haftung wird ausgeschlossen, Benützung auf eigene Gefahr.

Btw. den Leader musst du im scripts/follow/follow.ntj eintragen


greetz
Ldevil
Quote:
Originally Posted by ldevil View Post
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;
}
EDIT: Ich habe noch den Teleport ausgestellt, dazu poste ich wenn ich zuhause bin nochmal kurz hier rein :)
10/21/2010 17:42 jockel#114
So, dann kommt hier mein Part. So stellt ihr den Port bei den Sorcs aus, damit sie nicht immer hinterher porten sondern laufen.

1) Navigieren zu \scripts\libs\common\

2) Die Datei NTMove.ntl öffnen

3) Den Inhalt mit folgendem Inhalt ersetzen:
4) Speichern und schließen

5) nach \scripts\follow\ navigieren

6) irgendwo hin in der Datei NTConfig.ntl folgendes einfügen
Code:
var NTConfig_Leech;
7) Nach \scripts\NTBot\char_configs\ navigieren

8) Die Charconfig der Sorc öffnen

9) Dort das eintragen:
Code:
	NTConfig_Leech = true; 				// Teleport für Leecher deaktivieren

Dann den Bot starten und alles läuft wie gewollt ^^

Greetz :)
10/24/2010 11:45 lanatir#115
Moin zusammen,

ich hab versucht den Leader sowie den Leecher ohne Teleport für Trist Runs zum laufen zu bekommen. Da die Sorce erst ab lvl 18 Teleport hat.
Leider ohne Erfolg,
Hat jemand ein Script für eine Leader Sorce ohne Teleport ?
oder kann mir sagen was ich ändern muß die NTMove z.b. ?

Danke schonmal
10/25/2010 11:52 jockel#116
Quote:
Originally Posted by lanatir View Post
Moin zusammen,

ich hab versucht den Leader sowie den Leecher ohne Teleport für Trist Runs zum laufen zu bekommen. Da die Sorce erst ab lvl 18 Teleport hat.
Leider ohne Erfolg,
Hat jemand ein Script für eine Leader Sorce ohne Teleport ?
oder kann mir sagen was ich ändern muß die NTMove z.b. ?

Danke schonmal
Wird schwer, weil der Leader ja vorlaufen muss, also den Hindernissen, Wänden usw. ausweichen. Deshalb sollte der Leader auf jeden Fall teleport haben, alles andere ist nicht effektiv, da er sich andauernd irgendwo verkeilt. Andernfalls mache das, was ich einen Post über dir geschrieben habe mit dem Leaderchar.
12/28/2010 19:26 fred9x9#117
So, Idevils rare datei von P 5 mal ausgepackt, entsprechend geändert und in Muddys 1.13reinkopiert.
Aber fehlt da nicht eine Datei ? Mir wenigstens.
Die Include("MWTools/FollowConfig.ntl"); wird vom Script FollowGame.ntj verlangt.
Starte ich den Follower im Manager über Follow.ntj
loggt er sich ein, findet Leader und Game, loggt sich dort ein und rennt dann zur Gräfin.
Ich schwöre, alle Scripts sind remarked //
Starte ich über NTBotLeech.ntj, geht er nicht mal ins Battlenet.

Danke für Hilfe
fred
09/20/2011 17:55 tschalky#118
Hallo!

Erstmal ein Danke für eure Anleitungen!

Leider bin ich gerade am verzweifeln, weil ich schon seit stunden versuche den FollowBot zum laufen zu bekommen.
Ich verwende Sternenloopers 3.8b und möchte meine kleine soso lvl5 an meine große anhängen.

Mein Problem :-/
Also die soso folgt mir durchs TP, WP bzw. vor die Stadt , aber dann kommt immer zu einem "quit game" wegen "enigmabug".

Das Thema ist zwar nicht mehr so aktuell, vielleicht kann mir aber jemand trotzdem einen tipp geben :) !ich stehe total an! - und ladderreset kommt ja angeblich auch spätestens Oktober!

bereits hinzugefügt;
-NTConfig_Script.push("NTFollow.ntj"); <- char_configs, eh klar
-LadderFollowFight = true; <- char_configs,
-NTConfig_Leech = true; <- char_configs
-var NTConfig_Leech; <- NTConfig.ntl
-NTMove.ntl, habe ich ersetzt, jedoch brleib der bot nur mehr stehen und folgt mir nichtmeehr

Ein THxxXx schon mal im vorhinein!
tom
09/20/2011 22:21 mirkoregge#119
Unglaublich so ein Topic zu bumpen anstatt im richtigen Topic zu posten.
Husch ins Sternloppers Topic -> [Only registered and activated users can see links. Click Here To Register...]