|
You last visited: Today at 13:50
Advertisement
[Release] Muddy's D2NT
Discussion on [Release] Muddy's D2NT within the Diablo 2 Programming forum part of the Diablo 2 category.
07/23/2011, 15:42
|
#2611
|
Administrator
elite*gold: 41364
Join Date: Jan 2010
Posts: 22,727
Received Thanks: 12,652
|
Quote:
Originally Posted by fred9x9
Hallo zusammen.
Konnte das alte Problem, trotz Hilfen nicht lösen.
Classic Cs run. Soso leitet, Baba macht bo, folgt und kämft.
Soso läuft perfekt, ist ja auch Muddys Script.
Barb wartet in der Nähe auf öffnen der seals. Soso öffnet seal(s), Barb hinein in die Meute, bei allen seals mit der ähnlichen Routine.
Code:
for(n = 0 ; n < 20 ; n++)
{
NTC_Delay(200);
if(NTA_KillMonster(_monstername))
{
NTA_ClearPosition(50, true, 2);
NTSI_PickItems();
}
if(NTC_PutSkill(124, NTC_HAND_RIGHT))
NTC_PingDelay(1000);
}
return true;
Und das klappt oft nicht, da er wohl direkt den Boss sucht? Er rennt blind von Gegner zu Gegner, kämft nicht, bekommt laufend auf die Mütze.
Funktioniert nur, wenn zwischen Vizier, Deseis oder Infector und dem Barbaren nur wenige Mobs sind. So 2-3 schätze ich.
Wie kann ich diese 3 Routinen umschreiben, damit er schon auf dem Wege zum Boss kämpft ?
|
Das Problem ist aus meiner Sicht, dass dein Char sehr vermutlich versucht die optimale Angriffsposition anzusteuern und er erst dann, wenn diese erreicht ist, angreift. Sofern der Char Teleport verwendet, wäre das auch kein Problem, aber in Classic klappt das natürlich nicht.
Um das besser umzusetzen, müsste man entweder den kompletten Angriffsalgorithmus auf Classic optimieren, was ich für relativ aufwändig halte, oder aber man ruft NTA_ClearPosition() vorher auf. Da bei letzterer Funktion immer das nächstliegende Ziel angegriffen wird, sollte auch dies Abhilfe schaffen.
Das Problem ist eben nur, dass dabei besagter Boss eventuell als Kollateralschaden mit angegriffen wird, was dazu führen kann, dass dieser nicht mehr gefunden wird und somit zu einer Fehlermeldung führen kann.
Eine wirklich saubere Lösung ist das daher auch nicht, wobei wenn der Barb ohnehin nur als Unterstützung agiert, wäre es ja eventuell gar nicht wichtig, ob dieser den Boss tatsächlich erledigt. Wäre das in Ordnung, wenn der Barab sich nur um das säubern der Position kümmern und erstmal nicht bewusst den Boss angreift? Wenn die Position sauber ist, könnte man NTA_KillMonster() immernoch aufrufen, man sollte aber nur davon absehen, den Rückgabewert auszuwerten, da der Boss wie oben beschrieben schon erledigt sein könnte.
Quote:
Originally Posted by cobkillacalli
Hey Muddy, i keep getting this error message "Itemlog error: Filehandle is null!". I've tried to figure it out but nothing has seemed to work... When he picks up items it will only tell me the items he has sold and not what he has kept... Although when he finds uber keys and essences he will log those as kept in the manager... so if you could help me figure it out that would be great!
|
You most likely just lack a proper folder, as you have to create one manually. This is easily done by creating a copy of "../scripts/Logs/DEFAULT" and then renaming the copied folder according to your character's name.
Regarding the other messages: maybe your char just didn't find anything worth keeping yet.
Quote:
Originally Posted by muh999
Guten Morgen jetzt hab ich den fehler : <D2nt Error>C:\Flo\Desktop\Muddy's D2Nt\scripts\NTBot\MWBoTGame.ntj(57) : Syntax Error: invalid label
was bedeutet des nun schon wieder 
danke für eure hilfe
|
Hast du dort irgendetwas verändert?
Ich würde die Datei gerne mal sehen, bei mir steht dort nämlich lediglich eine Klassendefinition, die das Problem eigentlich nicht verursachen kann.
Quote:
Originally Posted by muh999
Danke Muddy für deine Hilfe klappt jetzt auch alles soweit nur noch eine frage wo kann man einstellen das der Bot die Guten Gegenstände behält in der truhe usw und die schlechteren verkauft für Gold ?
|
Was aufgehoben werden soll und was nicht, regelst du über deine Nip Files.
Um sicherzugehen, dass auch schlechte Items zum Verkauf aufgehoben werden, solltest du außerdem sicherstellen, dass die Variablen MWConfig_AlwaysSellTrashItems und MWConfig_PickUpMoneymakers, beide in der globalen Config, jeweils mit dem Wert true initialisiert werden.
Quote:
Originally Posted by mirkoregge
Wenn ich in der Pickit
Code:
[MaxQuantity] == 3 &&
nutze, zeigt mir der nip-check immer nen Fehler an. Kann ich den getrost ignorieren? So an sich läuft der Bot und sammelt auch nur maximal angegebene Stückzahl ein.
|
Ein wenig seltsam ist das schon, denn an sich wird dieser Ausdruck vor der weiteren Überprüfung entfernt, insofern sollte das eigentlich zu keinem Fehler führen. Bist du sicher, dass der Rest der Zeile in Ordnung ist? Könnte ich mal die Ausgabe des Nip Checks sehen?
LG
Muddy
|
|
|
07/23/2011, 16:38
|
#2612
|
elite*gold: 0
Join Date: Jun 2011
Posts: 28
Received Thanks: 15
|
hi all... again
so i came across this funny and **** annoying thing...
if you say in botgame a line full of characters like dots for example: "................................................. ......................." a bot crashes.
some idiots use it to crash a bot to pick an item before it does or dunno why really.
is there a way to mute anyone who joins a game automatically? i guess it would be a similar function to autoparty option.
|
|
|
07/23/2011, 16:54
|
#2613
|
elite*gold: 0
Join Date: Jul 2011
Posts: 27
Received Thanks: 0
|
itemlog error: filehandle is null!
Ok thats sounds like it may work. Now i copied and pasted it and put it back into logs right underneath where "DEFAULT" was and i also copied my character name as the title! Is this what i was suppose to do ?
|
|
|
07/23/2011, 16:54
|
#2614
|
elite*gold: 0
Join Date: Jul 2011
Posts: 43
Received Thanks: 0
|
Wo genau find ich die globale config ? hab schon alles durchsucht
|
|
|
07/23/2011, 17:34
|
#2615
|
Administrator
elite*gold: 41364
Join Date: Jan 2010
Posts: 22,727
Received Thanks: 12,652
|
Quote:
Originally Posted by tyrael_pl
hi all... again
so i came across this funny and damn annoying thing...
if you say in botgame a line full of characters like dots for example: "................................................. ......................." a bot crashes.
some idiots use it to crash a bot to pick an item before it does or dunno why really.
is there a way to mute anyone who joins a game automatically? i guess it would be a similar function to autoparty option.
|
No, you gonna need an external (RedVex) tool in order to mute other players. The problem is that there is no function that would enable us to press the mute button. As this is the only way to mute other players since battle net commands for muting do not work this problem cannot be solved by solely using D2NT.
Quote:
Originally Posted by cobkillacalli
Ok thats sounds like it may work. Now i copied and pasted it and put it back into logs right underneath where "DEFAULT" was and i also copied my character name as the title! Is this what i was suppose to do ?
|
Yeah exactly, just rename the copy according to your char name, so if your char's name was "FunnyPala" the folder should be called "FunnyPala" as well.
Quote:
Originally Posted by muh999
Wo genau find ich die globale config ? hab schon alles durchsucht
|
MWConfig_GlobalSettings.ntl im Ordner char_configs.
LG
Muddy
|
|
|
07/23/2011, 17:47
|
#2616
|
elite*gold: 0
Join Date: Jul 2011
Posts: 43
Received Thanks: 0
|
Da gibts bei mir nur eine NTconfig aber nix von Global
|
|
|
07/23/2011, 17:49
|
#2617
|
elite*gold: 0
Join Date: Jun 2011
Posts: 28
Received Thanks: 15
|
Quote:
Originally Posted by Muddy_Waters
No, you gonna need an external (RedVex) tool in order to mute other players. The problem is that there is no function that would enable us to press the mute button. As this is the only way to mute other players since battle net commands for muting do not work this problem cannot be solved by solely using D2NT.
LG
Muddy
|
pity  do you have any idea how to get rid of such crashing fags? or maybe there is a way to eliminate the cause of crash when full line appears?
are you aware of such a bug? i eliminated part of the problem with whispering shop bots using "Say("/o igw");" and i even made it an on/off option:
Code:
if(JustJoined)
{
JustJoined = false;
[COLOR="Red"] [B]if(IgnoreNonFriends)
{
SetStatusText("ÿc8Ignoring Non Friends");
Say("/o igw");
Delay(500);
}[/B][/COLOR]
if(MW_IsChannelUser())
_output = "ÿc2Chat actions enabled!";
else
_output = "ÿc1Chat actions disabled!";
for(var i = 0; i < 3; i++)
{
SetStatusText(_output);
Delay(500);
SetStatusText("");
Delay(500);
}
}
so that it is independent of channel announcement (cos i have 2 bt running, public hdin and priv sorc and only one needs to channel announce but both join channel and both are vulnerable to shop bot whisp spam.
|
|
|
07/23/2011, 17:54
|
#2618
|
Administrator
elite*gold: 41364
Join Date: Jan 2010
Posts: 22,727
Received Thanks: 12,652
|
Quote:
Originally Posted by muh999
Da gibts bei mir nur eine NTconfig aber nix von Global 
|
In dem Fall verwendest du wohl nicht die aktuelle Version, die besagte Config wurde mit dem letzten Update eingeführt.
Quote:
Originally Posted by tyrael_pl
pity  do you have any idea how to get rid of such crashing fags? or maybe there is a way to eliminate the cause of crash when full line appears?
are you aware of such a bug? i eliminated part of the problem with whispering shop bots using "Say("/o igw");" and i even made it an on/off option:
Code:
if(JustJoined)
{
JustJoined = false;
[B] if(IgnoreNonFriends)
{
SetStatusText("ÿc8Ignoring Non Friends");
Say("/o igw");
Delay(500);
}[/B]
if(MW_IsChannelUser())
_output = "ÿc2Chat actions enabled!";
else
_output = "ÿc1Chat actions disabled!";
for(var i = 0; i < 3; i++)
{
SetStatusText(_output);
Delay(500);
SetStatusText("");
Delay(500);
}
}
so that it is independent of channel announcement (cos i have 2 bt running, public hdin and priv sorc and only one needs to channel announce but both join channel and both are vulnerable to shop bot whisp spam.
|
Still, the cause of this error is internal and thus cannot be changed. Only solution is using a RedVex plugin such as Condom or Hyperspamblock that will prevent D2NT from even receiving a message.
Kind Regards
Muddy
|
|
|
07/23/2011, 17:57
|
#2619
|
elite*gold: 0
Join Date: Jul 2011
Posts: 43
Received Thanks: 0
|
ist die Muddy's D2NT v1.13 nicht die neuste?
und voher bekomm ich dann die neuste zum downloaden?^^
|
|
|
07/23/2011, 18:05
|
#2620
|
elite*gold: 0
Join Date: May 2010
Posts: 212
Received Thanks: 40
|
Quote:
Originally Posted by Muddy_Waters
Das Problem ist aus meiner Sicht, dass dein Char sehr vermutlich versucht die optimale Angriffsposition anzusteuern und er erst dann, wenn diese erreicht ist, angreift. Sofern der Char Teleport verwendet, wäre das auch kein Problem, aber in Classic klappt das natürlich nicht.
Um das besser umzusetzen, müsste man entweder den kompletten Angriffsalgorithmus auf Classic optimieren, was ich für relativ aufwändig halte, oder aber man ruft NTA_ClearPosition() vorher auf. Da bei letzterer Funktion immer das nächstliegende Ziel angegriffen wird, sollte auch dies Abhilfe schaffen.
Das Problem ist eben nur, dass dabei besagter Boss eventuell als Kollateralschaden mit angegriffen wird, was dazu führen kann, dass dieser nicht mehr gefunden wird und somit zu einer Fehlermeldung führen kann.
Eine wirklich saubere Lösung ist das daher auch nicht, wobei wenn der Barb ohnehin nur als Unterstützung agiert, wäre es ja eventuell gar nicht wichtig, ob dieser den Boss tatsächlich erledigt. Wäre das in Ordnung, wenn der Barab sich nur um das säubern der Position kümmern und erstmal nicht bewusst den Boss angreift? Wenn die Position sauber ist, könnte man NTA_KillMonster() immernoch aufrufen, man sollte aber nur davon absehen, den Rückgabewert auszuwerten, da der Boss wie oben beschrieben schon erledigt sein könnte.
|
Danke für deinen Vorrat an Geistesblitzen. 
Du sieht es bestimmt genau richtig. Dem Barb kann es egal sein ob Boss tot, Hauptsache ist, er killt den Mob und ihn. DeSeis und Infector sind nun mal die Schwachstellen für meine Soso, wenn c/f immun.
Natürlich wäre es in Ordnung, wenn der Boss sich erst um den Mob und dann um den Boss kümmert. 
Anbei mal meine NTDiablofollow.ntj. Aber bitte nicht allzu arg über den Müll schimpfen bitte.
Code:
//Von ???
//Spielbar gemacht fuer Fussgaenger spez. in Classic,
//und Bo am Wp geben
//durch
//letzte Aenderung 6.7.2011
function NTMain()
{
Include("libs/common/NTCommon.ntl");
NTC_IncludeLibs();
NTC_IncludeConfig("NTBot/char_configs");
NT_LoadConfig();
NTSI_LoadNIPFiles("NTBot/item_configs");
NTA_Initialize();
MWC_Initialize(); //ff
var _monsterCount, _attackpos; //ff
if(!NTTM_CheckAct())
{
NTC_SendMsgToScript("MWBotGame.ntj", "NTTM_CheckAct()");
return;
}
if(me.areaid != 103)
{
if(!NTTM_TownMove("waypoint"))
{
NTC_SendMsgToScript("MWBotGame.ntj", "NTTM_TownMove()");
return;
}
if(!NTM_TakeWaypoint(103))
{
NTC_SendMsgToScript("MWBotGame.ntj", "NTM_TakeWaypoint()");
return;
}
}
NTTMGR_TownManager();
NTTM_TownMove("portalspot");
for(i = 0; i <= 100; i++)
{
if(NTC_InMyParty(NTConfig_Leader))
break;
Delay(200);
}
while(me.areaid == 103 && NTC_InMyParty(NTConfig_Leader))
{
if(NT_GetLeader(NTConfig_Leader).areaid >= 129)
{
NTC_SendMsgToScript("MWBotGame.ntj", "SCRIPT_END");
return;
}
//ff ab hier when i am a bobarb
Say("Wp for bo")
NTM_TakeWaypoint(107);
NTP_DoPrecast(true);
NTM_TakeWaypoint(103);
//ff bis hier
NTM_UsePortal("BluePortal", 108, NTConfig_Leader); // 50
Delay(500); //ff 1000
}
NTP_DoPrecast(true);
NTA_ClearPosition(5, true); //10
NTM_MoveTo(me.areaid, 7792, 5291, 0, true);
NTA_ClearPosition(5, true); //10
NTM_MoveTo(me.areaid, 7792, 5291, 0, true);
NTA_ClearPosition(5, true);
if(!NT_OpenSealsInt())
{
NTC_SendMsgToScript("MWBotGame.ntj", "NT_OpenSealsInt()");
return;
}
if(NTConfig_PublicMode)
Say(NTConfig_KillDiaMsg);
NTM_MoveTo(me.areaid, 7792, 5292, 0, true);
NTP_DoPrecast(true);
NTC_FindUnit(NTC_UNIT_MONSTER, 243, 100);
NTA_KillMonster(243);
NTSI_PickItems();
Say(NTConfig_DiaNxtGame);
NTC_SendMsgToScript("MWBotGame.ntj", "DIA_KILL");
NTC_SendMsgToScript("MWBotGame.ntj", "SCRIPT_END");
}
// Internal function
function NT_OpenSealsInt()
{
var i, _unit;
var _result;
_unit = GetPresetUnits(me.areaid, NTC_UNIT_OBJECT);
if(!_unit)
return false;
_result = false;
for(i = 0 ; i < _unit.length ; i++)
{
if(_unit[i].id == 396)
{
if(_unit[i].roomy*5 + _unit[i].y == 5275)
_result = NT_OpenVizierSealInt(1);
else
_result = NT_OpenVizierSealInt(2);
break;
}
}
if(!_result)
return false;
NTA_ClearPosition(30, true, 2);
NTP_DoPrecast(false);
_result = false;
for(i = 0 ; i < _unit.length ; i++)
{
if(_unit[i].id == 394)
{
if(_unit[i].roomx*5 + _unit[i].x == 7773)
_result = NT_OpenDeSeisSealInt(1);
else
_result = NT_OpenDeSeisSealInt(2);
break;
}
}
if(!_result)
return false;
NTA_ClearPosition(30, true, 2);
NTP_DoPrecast(true);
_result = false;
for(i = 0 ; i < _unit.length ; i++)
{
if(_unit[i].id == 392)
{
if(_unit[i].roomx*5 + _unit[i].x == 7893)
_result = NT_OpenVenomSealInt(1);
else
_result = NT_OpenVenomSealInt(2);
break;
}
}
return _result;
}
function NT_OpenVizierSealInt(type)
{
var _monstername = GetLocaleString(2851);
var i, n;
var i, n;
var _attackpos = [7760, 5288, 7750, 5280, 7740, 5290, 7720, 5290, 7720, 5300]; //last [7770, 5288, 7792, 5291, 7740, 5280, 7720, 5280, 7720, 5300];
for(i = 0 ; i < _attackpos.length ; i += 2)
{
NTM_MoveTo(me.areaid, _attackpos[i], _attackpos[i+1], 0, true);
NTA_ClearPosition(10, true, 2); //ff 25
}
NTM_MoveTo(me.areaid, 7735, 5291, 0, true);
NTA_ClearPosition(40, true, 2);
for(i = 0 ; i < 3 ; i++)
{
if(type == 1) //ff ]
{
NTM_MoveTo(me.areaid, 7695, 5293, 0, true);
NTA_ClearPosition(5, true, 2);
NTM_MoveTo(me.areaid, 7668, 5310, 0, true);
//ff NTA_ClearPosition(5, true, 2);
NTM_MoveTo(me.areaid, 7668, 5293, 0, true);
//ff NTA_ClearPosition(5, true, 2);
NTM_MoveTo(me.areaid, 7668, 5276, 0, true);
//ff NTA_ClearPosition(5, true, 2);
NTM_MoveTo(me.areaid, 7668, 5310, 0, true);
NTM_MoveTo(me.areaid, 7676, 5294, 0, true);
NTA_ClearPosition(5, true, 2); //ff 10
if(me.classid == NTC_CHAR_CLASS_PALADIN)
NTM_MoveTo(me.areaid, 7678, 5292);
}
else //ff L
{
NTM_MoveTo(me.areaid, 7695, 5316, 0, true);
NTA_ClearPosition(5, true, 2);
NTM_MoveTo(me.areaid, 7664, 5307, 0, true);
//ff NTA_ClearPosition(5, true, 2);
NTM_MoveTo(me.areaid, 7656, 5292, 0, true); // 5286
//ff NTA_ClearPosition(5, true, 2);
NTM_MoveTo(me.areaid, 7660, 5308, 0, true);
NTM_MoveTo(me.areaid, 7695, 5316, 0, true);
NTA_ClearPosition(5, true, 2);
if(me.classid == NTC_CHAR_CLASS_PALADIN)
NTM_MoveTo(me.areaid, 7676, 5320);
}
for(n = 0 ; n < 10 ; n++)
{
NTC_Delay(200);
if(NTA_KillMonster(_monstername))
{
NTA_ClearPosition(20, true, 2); //ff 40
NTSI_PickItems();
NTM_MoveTo(me.areaid, 7720, 5300, 0, true); //ff 7710, 5320 besser zurück?
return NTM_MoveTo(me.areaid, 7792, 5291, 0, true);
}
}
}
return false;
}
function NT_OpenDeSeisSealInt(type)
{
var i, n;
var _monstername = GetLocaleString(2852);
var _attackpos = [7792, 5275, 7800, 5255, 7800, 5235, 7780, 5235, 7774, 5214];
var _monstername = GetLocaleString(2852);
for(i = 0 ; i < _attackpos.length ; i += 2)
{
NTM_MoveTo(me.areaid, _attackpos[i], _attackpos[i+1], 0, true);
NTA_ClearPosition(10, true, 2);
}
NTM_MoveTo(me.areaid, 7790, 5244, 0, true);
NTA_ClearPosition(10, true, 2); //ff 20
for(i = 0 ; i < 3 ; i++)
{
if(type == 1) // links
{
NTM_MoveTo(me.areaid, 7766, 5194, 0, true);
NTA_ClearPosition(10, true, 2);
NTM_MoveTo(me.areaid, 7813, 5188, 0, true);
NTA_ClearPosition(10, true, 2);
NTM_MoveTo(me.areaid, 7809, 5155, 0, true);
NTA_ClearPosition(10, true, 2);
NTM_MoveTo(me.areaid, 7794, 5155, 0, true);
//ff NTA_ClearPosition(3, true, 2);
NTM_MoveTo(me.areaid, 7813, 5155, 0, true); // und zurück
NTM_MoveTo(me.areaid, 7813, 5188, 0, true);
NTM_MoveTo(me.areaid, 7768, 5194, 0, true);
if(me.classid == NTC_CHAR_CLASS_PALADIN)
NTM_MoveTo(me.areaid, 7768, 5199);
else
NTM_MoveTo(me.areaid, 7769, 5200, 0, true); //ff
}
else // rechts
{
NTM_MoveTo(me.areaid, 7810, 5225, 0, true);
NTA_ClearPosition(10, true, 2);
NTM_MoveTo(me.areaid, 7810, 5199, 0, true);
NTA_ClearPosition(10, true, 2);
NTM_MoveTo(me.areaid, 7773, 5193, 0, true);
NTA_ClearPosition(10, true, 2);
NTM_MoveTo(me.areaid, 7773, 5153, 0, true);
NTA_ClearPosition(10, true, 2);
NTM_MoveTo(me.areaid, 7807, 5153, 0, true); //
//ff NTA_ClearPosition(1, true, 2);
NTM_MoveTo(me.areaid, 7773, 5153, 0, true); //ff zurück
NTM_MoveTo(me.areaid, 7773, 5190, 0, true); //ff
if(me.classid == NTC_CHAR_CLASS_PALADIN)
NTM_MoveTo(me.areaid, 7773, 5178);
else
NTM_MoveTo(me.areaid, 7807, 5190, 0, true); //ff
}
for(n = 0 ; n < 10 ; n++)
{
NTC_Delay(200);
if(NTA_KillMonster(_monstername))
{
NTA_ClearPosition(80, true, 2); //ff 40
NTSI_PickItems();
NTM_MoveTo(me.areaid, 7810, 5235, 0, true); //ff wg stopp
NTP_DoPrecast(false);
return NTM_MoveTo(me.areaid, 7815, 5270, 0, true);
}
}
}
return false;
}
function NT_OpenVenomSealInt(type)
{
var i, n;
var _monstername = GetLocaleString(2853);
var _attackpos = [7835, 5280, 7835, 5300, 7855, 5300, 7855, 5280];
for(i = 0 ; i < _attackpos.length ; i += 2)
{
NTM_MoveTo(me.areaid, _attackpos[i], _attackpos[i+1], 0, true);
NTA_ClearPosition(15, true, 2);
}
NTM_MoveTo(me.areaid, 7843, 5292, 0, true);
NTA_ClearPosition(15, true, 2);
for(i = 0 ; i < 3 ; i++)
{
if(type == 1) // _ -
{
NTM_MoveTo(me.areaid, 7871, 5293, 0, true);
NTA_ClearPosition(10, true, 2);
NTM_MoveTo(me.areaid, 7893, 5307, 0, true);
NTA_ClearPosition(10, true, 2);
NTM_MoveTo(me.areaid, 7912, 5280, 0, true);
NTA_ClearPosition(10, true, 2);
NTM_MoveTo(me.areaid, 7931, 5293, 0, true);
NTA_ClearPosition(10, true, 2);
NTM_MoveTo(me.areaid, 7908, 5293, 0, true);
NTA_ClearPosition(20, true, 2);
if(me.classid == NTC_CHAR_CLASS_PALADIN)
NTM_MoveTo(me.areaid, 7892, 5298);
}
else // ]
{
NTM_MoveTo(me.areaid, 7893, 5274, 0, true);
NTA_ClearPosition(10, true, 2);
NTM_MoveTo(me.areaid, 7927, 5280, 0, true);
NTA_ClearPosition(10, true, 2);
NTM_MoveTo(me.areaid, 7930, 5308, 0, true);
NTA_ClearPosition(10, true, 2);
NTM_MoveTo(me.areaid, 7936, 5283, 0, true); // 7929, 5294
NTA_ClearPosition(20, true, 2);
if(me.classid == NTC_CHAR_CLASS_PALADIN)
NTM_MoveTo(me.areaid, 7927, 5275);
}
for(n = 0 ; n < 20 ; n++) //ff war 10. mal testen zu schnell
{
NTC_Delay(200);
if(NTA_KillMonster(_monstername))
{
NTA_ClearPosition(50, true, 2);
NTSI_PickItems();
}
if(NTC_PutSkill(124, NTC_HAND_RIGHT))
NTC_PingDelay(1000);
}
return true;
}
return false;
}
function NT_GetLeader(_name)
{
_player = GetPlayerUnit();
if(_player)
{
while(_player.GetNext())
{
if(_player.name == _name)
{ return _player; }
}
}
}
|
|
|
07/23/2011, 18:27
|
#2621
|
elite*gold: 0
Join Date: Jul 2011
Posts: 27
Received Thanks: 0
|
Ok i tried that and unfortunately it didn't work  the error is still poping up when i sell items, not sure what this is but i know that i have picked up items that are worth something and the bot kept them  do you have any other thoughts on the problem may be? Thanks for you help!!!
Edit:
Wait does my scripts need to be in my common log to put on item log manager???
|
|
|
07/23/2011, 20:25
|
#2622
|
elite*gold: 0
Join Date: Aug 2009
Posts: 435
Received Thanks: 159
|
Quote:
Originally Posted by Muddy_Waters
Also ich kann es ehrlich gesagt nicht ganz nachvollziehen, was dort falsch laufen könnte. Die Entry Points sind definitiv richtig?
|
hmm sicher bin ich mir da absolut nicht... wenn du mal Zeit hast könntest du ja vlt mal drübergucken
hier nochmal der Entrypoint, NTBotLeech.ntj
Code:
//###################################################################
//###########################Einstellungen###########################
//###################################################################
var LeaderAccountName = "zensiert";
var LeaderName = "zensiert";
var GamePassword = "";
var JoinGameAgain = false; // wenn der Bot nach chicken oder disconnect ins selbe Spiel nochmal gehen soll, auf true stellen
var UseCDKeyChangeTrick = true; // Wenn der LeechBot mehrere CD Keys nutzen soll, dann auf true stellen.
var JoinRandomChannel = false;
var JoinChannelInChat = "OP ePvPBaal";
var FirstJoinMessage = ""; // Soll der Leechbot etwas sagen, wenn er in den Chat kommt, dann hier eintragen
var ChatMessageAfterGame = ""; // Soll der Leechbot etwas sagen, wenn er aus dem Spiel kommt, dann hier eintragen
//###################################################################
//##############################Delays###############################
//###################################################################
var GameMinLength = 240000;
// realm delays (minutes)
var UnableToConnectRetry = 2;
var RealmDownRetry = 60;
var DisconnectedRetry = 2;
var CdKeyInUseRetry = 2;
// interface delays (milliseconds)
var ConnectingToBnetTimeout = 20000;
var CharacterScreenTimeout = 10000;
var PleaseWaitTimeout = 10000;
var CreateGameThreshold = 10000;
var CreateGameThresholdRandom = 1000;
var CreateGameTimeout = 15000;
var WaitInLineTimeout = 15000;
var CharacterSelectDelay = 1000;
var LoginDelay = 1000;
var ClickDelay = 500;
var TextDelay = 500;
var ClickDelayRandom = 500;
var TextDelayRandom = 500;
var GameDoesNotExistDelayMin = 600000;
var GameDoesNotExistDelayMax = 900000;
var GameDoesNotExistTimeout = 30000;
var WaitBeforeEnterChatMin = 1000;
var WaitBeforeEnterChatMax = 2000;
var WaitInChatBeforeActionsMin = 2000;
var WaitInChatBeforeActionsMax = 3000;
var UseFileBackupTimeMax = 30;
var GameAnnouncementDelayRandom = 500;
var GameAnnouncementDelay = 5000;
var GameAnnouncement = "Creating %game%counter in about %time seconds";
// Only for JoinBot (friend list delay, milliseconds)
var LeaderOfflineDelay = 30000;
var LeaderInChatDelay = 10000;
var GameIsFullDelay = 30000;
// Mule Settings
var UsePremadeMuleAccounts = false; // 'true' uses NTConfig_AutoMule.ntl, 'false' uses NTConfig_FullAuto.ntl
var JoinRetries = 5; // How many Attempts before giving up the Mule game?
var JoinRetryDelay = 55; // Seconds to wait between Retry Attempts
var TimeBeforeMuleGame = 3; // Minutes to wait before creating the MuleGame
var TimeAfterMule = 3; // Minutes to wait before logging back to Bot Account
//###################################################################
//###################################################################
//###############DO NOT CHANGE ANYTHING BELOW THIS###################
//###################################################################
//###################################################################
// AutoMule Variables and Stuff
var isMuling = false;
var preventRecover = false;
var isWaiting = false;
var MuleState = "notmuling";
var DGCurrentAcc = 0;
DGDebug = false;
// Creat New Account Variables
var createNewAccount = false;
var CharCreateNumber = -1;
var RegMail = "";
var muleFull = false;
var _NewAccName;
var _NewAccPW;
var AccPrefix;
var MuleAccSuffix;
var NewAccPW;
var DGNipFiles;
var UseNumbers;
var isLadder;
var isHC;
var isClassic;
var RandomNameLength;
var MuleGame;
var MuleGamePassword;
var DGMuleAccs;
var DGMulePws;
var DGNipFiles;
var MuleCharLocation;
// Auto Mule Variables
var JoinBug;
var NewCharBug = 0;
if (UsePremadeMuleAccounts)
Include("NTBot/mule_configs/NTConfig_AutoMule.ntl");
else
Include("NTBot/mule_configs/NTConfig_FullAuto.ntl");
NT_LoadMuleConfig();
Include("libs/common/NTMuleFunctions.ntl");
//D2NT Manager Command
const D2NT_MGR_LOADING = 1;
const D2NT_MGR_READY = 2;
const D2NT_MGR_LOGIN = 3;
const D2NT_MGR_CREATE_GAME = 4;
const D2NT_MGR_INGAME = 5;
const D2NT_MGR_RESTART = 6;
const D2NT_MGR_CHICKEN = 7;
const D2NT_MGR_PRINT_STATUS = 8;
const D2NT_MGR_PRINT_LOG = 9;
var LastGameMade = GetTickCount();
var LastGameStatus = 0;
var NextGameMake = 0;
var InGameAt = 0;
var LocationLoops = new Array(2);
var ChatActionsDone = false;
var LastGameFailed = false;
var SayChatMsgAfterGame = true;
var JoinedChannel = false;
var JustJoined = true;
var MadeAnnouncement = false;
Include("libs/controlInfo.ntl");
Include("libs/common/NTCommon.ntl");
// This is for recovering purpose, delete mulestate file is you get stuck
ReadMuleStats();
var ControlData = new controlInfo();
var SameGame = "";
var OldGame = "";
var Game = "";
var _gamename = "";
var _gamepassword = "";
var _leaderOfflineTick = -LeaderOfflineDelay;
var _leaderInChatTick = -LeaderInChatDelay;
var _GameIsFullTick = -GameIsFullDelay;
var Debug = false;
var JoinChatAfterGame = true;
function NTMain()
{
var _ingame;
Delay(1000);
_ingame = false;
ControlData.ClickDelay = ClickDelay;
ControlData.TextDelay = TextDelay;
ControlData.ClickDelayRandom = ClickDelayRandom;
ControlData.TextDelayRandom = TextDelayRandom;
RegisterEvent(EVENT_SCRIPTMSG, NT_MuleMsgEvents);
while(true)
{
if(me.ingame)
{
if(!InGameAt)
InGameAt = GetTickCount();
if(!_ingame)
{
if(isMuling)
{
if (DGDebug)
NTC_SendLogToOOG(NTC_LOG_COMMON, "[Debug] Joined Mule Game");
switch (MuleState)
{
case "notmuling": //Done or not yet started
// No... we really are not supposed to be here
isMuling = false;
ExitGame();
NTC_SendLogToOOG(NTC_LOG_COMMON, "AutoMule Error, try again.");
SetStatusText("ÿc1AutoMule Error... (Wait 60s)");
Delay(60000);
break;
case "mulestart": //Still on Bot Account
_Script = "NTBot/bots/NTPermGameandMule.ntj";
break;
case "mule": //Muleing
_Script = "NTBot/bots/NTPickStuff.ntj";
break;
case "mulefull": // Mule Full
_Script = "NTBot/bots/NTPickStuff.ntj";
break;
case "done": // Next Account
_Script = "NTBot/bots/NTPickStuff.ntj";
break;
case "recover": // Recovering
_Script = "NTBot/bots/NTRecover.ntj";
break;
default:
_Script = "NTBot/NTPermGameandMule.ntj";
break;
}
if (DGDebug)
NTC_SendLogToOOG(NTC_LOG_COMMON, "Debug: Load " + _Script);
if(Load(_Script))
{
_ingame = true;
JoinBug = 0;
MadeAnnouncement = false;
LocationLoops[1] = 0;
MW_WriteBackupFile();
if(me.playtype > 0)
NT_SendEventToOOG(D2NT_MGR_INGAME, "Currently in Mule Game", 0);
else
NT_SendEventToOOG(D2NT_MGR_INGAME, "Oops, that's not gonna work honey.", 0);
LastGameStatus = 2; // in game successful
}
}
else
{
RunGC(); // run garbage collector between each game
if(Load("NTBot/MWBotGame.ntj"))
{
_ingame = true;
MadeAnnouncement = false;
LocationLoops[1] = 0;
MW_WriteBackupFile();
if(me.playtype > 0)
NT_SendEventToOOG(D2NT_MGR_INGAME, "In Game [IP:" + me.gameserverip.split(".")[3] + "]", 0);
else
NT_SendEventToOOG(D2NT_MGR_INGAME, "In Game", 0);
LastGameStatus = 2; // in game successful
}
}
}
Delay(1000);
}
else
{
if (isWaiting)
{
Delay(1000);
}
else
{
if(_ingame)
{
_ingame = false;
NT_SendEventToOOG(D2NT_MGR_READY, "", 0);
}
if(isMuling)
DG_DoMuleNT_LocationAction()
else
NT_LocationAction(ControlData.getLocation());
Delay(500);
}
}
}
}
function NT_LocationAction(location)
{
var _randomChannel;
switch(location.id)
{
case 3: // Lobby Chat
NT_SendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name, 0);
if(!ChatActionsDone)
{
ChatActionsDone = true;
Delay(Random(WaitInChatBeforeActionsMin, WaitInChatBeforeActionsMax));
if(JoinRandomChannel || JoinChannelInChat != "")
{
SetStatusText("ÿc8Joining channel...");
Say("/join " + (JoinRandomChannel ? getRandomString(Random(3,10)) : JoinChannelInChat));
Delay(2000);
}
if(FirstJoinMessage)
{
Say(FirstJoinMessage);
Delay(1000);
}
}
if (SayChatMsgAfterGame == true)
{
if(ChatMessageAfterGame && OldGame != "")
Say(ChatMessageAfterGame);
SetStatusText("ÿc8Checking friendlist...");
Say("/f l");
SayChatMsgAfterGame = false;
Delay(1500);
}
Game = "";
if(chat = ControlData.get(ControlData.controls.lobby.chat.textBox.channelText))
{
var found_leader = false;
lines = chat.GetText();
for (var line_id = lines.length - 1; line_id > -1; line_id--)
{
if (found_leader) // useless... :/
break;
if (lines[line_id].substring(0,1) == " ")
continue;
// retrieving the whole message
var msg = lines[line_id].replace(/^\s+|\s+$/, "");
var msglines = 1;
while (lines[line_id+msglines] != undefined && lines[line_id+msglines].substring(0,2) == " ")
{
msg += " " + lines[line_id+msglines].replace(/^\s+|\s+$/, "");
msglines++;
}
// checking if the msg is a friendly whisper
if (msg.toLowerCase().lastIndexOf(LeaderName.toLowerCase() + " (*" + LeaderAccountName.toLowerCase() + ")") > -1)
{
var regGameNameWhispered=/^.*(game|partie|spiel|partita|partida).*(nomm[^\s]*|called|chiamata)\s*([\w\s-]*\w)\s*\.\s*$/gi;
if (msg.match(regGameNameWhispered))
Game = msg.replace(regGameNameWhispered, "$3");
if (Game != "")
{
found_leader = true;
break;
}
}
// checking if the msg is from the friend list
if (msg.toLowerCase().lastIndexOf(": " + LeaderAccountName.toLowerCase() + ",") > -1)
{
found_leader = true;
var regOffline=/^.*(offline|desconectado).*$/gi;
var regInChat=/^.*(channel|canale?)\s*([\w\s-]*\w)\.?\s*$/gi;
var regGameName=/^.*(game|partie|spiel|partita|partida)\s*([\w\s-]*\w)\s*\(priv[^\)]*\)\.\s*$/gi;
if (msg.match(regOffline))
SetStatusText("ÿc8Leader is currently offline.");
else if (msg.match(regInChat))
SetStatusText("ÿc8Waiting for leader to create a game.");
else if (msg.match(regGameName))
Game = msg.replace(regGameName, "$2");
break;
}
}
if (found_leader == false)
{
DebugInOOG("I couldn\'t find the leader in my friend list!");
SetStatusText("ÿc8Leader not found.");
}
if (Game != "")
{
DebugInOOG('Leader is in the game "' + Game + '"');
//ControlData.click(ControlData.controls.lobby.button.join);
//Delay(100);
if(!JoinGameAgain)
{
if (Game != SameGame)
{
SetStatusText("ÿc8Joining Game: " + Game);
if (UseCDKeyChangeTrick)
{
NT_SendEventToOOG(D2NT_MGR_CREATE_GAME, location.name, 0);
Delay(1000);
}
ControlData.click(ControlData.controls.lobby.button.join);
Delay (200);
}
else
SetStatusText("ÿc8Waiting for next game...");
}
else
{
SetStatusText("ÿc8Joining Game: " + Game);
if (UseCDKeyChangeTrick)
{
NT_SendEventToOOG(D2NT_MGR_CREATE_GAME, location.name, 0);
Delay(1000);
}
ControlData.click(ControlData.controls.lobby.button.join);
Delay (200);
}
}
}
else
{
DebugInOOG("I can\'t read the chat!");
}
if(Game != "")
SameGame = Game;
break;
case 1: // Lobby
if(location.id == 1 && JoinChatAfterGame)
{
Delay(Random(WaitBeforeEnterChatMin, WaitBeforeEnterChatMax));
ControlData.click(ControlData.controls.lobby.button.enterChat);
break;
}
break;
case 2: // Waiting In Line
if(GetTickCount()-LastGameMade > WaitInLineTimeout)
ControlData.click(ControlData.controls.lobby.inLine.button.cancel);
break;
case 4: // Create Game
if(!ControlData.get(ControlData.controls.lobby.create.editBox.gameName))
{
ControlData.click(ControlData.controls.lobby.button.join);
Delay (500);
ControlData.click(ControlData.controls.lobby.button.create);
Delay (500);
break;
}
NT_SendEventToOOG(D2NT_MGR_CREATE_GAME, location.name, 0);
NT_LocationTimeout(5000, location);
LastGameMade = GetTickCount();
LastGameStatus = 1; // pending creation
break;
case 5: // Join Game
if (Game)
{
ControlData.setText( ControlData.controls.lobby.join.editBox.gameName, Game);
Delay (100);
ControlData.setText( ControlData.controls.lobby.join.editBox.password, GamePassword);
Delay (100);
ControlData.click(ControlData.controls.lobby.join.button.joinGame);
RunGC(); // run garbage collector between each game
NT_LocationTimeout(5000, location);
LastGameStatus = 1; // pending join
}
else
{
DebugInOOG("No game to join : cancelling");
me.Cancel(1);
Delay(1000);
}
break;
case 6: // Ladder
break;
case 7: // Channel List
break;
case 8: // Main Menu
if(ControlData.getCurrentRealmIndex() == me.gatewayid)
{
NT_OutputGameLength();
ControlData.click(ControlData.gameTypes[me.playtype]);
}
else
ControlData.click(ControlData.controls.mainMenu.button.gateway);
break;
case 9: // Login
NT_SendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name, 0);
Delay(LoginDelay);
ControlData.setText(ControlData.controls.login.editBox.accountName, me.account);
NT_SendEventToOOG(D2NT_MGR_LOGIN, location.name, 0);
NT_LocationTimeout(5000, location);
break;
case 10: // Login Error (this is a fatal error, so stop)
NT_SendEventToOOG(D2NT_MGR_RESTART, location.name, 10);
Delay(3500);
break;
case 11: // Unable To Connect
MW_TimeoutDelay(UnableToConnectRetry*60*1000, location)
ControlData.click(ControlData.controls.login.unableToConnect.button.ok);
break;
case 12: // Character Select
var _time, _control;
NT_SendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name, 0);
for(_time = 0 ; _time < CharacterScreenTimeout ; _time += 500)
{
_control = ControlData.get(ControlData.controls.characterSelect.textBox.characterInfo[me.charloc]);
if(_control && _control.GetText() != undefined)
break;
Delay(500);
}
if(_time < CharacterScreenTimeout)
{
Delay(CharacterSelectDelay);
ControlData.click(ControlData.controls.characterSelect.textBox.characters[me.charloc], 0, 0, 1);
ControlData.click(ControlData.controls.characterSelect.textBox.characterInfo[me.charloc], 0, 0, 1);
// reset last game made, so it doesnt make a game immediately
InGameAt = 0;
NT_SetNextGameMake();
}
else
{
ControlData.click(ControlData.controls.characterSelect.button.exit);
MW_TimeoutDelay(RealmDownRetry*60*1000, location);
}
break;
case 13: // Realm Down - Character Select screen
ControlData.click(ControlData.controls.characterSelect.button.exit);
MW_TimeoutDelay(RealmDownRetry*60*1000, location);
break;
case 14: // Character Select - Disconnected
MW_TimeoutDelay(DisconnectedRetry*60*1000, location);
ControlData.click(ControlData.controls.characterSelect.disconnected.button.ok);
break;
case 15: // New Character
break;
case 16: // Character Select - Please Wait popup
if(!NT_LocationTimeout(PleaseWaitTimeout, location))
ControlData.click(ControlData.controls.characterSelect.pleaseWait.button.cancel);
break;
case 17: // Lobby - Lost Connection - just click okay, since we're toast anyway
ControlData.click(ControlData.controls.lobby.lostConnection.button.ok);
break;
case 18: // D2 Splash
ControlData.click(ControlData.controls.d2Splash.textBox.copyright);
break;
case 19: // Login - Cdkey In Use
MW_TimeoutDelay(CdKeyInUseRetry*60*1000, location);
ControlData.click(ControlData.controls.login.cdkeyInUse.button.ok);
break;
case 20: // Single Player - Select Difficulty
ControlData.click(ControlData.singlePlayerDifficulties[me.diff]);
break;
case 21: // Main Menu - Connecting
if(!NT_LocationTimeout(ConnectingToBnetTimeout, location))
ControlData.click(ControlData.controls.mainMenu.connecting.button.cancel);
break;
case 22: // Login - Invalid Cdkey (classic or xpac)
NT_SendEventToOOG(D2NT_MGR_RESTART, location.name, 3600);
Delay(3500);
break;
case 23: // Character Select - Connecting
if(!NT_LocationTimeout(CharacterScreenTimeout, location))
ControlData.click(ControlData.controls.characterSelect.button.exit);
break;
case 24: // Server Down - not much to do but wait..
break;
case 25: // Lobby - Please Wait
if(!NT_LocationTimeout(PleaseWaitTimeout, location))
ControlData.click(ControlData.controls.lobby.pleaseWait.button.cancel);
break;
case 26: // Lobby - Game Name Exists
NT_SendEventToOOG(D2NT_MGR_PRINT_LOG, "yE00000Game already exists", 0);
InGameAt = 0;
LastGameStatus = 0;
NT_SetNextGameMake();
NT_LocationTimeout(15000, location);
break;
case 27: // Gateway Select
ControlData.clickRealmEntry(me.gatewayid);
ControlData.click(ControlData.controls.gateway.button.ok);
break;
case 28: // Lobby - Game Does Not Exist
InGameAt = Random(GameDoesNotExistDelayMin, GameDoesNotExistDelayMax);
LastGameStatus = 0;
NT_SetNextGameMake();
NT_LocationTimeout(GameDoesNotExistTimeout, location);
break;
default:
DebugInOOG("Unhandled location : "+location.id);
break;
}
//DebugInOOG("Location : "+location.id);
}
function NT_SendEventToOOG(locationId, statusString, pendingTime)
{
return SendCopyData("D2NT Manager", null, (locationId<<16)|pendingTime, statusString);
}
function NT_SetNextGameMake()
{
LastGameMade = GetTickCount();
NextGameMake = LastGameMade + CreateGameThreshold + Random(0-CreateGameThresholdRandom, CreateGameThresholdRandom) + InGameAt;
InGameAt = 0;
ChatActionsDone = false;
}
function NT_OutputGameLength()
{
if(InGameAt)
{
duration = GetTickCount() - InGameAt;
InGameAt = (duration < GameMinLength ? GameMinLength - duration : 0);
}
}
function NT_LocationTimeout(time, location)
{
endtime = GetTickCount() + time;
while(ControlData.getLocation().id == location.id && endtime > GetTickCount())
{
NT_SendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name + " (" + parseInt((endtime-GetTickCount())/1000) + "s)", 0);
Delay(500);
}
return (ControlData.getLocation().id != location.id);
}
function MW_TimeoutDelay(time, location, showNextGameStatus)
{
var _gamename, _outputString, _timeString;
if(arguments.length < 3)
showNextGameStatus = false;
_endtime = GetTickCount() + time;
_gamename = me.gamename;
_timeString = "";
if(!_gamename)
{
_gamename = MW_ReadBackupFile(0);
if(_gamename)
SetStatusText("ÿc8Using File Backup...");
}
while(_endtime > GetTickCount())
{
_timeString = " [" + MWC_ConvertTicksToTimeString(_endtime - GetTickCount()) + "]";
NT_SendEventToOOG(D2NT_MGR_PRINT_STATUS, location.name + _timeString , 0);
if(showNextGameStatus)
{
if(LastGameFailed && parseInt(_endtime-GetTickCount()) > CreateGameThreshold && parseInt((_endtime-GetTickCount())/1000) % 30 >= 0 && parseInt((_endtime-GetTickCount())/1000) % 30 <= 5)
{
_outputString = "ÿc1Last game failed!";
_timeString = "";
}
else if(parseInt((_endtime-GetTickCount())/1000) >= 0)
{
if(_gamename && MW_GetGameCounter(_gamename, false))
_outputString = "ÿc8Next game: " + MW_GetGameName(_gamename) + MW_GetGameCounter(_gamename, false);
else
_outputString = "ÿc8Game creation pending... ";
}
MWC_SetStatusText(_outputString, _timeString);
if(me.ingame)
_endtime = GetTickCount();
}
Delay(1000);
}
if(showNextGameStatus)
SetStatusText("ÿc8Creating game...");
return;
}
function getRandomString(_length)
{
_retString = "";
_charSet = "0123456789abcdefghijklmnopqrstuvwxyz";
while(_length--)
{
_retString += _charSet.charAt(Random(0, _charSet.length-1));
Delay(1);
}
return _retString;
}
function DebugInOOG(logString)
{
if (Debug)
return SendCopyData("D2NT Manager", null, 9<<16, "-- Debug : " + logString);
else
return false;
}
function MW_GetGameName(lastGameString)
{
if(!lastGameString)
return "";
else
return lastGameString.substr(0, lastGameString.lastIndexOf('-') + 1);
}
function MW_GetGameCounter(lastGameString, simple)
{
var _count, _countString;
if(!lastGameString)
return "-1";
else
{
_countString = lastGameString.slice(lastGameString.lastIndexOf('-') + 1);
if(_countString[0] == '0')
_countString = _countString.substr(1);
_count = parseInt(_countString) + 1;
if(_count == 100)
_count = 0;
if(!simple)
{
if(_count <= 9)
return '0' + _count;
}
return _count;
}
}
function MW_IsChannelUser()
{
for(var i = 0; i < ChannelUsers.length; i++)
{
if(me.account.toLowerCase() == ChannelUsers[i].toLowerCase() || me.charname.toLowerCase() == ChannelUsers[i].toLowerCase())
return true;
}
return false;
}
function MW_ReadBackupFile(type)
{
var _fhandle, _buffer, _time, _now, _retValue;
_fhandle = FileOpen("/Logs/Temporary Data/" + me.charname + ".channel", 2);
_retValue = "";
_now = new Date();
if(_fhandle && _now)
{
_buffer = _fhandle.ReadLine();
if(_buffer)
{
_time = parseInt(_buffer);
if(_now.getTime() - _time < UseFileBackupTimeMax*6E4)
{
_retValue = _fhandle.ReadLine();
if(type > 0)
_retValue = _fhandle.ReadLine();
}
}
_fhandle.Close();
}
else if(_fhandle)
_fhandle.Close();
return _retValue;
}
function MW_WriteBackupFile()
{
var _fhandle, _now;
if(UseFileBackupTimeMax == 0)
return false;
_fhandle = FileOpen("/Logs/Temporary Data/" + me.charname + ".channel", 1);
_now = new Date();
if(_fhandle && _now)
{
_fhandle.WriteLine(_now.getTime());
_fhandle.WriteLine(me.gamename);
_fhandle.WriteLine(me.gamepassword);
_fhandle.Close();
return true;
}
else if(_fhandle)
_fhandle.Close();
return false;
}
function MW_CheckLocationLoops(location)
{
if(isLeecher)
MaximumLocationLoops = 900;
if(!location)
return false;
if(!LocationLoops[0] || location.id != LocationLoops[0].id)
{
LocationLoops[0] = location;
LocationLoops[1] = 0;
}
else if(LocationLoops[0].id != 5)
{
LocationLoops[1]++;
if(LocationLoops[1] >= MaximumLocationLoops)
{
if(LocationLoops[1] < 1000)
NT_NT_SendEventToOOG(D2NT_MGR_PRINT_LOG, "ÿBE0000Location Loop Restart!;ÿc1Location Loops: " + LocationLoops[1] + "\nÿBE0000Location: " + LocationLoops[0].name + "\nÿBE0000Location ID: " + LocationLoops[0].id, 0);
LocationLoops[1] = 1000; // Make sure the location loop notification is only shown once
NT_NT_SendEventToOOG(D2NT_MGR_RESTART, location.name, 0);
}
}
return true;
}
function MW_AnnounceGame()
{
var _gamePass, _gameName, _gameText, _delay;
_gameName = me.gamename;
if(!_gameName)
_gameName = MW_ReadBackupFile(0);
_gamePass = me.gamepassword;
if(!_gamePass)
_gamePass = MW_ReadBackupFile(1);
if(_gameName && !me.ingame)
{
_delay = (GameAnnouncementDelay > 5000) ? GameAnnouncementDelay : 5000;
_delay += (GameAnnouncementDelayRandom > 500) ? Random(0, GameAnnouncementDelayRandom) : 500;
_gameText = GameAnnouncement.replace("%password", ((_gamePass) ? _gamePass : "N/A"));
_gameText = _gameText.replace("%game", MW_GetGameName(_gameName));
_gameText = _gameText.replace("%counter", MW_GetGameCounter(_gameName, false));
_gameText = _gameText.replace("%time", parseInt((NextGameMake - GetTickCount() - _delay + ClickDelay + TextDelay) / 1000 + 5));
if(_gameText.indexOf("NaN") > -1)
return false;
if(parseInt((NextGameMake - GetTickCount() - _delay + ClickDelay + TextDelay) / 1000) > 3)
{
Delay(_delay);
return Say(_gameText);
}
}
return false;
}
|
|
|
07/23/2011, 23:07
|
#2623
|
elite*gold: 0
Join Date: Jul 2011
Posts: 10
Received Thanks: 0
|
hat sich vorerst erledigt, habs grad selber gelöst.
trotzdem danke für all diese arbeit und den support hier
|
|
|
07/24/2011, 13:19
|
#2624
|
elite*gold: 0
Join Date: Jul 2011
Posts: 7
Received Thanks: 1
|
Hallo epvp Community,
ich bin neu hier und nutze seit ca ein paar Tagen den Muddy D2NT Bot. Viele Probleme, konnte ich noch selbstständig lösen, jedoch scheitere ich gerade an einer meiner Meinung nach etwas einfacheren Aufgabe. Ich habe eine Light Sorc, die ihre MF Run zu 90% ohne chicken schafft. Jedoch würde ich mir wünschen, dass sie auch frozen Armor immer benutzt (da ich ich durch 1 skill point auf 13 komme), wenn es nötig ist. Deswegen habe ich in der Char config. bei NTConfig_AttackSkill[2] - also bei den untimed skill - jeweils MWS_FROZEN_ARMOR eingesetzt, jedoch nutzt sie es nie. Es als primary skill zu definieren, kann meiner Meinung nach auch nicht gut gehen. Ich wäre für jede Hilfe dankbar :-)
|
|
|
07/24/2011, 13:24
|
#2625
|
elite*gold: 0
Join Date: Jul 2011
Posts: 43
Received Thanks: 0
|
Guten tag ihr lieben 
hab mal eine frage wenn man Bot paar runs gemacht hat so ca. 40 kommt meistens ein Fehler irgendwas mit Halt blablabla und macht das spiel einfach aus kanns leider nicht ganz lesen weil es schon wieder so schnell weg ist. aber wenn ich dann paar min warte und es erneut versuche geht es wieder wodrann kann das liegen und wie kann man das unterbinden würde den halt auch ganz gerne nachts laufen lassen.
Hab jetzt den Fehler :
Halt
Location:, line#2245
Expression:Unrevocerable internal error 6fb422e5
was muss ich dagegen machen? jetzt kam er schon nach 3 runs
|
|
|
 |
