Register for your free account! | Forgot your password?

Go Back   elitepvpers > Other Online Games > Diablo 2 > Diablo 2 Programming
You last visited: Today at 22:22

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

Advertisement



bestimmten abstand halten

Discussion on bestimmten abstand halten within the Diablo 2 Programming forum part of the Diablo 2 category.

Reply
 
Old 08/18/2010, 22:00   #16
 
elite*gold: 0
Join Date: Jul 2010
Posts: 48
Received Thanks: 8
also überchicken muss ich mir keine gedanken machen wenn ich meinenleecher rumlaufen lass und chicken definiert hab ( also in der charconfig )

aber eine bitte hätte ich noch
könntest du mir vllt die NTM_WalkTo erläutern?
also im detail möglichst
Code:
function NTM_WalkTo(x, y)
{
	var i;
	var _prex1, _prey1;
	var _prex2, _prey2;

	if(me.runwalk == 0)
		me.runwalk = 1;

	for(i = 0 ; i < 480 ; i++)
	{
		if((i % 10) == 0)
		{
			if((i % 60) == 0)
			{
				_prex1 = me.x;
				_prey1 = me.y;

				if((i % 120) == 0)
				{
					_prex2 = me.x;
					_prey2 = me.y;
				}
			}

			ClickMap(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, x, y);
		}

		NTC_Delay(NTC_DELAY_FRAME);

		if(Math.abs(me.x-x) < 2 && Math.abs(me.y-y) < 2)
			break;

		if((i % 10) == 9)
		{
			ClickMap(NTC_CLICK_LUP, NTC_SHIFT_NONE, null);
			NTC_Delay(NTC_DELAY_FRAME);

			if((i % 60) == 59)
			{
				if(me.x == _prex1 && me.y == _prey1 && !NTC_InTown())
				{
					NTA_ClearPosition(2);

					NTP_DoPrecast(false);
				}

				if((i % 120) == 119 && me.x == _prex2 && me.y == _prey2)
					return false;
			}
		}
	}

	ClickMap(NTC_CLICK_LUP, NTC_SHIFT_NONE, null);
	NTC_Delay(NTC_DELAY_FRAME);

	return (i < 480);
}
ich versuche grad die ecke oberhalb vom star zu umlaufen und ich glaub das wäre gut machbar wenn ich eine eigene ( abgeänderte) walto funktion benutz, die prüft ob der char grade in die ecke laufen will ^^
theEye321123 is offline  
Old 08/18/2010, 22:33   #17

 
lanara's Avatar
 
elite*gold: 139
Join Date: Oct 2006
Posts: 12,058
Received Thanks: 24,256
Ein solches Script gibt es btw. schon, zwar noch nicht ganze ausgereift und nur ab Stern, aber naja. :P



Oder direkt eins, wo der Bot 3 TPs an den Siegeln macht, was um einiges Schneller und sicherer ist.

lanara is offline  
Old 08/18/2010, 23:23   #18
 
elite*gold: 0
Join Date: Jul 2010
Posts: 48
Received Thanks: 8
ich weiß danke die beiden scripts sind mir bekannt, aber nicht das was ich suche
theEye321123 is offline  
Old 08/19/2010, 13:44   #19
 
elite*gold: 0
Join Date: Jul 2010
Posts: 48
Received Thanks: 8
so ich hab das ganze script das ich hatte ein "wenig" umgemodelt und in den paar runs die ich bisher gemacht hab hats auchschon wunderbar geklappt
ich konnte ein paar ecken in denen man hängenbleibt schon ausbügeln und dass der leecher anhält wenn er nah genug ist hab ich auch geschafft

das einzige was soweit noch probleme macht ist der leader ( der cleart nicht ganz sauber sodass chicken hin und wieder auftreten) -> da setzt ich noch ein paar punkte die er zum clearen abtelt


