Njom's Guide to Chestbotting. Scripts included. D2NT

12/28/2010 01:54 BallersAcc2#106
ich nochma :D
jo also bei mir waren die funde uch fürn ...
aber jetz meine frage :D
wie kann ich meinen pala auch das game joinen lassen so das er da mft solange der baba sein run macht
bzw oda so das der pala nur joint und rumsteht bis baba leavt :D
thx schonma

ps hab grade keine zeit sufu zu nutzen sorry :D
aber frühschicht liegt gleich an :D
12/28/2010 01:58 njomnjomnjom#107
Quote:
1) Mit dem Weapon Switch scheinst zum Teil Probleme zu geben.
Jop weisich, da war ich einfach zu faul. Ein Chestbarb hat weaponswitch sowieso auf false also spielt es keine Rolle hab ich mir gedacht :P
Dann ist mir aufgefallen, dass z.b. Bluebird die Weaponswitch funktion nicht drinhat.
Vielleicht regel ich das morgen mal, ist ja schnell gemacht im Grunde.
***(unten Erklärung lesen)

Quote:
2) Die "PAUSE" Funktion/Taste geht nicht.
Das hab ich schon beim testen gemerkt, ehrlich gesagt weis ich grad garnicht warum das so ist, es ist aber im Grunde gut. Auf diese weise können assis wie die Ersteller vom MBbot das nicht einfach klauen ohne ihren ruf zu verlieren.

Quote:
3) Er ignoriert trotz eingestellt, alle Truhen aufm Weg.
Soll er auch aber ja, fals man es trotzdem unbedingt habenmag dann ist es verbuggt. ***(unten Erklärung lesen)

Quote:
4) Er verkauft nach jedem Script wechsel die Crap Items die er für Gold aufgehoben hat, kann man das da nicht machen, dass er nur, wenn er voll ist das macht?
Ist glaube nur mit aufwändigen Änderungen möglich, da das über die NTTM gesteuert wird welche auch die Pots besorgt und Ausrüstung repariert.
(Ein weiterer Grund faster runwalk zu skillen.)



**Die Erklärung:

Beim D2NT werden Bossinstanzen nicht als Function sondern unsinnigerweise als eigenständiges Script definiert.

Wenn jetzt Modder X in unserem Fall z.b. Muddy eine neue übergeordnete Funktion einführt muss diese in jedes einzene Bossscript integriert werden.

Ein Beispiel wäre der Weaponswitch, Er ist nur eine Ja/Nein Abfrage in der Charconfig, wenn er auf Ja steht, muss in jedem einzelnen Bosscript eine Abfrage erfolgen ob es Ja oder nein ist, die dann zur Handlung führt.

Wenn jetzt Person X z.b. Ich ein Bosscript macht muss er es ebenfalls einbauen. Und ich bin halt faul, da der Weaponswitch bei einem Chestbarb sowas von latte ist hab ich darauf nicht geachtet.

Ich habe ja nur 2 Möglichkeiten:
1. Entweder ich baue es ein und die Scripts laufen nicht mit anderen Versionen als Sterni, oder:
2. ich baus nicht ein, und die Scripts gehen mit jedem nt, ABER im Sterni geht die weaponswitch nichtmehr.
(Wie du siehst hab ich Möglichkeit 3 :D gewählt und somit gehts bei manchen Scripts bei manchen nicht xxxD)

Im Grunde wäre es sinnvoller, wenn die Weaponswitch funktion anders aufgebaut wäre.
Sie sollte eigentlich die Ja/Nein frage in der Config stellen und dann in der NTMove beim Abruf der jeweiligen Move funktion prüfen ob die Variable definiert ist, wenn sie nicht definiert ist sollte sie übersprungen werden, und wenn sie definiert ist sollte geprüft werden welcher slot aktiv ist und wenn der falsche aktiv ist sollte geswitcht werden und wenn nicht sollte weitergetelt werden.

