Register for your free account! | Forgot your password?

You last visited: Today at 23:36

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

Advertisement



help leechbot

Discussion on help leechbot within the Diablo 2 Programming forum part of the Diablo 2 category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Oct 2010
Posts: 105
Received Thanks: 11
help leechbot

Also: Meine leecher joinen ein game und kämpfen/machen alles schön mit.
ABER: sie "starten" nur, wenn der leader follow sagt und gehen nur aus dem game, wenn er "bail" sagt. ansonsten stehen sie ewig in einem game rum (wenn der leader vor "bail" das spiel verlässt, dann steht der leecher im game, bis ich es merke und ihn manuell rausnehme, genau das gleiche, wenn er vor "follow" das game verlässt)

wie kriege ich es hin, dass weder "follow" noch "bail" nötig sind. wie gesagt, ansonsten klappt alles (game joinen und WENN follow gesagt wurde, macht er auch alles, was ich will)

was habe ich:
muddys nt
automaton, installiert nach der anleitung aus lanaras blog

NTBotLeech (von lanara):

Code:
//###################################################################
//###########################Einstellungen###########################
//###################################################################
	
var leaderAccountName          = "x";
var leaderName                 = "y";
var gamepassword               = "";
var JoinGameAgain              = true; // 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          = "xy";
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;
}

NTMapGame (auch von lanara):

Code:
 
function NTMain()
{
	Delay(1000);

	Include("libs/common/NTCommon.ntl");
	NTC_IncludeConfig("NTMap/char_configs");

	var _count = 0;
	var _LifeMax, _ManaMax;
	var _player, _mypartyid;

	NT_LoadConfig();

	SetStatusText("NTMap 1.2.1 - " + me.gameserverip);

	RegisterEvent(EVENT_GAMEMSG, NT_GameMsgEvents);
	RegisterEvent(EVENT_KEYDOWN, NT_KeyEvents);

	SetUIState(0x0A, true);

	_LifeMax = me.hpmax;
	_ManaMax = me.mpmax;

	if(NTConfig_LifeChicken > 0)
		me.chickenhp = parseInt((_LifeMax*NTConfig_LifeChicken)/100);

	if(NTConfig_ManaChicken > 0)
		me.chickenmp = parseInt((_ManaMax*NTConfig_ManaChicken)/100);

	while(1)
	{
		if(!NTC_InTown())
		{
			if(_LifeMax != me.hpmax)
			{
				_LifeMax = me.hpmax;

				if(NTConfig_LifeChicken > 0)
					me.chickenhp = parseInt((_LifeMax*NTConfig_LifeChicken)/100);
			}

			if(_ManaMax != me.mpmax)
			{
				_ManaMax = me.mpmax;

				if(NTConfig_ManaChicken > 0)
					me.chickenmp = parseInt((_ManaMax*NTConfig_ManaChicken)/100);
			}
		}

		if(_count++ > 10)
		{
			if(MWConfig_AutoParty)
			{
				_player = GetPlayerUnit();

				if(_player)
				{
					_mypartyid = _player.partyid;

					while(_player.GetNext())
					{
						if(_player.partyid == 65535 || _player.partyid != _mypartyid)
						{
							if(_player.partyflag == 2)
							{
								me.ClickParty(_player, 2);
								break;
							}

							if(_player.partyid == 65535)
							{
								if(_player.partyflag == 4)
									break;

								me.ClickParty(_player, 2);
								NTC_Delay(NTC_DELAY_FRAME);

								if(_player.partyflag == 4 || (_player.partyid != 65535 && _player.partyid == _mypartyid))
									break;
							}
						}
					}
				}
			}

			_count = 0;
		}

		NTC_Delay(200);
	}
}

function NT_KeyEvents(keycode)
{
	switch(keycode)
	{
	case 109: // show or hide enemy - keypad '-'
		if(me.showenemyonautomap)
		{
			me.showenemyonautomap = false;
			Print("Enemy on Automap : Off");
		}
		else
		{
			me.showenemyonautomap = true;
			Print("Enemy on Automap : On");
		}
		break;
	case 107: // show or hide missile - keypad '+'
		if(me.showmissileonautomap)
		{
			me.showmissileonautomap = false;
			Print("Missile on Automap : Off");
		}
		else
		{
			me.showmissileonautomap = true;
			Print("Missile on Automap : On");
		}
		break;
	case 106: // auto party on/off - keypad '*'
		if(MWConfig_AutoParty)
		{
			MWConfig_AutoParty = false;
			Print("Auto Party : Off");
		}
		else
		{
			MWConfig_AutoParty = true;
			Print("Auto Party : On");
		}
		break;
	}
}

