Hi!
Тяп-ляп скрипт не прокачку арчери.
Перс стоит рядом с лучниками, отстреливает их, лечится, ходит подбирает стрелки и лутает лучников.
Плюсы в том, что
1. Можно качаться с одного компа )
2. Лутается больше стрелок, чем расходуется, поэтому стрелки накапливаются.
Минус- ну, довольно медленно
Code:
#VAR monst=0x0003 #zombie
#VAR monst=0x00ea #olen"
VAR monst=0x0191 #women
var washing="0x1008" # Tшя ъюЁvЄр
var bloody="0x0E20" # Tшя ъЁютртvї сшэЄют
VAR SerChar, ColChar, NamChar, DistChar, SerEnemy #=uo.getserial("finditem")
var dShoot0=17 # дистанция до оленя
var distShoot=15 # дистанция до оленя
var Text3="You can't reach this."
var Text4="That is too far away."
var Text5="You can't do much in your current state."
# с определением злобности - чтобы синих не бил| особенно в ГЗ
####################################################
sub att()
#***********
#(C) Cooper
# updated by Kobol Dec 2012
#***********
#VAR monst="0x0190" #dark elf
var myhp
var dist, enhlth, ex,ey, oldEH
var mfound
##########################################
UO.usetype("0x13B1") ; тип лука
UO.Set("quiet","0")
uo.print("attack zombie! <<<<<<<<<")
UO.Set("finddistance","18")
hiding()
go(869,1191,0)
hiding()
if UO.GetHP("self") < 140 then
heal()
end if
while UO.GetHP("self") > 100
uo.ignore("self")
UO.FindType(monst, "-1", "ground")
wait(300)
if UO.FindCount() > 0 then
SerEnemy =uo.getserial("finditem")
dist=UO.GetDistance(SerEnemy)
wait (100)
ColChar = UO.GetNotoriety( "finditem" )
wait (100)
if ColChar> 2 then #если злобный
uo.print("found="+str(UO.FindCount()))
uo.print("zloba="+str(ColChar))
uo.print("enemy distance="+str(dist))
if dist>distShoot then
uo.print("enemy Too far")
Chaser("finditem")
wait (50)
else
UO.DeleteJournal()
wait (100)
uo.print("near!!")
dist=UO.GetDistance("finditem")
if dist <= distShoot then
UO.Attack("finditem")
repeat #<<<##################
wait(250)
enhlth=UO.GetHP("finditem")
if enhlth< oldEH then
uo.print("Enemy Health="+str(enhlth))
endif
if enhlth > 0 then
ex=UO.GetX("finditem")
ey=UO.GetY("finditem")
endif
if UO.GetDistance("finditem") > distShoot-3 then
uo.print("Far again 1")
wait (50)
Chaser1("finditem")
enhlth=UO.GetHP("finditem")
uo.print("Enemy Health 1a="+str(enhlth))
#hiding()
#heal()
if enhlth > 0 then
PickUpArrow()
#go(869,1191,0)
#hiding()
#heal()
wait (150)
#enhlth = 0
endif
endif
oldEH=enhlth
until UO.InJournal("Body of") or enhlth < 1
#<<<##################
hiding()
heal()
distShoot=0
enhlth=UO.GetHP("finditem")
uo.print("Enemy Health 2="+str(enhlth))
wait (100)
PickUpArrow()
if enhlth < 1 then
go(ex,ey,0)
Loot1()
wait (100)
distShoot=dShoot0
endif
uo.print("68: zombie killed" )
PickUpArrow()
uo.print(" try to loot gold and arrow====" )
wait (100)
#Chaser("finditem")
uo.print("go to the base point" )
distShoot=dShoot0
#go(869,1191,0)
hiding()
heal()
wait (50)
else
uo.print("Far again 2")
wait (50)
endif
endif
else
uo.ignore("finditem")
endif # не злобный
else
PickUpArrow()
hiding()
#uo.useskill("Spirit Speak")
go(869,1191,0)
endif
wait(3550)
wend
endsub
####################################################
sub PickUpArrow()
var dist, distOld
var mfound=0
distOld=distShoot
distShoot=1
var Text3="You can't reach this."
UO.Print( "PickUpArrow distShoot="+str(distShoot) )
UO.Set("quiet","0")
uo.print("Try PickUp Arrow! <<<<<<<<<")
UO.Set("finddistance","18")
UO.DeleteJournal()
#while UO.GetHP("self") > 50
uo.FindType("0x0F3F","0x0000", "ground")
wait(50)
if UO.FindCount() > 0 then
uo.print("found Arrows ="+str(UO.FindCount()))
dist=UO.GetDistance("finditem")
uo.print("distance="+str(dist))
if dist>=distShoot then
uo.print("too Far to pickup arrow --")
Chaser("finditem")
endif
#else
UO.DeleteJournal()
wait (100)
uo.print("near to arrow - pickup!")
dist=UO.GetDistance("finditem")
if dist <= distShoot then
uo.grab("0","finditem")
wait(400)
UO.Print( "The arrow found and pickuped +++++++" )
if UO.InJournal(Text3) then
UO.DeleteJournal()
return
endif
else
uo.print("Far again 2")
wait (50)
endif
endif
else
wait(50)
endif
#wend
distShoot=distOld
uo.print("PickUp Arrow complete! +++++ <<<<<<<<<")
endsub
;-----------------------------------------------------------------
####################################################
sub Chaser(Target)
VAR x, y
x=UO.GetX(Target)
y=UO.GetY(Target)
go(x,y,0)
endsub
;-----------------------------------------------------------------
####################################################
sub Chaser1(Target)
UO.Print( "v dogon!! distShoot="+str(distShoot) )
VAR dx, dy
var cdist
cdist=uo.getdistance(target)
UO.Print( "Chaser dist="+str(cdist) )
if cdist>50 then
return
endif
While 1
If Target<>"" and uo.getdistance(target)>distShoot-25 and not uo.dead() Then
dx=UO.GetX(Target)-UO.GetX()
dy=UO.GetY(Target)-UO.GetY()
If UO.GetDistance(Target)<=distShoot Then
return
Endif
else
Return
Endif
If dx<>0 AND dy<>0 Then
If dx>0 AND dy>0 Then
UO.Press(40) ; DownArrow
Endif
If dx>0 AND dy<0 Then
UO.Press(39) ; RightArrow
Endif
If dx<0 AND dy>0 Then
UO.Press(37) ; LeftArrow
Endif
If dx<0 AND dy<0 Then
UO.Press(38) ; UpArrow
Endif
Endif
If dx<>0 AND dy==0 Then
If dx>0 Then
UO.Press(34) ; PgDown
Endif
If dx<0 Then
UO.Press(36) ; Home key
Endif
Endif
If dx==0 AND dy<>0 Then
If dy>0 Then
UO.Press(35) ; End
Endif
If dy<0 Then
UO.Press(33) ; PgUp
Endif
Endif
#LootArrow()
wait (400)
Wend
endsub
####################################################
sub heal()
var Bandana ='0x1515' ##Тип того, что сшили лента '0x153B' 0x1515
Var Scissors='0x0F9E' # Ножницы чтоб резать то что накроили из ткани
var kolvo1
If uo.getHP() < uo.getMaxHP() then
UO.Set("finddistance","18")
#uo.print(" heal =======" )
uo.warmode(false)
wait (100)
uo.setarm("current armor")
wait (100)
uo.disarm()
wait (100)
#hiding()
wait (100)
uo.print("HP=========================="+str(uo.getHP()) )
# моем бинты
UO.waittargettype("0x1008")
UO.usetype("0x0e20")
Wait(1000)
#UO.waittargettype("0x1515")
#UO.usetype("0x0f9e")
#Wait(1000)
repeat
uo.bandageself()
wait(4000)
until uo.getHP() == uo.getMaxHP()
uo.arm("current armor")
wait (800)
#hiding()
end if
UO.FindType('Bandana','0x0599','backpack')
uo.print ('Bandana FindCount='+str(uo.FindCount()))
kolvo1=uo.FindCount() #UO.GetQuantity('finditem')
uo.print ('kolvo1='+ str(kolvo1))
if kolvo1>3 then
repeat
UO.FindType('Bandana','0x0599','backpack')
kolvo1=uo.FindCount() #UO.GetQuantity('finditem')
uo.print ('2 kolvo1 ='+ str(kolvo1))
uo.print ('Bandana FindCount='+str(uo.FindCount()))
if kolvo1>3 then
UO.WaitTargetType(Bandana)
uo.deletejournal()
uo.usetype(Scissors)
repeat
wait(150)
until uo.InJournal('You put the') or UO.InJournal("found")
wait (100)
else
return
endif
until not uo.FindCount() or UO.InJournal("found")
endif
endsub
####################################################
Sub checklag()
UO.DeleteJournal()
UO.Click("backpack")
repeat
wait(100)
until UO.InJournal("ackpack")
endsub
############################################################
Sub hiding2()
wait(1200)
var ms1="You have hidden"
var ms2="You can"
repeat
uo.deletejournal()
wait(300)
uo.useskill("Hiding")
repeat
wait(600)
until uo.injournal(ms1) or uo.injournal(ms2)
until uo.injournal(ms1)
endsub
####################################################
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.Exec("terminate all")
;UO.Exec("exec autoload")
UO.TextOpen()
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
####################################################
sub Lootall()
var n, corpse
if (uo.getserial("backpack") <> uo.getserial("lastcontainer")) then
uo.ignorereset()
corpse=uo.getserial("lastcontainer")
uo.findtype(-1,-1,corpse)
while uo.findcount()
n=uo.getserial("finditem")
uo.moveitem("finditem",0,"backpack")
uo.print(" item "+str(uo.findcount()))
checklag()
wait(600)
uo.findtype(-1,-1,corpse)
if uo.findcount() then
if n==uo.getserial("finditem") then
uo.ignore("finditem")
uo.findtype(-1,-1,corpse)
endif
endif
wend
endif
uo.print(" -= Done =- ")
endsub
############################################################
Sub go(x,y,k)
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"
uo.print("GO X="+str(x)+ " Y="+str(y))
if x<300 or y < 300 then
return
endif
if x>13000 or y > 13000 then
return
endif
While Exit<>1
#PickUpArrow()
dx=x-UO.GetX()
wait (100)
dy=y-UO.GetY()
wait (100)
If dx==0 AND dy==0 Then
Exit=1
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()
wait (100)
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
wait (100)
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
wait (100)
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()
wait (100)
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
wait (100)
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
wait (100)
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()
wait (100)
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
wait (100)
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
wait (100)
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
wait (100)
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
wait (100)
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()
wait (100)
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
wait (100)
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
wait (100)
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
wait (100)
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
wait (100)
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
wait (100)
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
wait (100)
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
wait (100)
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
wait (100)
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Endif
Endif
Endif
Endif
Wend
if k==1 then
kopka()
endif
end sub
############################################################
Sub StepEdit(x,y,dir,key)
VAR walkwait=100
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
endsub
############################################################
Sub StepArrow(x,y,dir,ldir,rdir,key)
VAR walkwait=100
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
endsub
############################################################
Sub CheckLag()
UO.DeleteJournal()
UO.Click("backpack")
repeat
Wait(550)
until UO.InJournal("backpack")
endsub
####################################################
Sub Loot1()
uo.print("loot " )
uo.ignorereset()
var corpse
VAR i
#--------------------------
UO.Set("quiet","1")
uo.set("finddistance", "3")
UO.UseObject( "lastcorpse" )
wait(1000)
; Ищем золото в последнем трупе
UO.FindType( "0x0eed", "-1", "lastcorpse" )
wait (200)
; Пока количество найденного больше 0
if UO.FindCount() > 0 then
; Забираем найденное в пак
UO.MoveItem( "finditem" )
wait( 800 )
endif
#uo.ignore("self")
UO.FindType( "0x1515", "-1", "lastcorpse" )
wait (200)
; Пока количество найденного больше 0
if UO.FindCount() > 0 then
; Забираем найденное в пак
UO.MoveItem( "finditem" )
wait( 800 )
endif
UO.FindType( "0x0F3F", "-1", "lastcorpse" )
wait (200)
; Пока количество найденного больше 0
if UO.FindCount() > 0 then
; Забираем найденное в пак
UO.MoveItem( "finditem" )
wait( 800 )
endif
UO.Print( "The loot was finished" )
UO.Set("quiet","0")
#hiding()
uo.set("finddistance", "18")
endsub
####################################################
sub Lootall()
var n, corpse
if (uo.getserial("backpack") <> uo.getserial("lastcontainer")) then
uo.ignorereset()
corpse=uo.getserial("lastcontainer")
uo.findtype(-1,-1,corpse)
while uo.findcount()
n=uo.getserial("finditem")
uo.moveitem("finditem",0,"backpack")
uo.print(" item "+str(uo.findcount()))
checklag()
wait(600)
uo.findtype(-1,-1,corpse)
if uo.findcount() then
if n==uo.getserial("finditem") then
uo.ignore("finditem")
uo.findtype(-1,-1,corpse)
endif
endif
wend
endif
uo.print(" -= Done =- ")
endsub
############################################################
sub hiding()
if UO.Hidden() then
return
end if
UO.Press(9)
wait(150)
var msh1="You have hidden"
var msh2="You can't"
repeat
uo.deletejournal()
uo.useskill('Hiding')
repeat
wait(100)
until uo.injournal(msh1) or uo.injournal(msh2)
until uo.injournal(msh1)
endsub
###################################################
sub Gheal_self()
control_Mana(16)
uo.findtype('0x1F49','0x0000','my') ;0x1F49 скролл 0x0F0E бутылка
if uo.findcount()>=1 then
uo.waittargetself()
uo.usetype('0x1F49')
else
uo.cast('Greater Heal','self')
#uo.concolor('0x09DA')
uo.charprint('0x09dc',"GH NOT BY SCROLL!")
#uo.concolor('0x09A4')
endif
end sub
####################################################
sub bandages()
var war_mode
If uo.getHP() < uo.getMaxHP() then
uo.print(' лечимся =======' )
if uo.warmode() then
war_mode=1
uo.warmode(false)
wait (100)
uo.press(9) ; Tab
else
war_mode=0
end if
hiding()
uo.setarm('current armor')
wait (100)
uo.disarm()
wait (100)
uo.print('HP=========================='+str(uo.getHP()) )
# моем бинты
UO.waittargettype('0x1008')
UO.usetype('0x0e20')
Wait(1000)
repeat
uo.bandageself()
wait(4000)
until uo.getHP() >= uo.getMaxHP() -8
uo.arm('current armor')
wait (800)
uo.warmode(war_mode)
end if
endsub