[D2NT] Public Botten for Dummies

10/14/2011 16:02 Traycas#2356
Quote:
Originally Posted by badman View Post
Moin!
Mein Fighter bot stürzt des öfteren ab.
Mal läuft er 24h ohne Probleme, mal macht er keine 7runs am Stück.

Das Problem dabei ist, dass er nicht neustartet, sondern der Bot bei "Please Wait" stehen bleibt und das D2 Fenster abschmiert und der bot erst wieder läuft, wenn man ihn manuell neustartet.

Ideen?:/
Ja: [Only registered and activated users can see links. Click Here To Register...] ;)

VG, Traycas
10/15/2011 10:01 badman#2357
Quote:
Originally Posted by Traycas View Post
Ja: [Only registered and activated users can see links. Click Here To Register...] ;)

VG, Traycas
hat leider nicht geholfen, es ist außerdem immer der gleiche Bot der abkackt. :/
10/15/2011 11:34 lanara#2358
Versuch es mal mit dieser NTBot.ntj:
Code:
var channelUsers               = new Array();

//###################################################################
//###########################Einstellungen###########################
//###################################################################

// Wenn ihr nur einen Key benutzt, dann diesen Wert mindestens auf 180000 setzen, damit ihr keine realmdowns bekommt
var gameMinLength              = 190000;

var joinChatAfterLogin         = false; // true = Bot geht in den Chat, um .login/Announces zu machen
var joinChannelInChat          = "OP MyBaal"; // Wenn der Bot in keinen bestimmten Channel soll, dann nichts eintragen
var channelLogin               = true; // true = Bot schreibt .login nachdem er eingeloggt ist
channelUsers.push("Account Name"); // Hier deinen Account Name eintragen
channelUsers.push("Char Name"); // Hier deinen Char Name eintragen

// %game --> "gamename-"
// %counter --> number of the next game
// %time --> time in seconds till game creation
// %password --> game password
var gameAnnouncement           = "Next Game: %game%counter in %time seconds."; // Wenn keine NG message im Chat geposted werden soll, dann nichts eintragen

//----------------------------------------------------------------------------------------------------------------------------------------------------------


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

// 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        = 15000;
var createGameThresholdRandom  = 1000;
var createGameTimeout          = 15000;
var waitInLineTimeout          = 60000;
var characterSelectDelay       = 1000;
var loginDelay                 = 1000;
var clickDelay                 = 1000;
var textDelay                  = 1000;
var clickDelayRandom           = 500;
var textDelayRandom            = 500;
var gameDoesNotExistDelayMin   = 600000;
var gameDoesNotExistDelayMax   = 900000;
var gameDoesNotExistTimeout    = 30000;
var gameAnnouncementDelay      = 5000;
var gameAnnouncementDelayRandom = 500;
var waitBeforeEnterChatMin     = 1000;
var waitBeforeEnterChatMax     = 2000;
var waitInChatBeforeActionsMin = 2000;
var waitInChatBeforeActionsMax = 3000;


//###################################################################
//###################################################################
//###############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 joinedChannel = false;
var justJoined = true;
var joinRandomChannel = false;

Include("libs/controlInfo.ntl");

var controlData = new controlInfo();

function NTMain()
{
    Delay(1000);

    var _ingame = false;

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

    while(1)
    {
        if(me.ingame)
        {
            if(!inGameAt)
                inGameAt = GetTickCount();

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

                if(Load("NTBot/NTBotGame.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
                }
            }

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

                sendEventToOOG(D2NT_MGR_READY, "", 0);
            }

            locationAction(controlData.getLocation());

            Delay(500);
        }
    }
}

