Mining 5x5 + ходилка + леталка и выгрузка в доме Inject

Обсуждение вспомогательных программ и скриптов к ним
Post Reply
RagnaR
Posts: 3
Joined: 03 Oct 2018 00:20

Mining 5x5 + ходилка + леталка и выгрузка в доме Inject

Post by RagnaR » 03 Oct 2018 00:39

Всем привет, решил поделиться скриптом на мининг.
В качестве самой копалки взят стандартный скрипт НА мининг Олмера, я дописал ходилку по шахте (с помощью стандартного скрипа walker с форума yoko ), леталку в дом/шахту и выгрузку в сундук.
Скриптингу под инжу только учусь так что могут быть косяки, но вроде работает нормально.

Как настроить:
1) Вначале скрипта указать все ID и type переменным (переменные описаны), Обратите внимание, что в шахту летит он по звезде(советую маркать как можно ближе к первой точки которую будет копать персонаж), а домой по рунбуке.
2) В sub GOTOXY() - указываем координаты шахты, на данный момент работает под шахту в гз (столица), а так же количество элементов массива var count=54 ;индекс последнего элемента массива (POSX[index]) +1 так как первая координата 0)
Вроде все :P не забывайте заряжать книгу и подкладывать кирки в сундук.
P.S Можно сразу затестить на шахте в Столице, главное замените все ID и Type в переменных сверху. Если что пишите.

Code: Select all

var book='0x400C3F55'; ID рунбуки
var mark=2; Номер записи в рунбуке к дому
var Chest='0x40648F9E' ; Id Сундука куда скидываем руду (Ставить возле места телепортации к дому)
var pickaxeBag='0x40670747'; Сумка с кирками, должна быть в сундуке для руды
var pickaxe='0x0E85'; тип кирки
var star='0x4007FE02' ; ID звезды в шахту
var MaxWeight=750 ; Максимальный вес

sub start()
   RecallHome()
   UO.SetGlobal('pos',0)
   UO.SetGlobal('n', 1)
   UO.SetGlobal('flag',0)
   var n1,pos
   while not UO.Dead()
      
      n1=val(UO.GetGlobal('n'))
      pos=val(UO.GetGlobal('pos'))
      wait(100)
      uo.findtype(pickaxe,-1,'backpack')
      wait(100)
      if UO.Weight<MaxWeight and uo.findcount()> 0 then
         if val(UO.GetGlobal('flag'))==1 then
            UO.SetGlobal('n', n1-1)
            UO.SetGlobal('flag',0)
         endif
         if pos<>n1 then
            GOTOXY()
            wait(100)
         else if pos==n1 then
            n1=val(UO.GetGlobal('n'))+1
            UO.SetGlobal('n', n1)
            UO.SetGlobal('n', n1)
            startMin()        
         endif
      else
         RecallHome()
      endif
   wend
end sub


sub RecallHome()
   uo.unequip('Rhand') 
   wait(100)
   UO.Print('Летим домой!');
   UO.WarMode(False)
   uo.recall(book, mark)
   wait(5500);
   unloadOres();
end sub

sub unloadOres()
   var i
   DIM OreType[4]
   OreType[0]=0x19B9
   OreType[1]=0x19BA 
   OreType[2]=0x19B7
   OreType[3]=0x19B8
   UO.Print('Выгрузка');
   uo.useobject(Chest)
   For i=0 to 3
      uo.findtype(OreType[i],-1,'backpack')
      repeat
         if uo.findcount() then
            uo.MoveItem('finditem','0',Chest)
         endif
         wait(800)
         uo.findtype(OreType[i],-1,'backpack')
      until uo.findcount()==0
   Next
   uo.findtype(pickaxe,-1,'backpack')
   if uo.findcount() <2 then
      uo.useobject(pickaxeBag)
      wait(400)
      for i=0 to 1
         uo.findtype(pickaxe,-1,'backpack')
         wait(50)
         if uo.findcount() <2 then
            uo.findtype(pickaxe,-1,pickaxeBag)
            uo.MoveItem('finditem','0','backpack')
            wait(400)
         endif
      next
   endif
   ToMine()
end sub

sub ToMine()
   UO.SetGlobal('pos',0)
   UO.Print('Летим в шахту!');
   UO.WarMode(False)
   uo.useobject(star)
   wait(5500)
   
end sub

sub GOTOXY() ;Координаты шахты (Столица империи)
   var n=val(UO.GetGlobal('n'))
   var pos=val(UO.GetGlobal('pos'));
   var count=54 ;индекс последнего массива (POSX[index]) +1
   DIM POSX[int(count)]
   DIM POSY