[Release] Muddy's D2NT

06/20/2010 04:15 Diablofarmer#31
jo also Dauer, Xp, Realtive Xp und Gold funktionieren jetzt , basierend auf der originalen NTBotGame.ntj ..
lvl up Nachricht muss ich noch gucken, aber nich jetzt :P

aber Muddy funktioniert bei dir die Anzeige für verbrauchte Pots & gesammelte Items ? selbst mit deiner BotGame wird mir da nie was von angezeigt :(

edit: errors geht auch nich :(
edit2: edit1 hat sich erledigt :)
06/20/2010 10:13 Muddy Waters#32
Quote:
Originally Posted by Diablofarmer View Post
jo also Dauer, Xp, Realtive Xp und Gold funktionieren jetzt , basierend auf der originalen NTBotGame.ntj ..
lvl up Nachricht muss ich noch gucken, aber nich jetzt :P

aber Muddy funktioniert bei dir die Anzeige für verbrauchte Pots & gesammelte Items ? selbst mit deiner BotGame wird mir da nie was von angezeigt :(

edit: errors geht auch nich :(
edit2: edit1 hat sich erledigt :)
Klar, bei mir funktioniert alles. ;)
Das mit den gesammelten Items und Tränken kann natürlich nur funktionieren, wenn die anderen Scripte, die für diese Sachen zuständig sind, jeweils Daten an die NTBotGame.ntj schicken, dazu habe ich das ScriptMessagehandle entsprechend erweitert und werte etwaige einkommende Setter Nachrichten dann in mit der Funktion NT_EvaluateInputData() aus. Setzt natürlich vorraus, dass die anderen Script auch an der richtigen Stelle Daten senden. ;)

Darüber hinaus zeigt die Statistik nur Daten an die auch verfügbar sind.
So wird Errors beispielsweise nur angezeigt wenn auch tasächlich Fehler aufgetreten sind, gesammelte Items werden nur angezeigt wenn auch Items eingesammelt worden sind usw.
Damit wird ein rieser Tooltip-Block vermieden, der dann nur aus Nullen besteht, denn die sind schließlich nicht sonderlich interessant. ;)

Lg
Muddy
06/20/2010 10:50 lortl#33
Quote:
Originally Posted by Diablofarmer View Post
jo also Dauer, Xp, Realtive Xp und Gold funktionieren jetzt , basierend auf der originalen NTBotGame.ntj ..
lvl up Nachricht muss ich noch gucken, aber nich jetzt :P

aber Muddy funktioniert bei dir die Anzeige für verbrauchte Pots & gesammelte Items ? selbst mit deiner BotGame wird mir da nie was von angezeigt :(

edit: errors geht auch nich :(
edit2: edit1 hat sich erledigt :)
kannst du bitte deinen versuch mal hochladen? wäre mega nett :)
06/20/2010 18:38 Diablofarmer#34
Quote:
Originally Posted by Muddy_Waters View Post
Klar, bei mir funktioniert alles. ;) ...
Lg
Muddy
jo, weil der potcount und itemcount ja auf 0 stehen bleibt, dann wird wohl in der SnagIt.ntj ein PickedItemsCount++; und ToolThread.ntj iwo n HpUsed++;, MpUsed++; & RvUsed++; reinkommen, habs nun an den unterschiedlichsten stellen eigebaut, klappt aber nich :(
würdest du den relevanten teil von der SnagIt posten ? das wäre kewl von dir

Quote:
Originally Posted by lortl View Post
kannst du bitte deinen versuch mal hochladen? wäre mega nett :)
[Only registered and activated users can see links. Click Here To Register...] ist und bleibt aber Muddy´s :)
( Dauer, Xp, Realtive Xp & Gold funktionieren, basierend auf der originalen NTBotGame.ntj.. lvl up Nachricht ungetestet )
06/20/2010 19:03 Muddy Waters#35
Quote:
Originally Posted by Diablofarmer View Post
jo, weil der potcount und itemcount ja auf 0 stehen bleibt, dann wird wohl in der SnagIt.ntj ein PickedItemsCount++; und ToolThread.ntj iwo n HpUsed++;, MpUsed++; & RvUsed++; reinkommen, habs nun an den unterschiedlichsten stellen eigebaut, klappt aber nich :(
würdest du den relevanten teil von der SnagIt posten ? das wäre kewl von dir


[Only registered and activated users can see links. Click Here To Register...] ist und bleibt aber Muddy´s :)
( Dauer, Xp, Realtive Xp & Gold funktionieren, basierend auf der originalen NTBotGame.ntj.. lvl up Nachricht ungetestet )
Nein, dort kommt PickedItemsCount++ etc. rein, denn diese Variablen sind dort überhaupt nicht definiert. Das ist ja der Witz dabei, deshalb läuft das ganze über ScriptMessageEvents. ;)
Damit das funktioniert musst du aber auch die ankommenden "Setter"-Nachrichten auswerten können. Wie das geht sollte eigentlicgh ganz gut in meinen Funktionen ersichtlich sein.

