Подправьте плиз скрипт на мининг.

Ask for scripts here

Moderators: Murderator+, Murderator

Millerbeer
Posts: 247
Joined: 2008-09-12 05:07:34

Post by Millerbeer »

внизу экрана, в трее, на значке инжи твои координаты, вот и скинь координаты всех точек, с которых ты копаешь
Jekaaa
Posts: 89
Joined: 2008-12-12 04:30:22

Post by Jekaaa »

Ок, щас скину =)
Jekaaa
Posts: 89
Joined: 2008-12-12 04:30:22

Post by Jekaaa »

368, 1438
1807, 1031
1368, 2721
Millerbeer
Posts: 247
Joined: 2008-09-12 05:07:34

Post by Millerbeer »

нифига у тебя расстояния между точками, я имел ввиду координаты точек в одной пещере
Jekaaa
Posts: 89
Joined: 2008-12-12 04:30:22

Post by Jekaaa »

Ой, щас все сделаю =)
Jekaaa
Posts: 89
Joined: 2008-12-12 04:30:22

Post by Jekaaa »

356 1461 вход
357 1438 примерно середина дальше поворот на право
389 1436 конец

Милер и еще, когда я вокруг себя копал иногда поподались предметы рядом он пробовал их копать (чернату в шахте, декоротивные камни и тп) так вот когда он 1 раз это дерьмо капнет скрипт слетает(надо запускать заного, он думает как буд-то он все выкапал)
Last edited by Jekaaa on 2009-03-15 19:51:35, edited 1 time in total.
Millerbeer
Posts: 247
Joined: 2008-09-12 05:07:34

Post by Millerbeer »

Code: Select all

sub Mining_Carve()
var i
dim x[3],y[3]
x[0]=356
y[0]=1461
x[1]=357
y[1]=1438
x[2]=389
y[2]=1436
    repeat
       for i=0 to 2
             walkn(x[i],y[i],' ')
             mining()
       next
    until uo.weight>=uo.str*4
endsub
sub Mining() 
   var x,y 
        for x=-2 to 2 
           for y=-2 to 2 
                 if x==0 and y==0 then 
                      wait(500) 
                 else 
                      uo.deletejournal() 
                      uo.waittargettile('0',str(uo.getx('self')+x),str(uo.gety('self')+y),'0') 
                      uo.usetype('NPF') 
                             repeat 
                                   wait(300) 
                             until uo.injournal('far away|no more|nothing here') 
                 endif 
            next 
      next 