Code:
function NTMain()
{
   
   Include("libs/common/NTCommon.ntl");
   Include("common/NTMove.ntl")
   NTC_IncludeLibs();
   NTC_IncludeConfig("NTBot/char_configs");

   NT_LoadConfig();
   NTSI_LoadNIPFiles("NTBot/item_configs");

   NTA_Initialize(); // 10

   var _myPlayerUnit = MW_GetPlayerUnit2(NTConfig_Leader);

   
   if(!NTTM_CheckAct())
   {
      NTC_SendMsgToScript("NTBotGame.ntj", "NTTM_CheckAct()");
      return;
   }

   if(me.areaid != 103)
   {
   if(!NTTM_TownMove("waypoint"))
   {
      NTC_SendMsgToScript("NTBotGame.ntj", "NTTM_TownMove()");
      return;
   }

   if(!NTM_TakeWaypoint(103))
   {
      NTC_SendMsgToScript("NTBotGame.ntj", "NTM_TakeWaypoint()");
      return;
   }
   }
       
   NTTMGR_TownManager();
   
   NTTM_TownMove("portalspot");

   for(i = 0; i <= 100; i++)
   {
      if(NTC_InMyParty(NTConfig_Leader))
         break;

      Delay(200);
   }   

   _myPlayerUnit = MW_GetPlayerUnit2(NTConfig_Leader);
   
	if(!_myPlayerUnit)
	{
		Say("no player found");
		ExitGame();
	}
	
	for(var i=0;i<=10;i++)
	{
		if(_myPlayerUnit.areaid>=129)
			{
			NTC_SendMsgToScript("NTBotGame.ntj", "SCRIPT_END");
			break;
			}
		Delay(750);
	}
	
   while(me.areaid == 103 && NTC_InMyParty(NTConfig_Leader))
   {
      NTM_UsePortal("BluePortal", 108, NTConfig_Leader); // 50
      Delay(1000);
   }

   var _distance=0;
   var _path;
   var _leaderx=0;
   var _leadery=0;
   
    while(NTC_InMyParty(NTConfig_Leader))
	{	
		NTP_DoPrecast(false);
		Delay(800);	
		_myPlayerUnit = MW_GetPlayerUnit2(NTConfig_Leader);
		if(me.areaid == 108 && me.areaid == _myPlayerUnit.areaid)
		{
			_leaderx=_myPlayerUnit.x;
			_leadery=_myPlayerUnit.y;
			_distance=GetDistance(me.x, me.y, _leaderx, _leadery);
			
			if(_distance>=70)
			{
				_path = GetPath(me.areaid, me.x, me.y, _leaderx, _leadery, false);
				if(_path)
				{
					
					for(var i = 0; i < _path.length; i++)
					{
						_distance=GetDistance(me.x, me.y, _leaderx, _leadery);
						if(_distance>=50)
						{
							if(_path[i][0]<7700||_path[i][0]>7880||_path[i][1]<5220)
								{
								ClickMap(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, me.x, me.y)
								NTC_Delay(NTC_DELAY_FRAME);
								ClickMap(NTC_CLICK_LUP, NTC_SHIFT_NONE, null);
								break;
								}
							else if(Math.abs(_path[i][0]-7817)<=2 && Math.abs(_path[i][1]-5436)<=2)
								{
								NTM_WalkTo(7820, 5428);
								}
							else if(Math.abs(_path[i][0]-7817)<=2 && Math.abs(_path[i][1]-5371)<=2)
								{
								NTM_WalkTo(7819, 5368);
								}
							else if(Math.abs(_path[i][0]-7763)<=3 && Math.abs(_path[i][1]-5267)<=3)
								{
								NTM_WalkTo(_path[i][0], 5278);
								}
							else if(Math.abs(_path[i][0]-7792)<=3 && Math.abs(_path[i][1]-5412)<=3)
								{
								NTM_WalkTo(7792, 5400);
								}
							else
								{
								NTM_WalkTo(_path[i][0], _path[i][1]);
								}
						}
						else
						{
							ClickMap(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, me.x, me.y)
							NTC_Delay(NTC_DELAY_FRAME);
							ClickMap(NTC_CLICK_LUP, NTC_SHIFT_NONE, null);
							break;
						}
					}
				}
			}
			_diablo = NTC_FindUnit(NTC_UNIT_MONSTER, 243);
			Delay(300);

			if(_diablo)    //diablo is too close
				{
				Delay(10000);
				break;
					//Say("Diablo found - leaving game");
					//ExitGame(); //leave game and wait for leader to open a new one
				}
			
		}
		if(_myPlayerUnit.areaid>=129)
			NTC_SendMsgToScript("NTBotGame.ntj", "SCRIPT_END");
    
	}
	NTC_SendMsgToScript("NTBotGame.ntj", "SCRIPT_END");

}
 
 

function MW_GetPlayerUnit2(leaderName)
{
    var _player;
    
    if(arguments.length < 1 || !leaderName)
        return null;
    
    _player = GetPlayerUnit();

    if(_player)
    {
        while(_player.GetNext())
        {
            if(_player.name.toLowerCase() == leaderName.toLowerCase())
                return _player;
        }
    }
   
    return null;
}
ps: kann man doch besser lesen als vorher
theEye321123 is offline  
Old 08/19/2010, 17:31   #20
Administrator
 
Muddy Waters's Avatar
 
elite*gold: 41624
Join Date: Jan 2010
Posts: 22,728
Received Thanks: 12,654
Quote:
Originally Posted by theEye321123 View Post
so ich hab das ganze script das ich hatte ein "wenig" umgemodelt und in den paar runs die ich bisher gemacht hab hats auchschon wunderbar geklappt
ich konnte ein paar ecken in denen man hängenbleibt schon ausbügeln und dass der leecher anhält wenn er nah genug ist hab ich auch geschafft

das einzige was soweit noch probleme macht ist der leader ( der cleart nicht ganz sauber sodass chicken hin und wieder auftreten) -> da setzt ich noch ein paar punkte die er zum clearen abtelt


