Tombrun Leechfight

04/11/2013 00:51 NerDxx™#1
Hi Leute Ich hab hier ein Tombrun Script , der Leader macht das Tp und der Leecher soll rein gehen was und wo soll ich kopieren / einfügen ??

Leader Script;
Code:
// Tombrun script v1.0, Polish Sausage.
// What this script does:
// Teleports to each tomb in regular order(left to right), clears the tomb, TPs to town, then goes to next tomb.
// *If the bot gets stuck it will make a tp and go into the next tomb.
// At the end of the run, the bot clears the Canyon of the Magi.
// **At the moment this is only suitable for solo runs.


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

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

   NTA_Initialize();

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

   NTTMGR_TownManager();

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

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

   NTP_DoPrecast(true);

   
   
      if(!NTM_MoveToStair(me.areaid, 69))
      {
         NTC_SendMsgToScript("NTBotGame.ntj", "NTM_MoveToStair()");
         return;
      }

      if(!NTM_TakeStair(69))
      {
         NTC_SendMsgToScript("NTBotGame.ntj", "NTM_TakeStair()");
         return;
      }
      
      NTM_MakeTP();
      Delay(1000);
      Say("Tp is safe!");
      Delay(5000);
      
if(!NTA_ClearLevel())
   {
      NTC_SendMsgToScript("NTBotGame.ntj", "NTA_ClearLevel()");
      return;
   }
   
      Say("Next tomb.");
      NTM_MakeTP();
      NTM_UsePortal("BluePortal", 131);
      
   NTTMGR_TownManager();

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

   if(!NTM_TakeWaypoint(46))
   {
      NTC_SendMsgToScript("NTBotGame.ntj", "NTM_TakeWaypoint()");
      return;
   }
      
   if(!NTM_MoveToStair(me.areaid, 68))
      {
         NTC_SendMsgToScript("NTBotGame.ntj", "NTM_MoveToStair()");
         return;
      }

      if(!NTM_TakeStair(68))
      {
         NTC_SendMsgToScript("NTBotGame.ntj", "NTM_TakeStair()");
         return;
      }
      
      NTM_MakeTP();
      Delay(1000);
      Say("Tp is safe!");
      Delay(5000);

if(!NTA_ClearLevel())
   {
      NTC_SendMsgToScript("NTBotGame.ntj", "NTA_ClearLevel()");
      return;
   }
   
      Say("Next tomb.");
      NTM_MakeTP();
      NTM_UsePortal("BluePortal", 131);
      
   NTTMGR_TownManager();

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

   if(!NTM_TakeWaypoint(46))
   {
      NTC_SendMsgToScript("NTBotGame.ntj", "NTM_TakeWaypoint()");
      return;
   }
      
   if(!NTM_MoveToStair(me.areaid, 67))
      {
         NTC_SendMsgToScript("NTBotGame.ntj", "NTM_MoveToStair()");
         return;
      }

      if(!NTM_TakeStair(67))
      {
         NTC_SendMsgToScript("NTBotGame.ntj", "NTM_TakeStair()");
         return;
      }
      
      NTM_MakeTP();
      Delay(1000);
      Say("Tp is safe!");
      Delay(5000);
if(!NTA_ClearLevel())
   {
      NTC_SendMsgToScript("NTBotGame.ntj", "NTA_ClearLevel()");
      return;
   }
   
      Say("Next tomb.");
      NTM_MakeTP();
      NTM_UsePortal("BluePortal", 131);
      
   NTTMGR_TownManager();

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

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

   if(!NTM_MoveToStair(me.areaid, 66))
      {
         NTC_SendMsgToScript("NTBotGame.ntj", "NTM_MoveToStair()");
         return;
      }

      if(!NTM_TakeStair(66))
      {
         NTC_SendMsgToScript("NTBotGame.ntj", "NTM_TakeStair()");
         return;
      }
      
      NTM_MakeTP();
      Delay(1000);
      Say("Tp is safe!");
      Delay(5000);

