Page 1 of 1

маленькие непонятки ...

Posted: 2009-07-07 21:51:09
by zimglads

Code: Select all

var step_timeout = 800 ; таймаут на шаг 
VAR MaxVes = 50
VAR havka = '0x09F2' ; жаренная рыба
VAR Container = '0x4008E70D'    ;Сундук (банк) руда, рыба, инструменты
VAR Stat='0x4001CCDE'
VAR Pickaxe = '0x0E85' ; тип кирки
var i, oldX, oldY, LastTimer

sub mining() 

   var continue = "You loosen some rocks but fail to find any useable ore.|in your pack.|Success in work!" ; сообщения о продолжении капания этого тайла 
   var break = "Try mining in rock.|That is too far away.|There is no ore here to mine.|You can't see the target|Unexpected button input|You broke the pickaxe.|You have incorrectly entered a code. Repeat attempt" ; сообщения о прекращении капания этого тайла 
   var i = 0, f = file ( "D:\mining3.txt" )  ; файлик с координатами 
   f.open() 
   var cnt = f.readNumber() 
   DIM type[ val( str( cnt ) ) ] 
   DIM tile_t[ val( str( cnt ) ) ] 
   DIM tile_x[ val( str( cnt ) ) ] 
   DIM tile_y[ val( str( cnt ) ) ] 
   DIM tile_z[ val( str( cnt ) ) ] 
   while not f.eof() 
      type[ i ] = f.readNumber() 
      tile_t[ i ] = f.readNumber() 
      tile_x[ i ] = f.readNumber() 
      tile_y[ i ] = f.readNumber() 
      tile_z[ i ] = f.readNumber() 
      i = i + 1 
   wend 
   f.close() 
   for i = 0 to cnt -1 
      if type[i] == 2 || type[i] == 1 then 
         desWalker( tile_x[i], tile_y[i] ) 
      endif 
      if type[i] == 2 || type[i] == 0 then 
         repeat 
            deljournal( break + "|" + continue ) 
            uo.waittargettile( str( tile_t[ i ] ), str( tile_x[ i ] ), str( tile_y[ i ] ), str( tile_z[ i ] ) ) 
            uo.usetype( Pickaxe ) 
            repeat 
               wait( 100 ) 
            until uo.injournal( break + "|" + continue ) || UO.Weight > MaxVes || UO.Dead()
         until uo.injournal( break )  || UO.Weight > MaxVes || UO.Dead()
            If UO.Weight > MaxVes Then 
               UO.Print('Перегруз!') 
               wait(500) 
               BackMine() 
               wait(500) 
            endif 
      endif 
   next 
endsub 

Sub desWalker( x, y ) 
   var dir, key, mx, my, timer 
   if x== uo.getX() && y == uo.getY() then 
      return false 
   endif 
   repeat 
      mx = uo.getX() 
      my = uo.getY() 
      key = getWalkDir( x-mx, y-my, 0, 0 ) 
      dir = getWalkDir( x-mx, y-my, 1, 0 ) 
      if Not uo.getDir() == dir then 
         uo.press( key, 2 ) 
      else 
         uo.press( key ) 
      endif 
      timer = 0 
      while uo.getX() == mx && uo.getY() == my && step_timeout / 100 > timer 
         wait( 100 ) 
         timer = timer + 1 
      wend 
   until uo.getX() == x && y == uo.getY() 
