Разновидность скрипта на MIning

Ask for scripts here

Moderators: Murderator+, Murderator

Login9000
Posts: 26
Joined: 2010-04-15 13:04:50

Re: Разновидность скрипта на MIning

Post by Login9000 »

Переделывал заморскую ерунду как только можно и уже получил что-то близкое к тому, что надо, как вдруг нашел офигенный отечественный скрипт =)

Code: Select all

Sub mine()
var x, y, i, t, tmp, inside, goto_x, st, first
VAR ms1 = "There is nothing here to mine for"
VAR ms2 = "You can't use"
VAR ms3 = "You put "
VAR ms4 = "You loosen some rocks"
VAR ms5 = "location"
VAR ms6 = "Try mining"
VAR ms7 = "You can't see that"
VAR ms8 = "You stop"
VAR ms9 = "That is too"
first=UO.GetX()
start:
inside=0
for y=-1 to 1
for x=-1 to 1
repeat
uo.deletejournal()
t = UO.Timer()
UO.Exec ("waittargettile "+" 1340 "+STR(UO.GEtX()+x)+" "+STR(UO.GetY()+y)+" 0")
UO.exec ("usetype 0x0E85")
repeat
wait(300)
until UO.InJournal(ms1) OR UO.InJournal(ms2) OR UO.InJournal(ms3) OR UO.InJournal(ms4) OR UO.InJournal(ms5) OR UO.InJournal(ms6) OR UO.InJournal(ms7) OR UO.InJournal(ms9) OR ((t + 100) < UO.Timer())
until not UO.InJournal(ms8)
next
next
end sub

sub main()
var i
While UO.Life>0
for i=1 to 7
mine()
uo.press(34)
wait(500)
uo.press(34)
wait(500)
uo.press(34)
next
uo.press(33)
wait(500)
uo.press(33)
wait(500)
uo.press(33)
mine()
for i=1 to 7
uo.press(36)
wait(500)
uo.press(36)
wait(500)
uo.press(36)
next
uo.press(33)
wait(500)
uo.press(33)
wait(500)
uo.press(33)
wend
end sub
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: Разновидность скрипта на MIning

Post by Mirage »

Можно и таким :))

Или вот таким:

Code: Select all

var bag = '0x4018A728'  ; сундук куда скидывать руду и откуда брать инструменты
var instr = 'тип кирки или лопаты'
var ore1 = '0x19B7'
var ore2 = '0x19BA'
var ore3 = '0x19B8'
var ore4 = '0x19B9'
var Lasttimer

sub main()
repeat
walker(1874, 267, 0)
UO.UseObject(bag)
wait(1000)
putore()    ; скидываем руду
getinstr()  ; добираем инструменты
walker(1874, 267, 0)
walker(1874, 271, 0)
walker(1887, 271, 0)
walker(1897, 271, 0)
walker(1904, 271, 0)
Mine()
walker(1912, 273, 0)
Mine()
walker(1916, 281, 0)
Mine()
walker(1921, 276, 0)
Mine()
walker(1921, 269, 0)
Mine()
walker(1924, 264, 0)
Mine()
walker(1917, 271, 0)
walker(1901, 271, 0)
walker(1887, 271, 0)
walker(1874, 271, 0)
walker(1874, 267, 0)
until UO.Dead()
end sub

Sub getinstr()
get(instr, bag, 3, 1)
get(instr, bag, 3, 1)
get(instr, bag, 3, 1)
endsub
Sub putore()
put(ore1,bag)
put(ore2,bag)
put(ore3,bag)
put(ore4,bag)
end sub