Die Setter Nachrichten selbst sehen dann in etwa so aus:
Code:
NTC_SendMsgToScript("NTBotGame.ntj", "SET_HPDRANK_1");
Wichtig ist die klare Trennung, hier mit "_", damit man den String splitten kann.
Danach legt dann der zweite Teil fest auf was sich die "Setter"-Nachricht bezieht.
Das letzte ist der übergebene Wert als String. Im Normalfall würde jetzt ein Cast nach Integer durchgeführt, aber wenn die "Setter"-Nachrichten ohnehin immer nur einer Zähler Inkrementierung um 1 entsprechen, braucht man natürlich nicht casten. Aber wenn dort statt der 1 irgendeine Zahl steht, ist ein Cast natürlich unabdingbar.
Du kannst ja mal nach Script Messages in der NTSnagIt.ntl suchen und dir anschauen, wie ich das umgesetzt habe.
Dieser ganze Statistik Teil ist an sich denkbar simpel und somit leicht verständlich. :)

Lg
Muddy
06/20/2010 19:42 mcmahoon#36
hi.

kannst du mir erklären wie das geht?
Quote:
Stashlogging bzw. Itemlevel Anzeige auf Knopfdruck
also nur die speicherung nicht das scrippt selbst^^

wenn ichs richtig verstanden habe muss ich ins drücken(einfg?) und dann wird das komplette inventar geloggt aber wo wird es geloggt?
06/20/2010 20:35 Muddy Waters#37
Quote:
Originally Posted by mcmahoon View Post
hi.

kannst du mir erklären wie das geht?


also nur die speicherung nicht das scrippt selbst^^

wenn ichs richtig verstanden habe muss ich ins drücken(einfg?) und dann wird das komplette inventar geloggt aber wo wird es geloggt?
Genau, wobei du in der Charconfig festlegen kannst/darfst/musst ob du lieber nach XML oder TXT loggen willst. XML ist optisch schicker, TXT eignet sich besser zum Rauskopieren. Ich meine Standard ist TXT...
Es wird nicht nur das Inventar geloggt, sondern sämtliche Items, die sich auf dem Char befinden, mit Ausnahme des Gürtelinhaltes.
Die Datei wird dann entsprechend im Ordner logs/stashlogs erstellt und trägt den Namen des entsprechenden Chars. Das alte Logfile wird bei jedem Drücken der dazugehörigen Taste überschrieben.
Wenn du Items in den Cube legst wird dir zudem das Itemlevel der Items die sich im Cube befinden angezeigt, somit ist das ganze auch als Itemlevelviewer nutzbar.

Übrigens ist das Script selber auch relativ einfach aufgebaut, das kann ich dir auch gerne erklären. :D

Lg
Muddy
06/20/2010 20:46 mcmahoon#38
aso^^

charconfig also gehts nur wenn ich botte... wollte eigentlich mullis damit scannen aber scheint nicht zu gehen oder?
06/20/2010 20:59 Diablofarmer#39
mit deinem leitfaden wars direkt viel leichter :D
dankeschön, pots funktionieren nun auch, items kommen dann wohl morgen :)
06/20/2010 21:16 Muddy Waters#40
Quote:
Originally Posted by mcmahoon View Post
aso^^

charconfig also gehts nur wenn ich botte... wollte eigentlich mullis damit scannen aber scheint nicht zu gehen oder?
Dann verbaue ich das die Tage mal in dem Maphack, dann geht das auch ohne Charconfig.

Weiss aber nicht wann das klappt, für heute ist erstmal feierabend und morgen bin ich relativ lange in der FH, ich kann nichts versprechen, mache es aber demnächst.

Quote:
Originally Posted by Diablofarmer View Post
mit deinem leitfaden wars direkt viel leichter :D
dankeschön, pots funktionieren nun auch, items kommen dann wohl morgen :)
Gerne doch, ich glaube ich sollte umschulen auf Guide Autor, hatte ohnehin mit dem Gedanken gespielt, mal eine kleine Programmiereinführung zu schreiben, war aber bisher unsicher, ob überhaupt Interesse für sowas vorhanden ist.