endsub
Sub getWalkDir(x, y, type, walk) 
   DIM keys[8] 
   if type == 0 then 
      if walk == 0 then 
         keys[0] = 35; End 
         keys[1] = 40; Down 
         keys[2] = 34; Page Down 
         keys[3] = 39; Right 
         keys[4] = 33; Page Up 
         keys[5] = 38; Up 
         keys[6] = 36; Home 
         keys[7] = 37; Left 
      else 
         keys[0] = 33; Page Up 
         keys[1] = 38; Up 
         keys[2] = 36; Home 
         keys[3] = 37; Left 
         keys[4] = 35; End 
         keys[5] = 40; Down 
         keys[6] = 34; Page Down 
         keys[7] = 39; Right 
      endif 
   else 
      if walk == 0 then 
         keys[0] = 4; End 
         keys[1] = 3; Down 
         keys[2] = 2; Page Down 
         keys[3] = 1; Right 
         keys[4] = 0; Page Up 
         keys[5] = 7; Up 
         keys[6] = 6; Home 
         keys[7] = 5; Left 
      else 
         keys[0] = 0; Page Up 
         keys[1] = 7; Up 
         keys[2] = 6; Home 
         keys[3] = 5; Left 
         keys[4] = 4; End 
         keys[5] = 3; Down 
         keys[6] = 2; Page Down 
         keys[7] = 1; Right 
      endif 
   endif 
   if x==0 && y > 0 then 
      return keys[0] 
   endif 
   if x==0 && y < 0 then 
      return keys[4] 
   endif 
   if x > 0 && y == 0 then 
      return keys[2] 
   endif 
   if x < 0 && y == 0 then 
      return keys[6] 
   endif 
   if x > 0 && y > 0 then 
      return keys[1] 
   endif 
   if x > 0 && y < 0 then 
      return keys[3] 
   endif 
   if x < 0 && y > 0 then 
      return keys[7] 
   endif 
   if x < 0 && y < 0 then 
      return keys[5] 
   endif 
endsub

Sub deljournal(msg)
while uo.injournal(msg)
uo.setjournalline(uo.injournal(msg)-1,"")
wend
endsub

Sub OneClick() 
dim reindex[8] 
reindex[0] = 11 
reindex[1] = 12 
reindex[2] = 13 
reindex[3] = 10 
reindex[4] = 16 
reindex[5] = 14 
reindex[6] = 17 
reindex[7] = 15 
var GumpID = 0 
var ButtonID = 0 
var ButtonText 
var i = 18 
if uo.LastGump('text', 4) <> "0" then 
i = 19 
end if 
GumpID = val(Mid(uo.LastGump('command', i), 16, 4)) 
ButtonID = reindex[GumpID-2225] 
ButtonText = uo.LastGump('command', ButtonID) 
uo.LClick(Val(Mid(ButtonText, 7, 3)), Val(Mid(ButtonText, 11, 3))) 
wait(300) 
end sub 

sub AntiMacro() 
while not uo.Dead() 
if not uo.LastGump('replyed') then 
if uo.LastGump('text', 0) == 'Antimacros System' then 
OneClick() 
end if 
endif 
wait(500) 
wend 
end sub

Sub BackMine() 
i=UO.Getserial('self') 
oldX=UO.GetX(i) 
oldY=UO.GetY(i) 
   walker(2568,475,0)
   wait(500) 
   skid() 
   wait(500) 
   walker(oldX,oldY,0)  
endsub

sub skid() 
uo.useobject(Stat) 
   wait(300) 
   PUT(0x1BDD, Container ) 
   PUT(0x19B9, Container ) 
   PUT(0x19B7, Container ) 
   PUT(0x19BA, Container ) 
   PUT(0x19B8, Container ) 
eat() 
GrAxe()
end sub 

Sub eat()
	GET(havka, Container, 1, 5) 
  REPEAT
   UO.DeleteJournal()
    LastTimer=UO.Timer()
     UO.findtype(havka,-1,'backpack')
          If UO.FindCount() > 0 Then
             UO.Useobject('finditem')
		wait(200)
              Else
             UO.Print( 'кончилась рыба' )
            return 0
          end if
  Until UO.InJournal("stuffed!|think|found|You would not like to eat more|You feel quite full after consuming the food.") OR UO.Timer()>LastTimer+200
	PUT(havka, Container)
end sub