################ Рудокоп #################
Sub Mine()
	VAR Shovel1 = '0x0F3A'
	VAR Shovel2 = '0x0F39'
	VAR Pickaxe1 = '0x0F39'
	VAR Pickaxe2 = '0x0F39'
	VAR MaxRange = 2
	VAR X, Y, Z, Tiles
	VAR mX, mY, mZ
	VAR MaxVes = 610
	mX = UO.GetX('self')
	mY = UO.GetY('self')
	mZ = UO.GetZ('self')
	for Y = MaxRange - ( MaxRange * 2 ) to MaxRange
		for X = MaxRange - ( MaxRange * 2 ) to MaxRange
			Tiles = MiningTiles(mX+X, mY+Y)
			if Tiles then
				UO.DeleteJournal()
				repeat
				############################
				#ПЕРЕГРУЗ!!!#
				############################
				If UO.Weight > MaxVes Then
					UO.Print('Перегруз!')
					return
				endif
				############################
					UO.Set('quiet','1')
					UO.DeleteJournal()
					UO.Warmode(0)
					UO.WaitTargetTile(Tiles, mX+X, mY+Y, mZ)
	UO.FindType(Shovel1,-1,'my')
		if UO.FindCount() then
			UO.UseType(Shovel1)
		else
	UO.FindType(Shovel2,-1,'my')
		if UO.FindCount() then
			UO.UseType(Shovel2)
		else
	UO.FindType(Pickaxe1,-1,'my')
		if UO.FindCount() then
			UO.UseType(Pickaxe1)
		else
	UO.FindType(Pickaxe2,-1,'my')
		if UO.FindCount() then
			UO.UseType(Pickaxe2)
		else
			UO.Set('quiet','0')
				UO.Print("ERROR: Нечем копать!!!")
			return
		endif
		endif
		endif
		endif
					LastTimer=UO.Timer()
					repeat
						wait(100)
					until UO.InJournal("far|%|destroyed|useable|выкопали|0xAD00|0xA867|0xA2DE|0xAD03|0x5DE0|0x5DE1|0x5DE2|0x5DE3|0x5DE4|0x5DE5|0x5DE6|0x5DE7|Вы положили|put the|is nothing here to mine|Wthere do you|Вам не удалось|У вас нет|have no line|ничего|Тут ничего|Попробуйте|Try mining elsewhere") || UO.Timer()>LastTimer+100 || UO.Weight > MaxVes || UO.Dead()
				until UO.InJournal("far|%|destroyed|0xAD00|0xA867|0xA2DE|Тут ничего|is nothing here to mine|нет руды|У вас нет|have no line|Попробуйте|Try mining elsewhere") || UO.Timer()>LastTimer+500 || UO.Weight > MaxVes || UO.Dead()
				############################
				#ПЕРЕГРУЗ!!!#
				############################
				If UO.Weight > MaxVes Then
					UO.Print('Перегруз!')
					return
				endif
				############################
			endif
		next
	next
	UO.Set('quiet','0')
	UO.Print("Все")
	UO.Sound(100)
	return 0
end sub

Sub MiningTiles(X,Y)
	var i
	if UO.PrivateGetTile(X, Y, -1, 616, 618) then
		for i=616 to 618
			if UO.PrivateGetTile(X, Y, -1, i, i) then
				return i
			end if
		next
	end if
	if UO.PrivateGetTile(X, Y, -1, 1339, 1363) then
		for i=1339 to 1363
			if UO.PrivateGetTile(X, Y, -1, i, i) then
				return i
			end if
		next
	end if
	if UO.PrivateGetTile(X, Y, -1, 2272, 2282) then
		for i=2272 to 2282
			if UO.PrivateGetTile(X, Y, -1, i, i) then
				return i
			end if
		next
	end if
	if UO.PrivateGetTile(X, Y, -1, 4963, 4973) then
		for i=4963 to 4973
			if UO.PrivateGetTile(X, Y, -1, i, i) then
				return i
			end if
		next
	end if
	if UO.PrivateGetTile(X, Y, -1, 6001, 6012) then
		for i=6001 to 6012
			if UO.PrivateGetTile(X, Y, -1, i, i) then
				return i
			end if
		next
	end if
	if UO.PrivateGetTile(X, Y, -1, 13121, 13369) then
		for i=13121 to 13369
			if UO.PrivateGetTile(X, Y, -1, i, i) then
				return i
			end if
		next
	end if
	if UO.PrivateGetTile(X, Y, -1, 13446, 13455) then
		for i=13446 to 13455
			if UO.PrivateGetTile(X, Y, -1, i, i) then
				return i
			end if
		next
	end if
	if UO.PrivateGetTile(X, Y, -1, 13484, 13492) then
		for i=13484 to 13492
			if UO.PrivateGetTile(X, Y, -1, i, i) then
				return i
			end if
		next
	end if
	if UO.PrivateGetTile(X, Y, -1, 13625, 13628) then
		for i=13625 to 13628
			if UO.PrivateGetTile(X, Y, -1, i, i) then
				return i
			end if
		next
	end if
	return 0; No Mining Tiles
