Classic Bot

06/16/2010 01:39 FoGzone#1
Ich zocke gerade ein bisschen classic und was sehe ich?
Einen Bot (4 chars - barb, soso, pala, nec)

ABER das interessante:
Barb createt game (rest joint nach)
Pala geht ans wp und macht tp (alle joinen nach)
Barb gibt bo
Soso telt hoch
Pala macht seals auf

was für nen bot kann das sein?
06/16/2010 01:59 Diablofarmer#2
von den public bots d2bs oder d2nt ob qq das kann musste gary fragen :P
06/16/2010 12:04 FoGzone#3
Quote:
Originally Posted by Diablofarmer View Post
von den public bots d2bs oder d2nt ob qq das kann musste gary fragen :P
un wer soll das bitte sein?
06/16/2010 14:03 Metal God#4
Quote:
Originally Posted by Diablofarmer View Post
von den public bots d2bs oder d2nt ob qq das kann musste gary fragen :P
aber d2bs und d2nt unterstützen afaik keine laufenden chars, und das is in classic der fall.
06/16/2010 14:14 HK18#5

denke mal den meinste soviel ich weiß gibt es von dem keine aktuelle version^^
06/16/2010 15:17 FoGzone#6
naja der von gestern hat nur das erste tp gemacht un dann sind alle zusammen weitergelaufen
der barb hat bei jedem unique monster dann noch "Gegenstand finden" gecastet für mf
06/16/2010 15:21 MF-Rockstar#7
Kranke scheiße das Video O.o ... @Knutschkugel, fallst du einen Bot findest, gib mir bitte bescheid ^^
06/16/2010 15:22 Diablofarmer#8
Quote:
Originally Posted by Metal God View Post
aber d2bs und d2nt unterstützen afaik keine laufenden chars, und das is in classic der fall.
welcher char muss denn bitte laufen ?
baba und pala switchen zwischen town und cs mittels tp, die kommen nur für die siegel ins cs .... andererseits hast du im cs keine hindernisse geschweigedenn türen und das d2nt und d2bs bieten BEIDE die möglichkeit des wartschelns, auf freien flächen ohne jegliche Probleme

Quote:
Originally Posted by HK18 View Post
[Only registered and activated users can see links. Click Here To Register...]

denke mal den meinste soviel ich weiß gibt es von dem keine aktuelle version^^
dein video ist n redvex plugin aus 1.12, ofc wirds das für 1.13 geupt geben ...
nur public hab ichs in der tat auch noch nich gesehen
06/16/2010 17:25 FoGzone#9
Quote:
Originally Posted by Diablofarmer View Post
welcher char muss denn bitte laufen ?
baba und pala switchen zwischen town und cs mittels tp, die kommen nur für die siegel ins cs .... andererseits hast du im cs keine hindernisse geschweigedenn türen und das d2nt und d2bs bieten BEIDE die möglichkeit des wartschelns, auf freien flächen ohne jegliche Probleme



dein video ist n redvex plugin aus 1.12, ofc wirds das für 1.13 geupt geben ...
nur public hab ichs in der tat auch noch nich gesehen
ja aber der bot gestern is ja gelaufen
ich schau mal was ich machen kann

wenn ich mich ned irre gibt es bereits nen leechbot plugin das genau so funktioniert.
Ein Char (in unserem Fall soso) macht nen game auf, alle gehen runter zum bo, sorc geht hoch macht nen tp und der rest geht rein zum killen und das ganze von vorn
aber ich hab im kopf dass die chars ned killen...
muss man mal schauen
06/16/2010 19:41 King_killerko#10
wenn jemand so ein teil findet dann sagt bescheid :D so was suche ich schon seit jahren^^ letzte ladder 2x pala 1-92 selber gezockt, wäre schon geil wenn man das mal durch ein bot machen könnte :P
06/16/2010 23:57 Delba#11
Quote:
Originally Posted by Metal God View Post
aber d2bs und d2nt unterstützen afaik keine laufenden chars, und das is in classic der fall.
tun sie sec ich poste mal rein wie das geht
06/17/2010 00:07 Delba#12
damit der bot laufen tut

dort rein

D2NT\scripts\libs\common und in NTMove rein kopieren

