[Release] Muddy's D2NT

04/30/2011 16:45 Gaterrrr#1621
Kann ich beim Gamble eigentlich einstellen, dass der Bot ausnahmslos alle Schuhe kaufen soll?

NTConfig_GambleItem.push(339); hat leider nicht den gewünschten Effekt erzielt
04/30/2011 21:10 Muddy Waters#1622
Quote:
Originally Posted by Gaterrrr View Post
@Muddy: Wenn ich den Rusher in Richtung Wizard move, dann macht er manchmal automatisch weiter, wenn nicht, dann hilft es, den Quester zu moven / sterben zu lassen.

Darf man in naher oder ferner Zukunft mit einer Verbesserung des Rush-Scripts @ Wizard rechnen? Denn es wäre wirklich besser, wenn man nichts machen müsste, beim Rush-Bot. ;-)

Und um dann nochmal auf den D2NT Log zurück zu kommen: Mit dem Cuben hattet ihr recht, da ist es normal, dass die Essence nicht angezeigt werden. Allerdings ist mir aufgefallen, dass der Log zeitversetzt geschrieben wird. Teilweise 20 Minuten - so lange dauert ein Run bei meinem Bot. Darf ich deshalb annehmen, dass der Bot erst nach dem Beenden aller Scripts und nach dem Verlassen des Games in die Log beim D2NT Manager die aufgehobenen Items einträgt?
Mal schauen...wenn es wirklich so ist, dass der Leader die Unit nicht findet, kann ich da wenig dran drehen. Obwohl man vllt den Schritt zur Seite automatisieren könnte. :)

Nein, an sich nicht. Das sollte sofort nach dem Indentifizieren geschehen.
Du solltest natürlich sicherstellen, dass dein Char nach einem Script auch immer artig das Inventar leert, ansonsten könnte es durchaus passieren, dass sehr kleine Items dort eine ganze Weile lang rumliegen.
Setz dazu einfach NTConfig_FreeSpace auf die Anzahl der Spalten im Inventar, die maximal frei sein kann.

Quote:
Originally Posted by ldevil View Post
Hast du das Nila Script mit "Skip on Tomb Vipers"? wenn ja, setzt den ausdruck da im if(...) einfach auf if(false) ist etwas ineffizient aber schnell umgestellt. dann geht er runter sagt "skip" und geht danach wieder hoch zu pindle ;)

@Muddy: Ok, ez hab ich's glaubs einigermassen kapiert. Auch wenn ich noch nicht erkannt hab wieso die Reihenfolge der Initialisierung wichtig ist. Aber das hab ich mir auch net angeschaut um ehrlich zu sein.

Mein "fix" verhindert, dass mein Bot alle 2 Games mult weil alles voller Ringe ist, das passt für mich für's erste :)
Folgendes Szenario:
Der Bot hat 2 RALs in der Truhe, gerade eine weitere gefunden.
Es werden RALs in aufgehoben, allerdings maximal 2 Stück.
Der Bot ist ausserdem angewiesen, nur Items zum Craften zu verwenden, die nicht durch die .nips abgedeckt werden, wer darf also nur dann RALs vercrafte, wenn bereits die Soll-Menge eingelagert ist.

Nun wird initialisiert. Beim Abgleich mit den .nips, erhält jede RAL den Wert 3 (== nicht aufheben, da maximale Anzahl erreicht).
Als erstes ist eine der RALs in der Truhe dran und wird ins Cubing Array einsortiert. Und genau jetzt tritt folgendes Problem auf:
Da ja alle RALs beim Abgleich den Wert 3 liefern, tut das auch die frische RAL im Inventar. Dem Char wird signalisiert, dass diese RAL nicht gebraucht wird und sie wird folglich gedroppt/verkauft.
Es wird also eine RAL entsorgt, die eigentlich durchaus gebraucht würde.
Aus diesem Grunde wird das Inventar zuerst überprüft. Denn dann wird die frische RAL zum Cuben aufbewahrt, während die restlichen beiden RALs, die ja aufzuheben sind, in der Truhe verbleiben.

Quote:
Originally Posted by Gaterrrr View Post
Kann ich beim Gamble eigentlich einstellen, dass der Bot ausnahmslos alle Schuhe kaufen soll?

NTConfig_GambleItem.push(339); hat leider nicht den gewünschten Effekt erzielt
Mit Boots sind auch tatsächlich 'Boots' gemeint, beziehnungsweise die Exceptional Variante Demonhide Boots, sowie die Elite Variante Wyrmhide Boots.

Willst du andere Stiefel, musst du auch jeweils die classids der einzelnen Stiefel in ihrer normalen Ausführung einfügen.

