Yoko

All sides of Injection
It is currently 2025-10-15 17:36:37

All times are UTC+02:00




Post new topic  Reply to topic  [ 95 posts ]  Go to page 1 2 3 4 5 Next
Author Message
 Post subject: DRW Vip mining
PostPosted: 2005-01-31 20:29:45 
Offline
Expert!
User avatar

Joined: 2004-04-04 11:13:54
Posts: 1205
Location: Балаково, Саратовская обл.
Назначение скрипта: копание избранной руды в вип шахте, сортировка руды по трем мешкам, кил и лут элемов.
В сундуке должен быть ящик или другой контэйнер в котором располагаются Ваши вещи. А именно: три мешка для руды, инвизы, скролы вортекса и масс диспела и если требуется, еда. Если кормить чара не нужно то раздел ; Eda =====..... ; End eda =====.... удаляем.
Настройка: На малой випке три точки. назовем их базовыми или вэйпоинтами. Так вот надо в скрипте найти раздел:

Code:
;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
; Здесь указываем координаты точек копания. Нужно встать на
; позицию и посмотреть координаты в инжекте. Их и нужно
; подставить вместо моих. Чара ставьте на 3 клетки от стен.
;""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
   BaseX[0]=5135
   BaseY[0]=1084
   BaseZ=0

   BaseX[1]=5142
   BaseY[1]=1084
 

   BaseX[2]=5149
   BaseY[2]=1084


Чара ставим на три клетки от стен и другой точки копания. То есть по центру, три клетки сверху, на четвёртой чар - первая точка. По середине - вторая и три клетки снизу на четвёртой чар - третья.

Далее таким же образом правим на свой вкус остальные переменные чуть выше этогго раздела. Что касается веса то его надо поставить на 20-30 меньше максимального.

Затем подходим к сундуку и правим координаты точки разгрузки в этом разделе:
ВНИМАНИЕ!!! Координаты не сундука а чара перед сундуком.
Code:
;------------------------- Unload ore -------------------------
sub unloadore()
   VAR TempX,TempY,i,Exit, Exit1, ConTainer, j
   VAR SundukX=5519
   VAR SundukY=1434
   VAR Index=14 ; количество элементов массива


Ниже находится массив цветов руд которые приравнены к высшей или самой интересной. Она перекладывается в собственный мешок. Его можно расширить но не забудьте тогда исправить переменную Index. В ней хранится количество элементов массива.

Далее смотрим раздел:

Code:
; Проверка нужности руды. Закоментировать то что нужно копать.
sub CheckOre()
   VAR Cont=1, i=0, Exit=0
   VAR Count=7   ; Сколько элементов в массиве.
   DIM Ores[15]   

   Ores[0]="Iron"
   Ores[1]="Rusty"
   Ores[2]="Old Copper"
   Ores[3]="Dull Copper"
   Ores[4]="Copper"
   Ores[5]="Bronze"
   Ores[6]="Silver"
;   Ores[7]="Shadow"
;   Ores[8]="Rose"
;   Ores[9]="Gold"
;   Ores[10]="Agapite"
;   Ores[11]="Blood Rock"
;   Ores[12]="Verite"
;   Ores[13]="Valorite"
;   Ores[14]="Mytheril"



здесь проставляется руда которую продолжать копать после пробного копка. Строки начинающиеся с ; подлежат обязательному выкапыванию и должны распологаться после строк которые не закоментированы. Соответственно индекс массива должен быть с 0 и возрастать по порядку. То есть допустим нам надо копать еще и железо тогда нужно исправить так:

Code:
; Проверка нужности руды. Закоментировать то что нужно копать.
sub CheckOre()
   VAR Cont=1, i=0, Exit=0
   VAR Count=6   ; Сколько элементов в массиве.
   DIM Ores[15]   

   Ores[0]="Rusty"
   Ores[1]="Old Copper"
   Ores[2]="Dull Copper"
   Ores[3]="Copper"
   Ores[4]="Bronze"
   Ores[5]="Silver"
;   Ores[6]="Iron"
;   Ores[7]="Shadow"
;   Ores[8]="Rose"
;   Ores[9]="Gold"
;   Ores[10]="Agapite"
;   Ores[11]="Blood Rock"
;   Ores[12]="Verite"
;   Ores[13]="Valorite"
;   Ores[14]="Mytheril"


обратите внимание что переменная Count тоже исправлена.

Если чар будет килять элемов то в пак ему кидайте регов: по 10 инвизок, вортексов и масс диспелов.

Чар юзает кирку которая лежит как угодно :D

Когда исправления закончены, запускаем скрипт ,exec mine чар попросит потыкать прицелом в сундук, Ваш ящик и мешки: для ирона, для другой руды, для вышки.

При повторном запуске скрипта лучше подальше от сундука стоять а то долго будет на старте тормозить.

Если мешки потерялись то во вкладке Objects удалите соответствующие объекты. При следующем старте скрипта чар попросит их добавить.

Ну вот вроде все расписал, а теперь сам скрипт:

Code:
############################################################### 
#===---====----===---===---= Mining =---=-=-=-=-=--=-=-=-=-=-=#
#    Single char mining for VIP Mine. DRW Shard www.drw.ru    #
#        Scripted by Savage (c) 2005-2010 ICQ:33336141        #
#"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""#
#"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""#
# To start script use ",exec mine" command from client window #
###############################################################

;""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
;==================== Main mining script ======================
;""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
sub mine()
   
   VAR DigDistance, TileNum, KillElemental, KillAnyElemental
   VAR ElemSignal, LastTimer
   DIM BaseX[2], BaseY[2]
   VAR BaseZ, WayPoint, WayPoints
   VAR MaxWeight

;""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
; Максимальный вес, который может поднять чар. Ставьте его
; немного меньше реального. То есть если чар поднимает 760, то
; ставим 730.
;""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
   MaxWeight=700

;""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
; DigDistance=4 - Distance from tile where pickaxe targeting
; Радиус круга по которому будет копать чар, то есть расстояние
; до клетки куда можно дотянуться киркой.
;""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
   DigDistance=3

;""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
; KillElemental='Yes'/'No' - Use 'Yes' if char skilled to morph
;                            in daemon and wrestling > 50
; Если чар достаточно прокачен чтоб бить элемов, ставьте 'Yes'
;""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
   KillElemental='Yes'


;""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
; KillAnyElemental='Yes'/'No' - Use 'Yes' if you need another
;                               player elem
; Ставьте 'Yes' если хотите бить чужих элемов
;""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
   KillAnyElemental='Yes'
   
;""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
; ElemSignal='Off'/'On' - Play sound when elemental is digged
; Оповешать при появлении элема
;""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
   ElemSignal='Off'

;""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
; Здесь указываем координаты точек копания. Нужно встать на
; позицию и посмотреть координаты в инжекте. Их и нужно
; подставить вместо моих. Чара ставьте на 4 клетки от стен.
;""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
   BaseX[0]=5135
   BaseY[0]=1084
   BaseZ=0

   BaseX[1]=5142
   BaseY[1]=1084


   BaseX[2]=5149
   BaseY[2]=1084