Code:
function NTM_MoveTo(areaid, x, y, retry, clearpath)
{
var i, n;
var _teleport;
var _path;
var _retry = 0;

if(x == me.x && y == me.y)
return true;

if(arguments.length < 4)
retry = 3;

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

if(NTC_InTown() || NTConfig_NoTeleport)
_teleport = false;
else
_teleport = true;

if(NTC_GetSkillLevel(54) < 1 && !NTConfig_NoTeleport)
{
ExitGame();
SendCopyData("D2NT Manager", null, 7<<16, "ÿE00000Enigmabug- quit game");
}
_path = GetPath(areaid, me.x, me.y, x, y, _teleport);

if(!_path)
return false;

for(i = 0 ; i < _path.length ; i++)
{
for(n = 0 ; n < 2 ; n++)
{
if(_teleport)
{
if(NTM_TeleportTo(_path[i][0]+Random(-n, n), _path[i][1]+Random(-n, n)))
break;
}
else
{
if(NTC_InTown() || NTConfig_NoTeleport) {
if(NTM_WalkTo(_path[i][0], _path[i][1]))
break;
}

}
}

if(n < 2)
{
if(clearpath)
{
if(!NTA_ClearPosition(20, true, 2))
return false;

NTP_DoPrecast(false);

NTM_MoveTo(me.areaid, _path[i][0], _path[i][1], 1);
}
}
else if(_retry < retry)
{
_path = GetPath(areaid, me.x, me.y, x, y, _teleport);

if(!_path)
return false;

i = -1;
_retry++;
}
else
return false;
}

return true;
}

function NTM_MoveToPresetUnit(areaid, unittype, classid, offsetx, offsety, clearpath)
{
   var i, n;
   var _unit;

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

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

   for(i = 0 ; i <= 2 ; i++)
   {
      _unit = GetPresetUnits(areaid, unittype);

      if(_unit)
      {
         for(n = 0 ; n < _unit.length ; n++)
         {
            if(_unit[n].id == classid)
               return NTM_MoveTo(areaid, _unit[n].roomx*5+_unit[n].x+offsetx, _unit[n].roomy*5+_unit[n].y+offsety, 3, clearpath);
         }
      }

      if(i < 2)
         NTC_Delay(500);
   }

   return false;
}

function NTM_MoveToStair(areaid, subareaid, offsetx, offsety, clearpath)
{
   var i, n;
   var _unit;

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

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

   for(i = 0 ; i <= 2 ; i++)
   {
      _unit = GetPresetUnits(areaid, NTC_UNIT_TILE);

      if(_unit)
      {
         for(n = 0 ; n < _unit.length ; n++)
         {
            if(_unit[n].subareaid == subareaid)
               return NTM_MoveTo(areaid, _unit[n].roomx*5+_unit[n].x+offsetx, _unit[n].roomy*5+_unit[n].y+offsety, 3, clearpath);
         }
      }

      if(i < 2)
         NTC_Delay(500);
   }

   return false;
}

function NTM_TeleportTo(x, y)
{
   NTC_CastSkill(54, NTC_HAND_RIGHT, x, y);

   for(var i = 0 ; i < 15 ; i++)
   {
      if(Math.abs(me.x-x) < 4 && Math.abs(me.y-y) < 4)
         return true;

      NTC_Delay(NTC_DELAY_FRAME);
   }

   return false;
}

function NTM_WalkTo(x, y)
{
   var i;
   var _prex1, _prey1;
   var _prex2, _prey2;

   if(me.runwalk == 0)
      me.runwalk = 1;

   for(i = 0 ; i < 480 ; i++)
   {
      if((i % 10) == 0)
      {
         if((i % 60) == 0)
         {
            _prex1 = me.x;
            _prey1 = me.y;

            if((i % 120) == 0)
            {
               _prex2 = me.x;
               _prey2 = me.y;
            }
         }

         ClickMap(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, x, y);
      }

      NTC_Delay(NTC_DELAY_FRAME);

      if(Math.abs(me.x-x) < 2 && Math.abs(me.y-y) < 2)
         break;

      if((i % 10) == 9)
      {
         ClickMap(NTC_CLICK_LUP, NTC_SHIFT_NONE, null);
         NTC_Delay(NTC_DELAY_FRAME);

         if((i % 60) == 59)
         {
            if(me.x == _prex1 && me.y == _prey1 && !NTC_InTown())
            {
               NTA_ClearPosition(2);

               NTP_DoPrecast(false);
            }

            if((i % 120) == 119 && me.x == _prex2 && me.y == _prey2)
               return false;
         }
      }
   }

   ClickMap(NTC_CLICK_LUP, NTC_SHIFT_NONE, null);
   NTC_Delay(NTC_DELAY_FRAME);

   return (i < 480);
}