Ja BlaKeks jetzt hab ich den Megatext geschrieben ^^
Ich hau morgen mal die Weaponswitch Abfragen raus wenn ich Zeit hab.


[Edit:]
Quote:
wie kann ich meinen pala auch das game joinen lassen so das er da mft solange der baba sein run macht
bzw oda so das der pala nur joint und rumsteht bis baba leavt
thx schonma

ps hab grade keine zeit sufu zu nutzen sorry
aber frühschicht liegt gleich an
Und ich opfere genügend Stunden meiner Lebenszeit um anderen Menschen den Wald vor lauter Bäumen zu zeigen.
"Entry point" auf "leechbot" anstatt "bot" im Manager mehr sag ich ned. ;) Bist ja kein Neuling, ich denke die Info reicht dir.
12/28/2010 02:31 HK18#108
Quote:
Originally Posted by BallersAcc2 View Post
ich nochma :D
jo also bei mir waren die funde uch fürn ...
aber jetz meine frage :D
wie kann ich meinen pala auch das game joinen lassen so das er da mft solange der baba sein run macht
bzw oda so das der pala nur joint und rumsteht bis baba leavt :D
thx schonma

ps hab grade keine zeit sufu zu nutzen sorry :D
aber frühschicht liegt gleich an :D

[Only registered and activated users can see links. Click Here To Register...]

schau mal hier, das ist einfach genial =) der sucht sich dann games aus deiner liste, ich zb habe dort baal dia drin und das funktioniert einfach super^^


wenn du es nicht verstehst oder probleme hast schrei xP



ach edit:

ich lasse den tollen script, danke an dieser stelle mein freund =), mit meiner sorc laufe, sie hat zitterarmor, telekinese, energieschild, wärme, und rest in tele drin geskillt. als eqip hat sie nen 3er bo, wizzy, mara 20, shako(um),viper(um), lidless(pdia), arach, 2x soj, frostis, silkweave, inventar tp buch =) der char kostet fast nichts. dazu habe ich von redvex den fastmod an =), also wenn du keine kohle für eni hast, ist dies die billig variante^^
12/28/2010 15:32 njomnjomnjom#109
Bin gerade dabei die gestern versprochenen Änderungen Vorzunehmen, dabei ist mir aufgefallen, dass ich ja es ja tatsächlich geschafft habe 4 ! unterschiedliche Openchest Funktionen für die Glitzertruhen zu verwenden :D

Versteht mich nicht falsch, bei mir gehen die alle 4 wunderbar, aber wie wir gesehen haben hat es bei manchen zu Bugs geführt die mir damals unerklärlich waren ("Mein bot lässt truhen aus") --> Bei mir lässt er nie welche aus :) Aber ich hab mich dem Problem jetzt trotzdem mal angenommen.

Hier die 4 Funktionen die ich jeh nach Script verwendet habe:
Code:
	if(NTConfig_OpenChest)
	{
		var _chest;

		_chest = NTC_GetSpecialChest();

		if(_chest)
		{
			if(NTC_OpenChest(_chest))
				NTSI_PickItems();
		}
	}
Code:
if(NTConfig_OpenChest)
	{
		var _chest;

		_chest = NTC_GetSpecialChest();

		if(_chest)
		{
			if(NTM_MoveTo(_chest.areaid, _chest.x+1, _chest.y))
			{

				NTC_OpenChest(_chest);

				NTSI_PickItems();
			}
		}
	}
Code:
var _chest = NTC_FindUnit(NTC_UNIT_OBJECT, GetLocaleString(3260), 1);

      if(_chest)
         
         do
         {
            if(GetDistance(me.x,me.y,_chest.x,_chest.y) < 5 )
               if(NTC_OpenChest(_chest))
               {
                  NTSI_PickItems();
                  if(NTConfig_ClearChestPosition)
                     NTA_ClearPosition(20,true);
                  break;
               }

            
         }while(_chest.GetNext());