endsub
############################## 
# 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! 
# serial - Serial of target or "" - string 
# walkwait - delay after keypress 
# Example: 
# WalkN(2080,2113,'') - go to coordinates 
# WalkN(0,0,'0x12345678') - go to target position 
#-------------------------------------------------------------- 
sub WalkN(x,y,Target) 
   VAR i,StepSucess 
   VAR dx,dy,Exit=0 
   While Exit<>1 
      If Target<>"" Then 
         dx=UO.GetX(Target)-UO.GetX() 
         dy=UO.GetY(Target)-UO.GetY() 
         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 Target<>"" AND uo.GetDistance(Target)<=3 then          
         Exit=1 
      endif 
      If dx<>0 AND dy<>0 Then 
         If dx>0 AND dy>0 Then 
            StepSucess=Go(3,40,300) ;SE - DownArrow 
            If StepSucess==-1 Then 
               StepSucess=Go(7,38,300) ;WN - UpArrow 
               StepSucess=Go(1,39,300) ;NE - RightArrow 
               If StepSucess==-1 Then 
                  StepSucess=Go(5,37,300) ;SW - LeftArrow 
               Endif 
            Endif 
         Endif 
         If dx>0 AND dy<0 Then 
            StepSucess=Go(1,39,300) ;NE - RightArrow 
            If StepSucess==-1 Then 
               StepSucess=Go(5,37,300) ;SW - LeftArrow 
               StepSucess=Go(3,40,300) ;SE - DownArrow 
               If StepSucess==-1 Then 
                  StepSucess=Go(7,38,300) ;WN - UpArrow 
               Endif 
            Endif 
         Endif 
         If dx<0 AND dy>0 Then 
            StepSucess=Go(5,37,300) ;SW - LeftArrow 
            If StepSucess==-1 Then 
               StepSucess=Go(1,39,300) ;NE - RightArrow 
               StepSucess=Go(7,38,300) ;WN - UpArrow 
               If StepSucess==-1 Then 
                  StepSucess=Go(3,40,300) ;SE - DownArrow 
               Endif 
            Endif 
         Endif 
         If dx<0 AND dy<0 Then 
            StepSucess=Go(7,38,300) ;WN - UpArrow 
            If StepSucess==-1 Then 
               StepSucess=Go(3,40,300) ;SE - DownArrow 
               StepSucess=Go(5,37,300) ;SW - LeftArrow 
               If StepSucess==-1 Then 
                  StepSucess=Go(1,39,300) ;NE - RightArrow 
               Endif 
            Endif 
         Endif 
      Endif 
      If dx<>0 AND dy==0 Then 
         If dx>0 Then 
            StepSucess=Go(2,34,300) ;E - PgDown 
            If StepSucess==-1 Then 
               StepSucess=Go(3,40,300) ;SE - DownArrow 
               If StepSucess==-1 Then 
                  StepSucess=Go(1,39,300) ;NE - RightArrow 
               Endif 
               StepSucess=Go(2,34,300) ;E - PgDown 
            Endif 
         Endif 
         If dx<0 Then 
            StepSucess=Go(6,36,300) ;W - Home 
            If StepSucess==-1 Then 
               StepSucess=Go(7,38,300) ;WN - UpArrow 
               If StepSucess==-1 Then 
                  StepSucess=Go(5,37,300) ;SW - LeftArrow 
               Endif 
               StepSucess=Go(6,36,300) ;W - Home 
            Endif 
         Endif 
      Endif 
      If dx==0 AND dy<>0 Then 
         If dy>0 Then 
            StepSucess=Go(4,35,300) ;S - End 
            If StepSucess==-1 Then 
               StepSucess=Go(3,40,300) ;SE - DownArrow 
               If StepSucess==-1 Then 
                  StepSucess=Go(5,37,300) ;SW - LeftArrow 
               Endif 
               StepSucess=Go(4,35,300) ;S - End 
            Endif 
         Endif 
         If dy<0 Then 
            StepSucess=Go(0,33,300) ;N - PgUp 
            If StepSucess==-1 Then 
               StepSucess=Go(1,39,300) ;NE - RightArrow 
               If StepSucess==-1 Then 
                  StepSucess=Go(7,38,300) ;WN - UpArrow 
               Endif 
               StepSucess=Go(0,33,300) ;N - PgUp 
            Endif 
         Endif 
      Endif 
   Wend 
end sub 

sub Go(dir,key,walkwait) 
   VAR x,y, OldDir 
   x=UO.GetX() 
   y=UO.GetY() 
   OldDir=UO.GetDir() 
   If UO.GetDir()<>dir Then 
      UO.Press(key) 
      wait(walkwait) 
      If UO.GetDir()<>dir Then 
         CheckLag() 
      Endif 
   Endif 
   UO.Press(key) 
   wait(walkwait) 
   If x==UO.GetX() AND y==UO.GetY() Then 
      CheckLag() 
   Endif 
   If x==UO.GetX() AND y==UO.GetY() AND OldDir<>UO.GetDir() Then 
      UO.Press(key) 
      wait(walkwait) 
   Endif 
   If x==UO.GetX() AND y==UO.GetY() Then 
      CheckLag() 
   Endif 
   If x==UO.GetX() AND y==UO.GetY() Then 
      UO.Print("Zasada!") 
      return -1 
   Else 
      return 1 
   Endif 
end sub 
Sub Checklag()
	deljournal('a backpack')
	uo.click('backpack')
	repeat
		wait(50)
	until uo.injournal('a backpack')
endsub
Sub deljournal(msg) 
	while uo.injournal(msg) 
		uo.setjournalline(uo.injournal(msg)-1,"") 
	wend 
endsub
Jekaaa
Posts: 89
Joined: 2008-12-12 04:30:22

Post by Jekaaa »

Ходит копает аж глаз радуется! Милер спасибо тебе огромное!!!
Millerbeer
Posts: 247
Joined: 2008-09-12 05:07:34

Post by Millerbeer »

а что пишется в журнале, когда копнёшь черноту или другую фигню?

Try mining in rock ???
Jekaaa
Posts: 89
Joined: 2008-12-12 04:30:22

Post by Jekaaa »

Он на середине пещеры застрявает =( и почему то ходит постоянно в лево =)
Millerbeer
Posts: 247
Joined: 2008-09-12 05:07:34

Post by Millerbeer »

