Mouintain Mining

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
kotvsapogah
Posts: 17
Joined: 2006-03-29 14:24:09

Mouintain Mining

Post by kotvsapogah »

У меня есть скрипт на мининг у скал, но он не собирает координаты, помогите пожалуйста разобраться в чем дело. Вот скрипт:

Code: Select all

######################################################### 
###    Mining Mountains / Копание скалл v5.1.7 Full   ###
#########################################################
###         Шард Dragon World / www.drw.ru            ###
#########################################################
##################
### Переменные ###
##################
################################################################################
###################
var f=file('C:\ore.dat') ## - Путь к файлу в котором будут хранится
### координаты где копать.
###
var TryHiding=1 ## 1 - Перед тем как копать руду, будет пытаться уйти в хайд,
### 0 - не будет .
###
var TryRecall=1 ## 1 - После того как соберет достаточный вес, будет пытаться
### реколиться домой,
### складывать руду в сундук и реколиться обратно , 0 - не будет.(DropOnVip
### должно быть 0)
### 
var GetFromFile=1 ## 1 - Координаты где копать будут считыватся из файла, 0 -
### собиратся из клиента
### (сначала соберите а потом считывайте из файла).
###
var OreQty=550 ## - Максимальный вес, добыв который надо реколиться домой.
### (сейчас 600 стоунов)
###
var ControlOfDanger=1 ## 1 - Включить рекол по руне(в паке) при атаке, 0 -
### отключить рекол.
###
var ElementalKill=0 ## 1 - Вылючить килл элементала, 0 - отключить(рекол).
###
var DangerousTime=70000 ## - Время в секундах которое чар будет ждать(после
### рекола) пока уйдет ПК или Элемент.(сейчас 50 секунд)
###
var CycleScript=1 ## 1 - Скрипт не отключается после рекола от атакующего, 0 -
### отключаетсяи закрывает UO.
###
var Reconnect=1 ## 1 - Включить реконнект на сервер если выкинет, 0 - отключить
### реконнект.
###
var DisturbingSound=('C:\ding.wav') ## - Звук которы будет пригран при атаке.
### (замените на свой)
###
var RecallDrop=1 ## 1 - Включить рекол после побега от ента домой и выложить логи, 0 -выключить.
###
var DropY=566 ## - Координата перед сундуком по Y.
###
var oldX,oldY,time ## - Для рекола. 
###
var Pickaxe='0x0E85'
################################################################################
################### 
###
### После настройки:
### Идите в место где будем копать.
### Запустите cкрипт GoMining(), инжект попросит вас указать Кирку(появится
### прицел, прицелом на неё),
### Рунбук(появится прицел, прицелом на него) ,Руну(прицелом на нее) и Сундук
### для логов.
### После этого чар пойдет по координатам и будет копать руду.
###########
### Код ###
###########
sub GoMining() 

if Reconnect==1 then
uo.Exec('exec Reconnect')
end if

if ControlOfDanger==1 then
uo.Exec('exec ControlOfDanger')
end if 

uo.Exec('exec Mining')
end sub

sub Mining()
var i=0,j=0,k=0,r=0,q=0,ii,jj
var TopX=324,TopY=65
dim OreX[5000],OreY[5000],OreT[5000]
dim OreTile[27]
var flag=0,OreCount=0,clicks=0,flag2=0
####################
### Графика руды ###
####################
OreTile[0]=1339
OreTile[1]=1355
OreTile[2]=1354
OreTile[3]=1359
OreTile[4]=1358
OreTile[5]=1357
OreTile[6]=1352
OreTile[7]=1341
OreTile[8]=1363
OreTile[9]=1359
OreTile[10]=1339
OreTile[11]=1354
OreTile[12]=1386
OreTile[13]=1353
OreTile[14]=2278
OreTile[15]=2282
OreTile[16]=2281
OreTile[17]=2277
OreTile[18]=2278
OreTile[19]=2275
OreTile[20]=1351
OreTile[21]=6007
OreTile[22]=6012
OreTile[23]=6004
OreTile[24]=6011
OreTile[25]=6008
OreTile[26]=6003

uo.FilterSpeech('on')
uo.FilterSpeech('add', 'Where do you want to use ')

