|
You last visited: Today at 21:12
Advertisement
Tombrun Leechfight
Discussion on Tombrun Leechfight within the Diablo 2 Programming forum part of the Diablo 2 category.
04/11/2013, 00:51
|
#1
|
elite*gold: 0
Join Date: Mar 2010
Posts: 559
Received Thanks: 71
|
Tombrun Leechfight
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;
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
|
#2
|
Administrator
elite*gold: 41364
Join Date: Jan 2010
Posts: 22,727
Received Thanks: 12,653
|
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
|
#3
|
elite*gold: 315
Join Date: Jul 2008
Posts: 3,284
Received Thanks: 1,133
|
Quote:
Originally Posted by NerDxx™
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
|
#4
|
Administrator
elite*gold: 41364
Join Date: Jan 2010
Posts: 22,727
Received Thanks: 12,653
|
Quote:
Originally Posted by NerDxx™
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™
wenn der leader sagt ´´next tomb´´ soll der leecher zur stadt gehen
Leader;
Leecher;
Code:
NTM_MakeTP();
NTM_UsePortal("BluePortal", 131);
|
Wenn du in die Stadt willst, mach es wie folgt:
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™
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™
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™
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
|
#5
|
elite*gold: 0
Join Date: Mar 2010
Posts: 559
Received Thanks: 71
|
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 ;
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
|
#6
|
Administrator
elite*gold: 41364
Join Date: Jan 2010
Posts: 22,727
Received Thanks: 12,653
|
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  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
|
#7
|
elite*gold: 0
Join Date: Mar 2010
Posts: 559
Received Thanks: 71
|
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
|
#8
|
Administrator
elite*gold: 41364
Join Date: Jan 2010
Posts: 22,727
Received Thanks: 12,653
|
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
|
#9
|
elite*gold: 0
Join Date: Mar 2010
Posts: 559
Received Thanks: 71
|
Quote:
Originally Posted by Muddy Waters
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;
Leecher;
Code:
var _leader = "Leader Name";
while(1)
{
Say("Where are you?");
Delay(1000);
RegisterEvent(EVENT_GAMEMSG, talk);
while(me.areaid == 1 && NTC_InMyParty(_leader))
Delay(1000);
function talk(msg, type)
{
if(type == 0 && msg.indexOf(_leader) != -1 && msg.indexOf("Cow!") != -1)
{
while(me.areaid == 1 && NTC_InMyParty(_leader))
{
Say("Open tp!");
}
}
}
RegisterEvent(EVENT_GAMEMSG, talk);
while(me.areaid == 1 && NTC_InMyParty(_leader))
Delay(1000);
function talk(msg, type)
{
if(type == 0 && msg.indexOf(_leader) != -1 && msg.indexOf("Tp is safe!") != -1)
{
while(me.areaid == 1 && NTC_InMyParty(_leader))
{
NTTM_TownMove("portalspot");
Delay(1000);
NTM_UsePortal("BluePortal", 38, _leader);
Delay(1000);
}
}
}
}
Leader;
Code:
var _spieler = "Spieler Name";
while(1)
{
RegisterEvent(EVENT_GAMEMSG, talk);
while(me.areaid == 1 && NTC_InMyParty(_spieler))
Delay(1000);
function talk(msg, type)
{
if(type == 0 && msg.indexOf(_spieler) != -1 && msg.indexOf("Where are you?") != -1)
{
while(me.areaid == 1 && NTC_InMyParty(_spieler))
{
Say("Cow!");
}
}
}
RegisterEvent(EVENT_GAMEMSG, talk);
while(me.areaid == 1 && NTC_InMyParty(_spieler))
Delay(1000);
function talk(msg, type)
{
if(type == 0 && msg.indexOf(_spieler) != -1 && msg.indexOf("Open tp!") != -1)
{
while(me.areaid == 1 && NTC_InMyParty(_spieler))
{
NTM_MakeTP();
Say("Tp is safe!");
Delay(5000)
}
}
}
}
Beispiel 2;
Leecher;
Code:
var _leader = "Leader Name";
while(1)
{
Say("Where are you?");
RegisterEvent(EVENT_GAMEMSG, talk);
while(me.areaid == 1 && NTC_InMyParty(_leader))
Delay(1000);
function talk(msg, type)
{
if(type == 0 && msg.indexOf(_leader) != -1 && msg.indexOf("Cow!") != -1)
{
while(me.areaid == 1 && NTC_InMyParty(_leader))
{
Load("NTBot/bots/NTCows.ntj");
}
}
}
}
Leader;
Code:
var _spieler = "Spieler Name";
while(1)
{
RegisterEvent(EVENT_GAMEMSG, talk);
while(me.areaid == 1 && NTC_InMyParty(_spieler))
Delay(1000);
function talk(msg, type)
{
if(type == 0 && msg.indexOf(_spieler) != -1 && msg.indexOf("Where are you?") != -1)
{
while(me.areaid == 1 && NTC_InMyParty(_spieler))
{
Say("Cow!");
}
}
}
}
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
|
#10
|
elite*gold: 0
Join Date: Sep 2009
Posts: 1,456
Received Thanks: 290
|
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
|
#11
|
elite*gold: 0
Join Date: Mar 2010
Posts: 559
Received Thanks: 71
|
Quote:
Originally Posted by Diablofarmer
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;
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
|
#12
|
elite*gold: 0
Join Date: May 2011
Posts: 272
Received Thanks: 28
|
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
|
#13
|
elite*gold: 0
Join Date: Mar 2010
Posts: 559
Received Thanks: 71
|
Quote:
Originally Posted by psyduke
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
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
|
#14
|
elite*gold: 0
Join Date: May 2011
Posts: 272
Received Thanks: 28
|
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
|
#15
|
elite*gold: 0
Join Date: Feb 2013
Posts: 2
Received Thanks: 0
|
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
|
|
|
 |