function NT_GameMsgEvents(msg, type)
{
	if(type == 4 && msg.indexOf("x") != -1 && (msg.indexOf("left our world") != -1 || msg.indexOf("timeout") != -1))
	{
		ExitGame();
	}
}
Irgendjemand eine idee?
noch zwei kleine fragen: ist es möglich, dass ein leecher dem leader durch die akte folgt? also zum beispiel zuerst bei dia mitgeht, dann baal? und zweitens: ich wollte mal bei jemand anderem leechen, der hat mir dann passwort, char und accname geschickt aber auch noch messages, also hottp und nochwas. was sollte das? wofür brauche ich die?

vielen dank für eure hilfe und wenn der thread nicht am richtigen ort ist, entschuldigt bitte. ich habe im entsprechenden topic vor ein paar monaten geschrieben, aber da konnte mir niemand mehr mit diesem problem weiterhelfen

ps: char und acc namen habe ich oben rausgenommen, sind aber richtig geschrieben...
falls ihr sonst noch irgendwelche infos braucht, einfach sagen
getgoodson is offline  
Old 07/18/2011, 19:34   #2
 
elite*gold: 0
Join Date: Oct 2010
Posts: 105
Received Thanks: 11
fehlt irgend eine angabe? oder hab ich es geschafft, dass ihr das problem ebenfalls nicht erkennen könnt?
getgoodson is offline  
Old 07/19/2011, 00:33   #3
Administrator
 
Muddy Waters's Avatar
 
elite*gold: 41624
Join Date: Jan 2010
Posts: 22,728
Received Thanks: 12,654
Naja, du musst da schon unterscheiden, das eine ist eben Automaton, das andere D2NT. Sind für sich aber zwei völlig verschiedene Dinge. Automaton liegt als DLL vor und sofern die Source nicht pubic ist, wirst du nicht um die Befehle herum kommen, mit D2NT sehen die Möglichkeiten schon besser aus.

Aber soweit ich das hier sehe, sollten die Leecher eigentlich mit dem Leader das Spiel verlassen, das ist für mich jedenfalls im Moment nicht nachvollziehbar.
Wegen dem Follow: man könnte das den Leader theoretisch immer wieder sagen lassen, bis der jeweilige Leecher eine Bestätigung gibt, dass die Information auch angekommen ist. Wäre aber verhältnismäßig aufwändig...

Ich schlage vor, lanara schaut hier mal drüber, der ist vermutlich mehr in der Materie drin. Mal hoffen, dass er es so sieht, ansonsten müssen wir ihn eben drauf hinweisen.

LG
Muddy
Muddy Waters is offline  
Old 07/19/2011, 09:55   #4

 
lanara's Avatar
 
elite*gold: 139
Join Date: Oct 2006
Posts: 12,058
Received Thanks: 24,258
Quote:
Originally Posted by getgoodson View Post
Also: Meine leecher joinen ein game und kämpfen/machen alles schön mit.
ABER: sie "starten" nur, wenn der leader follow sagt und gehen nur aus dem game, wenn er "bail" sagt. ansonsten stehen sie ewig in einem game rum (wenn der leader vor "bail" das spiel verlässt, dann steht der leecher im game, bis ich es merke und ihn manuell rausnehme, genau das gleiche, wenn er vor "follow" das game verlässt)

wie kriege ich es hin, dass weder "follow" noch "bail" nötig sind. wie gesagt, ansonsten klappt alles (game joinen und WENN follow gesagt wurde, macht er auch alles, was ich will)
"follow" wirst du immer sagen müssen, liegt wie Muddy schon sagte an Automaton. Warum die Leecher nicht das Spiel verlassen weiß ich auch nicht, sollte eigentlich klappen, vorrausgesetzt deren Spiel läuft auf Englisch und du hast den Leadername richtig eingetragen. Ich habe die NTMapGame für dich mal etwas geändert:

Code:
var Leader = "LeaderName";

