[Realease] Muddy's Waypoint Catcher

07/15/2010 16:33 Muddy Waters#1
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 Wegpunkte direkt übergeben kann
- Wahlweise mit Töten auf dem Weg befindlicher Monster
- Wenn die TP Funktion deaktiviert ist, startet der Bot vor dem ersten nicht-vorhandenen Wegpunkt bzw. überspringt den Akt, wenn alle Wegpunkte vorhanden sind
- Der Wegpunkt Worldstone Keep Level 2 wird auf nightmare und hell nur geholt, wenn die Quest "Rite of Passage" bereits abgeschlossen ist

Bekannte Probleme und Anmerkungen:
Es gibt Probleme mit der Wegfindung in den Ebenen Jail Level 1-3. Es ist zwar eine Funktion enthalten, die das versucht zu umgehen, trotzdem kann es dort mal zu einem Festhängen kommen. Ich überleg mir dafür noch eine elegantere Lösung. Übrigens kann es auch vorkommen, dass der Wegpunkt dort übersprungen wird. :(
In der aktuellen Version ist dieser Teil deshalb ganz draußen gelassen.

In Verbindung mit dem Script tritt gerne mal der bekannte D2 Bug auf, bei dem man nichts mehr Anklicken kann. In dem Fall hilft nur das Spiel zu verlassen (wobei es nach Wiedereintritt in dasselbe Spiel wieder geht).

Installation:

Ich habe hier bewusst auf Funktionen aus meiner modifizierten D2NT Version verzichtet, damit das ganze für jeden einsetzbar ist.
Sollte da doch was drin sein, was nicht im Standard D2NT enthalten ist, bitte melden, ich sehe das bei mir nicht so direkt. ;)

Ich musst die NTTownMove.ntl minimal anpassen bzw. einen Fehler darin korrigieren, darum ist diese auch im Download enthalten. Ansonsten werden aber keine weiteren veränderten common library files benötigt.

Es gibt vier Variablen, diese müssen in der NTConfig.ntl wie folgt deklariert werden:
Code:
[COLOR=Navy][B][I]var[/I][/B][/COLOR] NTConfig_ClearWaypointPaths;
[COLOR=Navy][B][I]var[/I][/B][/COLOR] NTConfig_SkipHallsOfPain;
[COLOR=Navy][B][I]var[/I][/B][/COLOR] NTConfig_TPWaypoints;
[COLOR=Navy][B][I]var[/I][/B][/COLOR] NTConfig_WaypointCatcherActs;
Wir haben es hier mit einem Bot Skript wie jedem anderen zu tun, welches demnach in den Ordner bots gehört und wie folgt in der Char Config aufgerufen wird:
Code:
NTConfig_Script.push([COLOR=DimGray]"MWWaypointCatcher.ntj"[/COLOR]); NTConfig_WaypointCatcherActs = [[COLOR=Red]1[/COLOR], [COLOR=Red]2[/COLOR], [COLOR=Red]3[/COLOR], [COLOR=Red]4[/COLOR], [COLOR=Red]5[/COLOR]]; NTConfig_TPWaypoints = [COLOR=Navy][I][B]true[/B][/I][/COLOR]; NTConfig_SkipHallsOfPain = [I][B][COLOR=Navy]true[/COLOR][/B][/I]; NTConfig_ClearWaypointPaths = [COLOR=Navy][B][I]false[/I][/B][/COLOR];
In das Array kommen alle Akte, in denen ihr Wegpunkte suchen wollt. Wollt ihr Beispielsweise nur die Wegpunkte in Akt 1, schreibt ihr dort auch nur eine 1 rein.
Die zweite Variable kennzeichnet den "Übergabemodus", also ob an jedem gefundenen Wegpunkt direkt ein Portal gemacht wird, damit sich andere Chars im Spiel diese direkt schnappen können.
Die beiden anderen Variablen sollten für sich selbst sprechen. ;)

Und das war es eigentlich auch schon. Kritik, Anregungen und Fragen sind natürlich wie immer erwünscht. :)

Viel Spaß beim Ausprobieren!

P.S.: Das Archivpasswort lautet "muddy". ;)
07/15/2010 16:52 sataan1337#2
#first ^^

danke dir ;) werds später mal testen
07/15/2010 17:01 andreas4#3
Klasse, wird heute Abend gleich mal ausprobiert!
07/15/2010 18:18 proezler#4
Yo Danke...

Ich weiss zwar nicht obs den Namen vorher schon so gab aber wenn nicht bin ich stolz das du es nach meinem Vorschlag "Waypoint Catcher" genannt hast! Much thx an dich and thumbs up. Klasse Arbeit
07/15/2010 18:57 Muddy Waters#5
Quote:
Originally Posted by proezler View Post
Yo Danke...

Ich weiss zwar nicht obs den Namen vorher schon so gab aber wenn nicht bin ich stolz das du es nach meinem Vorschlag "Waypoint Catcher" genannt hast! Much thx an dich and thumbs up. Klasse Arbeit
Na das freut mich doch. :)