sub GrAxe()             
uo.deletejournal() 
uo.useobject('Stat') 
wait(2000) 
uo.useobject('0x400B442D') 
wait(2000)
if uo.count(Pickaxe) < 6 then 
      uo.findtype(Pickaxe,'-1','Container') 
      wait(100) 
      UO.grab('1','finditem') 
      Wait(600) 
      uo.findtype(Pickaxe,'-1','Container') 
      wait(100) 
      UO.grab('1','finditem') 
      Wait(600) 
      uo.findtype(Pickaxe,'-1','Container') 
      wait(100) 
      UO.grab('1','finditem') 
      Wait(600) 
      uo.findtype(Pickaxe,'-1','Container') 
      wait(100) 
      UO.grab('1','finditem') 
      Wait(600) 
      uo.findtype(Pickaxe,'-1','Container') 
      wait(100) 
      UO.grab('1','finditem') 
      Wait(600) 
      uo.findtype(Pickaxe,'-1','Container') 
      wait(100) 
      UO.grab('1','finditem') 
      Wait(600) 
end if 
end sub

Sub PUT(item, cont) 
   while UO.Count( item ) > 0 
      UO.FindType( item, -1, -1 ) 
      UO.MoveItem( 'finditem', 0, cont ) 
      wait(300) 
   wend 
end sub

Sub GET(item, cont, min, max) 
	If UO.Count( item ) < min Then
		UO.FindType( item, '-1', cont )
		if UO.FindCount() > 0 Then
			uo.moveitem('finditem', max, 'backpack')
			      wait(300) 
		else
			return
		endif
	Endif
end sub






########################################## ХОДИЛКА 3 ##########################
#var Prec=3 # Как близко следует подойти к цели (Precision)
#var MaxTraceDistance=15 # Максимальная длина обхода. Желательно ставить с расчета возможных препятсвий. Если ставить очень #большие числа, кодилка может пойти в обход пол мира чтобы дойти к соседнему дереву.
#var Speed=2 # Длина шага. Сколько шагов делать за раз. Выше 3 ставить смысла нет. Тоесть тупое умножение шагов. Для ламбера #идеально 3, для майнинга - 1.
#var StepTimeOut=400 # Если уперлись в неопознанный обьект, сколько мсек ждать сдвига с места. Если по простому - таймаут #шага. Если поставить сильно маленькие, ходилка начнет трассировать пустые места.
#UO.SetGlobal("Logging","1")  # - показывать отладочные сообщения.
#UO.SetGlobal("BlindWalk","0") # - не использовать проверку тайлов, а использовать ходьбу наощупь. Для майнинга ОБЯЗАТЕЛЬНО #ВКЛЮЧИТЬ.
#В функции IsPass, содержиться список проходимых тайлов.

#Walker(X,Y,Prec) - идем к цели с координатами X,Y. Возвращает 1 в случае успешного достижения цели, и 0 - при невозможном обходе (путь не найден)
#Tracer(StartDir,Direction) - трассировка 1 шага. Возвращает направление по которому получилось сдвинуться с места. StartDir #- направление последнего движения, Direction (-1 или +1) направление обхода. -1 - по часовой стрелке, +1 против часовой #стрелки. Направления скрипт использует личного формата:
#1 - влево вниз
#2 - вниз
#3 - вправо вниз
#4 - вправо
#5 - вправо вверх
#6 - вверх
#7 - влево вверх
#8 - влево
#Tracer(StartDir,Direction) - идеально подходит для рыбалки вдоль берега так как она будет обходить берег бесконечно (1 #запуск функции = 1 шаг обхода).
#####################################################
# WW  W  WW   AA    LL     Kk KK  EE  EE  RRR       #
# WW  W  WW  AA A   LL     Kk K   EEE     R  R      #
# WW  W  WW  AA A   LL     KKK    EEEEE   R R       #
# WW WW  WW  AAAA   LL     KKK    EEE     RRR       #
#  WWW WWW  AA   A   LLLL  KK Kk  EE  EE  R  RR     #
####################################################
var MaxTraceDistance=10
var TraceLoopIncrease=5 #Увеличение MaxTraceDistance при исчерпании количества ходов
var LimitTrace=20 #Сколько шагов в ОБЕ стороны от начальной точки обхода прекращают ходилку (выхода нет).
var Speed=1
var StepTimeOut=300 #Таймаут шага. Устанавливать не в размер пинга, а в размер шага + размер пинга.
# Для ходьбы - 500+Ping
# Для бега/ходьбы на лошади - 300+Ping
# Бег на лошади - 150 + Ping