end sub


Sub GET(item, cont, min, max)
	If UO.Count( item ) < min Then
		#       UO.Print("Кончилось сырье в рукзаке")
		UO.FindType( item, '-1', cont )
		if UO.FindCount() > 0 Then
			#        UO.Print('Сырья в сундуке: ' + Str( UO.FindCount( item ) ) )
			uo.moveitem('finditem', max, 'backpack')
			checklag()
		else
			#           UO.Print( 'Полностью кончилось сырье' )
			UO.CancelMenu()
			return
		endif
	Endif
end sub
Sub PUT(item, cont)
	while UO.Count( item ) > 0
		UO.FindType( item, -1, -1 )
		UO.MoveItem( 'finditem', 0, cont )
		checklag()
	wend
end sub

Sub DeleteJournal(msg)
	While UO.InJournal(msg)
		UO.SetJournalLine(UO.InJournal(msg) - 1,'')
	wend
endsub

Sub MyTerminate()
	UO.Set('quiet','1')
	UO.CancelMenu()
	UO.IgnoreReset()
	UO.Set('quiet','0')
	UO.Exec('terminate all')
end sub

Sub checklag()
	DeleteJournal("ackpack")
	UO.Click("backpack")
	repeat
		wait(100)
	until UO.InJournal("ackpack")
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 ##########################



sub Reconnector() 
    var ReconnectTime, RFlag 
    ReconnectTime = '0' 
    RFlag = 1 
    Repeat 
          While (UO.ObjAtLayer('Bpack') == '') 
                If RFlag Then 
                   ReconnectTime = MakeTime() 
                   RFlag = 0 
                endif 
                Wait(20000) # WorldSave Protection 
                UO.Say('') 
                Wait(3000) 
                UO.Say('') 
                Wait(3000) 
                UO.Say('') 
                Wait(3000) 
                UO.LDblClick(357,164) 
                UO.LClick(616,459) 
                Wait(3000)        
          Wend
          Wait(3000) 
          If (RFlag == 0) and (ReconnectTime <> '0') Then 
             
             uo.TextOpen() 
             uo.TextPrint('Disconnected & Reconnected @ '+ReconnectTime) 
             RFlag = 1 
             ReconnectTime = '0' 
          End If 
    Until false 
end sub 

Sub MakeTime() 
   VAR D, T, Ret, i 
   Ret = STR(UO.Time()) 
   T = "" 
   For i = 0 To Len(Ret) 
      T = Ret[Len(Ret)-i] + T 
      If (I == 2) OR (I == 4) Then 
         T = ":" + T 
      EndIf 
   Next 
   Ret = STR(UO.Date()) 
   D = "" 
   For i = 0 To Len(Ret) 
      D = Ret[Len(Ret)-i] + D 
      If (I == 2) OR (I == 4) Then 
         D = "." + D 
      EndIf 
   Next    
   Ret = T + " @ " + D 
   RETURN Ret 
End Sub

sub TerminateAll()
uo.Exec('Terminate All')
End Sub
Login9000
Posts: 26
Joined: 2010-04-15 13:04:50

Re: Разновидность скрипта на MIning

Post by Login9000 »

Большой скрипт. С мои соединением такие постоянно улетают =)
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: Разновидность скрипта на MIning

Post by Mirage »

там ходилка занимает 2/3 скрипта :)
Принцип как в том что тебе посоветовали в самом начале. Перемещаешься - копаешь перемещаешься - копаешь перемещаешься - сбрасываешь руду.
Рассчитано на то что домик рядом с шахтой и никуда летать на надо.
SpaceBunny
Posts: 11
Joined: 2011-05-17 17:53:33

Re: Разновидность скрипта на MIning

Post by SpaceBunny »

а в этом скрипте он когда складывает, возвращается туда где остановился? я про тот, что с большой ходилкой.
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: Разновидность скрипта на MIning

Post by Mirage »

Мне это было не критично - если начать с 1 точки потеря составляет пару секунд. На боте 24/7 это не смертельно. + я специально подобрал шахту чтобы респ происходил после выкапывания последней точки.
Я ответил в твоей теме как сделать чтобы возвращался к первой точке.
Post Reply