это уже особенности ходилки, ходилка не моя, не тестировал :)

так чего пишет если черноту копнёшь или камень декоративный???
Jekaaa
Posts: 89
Joined: 2008-12-12 04:30:22

Post by Jekaaa »

Try mining in rock
Millerbeer
Posts: 247
Joined: 2008-09-12 05:07:34

Post by Millerbeer »

Code: Select all

sub Mining_Carve() 
var i 
dim x[3],y[3] #если массивы увеличиваешь на 1,то будет уже x[4],y[4]
x[0]=356 
y[0]=1461 
x[1]=357 
y[1]=1438 
x[2]=389 
y[2]=1436
x[3]=           #и сюда вбиваешь х и у ещё одной точки, понятно?
y[3]= 
    repeat 
       for i=0 to 2 #и тут цикл уже будет for i=0 to 3
             smartwalk(x[i],y[i]) 
             mining() 
       next 
    until uo.weight>=uo.str*4 
endsub 
sub Mining() 
   var x,y 
        for x=-2 to 2 
           for y=-2 to 2 
                 if x==0 and y==0 then 
                      wait(500) 
                 else 
                      uo.deletejournal() 
                      uo.waittargettile('0',str(uo.getx('self')+x),str(uo.gety('self')+y),'0') 
                      uo.usetype('NPF') 
                             repeat 
                                   wait(300) 
                             until uo.injournal('far away|no more|nothing here|in rock') 
                 endif 
            next 
      next 
endsub 
Sub Checklag() 
   deljournal('a backpack') 
   uo.click('backpack') 
   repeat 
      wait(50) 
   until uo.injournal('a backpack') 
endsub 
Sub deljournal(msg) 
   while uo.injournal(msg) 
      uo.setjournalline(uo.injournal(msg)-1,"") 
   wend 
endsub
Sub st(x,y,stepdelay)
	var xn=uo.getx('self'),yn=uo.gety('self'),xp,yp
		if uo.getdir('self')<>x then
			uo.press(y)
			wait(100)
			checklag()
		endif
	uo.press(y)
	wait(stepdelay)
	checklag()
	xp=uo.getx('self')
	yp=uo.gety('self')
		if xn==xp and yn==yp then
			uo.press(y)
			wait(stepdelay)
			checklag()
			xp=uo.getx('self')
			yp=uo.gety('self')
		endif
		if xn==xp and yn==yp then
			uo.press(y)
			wait(stepdelay)
			checklag()
			xp=uo.getx('self')
			yp=uo.gety('self')
		endif
		if xn==xp and yn==yp then
			return 0
		else
			return uo.getdir('self')+1
		endif	