var CheckCnt=2 #Количество слепых проверок. УВЕЛИЧИВАЕТ В СТОЛЬКО РАЗ ТАЙМАУТ. Использовать только на БЫСТРОМ но НЕСТАБИЛЬНОМ коннекте. При большом пинге будет УЖАС.
var DynamicPause=30 #Минимальные паузы в циклах. Чем меньше число - тем меньше рывков и тем больше нагрузка процессора.


Sub ttt()
	walker(1165,1661,1)
end sub

Sub Walker(GoX,GoY,Prec)
	UO.SetGlobal("Logging","0")
	UO.SetGlobal("BlindWalk","1")
	var LastDir
	var MoveRes
	var TracerCnt
	UO.SetGlobal("GlobalGoX",str(GoX))
	UO.SetGlobal("GlobalGoY",str(GoY))
	while not IsEnd(GoX,GoY,Prec)
		TracerCnt = MaxTraceDistance
		repeat
			LogInfo('Just walking')
			LastDir=GoUntilHit(GoX,GoY,Prec)
			
			if IsEnd(GoX,GoY,Prec) then
				return 1
			end if
			
			LogInfo('Tracing')
			MoveRes = FullAroundTrace(LastDir,GoX,GoY,Prec,TracerCnt)
			if TracerCnt > LimitTrace then
				return 0
			endif
			TracerCnt = TracerCnt + TraceLoopIncrease
		until MoveRes == 1
	wend
	return 1
end sub

Sub FullAroundTrace(StartDir,GoX,GoY,Prec,MaxTrace)
	var LineX=UO.GetX()
	var LineY=UO.GetY()
	var CurDir=StartDir
	var Direction=CountDirection(GoX,GoY,CurDir,Prec)
	var StartX,StartY
	var MovesDone=0
	repeat
		StartX=UO.GetX()
		StartY=UO.GetY()
		CurDir=Tracer(CurDir,Direction,Prec)
		if (CurDir==GetDir(GoX,GoY,Prec)) then
			return 1
		endif
		if MovesDone>0 and PrevMoveCross(GetDirToDir(UO.GetDir(),Prec),LineX,LineY,GoX,GoY,StartX,StartY,Prec) then
			return 1
		end if
		MovesDone=MovesDone+1
		CurDir=AddToDir(CurDir,-Direction,Prec)
	until MovesDone>MaxTrace
	return 0
end sub

Sub CountDirection(GoX,GoY,StartDir,Prec)
	var GoDir=GetDir(GoX,GoY,Prec)
	var MyX=UO.GetX()
	var MyY=UO.GetY()
	if GoDir<StartDir then
		return -1
	end if
	if GoDir>StartDir then
		return 1
	end if
	if Abs(MyX-GoX)>Abs(MyY-GoY) then
		if (GoDir==3 and GoY>MyY) OR (GoDir==7 and GoY<MyY) then
			return -1
		else
			return 1
		end if
	else
		if (GoDir==1 and GoX<MyX) or (GoDir==5 and GoX>MyX) then
			return -1
		else
			return 1
		end if
	end if
end sub

Sub PrevMoveCross(Dir,x1,y1,x2,y2,StartX,StartY,Prec)
	var x3,y3,x4,y4
	x3=StartX
	y3=StartY
	x4=StartX+(XFromDir(Dir)-StartX)*Speed
	y4=StartY+(YFromDir(Dir)-StartY)*Speed
	return LinesCrossing(x1,y1,x2,y2,x3,y3,x4,y4,Prec)
end sub

