Yoko

All sides of Injection
It is currently 2024-03-28 12:06:34

All times are UTC+02:00




Post new topic  Reply to topic  [ 1 post ] 
Author Message
PostPosted: 2014-09-12 21:54:25 
Offline

Joined: 2014-08-25 09:10:21
Posts: 1
Приветствую всех. Шард OLDP
За основу взял (не помню чей) майнинг на 5 шахт.
Тестил на 1 шахте.
Проблемки:
Поставил во всех процедурках отчеты о том что делает.
1. После рекола на рзгрузку может "тупануть" - при разгрузке 'Idem v tochku vigruzki' и стоит на месте или подойдет к сундуку и чего-то ждет. При загрузке - берет кирку и стопорится.
2. С элементалями. Может бегать вокруг элема (циклит WalkN) в итоге не пьет инвизку и помирает. Или недобивает элема и пытается среколится домой, таймер выставлял и 10000 и 20000.
3. Не пьет хилки (редко), хотя в паке лежат. Оба варианта глючат (say .drink heal и стандартный через findtype)

Проверку элемов убрал из mine - тупил еще хуже. Если будет 2 элема (2й кто-то выкопал) то как убьет своего пойдет копать. Элемы кастуют, бегают шустро (при касте отбегают)

Если ставить инвиз-рекол при появлении элема, то никаких проблем нет вообще.

Code:
###################################### 
# Промаркировать каждую пещеру надо зарание, запустив процедуру MultyMark()
# Для марка, обходя последовательно все точки копания набирать "set"
# (точка копания - центр квадрата 2х2 тайлов, который выкапывается подчистую)
# При окончании марка в текущей пещере набрать "stop" перереколиться в следующюю пещеру и продолжить
# После марка 5 пещер появятся файлы C:\mine.dat, C:\mine1.dat, C:\mine2.dat, C:\mine3.dat, C:\mine4.dat
# После этого можно начинать копку запустив процедуру main() стоя у банка.
# И если в банке будут лежать жаренные фишстеки, чар не применет возможностью ими полакомиться.
# при вероятности дисконнектов перед копкой запускать процедуру Reconnect

;,set quiet

################################
var kill=1 ;Убивать элементалей 1-да, 0-нет
var UCont = '0x4012CC93';ID конта в который будет складываться накопанное.
var LCont = '0x4012CC43'  ;ID конта c бинтами, бутылками и т.д.
var RuneBook='0x40047289'
var weapon='0x13B5'
var shield='0x1B76'
var ncxu=4093 ;Координаты появления после рекола на разгрузку
var ncyu=386
var ncxC=4095 ;Координаты точки разгрузки
var ncyC=386
var gzX=2504
var gzY=556
var f=file("C:\mine32.dat")
var Space=' '
var q, w, p
var mine
var n
###############################       
# процедура запуска для  5 пещер
# количество пещер может быть уменьшено или увеличено
# удалением или внесением троестрочий вида:
#      f=file("C:\mine1.dat")
#      mine='Mine1'
#      one()

sub main()
   var Time=Time()
   Uo.exec("set norbcheck 1")
   uo.exec("set norbcalc 1")
   
   UO.Click('self')
   wait(100)
   uo.GetStatus('uo.JournalSerial(0)')
   uo.SetGlobal('name',uo.GetName(uo.JournalSerial(0)))
   uo.TextOpen()
   uo.TextPrint('Начинаем:'+uo.GetName(uo.JournalSerial(0)) +Space +Time)
   uo.exec('terminate alln_main')
   While true
      uo.say(' ')   
      uo.say(',exec alert')
      uo.say(',exec mine')
      uo.say(',exec autobotl')
      While not uo.dead()
         wait(1000)
      Wend
      uo.exec('terminate alln_main')
      While uo.dead()
         uo.press(32881) ;Закрываем все гампы ALT+F2
         wait(100)
         CheckLag()
         uo.press(113)   ;Открываем papedroll F2
         wait(100)
         CheckLag()
         uo.lclick(1882,58)
         wait(100)
         CheckLag()
         uo.lclick(353,349)
         wait(100)
         CheckLag()
         uo.press(112)   ;Открываем backpack
      Wend
      wait(120000)     
      While uo.getx()<>ncxu and uo.gety()<>ncyu
         Recalling(RuneBook, 4)
      Wend     
      walkn(ncxC,ncyC,'')
      wait(2000)           
      Eqiuping()
   Wend
