Ох, теперь у меня новая проблема. Решил податься в горе-минера. Но вот беда, скрипт не очень хороший. Я понимаю что тут никто за меня его дописывать не будет, поэтому прошу дать мне хотя-бы наводку что и как делать.
Скрипт работает так - копает, ходит по шахте, когда макс. вес - относит в сундук около шахты, и обратно копать.
А проблема в том, что когда он отнес в сундук, и идет копать, то копает он не с того места где остановился, а с начала. Да и когда он приходит на начало, стоит еще минуты две ничего не делая.
Code: Select all
Sub tohome()
Go_To(3662, 2181, 0) # Как пройти к сундуку из шахты (А)
Go_To(3662, 2204, 0) # Как пройти к сундуку из шахты (В)
wait(500)
unloadore()#Выгружаемся
wait(500)
Go_To(3662, 2204, 0) # Как пройти в шахту от сундука (В)
Go_To(3662, 2181, 0) # Как пройти в шахту от сундука (А)
Go_To(3662, 2181, 0) # Это первая точка копания (А)
wait(500)
end sub
Sub unloadore()
VAR TempX,TempY,i,Exit, Exit1, ConTainer, j
VAR Index=14
DIM Ore[5]
TempX=UO.GetX()
TempY=UO.GetY()
Ore[0]=0x19B9
Ore[1]=0x19B7
Ore[2]=0x19BA
Ore[3]=0x19B8
Ore[4]=0x0F29
For i=0 to 4
Exit=0
repeat
UO.FindType(Ore[i])
if UO.GetQuantity('finditem')>0 then
Exit1=0
j=0
UO.MoveItem('finditem',0,"0x4003BADC")#ID сундука,куда складывать руду
wait(1000)
Else
Exit=1
endif
until Exit==1
Next
end sub
sub main()
VAR i
while 1==1
Go_To(3662, 2181, 0)#Это первая точка копания
min()
Go_To(3659, 2175, 0)#Вторая точка копания
min()
Go_To(3659, 2172, 0)#И.Т.Д.
min()
Go_To(3659, 2169, 0)
min()
Go_To(3659, 2166, 0)
min()
Go_To(3659, 2163, 0)
min()
Go_To(3659, 2160, 0)
min()
Go_To(3659, 2157, 0)
min()
Go_To(3656, 2155, 0)
min()
Go_To(3656, 2158, 0)
min()
Go_To(3656, 2161, 0)
min()
Go_To(3656, 2164, 0)
min()
Go_To(3656, 2167, 0)
min()
Go_To(3656, 2170, 0)
min()
Go_To(3656, 2173, 0)
min()
Go_To(3656, 2176, 0)
min()
Go_To(3656, 2179, 0)
min()
Go_To(3653, 2180, 0)
min()
Go_To(3653, 2177, 0)
min()
Go_To(3653, 2174, 0)
min()
wend
end sub
Sub min()
var x,y,z
VAR LastTimer
VAR ms1 = "There is nothing here to mine for."
VAR ms2 = "You can't use"
VAR ms3 = "Вы переместили"
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"
VAR ms10= "Вы не смогли"
VAR ms11= "You cannot mine"
z=UO.GetZ("self")
for y=-2 to 2
for x=-2 to 2
UO.Print(str(x)+" "+str(y))
if uo.weight > 400 then #Вес при котором идем домой
tohome()
endif
repeat
uo.deletejournal()
UO.WaitTargetTile("1341",STR(UO.GetX()+x),STR(UO.GetY()+Y),str(z))
UO.UseType('0x0E85')
LastTimer=UO.Timer()
repeat
wait(300)
until UO.InJournal(ms1) OR UO.InJournal(ms3) OR UO.InJournal(ms4) OR UO.InJournal(ms5) OR UO.InJournal(ms7) OR UO.InJournal(ms9) OR UO.InJournal(ms10) OR UO.InJournal(ms11) OR UO.Timer()>LastTimer+200
if UO.InJournal(ms3) then
else
endif
until UO.InJournal(ms2) OR UO.InJournal(ms1) OR UO.InJournal(ms5) OR UO.InJournal(ms6) OR UO.InJournal(ms7) OR UO.InJournal(ms9) OR UO.InJournal(ms11)
next
next
end sub
Sub Step(x,y,mx,my,forstep)
if uo.GetX('self') <> x then
if uo.GetY('self') <> y then
if mx<0 then
if my<0 then
uo.Press(40)
wait(forstep)
else
uo.Press(39)
wait(forstep)
end if
else
if my<0 then
uo.Press(37)
wait(forstep)
else
uo.Press(38)
wait(forstep)
end if
end if
else
if mx<0 then
uo.Press(34)
wait(forstep)
else
uo.Press(36)
wait(forstep)
end if
end if
else
if my<0 then
uo.Press(35)
wait(forstep)
else
uo.Press(33)
wait(forstep)
end if
end if
end sub
Sub Go_To(x,y,abc)
var mx,my,fx,fy
var xx=x
var yy=y
var DistX=0
var DistY=1
var forstep=300
repeat
mx=uo.GetX('self')-x
my=uo.GetY('self')-y
fx=mx+x
fy=my+y
Step(xx,yy,mx,my,forstep)
until x==fx+DistX && y==fy+DistY || x==fx-DistX && y==fy+DistY || x==fx+DistX && y==fy-DistY || x==fx-DistX && y==fy-DistY || x==fx && y==fy
end sub