function NTM_TakeUnit(unittype, classid)
{
   var _unit;
   var _prearea;

   _unit = NTC_FindUnit(unittype, classid, 5);

   if(!_unit)
      return false;

   _prearea = me.areaid;

   for(var i = 0 ; i < 20 ; i++)
   {
      if((i % 5) == 0)
      {
         if(i == 10)
            NTM_MoveTo(_prearea, me.x+6, me.y+6);

         if(NTM_GetCloserInt(_unit))
            NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _unit);
      }

      NTC_Delay(200);

      if(me.areaid != _prearea)
         break;
   }

   while(me.areaid == 0)
      NTC_Delay(200);

   if(me.areaid == _prearea)
      return false;

   NTC_PingDelay(NTConfig_AreaDelay);

      return true;
}

function NTM_TakeStair(areaid)
{
   var _unit;
   var _prearea;

   _unit = NTM_GetStairInt(areaid);

   if(!_unit)
      return false;

   _prearea = me.areaid;

   for(var i = 0 ; i < 20 ; i++)
   {
      if((i % 5) == 0)
      {
         if(i == 10)
            NTM_MoveTo(_prearea, me.x+6, me.y+6);

         if(NTM_GetCloserInt(_unit))
            NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _unit);
      }

      NTC_Delay(200);

      if(me.areaid != _prearea)
         break;
   }

   while(me.areaid == 0)
      NTC_Delay(200);

   if(me.areaid == _prearea)
      return false;

   NTC_PingDelay(NTConfig_AreaDelay);

      return true;
}

function NTM_TakeWaypoint(areaid)
{
   var _unit;

   if(me.areaid == areaid)
      return true;

   _unit = NTM_GetWaypointInt();

   if(!_unit)
      return false;

   if(NTC_InTown())
      me.Cancel(1);

   for(var i = 0 ; i < 20 ; i++)
   {
      if((i % 10) == 0)
      {
         if(NTM_GetCloserInt(_unit))
            NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _unit);
      }

      NTC_Delay(200);

      if(GetUIState(0x14))
      {
         if(me.TakeWaypoint(areaid))
         {
            NTC_PingDelay(NTConfig_AreaDelay);
            return true;
         }

         break;
      }
   }

   return false;
}

function NTM_UsePortal(how, dest, ownername, portal)
{
   if(me.areaid == dest)
      return true;

   if(NTC_InTown())
      me.Cancel(1);

   if(NTM_ChangeAreaInt(how, dest, ownername, portal))
   {
      NTC_PingDelay(NTConfig_AreaDelay);
      return true;
   }

   return false;
}

function NTM_MakeTP(dest)
{
   var _usetp = true;
   var _portal;
   var _portalname;

   if(NTC_InTown())
      return true;

   if(arguments.length < 1)
      _usetp = false;

   if(!NTC_CastSkill(220, NTC_HAND_RIGHT))
      return false;

   NTC_PingDelay(500);

   _portalname = GetLocaleString(3226);

   for(var i = 0 ; i <= 2 ; i++)
   {
      _portal = NTC_FindUnit(NTC_UNIT_OBJECT, _portalname);

      if(_portal)
      {
         do
         {
            if(_portal.mode == 2 && NTC_CheckOwner(_portal))
            {
               if(_usetp)
                  return NTM_UsePortal("BluePortal", dest, me.name, _portal);

               return true;
            }
         } while(_portal.GetNext());
      }

      if(i < 2)
         NTC_Delay(500);
   }

   return false;
}

// Internal function
function NTM_GetStairInt(areaid)
{
   var _tile;

   for(var i = 0 ; i <= 2 ; i++)
   {
      _tile = NTC_FindUnit(NTC_UNIT_TILE);

      if(_tile)
      {
         do
         {
            if(!areaid || _tile.subareaid == areaid)
               return _tile;
         } while(_tile.GetNext());
      }

      if(i < 2)
         NTC_Delay(500);
   }

   return null;
}

function NTM_GetWaypointInt()
{
   var _waypoint;
   var _classid;

   for(var i = 0 ; i <= 2 ; i++)
   {
      _waypoint = NTC_FindUnit(NTC_UNIT_OBJECT);

      if(_waypoint)
      {
         do
         {
            _classid = _waypoint.classid;

            if(_classid == 119 || _classid == 145 || _classid == 156 || _classid == 157
               || _classid == 237 || _classid == 238 || _classid == 288 || _classid == 323
               || _classid == 324 || _classid == 398 || _classid == 402 || _classid == 429
               || _classid == 494 || _classid == 496 || _classid == 511 || _classid == 539)
               return _waypoint;
         } while(_waypoint.GetNext());
      }

      if(i < 2)
         NTC_Delay(500);
   }

   return null;
}