Auch wenn ich ehrlich gesagt nicht lange drüber nachgedacht habe, wie ich das ganze nenne, ich hatte genug andere Dinge über die ich nachdenken durfte. :D

Lg
Muddy
07/15/2010 19:39 Sindrome_X#6
Funktioniert super, hab's grad schon direkt ausprobiert ^^

Sachen die ich nebenbei bemerkt habe (alles nich so wild aber is halt aufgefallen ^^):

- Nachdem er A1 Jail übersprungen hat, is er in Jail3 bis Gamemaxtime im Kreis teleportiert. Hab also A1 aus der Char-Config gelöscht, damit er direkt bei A2 weitermachen konnte.

- Weiß nich, ob die SKip-Akt-Funktion geplant war, aber funktioniert hat sie bei mir auf jeden Fall nich. (drum das rauslöschen in der Char-Config ^^)

- Bot kauft mit dem Script keine TP's nach, er postet zwar die Nachricht, dass ein TP geöffnet is, da aber keine da sind, wird keins aufgemacht.

Sonst klasse Arbeit, erspart einem verdammt viel rumgeporte und Gesuche ^^.
Sollte btw grade für LvL-Service interessant sein, wenn man sich Waypoints-Vergabe extra bezahlen lässt :>

Thx von mir haste auf jeden Fall ^^
07/15/2010 20:28 andreas4#7
Funktioniert super!

Bis auf Gefängnis hat der Bot alle WPs gefunden. Das im-Kreis-Teleportieren hatte ich auch, aber einmal kurz manuell woanders hinteleporten hat ausgereicht, dass der Bot sich wieder gefangen hat.

Evtl. könnte man die bereits vorhandenen WPs vielleicht auslassen oder auch verwenden. Ist vermutlich aber ein riesiger Programmieraufwand nur wegen ein paar Sekunden Zeitersparnis...

Geht das ganze übrigens auch, wenn man noch kein Teleport hat? Dann könnte man mit ein paar Attack-Anweisungen den Bot gleich noch automatisch leveln lassen und erspart sich das rushen :D

Ich bin auf jeden fall ziemlich begeistert!
07/15/2010 20:31 Muddy Waters#8
Quote:
Originally Posted by Sindrome_X View Post
Funktioniert super, hab's grad schon direkt ausprobiert ^^

Sachen die ich nebenbei bemerkt habe (alles nich so wild aber is halt aufgefallen ^^):

- Nachdem er A1 Jail übersprungen hat, is er in Jail3 bis Gamemaxtime im Kreis teleportiert. Hab also A1 aus der Char-Config gelöscht, damit er direkt bei A2 weitermachen konnte.

- Weiß nich, ob die SKip-Akt-Funktion geplant war, aber funktioniert hat sie bei mir auf jeden Fall nich. (drum das rauslöschen in der Char-Config ^^)

- Bot kauft mit dem Script keine TP's nach, er postet zwar die Nachricht, dass ein TP geöffnet is, da aber keine da sind, wird keins aufgemacht.

Sonst klasse Arbeit, erspart einem verdammt viel rumgeporte und Gesuche ^^.
Sollte btw grade für LvL-Service interessant sein, wenn man sich Waypoints-Vergabe extra bezahlen lässt :>

Thx von mir haste auf jeden Fall ^^
Na das klingt doch mal nach konstruktiver Kritik. :)

Das Jail ist sone Sache...man könnte es fast schon als Ärgerniss bezeichnen, die D2NT Standardfunktionen machen dort einfach nicht mit. :(
Keiner will gerne ins Gefängnis, scheinbar ist das bei D2NT genauso...
Ich muss mir da nochmal was besseres zu Überlegen, eventuell schaue ich mir auch mal ein paar Varianten des Ausbaus an, sofern das endlich viele sind sollte das auch so kein Problem sein.

Die Skip Funktion funktioniert, bei dir hing er aber wahrscheinlich in einer Schleife, sodass er nicht zu dem Punkt kam, an dem er darauf reagiert hätte. Kannst das ja mal im "Normalbetrieb" testen, da sollte es gehen.

Guter Hinweis. Obwohl er das theoretisch machen sollte, wenn er in der Stadt ist. Aber sei es drum, ist geändert und wird mit dem nächsten Update besser.
Ist ja auch nicht wirklich problematisch, schließlich steht der Char ja direkt auf einem Wegpunkt wenn ihm die TPs ausgehen. :)

Lg
Muddy

@Andreas
Prinzipiell wäre der Aufwand nichtmal sooo groß, da das Script ohnehin so geschrieben ist, dass er in der Ebene startet, in der er gerade ist. Das ganze ist also kein reiner Ablaufplan, vielmehr gibt es einen Ablauf für jede einzelne Ebene. Wenn du den Char beispielsweise irgendwo in Travi hinstellst und dann anstellst, wüsste der Bot, dass er dort einen Wp holen muss und sich danach über eine Treppe in den Kerker begeben muss. Dort angekommen weiss er dann wieder was er in der Ebene machen muss.
Denke das könnte man einbauen, ich werds mir mal anschauen.