function NTMain()
{
	Delay(1000);

	Include("libs/common/NTCommon.ntl");
	NTC_IncludeConfig("NTMap/char_configs");

	var _count = 0;
	var _LifeMax, _ManaMax;
	var _player, _mypartyid;

	NT_LoadConfig();

	SetStatusText("NTMap 1.2.1 - " + me.gameserverip);

	RegisterEvent(EVENT_GAMEMSG, NT_GameMsgEvents);
	RegisterEvent(EVENT_KEYDOWN, NT_KeyEvents);

	SetUIState(0x0A, true);

	_LifeMax = me.hpmax;
	_ManaMax = me.mpmax;

	if(NTConfig_LifeChicken > 0)
		me.chickenhp = parseInt((_LifeMax*NTConfig_LifeChicken)/100);

	if(NTConfig_ManaChicken > 0)
		me.chickenmp = parseInt((_ManaMax*NTConfig_ManaChicken)/100);

	while(1)
	{
		if(!NTC_InTown())
		{
			if(_LifeMax != me.hpmax)
			{
				_LifeMax = me.hpmax;

				if(NTConfig_LifeChicken > 0)
					me.chickenhp = parseInt((_LifeMax*NTConfig_LifeChicken)/100);
			}

			if(_ManaMax != me.mpmax)
			{
				_ManaMax = me.mpmax;

				if(NTConfig_ManaChicken > 0)
					me.chickenmp = parseInt((_ManaMax*NTConfig_ManaChicken)/100);
			}
		}

		if(_count++ > 10)
		{
			if(NTConfig_AutoParty)
			{
				_player = GetPlayerUnit();

				if(_player)
				{
					_mypartyid = _player.partyid;

					while(_player.GetNext())
					{
						if(_player.partyid == 65535 || _player.partyid != _mypartyid)
						{
							if(_player.partyflag == 2)
							{
								me.ClickParty(_player, 2);
								break;
							}

							if(_player.partyid == 65535)
							{
								if(_player.partyflag == 4)
									break;

								me.ClickParty(_player, 2);
								NTC_Delay(NTC_DELAY_FRAME);

								if(_player.partyflag == 4 || (_player.partyid != 65535 && _player.partyid == _mypartyid))
									break;
							}
						}
					}
				}
			}

			_count = 0;
		}

		NTC_Delay(200);
	}
}

function NT_KeyEvents(keycode)
{
	switch(keycode)
	{
	case 109: // show or hide enemy - keypad '-'
		if(me.showenemyonautomap)
		{
			me.showenemyonautomap = false;
			Print("Enemy on Automap : Off");
		}
		else
		{
			me.showenemyonautomap = true;
			Print("Enemy on Automap : On");
		}
		break;
	case 107: // show or hide missile - keypad '+'
		if(me.showmissileonautomap)
		{
			me.showmissileonautomap = false;
			Print("Missile on Automap : Off");
		}
		else
		{
			me.showmissileonautomap = true;
			Print("Missile on Automap : On");
		}
		break;
	case 106: // auto party on/off - keypad '*'
		if(NTConfig_AutoParty)
		{
			NTConfig_AutoParty = false;
			Print("Auto Party : Off");
		}
		else
		{
			NTConfig_AutoParty = true;
			Print("Auto Party : On");
		}
		break;
	case 97: //Numpad1
		Say("follow");
		break;
	}
}

function NT_GameMsgEvents(msg, type)
{
	if(type == 4 && msg.toLowerCase().indexOf(Leader.toLowerCase()) != -1 && (msg.indexOf("left our world") != -1 || msg.indexOf("timeout") != -1))
	{
		ExitGame();
	}
}
Oben Leader eintragen, Spiel muss wie gesagt auf Englisch laufen. Wenn du auf dem Numpad die Taste 1 drückst, schreibt dein Char "follow".

Quote:
Originally Posted by getgoodson View Post
noch zwei kleine fragen: ist es möglich, dass ein leecher dem leader durch die akte folgt? also zum beispiel zuerst bei dia mitgeht, dann baal? und zweitens: ich wollte mal bei jemand anderem leechen, der hat mir dann passwort, char und accname geschickt aber auch noch messages, also hottp und nochwas. was sollte das? wofür brauche ich die?
Wenn du den Leecher mit zum WP nimmst, sollte er dir in den anderen Akt eigentlich nachporten, vorrausgesetzt er hat die nötigen WP's.