;""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
; Указываем количество точек копания
;""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
   WayPoints=3

   CheckLag()
   UO.UseObject('Sunduk')
   LastTimer=UO.Timer()
   Repeat
      wait(500)
   Until UO.InJournal('You can|What is the') OR UO.Timer()>LastTimer+100
   
   If UO.InJournal('see the') Then
      UO.Say("Podoydi k sunduku i tkni v nego pricelom!")
      UO.AddObject('Sunduk')
      While UO.Targeting()==2
         wait(500)
      Wend
      UO.SaveConfig()
      UO.UseObject('Sunduk')
   Endif

   CheckLag()
   UO.UseObject('MyBox')
   LastTimer=UO.Timer()
   Repeat
      wait(500)
   Until UO.InJournal('You can|What is the') OR UO.Timer()>LastTimer+100

   If UO.InJournal('see the') Then
      UO.Say("Pokaji yashik!")
      UO.AddObject('MyBox')
      While UO.Targeting()==2
         wait(500)
      Wend
      UO.SaveConfig()
      UO.UseObject('MyBox')
   Endif

   CheckLag()
   UO.UseObject('IronBag')
   LastTimer=UO.Timer()
   Repeat
      wait(500)
   Until UO.InJournal('You can|What is the') OR UO.Timer()>LastTimer+100
   
   If UO.InJournal('see the') Then
      UO.Say("V kakoy meshok kidat' Iron Ore")
      UO.AddObject('IronBag')
      While UO.Targeting()==2
         wait(500)
      Wend
      UO.SaveConfig()
   Endif

   CheckLag()
   UO.UseObject('OtherBag')
   LastTimer=UO.Timer()
   Repeat
      wait(500)
   Until UO.InJournal('You can|What is the') OR UO.Timer()>LastTimer+100
   
   If UO.InJournal('see the') Then
      UO.Say("V kakoy meshok kidat' rudu?")
      UO.AddObject('OtherBag')
      While UO.Targeting()==2
         wait(500)
      Wend
      UO.SaveConfig()
   Endif

   CheckLag()
   UO.UseObject('BestBag')
   LastTimer=UO.Timer()
   Repeat
      wait(500)
   Until UO.InJournal('You can|What is the') OR UO.Timer()>LastTimer+100
   
   If UO.InJournal('see the') Then
      UO.Say("V kakoy meshok kidat' vihu?")
      UO.AddObject('BestBag')
      While UO.Targeting()==2
         wait(500)
      Wend
      UO.SaveConfig()
   Endif

   While NOT UO.Dead()
      For WayPoint=0 to WayPoints-1
         walkn(BaseX[WayPoint],BaseY[WayPoint],"")
         digitstay(MaxWeight,DigDistance,KillElemental,KillAnyElemental,ElemSignal,BaseX[WayPoint],BaseY[WayPoint])
      Next
   wend
end sub


; Проверка нужности руды. Закоментировать то что нужно копать.
sub CheckOre()
   VAR Cont=1, i=0, Exit=0
   VAR Count=0   ; Сколько элементов в массиве.
   DIM Ores[15]   

;   Ores[0]="Rusty"
;   Ores[1]="Old Copper"
;   Ores[2]="Dull Copper"
;   Ores[3]="Copper"
;   Ores[4]="Bronze"
;   Ores[5]="Silver"
;   Ores[6]="Iron"
;   Ores[7]="Shadow"
;   Ores[8]="Rose"
;   Ores[9]="Gold"
;   Ores[10]="Agapite"
;   Ores[11]="Blood Rock"
;   Ores[12]="Verite"
;   Ores[13]="Valorite"
;   Ores[14]="Mytheril"

   While i<Count AND Exit==0
      If UO.InJournal(Ores[i]) Then
         Cont=0
         Exit=1
      Endif
      i=i+1
   Wend
   return Cont
end sub


;-------------------- Try to mine under self ------------------
sub digitstay(MaxWeight,MaxDistance,KillElemental,KillAnyElemental,ElemSignal,BaseX,BaseY)
   VAR x,y,z='0',TileNum='1339'
   VAR Last=0,LastTimer, ContFlag=1, Counter, PickAxeType
   VAR MaxTimer=110, MaxCount=10 ; количество попыток копания
   
   UO.FindType('0x0E86',-1,'my')
   If Uo.FindCount() Then
      PickAxetype='0x0E86'
   Else
      PickAxetype='0x0E85'
   Endif
   
   For x=-MaxDistance to MaxDistance
      For y=-MaxDistance to MaxDistance
         Counter=0
         Repeat
            CheckLag() ; deleting journal
            ToHide()
             
            UO.WaitTargetTile(TileNum,STR(UO.GetX()+x),STR(UO.GetY()+Y),z)
            UO.UseType(PickAxeType)

            Repeat
               wait(500)
            until UO.InJournal("Try mining|You put|You loosen|There is no|That is too|OOPS|attacking you")

            Counter=Counter+1

            If UO.InJournal('You put') then
               ContFlag=CheckOre()
            Endif

            If UO.InJournal("something with ore|attacking you|OOPS") then
               If ElemSignal=='On' Then
                  Gong(2)
               Endif

               If KillElemental=='Yes' Then
                  KillElem()
               Else
; any user defined command when char digget elemental
               Endif

               If KillAnyElemental=='Yes' Then
                  UO.FindType('0x0010',-1,'ground')
                  If UO.FindCount() Then
                     KillElem()
                  Endif
               Endif
            Endif
   
            If UO.Weight>=MaxWeight then
               unloadore()
            Endif
         Until UO.InJournal("There is no|That is too|Try mining") OR ContFlag==0  OR Counter>MaxCount
      Next
   Next
end sub


;------------------------- Unload ore -------------------------
sub unloadore()
   VAR TempX,TempY,i,Exit, Exit1, ConTainer, j
   VAR SundukX=5134
   VAR SundukY=1087
   VAR Index=14 ; количество элементов массива
   DIM Ore[5], Colors[20]

   Colors[0]="0x09F0" ; Gorgan
   Colors[1]="0x09D3" ; Steel
   Colors[3]="0x0BA7" ; Eldar
   Colors[4]="0x08AF" ; Plut
   Colors[5]="0x0085" ; Dragon
   Colors[6]="0x0060" ; Aqua
   Colors[7]="0x09E6" ; Elvin
   Colors[8]="0x010F" ; Krinit
   Colors[9]="0x09DA" ; Vulkan
   Colors[10]="0x09EC" ; Blood Crest
   Colors[11]="0x008F" ; Sand Rock
   Colors[12]="0x09B9" ; Acid
   Colors[13]="0x09A4" ; Crystaline


   TempX=UO.GetX()
   TempY=UO.GetY()
   
   walkn(SundukX,SundukY,"")
   ToHide()
   UO.UseObject("Sunduk")
   UO.UseObject("MyBox")

   Ore[0]=0x19B9 ; 4 and more ore
   Ore[1]=0x19B7 ; 1 ore
   Ore[2]=0x19BA ; 2 ore
   Ore[3]=0x19B8 ; 3 ore

   For i=0 to 3
      Exit=0
      Repeat
         UO.FindType(Ore[i])
         
         If UO.GetQuantity('finditem')>0 then
            If UO.GetColor('finditem')=='0x0000' Then
               Container=UO.GetSerial('IronBag')
            Else
               Container=UO.GetSerial('OtherBag')
               Exit1=0
               j=0
               While j<Index AND Exit1<>1
                  If UO.GetColor('finditem')==Colors[j] Then
                     Container=UO.GetSerial('BestBag')
                     Exit1=1
                  Endif
                  j=j+1
               Wend
            Endif
            UO.MoveItem('finditem',0,Container)
            CheckLag()
            wait(1000)
         Else
            Exit=1
         Endif
      Until Exit==1
   Next

   UO.FindType('0x0EED',-1,'backpack')
   wait(500)
   If UO.FindCount() Then
      UO.MoveItem('finditem','all','MyBox')
      wait(500)
      CheckLag()
   Endif

   UO.FindType('0x0F0E','0x0000','backpack')
   wait(500)
   If UO.FindCount() Then
      UO.MoveItem('finditem','all','MyBox')
      wait(500)
      CheckLag()
   Endif

   LoadRes()

   walkn(TempX,TempY,"")
   ToHide()
end sub


sub LoadRes()
   VAR EdaType='0x097B' ; Fish
   VAR WaitTime=300, InPack
   VAR Scrolls=10
   VAR Potions=10
   VAR VortInPack=0, MassInPack=0
   
;   goto Nejrat
; Eda ==================================================
   UO.FindType(EdaType,-1,'MyBox')
   wait(WaitTime)
   If UO.FindCount() Then
      UO.MoveItem('finditem',100,'backpack')
      wait(WaitTime)
      CheckLag()
   Endif

   CheckLag()
   Repeat
      UO.UseType(EdaType)
      wait(1000)
   Until UO.InJournal('You can')

   UO.FindType(EdaType,-1,'backpack')
   wait(WaitTime)
   If UO.FindCount() Then
      UO.MoveItem('finditem','all','MyBox')
      wait(WaitTime)
      CheckLag()
   Endif
; End Eda ==============================================

Nejrat:
; Inviz
   UO.FindType('0x0F0E','0x0631','backpack')
   wait(WaitTime)
   InPack=UO.GetQuantity('finditem')
   IF InPack<Potions Then
      UO.FindType('0x0F0E','0x0631','MyBox')
      wait(WaitTime)
      If UO.FindCount() Then
         UO.MoveItem('finditem',Potions-InPack,'backpack')
      wait(WaitTime)
      Endif
   Endif

; Vortex
Vort:
   UO.IgnoreReset()
   UO.FindType('0x1F66',-1,'backpack')
   While UO.FindCount()
      VortInPack=VortInPack+UO.GetQuantity('finditem')
      wait(WaitTime)
      UO.Ignore('finditem')
      UO.FindType('0x1F66',-1,'backpack')
   Wend
   
   IF VortInPack<Scrolls Then
      UO.FindType('0x1F66',-1,'MyBox')
      wait(WaitTime)
      If UO.FindCount() Then
         UO.MoveItem('finditem',Scrolls-VortInPack,'backpack')
         wait(WaitTime)
         Goto Vort
      Endif
   Endif

; Dispell
Dispell:
   UO.IgnoreReset()
   UO.FindType('0x1F62',-1,'backpack')
   While UO.FindCount()
      MassInPack=MassInPack+UO.GetQuantity('finditem')
      wait(WaitTime)
      UO.Ignore('finditem')
      UO.FindType('0x1F62',-1,'backpack')
   Wend
   
   IF MassInPack<Scrolls Then
      UO.FindType('0x1F62',-1,'MyBox')
      wait(WaitTime)
      If UO.FindCount() Then
         UO.MoveItem('finditem',Scrolls-MassInPack,'backpack')
         wait(WaitTime)
         Goto Dispell
      Endif
   Endif
   UO.IgnoreReset()
end sub


;----------- Summon Energy Vortex, kill elem and loot him -----------
sub killelem()
   VAR xx,yy,m
   DIM Ore[4]
   Ore[0]='0x19B7' ; 1 ore
   Ore[1]='0x19BA' ; 2 ore
   Ore[2]='0x19B8' ; 3 ore
   Ore[3]='0x19B9' ; 4 and more ore
   VAR i, Exit,l

   UO.Set('finddistance',10)

   UO.UseType('0x0f0e','0x0631') ;inviz
   wait(3000)

;0x000D vortex

povtor:
   UO.DeleteJournal()

   m=UO.Mana
   UO.FindType('0x0010',-1,'ground')
   If UO.FindCount() Then
      UO.WaitTargetObject('finditem')
      UO.UseType('0x1f66')
      While UO.Mana>=m
         wait(300)
      Wend
      If UO.InJournal('spell fizzles') then
         goto povtor
      Endif
      wait(1000)
   Endif
   
jdat:
   UO.FindType('0x0010',-1,'ground')
   wait(300)
   If UO.FindCount() Then
      UO.FindType('0x000D',-1,'ground')
      wait(300)
      If UO.FindCount() Then
         wait(1000)
         goto jdat
      Else
         goto povtor
      Endif
   Endif

dispel:
   m=UO.Mana
   UO.DeleteJournal()
   UO.FindType('0x000D',-1,'ground')
   If UO.FindCount() Then
      UO.WaitTargetObject('finditem')
      UO.UseType('0x1F62')
      While UO.Mana>=m
         wait(300)
      Wend
      If UO.InJournal('fizzles') then
         goto dispel
      Endif
   Endif

   xx=UO.GetX()
   yy=UO.Gety()

   For i=0 to 3
      UO.FindType(Ore[i],-1,'ground')
      If UO.FindCount() then
         If UO.GetDistance('finditem')>3 Then
            Walkn(0,0,'finditem')
         Endif
         UO.Grab('all','finditem')
         CheckLag()
         UO.FindType('0x0EED',-1,'ground')
         If UO.FindCount() Then
            UO.Grab('all','finditem')
         Endif
      Endif
   Next

   Walkn(xx,yy,'')
end sub


###############################################################
###############################################################
;
;                        Shared Subs
;
###############################################################
###############################################################

#==============================================================
#  tohide() - try hidding char. When char lose HP, drink inviz
#             potion if it found in backpack
#
#  Journal has been deleted!!!
#--------------------------------------------------------------
sub tohide()
   while NOT UO.Hidden()
      UO.DeleteJournal()
      UO.FindType('0x0F0E','0x0631','my')

      if UO.Life<UO.STR/2 AND UO.GetQuantity('finditem')>0 then
         UO.UseType('0x0F0E','0x0631') ; inviz potion
         UO.Exec('warmode 0')
         wait(2000)
      else
         UO.Exec('warmode 0')
         UO.UseSkill('Stealth')
         repeat
            wait(300)
         until UO.InJournal('You have hidden') OR UO.InJournal('seem to hide') OR UO.InJournal('preoccupied')
      endif
   wend