Code:
function NTMain()
{
   
   Include("libs/common/NTCommon.ntl");
   Include("common/NTMove.ntl")
   NTC_IncludeLibs();
   NTC_IncludeConfig("NTBot/char_configs");

   NT_LoadConfig();
   NTSI_LoadNIPFiles("NTBot/item_configs");

   NTA_Initialize(); // 10

   var _myPlayerUnit = MW_GetPlayerUnit2(NTConfig_Leader);

   
   if(!NTTM_CheckAct())
   {
      NTC_SendMsgToScript("NTBotGame.ntj", "NTTM_CheckAct()");
      return;
   }

   if(me.areaid != 103)
   {
   if(!NTTM_TownMove("waypoint"))
   {
      NTC_SendMsgToScript("NTBotGame.ntj", "NTTM_TownMove()");
      return;
   }

   if(!NTM_TakeWaypoint(103))
   {
      NTC_SendMsgToScript("NTBotGame.ntj", "NTM_TakeWaypoint()");
      return;
   }
   }
       
   NTTMGR_TownManager();
   
   NTTM_TownMove("portalspot");

   for(i = 0; i <= 100; i++)
   {
      if(NTC_InMyParty(NTConfig_Leader))
         break;

      Delay(200);
   }   

   _myPlayerUnit = MW_GetPlayerUnit2(NTConfig_Leader);
   
    if(!_myPlayerUnit)
    {
        Say("no player found");
        ExitGame();
    }
    
    for(var i=0;i<=10;i++)
    {
        if(_myPlayerUnit.areaid>=129)
            {
            NTC_SendMsgToScript("NTBotGame.ntj", "SCRIPT_END");
            break;
            }
        Delay(750);
    }
    
   while(me.areaid == 103 && NTC_InMyParty(NTConfig_Leader))
   {
      NTM_UsePortal("BluePortal", 108, NTConfig_Leader); // 50
      Delay(1000);
   }

   var _distance=0;
   var _path;
   var _leaderx=0;
   var _leadery=0;
   
    while(NTC_InMyParty(NTConfig_Leader))
    {    
        NTP_DoPrecast(false);
        Delay(800);    
        _myPlayerUnit = MW_GetPlayerUnit2(NTConfig_Leader);
        if(me.areaid == 108 && me.areaid == _myPlayerUnit.areaid)
        {
            _leaderx=_myPlayerUnit.x;
            _leadery=_myPlayerUnit.y;
            _distance=GetDistance(me.x, me.y, _leaderx, _leadery);
            
            if(_distance>=70)
            {
                _path = GetPath(me.areaid, me.x, me.y, _leaderx, _leadery, false);
                if(_path)
                {
                    
                    for(var i = 0; i < _path.length; i++)
                    {
                        _distance=GetDistance(me.x, me.y, _leaderx, _leadery);
                        if(_distance>=50)
                        {
                            if(_path[i][0]<7700||_path[i][0]>7880||_path[i][1]<5220)
                                {
                                ClickMap(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, me.x, me.y)
                                NTC_Delay(NTC_DELAY_FRAME);
                                ClickMap(NTC_CLICK_LUP, NTC_SHIFT_NONE, null);
                                break;
                                }
                            else if(Math.abs(_path[i][0]-7817)<=2 && Math.abs(_path[i][1]-5436)<=2)
                                {
                                NTM_WalkTo(7820, 5428);
                                }
                            else if(Math.abs(_path[i][0]-7817)<=2 && Math.abs(_path[i][1]-5371)<=2)
                                {
                                NTM_WalkTo(7819, 5368);
                                }
                            else if(Math.abs(_path[i][0]-7763)<=3 && Math.abs(_path[i][1]-5267)<=3)
                                {
                                NTM_WalkTo(_path[i][0], 5278);
                                }
                            else if(Math.abs(_path[i][0]-7792)<=3 && Math.abs(_path[i][1]-5412)<=3)
                                {
                                NTM_WalkTo(7792, 5400);
                                }
                            else
                                {
                                NTM_WalkTo(_path[i][0], _path[i][1]);
                                }
                        }
                        else
                        {
                            ClickMap(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, me.x, me.y)
                            NTC_Delay(NTC_DELAY_FRAME);
                            ClickMap(NTC_CLICK_LUP, NTC_SHIFT_NONE, null);
                            break;
                        }
                    }
                }
            }
            _diablo = NTC_FindUnit(NTC_UNIT_MONSTER, 243);
            Delay(300);

            if(_diablo)    //diablo is too close
                {
                Delay(10000);
                break;
                    //Say("Diablo found - leaving game");
                    //ExitGame(); //leave game and wait for leader to open a new one
                }
            
        }
        if(_myPlayerUnit.areaid>=129)
            NTC_SendMsgToScript("NTBotGame.ntj", "SCRIPT_END");
    
    }
    NTC_SendMsgToScript("NTBotGame.ntj", "SCRIPT_END");

}
 
 