if(!NTA_ClearLevel())
   {
      NTC_SendMsgToScript("NTBotGame.ntj", "NTA_ClearLevel()");
      return;
   }
   
      Say("Next tomb.");
      NTM_MakeTP();
      NTM_UsePortal("BluePortal", 131);
      
   NTTMGR_TownManager();

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

   if(!NTM_TakeWaypoint(46))
   {
      NTC_SendMsgToScript("NTBotGame.ntj", "NTM_TakeWaypoint()");
      return;
   }
   
   if(!NTM_MoveToStair(me.areaid, 70))
      {
         NTC_SendMsgToScript("NTBotGame.ntj", "NTM_MoveToStair()");
         return;
      }

      if(!NTM_TakeStair(70))
      {
         NTC_SendMsgToScript("NTBotGame.ntj", "NTM_TakeStair()");
         return;
      }
      
      NTM_MakeTP();
      Delay(1000);
      Say("Tp is safe!");
      Delay(5000);
if(!NTA_ClearLevel())
   {
      NTC_SendMsgToScript("NTBotGame.ntj", "NTA_ClearLevel()");
      return;
   }
   
      Say("Next tomb.");
      NTM_MakeTP();
      NTM_UsePortal("BluePortal", 131);
      
   NTTMGR_TownManager();

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

   if(!NTM_TakeWaypoint(46))
   {
      NTC_SendMsgToScript("NTBotGame.ntj", "NTM_TakeWaypoint()");
      return;
   }
   
   if(!NTM_MoveToStair(me.areaid, 71))
      {
         NTC_SendMsgToScript("NTBotGame.ntj", "NTM_MoveToStair()");
         return;
      }

      if(!NTM_TakeStair(71))
      {
         NTC_SendMsgToScript("NTBotGame.ntj", "NTM_TakeStair()");
         return;
      }
      
      NTM_MakeTP();
      Delay(1000);
      Say("Tp is safe!");
      Delay(5000);

if(!NTA_ClearLevel())
   {
      NTC_SendMsgToScript("NTBotGame.ntj", "NTA_ClearLevel()");
      return;
   }
   
      Say("Next tomb.");
      NTM_MakeTP();
      NTM_UsePortal("BluePortal", 131);
      
   NTTMGR_TownManager();

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

   if(!NTM_TakeWaypoint(46))
   {
      NTC_SendMsgToScript("NTBotGame.ntj", "NTM_TakeWaypoint()");
      return;
   }
   
   if(!NTM_MoveToStair(me.areaid, 72))
      {
         NTC_SendMsgToScript("NTBotGame.ntj", "NTM_MoveToStair()");
         return;
      }

      if(!NTM_TakeStair(72))
      {
         NTC_SendMsgToScript("NTBotGame.ntj", "NTM_TakeStair()");
         return;
      }
      
      NTM_MakeTP();
      Delay(1000);
      Say("Tp is safe!");
      Delay(5000);

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

   NTC_SendMsgToScript("NTBotGame.ntj", "SCRIPT_END");
}
Leecher Scipt;
Code:
// Tombrun script v1.0, Polish Sausage.
// What this script does:
// Teleports to each tomb in regular order(left to right), clears the tomb, TPs to town, then goes to next tomb.
// *If the bot gets stuck it will make a tp and go into the next tomb.
// At the end of the run, the bot clears the Canyon of the Magi.
// **At the moment this is only suitable for solo runs.

   var _AllowedToEnterTP = false;

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

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

   NTA_Initialize();

   RegisterEvent(EVENT_GAMEMSG, NT_GameMsgEvents);
   var _leader = "Rus_HaMMerDiN";

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

   NTTMGR_TownManager();

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

  NTTM_TownMove("portalspot");

   for(i = 0; i <= 200; i++) 
   {
                                          if(NTC_InMyParty(NTConfig_Leader))
			break;
		
		if(!NTConfig_Leader)
		{
			_portal = NTM_FindPortalAreaInt(131, 0);
			
			if(_portal != -1)
			{
				_owner = _portal.GetParent();
				
				if(_owner && !NTC_InMyParty(_owner))
					NTConfig_Leader = _owner;
			}
		}

		NTC_Delay(200);
	}
	
	if(MWConfig_EnterUnsafeTP)
		_AllowedToEnterTP = true;

	while(NTC_InTown() && NTC_InMyParty(NTConfig_Leader))
	{
		if(_AllowedToEnterTP)
			NTM_UsePortal("BluePortal", 131, NTConfig_Leader);
			
		NTC_Delay(500);
	}
	