Sub LinesCrossing(x1,y1,x2,y2,x3,y3,x4,y4,Prec)
	if x1==x3 and y1==y3 then
		return false
	end if
	var z1=(x3-x1)*(y2-y1)-(y3-y1)*(x2-x1)
	var z2=(x4-x1)*(y2-y1)-(y4-y1)*(x2-x1)
	if z1*z2>0 then
		return false
	else
		LogInfo('Vector info:')
		LogInfo('x1= '+str(x1))
		LogInfo('y1= '+str(y1))
		LogInfo('x2= '+str(x2))
		LogInfo('y2= '+str(y2))
		LogInfo('x3= '+str(x3))
		LogInfo('y3= '+str(y3))
		LogInfo('x4= '+str(x4))
		LogInfo('y4= '+str(y4))
		return true
	end if
end sub

Sub IsDiap(X,X0,X1,Prec)
	if X<=X0+Prec and X>=X1-Prec OR X>=X0-Prec and X<=X1+Prec then
		return true
	end if
	return false
end sub

Sub GoUntilHit(GoX,GoY,Prec)
	var LastDir
	LastDir=GetDir(GoX,GoY,Prec)
	var CouldMove
	repeat
		LastDir=GetDir(GoX,GoY,Prec)
		if LastDir<>0 and not IsEnd(GoX,GoY,Prec) then
			CouldMove=TryDir(LastDir,Prec)
		end if
	until LastDir==0 or IsEnd(GoX,GoY,Prec) or not CouldMove
	return LastDir
end sub

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

Sub GetDir(GoX,GoY,Prec)
	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 Tracer(StartDir,Direction,Prec)
	var CurDir=StartDir
	var Result
	repeat
		Result=TryDir(CurDir,Prec)
		if not Result then
			CurDir=AddToDir(CurDir,Direction,Prec)
		end if
	until Result
	return Result
end sub

Sub AddToDir(Dir,Cnt,Prec)
	var NewDir=Dir
	NewDir=NewDir+Cnt
	while NewDir>8
		NewDir=NewDir-8
	wend
	while NewDir<1
		NewDir=NewDir+8
	wend
	return NewDir
end sub

Sub TryDir(Dir,Prec)
	var BegX=UO.GetX() # Ia?aeuiia O
	var BegY=UO.GetY() # Ia?aeuiia Y
	var Counter=0
	var GoX=BegX
	var GoY=BegY
	GoX=XFromDir(Dir)
	GoY=YFromDir(Dir)
	if not IsPass(GoX,GoY) then
		LogInfo(str(GoX)+':'+str(GoY)+' is not passable')
		return false
	end if
	return TurnAndGoDir(Dir,Prec)
end sub

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

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

Sub TurnAndGoDir(Dir,Prec)
	var StartDir=GetDirToDir(UO.GetDir(),Prec)
	var StartX=UO.GetX()
	var StartY=UO.GetY()
	var EndDir
	var Counter=0
	var TestCounter=CheckCnt
	
	#Direction Test
	repeat
		Counter = 0
		LogInfo('Dir: '+str(StartDir)+' Counter: '+str(Counter))
		PressDir(Dir)
		repeat
			EndDir=GetDirToDir(UO.GetDir(),Prec)
			wait(DynamicPause)
			Counter=Counter+1
		until StartDir<>EndDir or StartY<>UO.GetY() or StartX<>UO.GetX() or Counter>=StepTimeOut/DynamicPause
		TestCounter = TestCounter - 1
		LogInfo('Dir: '+str(EndDir)+' Counter: '+str(Counter))
	until TestCounter <= 0 or Counter < StepTimeOut/DynamicPause
	
	if Counter>=StepTimeOut/DynamicPause  then
		LogInfo('Direction timeout reached')
		return 0
	end if
	#End direction Test
	
	if StartY<>UO.GetY() or StartX<>UO.GetX() then
		return Dir
	end if
	
	#Start Primary test
	TestCounter=CheckCnt
	repeat
		GoDir(Dir,Prec)
		Counter=0
		repeat
			wait(DynamicPause)
			Counter=Counter+1
		until StartY<>UO.GetY() or StartX<>UO.GetX() or Counter>=StepTimeOut/DynamicPause
		TestCounter = TestCounter - 1
	until TestCounter <= 0 or Counter < StepTimeOut/DynamicPause
	#End primary test
	
	if Counter>=StepTimeOut/DynamicPause then
		LogInfo('Step timeout reached')
		return 0
	else
		return Dir
	end if