endsub
#Millerbeer 2009
#моя  ходилка типа с зачатками интеллекта :-)
Sub SmartWalk(xk,yk)
	var xn,yn,stepdelay,gon,tempx,tempy,i,z,q,m,count='z',flag=0,prec=1;prec-точность с какой надо подходить к клетке
	dim sx[4], sy[4], px[100], py[100]
		repeat
			xn=uo.getx('self')
			yn=uo.gety('self')
			stepdelay=200
				if xn>xk && yn>yk then
					gon=st(7,38,stepdelay)
				endif
				if xn>xk && yn==yk then
					gon=st(6,36,stepdelay)
				endif
				if xn>xk && yn<yk then
					gon=st(5,37,stepdelay)
				endif
				if xn<xk && yn>yk then
					gon=st(1,39,stepdelay)
				endif
				if xn<xk && yn==yk then
					gon=st(2,34,stepdelay)
				endif
				if xn<xk && yn<yk then
					gon=st(3,40,stepdelay)
				endif
				if xn==xk && yn>yk then
					gon=st(0,33,stepdelay)
				endif
				if xn==xk && yn<yk then
					gon=st(4,35,stepdelay)
				endif
				if xn==xk && yn==yk then
	        				uo.print('Шеф, я на месте!!!')
	        				return
				endif
				if gon==0 && dist(xn,yn,xk,yk)==1 then
					uo.print('Сорри, шеф, малость недошёл!!!')
					return
				endif
				if gon==0 && dist(xn,yn,xk,yk)>1 then
					repeat
							if count=='z' then
								count=0
								px[count]=uo.getx('self')
								py[count]=uo.gety('self')
							endif
							if count>=0 then
								z=0
									for i=0 to count
										if uo.getx('self')==px[i] && uo.gety('self')==py[i] then
											z=1
										endif
									next
									if z==0 then
										count=count+1
											if count==101 then
												count=0
											endif
										px[count]=uo.getx('self')
										py[count]=uo.gety('self')
									endif
							endif
						sx[0]=uo.getx('self')
						sy[0]=uo.gety('self')-1
						sx[1]=uo.getx('self')+1
						sy[1]=uo.gety('self')
						sx[2]=uo.getx('self')
						sy[2]=uo.gety('self')+1
						sx[3]=uo.getx('self')-1
						sy[3]=uo.gety('self')
							for i=0 to 2
								for z=0 to 2
									if dist(sx[z],sy[z],xk,yk) > dist(sx[z+1],sy[z+1],xk,yk) then
										tempx=sx[z+1]
										tempy=sy[z+1]
										sx[z+1]=sx[z]
										sy[z+1]=sy[z]
										sx[z]=tempx
										sy[z]=tempy
									endif
								next
							next
							if count>=0 then
								i=0
								q=0
									repeat
										for z=0 to count
											if sx[i]==px[z] && sy[i]==py[z] then
												tempx=sx[i]
												tempy=sy[i]
													for m=i to 2
														sx[m]=sx[m+1]
														sy[m]=sy[m+1]
													next
												sx[3]=tempx
												sy[3]=tempy
												q=q+1
												flag=1
											endif
										next
										if flag==0 then
											i=i+1
										else
											flag=0
										endif
									until i>=3 || q>=3
							endif
						i=0
							repeat
								tempx=uo.getx('self')
								tempy=uo.gety('self')
								if tempx>sx[i] && tempy==sy[i] then
									gon=st(6,36,stepdelay)
								else
									if tempx<sx[i] && tempy==sy[i] then
										gon=st(2,34,stepdelay)
									else
										if tempx==sx[i] && tempy>sy[i] then
											gon=st(0,33,stepdelay)
										else
											if tempx==sx[i] && tempy<sy[i] then
												gon=st(4,35,stepdelay)
											else
												if tempx==xk && tempy==yk then
	        												uo.print('Шеф, я на месте!!!')
	        												return
												else
													if gon==0 && dist(sx[i],sy[i],xk,yk)==1 then
														uo.print('Сорри, шеф, недошёл!!!')
														return
													endif
												endif
											endif
										endif
									endif
								endif
								i=i+1
							until gon || i>3
					until dist(uo.getx('self'),uo.gety('self'),xk,yk)<=1
				endif
		until dist(uo.getx('self'),uo.gety('self'),xk,yk)<=prec
endsub
Sub Dist(x1,y1,x2,y2)
	var dx,dy
		if x1-x2 > 0 then
			dx=x1-x2
		else
			if x1-x2 < 0 then
				dx=x2-x1
			else
				dx=0
			endif
		endif
		if y1-y2 > 0 then
			dy=y1-y2
		else
			if y1-y2 < 0 then
				dy=y2-y1
			else
				dy=0
			endif
		endif
		if dx>=dy then
			return dx
		else
			return dy
		endif
endsub
Last edited by Millerbeer on 2009-03-16 20:42:23, edited 2 times in total.
Millerbeer
Posts: 247
Joined: 2008-09-12 05:07:34

Post by Millerbeer »

в таком варианте попробуй
Jekaaa
Posts: 89
Joined: 2008-12-12 04:30:22

Post by Jekaaa »

Все норм работает только ходит постоянно на лево =)
Millerbeer
Posts: 247
Joined: 2008-09-12 05:07:34

Post by Millerbeer »

ну, т.к. зрения у бота нету, дорогу он ищет путём тыканья лбом и пытается помелочи анализировать, чего он натыкал :) , а версия инжи какая у тебя? к точкам ко всем доходит или застряёт?
Jekaaa
Posts: 89
Joined: 2008-12-12 04:30:22

Post by Jekaaa »

застревает =) Версия 710.16>6.0.1.6
Millerbeer
Posts: 247
Joined: 2008-09-12 05:07:34

Post by Millerbeer »

значь точек поольше задай, чтоб он поворот проходил, соответственно массивы увеличь
Jekaaa
Posts: 89
Joined: 2008-12-12 04:30:22

Post by Jekaaa »

В скрипте укажи плиз где это сделать =)
Millerbeer
Posts: 247
Joined: 2008-09-12 05:07:34

Post by Millerbeer »

показал в скрипте
Post Reply