if(!NTA_ClearLevel())
   {
      NTC_SendMsgToScript("NTBotGame.ntj", "NTA_ClearLevel()");
      return;
   }
   
      NTM_UsePortal("BluePortal", 131);
      
   NTTM_TownMove("portalspot");

   for(i = 0; i <= 200; i++) 
   {
                                          if(NTC_InMyParty(NTConfig_Leader))
			break;
		
		if(!NTConfig_Leader)
		{
			_portal = NTM_FindPortalAreaInt(131, 0);
			
			if(_portal != -1)
			{
				_owner = _portal.GetParent();
				
				if(_owner && !NTC_InMyParty(_owner))
					NTConfig_Leader = _owner;
			}
		}

		NTC_Delay(200);
	}
	
	if(MWConfig_EnterUnsafeTP)
		_AllowedToEnterTP = true;

	while(NTC_InTown() && NTC_InMyParty(NTConfig_Leader))
	{
		if(_AllowedToEnterTP)
			NTM_UsePortal("BluePortal", 131, NTConfig_Leader);
			
		NTC_Delay(500);
	}

if(!NTA_ClearLevel())
   {
      NTC_SendMsgToScript("NTBotGame.ntj", "NTA_ClearLevel()");
      return;
   }
   
      NTM_UsePortal("BluePortal", 131);
      
   NTTM_TownMove("portalspot");

   for(i = 0; i <= 200; i++) 
   {
                                          if(NTC_InMyParty(NTConfig_Leader))
			break;
		
		if(!NTConfig_Leader)
		{
			_portal = NTM_FindPortalAreaInt(131, 0);
			
			if(_portal != -1)
			{
				_owner = _portal.GetParent();
				
				if(_owner && !NTC_InMyParty(_owner))
					NTConfig_Leader = _owner;
			}
		}

		NTC_Delay(200);
	}
	
	if(MWConfig_EnterUnsafeTP)
		_AllowedToEnterTP = true;

	while(NTC_InTown() && NTC_InMyParty(NTConfig_Leader))
	{
		if(_AllowedToEnterTP)
			NTM_UsePortal("BluePortal", 131, NTConfig_Leader);
			
		NTC_Delay(500);
	}

      NTM_UsePortal("BluePortal", 131);
      
   NTTM_TownMove("portalspot");

   for(i = 0; i <= 200; i++) 
   {
                                          if(NTC_InMyParty(NTConfig_Leader))
			break;
		
		if(!NTConfig_Leader)
		{
			_portal = NTM_FindPortalAreaInt(131, 0);
			
			if(_portal != -1)
			{
				_owner = _portal.GetParent();
				
				if(_owner && !NTC_InMyParty(_owner))
					NTConfig_Leader = _owner;
			}
		}

		NTC_Delay(200);
	}
	
	if(MWConfig_EnterUnsafeTP)
		_AllowedToEnterTP = true;

	while(NTC_InTown() && NTC_InMyParty(NTConfig_Leader))
	{
		if(_AllowedToEnterTP)
			NTM_UsePortal("BluePortal", 131, NTConfig_Leader);
			
		NTC_Delay(500);
	}

if(!NTA_ClearLevel())
   {
      NTC_SendMsgToScript("NTBotGame.ntj", "NTA_ClearLevel()");
      return;
   }
   
      NTM_UsePortal("BluePortal", 131);
      
   NTTM_TownMove("portalspot");

   for(i = 0; i <= 200; i++) 
   {
                                          if(NTC_InMyParty(NTConfig_Leader))
			break;
		
		if(!NTConfig_Leader)
		{
			_portal = NTM_FindPortalAreaInt(131, 0);
			
			if(_portal != -1)
			{
				_owner = _portal.GetParent();
				
				if(_owner && !NTC_InMyParty(_owner))
					NTConfig_Leader = _owner;
			}
		}

		NTC_Delay(200);
	}
	
	if(MWConfig_EnterUnsafeTP)
		_AllowedToEnterTP = true;

	while(NTC_InTown() && NTC_InMyParty(NTConfig_Leader))
	{
		if(_AllowedToEnterTP)
			NTM_UsePortal("BluePortal", 131, NTConfig_Leader);
			
		NTC_Delay(500);
	}
      