end sub
#######################################
Sub mine()
   var Time=Time()
   uo.TextOpen()
   uo.TextPrint('ТП в точку выгрузки' +Space +Time)
   While uo.getx()<>ncxu and uo.gety()<>ncyu
      Recalling(RuneBook, 4)
   Wend 
   repeat     
      f=file("C:\mine32.dat")
      mine='Mine'
      n=3                     
      one()
     
      ;      f=file("C:\mine1.dat")
      ;      mine='Mine1'
      ;      n=4
      ;      one()
     
     
      ;      f=file("C:\mine2.dat")
      ;      mine='Mine2'
      ;      n=5
      ;      one()
     
      ;      f=file("C:\mine3.dat")
      ;      mine='Mine3'
      ;      one()
     
      ;      f=file("C:\mine4.dat")
      ;      mine='Mine4'
      ;      one()
     
   until UO.Dead()
end Sub
################################       
Sub one()
   dim PX[50], PY[50]
   var Minepoints=0
   var i
   
   uo.Print('Loading from file...')
   f.open()
   Minepoints=safe call f.ReadNumber()
   for i=1 to Minepoints
      PX[i]=safe call f.ReadNumber()
      PY[i]=safe call f.ReadNumber()
   next
   f.close()
   uo.Print('Loaded') 
   unload()
   load()
   rest()
   Recalling(RuneBook, n)
   for p=1 to Minepoints
      uo.Print('X: '+str(PX[p])+' Y: '+str(PY[p]))
      WalkN(PX[p],PY[p],'')
      q=PX[p]
      w=PY[p]
      uo.Print('Mining...')
      UO.Warmode("0")
      mine(PX,PY)
   next
   Recalling(RuneBook, 4)   
   unload()
end Sub
##########################
Sub vozvrat(PX,PY)
   var i
   uo.Print('Move...')
   for i=1 to p
      uo.Print('X: '+str(PX[p])+' Y: '+str(PY[p]))
      WalkN(PX[i],PY[i],'')
   next
end Sub
########################
Sub Mark()
   dim PX[50], PY[50]
   var Minepoints=0
   var i
   uo.Print('Start marking...')
   for i=1 to 50
      UO.DeleteJournal()
      uo.Print('Set point '+ str(i))
      repeat
         wait(500)
         if UO.InJournal('stop')then
            SaveToFile(i-1,PX,PY)
            return
         endif
      until UO.InJournal('set')
      PX[i] = UO.GetX("self")
      PY[i] = UO.GetY("self")
      uo.Print('Point '+str(i)+' X: '+str(PX[i])+' Y: '+str(PY[i])+'taken')
   next
end Sub
########################
sub MultyMark()
   uo.Print('Cove............ 1')
   f=file("C:\mine32.dat")
   Mark()
   #uo.Print('Cove............ 2')
   #f=file("C:\mine1.dat")
   #Mark()
   #uo.Print('Cove............ 3')
   #f=file("C:\mine2.dat")
   #Mark()
   #uo.Print('Cove............ 4')
   #f=file("C:\mine3.dat")
   #Mark()
   #uo.Print('Cove............ 5')
   #f=file("C:\mine4.dat")
   #Mark()
   uo.Print('Marking finished. Ready for mine')
end Sub
#############################
Sub SaveToFile(mp,PX,PY)
   var s=0,k=0
   f.open()
   f.create()
   uo.Print('points = '+ str(mp))
   s=safe call f.writeln(mp)
   for k=1 to mp
      s=safe call f.writeln(str(PX[k])+' '+str(PY[k]))
   next
   f.close()
