скупка по рунам

Ask for help

Moderators: Murderator+, Murderator

Post Reply
p1pa
Posts: 3
Joined: 2009-04-27 21:48:38

скупка по рунам

Post by p1pa »

Code: Select all

var res 

sub main() 
DIM rune[6] 
DIM ven[6] 
var i, n 
rune[1]='0x4010005B' 
rune[2]='0x40100061' 
rune[3]='0x40100063' 
rune[4]='0x40100050' 
rune[5]='0x40100047' 
rune[6]='0x40100009' 

ven[1]='0x000876DA' 
ven[2]='0x0048E86C' 
ven[3]='0x00353C65' 
ven[4]='0x004D001F' 
ven[5]='0x00479B7B' 
ven[6]='0x0031222D' 

repeat 
for i=1 to 6 
recall(i,rune) 
WalkN(0,0,ven[i]) 
UO.Set('buydelay','3000') 
uo.Say(',buy '+ UO.GetName('ven[i]') + 'list1') 
wait(500) 
UO.Say("buy ,perya") 
UO.DeleteJournal() 
UO.Click(rune[i]) 
repeat 
wait(500) 
until UO.InJournal('jumps left') 
takenum() 
if res < 10 then ; 
Mark(i,rune) 
endif 
med() 
next 
until UO.Dead() 
end sub 
##################################### 
sub takenum() 
var ns, j, i, n 
var str, num 
num='' 
ns=0 
n=uo.InJournal('jumps left')-1 
str=uo.Journal(n) 
UO.Print(str) 
j = len( str ) - 1 
for i = 0 to j 

if ns==1 and str[i]<>' ' then 
num=num+str[i] 
else 
ns=0 
endif 
if str[i] =='(' then 
ns=1 
endif 
next 
res = val(num) 
UO.Print(str(res)) 
end sub 
##################################### 
sub Recall(i,rune) 
var b 
uo.print('Recoll Rune '+str(i)) 
for b=1 to 10 
uo.deletejournal() 
uo.waittargetobject(rune[i]) 
uo.cast('Recall',rune[i]) 
if WaitForRecall()==1 then 
return 1 
end if 
next 
return 0 
end sub 
##################################### 
sub Mark(i,rune) 
uo.waittargetobject(rune[i]) 
uo.cast('Mark',rune[i]) 
end sub 
##################################### 
sub WaitForRecall() 
var Text1=uo.getname()+": The spell fizzles." 
var mess='',lastX=uo.getX(),lastY=uo.getY() 
for var v=0 to 200 
mess=uo.journal(0) 
if uo.Journal(0)==Text1 then 
return 0 
end if 
if uo.getX()<>lastX OR uo.getY()<>LastY then 
return 1 
end if 
wait(50) 
next 
return 0 
end sub 
###################################### 
sub med() 
VAR LastTimer 
while UO.Mana<UO.Int 
LastTimer=UO.Timer() 
UO.UseSkill('Meditation') 
repeat 
wait(100) 
until UO.InJournal("You are") OR UO.InJournal("You lose") OR UO.Timer()>LastTimer+200 
UO.DeleteJournal() 
wait(200) 
wend 
end sub 

#============================================================== 
# SuperWalk(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! 
# walkwait - delay after keypress 
#-------------------------------------------------------------- 
sub WalkN(x,y,Target) 
VAR i 
VAR dir,ldir,rdir,key,olddir 
VAR dx,dy,Exit=0 
VAR CacheLimit=9,CacheIndex="Text" 
DIM CacheX[10], CacheY[10] 

CacheX[0]="Test" 
While Exit<>1 
If Target<>"" Then 
dx=UO.GetX(Target)-UO.GetX() 
dy=UO.GetY(Target)-UO.GetY() 
; UO.Print("Target locked!") 
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 dx<>0 AND dy<>0 Then 
If dx>0 AND dy>0 Then ; GoSE 
dir=3 
ldir=2 
rdir=4 
key=40 ; DownArrow 
olddir=UO.GetDir() 
If StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Then 
If olddir==2 Then ; GoNE 
dir=1 
ldir=0 
rdir=1 
key=39 ; RightArrow 
While UO.GetDir()<>1 
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) 
Wend 
Else ; GoSW 
dir=5 
ldir=5 
rdir=6 
key=37 ; LeftArrow 
While UO.GetDir()<>5 
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) 
Wend 
Endif 
Endif 
Endif 

If dx>0 AND dy<0 Then ; GoNE 
dir=1 
ldir=0 
rdir=2 
key=39 ; RightArrow 
olddir=UO.GetDir() 
If StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Then 
If olddir==0 Then ; GoWN 
dir=7 
ldir=6 
rdir=7 
key=38 ; UpArrow 
While UO.GetDir()<>7 
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) 
Wend 
Else ; GoSE 
dir=3 
ldir=3 
rdir=4 
key=40 ; DownArrow 
While UO.GetDir()<>3 
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) 
Wend 
Endif 
Endif 
Endif 

If dx<0 AND dy>0 Then ; GoSW 
dir=5 
ldir=4 
rdir=6 
key=37 ; LeftArrow 
olddir=UO.GetDir() 
If StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Then 
If olddir==6 Then ; GoWN 
dir=7 
ldir=7 
rdir=0 
key=38 ; UpArrow 
While UO.GetDir()<>7 
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) 
Wend 
Else ; GoSE 
dir=3 
ldir=2 
rdir=3 
key=40 ; DownArrow 
While UO.GetDir()<>3 
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) 
Wend 
Endif 
Endif 
Endif 

If dx<0 AND dy<0 Then ; GoWN 
dir=7 
ldir=6 
rdir=0 
key=38 ; UpArrow 
olddir=UO.GetDir() 
If StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Then 
If olddir==0 Then ; GoNE 
dir=1 
ldir=1 
rdir=2 
key=39 ; RightArrow 
While UO.GetDir()<>1 
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) 
Wend 
Else ; GoSW 
dir=5 
ldir=4 
rdir=5 
key=37 ; LeftArrow 
While UO.GetDir()<>5 
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) 
Wend 
Endif 
Endif 
Endif 
Endif 

If dx<>0 AND dy==0 Then 
If dx>0 Then ; GoE 
dir=2 
key=34 ; PgDown 
olddir=UO.GetDir() 
If StepEdit(UO.GetX(),UO.GetY(),dir,key) Then 
If olddir==2 Then ; GoSE 
dir=3 
ldir=3 
rdir=4 
key=40 ; DownArrow 
While UO.GetDir()<>3 
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) 
Wend 
Else ; GoNE 
dir=1 
ldir=1 
rdir=0 
key=39 ; RightArrow 
While UO.GetDir()<>1 
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) 
Wend 
Endif 
Endif 
Endif 

If dx<0 Then ; GoW 
dir=6 
key=36 ; Home key 
olddir=UO.GetDir() 
If StepEdit(UO.GetX(),UO.GetY(),dir,key) Then 
If olddir==0 Then ; GoWN 
dir=7 
ldir=7 
rdir=0 
key=38 ; UpArrow 
While UO.GetDir()<>7 
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) 
Wend 
Else ; GoSW 
dir=5 
ldir=4 
rdir=5 
key=37 ; LeftArrow 
While UO.GetDir()<>5 
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) 
Wend 
Endif 
Endif 
Endif 
Endif 

If dx==0 AND dy<>0 Then 
If dy>0 Then ; GoS 
dir=4 
key=35 ; End 
If StepEdit(UO.GetX(),UO.GetY(),dir,key) Then 
If olddir==2 Then ; GoSE 
dir=3 
ldir=2 
rdir=3 
key=40 ; DownArrow 
While UO.GetDir()<>3 
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) 
Wend 
Else ; GoSW 
dir=5 
ldir=6 
rdir=5 
key=37 ; LeftArrow 
While UO.GetDir()<>5 
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) 
Wend 
Endif 
Endif 
Endif 

If dy<0 Then ;GoN 
dir=0 
key=33 ; PgUp 
olddir=UO.GetDir() 
If StepEdit(UO.GetX(),UO.GetY(),dir,key) Then 
If olddir==2 Then ; GoNE 
dir=1 
ldir=1 
rdir=2 
key=39 ; RightArrow 
While UO.GetDir()<>1 
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) 
Wend 
Else ; GoWN 
dir=7 
ldir=7 
rdir=6 
key=38 ; UpArrow 
While UO.GetDir()<>7 
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) 
Wend 
Endif 
Endif 
Endif 
Endif 
Wend 
end sub 


sub StepEdit(x,y,dir,key) 
VAR walkwait=300 
VAR ErrLevel=0 
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() 
If x==UO.GetX() AND y==UO.GetY() Then 
;zatik 
ErrLevel=1 
Endif 
Endif 
Return ErrLevel 
end sub 


sub StepArrow(x,y,dir,ldir,rdir,key) 
VAR walkwait=300 
VAR ErrLevel=0 
If UO.GetDir()<>dir Then 
UO.Press(key) 
wait(walkwait) 
If UO.GetDir()<>dir AND UO.GetDir()<>ldir AND UO.GetDir()<>rdir Then 
CheckLag() 
Endif 
Endif 

If UO.GetX()==x AND UO.GetY()==y Then 
UO.Press(key) 
wait(walkwait) 
If UO.GetDir()==dir AND UO.GetX()==x AND UO.GetY()==y Then 
CheckLag() 
If UO.GetDir()==dir AND UO.GetX()==x AND UO.GetY()==y Then 
; zatik 
ErrLevel=1 
Endif 
Endif 
Endif 
Return ErrLevel 
end sub 

#============================================================== 
# CheckLag() - click on backpack and awaiting "backpack" 
# message in journal. 
# 
# Journal has been deleted!!! 
#-------------------------------------------------------------- 
sub CheckLag() 
UO.DeleteJournal() 
UO.Click('backpack') 
repeat 
wait(500) 
until UO.InJournal('backpack') 
end sub  

он реколится в идеале и идёт к вендору в идеале... но если вендор не выдаёт данную вещ ту что мне нужно он стоит около этого вендора и тупит.. заранее спс. в данном случаи он должен скупать перья. 200 штук и всё...
Post Reply