Teleport ist aber definitiv Pflicht, tut mir Leid. :(
Laufen kann man nur wirklich gut in Ebenen umsetzen, die immer identisch sind. Sobald es variabel wird, hängt der Bot wohl oder übel an der nächstbesten Ecke fest.
07/15/2010 21:03 EinfachIrgendwer#9
Habe es gerade eben auch mal getestet. Klappt soweit alles gut, sogar im Gefängnis. Was mich stört ist, dass der den Nihla-WP in Akt 5 holt. Je nachdem, ob man mit dem Char mit der schnellen oder langsamen Variante Pindle'ln möchte, ist das nicht so geschickt.

Kannst du hierfür noch eine Variable einbauen?

Was mir auch aufgefallen ist - wenn ich das WP-Skript oberhalb meiner normalen Boss-Skripte reinsetze und danach noch eines von denen Laufen lasse, laggt das Spiel wie verrückt. Eventuell stimmt am Ende des Skriptes noch irgendwo etwas nicht.
07/15/2010 21:21 Muddy Waters#10
Quote:
Originally Posted by EinfachIrgendwer View Post
Habe es gerade eben auch mal getestet. Klappt soweit alles gut, sogar im Gefängnis. Was mich stört ist, dass der den Nihla-WP in Akt 5 holt. Je nachdem, ob man mit dem Char mit der schnellen oder langsamen Variante Pindle'ln möchte, ist das nicht so geschickt.

Kannst du hierfür noch eine Variable einbauen?

Was mir auch aufgefallen ist - wenn ich das WP-Skript oberhalb meiner normalen Boss-Skripte reinsetze und danach noch eines von denen Laufen lasse, laggt das Spiel wie verrückt. Eventuell stimmt am Ende des Skriptes noch irgendwo etwas nicht.
Ersteres ist an sich kein Problem. Aber würdest du mich was Pindle angeht erleuchten? Ich sehe nämlich das Problem nicht. :)

Zweiteres klingt eher unwahrscheinlich, ich halte aber trotzdem mal ausschau. ;)

Lg
Muddy
07/15/2010 22:19 XxArenaxX#11
Dasmit dem Nila Wp wäre sehr gut wenn du das noch einbauen könntest^^ Sobald du den Wp bei Nila hast, verschwindet das rote Portal bei Anya. Ist dann halt ärgerlich wenn man den weiten Weg zu Pindle muss und Nila zB gar nicht machen will. (Oder muss man auch Nila töten + Wp holen damit das Portal bei Anya verschwindet? Nicht mehr sicher-.-)
07/15/2010 22:38 Muddy Waters#12
Quote:
Originally Posted by XxArenaxX View Post
Dasmit dem Nila Wp wäre sehr gut wenn du das noch einbauen könntest^^ Sobald du den Wp bei Nila hast, verschwindet das rote Portal bei Anya. Ist dann halt ärgerlich wenn man den weiten Weg zu Pindle muss und Nila zB gar nicht machen will. (Oder muss man auch Nila töten + Wp holen damit das Portal bei Anya verschwindet? Nicht mehr sicher-.-)
Und warum macht dann meine Sorc munter weiter Pindle runs über genau dieses Portal, während sie den Wegpunkt hat? ;)

Imho geht es hier um die Nihla Quest und nicht um irgendwelche Wegpunkte, aber ich lasse mich immer gerne eines besseren belehren.

Lg
Muddy
07/15/2010 23:24 Tyon#13
Einige bevorzugen Pindle über das Portal + Nihlatak zu machen, da Pindle doch schon reinhaut wenn man mitten in seinem Mob auftaucht.

Das rote Portal verschwindet sobald du das WP und Nihlatak getötet hast.
Zudem erlaubt das Portal auch das angenehme Anya shoppen.
07/15/2010 23:32 Muddy Waters#14
Quote:
Originally Posted by FrEeDoMe View Post
Einige bevorzugen Pindle über das Portal + Nihlatak zu machen, da Pindle doch schon reinhaut wenn man mitten in seinem Mob auftaucht.

Das rote Portal verschwindet sobald du das WP und Nihlatak getötet hast.
Zudem erlaubt das Portal auch das angenehme Anya shoppen.
Wie ich qualifizierte Antworten schätze! :)

Besten Dank, mit dem nächsten Update wird dafür eine Variable vorgesehen sein.

Lg
Muddy
07/16/2010 01:31 Diablofarmer#15
hab nich alle posts gelesen, da ich totmüde bin

Code:
var _journal;

    _journal = NTC_FindUnit(NTC_UNIT_OBJECT, 357, 10);

    if(_journal)
    {
        NTC_OpenChest(_journal);
        NTC_Delay(200);
        me.Cancel(0);
        me.Cancel(1);
    }
sollte meines Wissens nach funzen. wenns schon gelöst ist , sry :)