end Sub
##################################
Sub mine(PX,PY)
   var x, y,z
   VAR LastTimer
   var ms1="can't see"
   var ms2="heavy"
   var ms3="location"
   var ms4="far away"
   var ms5="in rock"
   var ms6="elsewhere"
   var ms7="nothing"
   var ms8="You cannot mine"
   var ms9="Correct code."
   var ms10="close"
   
   var h1="Gypsum"
   var h2="Zink"
   var h3="Stone"
   var h4="Marble"
   var h5="Sandstone"
   var h6="Plaster"
   
   var ore1="Marganece"
   var ore2="Tourmaline"
   var ore3="Tin"
   var ore4="Bronze"
   var ore5="Lead"
   var ore6="Corrundum"
   var ore7="Gold"
   var ore8="Silver"
   
   UO.Set('finddistance','2')
   z=UO.GetZ("self")
   for x=-2 to 2
      for y=-2 to 2
         UO.Print(str(x)+" "+str(y))
         Repeat
            UO.DeleteJournal()
            UO.Exec("warmode 0")
            UO.WaitTargetTile("1341",STR(UO.GetX()+x),STR(UO.GetY()+Y),z)
            UO.UseType('0x0E85')
            LastTimer=UO.Timer()
            Repeat
               If uo.lastgump('replyed') == 0 && uo.lastgump('text') == 'Please enter code:' Then
                  uo.textopen()
                  uo.textprint('Ахтунг! Нужен код!')
                  While not uo.InJournal(ms9)
                     wait(100)
                  Wend
               End If
               wait(100)
            Until UO.InJournal(ms1) or UO.InJournal(ms2) or UO.InJournal(ms3) or UO.InJournal(ms4) or UO.InJournal(ms5) or UO.InJournal(ms6) or UO.InJournal(ms7) or UO.InJournal(ms8) or UO.InJournal(ms9) or UO.InJournal(ms10) or UO.InJournal(ore1) or UO.InJournal(ore2) or UO.InJournal(ore3) or UO.InJournal(ore4) or UO.InJournal(ore5) or UO.InJournal(ore6) or UO.InJournal(ore7) or UO.InJournal(ore8) or UO.InJournal(h1) or UO.InJournal(h2) or UO.InJournal(h3) or UO.InJournal(h4) or UO.InJournal(h5) or UO.InJournal(h6) or UO.Timer()>LastTimer+500 
            uo.exec("warmode 1")
            wait(50)
            uo.exec("warmode 0")
            wait(50)
         Until UO.InJournal(ms3) or UO.InJournal(ms4) or UO.InJournal(ms5) or UO.InJournal(ms6) or UO.InJournal(ms7) or UO.InJournal(ms10) or UO.InJournal(ore1) or UO.InJournal(ore2) or UO.InJournal(ore3) or UO.InJournal(ore4) or UO.InJournal(ore5) or UO.InJournal(ore6) or UO.InJournal(ore7) or UO.InJournal(ore8) or UO.InJournal(h1) or UO.InJournal(h2) or UO.InJournal(h3) or UO.InJournal(h4) or UO.InJournal(h5) or UO.InJournal(h6)
         if UO.Weight>600 then
            drop()
         End If
         If UO.Weight>700 then
            unload(PX,PY)
         End If                     
      next
   next
end Sub
#######################################
Sub drop()
   var Time=Time()
   var i
   var amount=14
   dim color[14]
   color[1]='0x06D6'   ;Marganece
   color[2]='0x04C2'   ;Tourmaline
   color[3]='0x052D'   ;Tin
   color[4]='0x0488'   ;Bronze
   color[5]='0x084D'   ;Lead     
   color[6]='0x060C'   ;Corrundum
   color[7]='0x0445'   ;Gold
   color[8]='0x0481'   ;Silver
   color[9]='0x03E3'   ;Gypsum
   color[10]='0x0026'   ;Zink
   color[11]='0x0909'   ;Stone
   color[12]='0x079E'   ;Marble
   color[13]='0x0090'   ;Sandstone
   color[14]='0x0097'   ;Plaster     
   
   uo.ignorereset()
   repeat
      uo.deletejournal()
      if uo.Targeting()==1 then
         uo.canceltarget()
      End If     
      for i = 1 to amount
         uo.findtype('0x19B9',color[i],'backpack')
         While uo.findcount() > 0           
            UO.WaitTargetObject('finditem')
            UO.Drop(0,'finditem')
            Wait(2500)
            CheckLag()
            UO.FindType('0x19B9',color[i],'backpack')
         Wend
      Next
      uo.print('Drop Finished')