function locationAction(location)
{
    switch(location.id)
    {
    case 3: // Lobby Chat
        if(justJoined)
        {
            justJoined = false;
            if(isChannelUser(me.account, me.charname))
            {
                for(var i = 0; i < 3; i++)
                {
                    SetStatusText("ÿc2Chat actions enabled!");    
                    Delay(150);
                    SetStatusText("");    
                    Delay(150);
                }
            }
            else
            {
                for(var i = 0; i < 3; i++)
                {
                    SetStatusText("ÿc1Chat actions disabled!");    
                    Delay(150);
                    SetStatusText("");    
                    Delay(150);
                }
            }
        }
        if(!chatActionsDone && isChannelUser(me.account, me.charname))
        {
            chatActionsDone = true;
            Delay(Random(waitInChatBeforeActionsMin, waitInChatBeforeActionsMax));
            if(!joinedChannel && (joinRandomChannel || joinChannelInChat != ""))
            {
                var rndChannel = getRandomString(Random(3,10));
                SetStatusText("ÿc8Joining Channel " + (joinRandomChannel ? rndChannel : joinChannelInChat) );
                Delay(1000);
                Say("/join " + (joinRandomChannel ? rndChannel : joinChannelInChat));
                joinedChannel = true;
                Delay(1000);
                if(channelLogin)
                {
                    SetStatusText("ÿc8Channel Login...");
                    Say(".login");
                    Delay(1000);
                }
            }
        }
    case 1:    // Lobby
        if(location.id == 1 && joinChatAfterLogin)
        {
            Delay(Random(waitBeforeEnterChatMin, waitBeforeEnterChatMax));
            controlData.click(controlData.controls.lobby.button.enterChat);
            break;
        }
        if(GetTickCount() > nextGameMake)
        {
            var _control;

            lastGameFailed = false;

            switch(lastGameStatus)
            {
            case 0:
                _control = controlData.get(controlData.controls.lobby.button.create);
                if(_control && _control.pressed)
                {
                    controlData.click(controlData.controls.lobby.button.join);
                    Delay(500);
                }

                controlData.click(controlData.controls.lobby.button.create);
                nextGameMake = GetTickCount() + createGameTimeout; // set our timeout
                sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name, 0);
                break;
            case 1: // game failed, rollover to reset timer
                inGameAt = GetTickCount();
                lastGameFailed = true;
                Delay(5000);
                
            case 2:
                outputGameLength();
                lastGameStatus = 0;
                setNextGameMake();
                if(lastGameFailed)
                {
                    SetStatusText("ÿc1Failed to join!");
                    sendEventToOOG(D2NT_MGR_PRINT_LOG, "ÿE00000Game " + ((getGameCounter(me.gamename, true)) ? ("(" + getGameCounter(me.gamename, true) + ")") : "") + " creation failed!", 0)
                    Delay(2500);
                }
                sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name, 0);
                break;
            }
        }
        else
        {
            if(joinChannelInChat && gameAnnouncement && me.gamename && isChannelUser(me.account, me.charname))
            {
                var tempDelay = (gameAnnouncementDelay > 5000) ? gameAnnouncementDelay : 5000 + 
                            (gameAnnouncementDelayRandom > 500) ? Random(0, gameAnnouncementDelayRandom) : 500;
                var gameText = gameAnnouncement;
                gameText = gameText.replace("%password", me.gamepassword);
                gameText = gameText.replace("%game", getGameName(me.gamename));
                gameText = gameText.replace("%counter", getGameCounter(me.gamename, false));
                gameText = gameText.replace("%time", parseInt((nextGameMake - GetTickCount() - tempDelay)/1000+3.0));
                if(parseInt((nextGameMake - GetTickCount() - tempDelay)/1000+3.0) > 5)
                {    
                    Delay(tempDelay);
                    Say(gameText);
                }
            }
            timeoutDelay(nextGameMake-GetTickCount(), location, true);
        }
        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);
        }
        sendEventToOOG(D2NT_MGR_CREATE_GAME, location.name, 0);

        locationTimeout(5000, location);

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

    case 5: // Join Game
        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);
		if(!locationTimeout(pleaseWaitTimeout, location))
			sendEventToOOG(D2NT_MGR_RESTART, location.name, 60);
		break;

    case 26: // Lobby - Game Name Exists
        sendEventToOOG(D2NT_MGR_PRINT_LOG, "ÿE00000Game already exists", 0);
        SetStatusText("ÿc1Game akready exists!");
        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;
    }
}

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, showNextGameStatus)
{
    if(arguments.length < 3)
        showNextGameStatus = false;
    
    endtime = GetTickCount() + time;

    while(endtime > GetTickCount())
    {
        sendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name + " (" + parseInt((endtime-GetTickCount())/1000) + "s)", 0);
        if(showNextGameStatus)
        {
            if(lastGameFailed && parseInt((endtime-GetTickCount())/1000) > 30)
            {
                if(parseInt((endtime-GetTickCount())/1000) % 30 == 0)
                {
                    SetStatusText("ÿc1Last game failed!");
                    Delay(5000);
                }
                if(me.gamename && getGameCounter(me.gamename, false))
                    SetStatusText("ÿc8Next game: " + getGameName(me.gamename) + getGameCounter(me.gamename, false) + " (" + parseInt((endtime-GetTickCount())/1000) + "s)");
                else
                    SetStatusText("ÿc8Game creation pending... (" + parseInt((endtime-GetTickCount())/1000) + "s)");
            }
            else if(parseInt((endtime-GetTickCount())/1000) >= 0)
            {
                if(me.gamename && getGameCounter(me.gamename, false))
                    SetStatusText("ÿc8Next game: " + getGameName(me.gamename) + getGameCounter(me.gamename, false) + " (" + parseInt((endtime-GetTickCount())/1000) + "s)");
                else
                    SetStatusText("ÿc8Game creation pending... (" + parseInt((endtime-GetTickCount())/1000) + "s)");
            }
            if(me.ingame)
                endtime = GetTickCount();
        }
        Delay(1000);
    }
    if(showNextGameStatus)
        SetStatusText("ÿc8Creating game...");
}

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

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

    return _retString;
}