end sub

Sub GetDirToDir(GotDir,Prec)
	var ChangedDir=-GotDir
	ChangedDir=AddToDir(ChangedDir,5,Prec)
	return ChangedDir
end sub

Sub DirToInj(Dir)
	dim Dirs[9]
	Dirs[1]=1
	Dirs[2]=2
	Dirs[3]=3
	Dirs[4]=6
	Dirs[5]=9
	Dirs[6]=8
	Dirs[7]=7
	Dirs[8]=4
	
	return (Dirs[Dir])
end sub

Sub PressDir(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],1)
end sub

Sub GoDir(Dir,Prec)
	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
	
	var DistanceX=Abs(UO.GetX()-val(UO.GetGlobal("GlobalGoX")))
	var DistanceY=Abs(UO.GetY()-val(UO.GetGlobal("GlobalGoY")))
	var GoDistance
	if (DistanceX-Prec)<Speed then
		GoDistance=DistanceX-Prec
	else
		if (DistanceY-Prec)<Speed then
			GoDistance=DistanceY-Prec
		else
			GoDistance=Speed
		endif
	endif
	
	UO.Press(Dirs[Dir],GoDistance)
end sub

Sub IsPass(X,Y)
	if UO.GetGlobal("BlindWalk") then
		return true
	endif
	
	dim Types[60]
	Types[1]=3
	Types[2]=25
	Types[3]=51
	Types[4]=63
	Types[5]=113
	Types[6]=140
	Types[7]=172
	Types[8]=219
	Types[9]=232
	Types[10]=235
	Types[11]=239
	Types[12]=243
	Types[13]=248
	Types[14]=251
	Types[15]=264
	Types[16]=267
	Types[17]=282
	Types[18]=289
	Types[19]=321
	Types[20]=379
	Types[21]=420
	Types[22]=440
	Types[23]=476
	Types[24]=499
	Types[25]=513
	Types[26]=542
	Types[27]=578
	Types[28]=586
	Types[29]=622
	Types[30]=700
	Types[31]=804
	Types[32]=1740
	Types[33]=1758
	Types[34]=1770
	Types[35]=1779
	Types[36]=1779
	Types[37]=1881
	Types[38]=1886
	Types[39]=1801
	Types[40]=1805
	Types[41]=1813
	Types[42]=1820
	Types[43]=1831
	Types[44]=1833
	Types[45]=1843
	Types[46]=1850
	Types[47]=1873
	Types[48]=1876
	Types[49]=1885
	Types[50]=1888
	Types[51]=1946
	Types[52]=1969
	Types[53]=2500
	Types[54]=2539
	
	for var i=1 TO 53 STEP 2
		if UO.PrivateGetTile(X,Y,-1,Types[i],Types[i+1]) then
			return true
		end if
	next
	return false
end sub

Sub LogInfo(Line)
	if not UO.GetGlobal("Logging")=="0" then
		UO.TextOpen()
		UO.TextPrint(str(UO.GetX())+":"+str(UO.GetY())+" - "+Line);
	end if
end sub

Sub Abs(X)
	if X>0 then
		return X
	else
		return (-X)
	end if
end sub
########################################## КОНЕЦ ХОДИЛКИ 3 ##########################





вобщем скрипт "я его слепила из того что было" :lol:

не ходить по кругу =( доходит до конца и останавливаеться

Posted: 2009-07-07 21:55:08
by Mirage
мдя...

Попробуй написать вверху

Code: Select all

sub main()
repeat
mining()
until UO.Dead() 
endsub
и запускать его

Posted: 2009-07-07 22:02:35
by zimglads
делейт топ а то стыдно :oops: