Макрос на вип шахту незнаю переделан как-то там
вроди работает... Проблема в том , что когда чар накопал нужный вес он должен выходить и идти к домику и ложить все в прилоченые кучки... это все робит.. но вот перед моим домом стоит еще дом прямо перед пещерой и чар все время упирается в него, он пытается обойти препятствие но он ходит чаще влево и вправо но иногда получается а чаще всего нет...вот что делать?
и вторая проблема чар почему на второй подход покапает чуток и потом бежит куда то в стену, хотя там нечегоне нету просто хочет бежать туда))) плиз хелп
Code:
#Скрипт от леньки для бендора.....
Var Pickaxe=0x0E85
Var Ore=0x19B9
Var Ingot=0x1BF2
Var Iron=0x0000
Var MoveDelay=180
Var MoveNumber=1
Var Ep=0.172
Var FileName='C:\deck.dll'
Sub Main()
UO.SetGlobal('process','no')
repeat
if UO.GetGlobal('process')=='no' then
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 ) - 65
if UO.InJournal("tool breaks")then
UO.UseObject(UO.ObjAtLayer('Rhand'))
UO.WaitTargetTile(Str(T),Str(X),Str(Y),Str(Z))
endif
if UO.Weight > wei then
GoToTile(2443,177,0,False)
Exist()
GoToTile(2443,177,0,False)
GoToTile(2443,177,0,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") or UO.InJournal('You need a pickaxe') or UO.InJournal('That is too far away')
Until UO.InJournal("There is no ore here to mine.") or UO.InJournal("There is no ore here to mine") or UO.InJournal('You need a pickaxe') or UO.InJournal('That is too far away')
If UO.InJournal("There is no ore here to mine.") or UO.InJournal("There is no ore here to mine") or UO.InJournal('That is too far away') then
Goto Beg
EndIf
If UO.InJournal('You need a pickaxe') or UO.InJournal('You need a pickaxe to mine') then
GoToTile(2442,180,0,False)
Uo.usefromground(0x0E41)
wait(2000)
repeat
UO.FindType(Pickaxe,"0x0000","lastcontainer")
UO.MoveItem("finditem", "1")
Until UO.Count(Pickaxe) > 0
Goto Beg
EndIf
Ext:
F.Close()
UO.SetGlobal('process','no')
EndSub
sub Exist()
If UO.Count(0x19B9, 0x0000) > 0 Then
ProDrop(0x19B9, 0x0000)
EndIF
If UO.Count(0x19B9, 0x0750) > 0 Then
ProDrop(0x19B9, 0x0750)
EndIF
If UO.Count(0x19B9, 0x06D6) > 0 Then
ProDrop(0x19B9, 0x06D6)
EndIF
If UO.Count(0x19B9, 0x0590) > 0 Then
ProDrop(0x19B9, 0x0590)
EndIF
If UO.Count(0x19B9, 0x060A) > 0 Then
ProDrop(0x19B9, 0x060A)
EndIF
If UO.Count(0x19B9, 0x0641) > 0 Then
ProDrop(0x19B9, 0x0641)
EndIF
If UO.Count(0x19B9, 0x0665) > 0 Then
ProDrop(0x19B9, 0x0665)
EndIF
If UO.Count(0x19B9, 0x09EE) > 0 Then
ProDrop(0x19B9, 0x09EE)
EndIF
If UO.Count(0x19B9, 0x0482) > 0 Then
ProDrop(0x19B9, 0x0482)
EndIF
If UO.Count(0x19B9, 0x04AA) > 0 Then
ProDrop(0x19B9, 0x04AA)
EndIF
If UO.Count(0x19B9, 0x0770) > 0 Then
ProDrop(0x19B9, 0x0770)
EndIF
If UO.Count(0x19B9, 0x07D1) > 0 Then
ProDrop(0x19B9, 0x07D1)
EndIF
If UO.Count(0x19B9, 0x0400) > 0 Then
ProDrop(0x19B9, 0x0400)
EndIF
If UO.Count(0x19B9, 0x04C2) > 0 Then
ProDrop(0x19B9, 0x04C2)
EndIF
If UO.Count(0x19B9, 0x04DF) > 0 Then
ProDrop(0x19B9, 0x04DF)
EndIF
If UO.Count(0x19B9, 0x052D) > 0 Then
ProDrop(0x19B9, 0x052D)
EndIF
If UO.Count(0x19B9, 0x0515) > 0 Then
ProDrop(0x19B9, 0x0515)
EndIF
If UO.Count(0x19B9, 0x0481) > 0 Then
ProDrop(0x19B9, 0x0481)
EndIF
If UO.Count(0x19B9, 0x0455) > 0 Then
ProDrop(0x19B9, 0x0455)
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
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
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
Uo.ignore(0x19B9, 0x0455)
return
else
if UO.GetColor('finditem') == '0x052D' Then
Uo.ignore(0x19B9, 0x052D)
return
else
if UO.GetColor('finditem') == '0x0515' Then
Uo.ignore(0x19B9, 0x0515)
return
else
if UO.GetColor('finditem') == '0x0481' Then
Uo.ignore(0x19B9, 0x0481)
return
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
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
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.useobject('Pickaxe')
UO.Exec('terminate main')
UO.Exec('terminate Lumb')
UO.Exec('exec main')
UO.TextPrint('Disconnected & Reconnected @ '+ReconnectTime)
RFlag = 1
ReconnectTime = '0'
endif
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
Юзай Теги. I'm
Code: