Register for your free account! | Forgot your password?

Go Back   elitepvpers > Blogs > lanara's Blog
You last visited: Today at 09:48

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



..::lanara's Blog::..
Rating: 7 votes, 5.00 average.

Diablo 2 - Followbot

Posted 03/23/2011 at 12:35 by lanara
Updated 04/29/2011 at 23:30 by lanara

..::lanara's Blog::..






Der Ladder Reset steht kurz vor der Tür und viele sind wieder auf der Suche nach einem Followbot, damit man sich gleich mehrere Chars auf einmal leveln kann. Daher gibt es heute einen Blogeintrag zu diesem Thema von mir, in dem ich erklären werde, wie ihr den Followbot zum laufen bekommt und ingame kontrolliert.

Die Frage die sich natürlich als erstes stellt ist, welchen Followbot man denn nimmt. Es gibt zwar einige Followbots für den , allerdings sind diese nicht wirklich ausgereift deshalb rate ich eher davon ab diese zu nutzen. Ich selbst nutze den RedVex Followbot Automaton, da er sehr gut mitkämpft und nur sehr selten mal irgendwo hängen bleibt.







Wie man bzw. installiert habe ich bereits in anderen Blogeinträgen erklärt, daher schaut einfach dort nach, falls ihr es noch nicht installiert habt. Automaton könnt ihr euch hier herunterladen:

[Link]
[Thread]

Nachdem ihr es entpack habt, müsst ihr die Automaton.dll in den Plugins-Ordner verschieben. Den automatons-Ordner aus dem Archiv müsst ihr in den RedVex Ordner kopieren. Darin werden die Einstellungen für eure Followchars gemacht. In diesem Ordner findet ihr eine Attacks.txt in der ihr die SkillIDs der Angriffe nachschaun könnt, sowie eine Default.ini.

Die Default.ini kopiert ihr jetzt und nennt sie in den Name des Followers um, z.B. in FollowBotOne.ini, wenn euer Char FollowBotOne heißen sollte. Für jeden Follower erstellt ihr eine eigene Datei. Was die einzelnen Einstellungen bedeuten könnt ihr entweder in der ReadMe nachschaun, oder wenn ihr kein Englisch sprecht in von Daarmy. Hier ein Beispiel wie es für eine FO/FB Sorc aussehen könnte:


Jetzt habt ihr schonmal einen Bot, der euch immer hinterherläuft und mit angreift, das Spiel müsst ihr jedoch noch selbst joinen. Da aber sowieso jeder einen D2NT Bot installiert haben sollte, können wir den auch dafür nutzen, den Teil bis zum Gamelogin zu übernehmen. Dafür habe ich eine Leicht modifizierte NTBotLeech.ntj, die statt den BotScripts einfach die NTMap Funktion beim einloggen ins Spiel lädt, daher müssen wir nicht extra nochmal D2NT Configs für die Chars erstellen, da der Teil im Spiel ja sowieso von Automaton übernommen wird. Ihr müsst lediglich den oberen Teil ausfüllen, also Leader Name und Game PW.

Code:
//###################################################################
//###########################Einstellungen###########################
//###################################################################
	
var leaderAccountName          = "Leader Account Name";
var leaderName                 = "Leader Char Name";
var gamepassword               = "Game Password";
var JoinGameAgain              = false; // wenn der Bot nach chicken oder disconnect ins selbe Spiel nochmal gehen soll, auf true stellen

var UseCDKeyChangeTrick        = false; // Wenn der LeechBot mehrere CD Keys nutzen soll, dann auf true stellen.

var joinRandomChannel          = false;
var joinChannelInChat          = "OP MyBaal";
var firstJoinMessage           = ""; // Soll der leechbot etwas sagen, wenn er in den Chat kommt, dann hier eintragen
var chatMessageAfterGame       = ""; // Soll der leechbot etwas sagen, wenn er aus dem Spiel kommt, dann hier eintragen

//###################################################################
//##############################Delays###############################
//###################################################################

var gameMinLength              = 180000;

// realm delays (minutes)
var unableToConnectRetry       = 2;
var realmDownRetry             = 60;
var disconnectedRetry          = 2;
var cdkeyInUseRetry            = 2;

// interface delays (milliseconds)
var connectingToBnetTimeout    = 20000;
var characterScreenTimeout     = 10000;
var pleaseWaitTimeout          = 10000;
var createGameThreshold        = 10000;
var createGameThresholdRandom  = 1000;
var createGameTimeout          = 15000;
var waitInLineTimeout          = 15000;
var characterSelectDelay       = 1000;
var loginDelay                 = 1000;
var clickDelay                 = 500;
var textDelay                  = 500;
var clickDelayRandom           = 500;
var textDelayRandom            = 500;
var gameDoesNotExistDelayMin   = 600000;
var gameDoesNotExistDelayMax   = 900000;
var gameDoesNotExistTimeout    = 30000;
var waitBeforeEnterChatMin     = 1000;
var waitBeforeEnterChatMax     = 2000;
var waitInChatBeforeActionsMin = 2000;
var waitInChatBeforeActionsMax = 3000;

// Only for JoinBot (friend list delay, milliseconds)
var LeaderOfflineDelay         = 30000;
var LeaderInChatDelay          = 10000;
var GameIsFullDelay            = 30000;

//###################################################################
//###################################################################
//###############DO NOT CHANGE ANYTHING BELOW THIS###################
//###################################################################
//###################################################################

//D2NT Manager Command

const D2NT_MGR_LOADING = 1;
const D2NT_MGR_READY = 2;
const D2NT_MGR_LOGIN = 3;
const D2NT_MGR_CREATE_GAME = 4;
const D2NT_MGR_INGAME = 5;
const D2NT_MGR_RESTART = 6;
const D2NT_MGR_CHICKEN = 7;
const D2NT_MGR_PRINT_STATUS = 8;
const D2NT_MGR_PRINT_LOG = 9;

var lastGameMade     = GetTickCount();
var lastGameStatus     = 0;
var nextGameMake     = 0;
var inGameAt       = 0;
var chatActionsDone   = false;
var lastGameFailed     = false;
var sayChatMsgAfterGame = false;

Include("libs/controlInfo.ntl");

var controlData = new controlInfo();

var samegame = '';
var oldgame = '';
var game = '';
var _gamename = "";
var _gamepassword = "";
var _leaderOfflineTick = -LeaderOfflineDelay;
var _leaderInChatTick = -LeaderInChatDelay;
var _GameIsFullTick = -GameIsFullDelay;
var Debug = false;
var joinChatAfterGame    = true;


function NTMain()
{
    Delay(1000);

    var _ingame = false;

    controlData.clickDelay = clickDelay;
    controlData.textDelay = textDelay;
    controlData.clickDelayRandom = clickDelayRandom;
    controlData.textDelayRandom = textDelayRandom;

    while(1)
    {
        if(me.ingame)
        {
            _gamename = me.gamename;
            _gamepassword = me.gamepassword;

            if(!inGameAt)
                inGameAt = GetTickCount();

            if(!_ingame)
            {
                RunGC(); // run garbage collector between each game

                if(Load("NTMap/NTMapGame.ntj"))
                {
                    _ingame = true;

                    if(me.playtype > 0)
                        sendEventToOOG(D2NT_MGR_INGAME, "In Game[IP:" + me.gameserverip.split(".")[3] + "]", 0);
                    else
                        sendEventToOOG(D2NT_MGR_INGAME, "In Game", 0);

                    lastGameStatus = 2; // in game successful

                    // To exit game as soon as the leader quits
                    //Load("NTBot/NTCheckLeader.ntj");
                    // to party only the leader
                    //Load("NTBot/tools/NTTools_AutoPartyJoinFriendGames.ntj");
                }
            }

            Delay(1000);
        }
        else
        {
            if(_ingame)
            {
                _ingame = false;
                sayChatMsgAfterGame = true;

                sendEventToOOG(D2NT_MGR_READY, "", 0);
            }

            locationAction(controlData.getLocation());

            Delay(500);
        }
    }
}

function locationAction(location)
{
    switch(location.id)
    {
    case 3: // Lobby Chat
        sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name, 0);

        if(!chatActionsDone)
        {  
            Delay(Random(waitInChatBeforeActionsMin, waitInChatBeforeActionsMax));

            if(joinRandomChannel || joinChannelInChat != "")
            {
                Say("/join " + (joinRandomChannel ? getRandomString(Random(3,10)) : joinChannelInChat));
                Delay(1000);
            }

            if(firstJoinMessage)
            {
                Say(firstJoinMessage);
                Delay(200);
            }

            chatActionsDone = true;
        }

        if (chatMessageAfterGame && _gamename != "" && sayChatMsgAfterGame == true)
        {
            Say(chatMessageAfterGame);
            sayChatMsgAfterGame = false;
            Delay(200);
        }

        game = '';

        var _tick = GetTickCount();
        if ((_leaderOfflineTick < 0 || (_leaderOfflineTick + LeaderOfflineDelay) < _tick)
         && (_leaderInChatTick < 0 || (_leaderInChatTick + LeaderInChatDelay) < _tick)
         && (_GameIsFullTick < 0 || (_GameIsFullTick + GameIsFullDelay) < _tick))
        {
            DebugInOOG('Locating the leader : '+leaderAccountName);
            Delay(6000);
            Say('/f l');
            Delay(1500);
        }

        if(chat = controlData.get(controlData.controls.lobby.chat.textBox.channelText))
        {
            var found_leader = false;
            lines = chat.GetText();
            for (var line_id = lines.length - 1; line_id > -1; line_id--)
            {
                if (found_leader) // useless... :/
                    break;

                if (lines[line_id].substring(0,1) == " ")
                    continue;

                // retrieving the whole message
                var msg = lines[line_id].replace(/^\s+|\s+$/, "");
                var msglines = 1;
                while (lines[line_id+msglines] != undefined && lines[line_id+msglines].substring(0,2) == "  ")
                {
                    msg += " " + lines[line_id+msglines].replace(/^\s+|\s+$/, "");
                    msglines++;
                }
                if (msg.lastIndexOf(leaderName) >= 0)
                    DebugInOOG("yc8found him :;"+msg);

                // checking if the msg is a friendly whisper
                if (msg.lastIndexOf(leaderName + ' (*' +leaderAccountName+')') > -1)
                {
                    var regGameNameWhispered=/^.*(game|partie|spiel|partita|partida).*(nomm[^\s]*|called|chiamata)\s*([\w\s-]*\w)\s*\.\s*$/gi;
                    if (msg.match(regGameNameWhispered))
                        game = msg.replace(regGameNameWhispered, "$3");

                    if (game != '')
                    {
                        found_leader = true;
                        break;
                    }
                }

                // checking if the msg is from the friend list
                if (msg.lastIndexOf(': '+leaderAccountName+',') > -1)
                {
                    found_leader = true;
                    var regOffline=/^.*(offline|desconectado).*$/gi;
                    var regInChat=/^.*(channel|canale?)\s*([\w\s-]*\w)\.?\s*$/gi;
                    var regGameName=/^.*(game|partie|spiel|partita|partida)\s*([\w\s-]*\w)\s*\(priv[^\)]*\)\.\s*$/gi;

                    if (msg.match(regOffline)
                        && (_leaderOfflineTick < 0 || (_leaderOfflineTick + LeaderOfflineDelay) < _tick))
                    {
                        DebugInOOG('Leader is offline, delay '+Math.round(LeaderOfflineDelay/1000)+' sec for next /f l.');
                        _leaderOfflineTick = GetTickCount();
                    }
                    else if (msg.match(regInChat)
                            && (_leaderInChatTick < 0 || (_leaderInChatTick + LeaderInChatDelay) < _tick))
                    {
                        DebugInOOG('Leader is in the chat "'+msg.replace(regInChat, "$2")+'", delay '+Math.round(LeaderInChatDelay/1000)+' sec for next /f l.');
                        _leaderInChatTick = GetTickCount();
                    }
                    else if (msg.match(regGameName)
                            && ((_leaderOfflineTick < 0 || (_leaderOfflineTick + LeaderOfflineDelay) < _tick)
                                && (_leaderInChatTick < 0 || (_leaderInChatTick + LeaderInChatDelay) < _tick)))
                    {
                        game = msg.replace(regGameName, "$2");
                    }
                    else if ((_leaderInChatTick < 0 || (_leaderInChatTick + LeaderInChatDelay) < _tick)
                            && (_leaderOfflineTick < 0 || (_leaderOfflineTick + LeaderOfflineDelay) < _tick))
                    {
                        // unhandled line, supposelly "In Realm"
                        DebugInOOG('The leader was in the the lobby but not in chat, delay '+Math.round(LeaderInChatDelay/1000)+' sec for next /f l.');
                        _leaderInChatTick = GetTickCount();
                    }

                    break;
                }
            }

            if (found_leader == false)
                DebugInOOG('I couldn\'t find the leader in my friend list!');

            if (game!="")
            {
                DebugInOOG('Leader is in the game "' + game + '"');
                //controlData.click(controlData.controls.lobby.button.join);
                //Delay(100);
								if(!JoinGameAgain)
								{
									if (game != samegame)
									{
									  if (UseCDKeyChangeTrick)
										{
											// increasing the number of runs in the OOG (for CDKey switch)
											// Problem : the gamename/gamepassword set in your OOG will be typed in the lobbyChat
											// this may output a red message in the lobby chat if you have a password set (not a real problem)
											// I recommend to set a gamename like "Run" and no gamepassword in your OOG. -> this will output "Run-01", "Run-02", etc in lobby chat before joining games
											sendEventToOOG(D2NT_MGR_CREATE_GAME, location.name, 0);
											Delay(1000);
										}

										controlData.click(controlData.controls.lobby.button.join);
										Delay (200);
										
									}
									else
										Delay(30000);
								}
								else
								{
								  if (UseCDKeyChangeTrick)
									{
										// increasing the number of runs in the OOG (for CDKey switch)
										// Problem : the gamename/gamepassword set in your OOG will be typed in the lobbyChat
										// this may output a red message in the lobby chat if you have a password set (not a real problem)
										// I recommend to set a gamename like "Run" and no gamepassword in your OOG. -> this will output "Run-01", "Run-02", etc in lobby chat before joining games
										sendEventToOOG(D2NT_MGR_CREATE_GAME, location.name, 0);
										Delay(1000);
									}

									controlData.click(controlData.controls.lobby.button.join);
									Delay (200);
								}
        
							}

        }
        else
        {
            DebugInOOG('I can\'t read the chat!');
            //DebugInOOG('You probably haven\'t added the lobby chat controlinfo coordinates!');
            Delay(30000);
        }
        
        if(game != '')
					samegame = game;

        break;

    case 1:    // Lobby
        if(location.id == 1 && joinChatAfterGame)
        {
            Delay(Random(waitBeforeEnterChatMin, waitBeforeEnterChatMax));
            controlData.click(controlData.controls.lobby.button.enterChat);
            break;
        }
        break;

    case 2: // Waiting In Line
        if(GetTickCount()-lastGameMade > waitInLineTimeout)
            controlData.click(controlData.controls.lobby.inLine.button.cancel);
        break;

    case 4: // Create Game
        if(!controlData.get(controlData.controls.lobby.create.editBox.gameName))
        {
            controlData.click(controlData.controls.lobby.button.join);
            Delay (500);
            controlData.click(controlData.controls.lobby.button.create);
            Delay (500);
            break;
        }

        sendEventToOOG(D2NT_MGR_CREATE_GAME, location.name, 0);

        locationTimeout(5000, location);

        lastGameMade = GetTickCount();
        lastGameStatus = 1; // pending creation
        break;

  case 5: // Join Game
    if (game)
    {
        controlData.setText( controlData.controls.lobby.join.editBox.gameName, game);
        Delay (100);
        controlData.setText( controlData.controls.lobby.join.editBox.password, gamepassword);
        Delay (100);
        controlData.click(controlData.controls.lobby.join.button.joinGame);
        RunGC(); // run garbage collector between each game
        locationTimeout(5000, location);
        lastGameStatus = 1; // pending join
    }
    else
    {
        DebugInOOG('No game to join : cancelling');
        me.Cancel(1);
        Delay(1000);
    }
    break;

    case 6: // Ladder
        break;

    case 7: // Channel List
        break;

    case 8: // Main Menu
        if(controlData.getCurrentRealmIndex() == me.gatewayid)
        {
            outputGameLength();
            controlData.click(controlData.gameTypes[me.playtype]);
        }
        else
            controlData.click(controlData.controls.mainMenu.button.gateway);
        break;

    case 9: // Login
        sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name, 0);
        Delay(loginDelay);

        controlData.setText(controlData.controls.login.editBox.accountName, me.account);

        sendEventToOOG(D2NT_MGR_LOGIN, location.name, 0);

        locationTimeout(5000, location);
        break;

    case 10: // Login Error (this is a fatal error, so stop)
        sendEventToOOG(D2NT_MGR_RESTART, location.name, 10);
        Delay(3500);
        break;

    case 11: // Unable To Connect
        timeoutDelay(unableToConnectRetry*60*1000, location)
        controlData.click(controlData.controls.login.unableToConnect.button.ok);
        break;

    case 12: // Character Select
        var _time, _control;

        sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name, 0);

        for(_time = 0 ; _time < characterScreenTimeout ; _time += 500)
        {
            _control = controlData.get(controlData.controls.characterSelect.textBox.characterInfo[me.charloc]);
            if(_control && _control.GetText() != undefined)
                break;

            Delay(500);
        }

        if(_time < characterScreenTimeout)
        {
            Delay(characterSelectDelay);

            controlData.click(controlData.controls.characterSelect.textBox.characters[me.charloc], 0, 0, 1);
            controlData.click(controlData.controls.characterSelect.textBox.characterInfo[me.charloc], 0, 0, 1);

            // reset last game made, so it doesnt make a game immediately
            inGameAt = 0;
            setNextGameMake();
        }
        else
        {
            controlData.click(controlData.controls.characterSelect.button.exit);
            timeoutDelay(realmDownRetry*60*1000, location);
        }
        break;

    case 13: // Realm Down - Character Select screen
        controlData.click(controlData.controls.characterSelect.button.exit);
        timeoutDelay(realmDownRetry*60*1000, location);
        break;

    case 14: // Character Select - Disconnected
        timeoutDelay(disconnectedRetry*60*1000, location);
        controlData.click(controlData.controls.characterSelect.disconnected.button.ok);
        break;

    case 15: // New Character
        break;    

    case 16: // Character Select - Please Wait popup
        if(!locationTimeout(pleaseWaitTimeout, location))
            controlData.click(controlData.controls.characterSelect.pleaseWait.button.cancel);
        break;

    case 17: // Lobby - Lost Connection - just click okay, since we're toast anyway
        controlData.click(controlData.controls.lobby.lostConnection.button.ok);
        break;

    case 18: // D2 Splash
        controlData.click(controlData.controls.d2Splash.textBox.copyright);
        break;

    case 19: // Login - Cdkey In Use
        timeoutDelay(cdkeyInUseRetry*60*1000, location);
        controlData.click(controlData.controls.login.cdkeyInUse.button.ok);
        break;

    case 20: // Single Player - Select Difficulty
        controlData.click(controlData.singlePlayerDifficulties[me.diff]);
        break;

    case 21: // Main Menu - Connecting
        if(!locationTimeout(connectingToBnetTimeout, location))
            controlData.click(controlData.controls.mainMenu.connecting.button.cancel);
        break;

    case 22: // Login - Invalid Cdkey (classic or xpac)
        sendEventToOOG(D2NT_MGR_RESTART, location.name, 3600);
        Delay(3500);
        break;    

    case 23: // Character Select - Connecting
        if(!locationTimeout(characterScreenTimeout, location))
            controlData.click(controlData.controls.characterSelect.button.exit);
        break;

    case 24: // Server Down - not much to do but wait..
        break;

    case 25: // Lobby - Please Wait
        if(!locationTimeout(pleaseWaitTimeout, location))
            controlData.click(controlData.controls.lobby.pleaseWait.button.cancel);
        break;

    case 26: // Lobby - Game Name Exists
        sendEventToOOG(D2NT_MGR_PRINT_LOG, "yE00000Game already exists", 0);

        inGameAt = 0;
        lastGameStatus = 0;
        setNextGameMake();

        locationTimeout(15000, location);
        break;

    case 27: // Gateway Select
        controlData.clickRealmEntry(me.gatewayid);
        controlData.click(controlData.controls.gateway.button.ok);
        break;

    case 28: // Lobby - Game Does Not Exist
        inGameAt = Random(gameDoesNotExistDelayMin, gameDoesNotExistDelayMax);
        lastGameStatus = 0;
        setNextGameMake();

        locationTimeout(gameDoesNotExistTimeout, location);
        break;
    default:
        DebugInOOG("Unhandled location : "+location.id);
        break;
    }
    DebugInOOG("Location : "+location.id);
}

function sendEventToOOG(locationId, statusString, pendingTime)
{
    return SendCopyData("D2NT Manager", null, (locationId<<16)|pendingTime, statusString);
}

function setNextGameMake()
{
    lastGameMade = GetTickCount();
    nextGameMake = lastGameMade + createGameThreshold + Random(0-createGameThresholdRandom, createGameThresholdRandom) + inGameAt;
    inGameAt = 0;
    chatActionsDone = false;
}

function outputGameLength()
{
    if(inGameAt)
    {
        duration = GetTickCount() - inGameAt;

        inGameAt = (duration < gameMinLength ? gameMinLength - duration : 0);
    }
}

function locationTimeout(time, location)
{
    endtime = GetTickCount() + time;

    while(controlData.getLocation().id == location.id && endtime > GetTickCount())
    {
        sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name + " (" + parseInt((endtime-GetTickCount())/1000) + "s)", 0);
        Delay(500);
    }

    return (controlData.getLocation().id != location.id);
}

function timeoutDelay(time, location)
{
    endtime = GetTickCount() + time;

    while(endtime > GetTickCount())
    {
        sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name + " (" + parseInt((endtime-GetTickCount())/1000) + "s)", 0);
        Delay(1000);
    }
}

function getRandomString(_length)
{
    _retString = "";
    _charSet = "0123456789abcdefghijklmnopqrstuvwxyz";

    while(_length--)
    {
        _retString += _charSet.charAt(Random(0, _charSet.length-1));
        Delay(1);
    }

    return _retString;
}
function DebugInOOG(logString)
{
    if (Debug)
        return SendCopyData("D2NT Manager", null, 9<<16, "-- Debug : " + logString);
    else
        return false;
}
Außerdem empfehle ich euch das RedVex Plug-in Condom, damit die Follower auch Tränke trinken und man das Flashen des Screens das Automaton verursacht ausschalten kann.

[Link]
[Thread]

Die Einstellungen sollten sich eigentlich von selbst erklären, zur Not sind sie aber auch nochmal in der beiliegenden ReadMe erklärt.





Ihr könnt den Followbot ingame mit einigen Commands steuern, die wichtigsten erkläre ich euch jetzt. Grundsätzlich läuft der Followbot von ganz alleine, folgt euch in alle Areas, nimmt eure TP's, aktiviert selbstständig Wegpunkte und redet auch mit NPC's um Quests abzuschließen. Aber manchmal wird man auch selbst auf den Char zugreifen wollen, um z.B. Equipment zu kaufen, oder sie einfach irgendwo abzustellen, weil man z.B. irgendwo hinporten will. Dann muss man den Followern das durch einen kurzen Command sagen, damit sie wissen was zu tun ist.




Mit follow bringt ihr eure Follower dazu euch zu folgen und sofern ihr Angriffe in der Config eingestellt habt, diese zu nutzen. Die Chars folgen euch überall hin und nutzen auch Wegpunkte, sofern sie diese haben. Wenn sie irgendwo hängenbleiben oder nicht hinterherkommen weil ein Wegpunkt fehlt, gehen sie in die Stadt und bitten im Chat um ein TP.





Mit chill könnt ihr eure Follower pausieren, sie hören dann sofort auf zu kämpfen und bleiben auf der Stelle stehen. Das könnt ihr zum Beispiel nutzen, wenn ihr irgendwo hinlaufen wollt, um sie später per TP nachzuholen, oder wenn ihr mit ihnen einkaufen gehen wollt.