end sub


#==============================================================
#  CheckLag() - click on backpack and awaiting "backpack"
#               message in journal.
#
#  Journal has been deleted!!!
#--------------------------------------------------------------
sub CheckLag()
   UO.DeleteJournal()
   UO.Click('backpack')
   repeat
      wait(500)
   until UO.InJournal('backpack')
end sub


#==============================================================
#  Gong(counter) - playing wav-file 'counter'-times
#  http://www.jetta.ru/cow.wav
#--------------------------------------------------------------
sub Gong(times) ; play wav-file
   VAR i
   for i=1 to times
      UO.Exec("playwav d:\game\uo\injection\cow")
      wait(1200) ; time to play sample at once
   next
end sub


#==============================================================
#  Alarm() - when char lose some HP, U are informed :)
#--------------------------------------------------------------
sub Alarm()
   VAR CharHP=190
   while 1==1
      wait(1000)
      if UO.Life<CharHP then
         gong(1)
      endif       
   wend
end sub

;---------------- Ходилка -----------------------
sub GoW()
   VAR walkwait=300
   VAR x,y,dir=6
   VAR key=36 ; Home key
   x=UO.GetX()
   y=UO.GetY()
   while UO.GetDir()<>dir
      UO.Press(key)
      wait(walkwait)
      If UO.GetDir()<>dir Then
         CheckLag()
      Endif
   wend
   UO.Press(key)

   wait(walkwait)
      If x==UO.GetX() AND y==UO.GetY() Then
         CheckLag()
      Endif
   
   If UO.GetX()+1==x Then
      return -1
   Else
      return 1
   Endif
end sub


sub GoN()
   VAR walkwait=300
   VAR x,y,dir=0
   VAR key=33 ; PgUp
   x=UO.GetX()
   y=UO.GetY()
   while UO.GetDir()<>dir
      UO.Press(key)
      wait(walkwait)
      If UO.GetDir()<>dir Then
         CheckLag()
      Endif
   wend
   UO.Press(key)

   wait(walkwait)
      If x==UO.GetX() AND y==UO.GetY() Then
         CheckLag()
      Endif
   
   If UO.GetY()+1==y Then
      return -1
   Else
      return 1
   Endif
end sub


sub GoE()
   VAR walkwait=300
   VAR x,y,dir=2
   VAR key=34 ; PgDown
   x=UO.GetX()
   y=UO.GetY()
   while UO.GetDir()<>dir
      UO.Press(key)
      wait(walkwait)
      If UO.GetDir()<>dir Then
         CheckLag()
      Endif
   wend
   UO.Press(key)

   wait(walkwait)
      If x==UO.GetX() AND y==UO.GetY() Then
         CheckLag()
      Endif
   
   If UO.GetX()-1==x Then
      return -1
   Else
      return 1
   Endif
end sub


sub GoS()
   VAR walkwait=300
   VAR x,y,dir=4
   VAR key=35 ; End
   x=UO.GetX()
   y=UO.GetY()
   while UO.GetDir()<>dir
      UO.Press(key)
      wait(walkwait)
      If UO.GetDir()<>dir Then
         CheckLag()
      Endif
   wend
   UO.Press(key)

   wait(walkwait)
      If x==UO.GetX() AND y==UO.GetY() Then
         CheckLag()
      Endif
   
   If UO.GetY()-1==y Then
      return -1
   Else
      return 1
   Endif
end sub


sub GoWN()
   VAR walkwait=300
   VAR x,y,dir=7
   VAR key=38 ; UpArrow
   x=UO.GetX()
   y=UO.GetY()

   If UO.GetDir()<>dir Then
      UO.Press(key)
      wait(walkwait)
      If UO.GetDir()<>dir Then
         CheckLag()
      Endif
   Endif

   If UO.GetDir()==dir Then
      UO.Press(key)
      wait(walkwait)
      If x==UO.GetX() AND y==UO.GetY() Then
         CheckLag()
      Endif
      If UO.GetDir()==dir Then
         return -1
      Else
         return UO.GetDir()
      Endif
   Else
      return UO.GetDir()
   Endif
end sub


sub GoNE()
   VAR walkwait=300
   VAR x,y,dir=1
   VAR key=39 ; RightArrow
   x=UO.GetX()
   y=UO.GetY()

   If UO.GetDir()<>dir Then
      UO.Press(key)
      wait(walkwait)
      If UO.GetDir()<>dir Then
         CheckLag()
      Endif
   Endif

   If UO.GetDir()==dir Then
      UO.Press(key)
      wait(walkwait)
      If x==UO.GetX() AND y==UO.GetY() Then
         CheckLag()
      Endif
      If UO.GetDir()==dir Then
         return -1
      Else
         return UO.GetDir()
      Endif
   Else
      return UO.GetDir()
   Endif
end sub


sub GoSE()
   VAR walkwait=300
   VAR x,y,dir=3
   VAR key=40 ; DownArrow
   x=UO.GetX()
   y=UO.GetY()

   If UO.GetDir()<>dir Then
      UO.Press(key)
      wait(walkwait)
      If UO.GetDir()<>dir Then
         CheckLag()
      Endif
   Endif

   If UO.GetDir()==dir Then
      UO.Press(key)
      wait(walkwait)
      If x==UO.GetX() AND y==UO.GetY() Then
         CheckLag()
      Endif
      If UO.GetDir()==dir Then
         return -1
      Else
         return UO.GetDir()
      Endif
   Else
      return UO.GetDir()
   Endif
end sub


sub GoSW()
   VAR walkwait=300
   VAR x,y,dir=5
   VAR key=37 ; LeftArrow
   x=UO.GetX()
   y=UO.GetY()

   If UO.GetDir()<>dir Then
      UO.Press(key)
      wait(walkwait)
      If UO.GetDir()<>dir Then
         CheckLag()
      Endif
   Endif

   If UO.GetDir()==dir Then
      UO.Press(key)
      wait(walkwait)
      If x==UO.GetX() AND y==UO.GetY() Then
         CheckLag()
      Endif
      If UO.GetDir()==dir Then
         return -1
      Else
         return UO.GetDir()
      Endif
   Else
      return UO.GetDir()
   Endif
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!
#     walkwait - delay after keypress
#--------------------------------------------------------------
sub WalkN(x,y,Target)
   VAR i
   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
            GoSE()
         Endif

         If dx>0 AND dy<0 Then
            GoNE()
         Endif

         If dx<0 AND dy>0 Then
            GoSW()
         Endif

         If dx<0 AND dy<0 Then
            GoWN()
         Endif

      Endif
   
      If dx<>0 AND dy==0 Then
         If dx>0 Then
            GoE()
         Endif
         
         If dx<0 Then
            GoW()
         Endif
      Endif


      If dx==0 AND dy<>0 Then
         If dy>0 Then
            GoS()
         Endif
         
         If dy<0 Then
            GoN()
         Endif
      Endif
   Wend
end sub


Last edited by Savage on 2010-08-27 09:17:47, edited 4 times in total.