function getGameName(lastGameString)
{
    if(!lastGameString)
        return "";
    else
        return (lastGameString.substr(0, lastGameString.lastIndexOf('-')+1));
}

function getGameCounter(lastGameString, simple)
{
    var myCount, countString;
    if(!lastGameString)
        return "-1";
    else
    {
        countString = lastGameString.slice(lastGameString.lastIndexOf('-')+1);
            
        switch(countString)
        {
            case "08":
                myCount = 9;
                break;
            case "09":
                myCount = 10;
                break;
            default:
                myCount = parseInt(countString) + 1;
                break;
        }
        if(!simple)
        {
            if(myCount <= 9)
                return ('0' + myCount);
        }
        return myCount;
    }
}

function isChannelUser(accountname, charname)
{
    for(var i = 0; i < channelUsers.length; i++)
    {
        if(accountname.toLowerCase() == channelUsers[i].toLowerCase() || charname.toLowerCase() == channelUsers[i].toLowerCase())
            return true;
    }
    return false;
}
10/15/2011 14:17 badman#2359
danke, aber ich hab eher das Gefühl, es liegt an meinem Diablo Ordner.
Hab jetzt einen anderen genommen, damit geht es (bisher).

kannst ja mal [Only registered and activated users can see links. Click Here To Register...] hier vorbei schauen, vielleicht hilft mir das ;-)
10/30/2011 14:38 vava-TheJPeter#2360
Also:
Ich hab ein Problem mit dem Bot/Maphack^^ :D
Jedes Mal wenn ich die MH starte, startet das Programm D2,jedoch erscheint dann diese Message:
UNHANDELED EXCEPTION
ACCESS VIOLATION(c0000005)
und macht dann einen restart.
Aber das ist erst, seit der neue Patch 1.13d raus ist.
Wenn ich D2 ganz normal starte(ohne MH oder Loader only) kann ich mich ganz normal einloggen und spielen...
Habe die Errormeldung schon gegoogelt und rausgefunden, dass das mit dem Patch zusammenhängt.
Aber dann müsste die Meldung doch auch kommen, wenn ich D2 normal starte...
Kann mir dabei einer helfen? o.O
10/30/2011 14:55 darkspinne#2361
Also der D2nT ist Fixed falls du es noch nicht mitbekommen hast. Du müsstest den D2BS benutzen ;) +


Grüße
10/30/2011 14:57 Evil Knievel#2362
Quote:
Originally Posted by vava-TheJPeter View Post
Also:
Ich hab ein Problem mit dem Bot/Maphack^^ :D
Jedes Mal wenn ich die MH starte, startet das Programm D2,jedoch erscheint dann diese Message:
UNHANDELED EXCEPTION
ACCESS VIOLATION(c0000005)
und macht dann einen restart.
Aber das ist erst, seit der neue Patch 1.13d raus ist.
Wenn ich D2 ganz normal starte(ohne MH oder Loader only) kann ich mich ganz normal einloggen und spielen...
Habe die Errormeldung schon gegoogelt und rausgefunden, dass das mit dem Patch zusammenhängt.
Aber dann müsste die Meldung doch auch kommen, wenn ich D2 normal starte...
Kann mir dabei einer helfen? o.O
Du schreibst die Antwort zu deiner Frage quasi schon selber hin.
Quote:
Aber das ist erst, seit der neue Patch 1.13d raus ist.
Der D2NT-Bot funktioniert nur für 1.13c.

