Page 1 of 1

Антарес. Мининг.

Posted: 2004-12-10 17:17:14
by Шмак
Народ , плиз , помогите , мой верный скрипт на антаресе не пашет. Если кто нить чё нить знает , плиз , прошу помочь. Вот скрипт :

var damaged = false

sub tohid()
repeat
UO.DeleteJournal()
UO.UseSkill('Hiding')
wait (3000)
until NOT UO.InJournal("see")
end sub

sub exitcicle()
dim msg [4]
msg[1]="There is no ore"
msg[2]="too far away"
msg[3]="Try mining in rock"
msg[4]="not in line"

var r=false
var i
for i=1 to 4
if uo.injournal(msg[i]) then
r=true
endif
next
return r
end sub

sub waitmine()
uo.deletejournal()
while not (exitcicle() or uo.injournal("You put") or uo.injournal("You loosen"))
wait(500)
if uo.injournal('damage') then
damaged=true
uo.print('DAMAGED')
endif

if uo.injournal('stop') then
if uo.getserial(uo.journalserial('stop'))==uo.getserial('self') then
uo.unsetcatchbag()
uo.exec('terminate main')
endif
endif
wend
if uo.injournal('damage') or damaged then
damaged=true
uo.print('DAMAGED')
uo.findtype('0x0F39',-1,'self')
if uo.findcount()==0 then
uo.findtype('0x0F3A',-1,'self')
endif
uo.drop(1,0,0,0,'finditem')
damaged=false
wait(1000)
endif
end sub

sub kopok(x,y)
var a,b
a=uo.getx()
b=uo.gety()
uo.waittargettile('tilenum',str(a+x),str(b+y),-1)
uo.findtype('0x0F39',-1,'self')
if uo.findcount()>0 then
uo.usetype('0x0F3A')
else
uo.findtype('0x0F39',-1,'my')
if uo.findcount()>0 then
uo.usetype('0x0F39')
else
uo.usetype('0x0F3A')
endif
endif
uo.print(str(x)+","+str(y))
end sub

sub aaa()
uo.print(str(uo.getx()))
end sub

sub mine()
var x,y
for x=-4 to 4
for y=-3 to 3
uo.deletejournal()
kopok(x,y)
waitmine()
if not UO.Hidden("self") then
tohid()
end if
if uo.injournal('loosen') or uo.injournal('put') then
while not exitcicle()
kopok(x,y)
if uo.injournal('stop') then
if uo.getserial(uo.journalserial('stop'))==uo.getserial('self') then
uo.unsetcatchbag()
uo.exec('terminate main')
endif
endif
waitmine()
wend
endif
next
next
end sub

sub invis()
repeat
uo.useskill('Hiding')
wait(4500)
until uo.hidden()
end sub

sub setbag()
uo.setcatchbag()
var k
repeat
wait(100)
k=uo.targeting()
until not k==2
end sub
sub main()
setbag()
while true
mine()
wend

Posted: 2004-12-17 08:44:30
by Revenant
for x=-4 to 4
for y=-3 to 3


На антаресе -2 to 2

Posted: 2004-12-17 13:47:26
by Шмак
не катит....напиши полностью?

Posted: 2004-12-17 22:36:08
by Revenant
Список условий на Антаресе другой, и вообще легче все заново сделать.

Posted: 2004-12-17 22:56:24
by Шмак
лана , легче так легче....ревенант , на форуме антареса скрипт на плавку не даёшь , сдесь дай а??

Posted: 2004-12-17 23:09:22
by Revenant

Code: Select all

######################################
#  Antares / auo.ru
######################################
# в банке должны быть руны в пещеры, помеченные в инжекте как обьекты
# (Закладка Objects !!!!  не путать c  Object type)
# Mine , Mine1, Mine2, Mine3, Mine4, а в бекпаке обьект Bank - руна к банку
# промаркировать каждую пещеру надо зарание, запустив процедуру MultyMark()
# Для марка, обходя последовательно все точки копания набирать "set"
# (точка копания - центр квадрата 5х5 тайлов, который выкапывается подчистую)
# При окончании марка в текущей пещере набрать "stop" перереколиться в следующюю пещеру и продолжить
# После марка 5 пещер появятся файлы C:\mine4.dat, C:\mine3.dat, C:\mine2.dat, C:\mine1.dat, C:\mine.dat
# После этого можно начинать копку запустив процедуру main() стоя у банка.
# И если в банке будут лежать жаренные фишстеки, чар не применет возможностью ими полакомиться.
# при вероятности дисконнектов перед копкой запускать процедуру Reconnect

################################
var Cont = '0x40FA6B85'   ;ID контейнера в который будет складываться накопанное.
var RC = '0x40026308'     ;ID контейнера с регами
var food= '0x097B'        ;еда(type) по умолчанию жаренные фишстейки
var q, w, p
var f=file("C:\mine.dat")
;var f , mine
var mine