#####################################
### Загружаем координаты из файла ###
#####################################
if GetFromFile==1 then
uo.Print('Загружаем координаты из файла...')
f.Open()
OreCount=safe call f.ReadNumber()
for i=1 to OreCount
OreT[i]=safe call f.ReadNumber()
OreX[i]=safe call f.ReadNumber()
OreY[i]=safe call f.ReadNumber()
next
f.Close()
else
######################################
### Собираем координаты из клиента ###
######################################
uo.Print('Собираем координаты руды в округе...')
repeat
clicks=0
flag=0
uo.DeleteJournal()
#######################
### Кликаем на тайл ###
#######################
uo.UseType( Pickaxe )
wait(500)
uo.DeleteJournal()
while uo.Targeting()
wait(100)
wend
###########################
### Проверяем то ли это ###
###########################
flag=0
for k=0 to 27
if uo.LastTile(0)==OreTile[k]+1 then
flag=2
end if
next
if flag==0 then
for k=0 to 27
if uo.LastTile(0)==OreTile[k] then
flag=1
end if
next
end if
if uo.Lasttile(1)==uo.GetX() and uo.Lasttile(2)==uo.Gety() then
flag=3
end if
########################
### Кликнули на тайл ###
########################
if flag==1 then
flag2=0
if OreCount>0 then
for ii=1 to OreCount
if OreX[ii]==uo.LastTile(1) and OreY[ii]==uo.LastTile(2) then
flag2=1
end if
next
end if
if flag2==0 then
OreCount=OreCount+1
OreX[OreCount]=uo.LastTile(1)
OreY[OreCount]=uo.LastTile(2)
OreT[OreCount]=uo.LastTile(0)
uo.Print('Найдена руда номер '+str(OreCount)+' : x='+str(uo.Lasttile(1))+'
y='+str(uo.LastTile(2)))
end if
end if
#####################
### Кликнули выше ###
#####################
if flag==2 then
flag2=0
if OreCount>0 then
for ii=1 to OreCount
if OreX[ii]==uo.LastTile(1) and OreY[ii]==uo.LastTile(2) then
flag2=1
end if
next
end if
if flag2==0 then
OreCount=OreCount+1
OreX[OreCount]=uo.LastTile(1)
OreY[OreCount]=uo.LastTile(2)
OreT[OreCount]=uo.LastTile(0)-1
uo.print('Найдена руда номер '+str(OreCount)+' : x='+str(uo.Lasttile(1))+'
y='+str(uo.LastTile(2)))
end if
end if
until (Flag==3) or (OreCount==5000)
uo.FilterSpeech('off')
uo.Print('Анализ закончен, координаты руды записаны в файл  C:\ore.dat')
SaveToFile(OreCount,OreX,OreY,OreT)
end if
uo.Print('Координат найдено: '+str(OreCount))
wait(2000)
######################################
### Ходим по собранным координатам ###
######################################
while 1==1
if OreCount>0 then
for i=1 to OreCount
if TryRecall==1 and uo.Weight>OreQty then
ToRecall()
end if
uo.Print('Идём к координате руды номер '+str(i)+': x='+str(OreX[i])+' y='+str (OreY[i]))
InfoOre()
flag=GotoXY(OreX[i],OreY[i])
if flag==1 then
if TryHiding==1 then
ToHide()
end if 
GetOre(str(OreT[i]),str(OreX[i]),str(OreY[i]),str(uo.GetZ()))
end if
next
end if
wend
end sub

sub GetOre(Type,X,Y,Z)
var i
uo.Print('Начинаем копать...')
for i=1 to 20
if uo.Warmode()==1 then
return 0
end if
wait(200)
uo.DeleteJournal()
CheckLag()
wait(100)
uo.WaitTargetTile(Type,X,Y,Z)
uo.UseType(Pickaxe)
wait(500) 
if WaitForChange()==1 then
return 1
end if
next
return 0
end sub

sub ToRecall()
RecallToHome()
DropOre()
InfoOre()
RecallToOre()
end sub

sub RecallToHome()
var i
uo.print('Реколимся домой...')
for i=1 to 10
uo.deletejournal()
uo.waittargetobject(0x400B1682)
uo.cast('Recall')
if WaitForRecall()==1 then
return 1
end if
next
return 0
end sub 

sub RecallToOre()
var i
uo.print('Реколимся обратно...')
for i=1 to 10
uo.deletejournal()
uo.waittargetobject(0x40395726)
uo.cast('Recall')
if waitForRecall()==1 then
return 1
end if
next
return 0
end sub

sub ToHide()
while not uo.Hidden()
uo.Print('Пытаемся уйти в хайд...')
uo.DeleteJournal()
uo.UseSkill('Stealth')
wait(6000)
wend
wait(100)
end sub

sub WaitForRecall()
var Text1=uo.GetName()+": The spell fizzles."
var mess='',lastX=uo.getX(),lastY=uo.getY()
for var i=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 WaitForHide()
var Text1=uo.GetName()+": You have hidden yourself well"
var Text2=uo.GetName()+": You can't seem to hide here."
var mess
for var i=0 to 200
mess=uo.Journal(0)
if uo.Journal(0)==Text1 then
return 1
end if
if uo.Journal(0)==Text2 then
return 0
end if
wait(50)
next
return 0
end sub

sub WaitForChange()
var Text1=uo.GetName()+': You loosen some rocks but fail to find any useable ore.'
var Text2='There is no ore here to mine.'
var Text3="You can't reach this."
var Text4="That is too far away."
var Text5="You can't do much in your current state."
var Text6="You have no line of sight to that location"
var Text7="You can't see the target" 
var Text8="Try mining in rock."
var mess
for var i=0 to 200
mess=uo.Journal(0)
if uo.Journal(0)==Text2 or uo.Journal(0)==Text3 or uo.Journal(0)==Text4 or uo.Journal(0)==Text6 or uo.Journal(0)==Text7 or uo.Journal(0)==Text8 then
return 1
end if
if uo.Journal(0)==Text1 then
wait(500)
return 0
end if
if mess[0]=='Y' and mess[1]=='o' and mess[2]=='u' and mess[4]=='p' and mess[5]=='u' and mess[6]=='t' then
return 0
end if
wait(50)
next
return 0
end sub

sub WaitForTarget()
for var i=0 to 50
if uo.Targeting()==1 then
return 1
end if
wait(200)
next
return 0
end sub

sub WaitForChangeXY(myX,myY,lastX,lastY)
for var i=1 to 50
if lastX<>myX or lastY<>myY then
return 1
end if
wait(200)
next
return 0
end sub

sub GotoXY(x,y)
var myX,myY,lastX=0,lastY=0,i,halt=0,z,r=0
for i=1 to 60
myX=uo.getX();
myY=uo.getY();
if LastX==myX and LastY==myY then
halt=halt+1
else
halt=0
end if
if halt>=10 then
if uo.GetDir()==1 then
for z=0 to 8
uo.Press(40)
next
end if
if uo.GetDir()==3 then
for z=0 to 8
uo.Press(37)
next
end if
if uo.GetDir()==5 then
for z=0 to 8
uo.Press(38)
next
end if
if uo.GetDir()==7 then
for z=0 to 8
uo.Press(39)
next
end if
halt=15
end if
if Numb(x-myX)<=1 and Numb(y-myY)<=2 then
return 1
end if
if x<=myX then
if y<=myY then
for z=0 to 3
uo.Press(38)
next
else
for z=0 to 3
uo.Press(37)
next
end if
else
if y<=myY then
for z=0 to 3
uo.Press(39)
next
else
for z=0 to 3
uo.Press(40)
next
end if
end if
lastX=myX
lastY=myY
wait(200)
next
return 0
end sub

sub Numb(num)
if num>=0 then
return num
else
return num*(-1)
end if
end sub


sub SaveToFile(OreCount,OreX,OreY,OreT) 
var s=0,i=0
var f=file("C:\ore.dat")
f.Open()
f.Create()
s=safe call f.Writeln(OreCount)
for i=1 to OreCount
s=safe call f.Writeln(str(OreT[i])+' '+str(OreX[i])+' '+str(OreY[i]))
next
f.Close()
end sub

sub DropOre()
ToHide()
if uo.Waiting() then
uo.CancelTarget()
end if
var a,Exit
dim Ore[14]
Ore[0]=0x19B9
Ore[1]=0x19B7
Ore[2]=0x19BA
Ore[3]=0x19B8 
Ore[4]=0x0F11
Ore[5]=0x0F16 
Ore[6]=0x0F18 
Ore[7]=0x0F15
Ore[8]=0x0F10
Ore[9]=0x0F0F
Ore[10]=0x0F26
Ore[11]=0x0F4C 
Ore[12]=0x0EED
Ore[13]=0x0F20
uo.Print('Выкладываем руду.')
uo.SetReceivingContainer(0x400C5D57)
wait(500)
for a=0 to 13
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(0x400C5D57)
uo.Print('Руда выложена.')
end sub

sub InfoOre()
uo.Print('У вас всего '+str(uo.Count('0x19B7')+uo.Count('0x19B8')+uo.Count('0x19B9')+uo.Count('0x19BA'))+' руды в сумке')
uo.Print('Из нее '+str(uo.Count('0x19B7','0x0000')+uo.Count('0x19B8','0x0000') +uo.Count('0x19B9','0x0000')+uo.Count('0x19BA','0x0000'))+' железо и ' +str (uo.Count('0x19B7')+uo.Count('0x19B8')+uo.Count('0x19B9')+uo.Count('0x19BA')- (uo.Count('0x19B7','0x0000')+uo.Count('0x19B8','0x0000')+uo.Count ('0x19B9','0x0000')+uo.Count('0x19BA','0x0000')))+' цветмет')
end sub

sub Open(Container)
uo.DeleteJournal()
uo.UseObject(Container)
repeat
wait(500)
until uo.InJournal('Contains')
end sub

sub ControlOfDanger()
var danger
var RecallPhysicalDanger=1
var RecallSeenDanger=0
var RecallBluePlayer=0
while 1
uo.DeleteJournal()
while not uo.InJournal(':')
wait(100)
wend
danger=uo.GetNotoriety(uo.JournalSerial(0))
if uo.InJournal('Guardian') then
if ElementalKill==0 then
uo.Exec('exec RecallRune')
end if
end if
if RecallPhysicalDanger==1 then
if uo.InJournal('attacking you') or uo.InJournal('An Mani') or uo.InJournal('Por Ort Grav') or uo.InJournal('In Por ') or uo.InJournal('An Ex Por') or uo.InJournal('ppN') or uo.InJournal('Adios') or uo.InJournal('MAKC') or uo.InJournal('Man') then
uo.Exec('exec RecallRune')
end if
end if
if RecallSeenDanger==1 then
if danger==6 and uo.JournalSerial(0)<>uo.GetSerial() then
uo.Exec('exec RecallRune')
end if
if danger==4 and uo.JournalSerial(0)<>uo.GetSerial() then
uo.Exec('exec RecallRune')
end if
end if
if RecallBluePlayer==1 then
if danger==1 and uo.JournalSerial(0)<>uo.GetSerial() then
uo.Exec('exec RecallRune')
end if
end if
wend
end sub

sub RecallRune()
var MX=uo.GetX('self')
var MY=uo.GetY('self')   
uo.UseType('0x0F08')
wait(100)
Recall:
uo.DeleteJournal()
if uo.Waiting() then
uo.CancelTarget()
end if
uo.WaittargetObject('0x40014354')
wait(100)
uo.UseType('0x1F4C')
wait(3000)
if not uo.GetX('self')<>MX and not uo.GetY('self')<>MY then
goto Recall
end if
if uo.Life<uo.STR then
LifeUp('Bottle')
wait(100)
end if
if CycleScript==1 then
wait(DangerousTime)
DropOre()
RecallToOre()
end if
if CycleScript==0 then
uo.Exec('exec ExitUO')
end if
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
end if
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
end if
next
ret=t+" @ "+d
return ret
end sub

sub Terminate()
uo.Print('Все функции скрипта отключены!')
uo.DeleteJournal()
uo.Exec('terminate all')
wait(100)
uo.Exec('terminate all')
wait(100)
uo.Exec('terminate all')
wait(100)
end sub

sub CheckLag()
if uo.Waiting()>0 then
uo.Exec('canceltarget')
end if
uo.DeleteJournal()
uo.Click('backpack')
repeat
wait(50)
until uo.InJournal('backpack')
#BETEP™#
end sub
Kynep
Expert!
Posts: 1348
Joined: 2006-02-07 08:51:40
Location: г. Старый Оскол
Contact:

Re: Mouintain Mining

Post by Kynep »

kotvsapogah wrote:У меня есть скрипт на мининг у скал, но он не собирает координаты, помогите пожалуйста разобраться в чем дело. Вот скрипт:


А эта фраза тебе ни о чем не говорит?

Code: Select all

var GetFromFile=1 
## 1 - Координаты где копать будут считыватся из файла,
## 0 - собиратся из клиента
### (сначала соберите а потом считывайте из файла).


Если нет, то мне искренне тебя жаль... :cry:
kotvsapogah
Posts: 17
Joined: 2006-03-29 14:24:09

Post by kotvsapogah »

Эта фраза о многом говорит, но я ее уже давно заметил. В том и проблема что в режиме маркировки координаты не маркуються :(
DerMeister =)
Expert!
Posts: 1032
Joined: 2006-02-25 21:48:38

Post by DerMeister =) »

Вот это попроще:

Code: Select all

var i,myx,myy,pix,tilecount,waittime

sub main_mine_rock()

wait(1500)
uo.canceltarget()
uo.deletejournal()

uo.print("Укажите кирку...")
uo.addType("pix")
while uo.targeting()
wait(100)
wend

addcoords_mine()

uo.print("THE END")

end sub



sub addcoords_mine()
dim nn[100]
dim xx[100]
dim yy[100]
dim zz[100]

i=0

repeat
uo.print("Укажите укажите точку где надо будет капать...")                             
uo.useType("pix")
wait(1000)
while uo.targeting()
wait(100)
wend
 
nn[i]=uo.Lasttile(0)
xx[i]=uo.Lasttile(1)
yy[i]=uo.Lasttile(2)
zz[i]=uo.Lasttile(3)

i=i+1

until uo.Lasttile(1)==uo.getX() and uo.Lasttile(2)==uo.gety() or i > 100

tilecount=i-2

repeat

for i = 0 to tilecount
myx=uo.getX()
myy=uo.getY()

if abs(myx-xx[i]) > 2 or abs(myy-yy[i]) > 2 then
GoToXY(xx[i],yy[i],1)
end if

mine(nn[i],xx[i],yy[i],zz[i])

next

waittime=(600-10*tilecount)*1000
if waittime < 1 then
waittime=1000
end if

uo.print("Ждём ")
uo.print(str(waittime))
uo.print("Мс")
wait(waittime)

until false
end sub


sub mine(n,x,y,z)
uo.waittargetTile(str(n),str(x),str(y),str(z))
uo.usetype("pix")

UO.DeleteJournal()
while (not (UO.InJournal("stop mining") or UO.InJournal("far") or UO.InJournal("You can't mine")))
wait(1000)
wend
end sub


sub abs(x)
    if (x < 0) then
        x = -x
    end if
    return x
end sub


#####################################
#WALKER @@@@@@@@@@@@@@@@@@@@@@@@@@@ #
#####################################

#(c)SerrouS
Sub InitStack()
  UO.SetGlobal('STACK', '0')
endsub
Sub Push( param )
  var chk = val(UO.GetGlobal('STACK')) ; количество элементов в стеке
  UO.SetGlobal('STACK',str(chk + 1))
  UO.SetGlobal('STACK_'+str(chk), param)
endsub
Sub Pop ()
  var chk = val(UO.GetGlobal('STACK')) ; количество элементов в стеке
  if chk then
    UO.SetGlobal('STACK',str(chk - 1))
    return UO.GetGlobal('STACK_'+str(chk - 1))
  else
    return ''
  endif
endsub

SUB GoToXY(x,y,prec)
#original (c) ...
#modification 2.00 (c) SerrouS
  dim turn[8] ; индекс - ГетДир, значение поворот направо под 45 градусов
  turn[0] = 39
  turn[1] = 34
  turn[2] = 40
  turn[3] = 35
  turn[4] = 37
  turn[5] = 36
  turn[6] = 38
  turn[7] = 33
  dim deltax[8]; индекс - аналогично, значение - изменение координаты при проходе стенки
  dim deltay[8]
  deltax[0] =  1
  deltax[1] =  1
  deltax[2] =  1
  deltax[3] =  0
  deltax[4] = -1
  deltax[5] = -1
  deltax[6] = -1
  deltax[7] =  0

  deltay[0] = -1
  deltay[1] =  0
  deltay[2] =  1
  deltay[3] =  1
  deltay[4] =  1
  deltay[5] =  0
  deltay[6] = -1
  deltay[7] = -1
var dx,dy

  var mx,my ; current coords
  var lx = 0, ly = 0, ld = -1 ; last move coords
 
var pathFind = 0 ; as logical 0 - norm, 1 - block
var ind
var recursInd = 0
var fout = 0

var stepdelay = 1000

InitStack()
repeat
  mx=UO.GetX()
  my=UO.GetY()

  ; calculating for precision coming
  dx = mx - x 
  If dx < 0 Then 
    dx = 0 - dx
  EndIf ;get ABS diff

  dy = my - y 
  If dy < 0 Then 
    dy = 0 - dy
  EndIf
  If dy > dx Then
    dx = dy
  EndIf
  If dx <= prec Then
    Return
  EndIf
   
  if mx == x and my == y then   
    return
  endif
 
  lx = mx
  ly = my
  ld = UO.GetDir() ; cause once pressing can only change the direcction

  if mx == x and my >  y then
    UO.Press(33)
  endif
  if mx == x and my  < y then
    UO.Press(35)
  endif
  if mx  < x and my == y then
    UO.Press(34)
  endif
  if mx  < x and my >  y then
    UO.Press(39)
  endif
  if mx  < x and my  < y then
    UO.Press(40)
  endif
  if mx >  x and my == y then
    UO.Press(36)
  endif
  if mx >  x and my >  y then
    UO.Press(38)
  endif
  if mx >  x and my  < y then
    UO.Press(37)
  endif
UO.Print('KeyPressed')
  wait( stepdelay )

  if lx == UO.GetX() and ly == UO.GetY() and ld == UO.GetDir() then
    ; now there is a stop situation
UO.Print('PathFind')
    recursInd = 0
    repeat
#################################################
      ind = ld
      UO.Print(str(ind))
      fout = 0
      repeat ; идем в обход пока не упремся снова или не кончится стена
UO.Print('Iteration')
        mx = UO.GetX()
        my = UO.GetY()
        ld = UO.GetDir()
        UO.Press( turn[ ind ] )
        wait( stepdelay ) 
        if (UO.GetX() == mx and UO.GetY() == my and ld == UO.GetDir()) then
          fout = 1 ; уперлись
        else
          dx = UO.GetX() - mx
          dy = UO.GetY() - my
UO.Print('deltas  '+str(dx)+'  '+str(dy))
          if deltax[ ind ] == dx and deltay[ ind ] == dy then
            fout = 2 ; препятствие пройдено
          endif
        endif
      until fout
UO.Print('fout   '+ str(fout))
      if fout == 1 then ; уходим на следующий поворот
        recursInd = recursInd + 1
        Push( str( ind ) )
        ;ld = ind
      else ; fout == 2
        ; надо попытаться восстановить контекст из стека, или выйти из обхода
        UO.Print('Iter  '+ str(recursInd))
        pathFind = 0
        if recursInd then ; восстановление
          pathFind = 1
          recursInd = recursInd - 1
          ld = val(Pop()) - 1
          if ld == -1 then
            ld = 7
          endif
          UO.Press( turn[ld] )
          wait ( stepdelay )         ; в сиду того, что ондо нажатие меняет напрваление
        endif
      endif
#################################################
    until not recursInd and not pathFind
    UO.Print('PathFind END')
  endif


until 0
endsub
kotvsapogah
Posts: 17
Joined: 2006-03-29 14:24:09

Post by kotvsapogah »

Спасибо
Post Reply