if(!NTA_ClearLevel())
   {
      NTC_SendMsgToScript("NTBotGame.ntj", "NTA_ClearLevel()");
      return;
   }
   
      NTM_UsePortal("BluePortal", 131);
      
  NTTM_TownMove("portalspot");

   for(i = 0; i <= 200; i++) 
   {
                                          if(NTC_InMyParty(NTConfig_Leader))
			break;
		
		if(!NTConfig_Leader)
		{
			_portal = NTM_FindPortalAreaInt(131, 0);
			
			if(_portal != -1)
			{
				_owner = _portal.GetParent();
				
				if(_owner && !NTC_InMyParty(_owner))
					NTConfig_Leader = _owner;
			}
		}

		NTC_Delay(200);
	}
	
	if(MWConfig_EnterUnsafeTP)
		_AllowedToEnterTP = true;

	while(NTC_InTown() && NTC_InMyParty(NTConfig_Leader))
	{
		if(_AllowedToEnterTP)
			NTM_UsePortal("BluePortal", 131, NTConfig_Leader);
			
		NTC_Delay(500);
	}

if(!NTA_ClearLevel())
   {
      NTC_SendMsgToScript("NTBotGame.ntj", "NTA_ClearLevel()");
      return;
   }
   
      NTM_UsePortal("BluePortal", 131);
      
   NTTM_TownMove("portalspot");

   for(i = 0; i <= 200; i++) 
   {
                                          if(NTC_InMyParty(NTConfig_Leader))
			break;
		
		if(!NTConfig_Leader)
		{
			_portal = NTM_FindPortalAreaInt(131, 0);
			
			if(_portal != -1)
			{
				_owner = _portal.GetParent();
				
				if(_owner && !NTC_InMyParty(_owner))
					NTConfig_Leader = _owner;
			}
		}

		NTC_Delay(200);
	}
	
	if(MWConfig_EnterUnsafeTP)
		_AllowedToEnterTP = true;

	while(NTC_InTown() && NTC_InMyParty(NTConfig_Leader))
	{
		if(_AllowedToEnterTP)
			NTM_UsePortal("BluePortal", 131, NTConfig_Leader);
			
		NTC_Delay(500);
	}

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

function NT_GameMsgEvents(msg, type)
{
	var _msg = msg.toLowerCase();
	
	if(type == 0 && _msg.indexOf(NTConfig_Leader.toLowerCase()) > -1 && MWConfig_Announcements.BaalTpSafe && _msg.indexOf(MWConfig_Announcements.BaalTpSafe.toLowerCase()) > -1)
		_AllowedToEnterTP = true;
}

Quelle; [Only registered and activated users can see links. Click Here To Register...]


Zurzeit bin ich so weit gekommen,
Der Leader Teleportiert sich zu den Tombs,
Der Leecher wartet in der Stadt auf die ``Tp is safe!´´ Nachricht
Der Leader sagt ``TP is safe!´´
Der Leecher geht durch das Leader Portal und fängt an zu Kämpfen.

Jetzt Möchte ich das wenn der Leader sagt ´´Next Tomb!´´ das der Leecher ein Portal aufmacht und durch das portal geht, wie stelle ich das an?
04/12/2013 19:51 Muddy Waters#2
Was genau willst du am Ende erreichen? Ich wäre mir nämlich nicht sicher, dass das, was du willst, überhaupt umsetzbar ist.