€: mhh darkspinne war schneller
10/30/2011 17:30 vava-TheJPeter#2363
Habt ihr ne Ahnung wo ich den herbekomme, ohne mich irgendwo anzumelden?^^
Edit: Habs gefunden, hoffe es ist das richtige ;)
Falls es klappt: großes THX voraus!
Falls nicht... meld ich mich eben wieder;)

Nochmal ne andere Frage...
Der Bot ist ja schön und gut, hat aber kein maphack oder loader...
Kann also nicht mulen.. :/
Gibts da noch nen anderen?
11/02/2011 21:21 Jawul#2364
Kann man diesen Bot jetzt auch wieder benutzen mit der neuen dll ?
11/08/2011 00:07 Abfahrt#2365
Quote:
Originally Posted by Jawul View Post
Kann man diesen Bot jetzt auch wieder benutzen mit der neuen dll ?
Ich möchte die Frage erweitern: Welche dll ist denn zu empfehlen? Derzeit habe mich mir die dll aus dem D2NT Etal ([Only registered and activated users can see links. Click Here To Register...]) in meinen D2NT PBFD kopiert.

Es läuft soweit alles prima, dennoch lagt/hängt das spiel seitdem fortlaufend.

Jemand ne Idee / das gleiche Problem?

Edit:

Quote:
Originally Posted by lanara View Post
Versuch es mal mit der: [Only registered and activated users can see links. Click Here To Register...]
Damit läufts einwandfrei!

Edit 2:

Hab mich wohl zu früh geäußert. Leider sind die Lags/Hänger noch da. Mit der dll aus dem Muddy's:

Quote:
Originally Posted by b33lz3 View Post
Im neuen Release von Muddy's D2NT ist eine neue dll integriert. Mit der habe ich bisher keine Fehler mehr bekommen!

[Only registered and activated users can see links. Click Here To Register...]
ist auch keine Verbesserung zu verzeichnen.

Zwischenzeitlich hatte ich mal den kompletten D2NT Muddy's zum testen laufen; dieser lief flüssig. Da der D2NT BPFD ziemlich auf meine Bedüfnisse ausgelegt ist und ich ihn auch entsprechend angepasst habe, möchte ich ungern auf einen Anderen wechseln. Gibts noch irgendwelche Anregungen/Ideen/Lösungsverschläge bezüglich meines Problems?
11/08/2011 00:12 b33lz3#2366
Quote:
Originally Posted by Jawul View Post
Kann man diesen Bot jetzt auch wieder benutzen mit der neuen dll ?

Quote:
Originally Posted by Abfahrt View Post
Ich möchte die Frage erweitern: Welche dll ist denn zu empfehlen? Derzeit habe mich mir die dll aus dem D2NT Etal ([Only registered and activated users can see links. Click Here To Register...]) in meinen D2NT PBFD kopiert.

Es läuft soweit alles prima, dennoch lagt/hängt das spiel seitdem fortlaufend.

Jemand ne Idee / das gleiche Problem?
Im neuen Release von Muddy's D2NT ist eine neue dll integriert. Mit der habe ich bisher keine Fehler mehr bekommen!

[Only registered and activated users can see links. Click Here To Register...]
11/08/2011 00:13 lanara#2367
Versuch es mal mit der: [Only registered and activated users can see links. Click Here To Register...]
11/08/2011 13:07 xXSpeedboyXx#2368
geht bei der version das Leechscript wieder ??
11/08/2011 13:41 lanara#2369
Was sollte daran denn nicht gehen?
11/08/2011 17:31 Winterkrieg#2370
Ich hab folgende Frage noch nicht gefunden geschweige denn die Antwort. Wo kann an die Frequenz der Partyeinladungen erhöhen. Also der Bot lädt ja immer die ein die im Spiel sind. Ist nun jemand in der Party lädt er keine weiteren ein. Aber da meisten solche Dummies mit in der Party sind laden die den Rest nicht ein und der Rest verlässt meistens das Spiel. Ist mir jedenfalls so aufgefallen. Jetzt würd ich gerne einstellen das er z.b. alle 30 sekunden eine Einladung verschickt. Jemand eine Lösung dafür ? Benutze z.Z. Sternloopers. Bräuchte aber auch das bei Muddys.