end Sub
#########################################
Sub load()
   var Time=Time()
   uo.TextOpen()
   uo.TextPrint('Берем все необходимое' +Space +Time)
   walkn(ncxC,ncyC,'')
   wait(2000)
   UO.DeleteJournal()
   UO.UseObject(LCont)
   wait(4000)
   uo.print('Pickaxe')
   UO.FindType('0x0E85','-1','backpack') ;pickaxe
   If UO.Count('0x0E85')<1 Then
      UO.FindType('0x0E85','-1',LCont )
      UO.Grab('1','finditem')
      Wait(2000)
   End If
   uo.print('Invis')   
   UO.FindType('0x182D','0x08FA','backpack') ;invis
   If UO.Count('0x182D')<1 Then
      UO.FindType('0x182D','0x08FA',LCont )
      UO.Grab('1','finditem')
      Wait(2000)
   End If
   If kill==1 Then
      uo.print('GrStr')   
      UO.FindType('0x0F09',-1,'backpack') ;bandage
      If UO.Count('0x0F09')<1 Then
         UO.FindType('0x0F09','-1',LCont )
         UO.Grab('1','finditem' )
         Wait(2000)
      End If   
      uo.print('Bandage')   
      UO.FindType('0x0E21',-1,'backpack') ;bandage
      If UO.Count('0x0E21')<10 Then
         UO.FindType('0x0E21','-1',LCont )
         UO.Grab(str(10-UO.Count('0x0E21')),'finditem' )
         Wait(2000)
      End If
      uo.print('Heal potion')
      UO.FindType('0x182B',-1,'backpack') ;heal
      If UO.Count('0x182B')<5 Then
         UO.FindType('0x182B','-1',LCont )
         UO.Grab(str(5-UO.Count('0x182B')),'finditem' )
         Wait(2000)
      End If
   End If
   uo.print('Zatar Finished')         
   recharge()
end Sub
#####################################
Sub recharge()
   var Time=Time()
   uo.TextOpen()
   uo.TextPrint('Перезаряжаем рунбуку' +Space +Time)
   UO.DeleteJournal()
   UO.FindType('0x1F4C',-1,LCont) ;реколы
   UO.Grab(20,'finditem')
   CheckLag()
   Repeat
      UO.Recall(RuneBook, 1)
      wait(1000)
   Until uo.InJournal('The book is') or uo.InJournal('You have no scrolls')
   UO.FindType(0x1F4C,-1,'backpack')
   UO.MoveItem('finditem',0,LCont)
   CheckLag()
   uo.print('Recharge Finished')
end Sub
######################################
Sub unload()
   var Time=Time()
   uo.TextOpen()
   uo.TextPrint('Выгружаем накопанное и лут' +Space +Time)
   VAR a
   VAR LastTimer
   DIM Ore[13]
   Ore[1]=0x19B9 ;4 and more ore
   Ore[2]=0x19B7 ;1 ore
   Ore[3]=0x19BA ;2 ore
   Ore[4]=0x19B8 ;3 ore
   Ore[5]=0x0EED ;деньги
   Ore[6]=0x09AA ;пандоры
   Ore[7]=0x19B9 ;руда
   Ore[8]=0x0F26 ;диаманты
   Ore[9]=0x0F8A ;pig iron
   Ore[10]=0x1422 ;plaster
   Ore[11]=0x1BF2 ;marble
   Ore[12]=0x14EB ;map
   Ore[13]=0x1088 ;necklace
   
   uo.print('Idem v tochku vigruzki')   
   walkn(ncxC,ncyC,'')
   wait(2000)   
   UO.UseObject(UCont)
   CheckLag()   
   For a=1 to 13
      UO.FindType(ore[a],-1,'backpack')
      While UO.FindCount() > 0
         UO.MoveItem('finditem',-1,UCont)
         wait(500)
         CheckLag()
         UO.FindType(ore[a])
      Wend   
   next
   uo.print('Unload Finished')