Lg
Muddy
06/20/2010 21:51 mcmahoon#41
Quote:
Originally Posted by Muddy_Waters View Post
Dann verbaue ich das die Tage mal in dem Maphack, dann geht das auch ohne Charconfig.

Weiss aber nicht wann das klappt, für heute ist erstmal feierabend und morgen bin ich relativ lange in der FH, ich kann nichts versprechen, mache es aber demnächst.


Gerne doch, ich glaube ich sollte umschulen auf Guide Autor, hatte ohnehin mit dem Gedanken gespielt, mal eine kleine Programmiereinführung zu schreiben, war aber bisher unsicher, ob überhaupt Interesse für sowas vorhanden ist.

Lg
Muddy

erstmal danke das du für mich diesen aufwand betreibst.
und interesse an einer programiereinführung haben hier mitsichherheit einige^^
06/21/2010 12:18 jAmMyX#42
Hi Muddy :)
Danke erstmal für deine Mühen!!! wollte mal fragen ob es theoretisch möglich ist, dass du ein Script wie dieses hier:

Code:
function NTMain()
{
   Include("libs/common/NTCommon.ntl");
   NTC_IncludeLibs();
   NTC_IncludeConfig("NTBot/char_configs");

   NT_LoadConfig();
   NTSI_LoadNIPFiles("NTBot/item_configs");
   
   var _real;
   var _waypoint;
   var _deltax, _deltay;
   var _deltax2, _deltay2;

   var _attackpos = [5797, 1514, 5795, 1490, 5787, 1491, 5797, 1514, 5781, 1514];
   var _attackposs = [me.areaid, +16, +4,]
   var _attackposss = [me.areaid, +12, +4]
   _real = GetPresetUnits(me.areaid, 324);
   
   NTA_Initialize();

   me.maxgametime = 0;

   NTTM_CheckAct();

   NTTMGR_TownManager();

   NTTM_TownMove("waypoint");

   NTM_TakeWaypoint(83);

   NTP_DoPrecast(true);

   _waypoint = NTC_GetUnit(NTC_UNIT_OBJECT, GetLocaleString(22526), 5);

   _deltax = _waypoint.x - 5699;
   _deltay = _waypoint.y - 1584;
   _deltax2 = _attackposs;
   _deltay2 = _attackposss;   
   
   for(var i = 0 ; i < _attackposs.length ; i += 2)
   {
      NTM_MoveTo(me.areaid, _attackposs[i-2], _attackposs[i-2]);
   }

   for(var i = 0 ; i < _attackposss.length ; i += 2)
   {
      NTM_MoveTo(me.areaid, _attackposss[i-2], _attackposss[i-3]);
   }


   NT_FindDurance();

   NTM_MoveTo(me.areaid, 5775+_deltax, 1545+_deltay);

   for(var i = 0 ; i < _attackpos.length ; i += 2)
   {
      NTM_MoveTo(me.areaid, _attackpos[i]+_deltax, _attackpos[i+1]+_deltay);
      NTA_ClearPosition(25)
      //NTC_PingDelay(200);
   }

   

   NTM_MakeTP();
      
   NTM_UsePortal("BluePortal");
   
   NTC_SendMsgToScript("NTBotGame.ntj", "SCRIPT_END");
}

function NT_FindDurance()
{
   var _unit;


   _unit = GetPresetUnits(me.areaid, NTC_UNIT_TILE);


   for(var i = 0 ; i < _unit.length ; i++)
   {
      if(_unit[i].id == 64)
      {
         _todurx = (_unit[i].roomx*5+_unit[i].x);
         _todury = (_unit[i].roomy*5+_unit[i].y);
      }
   }
}

function NTM_MoveToObject(areaid, unittype, low, high, offsetx, offsety, clearpath)
{
   var _unit;

   if(arguments.length < 4)
      high = low;

   if(arguments.length < 5)
   {
      offsetx = 0;
      offsety = 0;
   }

   if(arguments.length < 7)
      clearpath = false;

   _unit = GetPresetUnits(areaid, unittype);

   if(!_unit)
      return false;

   for(var i = 0 ; i < _unit.length ; i++)
   {
      if(_unit[i].id >= low && _unit[i].id <= high)
         return NTM_MoveTo(areaid, _unit[i].roomx*5+_unit[i].x+offsetx, _unit[i].roomy*5+_unit[i].y+offsety, 2, clearpath);
   }

   return false;
}