function MW_GetPlayerUnit2(leaderName)
{
    var _player;
    
    if(arguments.length < 1 || !leaderName)
        return null;
    
    _player = GetPlayerUnit();

    if(_player)
    {
        while(_player.GetNext())
        {
            if(_player.name.toLowerCase() == leaderName.toLowerCase())
                return _player;
        }
    }
   
    return null;
}
ps: kann man doch besser lesen als vorher
Hier mal die angeforderte Erklärung, ich hoffe das reicht so, ansonsten musst du fragen, was du genauer wissen willst.
Code:
function NTM_WalkTo(x, y)
{
    var i;
    var _prex1, _prey1;
    var _prex2, _prey2;

    if(me.runwalk == 0)
        me.runwalk = 1; // Always run aktivieren

    for(i = 0 ; i < 480 ; i++)
    {
        if((i % 10) == 0) // Alle 10 i bzw. immer wenn i ohne Rest durch 10 teilbar ist
        { // Alle hier eingeschlossenen if-Anweisungen werden im ersten Durchlauf ausgeführt
            if((i % 60) == 0) // Alle 60 i bzw. immer wenn i ohne Rest durch 60 teilbar ist
            {
                _prex1 = me.x;
                _prey1 = me.y;

                if((i % 120) == 0) // Alle 60 i bzw. immer wenn i ohne Rest durch 120 teilbar ist
                {
                    _prex2 = me.x;
                    _prey2 = me.y;
                }
            }

            ClickMap(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, x, y); // Linker Klick down ohne gedrückte Shift Taste auf die Koordinaten x, y
        }

        NTC_Delay(NTC_DELAY_FRAME); // Delay um NTC_DELAY_FRAME == 40ms

        if(Math.abs(me.x-x) < 2 && Math.abs(me.y-y) < 2) // Wenn die Differenz der aktuellen Koordinaten zu den Zielkoordinaten kleiner als 2
            break;

        if((i % 10) == 9) // Wenn i geteilt durch 10 einen Rest von 9 ergibt
        {
            ClickMap(NTC_CLICK_LUP, NTC_SHIFT_NONE, null); // Loslassen der zuvor gedrückten Maustaste
            NTC_Delay(NTC_DELAY_FRAME); // Delay um NTC_DELAY_FRAME == 40ms

            if((i % 60) == 59) // Wenn i geteilt durch 60 einen Rest von 59 ergibt
            {
                if(me.x == _prex1 && me.y == _prey1 && !NTC_InTown()) // Wenn sich der Char an der Ausgangsposition befindet, welche zuerst aktualisiert wird und sich nicht in der Stadt befindet --> eventuell belockiert durch Monster
                {
                    NTA_ClearPosition(2); // Töten aller Monster im Umkreis von 2

                    NTP_DoPrecast(false); // Precast, wenn bedarf besteht
                }

                if((i % 120) == 119 && me.x == _prex2 && me.y == _prey2) // Wenn i geteilt durch 60 einen Rest von 59 ergibt und sich der Char immernoch an der gespeicherten Ausgangsposition befindet, welche zuletzt aktualisiert wird
                    return false; // Funktionsabbruch mit Rückgabewert false
            }
        }
    }

    ClickMap(NTC_CLICK_LUP, NTC_SHIFT_NONE, null); // Loslassen der zuvor gedrückten Maustaste
    NTC_Delay(NTC_DELAY_FRAME); // Delay um NTC_DELAY_FRAME == 40ms

    return (i < 480); // Funktionsabbruch mit Rückgabewert (i < 480) (Wahr, wenn Zielkoordinaten erreicht bzw. for Schleife per break beendet)
}
Das andere habe ich mir auch mal durchgelesen und direkt mal (in erster Linie stilistisch) optimiert.
Code:
function NTMain()
{
  
    Include("libs/common/NTCommon.ntl");
    Include("common/NTMove.ntl")
    NTC_IncludeLibs();
    NTC_IncludeConfig("NTBot/char_configs");

    NT_LoadConfig();
    NTSI_LoadNIPFiles("NTBot/item_configs");

    NTA_Initialize();

    var _myPlayerUnit = MW_GetPlayerUnit2(NTConfig_Leader);


    if(!NTTM_CheckAct(4))
    {
        NTC_SendMsgToScript("NTBotGame.ntj", "NTTM_CheckAct()");
        return;
    }
  
    NTTMGR_TownManager();

    NTTM_TownMove("portalspot");

    for(i = 0; i <= 100; i++)
    {
        if(NTC_InMyParty(NTConfig_Leader))
            break;

        Delay(200);
    }  

    _myPlayerUnit = MW_GetPlayerUnit2(NTConfig_Leader);

    if(!_myPlayerUnit)
    {
        Say("no player found");
        ExitGame();
    }

    for(var i=0; i <= 10; i++)
    {
        if(_myPlayerUnit.areaid >= 129)
        {
            NTC_SendMsgToScript("NTBotGame.ntj", "SCRIPT_END");
            break;
        }
        Delay(750);
    }

    while(me.areaid == 103 && NTC_InMyParty(NTConfig_Leader))
    {
        NTM_UsePortal("BluePortal", 108, NTConfig_Leader); // 50
        Delay(1000);
    }

    var _distance = 0;
    var _path;
    var _leaderx = 0;
    var _leadery = 0;

    while(NTC_InMyParty(NTConfig_Leader))
    {    
        NTP_DoPrecast(false);
        Delay(800);    
        _myPlayerUnit = MW_GetPlayerUnit2(NTConfig_Leader);
        
        if(me.areaid == 108 && me.areaid == _myPlayerUnit.areaid)
        {
            _leaderx = _myPlayerUnit.x;
            _leadery = _myPlayerUnit.y;
            _distance = GetDistance(me.x, me.y, _leaderx, _leadery);
            
            if(_distance >= 70)
            {
                _path = GetPath(me.areaid, me.x, me.y, _leaderx, _leadery, false);
                
                if(_path)
                {
                    for(var i = 0; i < _path.length; i++)
                    {
                        _distance = GetDistance(me.x, me.y, _leaderx, _leadery);
                        
                        if(_distance >= 50)
                        {
                            if(_path[i][0] < 7700 || _path[i][0] > 7880 || _path[i][1] < 5220)
                            {
                                ClickMap(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, me.x, me.y)
                                NTC_Delay(NTC_DELAY_FRAME);
                                ClickMap(NTC_CLICK_LUP, NTC_SHIFT_NONE, null);
                                break;
                            }
                            else if(Math.abs(_path[i][0] - 7817) <= 2 && Math.abs(_path[i][1] - 5436) <= 2)
                            {
                                NTM_WalkTo(7820, 5428);
                            }
                            else if(Math.abs(_path[i][0] - 7817) <= 2 && Math.abs(_path[i][1] - 5371) <= 2)
                            {
                                NTM_WalkTo(7819, 5368);
                            }
                            else if(Math.abs(_path[i][0] - 7763) <= 3 && Math.abs(_path[i][1] - 5267) <= 3)
                            {
                                NTM_WalkTo(_path[i][0], 5278);
                            }
                            else if(Math.abs(_path[i][0] - 7792) <= 3 && Math.abs(_path[i][1] - 5412) <= 3)
                            {
                                NTM_WalkTo(7792, 5400);
                            }
                            else
                                NTM_WalkTo(_path[i][0], _path[i][1]);
                        }
                        else
                        {
                            ClickMap(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, me.x, me.y)
                            NTC_Delay(NTC_DELAY_FRAME);
                            ClickMap(NTC_CLICK_LUP, NTC_SHIFT_NONE, null);
                            break;
                        }
                    }
                }
            }
            _diablo = NTC_FindUnit(NTC_UNIT_MONSTER, 243);
            Delay(300);

            if(_diablo)    //diablo is too close
            {
                Delay(10000);
                break;
                //Say("Diablo found - leaving game");
                //ExitGame(); //leave game and wait for leader to open a new one
            }
            
        }
        
        if(_myPlayerUnit.areaid >= 129)
            break;
    }
    
    NTC_SendMsgToScript("NTBotGame.ntj", "SCRIPT_END");
}
So ganz nachvollziehen kann ich es nicht, weil ich die Koordinaten im CS nicht im Kopf habe und diese folglich nicht ganz mit deinen Bedinungen in Verbindung bringen kann.

