Page 1 of 1

Pozalusta pomogite Mining

Posted: 2005-09-04 12:04:04
by Cornor
Plz skinte proverennij i rabotajy6ij skript na Mining .Nada 4tob on rekolilsa na mesto tama kapal i potom rekolilsa domoi skladival v sunduk i t.d (zelatelno opisanije)(tolko skript kotorim vi polzovalis ) PLZ

Posted: 2005-09-04 15:20:52
by neokron115
Вот скрипт...Работа:
-В бэке (две руны, мешок с регами и едой, кирки), в банке мешок для руды
-Чар стоит около банка, ест , реколится по руне в шахту, медетирует, встает в хайд и копает по заданым координатам
-При достяжении определенного веса реколится к банку
-Там в банк ,в мешок(для нее), выкладывает руду, медетирует и все заного...

Во-первых скрипт настроен под шард Антарес(http://www.uoa.ru),
поэтому тебе надо попросить кого-нить его переделать под твой шард(ты почемуто не указал на каком шарде играешь :?: )

Во-вторых надо указать координаты точек где будет копать...

В-третих попроси чтобы его переделали под дом(т.е чтобы выкладывал руду в сундук...ИД сундука вроде просто поставить вместо ИД банка и убрать UO.SAY('BANK')... точно не уверен...

Его автор :
Beyonder

Code: Select all

var Prec=0
var Speed=1
var MaxTracing=100

var PackForOre='0x40344473'
var PackForRegs='0x4003B122'
var RegCount=10
var MaxWeight=620
var FoodType='0x097B'

sub miner()
  var PointCnt=47
  dim PointsX[47]
  dim PointsY[47]
  var iPoint
  var iGo
  PointsX[0]=1809
  PointsY[0]=1051
  PointsX[1]=1812
  PointsY[1]=1054
  PointsX[2]=1812
  PointsY[2]=1056
  PointsX[3]=1811
  PointsY[3]=1056
  PointsX[4]=1809
  PointsY[4]=1054
  PointsX[5]=1809
  PointsY[5]=1058
  PointsX[6]=1806
  PointsY[6]=1057
  PointsX[7]=1804
  PointsY[7]=1058
  PointsX[8]=1801
  PointsY[8]=1061
  PointsX[9]=1800
  PointsY[9]=1062
  PointsX[10]=1798
  PointsY[10]=1061
  PointsX[11]=1799
  PointsY[11]=1060
  PointsX[12]=1801
  PointsY[12]=1058
  PointsX[13]=1803
  PointsY[13]=1056
  PointsX[14]=1800
  PointsY[14]=1056
  PointsX[15]=1798
  PointsY[15]=1054
  PointsX[16]=1800
  PointsY[16]=1052
  PointsX[17]=1798
  PointsY[17]=1050
  PointsX[18]=1800
  PointsY[18]=1048
  PointsX[19]=1802
  PointsY[19]=1050
  PointsX[20]=1804
  PointsY[20]=1052
  PointsX[21]=1804
  PointsY[21]=1050
  PointsX[22]=1802
  PointsY[22]=1047
  PointsX[23]=1803
  PointsY[23]=1046
  PointsX[24]=1803
  PointsY[24]=1043
  PointsX[25]=1803
  PointsY[25]=1040
  PointsX[26]=1803
  PointsY[26]=1038
  PointsX[27]=1801
  PointsY[27]=1036
  PointsX[28]=1798
  PointsY[28]=1033
  PointsX[29]=1801
  PointsY[29]=1032
  PointsX[30]=1801
  PointsY[30]=1029
  PointsX[31]=1803
  PointsY[31]=1028
  PointsX[32]=1805
  PointsY[32]=1026
  PointsX[33]=1807
  PointsY[33]=1028
  PointsX[34]=1809
  PointsY[34]=1028
  PointsX[35]=1811
  PointsY[35]=1026
  PointsX[36]=1813
  PointsY[36]=1028
  PointsX[37]=1811
  PointsY[37]=1030
  PointsX[38]=1808
  PointsY[38]=1033
  PointsX[39]=1808
  PointsY[39]=1035
  PointsX[40]=1810
  PointsY[40]=1037
  PointsX[41]=1807
  PointsY[41]=1040
  PointsX[42]=1807
  PointsY[42]=1042
  PointsX[43]=1808
  PointsY[43]=1044
  PointsX[44]=1807
  PointsY[44]=1046
  PointsX[45]=1806
  PointsY[45]=1049
  PointsX[46]=1807
  PointsY[46]=1050
 
  UO.AddType('miner tool')
  wait(500)
  while UO.Targeting()
    wait(100)
  wend
 
  UO.AddObject('BankRune')
  wait(500)
  while UO.Targeting()
    wait(100)
  wend
 
  UO.AddObject('MineRune')
  wait(500)
  while UO.Targeting()
    wait(100)
  wend

  UnloadToBank()
  CheckLag()
  GotoRune('MineRune') 

  while 1
    for iPoint=0 to PointCnt-1
      GoUntilHit(PointsX[iPoint],PointsY[iPoint])
      MineAround()
      if UO.Weight>MaxWeight then
        FullDrop()
        for iGo=0 to iPoint
          GoUntilHit(PointsX[iGo],PointsY[iGo])
        next
      end if
    next
  wend
end sub

Sub MineAround()
  var ix,iy
  for ix=-2 to 2
    for iy=-2 to 2
      Hide()
      if UO.Weight<MaxWeight then
        MinePoint(UO.GetX()+ix,UO.GetY()+iy,UO.GetZ())
      end if
    next
  next
end sub

Sub MinePoint(X,Y,Z)
  var Text1="That is too far away."
  var Text2="Try mining elsewhere."
  var Text3="There is nothing here to mine for."
  var Text40="You have no line of sight to that location"
  var Text41="You can't use the %s where it is"
  var Text5="You can't see the target"
  var Text6="Targeting Cancelled"
  var Text7="You put"
  var Text8="You loosen some rocks but fail to find any useable ore"
  UO.DeleteJournal()
  while not UO.InJournal(Text1+'|'+Text2+'|'+Text3+'|'+Text40+'|'+Text41+'|'+Text5)
    if UO.WarMode()==1 then
      wait(20000)
      UO.WarMode(0)
    end if
    UO.WaitTargetTile("0",str(X),str(Y),str(Z))
    UO.UseType('miner tool')
    UO.DeleteJournal()
    while not UO.InJournal(Text1+'|'+Text2+'|'+Text3+'|'+Text40+'|'+Text41+'|'+Text5+'|'+Text6+'|'+Text7+'|'+Text8)
      wait(100)
    wend
  wend
end sub

Sub Hide()
  while not UO.Hidden() and not UO.WarMode()
    UO.UseSkill('Hiding')
    DeleteJournal('stop trying to hide')
    DeleteJournal('hidden yourself well')
    DeleteJournal('seem to hide')
    DeleteJournal('must wait')
    DeleteJournal('canceled')
    DeleteJournal('battle')
    WaitJournal('hidden yourself well|seem to hide|must wait|battle|stop trying to hide')
  wend
end sub

sub WaitJournal(Line)
  while not UO.InJournal(Line)
    wait(100)
  wend
end sub

Sub DeleteJournal(MsgText)
 Var MsgNumb
 Repeat
   MsgNumb=UO.InJournal(MsgText)
   If MsgNumb<>0 Then
     UO.SetJournalLine(MsgNumb-1, '')
   EndIf
 Until Not UO.InJournal(MsgText)
endsub

Sub FullDrop()
  GotoRune('BankRune')
  UnloadToBank()
  CheckLag()
  GotoRune('MineRune')
end sub

Sub UnloadToBank()
  DeleteJournal('Contains')
  while not UO.InJournal('Contains')
    wait(1000)
    UO.Msg('bank')
    CheckLag()
  wend
  DropOres()
  GetRegs()
end sub

Sub GetRegs()
  UO.UseObject(PackForRegs)
  CheckLag()
  if UO.Count('0x0F7A')<RegCount then
    UO.FindType('0x0F7A','-1',PackForRegs)
    UO.Grab(RegCount-UO.Count('0x0F7A'),'finditem')
    wait(500)
  end if
  if UO.Count('0x0F7B')<RegCount then
    UO.FindType('0x0F7B','-1',PackForRegs)
    UO.Grab(RegCount-UO.Count('0x0F7B'),'finditem')
    wait(500)
  end if
  if UO.Count('0x0F86')<RegCount then
    UO.FindType('0x0F86','-1',PackForRegs)
    UO.Grab(RegCount-UO.Count('0x0F86'),'finditem')
    Wait(500)
  end if
  DeleteJournal('too full')
  while not UO.InJournal('too full')
    UO.FindType(FoodType,'-1',PackForRegs)
    UO.Grab(1,'finditem')
    Wait(500)
    UO.UseType(FoodType)
  wend
  wait(1000)
  UO.FindType(FoodType,'-1','backpack')
  UO.MoveItem('finditem','0',PackForRegs)
  wait(500)
end sub

Sub DropOres()
  if uo.Waiting() then
    uo.CancelTarget()
  end if
  var a, Exit
  var UnloadChest=PackForOre ## - ID сундука для сброса руды.
  DIM Ore[5]
  Ore[0]=0x19B9 ## - 4 and more ore
  Ore[1]=0x19B7 ## - 1 ore
  Ore[2]=0x19BA ## - 2 ore
  Ore[3]=0x19B8 ## - 3 ore
  uo.SetReceivingContainer(UnloadChest)
  wait(500)
  for a=0 to 3
    exit=0
    repeat
      uo.FindType(Ore[a])
      if uo.GetQuantity('finditem')>0 then
        uo.Grab('0','finditem')
        wait(1500)
      else
        exit=1
      end if
    until Exit==1
  next
  uo.UnSetReceivingContainer()
end sub

Sub CheckLag()
  var TimeOut=0
  DeleteJournal('Backpack')
  while TimeOut==10
    TimeOut=0
    UO.Click('backpack')
    while not UO.InJournal('Backpack') and TimeOut<10
      wait(100)
      TimeOut=TimeOut+1
    wend
  wend
end sub

Sub GotoRune(ID)
  var ManaUsed=0;
  while ManaUsed==0 and UO.Count('0x0F7A') and UO.Count('0x0F7B') and UO.Count('0x0F86')
    if UO.Mana>=40 then
      UO.Cast('Recall',ID)
      wait(2000)
      ManaUsed=WaitRecall()
      wait(2000)
    else
      while UO.Mana<UO.Int
        UO.UseSkill('Meditation')
        wait(2000)
      wend
    end if
  wend
  wait(500)
  while UO.Mana<UO.Int
    UO.UseSkill('Meditation')
    wait(2000)
  wend
end sub

Sub WaitRecall()
  var SMana=UO.Mana
  var TimeOut=150
  var StartX=UO.GetX()
  var StartY=UO.GetY()
  DeleteJournal("can't see")
  DeleteJournal("must wait")
  DeleteJournal("fizzles")
  while TimeOut>0 and not UO.InJournal("can't see|must wait|fizzles") and StartX==UO.GetX() and StartY==UO.GetY()
    wait(100)
    TimeOut=TimeOut-1
  wend
  wait(300)
  if StartX==UO.GetX() and StartY==UO.GetY() then
    return 0
  end if
  return 1
end sub

Sub GoUntilHit(X,Y)
  var LastDir
  var StepCount
  LastDir=GetDir(X,Y)
  repeat
    LastDir=GetDir(X,Y)
    if LastDir<>0 and not IsEnd(X,Y) and not X==0 and not Y==0 then
      TryDir(LastDir)
    end if
  until LastDir==0 or IsEnd(X,Y) or X==0 or Y==0
  return LastDir
  return 0
end sub

Sub IsEnd(GoX,GoY)
  if Abs(UO.GetX()-GoX)<=Prec and Abs(UO.GetY()-GoY)<=Prec then
    return true
  else
    return false
  end if
end sub

Sub GetDir(GoX,GoY)
  var MyX=UO.GetX()
  var MyY=UO.GetY()
  var DiffX=Abs(UO.GetX()-GoX)
  var DiffY=Abs(UO.GetY()-GoY)
  var GoDir=0
  if (DiffX/(DiffY+0.1))>=2 then
    if (MyX>GoX) then
      GoDir=7
    else
      GoDir=3
    end if
  else

  if (DiffY/(DiffX+0.1))>=2 then
    if (MyY>GoY) then
      GoDir=5
    else
      GoDir=1
    end if
  else
 
  if (MyX>GoX) and (MyY>GoY) then
    GoDir=6
  else
  if (MyX>GoX) and (MyY<GoY) then
    GoDir=8
  else
  if (MyX<GoX) and (MyY>GoY) then
    GoDir=4
  else
  if (MyX<GoX) and (MyY<GoY) then
    GoDir=2
  end if
  end if
  end if
  end if
  end if
  end if
  return GoDir
end sub

Sub TryDir(Dir)
dim Dirs[9]
Dirs[1]=35
Dirs[2]=40
Dirs[3]=34
Dirs[4]=39
Dirs[5]=33
Dirs[6]=38
Dirs[7]=36
Dirs[8]=37
UO.Press(Dirs[Dir],Speed)
end sub

Sub XFromDir(Dir,StartX)
  if Dir==2 OR Dir==3 Or Dir==4 then
    return (StartX+1)
  end if
  if Dir==6 OR Dir==7 Or Dir==8 then
    return (StartX-1)
  end if
  return (StartX)
end sub

Sub YFromDir(Dir,StartY)
  if Dir==8 OR Dir==1 Or Dir==2 then
    return (StartY+1)
  end if
  if Dir==4 OR Dir==5 Or Dir==6 then
    return (StartY-1)
  end if
  return (StartY)
end sub

Sub Abs(X)
  if X>0 then
    return X
  else
    return (-X)
  end if
end sub




Posted: 2005-09-04 19:24:36
by Cornor
ja igrajy na DRW
ja videl skripti no kada ja odin iz nix zapuskal (BETEP avtor) to srazu o6ibka vidavalas xota ja sledoval instrukcijam...

Posted: 2005-09-04 19:30:43
by neokron115
Ты мой скрипт юзал?