function NTC_GetUnit(unittype, classid)
{
   var _unit;

   for(var i = 0 ; i < 2 ; i++)
   {
      if(arguments.length < 2)
         _unit = GetUnit(unittype);
      else
         _unit = GetUnit(unittype, classid);

      if(_unit)
         return _unit;

      if(i < 1)
         NTC_PingDelay(200);
   }

   return false;
}
copyright hat eon.

in deinen Bot einbaust, also für einen Barbaren ohne Tele :) Goldruns sollte ja auch so ca. 3 Min dauern oder er idled die andere Zeit oder versucht zu shoppen? Das wäre denke ich mal nützlich und würde das Goldprinzip verstärken.

-jammy

Edit1: Eine Unterstützung für Barbaren die mit WarCry den Gegner stunnen und den Merc alles killen lassen, wäre auch noch super. Dann hättest du das Nonplusultra-Gold Skript ;) *MotivationAufbau*

Edit2: Wie sieht es mit einem antihostile feature aus? also sprich dass versucht wird, auf den Gegner zu telen und ich selbst zu erledigen.
06/21/2010 18:24 Muddy Waters#43
Quote:
Originally Posted by jAmMyX View Post
Hi Muddy :)
Danke erstmal für deine Mühen!!! wollte mal fragen ob es theoretisch möglich ist, dass du ein Script wie dieses hier:

Code:
function NTMain()
{
   Include("libs/common/NTCommon.ntl");
   NTC_IncludeLibs();
   NTC_IncludeConfig("NTBot/char_configs");

   NT_LoadConfig();
   NTSI_LoadNIPFiles("NTBot/item_configs");
   
   var _real;
   var _waypoint;
   var _deltax, _deltay;
   var _deltax2, _deltay2;

   var _attackpos = [5797, 1514, 5795, 1490, 5787, 1491, 5797, 1514, 5781, 1514];
   var _attackposs = [me.areaid, +16, +4,]
   var _attackposss = [me.areaid, +12, +4]
   _real = GetPresetUnits(me.areaid, 324);
   
   NTA_Initialize();

   me.maxgametime = 0;

   NTTM_CheckAct();

   NTTMGR_TownManager();

   NTTM_TownMove("waypoint");

   NTM_TakeWaypoint(83);

   NTP_DoPrecast(true);

   _waypoint = NTC_GetUnit(NTC_UNIT_OBJECT, GetLocaleString(22526), 5);

   _deltax = _waypoint.x - 5699;
   _deltay = _waypoint.y - 1584;
   _deltax2 = _attackposs;
   _deltay2 = _attackposss;   
   
   for(var i = 0 ; i < _attackposs.length ; i += 2)
   {
      NTM_MoveTo(me.areaid, _attackposs[i-2], _attackposs[i-2]);
   }

   for(var i = 0 ; i < _attackposss.length ; i += 2)
   {
      NTM_MoveTo(me.areaid, _attackposss[i-2], _attackposss[i-3]);
   }


   NT_FindDurance();

   NTM_MoveTo(me.areaid, 5775+_deltax, 1545+_deltay);

   for(var i = 0 ; i < _attackpos.length ; i += 2)
   {
      NTM_MoveTo(me.areaid, _attackpos[i]+_deltax, _attackpos[i+1]+_deltay);
      NTA_ClearPosition(25)
      //NTC_PingDelay(200);
   }

   

   NTM_MakeTP();
      
   NTM_UsePortal("BluePortal");
   
   NTC_SendMsgToScript("NTBotGame.ntj", "SCRIPT_END");
}

function NT_FindDurance()
{
   var _unit;


   _unit = GetPresetUnits(me.areaid, NTC_UNIT_TILE);


   for(var i = 0 ; i < _unit.length ; i++)
   {
      if(_unit[i].id == 64)
      {
         _todurx = (_unit[i].roomx*5+_unit[i].x);
         _todury = (_unit[i].roomy*5+_unit[i].y);
      }
   }
}

function NTM_MoveToObject(areaid, unittype, low, high, offsetx, offsety, clearpath)
{
   var _unit;

   if(arguments.length < 4)
      high = low;

   if(arguments.length < 5)
   {
      offsetx = 0;
      offsety = 0;
   }

   if(arguments.length < 7)
      clearpath = false;

   _unit = GetPresetUnits(areaid, unittype);

   if(!_unit)
      return false;

   for(var i = 0 ; i < _unit.length ; i++)
   {
      if(_unit[i].id >= low && _unit[i].id <= high)
         return NTM_MoveTo(areaid, _unit[i].roomx*5+_unit[i].x+offsetx, _unit[i].roomy*5+_unit[i].y+offsety, 2, clearpath);
   }

   return false;
}