Zwei Sachen finde ich auf den ersten Blick etwas komisch:
Zum einen der Teil bei Diablo --> Looks a bit holprig
Zum anderen Frage ich mich, inwieweit es Sinnvoll ist, auf die Position zu Klicken, auf der der Char gerade steht. Aufgrund von Rundungsfehlern würde ich vermuten, dass das zu einem Schritt in undefinierte Richtung führt, aber vielleicht hast du dir dabei ja etwas gedacht.

Lg
Muddy
Muddy Waters is offline  
Thanks
1 User
Old 08/19/2010, 17:50   #21
 
elite*gold: 0
Join Date: Jul 2010
Posts: 48
Received Thanks: 8
Quote:
Zum anderen Frage ich mich, inwieweit es Sinnvoll ist, auf die Position zu Klicken, auf der der Char gerade steht. Aufgrund von Rundungsfehlern würde ich vermuten, dass das zu einem Schritt in undefinierte Richtung führt, aber vielleicht hast du dir dabei ja etwas gedacht.
nope das klappt perfekt ^^ ein klick in etwa wo du stehst und ein unterbrechen des langlaufen am weg genau wies sein soll

das zu dia naja bin ja nochnet 100% fertig aber schon gute 90
das läuft schon echt gut

mit nem lvl 1er char würd ichs zwar net empfehlen, dafür cleart der leader manchmal zu unsauber, aber ab lvl 30 / 40 bei entsprechenden chickeneinstellungen kein problem

das mit den koordinaten hab ich bei mir im script schon mit comments versehen die versuchen zu erklären welche ecken das sind ^^

btw auf diese art und weise klappt das deutlich besser als mit checkpoints

thx btw für die erläuterung hatte es dann auch irgendwann mit grübeln raus wie ich das mit dem stehenbleiben mach

und ich hab ein neues problem ^^

und zwar wollt ich meinen leecher bei baal dazu bringen durchs tp zu gehen aber der WILL NET der steht davor und es klappt einfach net

ich vergleich mal deine optimierungen mit meinem code und poste dann die aktuelle version

mir ist übrigends aufgefallen, dass mein leader alle paar spiele (unregelmäßig) einfach kein passwort verwendet und sein cta benutzt er auchnet :/ (dabei hab ich dem extra eins gebaut) dafür dauert der precast ziemlich lange

Code:
--------

