Помогите пожалуйста со криптом на мининг....
Moderators: Murderator+, Murderator
-
- Posts: 13
- Joined: 2009-02-11 15:21:59
Помогите пожалуйста со криптом на мининг....
Имеется скрипт на мининг, задача данного скрипта дойти от дома до копалки, накопать инготов, далее дойти обратно до дома, переплавить руду в инги и раскидать по кучкам, которые прилочены около дома. Скрипт настроен так, что когда чар использует pickaxe скрипт направляет таргет на чара, то есть получается чар капает под себя, то есть на клетке на которой он находиться. Вопрос в следующем, как сделать так, чтобы герой копал не под себя а на 1 клетку вперед ? Уже все перепробовал, видать мозгов не хватает =( Заранее благодарен. Вот скрипт :
#При работе должна быть "отжата" кнопка NumLock
Var Pickaxe=0x0E85 # Pichaxe
Var Ore=0x19B9
Var Ingot=0x1BF2
Var Iron=0x0000
Var MoveDelay=150 # Промежуток между шагами
Var MoveNumber=1 # Количество шагов при смене дислокации
Var Ep=0.172 # Значение ширины угла хождения при определении направления. Если на пути встречаются сложные и широкие препятствия - увеличить. 0.172 - сбаланчированный.
Var FileName='c:\games\injection\mining51.dat' # В каждой строке файла тайл дерева
Sub Main()
UO.SetGlobal('process','no')
repeat
if UO.GetGlobal('process')=='no' then
GoToTile(2498,555,0,False)
GoToTile(2503,555,1,False)
GoToTile(2503,558,1,False)
UO.opendoor()
GoToTile(2503,562,1,False)
GoToTile(2516,562,1,False)
GoToTile(2516,538,1,False)
GoToTile(2529,538,1,False)
GoToTile(2529,508,1,False)
GoToTile(2525,508,1,False)
GoToTile(2525,501,1,False)
GoToTile(2552,501,1,False)
GoToTile(2552,505,1,False)
GoToTile(2558,505,1,False)
GoToTile(2558,493,1,False)
GoToTile(2565,485,1,False)
UO.DeleteJournal()
UO.Exec('exec Lumb')
endIf
Wait(3000)
until (1==0)
EndSub
Sub Lumb()
Var Tl,T,X,Y,Z,srl
var wei
UO.SetGlobal('process','yes')
Var F=File(FileName)
F.Open()
Beg:
DeleteJournal('no mine')
Tl=safecall F.Readln()
Tl=Trim(Tl)
If Tl=='File read error' Then
GoTo Ext
EndIf
T=GetNumb(Tl,0)
X=GetNumb(Tl,1)
Y=GetNumb(Tl,2)
Z=GetNumb(Tl,3)
UO.Print('next mine')
UO.Print('Tile '+Tl)
GoToTile(X,Y,1,False)
Repeat
uo.DeleteJournal()
UO.WaitTargetTile(Str(T),Str(X),Str(Y),Str(Z))
While uo.Waiting()
Emil()
If UO.Dead() Then
Ress()
UO.WarMode( 0 )
GoToTile(X,Y,1,false)
UO.WaitTargetTile(Str(T),Str(X),Str(Y),Str(Z))
Emil()
endif
WEND
repeat
Wait(1000)
If UO.Dead() Then
Ress()
UO.WarMode( 0 )
GoToTile(X,Y,1,False)
UO.WaitTargetTile(Str(T),Str(X),Str(Y),Str(Z))
Emil()
endif
#if uo.count(Ore)>170 then
wei = ( UO.Str * 4 ) - 30
if UO.Weight > wei then
GoToTile(2564,493,1,False)
GoToTile(2558,493,1,False)
GoToTile(2558,505,1,False)
GoToTile(2552,505,1,False)
GoToTile(2552,501,1,False)
GoToTile(2525,501,1,False)
GoToTile(2525,508,1,False)
GoToTile(2529,508,1,False)
GoToTile(2529,538,1,False)
GoToTile(2516,538,1,False)
GoToTile(2516,562,1,False)
GoToTile(2503,562,1,False)
GoToTile(2503,560,1,False)
UO.opendoor()
GoToTile(2503,558,1,False)
GoToTile(2503,555,1,False)
GoToTile(2498,555,1,False)
wait(1000)
Plav()
wait(1000)
Exist()
wait(1000)
GoToTile(2498,555,1,False)
GoToTile(X,Y,1,False)
UO.WaitTargetTile(Str(T),Str(X),Str(Y),Str(Z))
UO.UseObject(UO.ObjAtLayer('Rhand'))
endif
Until UO.InJournal("There is no ore here to mine.") or UO.InJournal("There is no ore here to mine")
Until UO.InJournal("There is no ore here to mine.") or UO.InJournal("There is no ore here to mine")
If UO.InJournal("There is no ore here to mine.") or UO.InJournal("There is no ore here to mine") then
Goto Beg
EndIf
Ext:
F.Close()
UO.SetGlobal('process','no')
EndSub
###############################################################
#Определение что есть ж)
###############################################################
sub Exist()
#############Iron
If UO.Count(0x1BF2, 0x0000) > 0 Then
ProDrop(0x1BF2, 0x0000)
EndIF
############Rasty
If UO.Count(0x1BF2,0x0750) > 0 Then
ProDrop(0x1BF2,0x0750)
EndIF
############Bronze
If UO.Count(0x1BF2, 0x0488) > 0 Then
ProDrop(0x1BF2, 0x0488)
EndIF
############Old Copper
If UO.Count(0x1BF2, 0x0949) > 0 Then
ProDrop(0x1BF2, 0x0949)
EndIF
############Dull Copper
If UO.Count(0x1BF2, 0x060A) > 0 Then
ProDrop(0x1BF2, 0x060A)
EndIF
############Copper
If UO.Count(0x1BF2, 0x0641) > 0 Then
ProDrop(0x1BF2, 0x0641)
EndIF
############Pirit
If UO.Count(0x1BF2, 0x09EE) > 0 Then
ProDrop(0x1BF2, 0x09EE)
EndIF
############Silver
If UO.Count(0x1BF8, 0x0482) > 0 Then
ProDrop(0x1BF8, 0x0482)
EndIF
############Gold
If UO.Count(0x1BEC, 0x0000) > 0 Then
ProDrop(0x1BEC, 0x0000)
EndIF
############Shadow
If UO.Count(0x1BF2, 0x0770) > 0 Then
ProDrop(0x1BF2, 0x0770)
EndIF
############Verit
If UO.Count(0x1BF2, 0x0947) > 0 Then
ProDrop(0x1BF2, 0x0947)
EndIF
############Agapit
If UO.Count(0x1BF2, 0x0400) > 0 Then
ProDrop(0x1BF2, 0x0400)
EndIF
############Blood
If UO.Count(0x1BF2, 0x04C2) > 0 Then
ProDrop(0x1BF2, 0x04C2)
EndIF
############Azurit
If UO.Count(0x1BF2, 0x04DF) > 0 Then
ProDrop(0x1BF2, 0x04DF)
EndIF
############Mithril ore
If UO.Count(0x19B9, 0x052D) > 0 Then
ProDrop(0x19B9, 0x052D)
EndIF
############Valorite ore
If UO.Count(0x19B9, 0x0515) > 0 Then
ProDrop(0x19B9, 0x0515)
EndIF
############Winter ore
If UO.Count(0x19B9, 0x0481) > 0 Then
ProDrop(0x19B9, 0x0481)
EndIF
############Black Rock Ore
If UO.Count(0x19B9,0x0455) > 0 Then
ProDrop(0x19B9,0x0455)
EndIF
############Ambers
If UO.Count(0x0F25,0x0000) > 0 Then
ProDrop(0x0F25,0x0000)
EndIF
end sub
###############################################################
#Умный дроп
###############################################################
sub ProDrop(T,C)
UO.FindType(T,C,'backpack')
Var b = UO.GetSerial("finditem")
UO.FindType(T,C,'ground')
Var g = UO.GetSerial("finditem")
UO.MoveItem(b, "0", g,str(uo.getx(g)),str(uo.gety(g)),"0")
Wait(500)
If Uo.Count(T,C) > 0 Then
Clear(T,C)
endIF
end sub
###############################################################
#Конец умного дропа
###############################################################
###############################################################
#Умный дроп 2
###############################################################
sub ProDrop2(T,C)
UO.FindType(T,C,'backpack')
If C < 0 Then
C = UO.GetColor('finditem')
endif
Var b = UO.GetSerial('finditem')
UO.FindType(T,C,'ground')
Var g = UO.GetSerial('finditem')
UO.MoveItem(b, '0', g,str(uo.getx(g)),str(uo.gety(g)),'0')
Wait(500)
If Uo.Count(T,C) > 0 Then
Clear(T,C)
endIF
end sub
###############################################################
#Конец умного дропа 2
###############################################################
Sub GetNumb(C,I)
var J,T,K
J=0
K=1
While K>0
J=J+1
If (Mid(C,J,1)==' ') Or (J>=Len(C)-1) Then
If I==0 Then
T=Val(Left(C,J))
Else
T=GetNumb(Right(C,Len(C)-J-1),I-1)
EndIf
K=0
EndIf
wend
UO.Print(T)
return T
endsub
Sub Perp(Dir)
Var D
D=Dir
If Dir==1 Then
D=3
EndIf
If Dir==2 Then
D=4
EndIf
If Dir==3 Then
D=-1
EndIf
If Dir==4 Then
D=-2
EndIf
If Dir==-1 Then
D=-3
EndIf
If Dir==-2 Then
D=-4
EndIf
If Dir==-3 Then
D=1
EndIf
If Dir==-4 Then
D=2
EndIf
RETURN D
EndSub
Sub MoveOnce(Dir,Del,Rev)
Var Num
If Rev Then
Num=MoveNumber+1
Else
Num=MoveNumber
EndIf
If (Num>0) and (Dir<>0) Then
If Dir==1 Then
UO.Press(38,Num,Del)
EndIf
If Dir==2 Then
UO.Press(33,Num,Del)
EndIf
If Dir==3 Then
UO.Press(39,Num,Del)
EndIf
If Dir==4 Then
UO.Press(34,Num,Del)
EndIf
If Dir==-1 Then
UO.Press(40,Num-1,Del)
EndIf
If Dir==-2 Then
UO.Press(35,Num,Del)
EndIf
If Dir==-3 Then
UO.Press(37,Num,Del)
EndIf
If Dir==-4 Then
UO.Press(36,Num,Del)
EndIf
If Rev Then
If Dir<>-1 Then
UO.Press(40,1,Del)
EndIf
EndIf
EndIf
EndSub
Sub GetQDir(x,y)
Var J=0
If X==0 Then
J=1
Else
If (Y/X)<ep Then
J=3
Else
If (X/Y)<ep Then
J=1
Else
J=2
EndIf
EndIf
EndIf
RETURN J
EndSub
sub GetDir(myx,myy,ox,oy)
Var I,J
J=0
Var X=ox-myx
Var Y=oy-myy
I=GetQDir(Abs(X),Abs(Y))
If X>=0 Then
If Y>=0 Then
If I==1 Then
J=-2
Else
If I==2 Then
J=-1
Else
If I==3 Then
J=4
EndIf
EndIf
EndIf
Else
If I==1 Then
J=2
Else
If I==2 Then
J=3
Else
If I==3 Then
J=4
EndIf
EndIf
EndIf
EndIf
Else
If Y>=0 Then
If I==1 Then
J=-2
Else
If I==2 Then
J=-3
Else
If I==3 Then
J=-4
EndIf
EndIf
EndIf
Else
If I==1 Then
J=2
Else
If I==2 Then
J=1
Else
If I==3 Then
J=-4
EndIf
EndIf
EndIf
EndIf
EndIf
RETURN J
endsub
sub abs(a)
Var b
If a<0 Then
b=-a
Else
b=a
endif
return b
endsub
Sub PermResend()
Var Mn=4
Repeat
# UO.Resend()
Wait(MoveDelay*Mn)
Until (1>2)
EndSub
sub max(A,B)
Var C
If A>B Then
C=A
Else
C=B
EndIf
Return C
EndSub
sub GetDistance(X,Y)
return max(abs(X-uo.getx()),abs(Y-uo.gety()))
endsub
sub GoToTile(OX,OY,N,S)
var myx, myy, MD, J
var Lx1 ,Ly1
var Lx2 ,Ly2
var Sx ,Sy
var T
var Des=N
J=1
MD=MoveDelay*1.5
myx=uo.getx()
myy=uo.gety()
MoveOnce(GetDir(uo.getx(),uo.gety(),ox,oy),MD,False)
Sx=0
Sy=0
Lx1=uo.getx()/2
Ly1=uo.gety()/2
Lx2=Lx1/2
Ly2=Ly1/2
T=UO.Timer()
If (GetDistance(ox,oy)<>N) or ((not S) and GetDistance(ox,oy)>N) Then
UO.Exec('exec PermResend')
EndIf
While ((GetDistance(ox,oy)<>N) or ((not S) and GetDistance(ox,oy)>N)) and (OX>=0) and (OY>=0)
If ((UO.Timer()-T)*15>MoveDelay) Then
T=UO.Timer()
# UO.Print(Str(uo.getx())+' '+Str(uo.gety())+' '+Str(ox)+' '+Str(oy)+' '+Str(GetDir(uo.getx(),uo.gety(),ox,oy))+' '+Str(T))
Lx2=Lx1
Ly2=Ly1
Lx1=myx
Ly1=myy
myx=uo.getx()
myy=uo.gety()
endIf
MD=MoveDelay
If ((OX-uo.getx())*(OX-uo.getx())+(OY-uo.gety())*(OY-uo.gety())>0) Then
MD=MD*3/GetDistance(ox,oy)
EndIf
wait(MD)
If GetDistance(OX,OY)>Des Then
MoveOnce(GetDir(uo.GetX(),uo.GetY(),ox,oy),MD,False)
Else
If S Then
If GetDistance(OX,OY)<Des Then
If GetDistance(OX,OY)<>0 Then
MoveOnce(GetDir(ox,oy,uo.GetX(),uo.GetY()),MD,False)
Else
MoveOnce(GetDir(uo.GetX(),uo.GetY(),Lx2,Ly2),MD,False)
EndIf
EndIf
EndIf
EndIf
If GetDistance(OX,OY)<>Des Then
If (Lx2==uo.getx()) and (Ly2==uo.gety()) Then
If (Sx<>uo.getx()) or (Sy<>uo.gety()) Then
J=1
EndIf
J=J+1
UO.Resend()
Sx = uo.getx()
Sy = uo.gety()
Stun(ox,oy,J)
EndIf
EndIf
Wend
UO.Exec('terminate PermResend')
endsub
Sub Stun(X,Y,N)
Var I
Var myx
Var myy
myx = uo.getx()
myy = uo.gety()
For I=1 to N
MoveOnce(perp(GetDir(myx,myy,x,y)),MoveDelay,False)
Next
Wait(MoveDelay)
UO.Resend()
If (myx==uo.getx()) and (myy==uo.gety()) Then
For I=1 to N
MoveOnce(-perp(GetDir(myx,myy,x,y)),MoveDelay,False)
Next
Wait(MoveDelay)
UO.Resend()
EndIf
If (myx==uo.getx()) and (myy==uo.gety()) Then
For I=1 to N
MoveOnce(-GetDir(myx,myy,x,y),MoveDelay,False)
Next
Wait(MoveDelay)
Stun(x,y,N)
EndIf
EndSub
Sub DeleteJournal(What)
Var T,J
J=False
If UO.InJournal(What) Then
J=True
UO.DeleteJournal()
EndIf
RETURN J
EndSub
sub Plav()
UO.Set('finddistance','2')
UO.FindType(0x0FB1,-1,'ground')
If UO.FindCount() <> 0 Then
repeat
UO.FindType(0x19B9)
IF UO.FindCount() > 0 Then
If UO.GetColor('finditem') == '0x0455' Then
ProDrop(0x19B9,0x0455)
else
if UO.GetColor('finditem') == '0x052D' Then
ProDrop(0x19B9, 0x052D)
else
if UO.GetColor('finditem') == '0x0515' Then
ProDrop(0x19B9, 0x0515)
else
if UO.GetColor('finditem') == '0x0481' Then
ProDrop(0x19B9, 0x0481)
else
UO.UseObject('finditem')
wait(1200)
end If
end if
end if
end if
EndIf
until UO.FindCount() == 0
UO.Print("-=-= END =-=-")
else
UO.Print("Forge not found")
endIf
end sub
sub count()
UO.Print(str(UO.Count(ore)))
end sub
Sub BS()
#0x1B7B - Metal shield
#0x13BF - chainmail tunic
#0x1415 - грудина
while true
UO.FindType(0x1415, -1,'ground')
wait(2000)
If UO.FindCount() > 0 Then
uo.waittargetobject('finditem')
Uo.UseType(0x0FBB)
wait(5000)
endif
WEND
end sub
sub Emil()
IF (UO.GetGraphic(UO.ObjAtLayer("Rhand"))) <> '0x0E85' Then
If UO.Count('0x0E85') > 0 Then
UO.UseType('0x0E85')
endif
else
UO.UseObject(UO.ObjAtLayer('Rhand'))
EndIf
wait(2000)
end sub
sub Clear(T,C)
Var Count = UO.Count(T,C)
UO.FindType(T,C,'backpack')
Var b = UO.GetSerial("finditem")
UO.FindType(T,C,'ground')
Var g = UO.GetSerial("finditem")
Wait(500)
UO.MoveItem(b, "0", g,str(uo.getx(g)),str(uo.gety(g)),"0")
Wait(500)
If UO.Count(T,C) == Count Then
If (UO.Count('finditem')+Count) < 60000 Then
uo.ignore('finditem')
ProDrop(T,C)
endIf
endIf
end sub
sub Ress()
While UO.Dead()
wait(1000)
UO.WarMode( 1 )
WEND
end sub
sub Count()
#UO.Print('Iron : '+Str(UO.Count(0x19B9, 0x0000)))
#UO.Print('-=-=-=-=-=-=-=-')
#UO.Print('Bronze : '+Str(UO.Count(0x19B9, 0x0488)))
#UO.Print('Rasty : '+Str(UO.Count(0x19B9, 0x0750)))
#UO.Print('-=-=-=-=-=-=-=-')
#wait(4000)
#UO.Print('-=-=-=-=-=-=-=-')
#UO.Print('Old Copper : '+Str(UO.Count(0x19B9, 0x0949)))
#UO.Print('Dull Copper : '+Str(UO.Count(0x19B9, 0x060A)))
#UO.Print('Copper : '+Str(UO.Count(0x19B9, 0x0641)))
#UO.Print('-=-=-=-=-=-=-=-')
#wait(4000)
#UO.Print('-=-=-=-=-=-=-=-')
#UO.Print('Pirit : '+Str(UO.Count(0x19B9, 0x09EE)))
#UO.Print('Silver : '+Str(UO.Count(0x19B9, 0x0482)))
#UO.Print('Shadow : '+Str(UO.Count(0x19B9, 0x0770)))
#UO.Print('Gold : '+Str(UO.Count(0x19B9, 0x04AA)))
#UO.Print('-=-=-=-=-=-=-=-')
#wait(4000)
#UO.Print('-=-=-=-=-=-=-=-')
#UO.Print('Verit : '+Str(UO.Count(0x19B9, 0x0947)))
#UO.Print('Agapit : '+Str(UO.Count(0x19B9, 0x0400)))
#UO.Print('Blood : '+Str(UO.Count(0x19B9, 0x04C2)))
#UO.Print('Azurit : '+Str(UO.Count(0x19B9, 0x04DF)))
#UO.Print('-=-=-=-=-=-=-=-')
Wait(4000)
#UO.Print('-=-=-=-=-=-=-=-')
#UO.Print('Mithril : '+Str(UO.Count(0x19B9, 0x052D)))
#UO.Print('Valorite : '+Str(UO.Count(0x19B9, 0x0515)))
#UO.Print('Winter : '+Str(UO.Count(0x19B9, 0x0481)))
#UO.Print('-=-=-=-=-=-=-=-')
#UO.Print('BlackRock : '+Str(UO.Count(0x19B9, 0x0455)))
#UO.Print('-=-=-=-=-=-=-=-')
end sub
sub play()
Var Co = 0
While true
If UO.Life < UO.Str then
If Co < 10 then
uo.playwav("D:\cap000.wav")
wait(1500)
Co = Co + 1
else
wait(60000)
Co = 0
endif
end if
wait(1000)
wend
sub Lot()
repeat
UO.FindType(0x19B9,-1,'ground')
IF UO.FindCount() > 0 Then
Uo.Grab(0,'finditem')
wait(1000)
end if
until UO.FindCount() == 0
end sub
#При работе должна быть "отжата" кнопка NumLock
Var Pickaxe=0x0E85 # Pichaxe
Var Ore=0x19B9
Var Ingot=0x1BF2
Var Iron=0x0000
Var MoveDelay=150 # Промежуток между шагами
Var MoveNumber=1 # Количество шагов при смене дислокации
Var Ep=0.172 # Значение ширины угла хождения при определении направления. Если на пути встречаются сложные и широкие препятствия - увеличить. 0.172 - сбаланчированный.
Var FileName='c:\games\injection\mining51.dat' # В каждой строке файла тайл дерева
Sub Main()
UO.SetGlobal('process','no')
repeat
if UO.GetGlobal('process')=='no' then
GoToTile(2498,555,0,False)
GoToTile(2503,555,1,False)
GoToTile(2503,558,1,False)
UO.opendoor()
GoToTile(2503,562,1,False)
GoToTile(2516,562,1,False)
GoToTile(2516,538,1,False)
GoToTile(2529,538,1,False)
GoToTile(2529,508,1,False)
GoToTile(2525,508,1,False)
GoToTile(2525,501,1,False)
GoToTile(2552,501,1,False)
GoToTile(2552,505,1,False)
GoToTile(2558,505,1,False)
GoToTile(2558,493,1,False)
GoToTile(2565,485,1,False)
UO.DeleteJournal()
UO.Exec('exec Lumb')
endIf
Wait(3000)
until (1==0)
EndSub
Sub Lumb()
Var Tl,T,X,Y,Z,srl
var wei
UO.SetGlobal('process','yes')
Var F=File(FileName)
F.Open()
Beg:
DeleteJournal('no mine')
Tl=safecall F.Readln()
Tl=Trim(Tl)
If Tl=='File read error' Then
GoTo Ext
EndIf
T=GetNumb(Tl,0)
X=GetNumb(Tl,1)
Y=GetNumb(Tl,2)
Z=GetNumb(Tl,3)
UO.Print('next mine')
UO.Print('Tile '+Tl)
GoToTile(X,Y,1,False)
Repeat
uo.DeleteJournal()
UO.WaitTargetTile(Str(T),Str(X),Str(Y),Str(Z))
While uo.Waiting()
Emil()
If UO.Dead() Then
Ress()
UO.WarMode( 0 )
GoToTile(X,Y,1,false)
UO.WaitTargetTile(Str(T),Str(X),Str(Y),Str(Z))
Emil()
endif
WEND
repeat
Wait(1000)
If UO.Dead() Then
Ress()
UO.WarMode( 0 )
GoToTile(X,Y,1,False)
UO.WaitTargetTile(Str(T),Str(X),Str(Y),Str(Z))
Emil()
endif
#if uo.count(Ore)>170 then
wei = ( UO.Str * 4 ) - 30
if UO.Weight > wei then
GoToTile(2564,493,1,False)
GoToTile(2558,493,1,False)
GoToTile(2558,505,1,False)
GoToTile(2552,505,1,False)
GoToTile(2552,501,1,False)
GoToTile(2525,501,1,False)
GoToTile(2525,508,1,False)
GoToTile(2529,508,1,False)
GoToTile(2529,538,1,False)
GoToTile(2516,538,1,False)
GoToTile(2516,562,1,False)
GoToTile(2503,562,1,False)
GoToTile(2503,560,1,False)
UO.opendoor()
GoToTile(2503,558,1,False)
GoToTile(2503,555,1,False)
GoToTile(2498,555,1,False)
wait(1000)
Plav()
wait(1000)
Exist()
wait(1000)
GoToTile(2498,555,1,False)
GoToTile(X,Y,1,False)
UO.WaitTargetTile(Str(T),Str(X),Str(Y),Str(Z))
UO.UseObject(UO.ObjAtLayer('Rhand'))
endif
Until UO.InJournal("There is no ore here to mine.") or UO.InJournal("There is no ore here to mine")
Until UO.InJournal("There is no ore here to mine.") or UO.InJournal("There is no ore here to mine")
If UO.InJournal("There is no ore here to mine.") or UO.InJournal("There is no ore here to mine") then
Goto Beg
EndIf
Ext:
F.Close()
UO.SetGlobal('process','no')
EndSub
###############################################################
#Определение что есть ж)
###############################################################
sub Exist()
#############Iron
If UO.Count(0x1BF2, 0x0000) > 0 Then
ProDrop(0x1BF2, 0x0000)
EndIF
############Rasty
If UO.Count(0x1BF2,0x0750) > 0 Then
ProDrop(0x1BF2,0x0750)
EndIF
############Bronze
If UO.Count(0x1BF2, 0x0488) > 0 Then
ProDrop(0x1BF2, 0x0488)
EndIF
############Old Copper
If UO.Count(0x1BF2, 0x0949) > 0 Then
ProDrop(0x1BF2, 0x0949)
EndIF
############Dull Copper
If UO.Count(0x1BF2, 0x060A) > 0 Then
ProDrop(0x1BF2, 0x060A)
EndIF
############Copper
If UO.Count(0x1BF2, 0x0641) > 0 Then
ProDrop(0x1BF2, 0x0641)
EndIF
############Pirit
If UO.Count(0x1BF2, 0x09EE) > 0 Then
ProDrop(0x1BF2, 0x09EE)
EndIF
############Silver
If UO.Count(0x1BF8, 0x0482) > 0 Then
ProDrop(0x1BF8, 0x0482)
EndIF
############Gold
If UO.Count(0x1BEC, 0x0000) > 0 Then
ProDrop(0x1BEC, 0x0000)
EndIF
############Shadow
If UO.Count(0x1BF2, 0x0770) > 0 Then
ProDrop(0x1BF2, 0x0770)
EndIF
############Verit
If UO.Count(0x1BF2, 0x0947) > 0 Then
ProDrop(0x1BF2, 0x0947)
EndIF
############Agapit
If UO.Count(0x1BF2, 0x0400) > 0 Then
ProDrop(0x1BF2, 0x0400)
EndIF
############Blood
If UO.Count(0x1BF2, 0x04C2) > 0 Then
ProDrop(0x1BF2, 0x04C2)
EndIF
############Azurit
If UO.Count(0x1BF2, 0x04DF) > 0 Then
ProDrop(0x1BF2, 0x04DF)
EndIF
############Mithril ore
If UO.Count(0x19B9, 0x052D) > 0 Then
ProDrop(0x19B9, 0x052D)
EndIF
############Valorite ore
If UO.Count(0x19B9, 0x0515) > 0 Then
ProDrop(0x19B9, 0x0515)
EndIF
############Winter ore
If UO.Count(0x19B9, 0x0481) > 0 Then
ProDrop(0x19B9, 0x0481)
EndIF
############Black Rock Ore
If UO.Count(0x19B9,0x0455) > 0 Then
ProDrop(0x19B9,0x0455)
EndIF
############Ambers
If UO.Count(0x0F25,0x0000) > 0 Then
ProDrop(0x0F25,0x0000)
EndIF
end sub
###############################################################
#Умный дроп
###############################################################
sub ProDrop(T,C)
UO.FindType(T,C,'backpack')
Var b = UO.GetSerial("finditem")
UO.FindType(T,C,'ground')
Var g = UO.GetSerial("finditem")
UO.MoveItem(b, "0", g,str(uo.getx(g)),str(uo.gety(g)),"0")
Wait(500)
If Uo.Count(T,C) > 0 Then
Clear(T,C)
endIF
end sub
###############################################################
#Конец умного дропа
###############################################################
###############################################################
#Умный дроп 2
###############################################################
sub ProDrop2(T,C)
UO.FindType(T,C,'backpack')
If C < 0 Then
C = UO.GetColor('finditem')
endif
Var b = UO.GetSerial('finditem')
UO.FindType(T,C,'ground')
Var g = UO.GetSerial('finditem')
UO.MoveItem(b, '0', g,str(uo.getx(g)),str(uo.gety(g)),'0')
Wait(500)
If Uo.Count(T,C) > 0 Then
Clear(T,C)
endIF
end sub
###############################################################
#Конец умного дропа 2
###############################################################
Sub GetNumb(C,I)
var J,T,K
J=0
K=1
While K>0
J=J+1
If (Mid(C,J,1)==' ') Or (J>=Len(C)-1) Then
If I==0 Then
T=Val(Left(C,J))
Else
T=GetNumb(Right(C,Len(C)-J-1),I-1)
EndIf
K=0
EndIf
wend
UO.Print(T)
return T
endsub
Sub Perp(Dir)
Var D
D=Dir
If Dir==1 Then
D=3
EndIf
If Dir==2 Then
D=4
EndIf
If Dir==3 Then
D=-1
EndIf
If Dir==4 Then
D=-2
EndIf
If Dir==-1 Then
D=-3
EndIf
If Dir==-2 Then
D=-4
EndIf
If Dir==-3 Then
D=1
EndIf
If Dir==-4 Then
D=2
EndIf
RETURN D
EndSub
Sub MoveOnce(Dir,Del,Rev)
Var Num
If Rev Then
Num=MoveNumber+1
Else
Num=MoveNumber
EndIf
If (Num>0) and (Dir<>0) Then
If Dir==1 Then
UO.Press(38,Num,Del)
EndIf
If Dir==2 Then
UO.Press(33,Num,Del)
EndIf
If Dir==3 Then
UO.Press(39,Num,Del)
EndIf
If Dir==4 Then
UO.Press(34,Num,Del)
EndIf
If Dir==-1 Then
UO.Press(40,Num-1,Del)
EndIf
If Dir==-2 Then
UO.Press(35,Num,Del)
EndIf
If Dir==-3 Then
UO.Press(37,Num,Del)
EndIf
If Dir==-4 Then
UO.Press(36,Num,Del)
EndIf
If Rev Then
If Dir<>-1 Then
UO.Press(40,1,Del)
EndIf
EndIf
EndIf
EndSub
Sub GetQDir(x,y)
Var J=0
If X==0 Then
J=1
Else
If (Y/X)<ep Then
J=3
Else
If (X/Y)<ep Then
J=1
Else
J=2
EndIf
EndIf
EndIf
RETURN J
EndSub
sub GetDir(myx,myy,ox,oy)
Var I,J
J=0
Var X=ox-myx
Var Y=oy-myy
I=GetQDir(Abs(X),Abs(Y))
If X>=0 Then
If Y>=0 Then
If I==1 Then
J=-2
Else
If I==2 Then
J=-1
Else
If I==3 Then
J=4
EndIf
EndIf
EndIf
Else
If I==1 Then
J=2
Else
If I==2 Then
J=3
Else
If I==3 Then
J=4
EndIf
EndIf
EndIf
EndIf
Else
If Y>=0 Then
If I==1 Then
J=-2
Else
If I==2 Then
J=-3
Else
If I==3 Then
J=-4
EndIf
EndIf
EndIf
Else
If I==1 Then
J=2
Else
If I==2 Then
J=1
Else
If I==3 Then
J=-4
EndIf
EndIf
EndIf
EndIf
EndIf
RETURN J
endsub
sub abs(a)
Var b
If a<0 Then
b=-a
Else
b=a
endif
return b
endsub
Sub PermResend()
Var Mn=4
Repeat
# UO.Resend()
Wait(MoveDelay*Mn)
Until (1>2)
EndSub
sub max(A,B)
Var C
If A>B Then
C=A
Else
C=B
EndIf
Return C
EndSub
sub GetDistance(X,Y)
return max(abs(X-uo.getx()),abs(Y-uo.gety()))
endsub
sub GoToTile(OX,OY,N,S)
var myx, myy, MD, J
var Lx1 ,Ly1
var Lx2 ,Ly2
var Sx ,Sy
var T
var Des=N
J=1
MD=MoveDelay*1.5
myx=uo.getx()
myy=uo.gety()
MoveOnce(GetDir(uo.getx(),uo.gety(),ox,oy),MD,False)
Sx=0
Sy=0
Lx1=uo.getx()/2
Ly1=uo.gety()/2
Lx2=Lx1/2
Ly2=Ly1/2
T=UO.Timer()
If (GetDistance(ox,oy)<>N) or ((not S) and GetDistance(ox,oy)>N) Then
UO.Exec('exec PermResend')
EndIf
While ((GetDistance(ox,oy)<>N) or ((not S) and GetDistance(ox,oy)>N)) and (OX>=0) and (OY>=0)
If ((UO.Timer()-T)*15>MoveDelay) Then
T=UO.Timer()
# UO.Print(Str(uo.getx())+' '+Str(uo.gety())+' '+Str(ox)+' '+Str(oy)+' '+Str(GetDir(uo.getx(),uo.gety(),ox,oy))+' '+Str(T))
Lx2=Lx1
Ly2=Ly1
Lx1=myx
Ly1=myy
myx=uo.getx()
myy=uo.gety()
endIf
MD=MoveDelay
If ((OX-uo.getx())*(OX-uo.getx())+(OY-uo.gety())*(OY-uo.gety())>0) Then
MD=MD*3/GetDistance(ox,oy)
EndIf
wait(MD)
If GetDistance(OX,OY)>Des Then
MoveOnce(GetDir(uo.GetX(),uo.GetY(),ox,oy),MD,False)
Else
If S Then
If GetDistance(OX,OY)<Des Then
If GetDistance(OX,OY)<>0 Then
MoveOnce(GetDir(ox,oy,uo.GetX(),uo.GetY()),MD,False)
Else
MoveOnce(GetDir(uo.GetX(),uo.GetY(),Lx2,Ly2),MD,False)
EndIf
EndIf
EndIf
EndIf
If GetDistance(OX,OY)<>Des Then
If (Lx2==uo.getx()) and (Ly2==uo.gety()) Then
If (Sx<>uo.getx()) or (Sy<>uo.gety()) Then
J=1
EndIf
J=J+1
UO.Resend()
Sx = uo.getx()
Sy = uo.gety()
Stun(ox,oy,J)
EndIf
EndIf
Wend
UO.Exec('terminate PermResend')
endsub
Sub Stun(X,Y,N)
Var I
Var myx
Var myy
myx = uo.getx()
myy = uo.gety()
For I=1 to N
MoveOnce(perp(GetDir(myx,myy,x,y)),MoveDelay,False)
Next
Wait(MoveDelay)
UO.Resend()
If (myx==uo.getx()) and (myy==uo.gety()) Then
For I=1 to N
MoveOnce(-perp(GetDir(myx,myy,x,y)),MoveDelay,False)
Next
Wait(MoveDelay)
UO.Resend()
EndIf
If (myx==uo.getx()) and (myy==uo.gety()) Then
For I=1 to N
MoveOnce(-GetDir(myx,myy,x,y),MoveDelay,False)
Next
Wait(MoveDelay)
Stun(x,y,N)
EndIf
EndSub
Sub DeleteJournal(What)
Var T,J
J=False
If UO.InJournal(What) Then
J=True
UO.DeleteJournal()
EndIf
RETURN J
EndSub
sub Plav()
UO.Set('finddistance','2')
UO.FindType(0x0FB1,-1,'ground')
If UO.FindCount() <> 0 Then
repeat
UO.FindType(0x19B9)
IF UO.FindCount() > 0 Then
If UO.GetColor('finditem') == '0x0455' Then
ProDrop(0x19B9,0x0455)
else
if UO.GetColor('finditem') == '0x052D' Then
ProDrop(0x19B9, 0x052D)
else
if UO.GetColor('finditem') == '0x0515' Then
ProDrop(0x19B9, 0x0515)
else
if UO.GetColor('finditem') == '0x0481' Then
ProDrop(0x19B9, 0x0481)
else
UO.UseObject('finditem')
wait(1200)
end If
end if
end if
end if
EndIf
until UO.FindCount() == 0
UO.Print("-=-= END =-=-")
else
UO.Print("Forge not found")
endIf
end sub
sub count()
UO.Print(str(UO.Count(ore)))
end sub
Sub BS()
#0x1B7B - Metal shield
#0x13BF - chainmail tunic
#0x1415 - грудина
while true
UO.FindType(0x1415, -1,'ground')
wait(2000)
If UO.FindCount() > 0 Then
uo.waittargetobject('finditem')
Uo.UseType(0x0FBB)
wait(5000)
endif
WEND
end sub
sub Emil()
IF (UO.GetGraphic(UO.ObjAtLayer("Rhand"))) <> '0x0E85' Then
If UO.Count('0x0E85') > 0 Then
UO.UseType('0x0E85')
endif
else
UO.UseObject(UO.ObjAtLayer('Rhand'))
EndIf
wait(2000)
end sub
sub Clear(T,C)
Var Count = UO.Count(T,C)
UO.FindType(T,C,'backpack')
Var b = UO.GetSerial("finditem")
UO.FindType(T,C,'ground')
Var g = UO.GetSerial("finditem")
Wait(500)
UO.MoveItem(b, "0", g,str(uo.getx(g)),str(uo.gety(g)),"0")
Wait(500)
If UO.Count(T,C) == Count Then
If (UO.Count('finditem')+Count) < 60000 Then
uo.ignore('finditem')
ProDrop(T,C)
endIf
endIf
end sub
sub Ress()
While UO.Dead()
wait(1000)
UO.WarMode( 1 )
WEND
end sub
sub Count()
#UO.Print('Iron : '+Str(UO.Count(0x19B9, 0x0000)))
#UO.Print('-=-=-=-=-=-=-=-')
#UO.Print('Bronze : '+Str(UO.Count(0x19B9, 0x0488)))
#UO.Print('Rasty : '+Str(UO.Count(0x19B9, 0x0750)))
#UO.Print('-=-=-=-=-=-=-=-')
#wait(4000)
#UO.Print('-=-=-=-=-=-=-=-')
#UO.Print('Old Copper : '+Str(UO.Count(0x19B9, 0x0949)))
#UO.Print('Dull Copper : '+Str(UO.Count(0x19B9, 0x060A)))
#UO.Print('Copper : '+Str(UO.Count(0x19B9, 0x0641)))
#UO.Print('-=-=-=-=-=-=-=-')
#wait(4000)
#UO.Print('-=-=-=-=-=-=-=-')
#UO.Print('Pirit : '+Str(UO.Count(0x19B9, 0x09EE)))
#UO.Print('Silver : '+Str(UO.Count(0x19B9, 0x0482)))
#UO.Print('Shadow : '+Str(UO.Count(0x19B9, 0x0770)))
#UO.Print('Gold : '+Str(UO.Count(0x19B9, 0x04AA)))
#UO.Print('-=-=-=-=-=-=-=-')
#wait(4000)
#UO.Print('-=-=-=-=-=-=-=-')
#UO.Print('Verit : '+Str(UO.Count(0x19B9, 0x0947)))
#UO.Print('Agapit : '+Str(UO.Count(0x19B9, 0x0400)))
#UO.Print('Blood : '+Str(UO.Count(0x19B9, 0x04C2)))
#UO.Print('Azurit : '+Str(UO.Count(0x19B9, 0x04DF)))
#UO.Print('-=-=-=-=-=-=-=-')
Wait(4000)
#UO.Print('-=-=-=-=-=-=-=-')
#UO.Print('Mithril : '+Str(UO.Count(0x19B9, 0x052D)))
#UO.Print('Valorite : '+Str(UO.Count(0x19B9, 0x0515)))
#UO.Print('Winter : '+Str(UO.Count(0x19B9, 0x0481)))
#UO.Print('-=-=-=-=-=-=-=-')
#UO.Print('BlackRock : '+Str(UO.Count(0x19B9, 0x0455)))
#UO.Print('-=-=-=-=-=-=-=-')
end sub
sub play()
Var Co = 0
While true
If UO.Life < UO.Str then
If Co < 10 then
uo.playwav("D:\cap000.wav")
wait(1500)
Co = Co + 1
else
wait(60000)
Co = 0
endif
end if
wait(1000)
wend
sub Lot()
repeat
UO.FindType(0x19B9,-1,'ground')
IF UO.FindCount() > 0 Then
Uo.Grab(0,'finditem')
wait(1000)
end if
until UO.FindCount() == 0
end sub
-
- Posts: 13
- Joined: 2009-02-11 15:21:59
-
- Posts: 13
- Joined: 2009-02-11 15:21:59
-
- Posts: 13
- Joined: 2009-02-11 15:21:59
-
- Expert!
- Posts: 1205
- Joined: 2004-04-04 11:13:54
- Location: Балаково, Саратовская обл.
- Contact:
Пофиксила прицел на себя? А если в пак или статус целить?
Попробуй такой вариант:
походи по шахте, попробуй в разных местах, будет копать или нет?
Попробуй такой вариант:
Code: Select all
sub zzz()
UO.WaitTargetTile('0',STR(UO.GetX()),STR(UO.GetY()),STR(UO.GetZ()))
UO.UseType('тут поставь тип своей кирки')
end sub
походи по шахте, попробуй в разных местах, будет копать или нет?
-
- Posts: 13
- Joined: 2009-02-11 15:21:59
-
- Expert!
- Posts: 1205
- Joined: 2004-04-04 11:13:54
- Location: Балаково, Саратовская обл.
- Contact:
Вот так можно:
Сначала функция приватгеттайл простукивает тип тайла. Потом этот тип используем.
Не каждая версия инжи работает с этой функцией. Надо предварительно проверить.
Code: Select all
sub DigItStay(MaxWeight,MaxDistance,BaseX,BaseY)
VAR x,y,TempX,TempY
VAR Last=0,LastTimer, ContFlag=1
VAR MaxTimer=160,Count=1
VAR TileB=1339
VAR TileE=1359
Var Tile
For x=-MaxDistance to MaxDistance
For y=-MaxDistance to MaxDistance
Tile=TileB
While NOT UO.PrivateGetTile(UO.GetX()+x,UO.GetY()+y,-1,Tile,Tile) AND Tile<TileE
Tile=Tile+1
Wend
If Tile<TileE Then
Repeat
ToHide()
IF UO.InJournal('cliloc# 0xA5F5') Then
TempX=UO.GetX()
TempY=UO.GetY()
KillRat()
SuperWalk(TempX,TempY,"")
Endif
CheckLag() ; deleting journal
UO.WaitTargetTile(Str(Tile),STR(UO.GetX()+x),STR(UO.GetY()+y),STR(UO.GetZ()))
UO.UseType('0x0E86')
LastTimer=UO.Timer()
Repeat
wait(200)
until UO.InJournal("Iguana|cliloc# 0x5DE4|Shining|Blood|silver|Spectral|Stars|cliloc# 0x5DE5|cliloc# 0x5DE3|cliloc# 0x5DE0|cliloc# 0xAD03|cliloc# 0xAD00|cliloc# 0xA867|cliloc# 0xAD02") OR LastTimer+MaxTimer<UO.Timer()
If UO.GetGlobal('PausedScript')=='On' Then
UO.Print("+++ Script paused! +++")
UO.Print("+++ Script paused! +++")
TempX=UO.GetX()
TempY=UO.GetY()
While UO.GetGlobal('PausedScript')=='On'
wait(500)
Wend
UO.Print("+++ Script continued! +++")
UO.Print("+++ Script continued! +++")
SuperWalk(TempX,TempY,"")
Endif
If UO.Life<UO.Str then
TempX=UO.GetX()
TempY=UO.GetY()
KillRat()
SuperWalk(TempX,TempY,"")
ToHide()
Endif
If UO.Weight>=MaxWeight then
TempX=UO.GetX()
TempY=UO.GetY()
KillRat()
SuperWalk(TempX,TempY,"")
GoSmelt()
Endif
Until UO.InJournal("cliloc# 0xAD00|cliloc# 0xA867|cliloc# 0xAD02")
Endif
Next
Next
end sub
Сначала функция приватгеттайл простукивает тип тайла. Потом этот тип используем.
Не каждая версия инжи работает с этой функцией. Надо предварительно проверить.
-
- Posts: 13
- Joined: 2009-02-11 15:21:59
-
- Posts: 13
- Joined: 2009-02-11 15:21:59
-
- Posts: 13
- Joined: 2009-02-11 15:21:59
Savage wrote:Вот так можно:Code: Select all
sub DigItStay(MaxWeight,MaxDistance,BaseX,BaseY)
VAR x,y,TempX,TempY
VAR Last=0,LastTimer, ContFlag=1
VAR MaxTimer=160,Count=1
VAR TileB=1339
VAR TileE=1359
Var Tile
For x=-MaxDistance to MaxDistance
For y=-MaxDistance to MaxDistance
Tile=TileB
While NOT UO.PrivateGetTile(UO.GetX()+x,UO.GetY()+y,-1,Tile,Tile) AND Tile<TileE
Tile=Tile+1
Wend
If Tile<TileE Then
Repeat
ToHide()
IF UO.InJournal('cliloc# 0xA5F5') Then
TempX=UO.GetX()
TempY=UO.GetY()
KillRat()
SuperWalk(TempX,TempY,"")
Endif
CheckLag() ; deleting journal
UO.WaitTargetTile(Str(Tile),STR(UO.GetX()+x),STR(UO.GetY()+y),STR(UO.GetZ()))
UO.UseType('0x0E86')
LastTimer=UO.Timer()
Repeat
wait(200)
until UO.InJournal("Iguana|cliloc# 0x5DE4|Shining|Blood|silver|Spectral|Stars|cliloc# 0x5DE5|cliloc# 0x5DE3|cliloc# 0x5DE0|cliloc# 0xAD03|cliloc# 0xAD00|cliloc# 0xA867|cliloc# 0xAD02") OR LastTimer+MaxTimer<UO.Timer()
If UO.GetGlobal('PausedScript')=='On' Then
UO.Print("+++ Script paused! +++")
UO.Print("+++ Script paused! +++")
TempX=UO.GetX()
TempY=UO.GetY()
While UO.GetGlobal('PausedScript')=='On'
wait(500)
Wend
UO.Print("+++ Script continued! +++")
UO.Print("+++ Script continued! +++")
SuperWalk(TempX,TempY,"")
Endif
If UO.Life<UO.Str then
TempX=UO.GetX()
TempY=UO.GetY()
KillRat()
SuperWalk(TempX,TempY,"")
ToHide()
Endif
If UO.Weight>=MaxWeight then
TempX=UO.GetX()
TempY=UO.GetY()
KillRat()
SuperWalk(TempX,TempY,"")
GoSmelt()
Endif
Until UO.InJournal("cliloc# 0xAD00|cliloc# 0xA867|cliloc# 0xAD02")
Endif
Next
Next
end sub
Сначала функция приватгеттайл простукивает тип тайла. Потом этот тип используем.
Не каждая версия инжи работает с этой функцией. Надо предварительно проверить.
Может кто подскажет куда именно этот отрывок в макросе вставлять ?