D2NT ~ ClassicExpShrineCsSorc

02/19/2013 13:55 Syph0n#1
moin moin,
ich moechte mit eurer hilfe das bereits existente essorc script veraendern sodass die sorc nicht mehr dazu genoetigt ist act1 abzuklappern ;)

zuerst kam mir in den sinn die stairid auszutauschen was allerdings nicht funktioniert hat ;X
Code:
		if(!NTM_TakeWaypoint(107))
{
		NTC_SendMsgToScript("NTBotGame.ntj", "NTM_TakeWaypoint()");
      return;
}

		NTP_DoPrecast(true);
   
		if(!me.GetState(137))
{
		if(!NTM_MoveToStair(108, 8)) //CS entry
{
		NTC_SendMsgToScript("NTBotGame.ntj", "NTM_MoveToStair()");
         return;
}
		FindShrines();
any sugguestions? ^^

naechste idee waere die function findshrines zu splitten und eine findshrine/hotshrine function zu erstellen ;)

hier die basis functions:
Code:
function FindShrines()   
{
   var ShrineIds = [2, 83, 85, 86, 93, 96, 97, 109, 116, 120, 123, 124, 133, 134, 135, 136, 150, 151, 172, 173, 184, 190, 191, 197, 199, 200, 201, 226, 231, 232, 260, 275, 276, 277, 278, 279, 282, 299, 300, 303, 325, 361, 414, 415, 421, 422, 423, 427, 428, 464, 465, 472, 479, 483, 484, 488, 491, 492, 495, 497, 499, 503, 509, 512, 520, 521, 522];
   var ShrineLocs = [];
   
   var unit = GetPresetUnits(me.areaid);
   
   if(unit)
   {      
      for (var j = 0; j < unit.length; j++)
{
         for (var c = 0; c < ShrineIds.length; c++)
{            
            if (ShrineIds[c] == unit[j].id)
{
                  ShrineLocs.push([unit[j].roomx*5+unit[j].x + 3,unit[j].roomy*5+unit[j].y])               
            }
         }
      }
   }
   
   while(ShrineLocs.length > 0)
   {
      ShrineLocs.sort(SortRoomInt);
      var _room = ShrineLocs.shift();
      NTM_MoveTo(me.areaid, _room[0], _room[1]);      
      var shrine = NTC_FindUnit(NTC_UNIT_OBJECT, "shrine");
      if(shrine)
{
         do
{      
            if(GetDistance(me.x,me.y,shrine.x,shrine.y)<5)
{
               if(shrine.shrinetype == 15)
               {
                  NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, shrine);
                  break;
               }
            }
         }
	while(shrine.GetNext());
      }
      if(me.GetState(137))
         break;
   }   
}

function SortRoomInt(a, b)
{
   if(GetDistance(me.x, me.y, a[0], a[1]) < GetDistance(me.x, me.y, b[0], b[1]))
      return -1;

   return 1;
}
idea1: sorc geht nach seis oder waehrend zum wp und telet richtung cs und dann dort die seals ab um einen es zu suchen, ihn zu nehmen und dann fortzufahren

idea2: sorc sucht waehrend des laufenden main-scripts die shrines , speichert die location, und holt sich den es bei bedarf durch "hotshrine"

bin offen fuer anregungen :)