P.S.: Das hier aufgeführte Script ist extrem redundant und nichtmal anständig eingerückt - für mich ist das keine Basis, um irgendwas darauf aufzubauen.
04/16/2013 15:19 Gt-Kingz#3
Quote:
Originally Posted by NerDxx™ View Post
Was bringt es die Dateiendung zu ändern ist doch egal ob .ntj oder .ntl !!!??
Kapier ich nicht wie das meine Fragen beantworten soll.
Ich möchte das Script bearbeiten nicht einbinden....
Vergiss den Post, habe deinen Post nur halb gelesen, mein Fehler.
04/17/2013 23:09 Muddy Waters#4
Quote:
Originally Posted by NerDxx™ View Post
Am Ende möchte ich ein leechfight script für tombruns haben.
Die Leecher brauchen aber Teleport, solange das erfüllt ist, kann das funktionieren, ist aber trotzdem nicht so einfach, weil die Reihenfolge, wie die verschiednen Räume der Karte gesäubert werden, bei einem einfachen Aufruf von NTA_ClearLevel() zwischen Leader und Leecher verschieden sind.

Quote:
Originally Posted by NerDxx™ View Post
wenn der leader sagt ´´next tomb´´ soll der leecher zur stadt gehen

Leader;
Code:
Say("Next tomb.");
Leecher;
Code:
NTM_MakeTP();
NTM_UsePortal("BluePortal", 131);
Wenn du in die Stadt willst, mach es wie folgt:
Code:
NTTM_CheckAct();
Ist nicht nur kürzer, der Bot sucht dabei auch nach in der Nähe befindlichen Portalen oder Wegpunkten und benutzt diese, sofern vorhanden.

Quote:
Originally Posted by NerDxx™ View Post
wie sieht das dann aus??

Villeicht???
In der MWConfig_GlobalSettings.Ntl
Code:
MWConfig_Announcements.TombNt = "next tomb";
MWConfig_Announcements.TombNt = "TP is safe!";
Den Schritt verstehe ich jetzt nicht, hier weist du derselben Eigenschaft direkt hintereinander verschiedene Werte zu - damit ist die erste Zeile eigentlich völlig überflüssig, da der Wert direkt in der nachfolgenden Zeile wieder überschrieben wird.

Quote:
Originally Posted by NerDxx™ View Post
und in der Tombleechfight.ntj
Code:
function NT_GameMsgEvents(msg, type) 
{ 
  

      if(type == 0) 
      { 
         if(msg.indexOf(_leader) != -1 && msg.indexOf("next tomb.") != -1) 
         {    
           
             NTM_UsePortal("BluePortal", 131, _leader); // 50 
         } 
      } 
      
}
und in der Tombleechfight.ntj
Code:
{
	var _msg = msg.toLowerCase();
	
	if(type == 0 && _msg.indexOf(NTConfig_Leader.toLowerCase()) > -1 && MWConfig_Announcements.TombTpSafe && _msg.indexOf(MWConfig_Announcements.TombTpSafe.toLowerCase()) > -1)
		_AllowedToEnterTP = true;
}
Das verstehe ich auch nicht so ganz. 131 ist die ID der Zielebene und müsste wenn mich nicht alles täuscht der Ebene "Throne of Destruction" entsprechen - das macht nun in Akt 2 nicht wirklich Sinn, natürlich wirst du dort nie ein Portal zu dieser Ebene finden.

Den Code Block danach verstehe ich auch nicht, MWConfig_Announcements.TombTpSafe ist nirgendwo definiert, jedenfalls nicht in den Auszügen hier.

Quote:
Originally Posted by NerDxx™ View Post
Wie stelle ich den ein das er mehrere nachrichten auslesen kann ?

So vielleicht?
Code:
{
	var _msg = msg.toLowerCase();
	
	if(type == 0 && _msg.indexOf(NTConfig_Leader.toLowerCase()) > -1 && MWConfig_Announcements.TombTpSafe && _msg.indexOf(MWConfig_Announcements.TombTpSafe.toLowerCase()) > -1)
		_AllowedToEnterTP = true;


	var _msg = msg.toLowerCase();
	
	if(type == 0 && _msg.indexOf(NTConfig_Leader.toLowerCase()) > -1 && MWConfig_Announcements.TombNt && _msg.indexOf(MWConfig_Announcements.TombNt.toLowerCase()) > -1)
		_AllowedToEnterTP = true;
}
Im Ansatz gar nicht schlecht, würde vermutlich sogar das machen, was du möchtest, ist aber unsauber, da redundant. Mit anderen Worten: Dein Code enthält unnötige Wiederholungen, die leicht vermieden werden könnten.