so hier noch das aktuelle script teilweise mit comments
Code:
function NTMain()
{
   
   Include("libs/common/NTCommon.ntl");
   Include("common/NTMove.ntl")
   NTC_IncludeLibs();
   NTC_IncludeConfig("NTBot/char_configs");

   NT_LoadConfig();
   NTSI_LoadNIPFiles("NTBot/item_configs");

   NTA_Initialize(); 
   
   var _myPlayerUnit = MW_GetPlayerUnit2(NTConfig_Leader);

   
    if(!NTTM_CheckAct(4))
    {
        NTC_SendMsgToScript("NTBotGame.ntj", "NTTM_CheckAct()");
        return;
    }
       
   NTTMGR_TownManager();
   
   NTTM_TownMove("portalspot");

   for(i = 0; i <= 100; i++)
   {
      if(NTC_InMyParty(NTConfig_Leader))
         break;

      Delay(200);
   }   

   _myPlayerUnit = MW_GetPlayerUnit2(NTConfig_Leader);
   
	if(_myPlayerUnit==null)
	{
		Say("no player found");
		ExitGame();
	}
	
	for(var i=0;i<=10;i++)
	{
		if(_myPlayerUnit.areaid>=129)
		{
			NTC_SendMsgToScript("NTBotGame.ntj", "SCRIPT_END");
			break;
		}
		if(_myPlayerUnit.areaid==108||_myPlayerUnit.areaid==107)
			break;
		Delay(750);
	}
	
   while(me.areaid == 103 && NTC_InMyParty(NTConfig_Leader))
   {
      NTM_UsePortal("BluePortal", 108, NTConfig_Leader); // 50
      Delay(750);
   }

   var _distance=0;
   var _path;
   var _leaderx=0;
   var _leadery=0;
   
    while(NTC_InMyParty(NTConfig_Leader))
	{	
		NTP_DoPrecast(false);
		_myPlayerUnit = MW_GetPlayerUnit2(NTConfig_Leader);
		if(_myPlayerUnit==null)
			NTC_SendMsgToScript("NTBotGame.ntj", "SCRIPT_END");
		if(me.areaid == 108 && me.areaid == _myPlayerUnit.areaid)
		{
			_leaderx=_myPlayerUnit.x;
			_leadery=_myPlayerUnit.y;
			_distance=GetDistance(me.x, me.y, _leaderx, _leadery);
			
			if(_distance>=70)
			{
				_path = GetPath(me.areaid, me.x, me.y, _leaderx, _leadery, false);
				if(_path)
				{
					
					for(var i = 0; i < _path.length; i++)
					{
						_distance=GetDistance(me.x, me.y, _leaderx, _leadery);
						if(_distance>=50)
						{
							if(_path[i][0]<7708||_path[i][0]>7880||_path[i][1]<5223) // verhindert zu weites laufen richtung siegel!!!
							{
								ClickMap(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, me.x, me.y)
								NTC_Delay(NTC_DELAY_FRAME);
								ClickMap(NTC_CLICK_LUP, NTC_SHIFT_NONE, null);
								break;
							}
							else if(Math.abs(_path[i][0]-7817)<=2 && Math.abs(_path[i][1]-5436)<=2) // zweite ecke am rechter weg vom eingang aus -> ecke zum mittelteil hin
							{
								NTM_WalkTo(7820, 5428);
							}
							else if(Math.abs(_path[i][0]-7817)<=2 && Math.abs(_path[i][1]-5371)<=2) // ecke am rechten weg nach dem mittelteil vom eingang aus
							{
								NTM_WalkTo(7819, 5368);
							}
							else if(Math.abs(_path[i][0]-7763)<=3 && Math.abs(_path[i][1]-5267)<=3) // ecke links über pentagramm
							{
								NTM_WalkTo(_path[i][0], 5278);
							}
							else if(Math.abs(_path[i][0]-7792)<=3 && Math.abs(_path[i][1]-5412)<=3) // linke untere ecke im mittelteil nach dem eingang 
							{
								NTM_WalkTo(7792, 5400);
							}
							else
							{
								NTM_WalkTo(_path[i][0], _path[i][1]);
							}
						}
						else
						{
							ClickMap(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, me.x, me.y)
							NTC_Delay(NTC_DELAY_FRAME);
							ClickMap(NTC_CLICK_LUP, NTC_SHIFT_NONE, null);
							break;
						}
					}
				}
			}
			_diablo = NTC_FindUnit(NTC_UNIT_MONSTER, 243);
			Delay(300);

			if(_diablo)    
				{
				Delay(10000);	// wenn dia da ist -> 10 sec warten
				break;			// dia sollte dann tot sein :D und auf zum nächsten script
				}
			
		}
		if(_myPlayerUnit.areaid>=129)
			NTC_SendMsgToScript("NTBotGame.ntj", "SCRIPT_END");
    
		Delay(800);	
	}
	
	NTC_SendMsgToScript("NTBotGame.ntj", "SCRIPT_END");

}
 
 

function MW_GetPlayerUnit2(leaderName)
{
    var _player;
    
    if(arguments.length < 1 || !leaderName)
        return null;
    
    _player = GetPlayerUnit();

    if(_player)
    {
        while(_player.GetNext())
        {
            if(_player.name.toLowerCase() == leaderName.toLowerCase())
                return _player;
        }
    }
   
    return null;
}

wenn du willst poste ich noch die restlichen scripts und du kannsts ausprobieren ^^
also das diascript halt und ich hab noch eine zusätzliche variable damit der leader auch auf den leecher wartet, wenn der schon im game ist


E: das problem mim in den weltstein kommen hab ich gelöst
joa damit isses eigentlich alles fertig
vllt noch die ein oder andere feinheit aber im großen und ganze klappts
theEye321123 is offline  
Old 08/20/2010, 19:34   #22
 
elite*gold: 0
Join Date: Jul 2010
Posts: 48
Received Thanks: 8
so das script ist fast fertig
bin grad am testen