Top
   
 Post subject:
PostPosted: 2005-02-01 18:24:47 
Offline

Joined: 2004-11-02 19:42:43
Posts: 40
Уважаемый Savage скажите пожалуйста почему когда я запускаю скрипт у (меня всё написано правильно) он всё говорит, всё показывает, появляются таргеты , и у меня под конец последнего указания мешка появляется ошибка Line 160:runtime error
! и я так понял что все остальные мешки для руды и всего остального должны лежать в сундук правильно ?

P.S.: Заранее Спасибо.


Top
   
 Post subject:
PostPosted: 2005-02-01 21:14:35 
Offline
Expert!
User avatar

Joined: 2004-04-04 11:13:54
Posts: 1205
Location: Балаково, Саратовская обл.
рунтайм ошибка это если правил массивы с рудой при сортировке или при выкапывании и не поправил индексную переменную.


Top
   
 Post subject:
PostPosted: 2005-02-01 23:42:42 
Offline

Joined: 2004-11-02 19:42:43
Posts: 40
Хмм я токо поправил что бы он всю руду выкапывал и всё поставил значение 14. и чё за переменную надо менять ?


Top
   
 Post subject:
PostPosted: 2005-02-02 00:00:35 
Offline
Expert!
User avatar

Joined: 2004-04-04 11:13:54
Posts: 1205
Location: Балаково, Саратовская обл.
если всю руду копать то значение надо 0 ставить если всю не копать то 14


Top
   
 Post subject:
PostPosted: 2005-02-02 00:01:51 
Offline

Joined: 2004-11-02 19:42:43
Posts: 40
Savage у тя есть небольшой недочёт в скрипте он в радиусе 4-х клеток в маленькой вип шахте капать не может , т.к. он на 4-ую клетку не капает пишется типо Try mining in rock ! и повтор не идёт чар всё мучается капать на этом месте но не может и нет повтора хотя в скрипте вроде указано что он должен повторять !

И ещё на 160 линии стоит такая строка
walkn(BaseX[WayPoint],BaseY[WayPoint],"")
с такой строкой чар не идёт на место первой копки так как в скрипте указано WayPoints=2 с буквой 'S' а в строке буквы нету , я исправил букву в строке что бы строка выглядела так :
walkn(BaseX[WayPoints],BaseY[WayPoints],"")
и только после этого чар после записи всех ID идёт на место копки и капает !

P.S.: Надо Диг дистансе поставить 3 для маленькой випки так как он не повторяется ( как я уже сказал выше)


Top
   
 Post subject:
PostPosted: 2005-02-02 00:09:51 
Offline
Expert!
User avatar

Joined: 2004-04-04 11:13:54
Posts: 1205
Location: Балаково, Саратовская обл.
Ошибки там нет переменная WayPoint изменяет свое значение в цикле.


Top
   
 Post subject:
PostPosted: 2005-02-02 06:50:52 
Offline

Joined: 2004-11-02 19:42:43
Posts: 40
Хмм а насчёт клетки это точно ! а переменную я я исправил как написал и он всю ночь нормально копал...


Top
   
 Post subject:
PostPosted: 2005-02-02 10:22:33 
Offline
Expert!
User avatar

Joined: 2004-04-04 11:13:54
Posts: 1205
Location: Балаково, Саратовская обл.
Try mining исправил.


Top
   
 Post subject:
PostPosted: 2005-02-03 00:16:35 
Offline

Joined: 2004-11-02 19:42:43
Posts: 40
Спасибо теперь можно и на 4 клетки капать !!

токо вот как ты исправил =) выложи исправленный скрипт типо последняя версия ..
Не для меня у меня и так нормуль а для других которым понадобится.


Top
   
 Post subject:
PostPosted: 2005-02-03 01:53:54 
Offline
Expert!
User avatar

Joined: 2004-04-04 11:13:54
Posts: 1205
Location: Балаково, Саратовская обл.
Исправил в самом первом посте, то есть в скрипте, который вверху.


Top
   
 Post subject:
PostPosted: 2005-02-03 01:55:28 
Offline
Expert!
User avatar

Joined: 2004-04-04 11:13:54
Posts: 1205
Location: Балаково, Саратовская обл.
Вот так выглядит скрипт для малой випы...
Code:
###############################################################
#===---====----===---===---= Mining =---=-=-=-=-=--=-=-=-=-=-=#
#    Single char mining for VIP Mine. DRW Shard www.drw.ru    #
#           Scripted by Savage (c) 2005 ICQ:33336141          #
#"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""#
#"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""#
# To start script use ",exec mine" command from client window #
###############################################################

;""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
;==================== Main mining script ======================
;""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
sub mine()
   VAR DigDistance, TileNum, KillElemental
   VAR ElemSignal, LastTimer
   DIM BaseX[2], BaseY[2]
   VAR BaseZ, WayPoint, WayPoints
   VAR MaxWeight

   VAR i,j,TileY,TileX,DirX,DirY
   VAR Delta,BeginX,EndX,BeginY,EndY
   

;""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
; TileNum='Num' - Use ",infotile" command on the floor
; Номер тайла в котором можно копать ,потыкайте командой
; ",infotile" по разнвм тайлам и посмотрите не отличаются ли их
; номера.
;""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
   TileNum='1339'
   

;""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
; Максимальный вес, который может поднять чар. Ставьте его
; немного меньше реального. То есть если чар поднимает 760, то
; ставим 730.
;""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
   MaxWeight=750

;""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
; DigDistance=4 - Distance from tile where pickaxe targeting
; Радиус круга по которому будет копать чар, то есть расстояние
; до клетки куда можно дотянуться киркой.
;""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
   DigDistance=4

;""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
; KillElemental='Yes'/'No' - Use 'Yes' if char skilled to morph
;                            in daemon and wrestling > 50
; Если чар достаточно прокачен чтоб бить элемов, ставьте 'Yes'
;""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
   KillElemental='Yes'

;""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
; ElemSignal='Off'/'On' - Play sound when elemental is digged
; Оповешать при появлении элема
;""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
   ElemSignal='Off'


;""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
; Здесь указываем координаты точек копания. Нужно встать на
; позицию и посмотреть координаты в инжекте. Их и нужно
; подставить вместо моих. Чара ставьте на 4 клетки от стен.
;""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

   BaseX[0]=5648
   BaseY[0]=1117
   BaseZ=0

   BaseX[1]=5656
   BaseY[1]=1117

;""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
; Указываем количество точек копания
;""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

   WayPoints=2


   CheckLag()
   UO.UseObject('Sunduk')
   LastTimer=UO.Timer()
   Repeat
      wait(500)
   Until UO.InJournal('You can') OR UO.InJournal('What is the') OR UO.Timer()>LastTimer+100
   
   If UO.InJournal('see the') Then
      UO.Say("Podoydi k sunduku i tkni v nego pricelom!")
      UO.AddObject('Sunduk')
      While UO.Targeting()==2
         wait(500)
      Wend
      UO.SaveConfig()
      UO.UseObject('Sunduk')
   Else
