Code: Select all
;Описание:
;
;чар стоит в магазе где респятся вендоры муж. или жен. пола
;если вендор обнаружен то подходим киляем и лутаем
;лутаются все вещи, кот. были в трупе (для простоты, но можно выборочно исп. скрипт на лут)
;как все слутает прячется в хайд и ждет следущего вендора
;
;Настройка:
;
;ничего не надо приходим в магаз и запускаем
; в инже желательно чтобы галки стояли "TWI" и "Target XYZ fix"
;
;from GimFlex aka Question
sub boneapetite()
var vendor='';тут ничего не меняй
var corpse='';тут тоже -)
var t1='0x0190'#man
var t2='0x0191'#woman
uo.set('finddistance','6'); размер поиска в зависимости от магаза от 1 до 14 ставь
while not uo.dead()
uo.findtype(t1,'-1','ground')
if uo.findcount()>0 then
vendor=uo.getserial('finditem')
while uo.getdistance(vendor)>2
GotoXY(uo.getx(vendor),uo.gety(vendor),2)
wend
uo.warmode(1)
uo.deletejournal()
uo.attack(vendor)
repeat
wait(100)
if uo.getdistance(vendor)>2 then
GotoXY(uo.getx(vendor),uo.gety(vendor),2)
end if
until uo.injournal("Body of")
CheckLag()
uo.warmode(0)
wait(100)
uo.deletejournal()
corpse=uo.getserial('lastcorpse')
uo.useobject(corpse)
wait(700)
CheckLag()
uo.findtype('-1','-1',corpse)
while uo.findcount()>0
uo.moveitem('finditem','all','backpack')
wait(700)
CheckLag()
uo.findtype('-1','-1',corpse)
wend
endif
CheckLag()
uo.findtype(t2,'-1','ground')
if uo.findcount()>0 then
vendor=uo.getserial('finditem')
while uo.getdistance(vendor)>2
GotoXY(uo.getx(vendor),uo.gety(vendor),2)
wend
uo.warmode(1)
uo.deletejournal()
uo.attack(vendor)
repeat
wait(100)
if uo.getdistance(vendor)>2 then
GotoXY(uo.getx(vendor),uo.gety(vendor),2)
end if
until uo.injournal("Body of")
uo.warmode(0)
wait(100)
uo.deletejournal()
corpse=uo.getserial('lastcorpse')
uo.useobject(corpse)
wait(700)
CheckLag()
uo.findtype('-1','-1',corpse)
while uo.findcount()>0
uo.moveitem('finditem','all','backpack')
wait(700)
CheckLag()
uo.findtype('-1','-1',corpse)
wend
endif
CheckLag()
ToHide()
wait(5000)
CheckLag()
wend
end sub
Sub GotoXY(x,y,k)
var kop
VAR i,j,m
VAR dir,ldir,rdir,key,olddir
VAR dx,dy,Exit=0
VAR CacheLimit=9,CacheIndex="Text"
DIM CacheX[10], CacheY[10]
CacheX[0]="Test"
kop=0
While Exit<>1
for j=-1 to 1
for m=-1 to 1
dx=x-UO.GetX()
dy=y-UO.GetY()
If dx==j AND dy==m Then
Exit=1
Endif
next
next
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
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
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
ErrLevel=1
Endif
Endif
Endif
Return ErrLevel
end sub
Sub CheckLag()
UO.DeleteJournal()
UO.Click('backpack')
repeat
wait(50)
until UO.InJournal('backpack')
end sub
Sub ToHide()
while not uo.hidden()
UO.DeleteJournal()
uo.useskill("Hiding")
repeat
wait(10)
until UO.InJournal("You have hidden yourself well") or UO.InJournal("You can't seem to hide here.") or UO.InJournal("You are preoccupied with thoughts of battle.")
if UO.InJournal("You are preoccupied with thoughts of battle.") then
uo.exec("warmode 1")
wait(100)
uo.exec("warmode 0")
wait(100)
end if
wend
end sub