function NTC_GetUnit(unittype, classid)
{
   var _unit;

   for(var i = 0 ; i < 2 ; i++)
   {
      if(arguments.length < 2)
         _unit = GetUnit(unittype);
      else
         _unit = GetUnit(unittype, classid);

      if(_unit)
         return _unit;

      if(i < 1)
         NTC_PingDelay(200);
   }

   return false;
}
copyright hat eon.

in deinen Bot einbaust, also für einen Barbaren ohne Tele :) Goldruns sollte ja auch so ca. 3 Min dauern oder er idled die andere Zeit oder versucht zu shoppen? Das wäre denke ich mal nützlich und würde das Goldprinzip verstärken.

-jammy

Edit1: Eine Unterstützung für Barbaren die mit WarCry den Gegner stunnen und den Merc alles killen lassen, wäre auch noch super. Dann hättest du das Nonplusultra-Gold Skript ;) *MotivationAufbau*

Edit2: Wie sieht es mit einem antihostile feature aus? also sprich dass versucht wird, auf den Gegner zu telen und ich selbst zu erledigen.
Ich soll das Script dort reinkopieren? Oder ich soll selber ein schickes Script dafür schreiben?
Ersteres werde ich nicht machen, da mir die Form bzw. der Stil nicht gefällt.
Was zweiteres angeht müsste ich mal schauen, bin an sich derzeit mit meinem Follow/Stalker/Bodyguard-Script beschäftigt, was aber definitiv noch ne Weile dauern wird. Andererseits ist ein Travi Script nicht sonderlich anspruchsvoll, vielleicht schiebe ich das ein, obwohl mir das selber wenig nützt.

Das mit dem Warcry müsste ich mir mal anschauen, das schreit eigentlich nach einem halbwegs intelligenten Algorithmus, vielleicht mache ich auch dazu was.

Letzteres gibt es schon soweit ich weiss. ;)

Ich muss nur gucken, wann ich dazu komme, denn bei mir startet demnächst die Klausurphase und das Studium hat natürlich Priorität vor allem anderen. :)

Vorschläge sind aber geistig notiert, danke erstmal.

Lg
Muddy
06/21/2010 18:33 jAmMyX#44
Hehe reinkopieren nicht :) Das könnt ich ja auch machen, aber die Qualität deines Skriptes dürfte um ein vielfaches besser sein und ich steh auf qualitativ gute Skripts :P

Genauso wie es bisher irgendwie kein komplett zufriedenstellendes Diaskript gibt mMn :) Müsste mich da echt mal reinarbeiten, aber vllt warte ich da lieber deinen Guide ab :)

wenn du Details zum traviscript willst, pm mich am besten :)

-jammy

Edit1: Ingame hat der Char gerade ne Um gepicked, die Meldung erschien auch. Im Itemlog und auch im XML ist allerdings nichts diesbezüglich zu finden. Werden Runen dort nicht geloggt oder woran könnte das liegen?
06/21/2010 19:50 Muddy Waters#45
Quote:
Originally Posted by jAmMyX View Post
Hehe reinkopieren nicht :) Das könnt ich ja auch machen, aber die Qualität deines Skriptes dürfte um ein vielfaches besser sein und ich steh auf qualitativ gute Skripts :P

Genauso wie es bisher irgendwie kein komplett zufriedenstellendes Diaskript gibt mMn :) Müsste mich da echt mal reinarbeiten, aber vllt warte ich da lieber deinen Guide ab :)

wenn du Details zum traviscript willst, pm mich am besten :)

-jammy

Edit1: Ingame hat der Char gerade ne Um gepicked, die Meldung erschien auch. Im Itemlog und auch im XML ist allerdings nichts diesbezüglich zu finden. Werden Runen dort nicht geloggt oder woran könnte das liegen?
Ich komme zwar frühestens am Wochenende dazu, aber schreib mir ruhig, vielleicht hast du ja irgendwelche Ideen, die ich noch nicht selbst im Hinterkopf habe.

Das mit der UM liegt daran, dass du UMs zu MALs cubst. Jedenfalls gibt deine Config das vor, Items mit einem Nip Check Wert von 2 (== Cubing) werden aktuell nicht geloggt. Mal schauen ob ich das noch umbaue, ist an sich eine Kleinigkeit, aber man müsste wenigstens irgendwie eine gewisse Eingrenzung machen, ich denke nämlich, dass nich jeder flawless Amethyst im Log stehen sollte. ;)

Lg
Muddy