Der nachfolgende Code-Schnipsel macht das gleiche, ist aber deutlich kürzer und somit besser:
Code:
{
	var _msg = msg.toLowerCase();
	
	if(type == 0 && _msg.indexOf(NTConfig_Leader.toLowerCase()) > -1 && 
	(MWConfig_Announcements.TombTpSafe && _msg.indexOf(MWConfig_Announcements.TombTpSafe.toLowerCase()) > -1
	|| MWConfig_Announcements.TombNt && _msg.indexOf(MWConfig_Announcements.TombNt.toLowerCase()) > -1))
		_AllowedToEnterTP = true;
}
04/21/2013 19:09 NerDxx™#5
Ein Problem gelöst kommen 2 neue -.- , falls ich das Scripts jemals ordentlich zum laufen bringe werde ich es hier im Forum posten,

Hätte da noch einige Fragen,

1. Ist es möglich das die Leecher dem Leader folgen zb so wie hier ; [Only registered and activated users can see links. Click Here To Register...]

nur mit kurzen Befehlen?
Code:
GetDistance(me, object)
2. Wie lautet der Befehl damit der Bot das nächste Script startet ??
zb in der Baal.ntj
Code:
Skip Baal
Start Next Script (Diablo.ntj)
04/23/2013 19:47 Muddy Waters#6
1. Nur mit kurzen Befehlen nicht wirklich, wenn du alle Fälle abdecken willst, wird das etwas komplizierter. Grundsätzlich möglich wäre es aber, jedenfalls wenn der Leecher über Teleport verfügt. Für kurze Distanzen arbeitest du hier mit Objekten der Klasse Unit, für längere Distanzen und ebenenübergreifend musst du auf Objekte der Klasse PlayerUnit zurückgreifen.
Welche Eigenschaften diese beiden Objekte haben, kannst du [Only registered and activated users can see links. Click Here To Register...] nachlesen.

2. Du sendest dazu aus dem gerade aktiven Botscript eine Nachricht an den übergeordneten Thread. Dieser stoppt daraufhin das laufende Script und startet das nächste eingetragene Script in einem neuen Thread.

Der Funktionsaufruf aus dem Botscript sieht wie folgt aus:
Code:
NTC_SendMsgToScript("MWBotGame.ntj", "SCRIPT_END");
Dabei ist "MWBotGame.ntj" der Name des Scripts, was als übergeordneter Thread läuft und "SCRIPT_END" die entsprechende Nachricht, die gesendet wird. Im übergeordneten Thread wird diese Nachricht dann in einem Event Handler ausgewertet.
04/24/2013 19:11 NerDxx™#7
So überspringt er das Aktuelle Script
Code:
NTC_SendMsgToScript("MWBotGame.ntj", "SCRIPT_END");
Wie bringe ich ihn dazu ein bestimmtes Script auszuführen, so zb???
Code:
NT_LoadConfig("NTBot/bots/NTCows.ntj");
04/25/2013 14:36 Muddy Waters#8
Code:
Load("NTBot/bots/NTCows.ntj");
Beachte aber, dass das entsprechende Script in einem neuen Thread ausgeführt sind. Dadurch ergibt sich auch ein komplett neuer Variablenkontext, das heißt alles was an Funktionen oder Variablen im Kontext eingebunden wurde, aus dem Load() aufgerufen wurde, ist in diesem neuen Kontext nicht definiert und muss mitunter erneut eingebunden werden.

Ich verstehe übrigens nicht direkt, wozu du das eigentlich genau brauchst; was du vorhast sollte sich problemlos in einem Thread bzw. Botscript erledigen lassen.
04/25/2013 15:35 NerDxx™#9
Quote:
Originally Posted by Muddy Waters View Post
Code:
Load("NTBot/bots/NTCows.ntj");
Beachte aber, dass das entsprechende Script in einem neuen Thread ausgeführt sind. Dadurch ergibt sich auch ein komplett neuer Variablenkontext, das heißt alles was an Funktionen oder Variablen im Kontext eingebunden wurde, aus dem Load() aufgerufen wurde, ist in diesem neuen Kontext nicht definiert und muss mitunter erneut eingebunden werden.

Ich verstehe übrigens nicht direkt, wozu du das eigentlich genau brauchst; was du vorhast sollte sich problemlos in einem Thread bzw. Botscript erledigen lassen.
Ich bin immer am basteln,
du kennst bestimmt noch das Problem wenn der Leecher crasht joint er dem Leader wieder nach, der Leecher startet das Script von neu zb zuerst Diablo und der Leader ist dann zb bei Baal deswegen soll der Leecher immer fragen wo der Leader ist und dann das Script starten wo der Leader grade ist.

Beispiel 1;


Beispiel 2;

Habe aber keine Ahnung wie ich das anstellen soll, der Bot soll seine Runs ausführen und gleichzeitig den Chat beobachten bzw scannen.
04/27/2013 01:22 Diablofarmer#10
Ich meine noch im Kopf zu haben, dass man grundsätzlich die Area.id vom Leader bzw. anderen Spielern auslesen kann. Siehe Baalruns-Leechscripts.
05/05/2013 15:39 NerDxx™#11
Quote:
Originally Posted by Diablofarmer View Post
Ich meine noch im Kopf zu haben, dass man grundsätzlich die Area.id vom Leader bzw. anderen Spielern auslesen kann. Siehe Baalruns-Leechscripts.
Jop hab ich gefunden,

bei var _leader zwischen die "" den Namen eures Leaderchars eintragen!
Code:
function NTMain()
{
   Include("libs/common/NTCommon.ntl");
   NTC_IncludeLibs();
   NTC_IncludeConfig("NTBot/char_configs");

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

   NTA_Initialize(); // 10

   var _leader = ""; // Der genaue Name des Leader-Chars - nicht der Name vom Account!!!
   
   if(!NTTM_CheckAct())
   {
      NTC_SendMsgToScript("NTBotGame.ntj", "NTTM_CheckAct()");
      return;
   }

  
 while(!NTC_InMyParty(_leader))
   {
   Delay(500);
   }
 
var questeract;   
 
 	var _Fuhrer;
    var _woisser;
_Fuhrer = GetPlayerUnit();
 
while(_Fuhrer.name != _leader)
                    {
_Fuhrer.GetNext();
Delay(5000);
_woisser = _Fuhrer.areaid;
}
 
while(NTC_InMyParty(_leader))
   {
 if(me.areaid == 1 || me.areaid == 40 || me.areaid == 75 || me.areaid == 103 || me.areaid == 109 && me.areaid != _woisser)
   {
   _Fuhrer = GetPlayerUnit();
 
while(_Fuhrer.name != _leader)
                    {
_Fuhrer.GetNext();
Delay(5000);
_woisser = _Fuhrer.areaid;
}

    if(_woisser <= 39)
            questeract = 1;
        else if(_woisser >= 40 && _woisser <= 74)
            questeract = 40;
        else if(_woisser >= 75 && _woisser <= 102)
            questeract = 75;
        else if(_woisser >=103 && _woisser <= 108)
            questeract = 103;
        else
            questeract = 109;
   
   if(me.areaid != questeract)
   {
   if(!NTTM_TownMove("waypoint"))
   {
      NTC_SendMsgToScript("NTBotGame.ntj", "NTTM_TownMove()");
      return;
   }

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

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

      Delay(200);
   }   

 if(me.areaid != _woisser)
 {
   while(me.areaid == 1 || me.areaid == 40 || me.areaid == 75 || me.areaid == 103 || me.areaid == 109)
   {
  
      NTM_UsePortal("BluePortal", "", _leader); // 50
      Delay(200);
      
   }
 }  
   NTP_DoPrecast(true);
   
   }

  else
   {
   
    while(me.areaid == _woisser)
   {
   _Fuhrer = GetPlayerUnit();
 
while(_Fuhrer.name != _leader)
                    {
_Fuhrer.GetNext();
Delay(50);
_woisser = _Fuhrer.areaid;
}
   
_Führer = NTC_FindUnit(NTC_UNIT_PLAYER, _leader)
NTC_Delay(10)

if(_Führer)
{



if(NTM_MoveTo(_Führer.areaid, _Führer.x+1, _Führer.y+1)) 
NTSI_PickItems();


}
      
   }
   NTM_MakeTP();
    NTM_UsePortal("BluePortal");
   }

}

   NTC_SendMsgToScript("NTBotGame.ntj", "SCRIPT_END");

}
Quelle; [Only registered and activated users can see links. Click Here To Register...]


Meine Frage wäre jetzt wie bringe ich den Char dazu das er mit Kämpft ?

Wozwischen muss ich das einfügen?
Code:
NTA_ClearPosition();
05/13/2013 19:09 psyduke#12
kurze frage:
wie sehr automatisiert musst du das haben?
muss das automatisch passieren ohne dass du was machst?

ansonsten habe ich mir einen etwas umständlich aber funktionierenden weg selbst gebastelt.

mein aktuell erreichter stand
leader joint >>>followers joinen>>> leader geht mit followern zum tp platz und stellt sie ab>>> leader geht in die tombs öffnet tp>>> follower kommen durchs tp und laufen mit.

wenn das für dich ok ist 3 befehle einzutippen ist das gut realisierbar. (geht dann auch ohne eni)

wenn hier jemand den leecher einfach nur dazu bringt zum tp platz in akt 2 selbst zu gehen bräuchte man nur noch einen befehl das game leaven in das leecherscript einbauen würde auch helfen
05/15/2013 00:10 NerDxx™#13
Quote:
Originally Posted by psyduke View Post
kurze frage:
wie sehr automatisiert musst du das haben?
muss das automatisch passieren ohne dass du was machst?

ansonsten habe ich mir einen etwas umständlich aber funktionierenden weg selbst gebastelt.

mein aktuell erreichter stand
leader joint >>>followers joinen>>> leader geht mit followern zum tp platz und stellt sie ab>>> leader geht in die tombs öffnet tp>>> follower kommen durchs tp und laufen mit.

wenn das für dich ok ist 3 befehle einzutippen ist das gut realisierbar. (geht dann auch ohne eni)

wenn hier jemand den leecher einfach nur dazu bringt zum tp platz in akt 2 selbst zu gehen bräuchte man nur noch einen befehl das game leaven in das leecherscript einbauen würde auch helfen
Welche 3 Befehle zeig mal das Script

das Script ist besser als das ich vorher gepostet habe [Only registered and activated users can see links. Click Here To Register...]

bei dem Script habe ich das Problem das die Leecher nicht hinterher kommen ( mit Teleport )
und wenn der Leader das Spiel verlässt bleiben die im Spiel ...
Ohne Teleport kann ich mir es nicht vorstellen außer der Leader kann auch nicht Teleportieren
05/17/2013 15:28 psyduke#14
ich erklärs mal ganz kurz

du brauchst automaton also redvex
du nutzt den follow entry point vom d2nt joinst aber auf dem redvex server
habe ein kaputtes hot ip search genommen als "bot" umd den zum warten im game zu bringen

dann musst du mit dem leader halt folllow chill und so sagen um die aktionen durchzuführen

dann brauchen die follower keine eni
laufen aber dem leader nach

die follower musst du dann leider per hand das game verlassen lassen alles andere geht schon automatisch .. ( also follower mit redvex auf einem kaputten script warten lassen)

kann auch die nötigen scripts hochladen ( also den hot ip search bot)
06/25/2013 13:10 Zambra#15
Hallo,
was muss ich ändern? Nutze (Muddys D2NT) und würde gerne das Tombrun script nutzen.
Bei mir bleibt mein Char aber in der Stadt stehen und macht nix... :-(
Was mache ich falsch?
LG Zambra