HotTP Messages sind dafür gedacht, wenn man einen Leecher erst zu einem bestimmten Zeitpunkt das TP joinen lassen will. Meisst wird das bei Baalruns genutzt, damit der Leecher nicht sofort reinrennt wenn das TP vom Leader auf geht, da es zu diesem Zeitpunkt oft noch nicht safe ist.
lanara is offline  
Thanks
2 Users
Old 07/20/2011, 03:24   #5
 
elite*gold: 0
Join Date: Oct 2010
Posts: 105
Received Thanks: 11
Quote:
Originally Posted by lanara View Post
"follow" wirst du immer sagen müssen, liegt wie Muddy schon sagte an Automaton. Warum die Leecher nicht das Spiel verlassen weiß ich auch nicht, sollte eigentlich klappen, vorrausgesetzt deren Spiel läuft auf Englisch und du hast den Leadername richtig eingetragen. Ich habe die NTMapGame für dich mal etwas geändert:

Code:
var Leader = "LeaderName";

function NTMain()
{
	Delay(1000);

	Include("libs/common/NTCommon.ntl");
	NTC_IncludeConfig("NTMap/char_configs");

	var _count = 0;
	var _LifeMax, _ManaMax;
	var _player, _mypartyid;

	NT_LoadConfig();

	SetStatusText("NTMap 1.2.1 - " + me.gameserverip);

	RegisterEvent(EVENT_GAMEMSG, NT_GameMsgEvents);
	RegisterEvent(EVENT_KEYDOWN, NT_KeyEvents);

	SetUIState(0x0A, true);

	_LifeMax = me.hpmax;
	_ManaMax = me.mpmax;

	if(NTConfig_LifeChicken > 0)
		me.chickenhp = parseInt((_LifeMax*NTConfig_LifeChicken)/100);

	if(NTConfig_ManaChicken > 0)
		me.chickenmp = parseInt((_ManaMax*NTConfig_ManaChicken)/100);

	while(1)
	{
		if(!NTC_InTown())
		{
			if(_LifeMax != me.hpmax)
			{
				_LifeMax = me.hpmax;

				if(NTConfig_LifeChicken > 0)
					me.chickenhp = parseInt((_LifeMax*NTConfig_LifeChicken)/100);
			}

			if(_ManaMax != me.mpmax)
			{
				_ManaMax = me.mpmax;

				if(NTConfig_ManaChicken > 0)
					me.chickenmp = parseInt((_ManaMax*NTConfig_ManaChicken)/100);
			}
		}

		if(_count++ > 10)
		{
			if(NTConfig_AutoParty)
			{
				_player = GetPlayerUnit();

				if(_player)
				{
					_mypartyid = _player.partyid;

					while(_player.GetNext())
					{
						if(_player.partyid == 65535 || _player.partyid != _mypartyid)
						{
							if(_player.partyflag == 2)
							{
								me.ClickParty(_player, 2);
								break;
							}

							if(_player.partyid == 65535)
							{
								if(_player.partyflag == 4)
									break;

								me.ClickParty(_player, 2);
								NTC_Delay(NTC_DELAY_FRAME);

								if(_player.partyflag == 4 || (_player.partyid != 65535 && _player.partyid == _mypartyid))
									break;
							}
						}
					}
				}
			}

			_count = 0;
		}

		NTC_Delay(200);
	}
}

function NT_KeyEvents(keycode)
{
	switch(keycode)
	{
	case 109: // show or hide enemy - keypad '-'
		if(me.showenemyonautomap)
		{
			me.showenemyonautomap = false;
			Print("Enemy on Automap : Off");
		}
		else
		{
			me.showenemyonautomap = true;
			Print("Enemy on Automap : On");
		}
		break;
	case 107: // show or hide missile - keypad '+'
		if(me.showmissileonautomap)
		{
			me.showmissileonautomap = false;
			Print("Missile on Automap : Off");
		}
		else
		{
			me.showmissileonautomap = true;
			Print("Missile on Automap : On");
		}
		break;
	case 106: // auto party on/off - keypad '*'
		if(NTConfig_AutoParty)
		{
			NTConfig_AutoParty = false;
			Print("Auto Party : Off");
		}
		else
		{
			NTConfig_AutoParty = true;
			Print("Auto Party : On");
		}
		break;
	case 97: //Numpad1
		Say("follow");
		break;
	}
}