LG
Muddy
04/30/2011 23:56 Gaterrrr#1623
Quote:
Originally Posted by Muddy_Waters View Post
Setz dazu einfach NTConfig_FreeSpace auf die Anzahl der Spalten im Inventar, die maximal frei sein kann.
Meinst du mit Spalten Felder, oder wirklich ganze Spalten, von oben nach unten? Dieser Wert variiert allerdings bei den verschiedenen Bots, weshalb ich keinen pauschalen Wert in die allgemein Config schreiben kann :X
05/01/2011 00:42 Muddy Waters#1624
Quote:
Originally Posted by Gaterrrr View Post
Meinst du mit Spalten Felder, oder wirklich ganze Spalten, von oben nach unten? Dieser Wert variiert allerdings bei den verschiedenen Bots, weshalb ich keinen pauschalen Wert in die allgemein Config schreiben kann :X
Die Variable findet sich auch normalerweise in den einzelnen Char Configs. ;)
Ich hatte aber auch schonmal überlegt, hier aus Faulheit einfach eine kleine Funktion anzusetzen, die das entsprechend initialisiert. :D

Achja, ich meine natürlich Spalten, wenn ich Spalten sage, Felder sind schließlich etwas völlig anderes.

LG
Muddy
05/01/2011 01:07 ldevil#1625
Ah, so wird das gemacht. Ja ok, das ist natürlich dann schon etwas ungünstig.

Ich glaub das wurde hier schon einmal erwähnt, aber da ich grad zu müde bin den Thread zu durchsuchen und eh poste:

Der Bot lässt gerne Mal Sachen einfach liegen... Hab grad in AncientTunnels gehabt, dass er keine Reju mehr hatte und keinen der beiden die gedroppt sind genommen hat. Stattdessen hat er Urnen geöffnet und ist dann weiter. Irgendwie scheint mir das etwas ineffizient, wenn man Loot einfach so liegen lässt ;)
05/01/2011 08:57 Derbeth#1626
Hi zusammen, hab wiedereinmal ein problem.

Mein Chestscript Barb (200%Fcr keine attack skills....) der halt nur das Chestscript durchläuft, hat jetzt zum zweiten mal zuwenig Gold um sein Eni zu reparieren. Sprich er macht dann halt 60chickens von 60games weil er ja nicht telen kann... Hat mir da jemand ein Tipp damit der etwas mehr kohle scheffelt und seine Eni auch reparieren kann?
05/01/2011 09:01 Onkarion#1627
Hallo Muddy!

Ich habe ein Problem mit Cold/Fire-Immunen.
Würde gerne Telekinese und Statik auf NTConfig_AttackSkill[8] und [9] setzten. Da allerdings beide Untimed Skills sind, wird nur der NTConfig_AttackSkill[8] gecastet.
Jetzt hab ich mir überlegt, ob man dem Bot bei einen Skill ohne Castdelay eines vorgeben kann. Das ich beispielsweise Nova auf NTConfig_AttackSkill[8] setze und diesen Skill intern ein Delay von 25 zuschreibe und als NTConfig_AttackSkill[9] Statik setzte. Dann würde er ja Nova casten, dann etwa 3 Mal Statik usw...

Das Delay wird ja in der NTCommon aus einer skills.txt ausgelesen:
Code:
function NTC_GetCastDelay(skillid)
{
	var _delay = GetBaseStat("skills.txt", skillid, 165);

	if(_delay)
		return (_delay * NTC_DELAY_FRAME);

	return 0;
}
Die skills.txt gibt es im Ordner mpqdata und sdk. Ich schätze, dass er die Umfangreichere aus dem Ordnet mpqdata verwendet. Kann ich dann einfach in der Spalte 'Delay' eines eintragen und der wendet es an? Hab es bei Telekinese mal probiert und es hat nicht funktioniert. Kann aber auch sein, dass ich das in der falschen Zeile eingetragen habe. Die Datei ist schwer zu lesen.