end Sub
#######################################
Sub unload(PX,PY)
   While uo.getx()<>ncxu and uo.gety()<>ncyu
      Recalling(RuneBook, 4)
   Wend 
   unload()
   load()
   wait(100)
   Recalling(RuneBook, n)
   uo.DeleteJournal()   
   vozvrat(PX,PY)
end Sub
##############################
Sub rest()
   var Time=Time()
   uo.TextOpen()
   uo.TextPrint('Восстанавливаем МП и ХП' +Space +Time)
   VAR LastTimer 
   while UO.Mana<UO.Int
      UO.DeleteJournal()
      LastTimer=UO.Timer()
      UO.UseSkill('Meditation')
      repeat
         wait(100)
      until UO.InJournal("You are") OR UO.InJournal("You lose") OR UO.Timer()>LastTimer+200 
   wend
   While uo.life<uo.str
      UO.DeleteJournal()
      UO.BandageSelf()
      Repeat
         wait(100)
      until uo.injournal('You put') or uo.injournal('You fail healing!') OR UO.Timer()>LastTimer+500
   Wend
   uo.print('HP MP restored')       
end Sub
#########################################
Sub CheckLag()
   UO.DeleteJournal()
   UO.Click('backpack')
   repeat
      wait(100)
   until UO.InJournal('backpack')
end Sub
#######################################
sub Eqiuping()
   UO.UseObject(LCont)
   wait(5000)
   uo.findtype('0x0E76',-1,LCont) ;armor pack
   If uo.findcount()>0 Then
      UO.Grab('1','finditem' )
      Wait(2000)
      Checklag()             
      uo.findtype('0x0E76',-1,'backpack')
      uo.useobject('finditem')   
      uo.findtype(weapon,-1,LCont)
      UO.Grab('1','finditem' )
      Wait(2000)
      Checklag()
      uo.findtype(shield,-1,LCont)
      UO.Grab('1','finditem' )
      Wait(2000)
      Checklag()   
      While UO.ObjAtLayer('Rhand')==''
         uo.usetype(weapon)
         Wait(100)
      Wend
      While UO.ObjAtLayer('Lhand')==''
         uo.usetype(shield)
         Wait(100)
      Wend
      While UO.ObjAtLayer('Legs')==''
         uo.usetype('0x1411')
         Wait(100)
      Wend
      While UO.ObjAtLayer('Arms')==''
         uo.usetype('0x1410')
         Wait(100)
      Wend
      While UO.ObjAtLayer('Gloves')==''
         uo.usetype('0x1414')
         Wait(100)
      Wend
      While UO.ObjAtLayer('Neck')==''
         uo.usetype('0x1413')
         Wait(100)
      Wend
      While UO.ObjAtLayer('Torso')==''
         uo.usetype('0x1415')
         Wait(100)
      Wend
      While UO.ObjAtLayer('Hat')==''
         uo.usetype('0x1412')
         Wait(100)
      Wend
   Else
      Recalling(RuneBook, 2)
      uo.exec('terminate all')
   End If
End Sub
#######################################
sub alert()
   var Time=Time()
   var Space=' '
   uo.deletejournal()
   While not uo.dead()
      uo.deletejournal()
      While not UO.InJournal(":")
         Wait(10)
      Wend
      If UO.InJournal("Elemental") Then       
         If kill==1 Then
            UO.FindType(0x000E,-1,'ground')
            If UO.FindCount()>0 Then
               killelem()
               uo.say(',exec mine')   
            End If         
         Else
            uo.TextOpen()
            uo.TextPrint('Сваливаем от элементаля'+uo.GetName(uo.JournalSerial(0)) +Space +Time)
            safe()
            uo.exec('terminate all')               
         End If
      End If
      If uo.injournal("[Chaos]") or uo.injournal("[Criminal]") Then
         uo.GetStatus('uo.JournalSerial(0)')
         uo.SetGlobal('name',uo.GetName(uo.JournalSerial(0)))
         uo.TextOpen()
         uo.TextPrint('Появился враг - '+uo.GetName(uo.JournalSerial(0)) +Space +Time)         
         uo.exec('terminate mine')
         safe()
         wait(120000)
         uo.say(',exec mine')
      End If
      Wait(100)     
   Wend   
