Eigentlich macht mir Programmieren mehr Spaß, als Diablo2 zu spielen. Wie gut, daß man botten kann. Ich stelle mal vor, was ich so treibe. Vielleicht kann es ja dem einen oder anderen die Hemmschwelle nehmen, selber an den Scripts rumzufummeln. Das macht nämlich spaß und ist gar nicht so extrem schwer. Außerdem stürzt seit ein paar Tagen d2nt ab, weshalb ich mal d2bs ausprobiert habe. Ich habe den Eindruck, daß die engine des d2bs viel besser ist. Die mitgelieferten Scripts sind halt (noch) nicht so gut. Also keine Hemmungen, es mal auszuprobieren!
31.10.11, 15:30
Da eh Ladder-Reset war, lösche ich meine alten Chars und fange ganz neu an.
Eine Zauberin. Ich nenne sie Susi (Name von der Redaktion geändert).
Ich gehe ohne Bot mal ganz normal in Diablo II rein und lösche die alten Chars und lege Susi an.
Und ich hole mir von Akara den Auftrag, die Höhle des Bösen zu räumen.
So, genug selber gespiel. Bin ja schon total erschöpft. Es muß mehr gebottet werden.
Installation.
Die "OOG with 1.4.rar" nach irgendwo auspacken.
Bei mir ist es "c:\src\OOG with 1.4".
Falls noch nicht auf dem Rechner vorhanden das .net-Framework 3.5 installieren.
Falls noch nicht vorhanden, die vcredist 2010 installieren.
So, das war's auch schon.
Jetzt die ersten Einstellungen machen.
OOG.exe starten. Es erscheint ein Dialog mit einem Profile, das man noch ändern muß.
Also klick auf "Edit".
Den D2Path und den D2BSPath werden Ihr hinkriegen.
Falls Diablo II auch auf Deutsch installiert wurde, muß erst noch eingestellt werden, daß es Englisch ist.
Dazu die "C:\Programme\Diablo II\data\local\use" erstellen, in der nichts drinstehen muß.
Als Flags im OOG-Profile noch -w -direct -txt, damit der Sprachenwandel klappt.
Noch Accountname und Passwort eintragen und Slot 1 nehmen.
Und rechts oben "Update Profile" klicken, ganz wichtig.
Und 18 Games per Hour. Das scheint bei mir zu klappen.
Die "C:\src\OOG with 1.4\scripts-ntbot\libs\config\NTConfig_Sorceress.dbl" nehmen und nach NTConfig_Sorceress_Susi.dbl
kopieren. Und gleich editieren.
Hier stand vorher SimonSays. Also hallo, SimonSays ist ein angenehmes Stück Software. Wenn man man losziehen muß, um was
per Hand zu erledigen, ist der hilfreich. Aber jetzt nicht. Wenn SimonSays läuft, läuft kein späteres Skript. Also erstmal
ausmachen.
Und noch die Susi.nip anlegen.
Das ist ein Trick. magic erkennt er schon wenn es auf dem Boden liegt. Also unmagic Sachen hebt er gar nicht auf.
Aber alles, was magic ist. Aber den Schrott wollen wir gar nicht sammeln, sondern verkaufen. Deswegen sagen wie Dex=1000
und das kann der Bot nicht sehen, solange das Zeug auf dem Boden liegt, sondern erst, wenn es identifiziert wurde. Und
dann, wo es eh schon im Invetar ist, verkauft der Bot es, statt es wegzuwerfen. So machen wir unser Gold.
Mal schauen, ob wir auch ein paar Sachen kriegen, die uns Mana bescheren.
Wichtig: Alle Tränke anmachen.
Ob das schon reicht? Wir werden es erleben.
31.10.11, 16:00 Erster Bot-Start
Hmm, er logt sich nicht ein. Böser Bot!
Ok, vergessen, im Profile die Difficulty auf Normal zu stellen. Noch ein Versuch!
Hmm, wieder nichts.
Ok, vergessen, den scripts-path auf "scripts-ntbot" zu stellen. Noch ein Versuch!
Hmm, er versucht sich einzuloggen, kommt aber nicht rein.
Ok, falsches Passwort eingetragen. Noch ein Versuch!
Evtl muß man die OOG.exe auch ausmachen und neu starten, die scheint bei den Versuchen verwirrt zu werden.
Haha, jetzt versucht er ein Spiel mit dem Namen 1 anzulegen. Kann er nicht, gibt es schon.
Vergessen, im Profile Game Name auf Susi zu stellen und ein Game Passwort zu setzen. Noch ein Versuch!
Jetzt geht erstmal ein Dialog auf, der mir alles mögliche einzustellen erlaubt.
Aber da traue ich mich nicht ran. Ich fürchte, der zerschießt mir die hübsch eingestellten Dateien.
Einfach mit Exit schließen.
Oh, was ist das? Da läuft doch SimonSays! Warum das denn? Ich kille den Lauf und schau nochmal in die Steuerdatei.
Oh, ich hatte aus Versehen eine NTConfig_Sorceress_Susi.ntl erstellt. Nu hat irgend ein Script mit eine
NTConfig_Sorceress_Susi.dbl mit Standfardwerten (und SimonSays natürlich) erstellt. Die dbl nenne ich um in dbl.sec zum
später mal Sachen nachschauen. Und aus meiner ntl mache ich eine dbl. Noch ein Versuch!
Jetzt ist mein Key used bei irgend so einem Keyklauer. Na, zum Glück habe ich noch einen.
31.10.11, 18:00
Mit den Keys habe ich nichts zustandegebracht. Alles klappt nicht. Vorhin ist ein Update von OOG reingekommen. AUf einmal
klappt das mit den Keys. Vielleicht. Oder der Keyklauer ist nicht mehr online. Oder eine meiner Umkopierversuche hat was
gebraucht. Na, hauptsache erstmal, es klappt.
Die Zauberin sagt die ganze Zeit "Ich kann nicht". Vielleicht, weil sie dauernd teleporten will?
Zwei neue Zeilen:
Nö, sie sagt es weiterhin. Naja, dann soll sie halt mal jammern.
Haha, ich meinte natürlich
me.useTeleport = false;
Trotzdem jammert sie. Und sie kämpft lächerlich schlecht.
lvl2 erreicht sie nach ungefähr 10 Chickens.
Sie bekommt 5 Punkte in Vitalität und als Skill einen Punkt in Wärme.
Oh, jetzt ist sie eine Kampfmaschine!
Das dauernde "Ich kann nicht" nervt.
Ich probiere doch aus, das andere Script als Start zu nehmen. Ich lösche meine *.dbl.
Dann müßte ja wieder der Dialog kommen.
Da stelle ich dann mal ein und speichere ab.
Klappt.
SimonSays raus und Den rein.
Public Mode aus.
Pick Utility an.
Fast Snag an.
Clear Position an.
me.UseTeleport aus.
Bei Skills Primary for Boss und Primary for Others auf Fire Bolt, Rest auf Nothing.
Und Save.
Weiter in der dbl ändern.
to walk to pick items
Und die Susi.nip zufügen. Die anderen nips raus, sie sammelt nur für sich und hat nicht vor, zu handeln.
Kein Erfolg, sie jammert weiter.
Vielleicht will sie den nichtexistierenden Merc füttern?
will revive merc at a reviver npc.
Wieder machen, daß sie Geld früher auf die Bank bringt.
Belt wieder auf hp hp mp mp setzen.
Und sie jammert nicht mehr!!!
31.10.11, 19:00
lv3 erreicht.
5 Punkte in Vitalität und ein Skillpunkt in Fire Bolt.
31.10.11, 19:35
lv4 erreicht.
5 Punkte in Vitalität. Skillpunkte werden aufgespart für später.
Angestrebt wird zunächst der Feuerball. Und dann
Geld allein macht nicht glücklich. Die Dame bracht erstmal, was anzuziehen.
Und sie hebt ja gar kein Gold auf.
31.10.11, 20:37
lv5 erreicht.
5 Punkte in Vitalität. Ach, was soll der Geiz? 2 Skillpunkte in Wärme.
31.10.11, 21:28
lv6 erreicht.
5 Punkte in Stärke. Langsam findet sie Sachen, die sie ob ihrer Schwäche gar nicht anziehen kann.
1 Skillpunkt in Wärme.
31.10.11, 22:45
lv7 erreicht.
5 Punkte in Stärke.
1 Skillpunkt in Wärme.
31.10.11, 23:11
Sie fängt wieder an zu jammern. "Ich kann nicht", "Unmöglich".
Ach, sie hat ein volles Inventar. Nur Schrott. Es war doch wohl keine soo gute Idee, sie alles sammeln zu lassen.
Habe es per Hand verkauft und jetzt 2000 Gold.
Man weiter probieren mit
nebst üblichem Kram wie Tränken und so.
01.11.11, 00:07
Zum ersten mal die Höhle des Bösen ausgeräumt und damit die Quest erledigt.
Zur Belohnung 1 Skillpunkt in Wärme.
01.11.11, 00:20
lv8 erreicht.
5 in vit, 1 in Wärme.
Per Hand ein Tome of Town Portal gekauft., damit die gesammelten Rollen das Inventar nicht so vollmüllen.
01.11.11, 09:55
lv9 erreicht.
5 in vit, 1 in Wärme.
01.11.11, 12:00
lv10 erreicht.
5 in vit, 1 in Wärme.
Bald fängt sie an, die Höhle des Bösen zu überleben.
Ich stelle schonmal ein, daß sie dann zu Blutrabe sterben geht.
Habe 5k Gold.
Weg mit
01.11.11, 12:00
Ich muß feststellen, die Dame läuft rum wie besoffen. Sie nimmt sich nicht die Monster in der Nähe vor, sondern irgend
welche. Und dann rennt sie ernstmal am Monster vorbei, um es von hinten anzuschießen. Ganz komisch. Also wäre die
Monsterauswahl schlicht zufällig und vor dem Schießen müßte sie erst zur besten Angriffsposition hüpfen. Mit Teleport mag
das ja in Ordnung sein. Aber ohne ist es manchmal doof. So wird sie auf dem Friedhof einfach von Zombies umstellt. Und
anstatt sich freizuschießen, versucht sie zur optimalen Angriffsposition zu laufen und stirbt im Nahkampf, ohne sich zu
wehren.
Mal in den Code schauen.
Was ist dass denn? Bin ich besoffen?
Da stehts doch hellblau auf dunkelblau.
Nur gibt es keine Funktion namens SortMonsters.
Stattdessen wird in den Folgezeilen dauernd
gemacht.
Ach nöö.
wäre doch hübscher.
01.11.11, 15:30
lv11 erreicht. Wieder Vitalität und Wärme.
01.11.11, 21:09
lv12 erreicht.
Stärke und Feuerball.
Damit ist Blutrabe im ersten Versuch gefallen.
will revive merc at a reviver npc.
Ich hole mir eine Bogenschützin mit Eiszauber. Feuer habe ich selber genug.
Und ich fürchte, das Tor vor Tristram muß ich per Hand öffnen.
Ein Einsatz für SimonSays.
Ja, SimonSays hebt automatisch tränke auf und trinkt sie bei Bedarf. Und Schätze auch.
Beim Betreten des Stony Field erscheint rechts unten:
Next: Undergrond Passage Lv1.
Dann drückt man die "-"-Taste auf dem Ziffernblock und der Bot geht hin.
Den POI erreicht man mit "*".
Und wenn mein Inventar voll wird, geht der Bot automatisch verkaufen und kommt wieder.
War angenehm.
Das Tor nach Tristram steht.
Also Tristram-Script anmachen. Und bis die Dame teleportieren kann, Tristruns durchführen.
Tristam ging auf Anhieb.
Zwischendurch, als die Monster schon weg waren, die Pause-Teste gedrückt und Deckard Cain heimgeschickt und Quest
abgeschlossen.
01.11.11, 22:12
lv13 erreicht. Wieder Vitalität und Feuerball.
Ich stelle die Tränke auf hp mp mp mp um, weil sie jetzt mehr Mana braucht, aber die Gesundheit kein Problem darstellt.
01.11.11, 22:35
lv14 erreicht. Wieder Vitalität und Feuerball.
Es nervt, daß der Bot das D2-Fenster immer minimiert.
Ich will ja zuschauen.
Aus
in der starter.dbj wird
[/CODE]
sendCopyData(null, "OOG", 0,"ShowWindow 1" ); //OOG compatablity,
[/CODE]
01.11.11, 23:05
lv15 erreicht. Wieder Vitalität und Feuerball.
02.11.11, 00:00
lv15 erreicht. Wieder Vitalität und Feuerball.
02.11.11, 01:30
lv17 erreicht. Wieder Vitalität und Feuerball.
Eih, das war doof. In lv18 will ich doch Teleprot lernen und nun habe ich die Vorbedingung vergessen.
02.11.11, 03:14
lvl18 erreicht. Stärke und Telekinese.
02.11.11, 18:00
lvl19 erreicht. Vitalität und Teleprt.
Und
Mal schauen, wie das schon so geht...
Wie befürchtet. Sie hat unglaublichen Mana-Mangel.
In der NTMove.js nach
eingefügt
[/CODE]
if(me.mp<me.mpmax)
_walk=true;
[/CODE]
Das bewirkt, daß mit Lichtgeschwindigkeit bis Tristram spring. Aber dann in Tristram zu Fuß aufräumt. Das ist schon ein
ziemlich guter Kompromiß.
Aber nicht perfekt. Susi überlegt immer vor einem längeren Weg, ob sie den ganzen Weg zu Fuß gehen soll oder ob sie
springen will. Wenn der Steinkreis mal sehr weit weg ist, und Mana ausgeht, ist sie zu dumm, zu Fuß weiterzulaufen. Und
wenn sie man gegen eine Mauer spaziert und nicht weiterkommt, ist sie zu dumm, selbst bei vollem Mana zu springen.
Das muß man doch verbessern können.
Also die komplette NTM_MoveTo kapieren und damit rechnen, sie neu aufbauen zu müssen.
Erstmal kopiere ich sie in eine NTM_MoveToSec.
Das Problem ist, daß schon getPath wissen muß, ob teleportiert wird. Und dann muß der Pfad aubgelaufen oder abgesprungen
werden.
Erster Versuch ist gescheitert. Habe eine lange Funktion geschrieben und sie hat "irgendwo" einen Fehler. Der wird zwar
kurz angezeigt, aber so schnell kann ich nicht lesen.
Mal defensiver programmieren.
nebst
und
weg. Uns sonst nichts.
Ja, geht.
Damit Susi häufiger springt, und damit ich auch in Tristram sehen kann, ob sie nachdenkt,
Ok, sie springt fein zu nächsten Feinden, falls Mana halbvoll ist.
Ja, das fühlt sich schn besser an. Susi spingt, wenn sie genug Mana hat.
Leider kommt es auch öfter noch dazu, daß sie nicht läuft, wo sie laufen sollte.
Stattdessen wartet sie, bis die voll genug ist.
Das ist natürlich fatal, wenn sie gerade angegriffen wird.
Aber so klappts.
Das mit dem i mußte sein, weil getPath auch gerne mal eine Liste zurückgibt, die mit der Startposition anfängt. In diesem
Falle trat Susi endlos auf der Stelle.
Und jetzt kann auch die wantWalk wieder netschärft werden.
PERFEKT! Sie läuft sehr harmonsich dich Tristram. Wie ich es per Hand tun würde. Nur würde ich nicht so viel Kram
aufheben.
03.11.11, 10:00
Es wird Zeit, weiterzumachen. Aber dazu ist der Bot einfach zu dumm.
SimonSays hilft.
Erstmal das Verzeichnis scripts-ntbot/output erstellen.
Und neue Tasten entdeckt.
Die ^-Taste (links neben der 1) cleart automatisch das Gebiet.
Und die e-Taste schickt sie in die Stadt.
Kleine Verbesserung für mich:
Jetzt ist es nicht mehr bloß eine Flucht-Taste, sondern es wird eingekauft.
03.11.11, 12:30
Susi hat echt keine Ahnung, was Türen sind. Und mit ihren bescheinen Teleport-Fähigkeiten, konnte sie kaum was alleine
machen. Trotzdem war es gut, daß sie allene Sachen aufhebt und sich auskennt.
Also die Tasten / und * und - für voriges Level, Pont of Interest und nächstes Level.
Und sagt man "get wps" geht sie zum nächsten Wegpunkt.
Naja, wegen der vielen Türen klappte das nicht. Aber POI war sehr fein, damit sie sagt, in welcher der vier Richtungen der
Zaubberer ist.
lv22 erreicht. Ich halte die Stärke mal auf 30 und mache den Rest in Vitalität.
Und Feuerball halte ich auf halb so viel wie Wärme.
So, bin im Canyon of the Magii. Ah, keine Türen! Hier darf sie bis morgen rumbotten.
Dazu nehme ich mir das Duriel-Script und schlachte es aus. Das geht ruck zuck und ist voll easy.
Allein, es klappt nicht. Das Script will und will nicht laufen.
03.11.11, 14:00
Haha, Schreibfehler! Aber nicht im Code.
Der Dateiname war NTCanyion.dbl statt passend zum Funktionsnamen NTCanion.dbl
So, dann man wieder botten. :)
Und der Merc darf sich einen Blitz-Bogen wünschen.
31.10.11, 15:30
Da eh Ladder-Reset war, lösche ich meine alten Chars und fange ganz neu an.
Eine Zauberin. Ich nenne sie Susi (Name von der Redaktion geändert).
Ich gehe ohne Bot mal ganz normal in Diablo II rein und lösche die alten Chars und lege Susi an.
Und ich hole mir von Akara den Auftrag, die Höhle des Bösen zu räumen.
So, genug selber gespiel. Bin ja schon total erschöpft. Es muß mehr gebottet werden.
Installation.
Die "OOG with 1.4.rar" nach irgendwo auspacken.
Bei mir ist es "c:\src\OOG with 1.4".
Falls noch nicht auf dem Rechner vorhanden das .net-Framework 3.5 installieren.
Falls noch nicht vorhanden, die vcredist 2010 installieren.
So, das war's auch schon.
Jetzt die ersten Einstellungen machen.
OOG.exe starten. Es erscheint ein Dialog mit einem Profile, das man noch ändern muß.
Also klick auf "Edit".
Den D2Path und den D2BSPath werden Ihr hinkriegen.
Falls Diablo II auch auf Deutsch installiert wurde, muß erst noch eingestellt werden, daß es Englisch ist.
Dazu die "C:\Programme\Diablo II\data\local\use" erstellen, in der nichts drinstehen muß.
Als Flags im OOG-Profile noch -w -direct -txt, damit der Sprachenwandel klappt.
Noch Accountname und Passwort eintragen und Slot 1 nehmen.
Und rechts oben "Update Profile" klicken, ganz wichtig.
Und 18 Games per Hour. Das scheint bei mir zu klappen.
Die "C:\src\OOG with 1.4\scripts-ntbot\libs\config\NTConfig_Sorceress.dbl" nehmen und nach NTConfig_Sorceress_Susi.dbl
kopieren. Und gleich editieren.
Code:
NTConfig_PublicMode = false; // Set to false to not party
NTConfig_Script.push("Den");
per Hand zu erledigen, ist der hilfreich. Aber jetzt nicht. Wenn SimonSays läuft, läuft kein späteres Skript. Also erstmal
ausmachen.
Code:
NT_PickUtility = true; // tries to fill belt and tombs with pickit
NTConfig_LifeChicken = 30; // This is your chicken life percent. If you go below this life total, exit game.
NTConfig_Columns[0] = [1,1,1,1,1,1,1,1,1,0];
NTConfig_Columns[1] = [1,1,1,1,0,1,1,1,1,0];
NTConfig_Columns[2] = [1,1,1,1,1,1,1,1,1,1];
NTConfig_Columns[3] = [1,1,1,1,1,1,1,1,1,1];
NTConfig_MinGoldToStash = 100; // Maximum gold amount carried before going to stash
NTConfig_BeltColType[0] = "hp";
NTConfig_BeltColType[1] = "hp";
NTConfig_BeltColType[2] = "mp";
NTConfig_BeltColType[3] = "mp";
NTConfig_BeltColMin[0] = 4;
NTConfig_BeltColMin[1] = 4;
NTConfig_BeltColMin[2] = 4;
NTConfig_BeltColMin[3] = 4;
NTConfig_NIPFilePath.push("Susi.nip");
//36 Fire Bolt
//47 Fire Ball
NTConfig_AttackSkill[0] = 0; // Cast your first spell once. Set to 0 if you won't
NTConfig_AttackSkill[1] = 36; // Cast your primary spell to boss.
NTConfig_AttackSkill[2] = 36; // Cast your primary spell to others.
NTConfig_AttackSkill[3] = 0; // Cast your primary untimed spell if primary spell is timed spell. Set to 0 if
you won't
NTConfig_AttackSkill[4] = 0; // Cast your secondary spell if monster is immune to your primary spell. Set to 0
if you won't
NTConfig_AttackSkill[5] = 0; // Cast your secondary untimed spell if secondary spell is timed spell. Set to 0
if you won't
NTConfig_ClearPosition = true; // Set to true if you want to clear area after killing boss.
Code:
Quality >= magic : Dexterity = 1000
Aber alles, was magic ist. Aber den Schrott wollen wir gar nicht sammeln, sondern verkaufen. Deswegen sagen wie Dex=1000
und das kann der Bot nicht sehen, solange das Zeug auf dem Boden liegt, sondern erst, wenn es identifiziert wurde. Und
dann, wo es eh schon im Invetar ist, verkauft der Bot es, statt es wegzuwerfen. So machen wir unser Gold.
Mal schauen, ob wir auch ein paar Sachen kriegen, die uns Mana bescheren.
Code:
MaxMana >= 1 ;Type = armor : MaxMana >= 1 ;Type = sorceressitem : MaxMana >= 1
Code:
Name = Minor Healing Potion Name = Light Healing Potion Name = Healing Potion Name = Greater Healing Potion Name = Super Healing Potion Name = Minor Mana Potion Name = Light Mana Potion Name = Mana Potion Name = Greater Mana Potion Name = Super Mana Potion
31.10.11, 16:00 Erster Bot-Start
Hmm, er logt sich nicht ein. Böser Bot!
Ok, vergessen, im Profile die Difficulty auf Normal zu stellen. Noch ein Versuch!
Hmm, wieder nichts.
Ok, vergessen, den scripts-path auf "scripts-ntbot" zu stellen. Noch ein Versuch!
Hmm, er versucht sich einzuloggen, kommt aber nicht rein.
Ok, falsches Passwort eingetragen. Noch ein Versuch!
Evtl muß man die OOG.exe auch ausmachen und neu starten, die scheint bei den Versuchen verwirrt zu werden.
Haha, jetzt versucht er ein Spiel mit dem Namen 1 anzulegen. Kann er nicht, gibt es schon.
Vergessen, im Profile Game Name auf Susi zu stellen und ein Game Passwort zu setzen. Noch ein Versuch!
Jetzt geht erstmal ein Dialog auf, der mir alles mögliche einzustellen erlaubt.
Aber da traue ich mich nicht ran. Ich fürchte, der zerschießt mir die hübsch eingestellten Dateien.
Einfach mit Exit schließen.
Oh, was ist das? Da läuft doch SimonSays! Warum das denn? Ich kille den Lauf und schau nochmal in die Steuerdatei.
Oh, ich hatte aus Versehen eine NTConfig_Sorceress_Susi.ntl erstellt. Nu hat irgend ein Script mit eine
NTConfig_Sorceress_Susi.dbl mit Standfardwerten (und SimonSays natürlich) erstellt. Die dbl nenne ich um in dbl.sec zum
später mal Sachen nachschauen. Und aus meiner ntl mache ich eine dbl. Noch ein Versuch!
Jetzt ist mein Key used bei irgend so einem Keyklauer. Na, zum Glück habe ich noch einen.
31.10.11, 18:00
Mit den Keys habe ich nichts zustandegebracht. Alles klappt nicht. Vorhin ist ein Update von OOG reingekommen. AUf einmal
klappt das mit den Keys. Vielleicht. Oder der Keyklauer ist nicht mehr online. Oder eine meiner Umkopierversuche hat was
gebraucht. Na, hauptsache erstmal, es klappt.
Die Zauberin sagt die ganze Zeit "Ich kann nicht". Vielleicht, weil sie dauernd teleporten will?
Zwei neue Zeilen:
Code:
NTConfig_UseTeleportForPickit=false; me.useTeleport = true;
Haha, ich meinte natürlich
me.useTeleport = false;
Trotzdem jammert sie. Und sie kämpft lächerlich schlecht.
lvl2 erreicht sie nach ungefähr 10 Chickens.
Sie bekommt 5 Punkte in Vitalität und als Skill einen Punkt in Wärme.
Oh, jetzt ist sie eine Kampfmaschine!
Das dauernde "Ich kann nicht" nervt.
Ich probiere doch aus, das andere Script als Start zu nehmen. Ich lösche meine *.dbl.
Dann müßte ja wieder der Dialog kommen.
Da stelle ich dann mal ein und speichere ab.
Klappt.
SimonSays raus und Den rein.
Public Mode aus.
Pick Utility an.
Fast Snag an.
Clear Position an.
me.UseTeleport aus.
Bei Skills Primary for Boss und Primary for Others auf Fire Bolt, Rest auf Nothing.
Und Save.
Weiter in der dbl ändern.
Code:
NTConfig_UseTeleportForPickit = false; // True to use teleport when picking items, false to force character
Und die Susi.nip zufügen. Die anderen nips raus, sie sammelt nur für sich und hat nicht vor, zu handeln.
Kein Erfolg, sie jammert weiter.
Vielleicht will sie den nichtexistierenden Merc füttern?
Code:
NTConfig_UseMerc = false; // Set to true if you use a mercenary,
Wieder machen, daß sie Geld früher auf die Bank bringt.
Code:
NTConfig_MinGoldToStash = 1000; // Maximum gold amount carried before going to stash
Und sie jammert nicht mehr!!!
31.10.11, 19:00
lv3 erreicht.
5 Punkte in Vitalität und ein Skillpunkt in Fire Bolt.
31.10.11, 19:35
lv4 erreicht.
5 Punkte in Vitalität. Skillpunkte werden aufgespart für später.
Angestrebt wird zunächst der Feuerball. Und dann
Geld allein macht nicht glücklich. Die Dame bracht erstmal, was anzuziehen.
Code:
Type = armor
Code:
Type = Gold
lv5 erreicht.
5 Punkte in Vitalität. Ach, was soll der Geiz? 2 Skillpunkte in Wärme.
31.10.11, 21:28
lv6 erreicht.
5 Punkte in Stärke. Langsam findet sie Sachen, die sie ob ihrer Schwäche gar nicht anziehen kann.
1 Skillpunkt in Wärme.
31.10.11, 22:45
lv7 erreicht.
5 Punkte in Stärke.
1 Skillpunkt in Wärme.
31.10.11, 23:11
Sie fängt wieder an zu jammern. "Ich kann nicht", "Unmöglich".
Ach, sie hat ein volles Inventar. Nur Schrott. Es war doch wohl keine soo gute Idee, sie alles sammeln zu lassen.
Habe es per Hand verkauft und jetzt 2000 Gold.
Man weiter probieren mit
Code:
Type = sorceressitem : MaxMana >= 1 Type = Orb : MaxMana >= 1 Type = Amulet : MaxMana >= 1 Type = Ring : MaxMana >= 1 Type = Belt : MaxMana >= 1 Type = Gloves : MaxMana >= 1 Type = Helm : MaxMana >= 1 Type = Armor : MaxMana >= 1
01.11.11, 00:07
Zum ersten mal die Höhle des Bösen ausgeräumt und damit die Quest erledigt.
Zur Belohnung 1 Skillpunkt in Wärme.
01.11.11, 00:20
lv8 erreicht.
5 in vit, 1 in Wärme.
Per Hand ein Tome of Town Portal gekauft., damit die gesammelten Rollen das Inventar nicht so vollmüllen.
01.11.11, 09:55
lv9 erreicht.
5 in vit, 1 in Wärme.
01.11.11, 12:00
lv10 erreicht.
5 in vit, 1 in Wärme.
Bald fängt sie an, die Höhle des Bösen zu überleben.
Ich stelle schonmal ein, daß sie dann zu Blutrabe sterben geht.
Code:
NTConfig_Script = ["Den","Mausoleum"];
Weg mit
Code:
Type = Gold
Ich muß feststellen, die Dame läuft rum wie besoffen. Sie nimmt sich nicht die Monster in der Nähe vor, sondern irgend
welche. Und dann rennt sie ernstmal am Monster vorbei, um es von hinten anzuschießen. Ganz komisch. Also wäre die
Monsterauswahl schlicht zufällig und vor dem Schießen müßte sie erst zur besten Angriffsposition hüpfen. Mit Teleport mag
das ja in Ordnung sein. Aber ohne ist es manchmal doof. So wird sie auf dem Friedhof einfach von Zombies umstellt. Und
anstatt sich freizuschießen, versucht sie zur optimalen Angriffsposition zu laufen und stirbt im Nahkampf, ohne sich zu
wehren.
Mal in den Code schauen.
Was ist dass denn? Bin ich besoffen?
Code:
MobList.sort(SortMonsters)
Nur gibt es keine Funktion namens SortMonsters.
Stattdessen wird in den Folgezeilen dauernd
Code:
SortPoint = new Point(_orgx,_orgy)
MobList.sort(SortMonsters)
SortPoint=false;
Ach nöö.
Code:
MobList.sort(SortDistance);
01.11.11, 15:30
lv11 erreicht. Wieder Vitalität und Wärme.
01.11.11, 21:09
lv12 erreicht.
Stärke und Feuerball.
Code:
NTConfig_AttackSkill[1] = 47 // Cast your primary spell to boss. NTConfig_AttackSkill[2] = 47 // Cast your primary spell to others.
Code:
NTConfig_UseMerc = true; // Set to true if you use a mercenary,
Ich hole mir eine Bogenschützin mit Eiszauber. Feuer habe ich selber genug.
Und ich fürchte, das Tor vor Tristram muß ich per Hand öffnen.
Ein Einsatz für SimonSays.
Ja, SimonSays hebt automatisch tränke auf und trinkt sie bei Bedarf. Und Schätze auch.
Beim Betreten des Stony Field erscheint rechts unten:
Next: Undergrond Passage Lv1.
Dann drückt man die "-"-Taste auf dem Ziffernblock und der Bot geht hin.
Den POI erreicht man mit "*".
Und wenn mein Inventar voll wird, geht der Bot automatisch verkaufen und kommt wieder.
War angenehm.
Das Tor nach Tristram steht.
Also Tristram-Script anmachen. Und bis die Dame teleportieren kann, Tristruns durchführen.
Tristam ging auf Anhieb.
Zwischendurch, als die Monster schon weg waren, die Pause-Teste gedrückt und Deckard Cain heimgeschickt und Quest
abgeschlossen.
01.11.11, 22:12
lv13 erreicht. Wieder Vitalität und Feuerball.
Ich stelle die Tränke auf hp mp mp mp um, weil sie jetzt mehr Mana braucht, aber die Gesundheit kein Problem darstellt.
01.11.11, 22:35
lv14 erreicht. Wieder Vitalität und Feuerball.
Es nervt, daß der Bot das D2-Fenster immer minimiert.
Ich will ja zuschauen.
Aus
Code:
sendCopyData(null, "OOG", 0,"ShowWindow 6" ); //OOG compatablity,
[/CODE]
sendCopyData(null, "OOG", 0,"ShowWindow 1" ); //OOG compatablity,
[/CODE]
01.11.11, 23:05
lv15 erreicht. Wieder Vitalität und Feuerball.
02.11.11, 00:00
lv15 erreicht. Wieder Vitalität und Feuerball.
02.11.11, 01:30
lv17 erreicht. Wieder Vitalität und Feuerball.
Eih, das war doof. In lv18 will ich doch Teleprot lernen und nun habe ich die Vorbedingung vergessen.
02.11.11, 03:14
lvl18 erreicht. Stärke und Telekinese.
02.11.11, 18:00
lvl19 erreicht. Vitalität und Teleprt.
Und
Code:
me.useTeleport = true; // Set boobs to true to allow character to use teleport when moving, set to false to disable teleport when moving;
Wie befürchtet. Sie hat unglaublichen Mana-Mangel.
In der NTMove.js nach
Code:
if(NTC_InTown() || NTC_CheckSkill(54) < 1 || !me.useTeleport) _walk = true; else _walk = false;
[/CODE]
if(me.mp<me.mpmax)
_walk=true;
[/CODE]
Das bewirkt, daß mit Lichtgeschwindigkeit bis Tristram spring. Aber dann in Tristram zu Fuß aufräumt. Das ist schon ein
ziemlich guter Kompromiß.
Aber nicht perfekt. Susi überlegt immer vor einem längeren Weg, ob sie den ganzen Weg zu Fuß gehen soll oder ob sie
springen will. Wenn der Steinkreis mal sehr weit weg ist, und Mana ausgeht, ist sie zu dumm, zu Fuß weiterzulaufen. Und
wenn sie man gegen eine Mauer spaziert und nicht weiterkommt, ist sie zu dumm, selbst bei vollem Mana zu springen.
Das muß man doch verbessern können.
Also die komplette NTM_MoveTo kapieren und damit rechnen, sie neu aufbauen zu müssen.
Erstmal kopiere ich sie in eine NTM_MoveToSec.
Das Problem ist, daß schon getPath wissen muß, ob teleportiert wird. Und dann muß der Pfad aubgelaufen oder abgesprungen
werden.
Erster Versuch ist gescheitert. Habe eine lange Funktion geschrieben und sie hat "irgendwo" einen Fehler. Der wird zwar
kurz angezeigt, aber so schnell kann ich nicht lesen.
Mal defensiver programmieren.
Code:
function wantWalk(){
if(me.mp<me.mpmax)
return true;
if(NTC_InTown())
return true;
if(NTC_CheckSkill(54) < 1)
return true;
if(me.useTeleport)
return false;
}
Code:
var _walk=wantWalk();
Code:
if(NTC_InTown() || NTC_CheckSkill(54) < 1 || !me.useTeleport) _walk = true; else _walk = false;
Ja, geht.
Damit Susi häufiger springt, und damit ich auch in Tristram sehen kann, ob sie nachdenkt,
Code:
function wantWalk(){
if(me.mp<me.mpmax*0.5)
return true;
if(NTC_InTown())
return true;
if(NTC_CheckSkill(54) < 1)
return true;
if(me.useTeleport)
return false;
return true;
}
Code:
function NTM_MoveTo(x, y, retry, clearpath)
{
debugPrint("ntm moveto x:"+x+" y:"+y );
var tempAction = currentAction;
var _walk;
var _path;
var _result;
var _retry = 0;
if(!NTC_WaitCastDone())
return false;
if(x == me.x && y == me.y)
return true;
if(arguments.length < 3)//TODO
retry = 3;
if(arguments.length < 4)
clearpath = false;
_path = undefined;
while(Math.abs(me.x-x) > 4 || Math.abs(me.y-y) > 4){//Aus NTM_TeleportTo geklaut
_walk=wantWalk();
if (_walk)
_path = getPath(me.area, me.x, me.y, x, y,false);
else
_path = getPath(me.area, me.x, me.y, x, y,true,40);
if(!_path && !_walk) //tele path failed trying walking path
_path = getPath(me.area, me.x, me.y, x, y,false,40);
if(!_path)
{
print("getpath("+me.area+","+me.x+","+me.y+","+x+","+y+","+!_walk+") failed");
return false;
}
if (tempAction != currentAction) {
print("breaking Out of Moveto");
return false;
}
if(_walk)
_result = NTM_WalkTo(_path[0].x, _path[0].y);
else
_result = NTM_TeleportTo(_path[0].x, _path[0].y);
}
return true;
}
Leider kommt es auch öfter noch dazu, daß sie nicht läuft, wo sie laufen sollte.
Stattdessen wartet sie, bis die voll genug ist.
Das ist natürlich fatal, wenn sie gerade angegriffen wird.
Aber so klappts.
Das mit dem i mußte sein, weil getPath auch gerne mal eine Liste zurückgibt, die mit der Startposition anfängt. In diesem
Falle trat Susi endlos auf der Stelle.
Code:
function NTM_MoveTo(x, y, retry, clearpath)
{
debugPrint("ntm moveto x:"+x+" y:"+y );
var tempAction = currentAction;
var _walk;
var _path;
var _result;
var _retry = 0;
if(!NTC_WaitCastDone())
return false;
if(x == me.x && y == me.y)
return true;
if(arguments.length < 3)//TODO
retry = 3;
if(arguments.length < 4)
clearpath = false;
_path = undefined;
while(Math.abs(me.x-x) > 4 || Math.abs(me.y-y) > 4){//Aus NTM_TeleportTo geklaut
_walk=wantWalk();
if (_walk)
_path = getPath(me.area, me.x, me.y, x, y,false);
else
_path = getPath(me.area, me.x, me.y, x, y,true,40);
if(!_path && !_walk) //tele path failed trying walking path
_path = getPath(me.area, me.x, me.y, x, y,false,40);
if(!_path)
{
print("getpath("+me.area+","+me.x+","+me.y+","+x+","+y+","+!_walk+") failed");
return false;
}
var i=0;
while(i<_path.length-1 && Math.abs(me.x-_path[i].x) <= 4 && Math.abs(me.y-_path[i].y) <= 4)
i++;
if(i==_path.length-1)
return true;
if (tempAction != currentAction) {
print("breaking Out of Moveto");
return false;
}
if(_walk)
_result = NTM_WalkTo(_path[i].x, _path[i].y);
else
_result = NTM_TeleportTo(_path[i].x, _path[i].y);
}
return true;
}
Code:
if(me.mp<me.mpmax*0.9)
aufheben.
03.11.11, 10:00
Es wird Zeit, weiterzumachen. Aber dazu ist der Bot einfach zu dumm.
SimonSays hilft.
Erstmal das Verzeichnis scripts-ntbot/output erstellen.
Und neue Tasten entdeckt.
Die ^-Taste (links neben der 1) cleart automatisch das Gebiet.
Und die e-Taste schickt sie in die Stadt.
Kleine Verbesserung für mich:
Code:
if (key == SimonEscToTown) { // escape to town
StopObjective();
currentAction ="Escaping to town";
NTTM_CheckAct();
NTTMGR_TownManager();
NTTM_TownMove("portalspot");
currentAction ="";
}
03.11.11, 12:30
Susi hat echt keine Ahnung, was Türen sind. Und mit ihren bescheinen Teleport-Fähigkeiten, konnte sie kaum was alleine
machen. Trotzdem war es gut, daß sie allene Sachen aufhebt und sich auskennt.
Also die Tasten / und * und - für voriges Level, Pont of Interest und nächstes Level.
Und sagt man "get wps" geht sie zum nächsten Wegpunkt.
Naja, wegen der vielen Türen klappte das nicht. Aber POI war sehr fein, damit sie sagt, in welcher der vier Richtungen der
Zaubberer ist.
lv22 erreicht. Ich halte die Stärke mal auf 30 und mache den Rest in Vitalität.
Und Feuerball halte ich auf halb so viel wie Wärme.
So, bin im Canyon of the Magii. Ah, keine Türen! Hier darf sie bis morgen rumbotten.
Dazu nehme ich mir das Duriel-Script und schlachte es aus. Das geht ruck zuck und ist voll easy.
Code:
function NT_Canyon()
{
var _tileid;
print("ÿc3Starting Canyon Script");
if (me.area != 46)
{
if (!NTTM_CheckAct())
throw new Error();
NTTMGR_TownManager();
print("ÿc8Going to Canyon of the Magi");
if (!NTTM_TownMove("waypoint"))
throw new Error();
if (!NTM_UsePortal("Waypoint", 46))
{
print("ÿc8Seems we do not have the waypoint, Lets go get it! Traveling to Canyon of the Magi");
NTM_TravelTO(46);
print("ÿc8Interacting with Waypoint as we don't have it.");
NTM_GotoWaypoint(46, true, 10000);
}
}
print("ÿc5Precasting");
NTP_DoPrecast();
if(!NTA_ClearRooms())
throw new Error();
return true;
}
03.11.11, 14:00
Haha, Schreibfehler! Aber nicht im Code.
Der Dateiname war NTCanyion.dbl statt passend zum Funktionsnamen NTCanion.dbl
So, dann man wieder botten. :)
Und der Merc darf sich einen Blitz-Bogen wünschen.
Code:
Quality > magic : Dexterity = 1000 ;Type = Gold Type = Bow : Sockets >= 2 Type = Orb : MaxMana >= 10 Type = Shield : MaxMana > 10 Type = Amulet : MaxMana >= 10 Type = Ring : MaxMana >= 10 Type = Belt : MaxMana >= 10 Type = Gloves : MaxMana >= 1 Type = Helm : MaxMana >= 10 Type = Armor : MaxMana >= 10 Type = Boots : MaxMana >= 1 Name = Minor Healing Potion Name = Light Healing Potion Name = Healing Potion Name = Greater Healing Potion Name = Super Healing Potion Name = Minor Mana Potion Name = Light Mana Potion Name = Mana Potion Name = Greater Mana Potion Name = Super Mana Potion Name = Chipped Topaz Name = Flawed Topaz Name = Topaz Name = Flawless Topaz Name = Perfect Topaz Name = Tal rune Name = Ral rune Name = Ort rune