###############################        процедура запуска для  5 пещер

# количество пещер может быть уменьшено или увеличено
# удалением или внесением троестрочий вида:
#      f=file("C:\mine1.dat")
#      mine='Mine1'
#      one()

sub main()
repeat

 f=file("C:\mine.dat")
 mine='Mine'                      
 one()

f=file("C:\mine1.dat")
mine='Mine1'
one()

  f=file("C:\mine2.dat")
  mine='Mine2'
  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')
uo.say("Bank")
wait(100)
med()
takereg()
Recall(mine)
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
  recall('Bank')  
  Razg()
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:\mine.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 
   UO.Set('finddistance','2') 
   z=UO.GetZ("self") 
      for x=-2 to 2 
         for y=-2 to 2 
            Hid()       
            UO.Print(str(x)+" "+str(y))
            Repeat 
               if UO.InJournal('TORMOZ') then
                 pause()
               endif
               UO.DeleteJournal()
               UO.Warmode("0")
               UO.WaitTargetTile("1341",STR(UO.GetX()+x),STR(UO.GetY()+Y),str(z)) 
               UO.UseType('0x0E85')
               LastTimer=UO.Timer() 
               Repeat
                  wait(500)
                  ;check()
               Until UO.InJournal("You put") or UO.InJournal("can't see") or UO.InJournal("heavy") or UO.InJournal("location") or UO.InJournal("no ore") or UO.InJournal("but fail") or UO.InJournal("far away") or UO.InJournal("in rock") or UO.InJournal("must wait") or UO.InJournal("nothing") or UO.InJournal("elsewhere") or UO.InJournal("where it") OR UO.Timer()>LastTimer+200
               lookout()
            Until UO.InJournal("nothing") or UO.InJournal("elsewhere") or UO.InJournal("no ore here") or UO.InJournal("location") or UO.InJournal("far away") or UO.InJournal("in rock") or UO.InJournal("where it")
               if UO.Weight>720 then 
                  unload(PX,PY)
               endif
            ;wait(2000)    ; раскоментировать при копке лопатой
         next 
      next
end sub
#########################################
sub lookout()
    if UO.InJournal("Earth elemental") then
       killelem()
    endif
end sub
#######################################
sub check()
   var noto, ser, jor
       for jor = 0 to 9
           ser = uo.journalserial(jor)
           UO.Print(ser)
           uo.Print(str(uo.IsNPC("ser")))
           if not UO.IsNPC('ser') and not uo.injournal("elemental") and ser <> '0x00000000' then
              if uo.waiting() then
                 uo.canceltarget()
              endif
              UO.DeleteJournal()
              UO.Print('PK')
              UO.Print(ser)
              recall('Bank')  
              Razg()
              wait(180000)
              return
           endif
           
        next
end sub
#######################################
sub Pause()
UO.DeleteJournal() 
REPEAT 
WAIT(3000) 
UO.Print("Paused") 
UNTIL UO.InJournal('GO') 
UO.Print("Continue") 
endif 
end sub 
############################################
sub heal()
  UO.SetArm('arm')
  UO.Exec('bandageself')
  wait(500)
  UO.Arm('arm')
  wait(2000)
end sub
######################################
sub Razg()
VAR a
VAR LastTimer 
DIM Ore[9] 
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

uo.say("Bank")
wait(100)
For a=1 to 9 
    While UO.Count(ore[a])>0 
          UO.FindType(ore[a],-1,-1)
          UO.MoveItem('finditem',0,Cont) 
          wait(1000) 
    Wend 
next
eat()
takereg()
if UO.Mana < 30 then
   while UO.Mana<UO.Int 
         LastTimer=UO.Timer() 
         UO.UseSkill('Meditation') 
         repeat 
            wait(100) 
         until UO.InJournal("You are") OR UO.InJournal("You lose") OR UO.Timer()>LastTimer+200 
         UO.DeleteJournal() 
         wait(200) 
   wend 
endif   
end sub
#######################################
sub eat()
    UO.DeleteJournal()
    repeat
      if UO.Count(food)>0 then
         UO.UseType(food) 
         wait(500)
      else
         return
      end if
    Until UO.InJournal("stuffed!") OR UO.InJournal("think")
end sub
################################
sub unload(PX,PY)
   Recall('Bank')
   Razg()
   wait(100)
   takereg()
   wait(100)
   Recall(mine)
   uo.DeleteJournal()    
   vozvrat(PX,PY)
end sub
########################################
sub med()
VAR LastTimer 
UO.DeleteJournal() 
while UO.Mana<UO.Int 
  LastTimer=UO.Timer() 
  UO.UseSkill('Meditation') 
  repeat 
    wait(100) 
  until UO.InJournal("You are") OR UO.InJournal("You lose") OR UO.Timer()>LastTimer+200 
  UO.DeleteJournal() 
  wait(200) 
