Мининг хепл пжл

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
tylllkah
Posts: 243
Joined: 2012-03-20 00:32:06
Location: РФ, г. Москва

Мининг хепл пжл

Post by tylllkah »

Беда
Last edited by tylllkah on 2012-11-02 05:39:54, edited 1 time in total.
Не быть жадным - уже богатство, не быть расточительным – доход.
TylllKaH
YokoInjection CodeSweeper
Ошибка "Unhandled exception in parser"
tylllkah
Posts: 243
Joined: 2012-03-20 00:32:06
Location: РФ, г. Москва

Re: Мининг хепл пжл

Post by tylllkah »

З.Ы. Скрипт создавал сам брал отдельные скрипты и вставлял в это, сам в этом деле не понимаю.
Буду очень признателен если мне помогут мастеры скриптов :)
Не быть жадным - уже богатство, не быть расточительным – доход.
TylllKaH
YokoInjection CodeSweeper
Ошибка "Unhandled exception in parser"
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: Мининг хепл пжл

Post by Mirage »

Мастеров почти не осталось. Одни модераторы :mrgreen:

Визуально у тебя в

Code: Select all

sub Loottrup() 
UO.UseObject('lastcorpse')
if UO.GetQuantity('lastcorpse') then
wait(700)
VAR g,Exit  
DIM Loot[56]     
Loot[0]='0x19B9' ;
Loot[1]='0x19B7' ;
Loot[2]='0x19BA' ;
Loot[3]='0x19B8' ;
Loot[4]='0x0F26' ;
Loot[5]='0x0F18' ;
Loot[6]='0x0F10' ;
Loot[7]='0x0F11' ;
Loot[8]='0x0F15' ;
Loot[9]='0x0F0F' ;
Loot[10]='0x0F16' ;
Loot[11]='0x0EED' ;
Loot[12]='0x0F3F' ;
Loot[13]='0x0F39' ;
Loot[14]='' ;
For i=0 to 13 # последнее значение Loot
      Exit=0 
      repeat 
       UO.FindType(Loot[g],-1,'lastcontainer')            
        if UO.GetQuantity('finditem') then 
         UO.Grab('lastcontainer','finditem') 
          wait(1000) 
          Else 
         Exit=1 
        endif 
      until Exit==1 OR uo.injournal("not loot") 
   Next  
UO.UnSetReceivingContainer() 
; вот тут
end sub
не хватает endif - прогоняй длинные скрипты через вторую строку моей подписи.

Попробуй добавить checklag() в
sub Mining()
перед первым for
tylllkah
Posts: 243
Joined: 2012-03-20 00:32:06
Location: РФ, г. Москва

Re: Мининг хепл пжл

Post by tylllkah »

Яж прям весь растерялся)) не ожиданно, всегда зоходил искал, а тут вообще ни где нет так, как скипт частями собраню Спасибо Мираж, а по поводу ресалки можешь что-нибудь сказать?
Не быть жадным - уже богатство, не быть расточительным – доход.
TylllKaH
YokoInjection CodeSweeper
Ошибка "Unhandled exception in parser"
tylllkah
Posts: 243
Joined: 2012-03-20 00:32:06
Location: РФ, г. Москва

Re: Мининг хепл пжл

Post by tylllkah »

И ещё вопросы если не трудно ответить конечно, щас поставил теститься, но до этого сбивался, копал в одном таиле типо 4 -3 и потом бежит строчка бысто типо он ещё раз там хочетт найти не переходя на другой, это ну жно было чеклаг поставить как сказал Мираж?
по поводу капало я нашел две одна ВЕТЕРАНа другая Енеми какая лучше?

Code: Select all

by BETEPAH
sub maning()
var mx, my, mz, i, j, jor, ser, noto
Uo.exec("set norbcheck 1");
uo.exec("set norbcalc 1");