guard lässt die Follower auf ihrer aktuellen Position bleiben, um alles anzugreifen was in ihre Range kommt. Das kann man zum Beispiel nutzen, um einzelne Monster zu ihnen zu ziehen und sie so in eine Falle zu locken.





Mit town kommandiert ihr eure Follower dazu ein TP zu casten und in der Stadt auf weitere Befehle zu warten.









Über Verbesserungsvorschläge, Kritik oder Kommentare würde ich mich wie immer freuen.
Posted in Diablo 2
Views 5256 Comments 39 Email Blog Entry
« Prev     Main     Next »
Total Comments 39

Comments

  1. Old Comment
    Du solltest eventuell noch dazu schreiben, dass D2 auf Englisch laufen muss damit das mit dem ins Game einloggen funktioniert. Ansonsten super Anleitung
    permalink
    Posted 05/02/2011 at 21:08 by KingHigh KingHigh is offline
    Updated 05/03/2011 at 00:00 by KingHigh
  2. Old Comment
    könnte ich mit diesem bot also meine sorc mit einem pala bot mitlaufen lassen?
    bzw würde die sorc dann im baalrun mit ihrem blizzard die 2.wave killen?
    und was müsste ich dafür einstellen?

    ich weiß, viele fragen auf einmal

    Grüße
    permalink
    Posted 05/04/2011 at 18:57 by wosi90 wosi90 is offline
  3. Old Comment
    In dem Fall würde ich dir eher einen D2NT Leechbot empfehlen. Machbar wäre es sicher auch, aber nicht wirklich optimal.
    permalink
    Posted 05/05/2011 at 01:17 by lanara lanara is offline
  4. Old Comment
    hatte grade die gleiche idee wie wosi90

    ich will das die non eni leecher mit fighten und hab bis jetzt noch kein baal script gesehen ohne eni (ausser die only leech)

    wenn du ne bessere idee hast meld dich

    also mein dudu und barb beide ohne eni casten immerhin schon mal oak und boo das fighten buged noch bissel

    wenn ich mit dem fine-tunig fertig bin poste ich das mal


    ....
    was auch interssant wäre is den followbot mit dem rush script zu verknüpfen
    permalink
    Posted 06/14/2011 at 02:28 by hansihase hansihase is offline
    Updated 06/14/2011 at 02:33 by hansihase
  5. Old Comment
    ist das normal das die nur 1exp pro monster in normal bekommen? ( lvl 1)
    permalink
    Posted 09/11/2011 at 11:21 by using11 using11 is offline
  6. Old Comment
    Quote:
    Originally Posted by using11 View Comment
    ist das normal das die nur 1exp pro monster in normal bekommen? ( lvl 1)
    Je nachdem wo und mit was du levelst, ist das normal, ja.
    permalink
    Posted 09/11/2011 at 23:43 by lanara lanara is offline
  7. Old Comment
    leider virus beim download
    hat jemand nen komplett eingestellten Redvex bot + automaton ? wenn ja kann den wer hochladen und wenn dann immer noch eine virus meldung kommt muss ich iwas am antivir einstellen
    permalink
    Posted 09/17/2011 at 13:28 by psyduke psyduke is offline
  8. Old Comment
    RedVex wird von manchen Programmen als schädlich eingestuft, weil es Packets manipuliert.
    permalink
    Posted 09/18/2011 at 14:07 by lanara lanara is offline
  9. Old Comment
    Hi lanara,

    habe mir das condom-Plugin mit heruntergeladen und installiert. Allerdings sagt mir Redvex beim Starten "Condom.dll has invalid SDK version!". Weißt Du woran das liegt?

    fastmod, automation laufen einwandfrei

    Danke vorab
    Traycas
    permalink
    Posted 09/23/2011 at 09:56 by Traycas Traycas is offline
    Updated 09/23/2011 at 23:31 by Traycas
  10. Old Comment
    Ich hatte das glaub auch schonmal, allerdings weiß ich nicht mehr genau woran es lag. Vielleicht mal eine andere Version probieren.
    permalink
    Posted 09/26/2011 at 21:32 by lanara lanara is offline
  11. Old Comment
    bei mir kommt immer der error: failed to load setting from/automatons/dc_rush**.ini

    auch bei meinen anderen chars.. vor ca 1 monat ging es ohne probleme. heute geht es nciht, bei freunden ist es auch so..
    permalink
    Posted 10/23/2011 at 16:19 by using11 using11 is offline
  12. Old Comment
    Schau mal nach, ob du irgendwo noch eine falsche Skill ID eingetragen hast. Wenn du z.B. mit einer Sorc einen Attackskill vom Barbar drin hast bringt er dir diesen Fehler.
    permalink
    Posted 10/23/2011 at 21:52 by lanara lanara is offline
  13. Old Comment
    Du hast die Funktion "trade" ausgelassen
    permalink
    Posted 10/24/2011 at 12:05 by RezChams RezChams is offline
  14. Old Comment
    ist es möglich dass der followbot firebolt von der sorc benutzt?
    permalink
    Posted 10/24/2011 at 19:55 by SexyBoi16 SexyBoi16 is offline
  15. Old Comment
    Wenn du es so einstellst ist es natürlich möglich.

    @Daarmy: Nicht vergessen, nur nicht mit aufgeschrieben, da ich wie gesagt nur die wichtigsten kurz erklärt habe.
    permalink
    Posted 10/24/2011 at 22:38 by lanara lanara is offline
  16. Old Comment
    ja hat jetzt auch geklappt nur das automatische joinen klappt noch nicht. hab beide in der friendslist, auf großschreibung geachtet aber er macht keine anstalten nach dem check der friendslist ein game zu joinen. kann es sein dass ich bei den friends commands im bnet was falsch gemacht habe?
    permalink
    Posted 10/25/2011 at 12:38 by SexyBoi16 SexyBoi16 is offline
  17. Old Comment
    Du solltest nur darauf achten, wie du sie in die Friendlist geadded hast. Wenn du z.B. "/f a sexyboi16" gemacht hast, den Account aber mit SexyBoi16 einträgst erkennt er es nicht, weil in der "/f l" Abfrage der Name klein drin steht.

    Und genau so wie er bei "/f l" steht muss er auch in der NTBotLeech stehen.
    permalink
    Posted 10/25/2011 at 19:25 by lanara lanara is offline
  18. Old Comment
    meine followers sagen i can´t do that.
    permalink
    Posted 02/08/2012 at 18:33 by itstrue itstrue is offline
  19. Old Comment
    Hi , ich hab das was in der leecher.ntj war durch das was bei dir im Spoiler steht ersetz .

    Er kommt bis zu fl abfrage aber joint keinem game .

    Die namen in der datei sind 100% richtig geschrieben.
    Ich wollte einfach mal testen ob es an der schreibweise liegt und habe die namen mal im Alten leecher entry eingetragen.

    Dort fragt er die Fl ab und joint dann auch dem game .


    hab ogar extra nochmal nen neuen acc erstellt : muster1
    damit ich eine falsche schreibweise auschliesen kann

    vllt eine idee woran es liegen könnte ?
    permalink
    Posted 04/29/2012 at 13:54 by Swissfight Swissfight is offline
 

All times are GMT +2. The time now is 09:48.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.