function NT_GameMsgEvents(msg, type)
{
	if(type == 4 && msg.toLowerCase().indexOf(Leader.toLowerCase()) != -1 && (msg.indexOf("left our world") != -1 || msg.indexOf("timeout") != -1))
	{
		ExitGame();
	}
}
Oben Leader eintragen, Spiel muss wie gesagt auf Englisch laufen. Wenn du auf dem Numpad die Taste 1 drückst, schreibt dein Char "follow".

danke erstmal. problem besteht aber weiterhin: wenn mein leader das game verlässt, bevor er follow/bail gesagt hat, dann bleibt der leecher einfach stehen und tut gar nix.
english: sollte es sein, die flist nachrichten werden bei beiden english angezeigt, ingame auch alles. leadername stimmt
hab die NTMapGame ersetzt. aber wenn ich die 1 auf dem nummernblock drücke, dann kommt: current script order: dann meine scripts und wenn ichs nochmal drücke: targeting "leechchar" und bringen tut das nix (leechchar rennt mir nicht hinterher)...

das ganze wird irgendwie immer seltsamer...
getgoodson is offline  
Old 07/20/2011, 08:35   #6

 
lanara's Avatar
 
elite*gold: 139
Join Date: Oct 2006
Posts: 12,058
Received Thanks: 24,258
Ähm was? Du bist dir aber schon sicher, dass du die NTMapGame im richtigen Ordner ersetzt, oder? Welchen Bot nutzt du denn?
lanara is offline  
Old 07/20/2011, 15:10   #7
 
elite*gold: 0
Join Date: Oct 2010
Posts: 105
Received Thanks: 11
Quote:
Originally Posted by lanara View Post
Ähm was? Du bist dir aber schon sicher, dass du die NTMapGame im richtigen Ordner ersetzt, oder? Welchen Bot nutzt du denn?
scripts/NTmap/NTMapGame <-- die habe ich ersetzt
nutze muddys bot.
getgoodson is offline  
Reply


Similar Threads Similar Threads
Leechbot
04/15/2010 - Diablo 2 - 1 Replies
Hi, ich suche einen Leechbot der für mich baalruns joint ( joint, nicht selbst welche hostet! ). Ich hab per SuFu nur verflucht viel Spam zu dem Thema gefunden. Habe ausserdem aufgeschnappt dass das mit dem NtBot funktioniert? Ich habe den noch als MfBot in Errinerrung. Wäre nett wenn mir einer weiterhelfen könnte! Ich hab nen lvl90 Paladin ( ohne Engima falls das wichtig ist ) und stecke grad mittem im Abitur...und wenn ich fertig bin würd ich gern noch viel mehr rumbotten^^ Cheers!...
leechbot für 1.13
04/04/2010 - Diablo 2 - 3 Replies
ich hab noch den alten leechbot von 1.12 das rv teil da :D aber irgendwie will der nciht mehr hab ihm jetzt auf den neuen bot eingestellt (richtig 3 mal überprüft), früher ging er problemlos jetzt macht er nichts mehr :S gibts nen neuen oder muss ich noch was umstellen statt nur condom und leechbot.ini?
LeechBot 1.13?
03/31/2010 - Diablo 2 - 7 Replies
Hi! gibt es shcon einen LeechBot für 1.13? wäre sehr hilfreich vielen dank
Leechbot
05/17/2009 - Diablo 2 - 6 Replies
Ich wollte fragen ob es ein lechbot für diablo oder baal gibt der auch pickt
>>>>Leechbot<<<<
07/22/2008 - Diablo 2 - 0 Replies
Hi! Wollt mal fragen ob mir jemand nen Leechbot für 1.12 geben könnte. Und ne Frage: Kann man machen, dass der einfach in einen x-beliebigen Baalrun sich immer einklinkt oder muss man da mit dem Baalboter zusammenarbeiten?? Danke im vorraus :D



All times are GMT +1. The time now is 23:38.


Powered by vBulletin®
Copyright ©2000 - 2026, 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 ©2026 elitepvpers All Rights Reserved.