Code:
function NTMain()
{
   
   Include("libs/common/NTCommon.ntl");
   Include("common/NTMove.ntl")
   NTC_IncludeLibs();
   NTC_IncludeConfig("NTBot/char_configs");

   NT_LoadConfig();
   NTSI_LoadNIPFiles("NTBot/item_configs");

   NTA_Initialize(); 
   
	var _myPlayerUnit 
   
    if(!NTTM_CheckAct(4))
    {
        NTC_SendMsgToScript("NTBotGame.ntj", "NTTM_CheckAct()");
        return;
    }
       
   NTTMGR_TownManager();
   
   NTTM_TownMove("portalspot");

   for(i = 0; i <= 100; i++)
   {
      if(NTC_InMyParty(NTConfig_Leader))
         break;

      Delay(200);
   }   
	_myPlayerUnit = MW_GetPlayerUnit2(NTConfig_Leader);
	if(_myPlayerUnit==null)
	{
		ExitGame();
	}	
   
	while(_myPlayerUnit.areaid<=109)
	{
	   if(me.areaid == 103 && NTC_InMyParty(NTConfig_Leader))
	   {
			NTM_UsePortal("BluePortal", 108, NTConfig_Leader); // 50
			Delay(750);
			if(me.areaid==108)
				break;
	   }
	   	_myPlayerUnit = MW_GetPlayerUnit2(NTConfig_Leader);
		if(_myPlayerUnit==null)
		{
			ExitGame();
		}	
		Delay(750);
	}

   var _distance=0;
   var _path;
   var _leaderx=0;
   var _leadery=0;
   var _leadercheckseals=0;
   var _noedges=false;
   
   while(NTC_InMyParty(NTConfig_Leader))
	{	
		NTP_DoPrecast(false);
		_myPlayerUnit = MW_GetPlayerUnit2(NTConfig_Leader);
		if(_myPlayerUnit==null)
		{
			NTC_SendMsgToScript("NTBotGame.ntj", "SCRIPT_END");
		}	
		_leaderx=_myPlayerUnit.x;
		_leadery=_myPlayerUnit.y;
		if(me.areaid == 108 && me.areaid == _myPlayerUnit.areaid)
		{
			_distance=GetDistance(me.x, me.y, _leaderx, _leadery);
			
			if(_distance>=65)
			{
				
				_leadercheckseals = MW_LeaderCheckSeals(_leaderx, _leadery, me.x, me.y)
				if(_leadercheckseals == 1)
				{
					
					_path = GetPath(me.areaid, me.x, me.y, _leaderx, _leadery, false);
					if(_path)
					{
											
						for(var i = 0; i < _path.length; i++)
						{
							_distance=GetDistance(me.x, me.y, _leaderx, _leadery);
							if(_distance>=45)
							{
								_noedges = CheckforEdges(_path[i][0] ,_path[i][1]);
								if(_noedges == true)
								{
									Delay(100)
								}
								else
								{
									break;
								}
								
							}
							else
							{
								ClickMap(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, me.x, me.y)
								NTC_Delay(NTC_DELAY_FRAME);
								ClickMap(NTC_CLICK_LUP, NTC_SHIFT_NONE, null);
								break;
							}
						}
					}
				}
			}
			
		}
		if(_myPlayerUnit.areaid>=129)
			{
			Delay(2000);
			NTC_SendMsgToScript("NTBotGame.ntj", "SCRIPT_END");
			break;
			}
		Delay(800);	
	}
	if(!NTC_InMyParty(NTConfig_Leader))
		NTC_SendMsgToScript("NTBotGame.ntj", "SCRIPT_END");
}
 
 

function MW_GetPlayerUnit2(leaderName)
{
    var _player;
    
    if(arguments.length < 1 || !leaderName)
        return null;
    
    _player = GetPlayerUnit();

    if(_player)
    {
        while(_player.GetNext())
        {
            if(_player.name.toLowerCase() == leaderName.toLowerCase())
                return _player;
        }
    }
   
    return null;
}



function MW_LeaderCheckSeals(leaderx, leadery, mex, mey)
{
	var _distance=0;
	var _noedges = false;
	
	if(leaderx <= 7705 && mex >= 7706)
	{
		_distance=GetDistance(mex, mey, 7707, 5289)
		if(_distance>2)
			{
				_path = GetPath(me.areaid, mex, mey, 7707, 5289, false);
				if(_path)
				{
					for(var i = 0; i < _path.length; i++)
					{
						_noedges = CheckforEdges(_path[i][0] ,_path[i][1]);
						if(_noedges == true)
						{
							Delay(100)
						}
						else
						{
							break;
						}				
					}
				} 
			}
		return 0;
	}
	
	else if(leaderx >= 7882 && mex <= 7881)
	{
		_distance=GetDistance(mex, mey, 7881, 5300)
		if(_distance>2)
			{
				_path = GetPath(me.areaid, mex, mey, 7881, 5300, false);
				if(_path)
				{
					for(var i = 0; i < _path.length; i++)
					{
						_noedges = CheckforEdges(_path[i][0] ,_path[i][1]);
						if(_noedges == true)
						{
							Delay(100)
						}
						else
						{
							break;
						}				
					}
				} 
			}
		return 0;
	}	

	else if(leadery <= 5221 && mey >= 5222)
	{
		_distance=GetDistance(mex, mey, 7805, 5223)
		if(_distance>2)
			{
				_path = GetPath(me.areaid, mex, mey, 7805, 5223, false);
				if(_path)
				{
					for(var i = 0; i < _path.length; i++)
					{
						_noedges = CheckforEdges(_path[i][0] ,_path[i][1]);
						if(_noedges == true)
						{
							Delay(100)
						}
						else
						{
							break;
						}					
					}
				} 
			}
		return 0; 
	}		
	else
	{
		return 1;
	}
}