wend 
end sub
#########################################
sub takereg()
DIM reg[3]
var i,n
reg[1]='0x0F86' ; MR
reg[2]='0x0F7A' ; BP
reg[3]='0x0F7B' ; BM

UO.UseObject(RC)
for i=1 to 3
    while UO.Count(reg[i])<5
      UO.FindType(reg[i],-1,RC)
      n=UO.Count(reg[i])
      UO.Grab(str(5-n),'finditem')
      wait(1000)
    wend  
next
end sub
#########################################
sub CheckLag() 
UO.DeleteJournal() 
UO.Click('backpack') 
repeat 
wait(500) 
until UO.InJournal('Backpack') 
end sub
######################################
sub Reconnect() 
var ReconnectTime,rFlag 
ReconnectTime='0' 
rFlag=1 
repeat 
while (uo.ObjAtLayer('Bpack')=='') 
if rFlag then 
ReconnectTime=MakeTime() 
rFlag=0 
end if 
wait(20000) 
uo.Say('') 
wait(3000) 
uo.Say('') 
wait(3000) 
uo.Say('') 
wait(3000) 
uo.LDblClick(357,164) 
uo.LClick(616,459) 
wait(3000) 
wend 
wait(3000) 
if (rFlag==0) and (ReconnectTime<>'0') then 
uo.TextOpen() 
uo.TextPrint('Disconnected & Reconnected @ '+ReconnectTime) 
rFlag=1 
ReconnectTime='0' 
end if 
until false 
end sub 


sub MakeTime() 
   VAR D, T, Ret, i 
   Ret = STR(UO.Time()) 
   T = "" 
   For i = 0 To Len(Ret) 
      T = Ret[Len(Ret)-i] + T 
      If (I == 2) OR (I == 4) Then 
         T = ":" + T 
      EndIf 
   Next 
   Ret = STR(UO.Date()) 
   D = "" 
   For i = 0 To Len(Ret) 
      D = Ret[Len(Ret)-i] + D 
      If (I == 2) OR (I == 4) Then 
         D = "." + D 
      EndIf 
   Next    
   Ret = T + " @ " + D 
   RETURN Ret 
end sub 
####################################
sub Hid() 
while not uo.Hidden() 
 uo.exec('warmode 0')
 uo.Print('Hiding...') 
 uo.UseSkill('Hiding') 
 wait(4000) 
wend 
wait(100) 
end sub 
#################################
sub Recall(dest) 
var b 
  uo.print('Recoll') 
  for b=1 to 10 
    uo.deletejournal() 
    uo.waittargetobject(dest) 
    uo.cast('Recall',dest) 
    if WaitForRecall()==1 then 
      return 1 
    end if 
  next 
  return 0 
end sub 
###################################
sub WaitForRecall() 
var Text1=uo.getname()+": The spell fizzles." 
var mess='',lastX=uo.getX(),lastY=uo.getY() 
  for var v=0 to 200 
    mess=uo.journal(0) 
    if uo.Journal(0)==Text1 then 
      return 0 
    end if 
    if uo.getX()<>lastX OR uo.getY()<>LastY then 
      return 1 
    end if 
    wait(50) 
  next 
  return 0 
end sub 
################################   
sub killelem() 
VAR LastTimer, Elem ,i
LastTimer=UO.Timer()
   UO.DeleteJournal() 
  UO.FindType('0x000E',-1,'ground') 
  Elem=UO.GetSerial('finditem')
  UO.Exec('warmode 1')
  UO.Attack(Elem)
  WalkN(0,0,Elem)
  UO.Say('Dye, mother fucker!')
  repeat 
       wait(2000)
   until UO.InJournal('Body') OR LastTimer+500<UO.Timer() 
UO.Exec('warmode 0') 
wait(100) 
LastTimer=UO.Timer() 
if UO.Life<170 and UO.Count('0x0E21') then
   repeat 
     UO.BandageSelf() 
     wait(4000) 
   until UO.Life>170 OR LastTimer+300<UO.Timer() 
endif
loot()
WalkN(q,w,'')
end sub 
##################################
sub loot() 
DIM R[4] 
var a 
R[1] = 0x0EED # деньги
R[2] = 0x09AA # пандоры
R[3] = 0x19B9 # руда
R[4] = 0x0F8A # pig iron

UO.UseObject('lastcorpse')
wait(100)
uo.exec("warmode '0'")
uo.waittargetobject('lastcorpse') 
uo.usetype(0x0F51) 
wait(500) 

for a=1 to 4 
uo.findtype(R[a],"-1","lastcorpse")
if UO.FindCount()>0 and Uo.GetDistance("lastcorpse")<=2 then 
UO.Grab("0","finditem") 
wait(1000) 
end if 
wait(10) 
next 
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)<2 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() 
   hid()
   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 
###########################################