end Sub
#######################################
Sub killelem()
   var Time=Time()
   var y = uo.GetGraphic(uo.ObjAtLayer('Rhand'))
   VAR LastTimer, Elem ,it=1
   UO.Set('finddistance','20')
   uo.exec("warmode 1")
   wait(50)
   uo.exec("warmode 0")
   uo.print('weapon')
   Repeat
      uo.usetype(weapon)
      Wait(100)
      it=it+1
   Until uo.GetGraphic(uo.ObjAtLayer('Rhand'))==weapon or it>10
   If uo.GetGraphic(uo.ObjAtLayer('Rhand'))<>weapon Then
      uo.say(' ')
      uo.say('.arm')
      uo.TextOpen()
      uo.TextPrint('Нет оружия' +Space +Time)     
   End If           
   UO.DeleteJournal()
   UO.FindType(0x000E,-1,'ground')
   While UO.FindCount()>0
      uo.TextOpen()
      uo.TextPrint('Идем убивать элементаля' +Space +Time)
      uo.exec('terminate mine')   
      uo.findtype('0x0F09','0x0000','backpack')
      UO.Useobject('finditem')
      wait(200)
      Elem=UO.GetSerial('finditem')
      UO.Exec('warmode 1')
      UO.Attack(Elem)
      WalkN(0,0,Elem)
      wait(100)
      repeat
         If uo.GetGraphic(uo.ObjAtLayer('Rhand'))<>weapon Then
            uo.say(' ')
            uo.say('.arm')
            uo.TextOpen()
            uo.TextPrint('Нет оружия' +Space +Time)     
         End If     
         If UO.GetDistance(Elem)>1 then
            WalkN(0,0,Elem)
         End If
         If uo.life<30 Then
            bheal()       
         End If
         wait(100)
      until uo.gethp(Elem)==0 OR LastTimer+10000<UO.Timer()
      uo.TextOpen()
      uo.TextPrint('Элем мертв' +Space +Time)     
      wait(5000)
      UO.Exec('warmode 0')
      loot()       
      wait(2000)
   Wend
end Sub
#######################################
sub autobotl()
   While not uo.dead()
      If uo.life<100 Then
         uo.findtype('0x182B','0x0000','backpack')
         If UO.FindCount()>0 Then
            UO.Useobject('finditem')
         End If                 
      End If
      If uo.Stamina<20 Then
         uo.findtype('0x182C','0x0000','backpack')
         UO.Useobject('finditem')       
      End If       
      Wait(100)
   Wend
end sub
#######################################
sub bheal()
   var Time=Time()
   uo.TextOpen()
   uo.TextPrint('ХП мало' +Space +Time)
   uo.exec("warmode 0")
   wait(10)
   uo.say(' ')
   wait(10)
   uo.say('.drink invis')
   wait(50)
   If uo.injournal('not found') Then
      uo.TextOpen()
      uo.TextPrint('Инвизок нет' +Space +Time)
      uo.DeleteJournal()
      while not uo.Hidden()
         uo.DeleteJournal()
         uo.warmode(0)
         uo.UseSkill('Hiding')
         While not uo.injournal('You have hidden') and not uo.injournal('You stop')   
            wait(50)
         Wend
         wait(50)
      Wend
   End If 
   While uo.life<uo.str
      UO.DeleteJournal()
      UO.BandageSelf()
      While not uo.injournal('You put') and not uo.injournal('You fail healing!')
         wait(50)
      wend
   Wend
end sub
#######################################
Sub safe()
   var Time=Time()
   uo.exec("warmode 0")
   wait(100)
   uo.say(' ')
   wait(10)
   uo.say('.drink invis')
   wait(100)
   If uo.injournal('not found') Then
      uo.TextOpen()
      uo.TextPrint('Инвизок нет' +Space +Time)
   End If
   While uo.getx()<>gzX and uo.gety()<>gzY
      Recalling(RuneBook, 2)
   Wend
   wait(1000)   