Code:
if(NTConfig_OpenChest)
    {
        var _chest;

        _chest = NTC_GetSpecialChest();

        if(_chest)
        {
            if(!NTM_MoveTo(me.areaid, _chest.x+1, _chest.y))
            {
                NTC_SendMsgToScript("NTBotGame.ntj", "NTM_MoveTo()");
                return;
            }
		
            NTC_OpenChest(_chest);

            NTSI_PickItems();

        }
        }
So :D 4 möglichkeiten die truhen zu öffnen, ich denke ihr seht jetzt schon welche Probleme bereitet haben könnte. (Ich weis zwar nicht warum weil es bei mir und vielen anderen fehlerfrei geht aber gut :P müssen wa was machen.

Nr. 2 wird also vollständig in die Tonne gekloppt.

Von Nr. 4 übernehmen wir:
Code:
            if(!NTM_MoveTo(me.areaid, _chest.x+1, _chest.y))
            {
                NTC_SendMsgToScript("NTBotGame.ntj", "NTM_MoveTo()");
                return;
            }
Den Rest kloppen wir ebenfalls in die Tonne.
Nr3. Wird nur im Tombchest verwendet, und ich würd sagen die bleibt so wie sie ist, aber die Distanzabfrage ist ganz nett, die können wir noch übernehmen.

So, um ganz ganz sicherzugehen setzen wir das ganze in ne simple Schleife.
Er soll 5 ! mal versuchen die doofe Chest zu öffnen und jedesmal schauen, dass er direckt neben ihr steht.

Die Chest wird über:
Code:
function NTC_GetSpecialChest()
{
	var _chest;

	_chest = NTC_FindUnit(NTC_UNIT_OBJECT, GetLocaleString(3260));

	if(_chest)
	{
		do
		{
			switch(_chest.classid)
			{
			case 455:
			case 354:
			case 355:
			case 356:
			case 397:
			case 405:
			case 406:
			case 407:
				return _chest;
			}
		} while(_chest.GetNext());
	}

	return null;
}
gefunden, die Funktion ist eigentlich ideal. Aber wir bauen trotzdem noch einen letzten Verzweiflungsschlag ein.

Dabei Rauskommen tut bei nem Vogel wie mir dashier:
Code:
if(NTConfig_OpenChest)
	{
		var _chest;

		_chest = NTC_GetSpecialChest();

		if(_chest)
		{
			if(!NTM_MoveTo(me.areaid, _chest.x+1, _chest.y))
			{
				NTC_SendMsgToScript("NTBotGame.ntj", "NTM_MoveTo()");
				return;
			}

			for(i = 0; i <= 5; i++)
			{
				if(GetDistance(me.x,me.y,_chest.x,_chest.y) < 5 )
				{
					if(NTC_OpenChest(_chest))
					{
						NTSI_PickItems();
						break;
					}
				}
				else
				{
					Print("ÿc8Gegner mit Knockback???");
					NTM_MoveTo(me.areaid, _chest.x+1, _chest.y)
				}
			}
			
		}
		else
		{
			Print("ÿc8Keine Chest gefunden.");
			Print("ÿc8Verzweiflungsschlag wird ausgeführt.");

			var _randomchest;

			_randomchest = NTC_FindUnit(NTC_UNIT_OBJECT, GetLocaleString(3260));	

			if(_randomchest)
			{
				if(!NTM_MoveTo(me.areaid, _randomchest.x+1, _randomchest.y))
				{
					NTC_SendMsgToScript("NTBotGame.ntj", "NTM_MoveTo()");
					return;
				}

				for(i = 0; i <= 5; i++)
				{
					if(GetDistance(me.x,me.y,_randomchest.x,_randomchest.y) < 5 )
					{
						if(NTC_OpenChest(_randomchest))
						{
							NTSI_PickItems();
							break;
						}
					}
					else
					{
						Print("ÿc8Gegner mit Knockback???");
						NTM_MoveTo(me.areaid, _randomchest.x+1, _randomchest.y)
					}
				}
			
			}
			else
			{	
			Print("ÿc8Scheisse");
			}	 
		}
	}
Ich seh Schon Muddy würds ned gefallen :P 72 Zeilen um eine Truhe zu öffnen.
Ich geh jetzt einkaufen, danach teste ich die neue Funktion. Bitte schreibt in der Zwischenzeit fals ihr einen Fehler oder Denkfehler erkennt !!!
12/28/2010 15:44 flow-jow#110
Könntr das evtl auch was mit der cast-rate zu tun hat?

Habe mal ein anderes script (lower kurast - das was denk ich mal jeder von den anderen bots bereits kennt[€2: macht alle kurats+tempel]) mit der sorc gemacht und funzt problemlos.
Mein organ-bot jrdoch macht aus gründen der spiellänge dies u.a. Auch mit. Er telt aus equipgründen ziemlich langsam, und lässt dort auch die truhen aus.

Im startpost steht was von 200fcr ist das script evtl auf die 200fcr ausgelegt, und mit niedrigeren raten ist der klick-delay vielleicht einfach zu schnell? oder irgendwie sowas in der art?


€: der Pala läuft auf dem Etal-Bot. hab ihn seit gestern am laufen. ist eigentlich ganz nett. wurde hier im Forum nur kurz mal erwähnt...
er muss generell viele sachen öfter aufheben, die werden dann auf öfter im screentext angezeigt, und wenn was dabei war, was nicht identifiziert werden muss, dann auch direkt im Itemlog.

bei der sorc allerdings kein problem. deren fcr liegt bei 110 atm
vielleicht is die einfach zu langsam... hehe

das chestscript ist dort noch nicht drin, aber das werd ich sicher mal probieren
12/28/2010 21:52 njomnjomnjom#111
UPDATE

Was geändert wurde:

1. Alle Scripts verwenden jetzt die selbe, neue, ellenlange Openchestfunktion anstatt wie früher 4 unterschiedliche. Keinerlei Ausgelassene Truhen oder Fehler im test.
Fals trotzdem Fehler auftreten bitte melden.

2. Es gibt nun 2 Versionen. Eine Für alle, und eine für D2NT's mit weaponswitchfunktion. Die mit Weaponswitchfunktion hab ich nicht getestet, falls Fehler auftreten bitte melden.

3. Fälschlicherweise noch vorhandene Clearposition Befehle entfernt. So kann auch mit falsch eingestellter Charconfig wenigstens hier kein Fehler auftreten.

4. 50 ms Delays eingefügt.

5. Bei manchen Scripts den Quelltext weng besser sortiert, manche sehen aber immernoch blöd aus :D

Glaub das wars.

All diejenigen der 110 Personen die die Scripts bis jetzt heruntergeladen haben und irgendwelche probleme Hatten bitte neu runterladen.
Alle bei denen es fehlerfrei läuft dürfen auch, aber.. naja k.p. never touch a running system xD
12/28/2010 21:59 Denny456#112
erstmal ein thanks das du es geupdatet/d hast aber habe beim selber spielen gesehn das es auch superchests in der wurmgruft lvl 1,2 und 3 giebt könntest du die eventuell auch noch hinzufügen? der vollständigkeit halber.
und werde sie sofort testen
12/28/2010 22:12 flow-jow#113
von mir auch vielen Dank für deine Mühe... doch nun muss ich leider auch sagen das es bei mir nicht funktioniert.

also das script etc sind angenommen, sie telt auch fleißig an die entsprechenden orte... nur die superchests bleiben nach wie vor verschlossen...angeklickt werden sie auch definitiv. hab auch geschaut ob ich keys im inventar hab....

bin weiter auf fehlersuche...

glitzertruhen sind aber weiter astrein...
12/28/2010 22:21 njomnjomnjom#114
Quote:
erstmal ein thanks das du es geupdatet/d hast aber habe beim selber spielen gesehn das es auch superchests in der wurmgruft lvl 1,2 und 3 giebt könntest du die eventuell auch noch hinzufügen? der vollständigkeit halber.
und werde sie sofort testen
Es gibt überall Superchests. Auch im Blutmoor und auf der kalten Ebene.
Die einzigen die vielleicht noch lohnenswert wären vom Teleportaufwand wäre möglicherweise die im Flammenfluss.
Ich kuck mal.

Quote:
also das script etc sind angenommen, sie telt auch fleißig an die entsprechenden orte... nur die superchests bleiben nach wie vor verschlossen...angeklickt werden sie auch definitiv. hab auch geschaut ob ich keys im inventar hab..
Ich hab nur die Glitzerchests verbessert mit diesem Update.
Du hast Diablo2 auf englisch oder? (Einfach um noch ne mögliche Fehlerquellen abzufragen.)

Die Funktion die die Superchests (Nicht Glitzerchests) öffnet sieht wie folgt aus:

Code:
   _unit = GetPresetUnits(me.areaid, NTC_UNIT_OBJECT);

   if(_unit)
   {
      for(n = 0 ; n < _unit.length ; n++)
      {
         if(_unit[n].id == 580)
         {
            NTM_MoveTo(me.areaid, _unit[n].roomx*5+_unit[n].x, _unit[n].roomy*5+_unit[n].y);
            
            _chest = NTC_FindUnit(NTC_UNIT_OBJECT, "chest");
            if(_chest)
               {
                  do
                  {
                     if(NTC_OpenChest(_chest))
                     NTSI_PickItems();
                  }while(_chest.GetNext());
               }
         }
         
      }
   }
12/28/2010 22:33 Denny456#115
so ma ebn so nen kleiner zwischen stand nach nur 3 runs aber es ist mir aufgefallen das er die chest in der grube lvl2 nicht gefunden wird und dann was ausspuckt von wegen blablabla scheiße notfall blablabla
12/29/2010 01:27 njomnjomnjom#116
UPDATE 2

Änderungen:

GrubeChest verwendet nun nichtmehr X Y koordinaten sondern peilt die Superchest direckt an.

Danke an Denny456
12/29/2010 02:19 Denny456#117
Bitte schön habe sie grade eben ersetzt und teste sie grade und bekommst gleich nach 4-5 runs ein feedback editiert

€:funzt super keine fehler bei 5 runs
12/29/2010 12:42 Muddy Waters#118
Teilweise ganz schön kompliziert. ;)
Ich sage nur, was man von mir hören will. :p

Stichwort Pause Funktion:
Das wird daran liegen, dass du neue Skripte erstellst und dann keinen Manager Neustart durchführst. Skripte sind an sich auch wieder Objekte und es sind nur die Skripte als Objekte verfügbar, die sich zum Startzeitpunkt im Ordner befinden. Alles andere existiert nicht.

Willst du nun pausieren, würde normalerweise das Objekt des laufenden Skripts gesucht und bei diesem die Stop() Methode ausgeführt. Da das Skript aber aus Sicht des Managers nicht existent ist, schlägt die Suche fehl und folglich auch das Anhalten. ;)

Ich gebe zu, der Fehler ist so nicht nachvollziehbar, wenn einem dieses Hintergrundwissen fehlt, hat mich in meiner Anfangszeit auch einige Nerven gekostet. :)

Lg
Muddy
12/30/2010 00:50 njomnjomnjom#119
Die Scripts lassen sich teilweise auch nach X maligem restart des managers als auch des Spiels nicht pausieren.

Probiers aus ;)
01/10/2011 18:59 ghostface88#120
mhh bis auf GrubeChest.ntj sind alle anderen verschlüsselt
ich frag mich was fur ein pw is das oder wo bekomm ichs her

danke