function NTM_ChangeAreaInt(how, dest, ownername, myportal)
{
   var _portal;
   var _playerportal = false;
   var _prearea;

   if(how == "BluePortal")
   {
      if(!ownername)
         ownername = me.name;

      _playerportal = true;
   }

   if(arguments.length > 3 && myportal)
      _portal = myportal;
   else
   {
      _portal = NTM_FindCorrectPortalInt(_playerportal, ownername);

      if(_portal < 0)
         _portal = NTM_FindPortalAreaInt(dest);

      if(_portal == -1)
         return false;
   }

   if(!_portal)
      return false;

   _prearea = me.areaid;

   for(var i = 0 ; i < 20 ; i++)
   {
      if((i % 5) == 0)
      {
         if(i == 10)
            NTM_MoveTo(_prearea, me.x+6, me.y+6);

         if(NTM_GetCloserInt(_portal))
            NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _portal);
      }

      NTC_Delay(200);

      if(me.areaid != _prearea)
         break;
   }

   while(me.areaid == 0)
      NTC_Delay(200);

   return (me.areaid == dest);
}

function NTM_FindCorrectPortalInt(blueportal, ownername)
{
   var _portal;
   var _portalname;

   _portalname = GetLocaleString(3226);

   if(blueportal)
   {
      for(var i = 0 ; i <= 2 ; i++)
      {
         _portal = NTC_FindUnit(NTC_UNIT_OBJECT, _portalname);

         if(_portal)
         {
            do
            {
               if(_portal.mode == 2 && NTC_CheckOwner(_portal, ownername) && GetDistance(me, _portal) <= 30)
                  return _portal;
            } while(_portal.GetNext());
         }

         if(i < 2)
            NTC_Delay(500);
      }

      return -2;
   }
   else
   {
      for(var i = 0 ; i <= 2 ; i++)
      {
         _portal = NTC_FindUnit(NTC_UNIT_OBJECT, _portalname);

         if(_portal)
         {
            do
            {
               if(_portal.mode == 2 && !_portal.GetParent())
                  return _portal;
            } while(_portal.GetNext());
         }

         if(i < 2)
            NTC_Delay(500);
      }
   }

   return -3;
}

function NTM_FindPortalAreaInt(dest)
{
   var _portal;
   var _portalname;

   _portalname = GetLocaleString(3226);

   for(var i = 0 ; i <= 2 ; i++)
   {
      _portal = NTC_FindUnit(NTC_UNIT_OBJECT, _portalname);

      if(_portal)
      {
         do
         {
            if(_portal.mode == 2 && _portal.subareaid == dest)
            {
               if(_portal.GetParent())
               {
                  if(NTC_CheckOwner(_portal) || NTC_InMyParty(_portal.GetParent()))
                     return _portal;
               }
               else
                  return _portal;
            }
         } while(_portal.GetNext());
      }

      if(i < 2)
         NTC_Delay(500);
   }

   return -1;
}

function NTM_GetCloserInt(unit)
{
   if(GetDistance(me, unit) > 2)
      return NTM_MoveTo(unit.areaid, unit.x, unit.y);

   return true;
}

// vector class
function vector()
{
   if(arguments.length == 2)
   {
      this.x = arguments[0];
      this.y = arguments[1];
   }
   else if(arguments.length == 1)
   {
      this.x = arguments[0].x;
      this.y = arguments[0].y;
   }
   else
   {
      this.x = 0;
      this.y = 0;
   }
   
   this.rotate = vector_rotate;
   this.normalize = vector_normalize;
   this.length = vector_length;
   this.setlength = vector_setlength;
   this.toString = vector_toString;
   this.set = vector_set;
   this.angle = vector_angle;
}

function vector_rotate(degree)
{
   if(!degree)
      return true;

   l = this.length();
   if(!l)
      return false;

   this.normalize();

   rad = degree * (Math.PI/180);

   nx = this.x * Math.cos(rad) - this.y * Math.sin(rad);
   ny = this.x * Math.sin(rad) + this.y * Math.cos(rad);

   this.x = nx;
   this.y = ny;

   this.normalize();
   if(l != 1)
      this.setlength(l);

   return true;
}

function vector_angle(v)
{
   rad_degree = 180 / Math.PI;

   return Math.acos((this.x*v.x) + (this.y*v.y)) * rad_degree;
}

function vector_length()
{
   return Math.sqrt((this.x*this.x) + (this.y*this.y));
}

function vector_setlength(length)
{
   this.normalize();
   this.x *= length;
   this.y *= length;
}

function vector_normalize()
{
   l = this.length();
   if(!l)
      return false;

   this.x /= l;
   this.y /= l;

   return true;
}