;      UO.Say("Ok! Viju sunduk.")
   Endif


   CheckLag()
   UO.UseObject('IronBag')
   LastTimer=UO.Timer()
   Repeat
      wait(500)
   Until UO.InJournal('You can') OR UO.InJournal('What is the')OR UO.Timer()>LastTimer+100
   
   If UO.InJournal('see the') Then
      UO.Say("V kakoy meshok kidat' Iron Ore")
      UO.AddObject('IronBag')
      While UO.Targeting()==2
         wait(500)
      Wend
      UO.SaveConfig()
   Else
;      UO.Say("Meshok dlya Iron Ore viju")
   Endif


   CheckLag()
   UO.UseObject('OtherBag')
   LastTimer=UO.Timer()
   Repeat
      wait(500)
   Until UO.InJournal('You can') OR UO.InJournal('What is the')OR UO.Timer()>LastTimer+100
   
   If UO.InJournal('see the') Then
      UO.Say("V kakoy meshok kidat' rudu?")
      UO.AddObject('OtherBag')
      While UO.Targeting()==2
         wait(500)
      Wend
      UO.SaveConfig()
   Else
;      UO.Say("Meshok dlya rudy viju.")
   Endif


   CheckLag()
   UO.UseObject('BestBag')
   LastTimer=UO.Timer()
   Repeat
      wait(500)
   Until UO.InJournal('You can') OR UO.InJournal('What is the')OR UO.Timer()>LastTimer+100
   
   If UO.InJournal('see the') Then
      UO.Say("V kakoy meshok kidat' vihu?")
      UO.AddObject('BestBag')
      While UO.Targeting()==2
         wait(500)
      Wend
      UO.SaveConfig()
   Else
;      UO.Say("Meshok dlya vihi viju.")
   Endif

   While NOT UO.Dead()
   
      For WayPoint=0 to WayPoints-1
         walkn(BaseX[WayPoint],BaseY[WayPoint],"")
         digitstay(MaxWeight,DigDistance,KillElemental,ElemSignal,BaseX[WayPoint],BaseY[WayPoint])
      Next
   wend
end sub


; Проверка нужности руды. Закоментировать то что нужно копать.
sub CheckOre()
   VAR Cont=1, i=0, Exit=0
   VAR Count=7   ; Сколько элементов в массиве.
   DIM Ores[15]   

   Ores[0]="Iron"
   Ores[1]="Rusty"
   Ores[2]="Old Copper"
   Ores[3]="Dull Copper"
   Ores[4]="Copper"
   Ores[5]="Bronze"
   Ores[6]="Silver"
;   Ores[7]="Shadow"
;   Ores[8]="Rose"
;   Ores[9]="Gold"
;   Ores[10]="Agapite"
;   Ores[11]="Blood Rock"
;   Ores[12]="Verite"
;   Ores[13]="Valorite"
;   Ores[14]="Mytheril"

   While i<Count AND Exit==0
      If UO.InJournal(Ores[i]) Then
         Cont=0
         Exit=1
      Endif
;      UO.Print(STR(i))
;      UO.Print(Ores[i])
      i=i+1
   Wend
   
   return Cont
end sub


;-------------------- Try to mine under self ------------------
sub digitstay(MaxWeight,MaxDistance,KillElemental,ElemSignal,BaseX,BaseY)
   VAR x,y,z='0',TileNum='1339'
   VAR Last=0,LastTimer, ContFlag=1
   VAR MaxTimer=110

   For x=-MaxDistance to MaxDistance
      For y=-MaxDistance to MaxDistance
         Repeat
            CheckLag() ; deleting journal
            ToHide()
            
            UO.WaitTargetTile(TileNum,STR(UO.GetX()+x),STR(UO.GetY()+Y),z)
            UO.UseType('0x0E85')

            LastTimer=UO.Timer()

            Repeat
               wait(500)
            until UO.InJournal("Try mining") OR UO.InJournal("You put") OR UO.InJournal("You loosen") OR UO.InJournal("There is no") OR UO.InJournal("That is too") OR UO.InJournal("OOPS") OR UO.InJournal("attacking you") OR LastTimer+200<UO.Timer()

            If NOT UO.InJournal('There is no') then
               ContFlag=CheckOre()
            Endif

            If UO.InJournal('You loosen') then
               repeat
                  wait(500)
               until UO.InJournal("You put") OR LastTimer+MaxTimer<UO.Timer()
            Endif

            If UO.InJournal('something with ore') OR UO.InJournal("attacking you") then
               If ElemSignal=='On' Then
                  Gong(2)
               Endif

               If KillElemental=='Yes' Then
                  KillElem()
                  walkn(BaseX,BaseY,"")
               Else
; any user defined command when char digget elemental

               Endif
            Endif
            
            If UO.InJournal("attacking you") then
               gong(3)
            Endif

            If UO.Weight>=MaxWeight then
               unloadore()
            Endif
         Until UO.InJournal("There is no") OR UO.InJournal("That is too") OR UO.InJournal("Try mining") OR ContFlag==0
      Next
   Next
end sub


;------------------------- Unload ore -------------------------
sub unloadore()
   VAR TempX,TempY,i,Exit, Exit1, ConTainer, j
   VAR SundukX=5646
   VAR SundukY=1120
   VAR Index=14 ; количество элементов массива
   DIM Ore[5], Colors[20]

   Colors[0]="0x09F0" ; Gorgan
   Colors[1]="0x09D3" ; Steel
   Colors[3]="0x0BA7" ; Eldar
   Colors[4]="0x08AF" ; Plut
   Colors[5]="0x0085" ; Dragon
   Colors[6]="0x0060" ; Aqua
   Colors[7]="0x09E6" ; Elvin
   Colors[8]="0x010F" ; Krinit
   Colors[9]="0x09DA" ; Vulkan
   Colors[10]="0x09EC" ; Blood Crest
   Colors[11]="0x008F" ; Sand Rock
   Colors[12]="0x09B9" ; Acid
   Colors[13]="0x09A4" ; Crystaline


   TempX=UO.GetX()
   TempY=UO.GetY()
   
   walkn(SundukX,SundukY,"")
   ToHide()
   UO.UseObject("Sunduk")

   Ore[0]=0x19B9 ; 4 and more ore
   Ore[1]=0x19B7 ; 1 ore
   Ore[2]=0x19BA ; 2 ore
   Ore[3]=0x19B8 ; 3 ore

   For i=0 to 3
      Exit=0
      repeat
         UO.FindType(Ore[i])
         
         if UO.GetQuantity('finditem')>0 then
            If UO.GetColor('finditem')=='0x0000' Then
               Container=UO.GetSerial('IronBag')
            Else
               Container=UO.GetSerial('OtherBag')
               Exit1=0
               j=0
               While j<Index AND Exit1<>1
                  If UO.GetColor('finditem')==Colors[j] Then
                     Container=UO.GetSerial('BestBag')
                     Exit1=1
                  Endif
                  j=j+1
               Wend
            Endif
            UO.MoveItem('finditem',0,Container)
            CheckLag()
            wait(1000)
         Else
            Exit=1
         endif
      until Exit==1
   Next

   walkn(TempX,TempY,"")
   ToHide()