Das zu lösen würde mir sehr helfen. Momentan läuft meine Classic-Soso bei DeSeis sehr oft auf und muss dann leaven.:(

€ @ Derbeth
Stell in deiner Pickit mal die Goldgrenze runter und trage sowas mal ein. Dann pickt er auch Items, die n bissl Gold bringen:
Code:
// ##### Gold ##########################
[Type] == gold # [Gold] >= 500

// ##### Gamble Gold ####################
[Type] == Armor && [Class] == exceptional && [Quality] == magic # [Dexterity] == 1000
[Type] == Shield && [Class] == exceptional && [Quality] == magic # [Dexterity] == 1000
[Type] == Mace && [Class] == exceptional && [Quality] == magic # [Dexterity] == 1000
[Type] == ring && [Quality] == magic # [Dexterity] == 1000
[Type] == Amulet && [Quality] == magic # [Dexterity] == 1000
Weiß nur nicht, ob man [Class] >= exceptional schreiben kann oder ob du ne extra Zeile für [Class] == elite brauchst.
05/01/2011 09:51 Derbeth#1628
Merci, hab zwar nix gesehen diese nacht von gambling werde es aber mal ausprobieren... (ist bisschen schwer bei 6 chars über 10h zu finden... :P

Warum willst du eigentlich statik UND telekinese verwenden? verstehe ich nicht ganz, den statik ist ja nach x%leben sowiso sinnlos?
05/01/2011 13:01 Jatu88#1629
Moin zusammen, was mir aufgefallen ist, unter XP läuft der bot stabiler und stürzt nicht so oft ab :) unter Win 7 bleibt das problem leider das jedes 2 spiel abschmiert wieso auch immer aber naja besser als nichts ;)
05/01/2011 13:03 Onkarion#1630
Quote:
Originally Posted by Derbeth View Post
Warum willst du eigentlich statik UND telekinese verwenden? verstehe ich nicht ganz, den statik ist ja nach x%leben sowiso sinnlos?
In Classic geht Statik bis 1 HP :)
05/01/2011 13:57 DjCybo#1631
Hallo allerseits!
Der Umstieg von Bluebird auf Muddy ist mir gelungen und brachte mir viele neue Features, bessere Kampfscripte und bessere Hell-Runs. Dafür erstmal ein aufrichtiges Danke an Muddy und alle, die ihm gegebenenfalls dabei unterstützt haben!
Leider habe ich nur ein klitzekleines Problem und ich finde keine Lösung:
Ich habe in der NTBot.ntj ganz normal eingetragen:
Code:
var JoinChannelInChat = "op MeinAcc";// leave blank not to join a private channel
Allerdings joint er diesen Channel nicht und wenn ich das Feld GANZ leer lasse, sollte er ja eigentlich GAR NICHT den Chat joinen, das macht er aber trotzdem...

Weiß jemand Rat, oder kann mir sagen, was ich falsch gemacht habe, bzw. übersehen habe?!

Liebe Grüße
05/01/2011 15:07 Muddy Waters#1632
Quote:
Originally Posted by Onkarion View Post
Hallo Muddy!

Ich habe ein Problem mit Cold/Fire-Immunen.
Würde gerne Telekinese und Statik auf NTConfig_AttackSkill[8] und [9] setzten. Da allerdings beide Untimed Skills sind, wird nur der NTConfig_AttackSkill[8] gecastet.
Jetzt hab ich mir überlegt, ob man dem Bot bei einen Skill ohne Castdelay eines vorgeben kann. Das ich beispielsweise Nova auf NTConfig_AttackSkill[8] setze und diesen Skill intern ein Delay von 25 zuschreibe und als NTConfig_AttackSkill[9] Statik setzte. Dann würde er ja Nova casten, dann etwa 3 Mal Statik usw...

Das Delay wird ja in der NTCommon aus einer skills.txt ausgelesen:
Code:
function NTC_GetCastDelay(skillid)
{
	var _delay = GetBaseStat("skills.txt", skillid, 165);

	if(_delay)
		return (_delay * NTC_DELAY_FRAME);

	return 0;
}
Die skills.txt gibt es im Ordner mpqdata und sdk. Ich schätze, dass er die Umfangreichere aus dem Ordnet mpqdata verwendet. Kann ich dann einfach in der Spalte 'Delay' eines eintragen und der wendet es an? Hab es bei Telekinese mal probiert und es hat nicht funktioniert. Kann aber auch sein, dass ich das in der falschen Zeile eingetragen habe. Die Datei ist schwer zu lesen.