|
Similar Threads
|
[Release] D2NT 3.1 1.13c
07/17/2016 - Diablo 2 - 91 Replies
hi,
hab eben den d2nt3.1 gefunden. ein neues baba script is dabei.
release thread eon
D2NT3.1
|
[Realease] Muddy's Waypoint Catcher
08/21/2013 - Diablo 2 Programming - 46 Replies
Moin zusammen,
hier mal die erste Release Version eines kleinen Scripts genannt Waypoint Catcher. Das ganze ist jetzt nichtmal 24h alt, dementsprechend sind vermutlich noch einige Bugs vorhanden. Hinweise dazu nehme ich gerne entgegen. ;)
Features:
- Suchen sämtlicher Wegpunkte mit Ausnahme, wobei in Akt ein durch Probleme im Jail Bereich nach dem Wegpunkt Outer Cloister abgebrochen wird
- Wahlweise auch mit TP an jedem gefundenen Wp, sodass man damit auch anderen (nicht-Bots) die...
|
[D2NT] Long Dia Release
05/10/2011 - Diablo 2 Programming - 28 Replies
Ein kleines Script für diablo, es startet beim eingang macht ein tp cleart den weg zum star macht am star noch ein tp dann läufts wie das normale nur cleart es schöner :)
hoffe euch gefällts ich habs noch nicht wirklich getestet (2-3 runs) bugs können gerne hier gepostet werden verbesserungs vorschläge auch :D
installation:
1.)Script in den Bot ordner kopieren
2.)Script im editor oder vergleichbaren öffnen
3.) Msg´s anpassen (ist nicht schwer)
4.) in der char config die zeile...
|
D2NT 3.0 Pickit release
10/22/2010 - Diablo 2 - 77 Replies
edit
|
Muddy's D2NT Help
07/29/2010 - Diablo 2 - 3 Replies
hi i just started to use the bot it work's great.
how do i set up the skill's i use on my Sorc and pick up itme's?
.....
if you reply to this post please use english
|
All times are GMT +1. The time now is 13:53.
|
|