function vector_toString()
{
   str = "(";
   str += Math.round(this.x*1000)/1000;
   str += " , ";
   str += Math.round(this.y*1000)/1000;
   str += ") : ";
   str += Math.round(this.length()*1000)/1000;

   return str;
}

function vector_set(tx, ty)
{
   if(arguments.length == 1)
   {
      this.x = tx.x;
      this.y = tx.y;
   }
   else if(arguments.length == 2)
   {
      this.x = tx;
      this.y = ty;
   }
}

// coord class
function coord()
{
   this.data = null;

   if(arguments.length == 3)
   {
      this.x = arguments[0];
      this.y = arguments[1];
      this.data = arguments[2];
   }
   else if(arguments.length == 2)
   {
      this.x = arguments[0];
      this.y = arguments[1];
   }
   else if(arguments.length == 1)
   {
      this.x = arguments[0].x;
      this.y = arguments[0].y;
   }
   else
   {
      this.x = 0;
      this.y = 0;
   }

   this.dist = coord_dist;
   this.dist2 = coord_dist2;
   this.dir = coord_dir;
   this.move = coord_move;
   this.set = coord_set;
   this.toString = coord_toString;
}

function coord_set(tx, ty, d)
{
   if(arguments.length == 1)
   {
      this.x = tx.x;
      this.y = tx.y;

      if(tx.data)
         this.data = tx.data;
      else
         this.data = null;
   }
   else if(arguments.length == 2)
   {
      this.x = tx;
      this.y = ty;
      this.data = null;
   }
   else if(arguments.length == 3)
   {
      this.x = tx;
      this.y = ty;
      this.data = d;
   }
}

function coord_dist(tx, ty)
{
   if(arguments.length == 1)
   {
      vx = this.x - tx.x;
      vy = this.y - tx.y;

      return Math.round(Math.sqrt((vx*vx) + (vy*vy)));   
   }
   else if(arguments.length == 2)
   {
      vx = this.x - tx;
      vy = this.y - ty;

      return Math.round(Math.sqrt((vx*vx) + (vy*vy)));
   }
}

function coord_dist2(tx, ty)
{
   if(arguments.length == 1)
   {
      vx = this.x - tx.x;
      vy = this.y - tx.y;

      return Math.floor((vx*vx) + (vy*vy));
   }
   else if(arguments.length == 2)
   {
      vx = this.x - tx;
      vy = this.y - ty;

      return Math.floor((vx*vx) + (vy*vy));
   }
}

function coord_dir(tx, ty)
{
   if(arguments.length == 1)
   {
      v = new vector(tx.x-this.x, tx.y-this.y);
      v.normalize();

      return v;
   }
   else if(arguments.length == 2)
   {
      v = new vector(tx-this.x, ty-this.y);
      v.normalize();

      return v;
   }
}

function coord_move(vec, d)
{
   if(d)
   {
      this.x += Math.round(vec.x*d);
      this.y += Math.round(vec.y*d);

      return true;
   }
   else if(vec.length())
   {
      this.x += Math.round(vec.x);
      this.y += Math.round(vec.y);

      return true;
   }

   return false;
}

function coord_toString()
{
   return "( " + this.x + " , " + this.y + " ) " + this.data;
}

das in D2NT\scripts\NTBot\char_configs in NTconfig einfügen


Code:
 var NTConfig_NoTeleport;

das in D2NT\scripts\NTBot\char_configs in deinen char einfügen der laufen soll


Code:
 NTConfig_NoTeleport = true;    // false = teleport : true = noteleport

nur eckt der char immer wieder an, wäre nice wenn das mal einer einstellt und mir posted

hoffe auf thanks für die lösungs des laufens^^

grüße der Delba^^
06/17/2010 10:29 MF-Rockstar#13
Also ich habs probiert... und hab absolut keinen Unterschied gemerkt... er verhält sich so als würde er Teleportieren... d.h. er macht exact das gleiche, bleibt in Travi im WP Häuschen hängen etc. ...

Aso das Script für die MoveNT nur dazu kopieren, oder das gesammte vorherige vorher rauslöschen,a lso ersetzen ^^? Habs ersetzt...
06/17/2010 17:44 Delba#14
ersetzten...ja mann muss die wege die er geht einstellen....aber immerhin ist das laufen möglich^^
06/17/2010 23:54 MF-Rockstar#15
Quote:
Originally Posted by Delba View Post
ersetzten...ja mann muss die wege die er geht einstellen....aber immerhin ist das laufen möglich^^
ok, wenn ich die zeit finde versuch ich mich mal an nem travi script fürn barb....