Das zu lösen würde mir sehr helfen. Momentan läuft meine Classic-Soso bei DeSeis sehr oft auf und muss dann leaven.:(
Die Funktion die du dort anführst, ist aber obsolet und wird nicht mehr eingesetzt. Der Skill Satus wird über eine Methode des me Objekts abgefragt.

Code:
me.GetSkillStatus(skillid)
Auf diesem Wege kannst du jedenfalls keine Delays vorgaukeln, die nicht tatsächlich auch bestehen. Dein Ansatz kann daher so nicht funktionieren.

Was du höchstens machen könntest, wäre die Skills zufällig zu casten.
Wobei ich mich noch Frage: Wozu Telekinese? Macht das in Classic Schaden?

Quote:
Originally Posted by DjCybo View Post
Hallo allerseits!
Der Umstieg von Bluebird auf Muddy ist gelungen und brachte mir viele neue Features, bessere Kampfscripte und bessere Hell-Runs. Dafür erstmal ein aufrichtiges Danke an Muddy und alle, die ihn gegebenenfalls dabei unterstützt haben!
Leider habe ich nur ein klitzekleines Problem und ich finde keine Lösung:
Ich habe in der NTBot.ntj ganz normal eingetragen
Code:
var JoinChannelInChat = "op MeinAcc";// leave blank not to join a private channel
Allerdings joint er diesen Channel nicht und wenn ich das Feld GANZ leer lasse, sollte er ja eigentlich GAR NICHT den Chat joinen, das macht er aber trotzdem...

Weiß jemand Rat, oder kann mir sagen, was ich falsch gemacht habe, bzw. übersehen habe?!

Liebe Grüße
Falsch, er soll dem Chat beitreten, sofern JoinChatAfterLogin den Wert true hat; mit den Channel hat das nichts zu tun.

Deine eigentlich Frage sollte sich auch durch das Lesen der Kommentare beantworten lassen:
Code:
[COLOR="Green"]// Add any char/account here that is supposed to perform chat actions/game announcements or join a private channel[/COLOR]
ChannelUsers.push("Default");
Du musst hier statt "Default" deinen Char- bzw. Accountnamen eintragen, damit dein Char dem angegebenen Channel beitritt. ;)

LG
Muddy
05/01/2011 15:51 Onkarion#1633
Quote:
Originally Posted by Muddy_Waters View Post
Die Funktion die du dort anführst, ist aber obsolet und wird nicht mehr eingesetzt. Der Skill Satus wird über eine Methode des me Objekts abgefragt.

Code:
me.GetSkillStatus(skillid)
Auf diesem Wege kannst du jedenfalls keine Delays vorgaukeln, die nicht tatsächlich auch bestehen. Dein Ansatz kann daher so nicht funktionieren.

Was du höchstens machen könntest, wäre die Skills zufällig zu casten.
Wobei ich mich noch Frage: Wozu Telekinese? Macht das in Classic Schaden?
Hallo Muddy,

Wie würde das mit dem zufällig Skills casten funktionieren? Würde er dann zufällig zwischen AttackSkill[8] und [9] entscheiden?

Ich will es mit Telekinese eher testen, ob sie beides castet. Weil ich nur noch 1 Respec frei habe, will ich ungern verskillen. Da sie bald ein Lvlup kriegt, würde ich den dann in Nova setzen. Es gibt im Blitzbaum ja leider keine Skills mit Cast Delay und für ThunderStorm sind es mir zu viele Durchgangsskills.

Grüße
Onkarion
05/01/2011 16:22 DjCybo#1634
Quote:
Originally Posted by Muddy_Waters View Post
Falsch, er soll dem Chat beitreten, sofern JoinChatAfterLogin den Wert true hat; mit den Channel hat das nichts zu tun.

Deine eigentlich Frage sollte sich auch durch das Lesen der Kommentare beantworten lassen:
Code:
[COLOR="Green"]// Add any char/account here that is supposed to perform chat actions/game announcements or join a private channel[/COLOR]
ChannelUsers.push("Default");
Du musst hier statt "Default" deinen Char- bzw. Accountnamen eintragen, damit dein Char dem angegebenen Channel beitritt. ;)

LG
Muddy
*Seufz* Das funzt nicht. Ich habe dort nun "Pornobaal" eingetragen, weil er ja dann (so wie ich es verstanden habe) den oben angegebenen Channel "op Pornobaal" joinen sollte?!
Leider joint er nach wie vor einen deutschen Default-Channel und eröffnet dann ein normales Spiel.
Bevor oben in der Informationsleiste der Gamecounter erscheint, steht dort in rot "Chat actions disabled!" und blinkt etwa 3 Mal auf. (Weiß nicht, ob das relevant ist...

LG
05/01/2011 16:28 Shrimps in Bierteig#1635
Quote:
Originally Posted by DjCybo View Post
*Seufz* Das funzt nicht. Ich habe dort nun "Pornobaal" eingetragen, weil er ja dann (so wie ich es verstanden habe) den oben angegebenen Channel "op Pornobaal" joinen sollte?!

LG
Also du hast dort wo "Default" steht (bei muddys zitat), Pornobaal eingetragen? So versteh ich dich jetzt zumindest. Wen ich dich missverstehe tut es mir leid. Jedoch wen nicht, solltest du bei "Default" deinen Accname eintragen.

mfg