end sub

;----------- Morf in Daemon, kill elem and loot him -----------
sub killelem()
   VAR Count, LastTimer, Elem
   

   UO.UseType('0x0F0E','0x0631') ; inviz potion
   While UO.STR<201 ; U'r not morfed char max Strength + 1
      If UO.Mana>=50 then
         UO.WaitMenu('What','Daemon')
         UO.Cast('Polymorph')
         wait(8000)
      else
         UO.UseType('0x0F0E','0x09DF') ; total mana potion
         wait(3000)
      endif
   Wend
   
   LastTimer=UO.Timer()

   repeat
      UO.BandageSelf()
      wait(4000)
   until UO.Life==UO.STR OR LastTimer+300<UO.Timer()

   UO.UseType(0x1B76) ; heater shield
   UO.UseType(0x1413) ; platemail gorget
   
   UO.DeleteJournal()
   UO.Exec('warmode 1')

   UO.FindType('0x0010',-1,'ground')
   Elem=UO.GetSerial('finditem')

   UO.Attack(Elem)
   
   repeat
      wait(1000)
      If UO.Life<50 Then
         UO.UseType('0x0F0E','0x09BB') ;GH
      Endif

      If UO.GetDistance(Elem)>1 Then
         walkn(0,0,Elem)
      Endif

   until UO.IsNPC(Elem)==0
   wait(3000)


   UO.WaitTargetGround('0x19B9') ; 4 and more ore
   wait(1500)
   UO.Grab('all')
   UO.WaitTargetGround('0x19B8') ; 3 ore
   wait(1500)
   UO.Grab('all')
   UO.WaitTargetGround('0x0EED') ; gold coins
   wait(500)
   UO.Grab('all')


   UO.FindType('0x0010',-1,'ground')
   If UO.GetQuantity('finditem')>0 Then
      KillElem()
   Endif

   UO.Exec('warmode 0')
   wait(1000)

   UO.Print("Sdoh skotina!")

   LastTimer=UO.Timer()
   if UO.Life<200 then ; U'r max HP
      repeat
         UO.BandageSelf()
         wait(4000)
      until UO.Life>200 OR LastTimer+300<UO.Timer()
   endif
   UO.DeleteJournal()

end sub


###############################################################
###############################################################
;
;                        Shared Subs
;
###############################################################
###############################################################

#==============================================================
#  tohide() - try hidding char. When char lose HP, drink inviz
#             potion if it found in backpack
#
#  Journal has been deleted!!!
#--------------------------------------------------------------
sub tohide()
   while NOT UO.Hidden()
      UO.DeleteJournal()
      UO.FindType('0x0F0E','0x0631','my')

      if UO.Life<UO.STR/2 AND UO.GetQuantity('finditem')>0 then
         UO.UseType('0x0F0E','0x0631') ; inviz potion
         UO.Exec('warmode 0')
         wait(2000)
      else
         UO.Exec('warmode 0')
         UO.UseSkill('Stealth')
         repeat
            wait(50)
         until UO.InJournal('You have hidden') OR UO.InJournal('seem to hide') OR UO.InJournal('preoccupied')
      endif
   wend
end sub


#==============================================================
#  CheckLag() - click on backpack and awaiting "backpack"
#               message in journal.
#
#  Journal has been deleted!!!
#--------------------------------------------------------------
sub CheckLag()
   UO.DeleteJournal()
   UO.Click('backpack')

   repeat
      wait(500)
   until UO.InJournal('backpack')
end sub


#==============================================================
#  Gong(counter) - playing wav-file 'counter'-times
#  http://www.jetta.ru/cow.wav
#--------------------------------------------------------------
sub Gong(times) ; play wav-file
   VAR i
   for i=1 to times
      UO.Exec("playwav d:\game\uo\injection\cow")
      wait(1200) ; time to play sample at once
   next
end sub


#==============================================================
#  Alarm() - when char lose some HP, U are informed :)
#--------------------------------------------------------------
sub Alarm()
   VAR CharHP=150
   while 1==1
      wait(1000)
      if UO.Life<CharHP then
         gong(1)
      endif      
   wend
end sub

;---------------- Ходилка -----------------------
sub GoW()
   VAR walkwait=300
   VAR x,y,dir=6
   VAR key=36 ; Home key
   x=UO.GetX()
   y=UO.GetY()
   while UO.GetDir()<>dir
      UO.Press(key)
      wait(walkwait)
      If UO.GetDir()<>dir Then
         CheckLag()
      Endif
   wend
   UO.Press(key)

   wait(walkwait)
      If x==UO.GetX() AND y==UO.GetY() Then
         CheckLag()
      Endif
   
   If UO.GetX()+1==x Then
      return -1
   Else
      return 1
   Endif
end sub


sub GoN()
   VAR walkwait=300
   VAR x,y,dir=0
   VAR key=33 ; PgUp
   x=UO.GetX()
   y=UO.GetY()
   while UO.GetDir()<>dir
      UO.Press(key)
      wait(walkwait)
      If UO.GetDir()<>dir Then
         CheckLag()
      Endif
   wend
   UO.Press(key)

   wait(walkwait)
      If x==UO.GetX() AND y==UO.GetY() Then
         CheckLag()
      Endif
   
   If UO.GetY()+1==y Then
      return -1
   Else
      return 1
   Endif
end sub


sub GoE()
   VAR walkwait=300
   VAR x,y,dir=2
   VAR key=34 ; PgDown
   x=UO.GetX()
   y=UO.GetY()
   while UO.GetDir()<>dir
      UO.Press(key)
      wait(walkwait)
      If UO.GetDir()<>dir Then
         CheckLag()
      Endif
   wend
   UO.Press(key)

   wait(walkwait)
      If x==UO.GetX() AND y==UO.GetY() Then
         CheckLag()
      Endif
   
   If UO.GetX()-1==x Then
      return -1
   Else
      return 1
   Endif
end sub


sub GoS()
   VAR walkwait=300
   VAR x,y,dir=4
   VAR key=35 ; End
   x=UO.GetX()
   y=UO.GetY()
   while UO.GetDir()<>dir
      UO.Press(key)
      wait(walkwait)
      If UO.GetDir()<>dir Then
         CheckLag()
      Endif
   wend
   UO.Press(key)

   wait(walkwait)
      If x==UO.GetX() AND y==UO.GetY() Then
         CheckLag()
      Endif
   
   If UO.GetY()-1==y Then
      return -1
   Else
      return 1
   Endif
end sub


sub GoWN()
   VAR walkwait=300
   VAR x,y,dir=7
   VAR key=38 ; UpArrow
   x=UO.GetX()
   y=UO.GetY()

   If UO.GetDir()<>dir Then
      UO.Press(key)
      wait(walkwait)
      If UO.GetDir()<>dir Then
         CheckLag()
      Endif
   Endif

   If UO.GetDir()==dir Then
      UO.Press(key)
      wait(walkwait)
      If x==UO.GetX() AND y==UO.GetY() Then
         CheckLag()
      Endif
      If UO.GetDir()==dir Then
         return -1
      Else
         return UO.GetDir()
      Endif
   Else
      return UO.GetDir()
   Endif