|
Similar Threads
|
Tristram Leechfight
04/10/2013 - Diablo 2 Programming - 0 Replies
Hallo Leute habe hier mal ein paar Leechfight Scripts,
Der Leecher geht zum Portalspot und wartet bis der Leader ein Tp macht und sagt ´´Tp is safe!´´
und der Leecher geht durchs blaue Portal und kämpft mit.
Wichtig ist noch den Leader anzugeben,
in der char config
MWConfig_Script.push(); NTConfig_Leader = "Leader Name";
|
Sternenlooper LeechFight Necro
01/06/2012 - Diablo 2 - 1 Replies
ich brauche ma hilfe, habe nen leechfight necro mit knochenspeer alles fein, ABER der macht immer nur 3-4 speer dann nimmt der den ganz normalen angriff rein schlägt einma in de luft un mache dann wieder blos 3-4 speer.
weis einer wie ich das hinbekommen damit der die ganze zeit speer spammt bis das monster tot ist?
danke schonmal im vorraus
mfg bwuz:bandit:
|
runs aussetzen (leechfight)
11/29/2011 - Diablo 2 - 5 Replies
hi leute
ich mache derzeit bei baalruns mit, die (leider) nur 2:30 min dauern...
deshalb gibts rd-probleme, ...
naja, ich würd gern n paar runs aussetzen, damit ich nicht so viele probleme bekomme. wie geht das?
könnt man z.b. den gamename überprüfen, und wenn das game
baal-x5 oder baal-x0 heißt, den bot pausieren lassen, sodass er erst wieder joint, wenn baal-x6 oder baal-x1 aufgemacht wird?
|
Suche baalbotter 24/7 for leechfight
04/09/2011 - Diablo 2 - 1 Replies
blizzard sorc 7k dmg
gute hilfe für wave 2
softcore ladder !!!
|
Baal leechfight bot
01/12/2011 - Diablo 2 - 2 Replies
gibts derzeit nen anständigen Leech-Fight Bot der mit redvex funzt?
andernfalls welcher taugt sonst was?
finde d2nt ziemlich beschissen, dauert zu lange bis er mein game joint, viel zu oft zu spät...
danke für die Hilfe :)
|
All times are GMT +1. The time now is 21:12.
|
|