end sub
#######################################
Sub Recalling(RuneBook, NRune)
   VAR myx=UO.GetX()
   VAR myy=UO.GetY()
   VAR i=0
   uo.DeleteJournal('fizzles')
   UO.Recall(RuneBook, NRune)
   CheckLag()   
   repeat
      wait(100)
      i = i + 1
   until (i>100) OR UO.InJournal('fizzles')
   wait(100)
   If myx==UO.GetX() AND myy==UO.GetY() Then
      UO.WarMode(0)
      wait(50)
      Recalling(RuneBook, NRune)
   End If
end sub
#######################################
Sub Time()
   var Date,nTime,uTime,i
   uTime=str(uo.Time())
   nTime=''
   for i=0 to Len(uTime)
      nTime=uTime[Len(uTime)-i]+nTime
      if (i==2) or (i==4) then
         nTime=':'+nTime
      End If
   next
   uTime=str(uo.Date())
   Date=''
   for i=0 to Len(uTime)
      Date=uTime[Len(uTime)-i]+Date
      if (i==2) or (i==4) then
         Date='.'+Date
      End If
   next
   uTime=nTime+' @ '+Date
   return uTime
end sub
#######################################
var LootDelay   = 1000          ; задержка на лут предметов из трупа
var LootDist    = 2            ; расстояние с которого лутить труп
var LootSize    = 1            ; размер массива предметов
var Carve       = False         ; резать трупы
var Cut         = False         ; резать кожу
var Hidden      = False       ; прятаться во время лута
var Track       = False    ; трекать игроков
var Knife       = '0x0F51'
var Scissors    = '0x0F9E'     ; тип ножниц
var Hide        = '0x1078'     ; тип неразрезанной кожи
var Corpse      = '0x2006'     ; тип трупа
var dBag = '0x0160'; цвет контейнера, куда скидывать лут

Sub loot()
   dim Loot[LootSize]
   Loot[1]     = '0xFFFF'     ; все предметы
   var CurrentCorpse
   var Index
   UO.WarMode(0)   
   UO.Set('finddistance', Str(LootDist))
   UO.FindType(Corpse, '-1', 'ground')
   if UO.FindCount() > 0 then
      CurrentCorpse = UO.GetSerial('finditem')
      UO.Print('Лутим труп ' + UO.GetName(CurrentCorpse))
      UO.UseObject(CurrentCorpse)
      Wait(500)
      for Index = 1 to LootSize
         UO.FindType(Loot[Index], '-1', CurrentCorpse)
         while UO.FindCount() > 0
            if UO.GetDistance(CurrentCorpse) > LootDist then
               UO.Print('Труп облутан не полностью!')
               UO.WarMode(True)
               return False
            End If
            UO.Grab('10000','finditem')
            Wait(LootDelay)
            UO.FindType(Loot[Index], '-1', CurrentCorpse)
         wend
      next
      UO.Hide(CurrentCorpse)
      UO.Ignore(CurrentCorpse)
   End If
   UO.Print('Труп успешно облутан.')
   return True
end Sub