na4alo:
noto=0
mx = UO.GetX("self")
my = UO.GetY("self")
mz = UO.GetZ("self")
UO.DeleteJournal()
for i = mx-4 to mx+4
for j = my -4 to my+4
while not UO.Hidden()
UO.Warmode("0")
uo.print("Прячемся...")
UO.UseSkill("Hiding")
wait(2000)
wend
UO.Print("Копаем в координатх: "+str(mx-i)+" "+str(my-j))
while not UO.InJournal("no ore here") and not UO.InJournal("location") and not UO.InJournal("far away") and not UO.InJournal("in rock") and not UO.InJournal("Iron Ore") and not UO.InJournal("Copper") and not UO.InJournal("Rusty Ore")
UO.DeleteJournal()
if uo.waiting() then
uo.canceltarget()
endif
UO.Waittargettile("1341", str(i), str(j), str(mz))
UO.Useobject("Shovel")
while not UO.InJournal("You put") and not UO.InJournal("heavy") and not UO.InJournal("location") and not UO.InJournal("no ore") and not UO.InJournal("but fail") and not UO.InJournal("far away") and not UO.InJournal("in rock")
wait (500)
if uo.injournal("heavy") or uo.dead() then
pwav()
endif
end sub
И

Code: Select all

by Enemy
sub Mining() 
var mx, my, mz, i, j, f
GetPickaxe()
while 1
mx = UO.GetX('self') 
my = UO.GetY('self') 
mz = UO.GetZ('self') 
CheckLag()
for i = mx-4 to mx+4 
for j = my-4 to my+4
repeat
if uo.injournal('but fail') then
wait(10000)
end if
Tohide() 
UO.Print('Копаем в координатах: '+str(mx-i)+' '+str(my-j))
DigAhole(i,j,mz)
until uo.injournal('no ore here|far away')
next 
next
wend
end sub 

sub GetPickaxe()
var n
dim instrument[4]
instrument[1]='0x0F39'
instrument[2]='0x0F3A'
instrument[3]='0x0E86'
instrument[4]='0x0E85'
for n=1 to 1
uo.findtype(instrument[n],-1,'my')
if uo.findcount() then
pickaxe=uo.getserial('finditem')
return
endif
next   
while 1
uo.print(' pickaxe not found ')
wait(3000)
wend
end sub

sub DigAhole(i,j,mz)
var f
for f=0 to 10
checklag()
uo.waittargettile('1341',i,j,mz) 
uo.useobject(pickaxe)
if waitforore()==1 then
return
endif
next
endsub

sub waitforore()
var n
for n=0 to 50
if uo.injournal('no ore here|location|far away|in rock|You have been revealed|You put') then
return 1
endif
if uo.injournal('but fail') then
return
endif
wait(500)
next
endsub
Не быть жадным - уже богатство, не быть расточительным – доход.
TylllKaH
YokoInjection CodeSweeper
Ошибка "Unhandled exception in parser"
tylllkah
Posts: 243
Joined: 2012-03-20 00:32:06
Location: РФ, г. Москва

Re: Мининг хепл пжл

Post by tylllkah »

ситуация стала хуже((
теперь при выгрузке, не добегая до дома пишет:
Unhandled exception in parser
Не быть жадным - уже богатство, не быть расточительным – доход.
TylllKaH
YokoInjection CodeSweeper
Ошибка "Unhandled exception in parser"
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: Мининг хепл пжл

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	= '0x0F39'
	VAR Shovel2	= '0x0F3A'
	VAR Pickaxe1	= '0x0E85'
	VAR Pickaxe2	= '0x0E86'
	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("%|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("%|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
Просто сейчас немного некогда разбирать твой скрипт. Попробуй сравнить с тем что я дал. Если проблема останется что позже либо я либо ктонибудь еще займется твоим скриптом.
tylllkah
Posts: 243
Joined: 2012-03-20 00:32:06
Location: РФ, г. Москва

Re: Мининг хепл пжл

Post by tylllkah »

решил проблему, теперь вышебает только контрол Unhandled exception in parser

Code: Select all

sub Control()
repeat
if uo.life < 1 then
uo.msg('\w Kot: Я МЁРТВ!')
uo.msg('\w Rekoshet: Я МЁРТВ!')
uo.exec('terminate Mining')
wait(1000)
Resurrector()
wait(500)
go(4810,3637, 0)
wait(200)
go(4809,3641, 0)
wait(200)
loottrup()
wait(100)
uo.exec('exec Mining')
#end if
else
if uo.InJournal('OOPS !!!')then
uo.msg('\w Kot: ЭЛЕМЕНТ!')
uo.msg('\w Rekoshet: ЭЛЕМЕНТ!')
wait(2000)
end if
end if
wait(500)
until uo.InJournal('Бл###')
end sub 
Не быть жадным - уже богатство, не быть расточительным – доход.
TylllKaH
YokoInjection CodeSweeper
Ошибка "Unhandled exception in parser"
Post Reply