Moin,
nachdem ich (dank euch) jetzt auch seit einiger Zeit den D2NT erfolgreich laufen hab und ich heute mal ein wenig mit Scripten rumprobiert habe möchte ich euch mein bisheriges Ergebnis einmal vorstellen...
Was kann das Script bisher:
- Joint dem Leader hinterher (durch Nutzung der NTBotLeech.ntj vom BallLeechscript)
- Folgt dem Leader in den richtigen Akt
- wartet dort auf TP
- rennt dem Leader hinterher
- sammelt Zeug (entsprechend der PickIT)
- geht wieder in die Stad und wartet wenn es den Leader verliert
Probleme/Verbesserungswürdig:
- Kämpft nicht mit
- wenn der Leader z.B. zu weit vom TP weg ist öffnet der Bot TP zurück in die Stad, nimmt wieder das TP des Leaders -> sieht Leader nicht -> wieder TP inne Stad usw...
- wenn der Leader nur Tele nutzt kommt er nich hinterher
- Delay-Zeiten noch nicht Optimal
- Code generell noch Verbesserungswürdig
Es würde mich freuen wenn der ein oder andere das Script einfach mal testet, evtl. Verbesserungsvorschläge/Denkansätze gibt oder es gleich mit Überarbeitet XD
Installation:
Im Ordner bots ein neues script erstellen (z.B. NTFollow.ntj)
& folgenden Code einfügen:
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");
}
bei var _leader zwischen die "" den Namen eures Leaderchars eintragen!
in der D2NT\scripts\NTBotLeech.ntj (sollte man durch das BallLeech-Script schon haben)
Account & PW eintragen und diese als Einstiegspunkt im D2NTManager für den Followchar eintragen.
In die Config eures Followchars mit dem Eintrag
NTConfig_Script.push("NTFollow.ntj");das Script aktivieren (die restlichen deaktivieren)
Das war´s dann auch schon - sobald ihr im Game mit dem Leader nun ein TP öffnet sollte euch der Bot dadurch folgen und hinterherrennen.
Sobald er nicht mehr hinterherkommt geht er in die Stadt und mit einem neuen TP habt ihr ihn dann wieder bei euch!
Hoffe da sind nicht mehr zu arge Fehler drin & ihr könnt damit was Anfangen!
Ansonsten hier meckern und ich seh zu was ich machen kann XD
gruss, flusen