function CheckforEdges(x ,y)
{								
	if(Math.abs(me.x-7767)<=3 && Math.abs(me.y-5321)<=3) // ecke links unterm pentagramm falls man drinnesteht
	{
		NTM_WalkTo(7775, 5318);
		return true;
	}
	// das was hier drunter steht ist durch die MW_LeaderCheckSeals funktion überflüssig geworden
	// if(x < 7708 && me.x >=7708) // verhindert zu weites laufen richtung siegel!!! 
	// {
		// ClickMap(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, me.x, me.y)
		// NTC_Delay(NTC_DELAY_FRAME);
		// ClickMap(NTC_CLICK_LUP, NTC_SHIFT_NONE, null);
		// return false;
	// }
	// else if(x > 7880 && me.x <= 7880) // verhindert zu weites laufen richtung siegel!!!
	// {
		// ClickMap(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, me.x, me.y)
		// NTC_Delay(NTC_DELAY_FRAME);
		// ClickMap(NTC_CLICK_LUP, NTC_SHIFT_NONE, null);
		// return false;
	// }
	// else if(y < 5223 && me.y >= 5223) // verhindert zu weites laufen richtung siegel!!!
	// {
		// ClickMap(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, me.x, me.y)
		// NTC_Delay(NTC_DELAY_FRAME);
		// ClickMap(NTC_CLICK_LUP, NTC_SHIFT_NONE, null);
		// return false;
	// }		
	if(Math.abs(me.x-7808)<=2 && Math.abs(me.y-5290)<=2) // verhindert steckenbleiben auf der rechten seite vom pentagramm
	{
		NTM_WalkTo(7818, 5281);
		return true;
	}
	else if(Math.abs(x-7795)<=16 && Math.abs(y-5395)<=16) // einbuchtungen am ende vom mittelteil 
	{
		if(me.x<7795)
		{
			NTM_WalkTo(7769, 5400);	
		}
		else
		{
			NTM_WalkTo(7820, 5400);
		}
		
		Delay(200);
		
		return false;
	}
	else if(Math.abs(x-7817)<=2 && Math.abs(y-5436)<=2) // zweite ecke am rechter weg vom eingang aus -> ecke zum mittelteil hin
	{
		NTM_WalkTo(7820, 5428);
		return true;
	}
	else if(Math.abs(x-7817)<=2 && Math.abs(y-5371)<=2) // ecke am rechten weg nach dem mittelteil vom eingang aus
	{
		NTM_WalkTo(7819, 5368);
		return true;
	}
	else if(Math.abs(x-7763)<=3 && Math.abs(y-5267)<=3) // ecke links über pentagramm
	{
		NTM_WalkTo(x, 5278);
		return true;
	}
	else if(Math.abs(x-7792)<=3 && Math.abs(y-5412)<=3) // linke untere ecke im mittelteil nach dem eingang 
	{
		NTM_WalkTo(7792, 5400);
		return true;
	}
	else if(Math.abs(x-7767)<=3 && Math.abs(y-5321)<=3) // ecke links unterm pentagramm
	{
		NTM_WalkTo(7775, 5318);
		return true;
	}
	else
	{
		NTM_WalkTo(x, y);
		return true;
	}
	
}

E: kritik ist erwünscht
E2: so thats it ^^ das ist die finale version (ausser irgendjemand findet noch irgendwas gravierendes) und es läuft echt gut besser als ich dachte

das fertige script ist hier zu finden:
theEye321123 is offline  
Reply


Similar Threads Similar Threads
SRO im vordergrund halten
07/11/2023 - Silkroad Online - 11 Replies
wie kann man sro zb im minimierten zustand oben inner ecke stehn lassen und dabei noch im i net surfen also ich brauche einfach ne anleitung wie ich sro im vordergrund halten kann wenn man ja explorer und so aufmacht kann man ja net sehn was im hintergrund ingame passiert wäre wirklich dankbar für jede usefull antwort
D2NT 3.0 Abstand zum Boss ändern? Wie?
03/29/2010 - Diablo 2 - 10 Replies
Wie ändere ich den Abstand zu den Bossmonstern? Kann mir da vielleicht jemand helfen? D2NT 3.0 ofc ;)
Maus gedrückt halten
05/27/2009 - GW Bots - 9 Replies
sry wenn ich frage aber wie ist der befhel für maustaste links gedrückt halten ?? Schonmal danke im vorraus Mfg Masternightmare
Selbst halten!
07/09/2005 - General Gaming Discussion - 2 Replies
Das ist ein Trick ... ka ob von KK gewollt ... das sich eine PA oder ein IMP selbst hält Beispiel: Apu hat 96 Psi ... die 2er Apu Pa brauch 100 Psi ... gibt aber gleichzeitig auch +4 Psi ... man nehme eine Droge die den Apu auf 100 Psi bringt ... zieht die Pa an und sie hällt sich selbst! wenn ihr dann ein Genrep uset ... ist sie nicht mehr aktiv ... nun lasst ihr einfach die Synaptic ablaufen und relogt ... und schwups habt ihr eure Pa wieder an :D Hoffentlich hilfts jmd ... ich...



All times are GMT +1. The time now is 22:24.


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.