end sub


sub GoNE()
   VAR walkwait=300
   VAR x,y,dir=1
   VAR key=39 ; RightArrow
   x=UO.GetX()
   y=UO.GetY()

   If UO.GetDir()<>dir Then
      UO.Press(key)
      wait(walkwait)
      If UO.GetDir()<>dir Then
         CheckLag()
      Endif
   Endif

   If UO.GetDir()==dir Then
      UO.Press(key)
      wait(walkwait)
      If x==UO.GetX() AND y==UO.GetY() Then
         CheckLag()
      Endif
      If UO.GetDir()==dir Then
         return -1
      Else
         return UO.GetDir()
      Endif
   Else
      return UO.GetDir()
   Endif
end sub


sub GoSE()
   VAR walkwait=300
   VAR x,y,dir=3
   VAR key=40 ; DownArrow
   x=UO.GetX()
   y=UO.GetY()

   If UO.GetDir()<>dir Then
      UO.Press(key)
      wait(walkwait)
      If UO.GetDir()<>dir Then
         CheckLag()
      Endif
   Endif

   If UO.GetDir()==dir Then
      UO.Press(key)
      wait(walkwait)
      If x==UO.GetX() AND y==UO.GetY() Then
         CheckLag()
      Endif
      If UO.GetDir()==dir Then
         return -1
      Else
         return UO.GetDir()
      Endif
   Else
      return UO.GetDir()
   Endif
end sub


sub GoSW()
   VAR walkwait=300
   VAR x,y,dir=5
   VAR key=37 ; LeftArrow
   x=UO.GetX()
   y=UO.GetY()

   If UO.GetDir()<>dir Then
      UO.Press(key)
      wait(walkwait)
      If UO.GetDir()<>dir Then
         CheckLag()
      Endif
   Endif

   If UO.GetDir()==dir Then
      UO.Press(key)
      wait(walkwait)
      If x==UO.GetX() AND y==UO.GetY() Then
         CheckLag()
      Endif
      If UO.GetDir()==dir Then
         return -1
      Else
         return UO.GetDir()
      Endif
   Else
      return UO.GetDir()
   Endif
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!
#     walkwait - delay after keypress
#--------------------------------------------------------------
sub WalkN(x,y,Target)
   VAR i
   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
            GoSE()
         Endif

         If dx>0 AND dy<0 Then
            GoNE()
         Endif

         If dx<0 AND dy>0 Then
            GoSW()
         Endif

         If dx<0 AND dy<0 Then
            GoWN()
         Endif

      Endif
   
      If dx<>0 AND dy==0 Then
         If dx>0 Then
            GoE()
         Endif
         
         If dx<0 Then
            GoW()
         Endif
      Endif


      If dx==0 AND dy<>0 Then
         If dy>0 Then
            GoS()
         Endif
         
         If dy<0 Then
            GoN()
         Endif
      Endif
   Wend
end sub



Top
   
 Post subject:
PostPosted: 2005-02-04 12:03:08 
Offline

Joined: 2004-05-25 14:32:55
Posts: 101
Location: 74.ru
Саваж, всё кул. Но после перехода ко 2-ой точке, почему то вылетает. А-ля клозе уо :)

_________________
"Наточил я свой топор, головешек полон двор" :)

http://foto.bincub.ru/players/N/nik.html


Top
   
 Post subject:
PostPosted: 2005-04-01 11:01:04 
Offline

Joined: 2005-01-29 22:29:41
Posts: 3
nik-kazancev wrote:
Саваж, всё кул. Но после перехода ко 2-ой точке, почему то вылетает. А-ля клозе уо :)

А у меня чар стоит на месте и кирку перекладывает из пака в руки и все :(


Top
   
 Post subject:
PostPosted: 2005-04-19 10:19:22 
Offline
User avatar

Joined: 2005-04-16 17:40:14
Posts: 24
Savage скрипт замечательный спасиб . Не можешь помоч в него прокачку спирита вставить чтоб копали спирит качал ?


Top
   
 Post subject:
PostPosted: 2005-04-19 14:19:42 
Offline
Expert!
User avatar

Joined: 2004-04-04 11:13:54
Posts: 1205
Location: Балаково, Саратовская обл.
Да, видел твой пост, себе тоже копальщику уже вставил :) вот так:
Code:
   Else
;      UO.Say("Meshok dlya vihi viju.")
   Endif

   While NOT UO.Dead()
   
      For WayPoint=0 to WayPoints-1
         UO.UseSkill('Spirit Speak') ;<<<<<<<
         wait(2000);<<<<<<<<<
         SuperWalk(BaseX[WayPoint],BaseY[WayPoint],"")
         digitstay(MaxWeight,DigDistance,KillElemental,ElemSignal,BaseX[WayPoint],BaseY[WayPoint])
      Next
   wend
end sub

найди это место в вскрипте и вставь помеченные <<<<<< команды.


Top
   
 Post subject:
PostPosted: 2005-04-29 11:24:58 
Offline
User avatar

Joined: 2004-10-07 15:42:12
Posts: 53
Location: Москва
Есть такая трабла. Через произвольное время скрипт вылетает. Пишет ошибку фразы... Собственно явных ошибок я не нашёл, т.к. по нескольку раз Чар проходит полный цикл копки, выкладывания руды и возвращения на место. В чём может быть трабла? Может в самой инже какую нибудь галку убрать или поставить??? правда скрипт из первого поста брал , там ещё снизу есть как я понял переделанный.... они разные?


Top
   
 Post subject:
PostPosted: 2005-04-29 11:54:16 
Offline

Joined: 2005-04-21 16:09:16
Posts: 29
Савадж, у меня есть вопрос о твоем скрипте.
Когда чар переходит на 2ую точку капания? ато когда я запускаю скрипт чар идет на 1 координаты и капает тока там вокруг себя,
а до 2 координат не идет(
можно к примеру сделать так, чтобы после того как минер все выкопает вокруг себя, шел на 2 координаты и так далее?
Ответь плз.


Top
   
 Post subject:
PostPosted: 2005-05-17 17:25:48 
Offline

Joined: 2004-12-30 13:18:54
Posts: 22
Savage, огромное тебе спасибо за прекрасный скрипт!!!


Top
   
 Post subject:
PostPosted: 2005-06-01 09:21:55 
Offline

Joined: 2005-05-13 06:30:48
Posts: 5
Хм..... а вот у меня скрипт отлично работает, тока вот элек не лутит :( (но киляет)
У других людей все отлично работает (лут), а в скрипте все тоже самое.
В чем может быть проблема, подскажите, plizzzz.....


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 95 posts ]  Go to page 1 2 3 4 5 Next

All times are UTC+02:00


Who is online

Users browsing this forum: No registered users and 7 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:  
Powered by phpBB® Forum Software © phpBB Limited