#==============================================================
#  WalkN(X,Y,Serial) - char is walking by dX and dY step
#                Sub using Home, End, PgUp, PgDown keys
#                d'not rebind this key from default action!
#       serial - Serial of target or "" - string
#     walkwait - delay after keypress
#     Example:
#     WalkN(2080,2113,'') - go to coordinates
#     WalkN(0,0,'0x12345678') - go to target position
#--------------------------------------------------------------
Sub WalkN(x,y,Target)
   VAR i,StepSucess
   VAR dx,dy,Exit=0
   
   While Exit<>1   
      If Target<>"" Then
         dx=UO.GetX(Target)-UO.GetX()
         dy=UO.GetY(Target)-UO.GetY()
         ;         UO.Print("Target locked!")
         If UO.GetDistance(Target)<1 Then
            Exit=1
         Endif
      Else
         dx=x-UO.GetX()
         dy=y-UO.GetY()
         If dx==0 AND dy==0 Then
            Exit=1
         Endif
         
      Endif
     
      If dx<>0 AND dy<>0 Then
         If dx>0 AND dy>0 Then
            StepSucess=Go(3,40,300);SE - DownArrow
            If StepSucess==-1 Then
               StepSucess=Go(7,38,300);WN - UpArrow
               StepSucess=Go(1,39,300);NE - RightArrow
               If StepSucess==-1 Then
                  StepSucess=Go(5,37,300);SW - LeftArrow
               Endif
            Endif
         Endif
         
         If dx>0 AND dy<0 Then
            StepSucess=Go(1,39,300);NE - RightArrow
            If StepSucess==-1 Then
               StepSucess=Go(5,37,300);SW - LeftArrow
               StepSucess=Go(3,40,300);SE - DownArrow
               If StepSucess==-1 Then
                  StepSucess=Go(7,38,300);WN - UpArrow
               Endif
            Endif
         Endif
         
         If dx<0 AND dy>0 Then
            StepSucess=Go(5,37,300);SW - LeftArrow
            If StepSucess==-1 Then
               StepSucess=Go(1,39,300);NE - RightArrow
               StepSucess=Go(7,38,300);WN - UpArrow
               If StepSucess==-1 Then
                  StepSucess=Go(3,40,300);SE - DownArrow
               Endif
            Endif
         Endif
         
         If dx<0 AND dy<0 Then
            StepSucess=Go(7,38,300);WN - UpArrow
            If StepSucess==-1 Then
               StepSucess=Go(3,40,300);SE - DownArrow
               StepSucess=Go(5,37,300);SW - LeftArrow
               If StepSucess==-1 Then
                  StepSucess=Go(1,39,300);NE - RightArrow
               Endif
            Endif
         Endif
         
      Endif
     
      If dx<>0 AND dy==0 Then
         If dx>0 Then
            StepSucess=Go(2,34,300);E - PgDown
            If StepSucess==-1 Then
               StepSucess=Go(3,40,300);SE - DownArrow
               If StepSucess==-1 Then
                  StepSucess=Go(1,39,300);NE - RightArrow
               Endif
               StepSucess=Go(2,34,300);E - PgDown
            Endif
         Endif
         
         If dx<0 Then
            StepSucess=Go(6,36,300);W - Home
            If StepSucess==-1 Then
               StepSucess=Go(7,38,300);WN - UpArrow
               If StepSucess==-1 Then
                  StepSucess=Go(5,37,300);SW - LeftArrow
               Endif
               StepSucess=Go(6,36,300);W - Home
            Endif
         Endif
      Endif
     
     
      If dx==0 AND dy<>0 Then
         If dy>0 Then
            StepSucess=Go(4,35,300);S - End
            If StepSucess==-1 Then
               StepSucess=Go(3,40,300);SE - DownArrow
               If StepSucess==-1 Then
                  StepSucess=Go(5,37,300);SW - LeftArrow
               Endif
               StepSucess=Go(4,35,300);S - End
            Endif
         Endif
         
         If dy<0 Then
            StepSucess=Go(0,33,300);N - PgUp
            If StepSucess==-1 Then
               StepSucess=Go(1,39,300);NE - RightArrow
               If StepSucess==-1 Then
                  StepSucess=Go(7,38,300);WN - UpArrow
               Endif
               StepSucess=Go(0,33,300);N - PgUp
            Endif
         Endif
      Endif
   Wend
end Sub


Sub Go(dir,key,walkwait)
   VAR x,y, OldDir
   
   x=UO.GetX()
   y=UO.GetY()
   OldDir=UO.GetDir()
   If UO.GetDir()<>dir Then
      UO.Press(key)
      wait(walkwait)
      If UO.GetDir()<>dir Then
         CheckLag()
      Endif
   Endif
   
   UO.Press(key)
   wait(walkwait)
   
   If x==UO.GetX() AND y==UO.GetY() Then
      CheckLag()
   Endif
   
   If x==UO.GetX() AND y==UO.GetY() AND OldDir<>UO.GetDir() Then
      UO.Press(key)
      wait(walkwait)
   Endif
   
   If x==UO.GetX() AND y==UO.GetY() Then
      CheckLag()
   Endif
   
   If x==UO.GetX() AND y==UO.GetY() Then
      UO.Print("Zasada!")
      return -1
   Else
      return 1
   Endif
end Sub
#######################################


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 1 post ] 

All times are UTC+02:00


Who is online

Users browsing this forum: Bing [Bot] and 24 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Limited