Вот собсно скрипт. Играл на одном из шардов всё работало, перешел на другой и с распиловкой траблы...
Вот скрипт: помогите
Code:
var rb = '0x77936C0C'
var GlSunduk = '0x7868587F'; Сундук откуда все берем и все проверяем
var carptools = '0x1030'
var nognizi = '0x0F9E'
var bandage = '0x0E21'
var scroll = '0x1F4C'
var topor = '0x0F43'
var gh = '0x0F0C'
var havka = '0x097B'
var agiliti = ''
var log = '0x1BDD'
var ms1 = "уже все вырублено"
var ms2 = "Lumber complit"
var ms3 = "Reconnector complit"
var dagger = '0x0F51';velikolepniy kinjal
var MaxVes = 215; max ves s kotorim hodit 4ar, ina4e delaem doski
var mr = '0x0F86'
var nsh = '0x0F88'
var board = '0x1BD7'
var korobka = '0x78685A14' ;korobka dlya dosok
var korobka_topor = '0x786858B2';korobka s toporami i rubankami
var XOJIODuJIbHuK = '0x78735CC2'
var maxtime = 400
var t, i , rp
var x,y,xp,yp
Sub Lumberjack() ;dlya zapuska scripta zapustit' etu proceduru
var i = 0
UO.UseObject(korobka_topor)
wait(1000)
UO.UseObject(GlSunduk)
wait(1000)
UO.UseObject(XOJIODuJIbHuK)
wait(1000)
uo.useobject('backpack')
wait(1000)
Uo.FindType(topor, '-1', 'backpack')
while uo.findcount('finditem') > 0
Uo.FindType(topor, '-1', 'backpack')
UO.MoveItem('finditem','0', korobka_topor)
wait(1200)
wend
Uo.FindType(carptools, '-1', 'backpack')
while uo.findcount('finditem') > 0
Uo.FindType(carptools, '-1', 'backpack')
UO.MoveItem('finditem','0', korobka_topor)
wait(1200)
wend
Uo.FindType(scroll, '-1', 'backpack')
while uo.findcount('finditem') > 0
Uo.FindType(scroll, '-1', 'backpack')
UO.MoveItem('finditem','-1', rb)
wait(1200)
wend
;Uo.FindType(bandage ,'-1',GlSunduk)
;UO.Grab('20','finditem')
;wait(500)
;UO.Print("Berem 20-t bintov")
UO.Print("Berem 3 toporov")
i = 0
repeat
Uo.FindType(topor ,'-1',korobka_topor)
UO.Grab('1','finditem')
wait(1100)
i =(i + 1)
until i == 4
wait(1100)
Uo.FindType(scroll ,'-1',korobka_topor)
UO.Grab('1','finditem')
wait(1100)
Uo.FindType(scroll ,'-1',korobka_topor)
UO.Grab('1','finditem')
wait(1100)
UO.Print("Berem 2 scrolls")
Uo.FindType(carptools ,'-1',korobka_topor)
UO.Grab('1','finditem')
wait(1100)
Uo.FindType(carptools ,'-1',korobka_topor)
UO.Grab('1','finditem')
wait(1100)
UO.Print("Berem 2 carptools")
Uo.FindType(havka ,'-1',XOJIODuJIbHuK)
wait(1100)
uo.usetype(havka ,'-1','XOJIODuJIbHuK')
while true
vihod()
recall(212,112);Rub1
rub1()
GoHome()
vihod()
recall(212,129);Rub2
rub2()
GoHome()
vihod()
recall(212,143);Rub3
rub3()
GoHome()
vihod()
recall(213,158);Rub4
rub4()
GoHome()
wend
EndSub
sub recall(xp,yp)
x = uo.getx()
y = uo.gety()
repeat
UO.UseObject(rb)
wait(1500)
uo.lclick(xp,yp)
wait(12000)
until uo.getx() <> x and uo.gety() <> y
endsub
sub w()
var z,d,f,t
Uo.FindType(board, '-1', 'backpack')
z = uo.getserial('finditem')
Uo.FindType(board, '-1', 'ground')
if uo.findcount() >0 then
d = uo.getx('finditem')
f = uo.gety('finditem')
t = uo.getz('finditem')
UO.MoveItem(z,'all',uo.getserial('finditem'),d,f,40)
wait(500)
uo.print(str(uo.getx(z)))
endif
endsub
Sub GoHome()
var z,d,f,t
var board1
recall(212,97);paseka
UO.UseObject(korobka_topor)
wait(1000)
UO.UseObject(GlSunduk)
wait(300)
carp(1)
UO.FindType(log,'-1','backpack')
while UO.FindCount('finditem') > 0
UO.FindType(log,'-1','backpack')
uo.moveitem('finditem',-1,korobka)
wait(1000)
wend
Uo.FindType(nsh, '-1', 'backpack')
UO.MoveItem('finditem','0',glsunduk)
wait(1000)
Uo.FindType(havka, '-1', 'backpack')
UO.MoveItem('finditem','0',glsunduk)
wait(1000)
Uo.FindType(mr, '-1', 'backpack')
UO.MoveItem('finditem','0',glsunduk)
wait(1000)
Uo.FindType(board, '-1', 'backpack')
UO.MoveItem('finditem','0', korobka)
wait(1000)
z = uo.getserial('finditem')
Uo.FindType(board, '-1', 'ground')
if uo.findcount() >0 then
d = uo.getx('finditem')
f = uo.gety('finditem')
t = uo.getz('finditem')
UO.MoveItem(z,'all',uo.getserial('finditem'),d,f,40)
wait(1000)
uo.print(str(uo.getx(z)))
endif
Uo.FindType(topor, '-1', 'backpack')
while uo.findcount('finditem') > 0
Uo.FindType(topor, '-1', 'backpack')
UO.MoveItem('finditem','0', korobka_topor)
wait(1000)
wend
Uo.FindType(carptools, '-1', 'backpack')
while uo.findcount('finditem') > 0
Uo.FindType(carptools, '-1', 'backpack')
UO.MoveItem('finditem','0', korobka_topor)
wait(1000)
wend
i = 0
repeat
Uo.FindType(topor ,'-1',korobka_topor)
UO.Grab('1','finditem')
wait(1000)
i = (i + 1)
until i == 4
i = 0
repeat
Uo.FindType(carptools ,'-1',korobka_topor)
UO.Grab('1','finditem')
wait(1000)
i = (i + 1)
Uo.FindType(carptools ,'-1',korobka_topor)
until i == 2 or uo.findcount() == 0
endsub
Sub Vihod()
var t = uo.timer()
uo.waittargetobject('0x758AD64C')
uo.findtype(nognizi,-1,korobka_topor)
uo.useobject(uo.getserial('finditem'))
repeat
wait(1000)
until uo.injournal("могли") or uo.timer() >= t + 150
uo.usetype(havka)
uo.lclick(320,285)
EndSub
Sub rub1()
var xx,yy, tile
UO.Print("Faza nomber One!")
UO.DeleteJournal()
Rubka(3299, 1688, 2871)
Rubka(3280, 1688, 2868)
Rubka(3280, 1688, 2865)
Rubka(3283, 1688, 2862)
Rubka(3290, 1688, 2856)
Rubka(3302, 1692, 2856)
Rubka(3299, 1692, 2859)
Rubka(3286, 1692, 2862)
Rubka(3288, 1692, 2865)
Rubka(3280, 1692, 2868)
Rubka(3280, 1692, 2871)
Rubka(3299, 1696, 2871)
Rubka(3277, 1696, 2865)
Rubka(3283, 1696, 2862)
Rubka(3302, 1696, 2859)
Rubka(3277, 1696, 2856)
Rubka(3277, 1700, 2856)
Rubka(3296, 1700, 2862)
Rubka(3283, 1700, 2868)
Rubka(3286, 1704, 2865)
Rubka(3286, 1704, 2862)
Rubka(3277, 1704, 2859)
Rubka(3302, 1704, 2853)
Rubka(3290, 1708, 2850)
Rubka(3299, 1708, 2847)
endsub
Sub rub2()
var xx,yy, tile
UO.Print("Faza nomber Two!")
UO.DeleteJournal()
Rubka(3299, 1712, 2862)
Rubka(3283, 1712, 2859)
Rubka(3296, 1712, 2856)
Rubka(3280, 1712, 2853)
Rubka(3288, 1712, 2850)
Rubka(3280, 1716, 2853)
Rubka(3283, 1716, 2859)
Rubka(3286, 1716, 2862)
Rubka(3293, 1724, 2859)
Rubka(3277, 1724, 2856)
Rubka(3280, 1728, 2859)
Rubka(3293, 1728, 2856)
Rubka(3296, 1732, 2856)
Rubka(3277, 1732, 2853)
Rubka(3277, 1732, 2850)
Rubka(3277, 1728, 2850)
Rubka(3283, 1732, 2847)
Rubka(3290, 1732, 2844)
Rubka(3299, 1736, 2847)
Rubka(3296, 1740, 2850)
Rubka(3280, 1740, 2847)
Rubka(3277, 1740, 2844)
Rubka(3293, 1740, 2841)
Rubka(3293, 1740, 2838)
Rubka(3290, 1740, 2835)
Rubka(3299, 1740, 2832)
EndSub
sub rub3()
var xx,yy, tile
UO.Print("Faza nomber Thre!")
UO.DeleteJournal()
Rubka(3230, 1749, 2846)
Rubka(3293, 1748, 2844)
Rubka(3290, 1748, 2838)
Rubka(3280, 1748, 2832)
Rubka(3283, 1752, 2835)
Rubka(3299, 1752, 2838)
Rubka(3277, 1752, 2841)
Rubka(3277, 1752, 2844)
Rubka(3293, 1760, 2841)
Rubka(3296, 1760, 2838)
Rubka(3288, 1756, 2838)
Rubka(3288, 1756, 2835)
Rubka(3296, 1760, 2835)
Rubka(3283, 1760, 2832)
Rubka(3277, 1764, 2835)
Rubka(3293, 1764, 2832)
Rubka(3283, 1764, 2829)
Rubka(3290, 1768, 2829)
Rubka(3280, 1768, 2826)
Rubka(3296, 1772, 2823)
Rubka(3296, 1768, 2820)
Rubka(3277, 1764, 2820)
Rubka(3277, 1760, 2820)
Rubka(3302, 1760, 2817)
Rubka(3293, 1764, 2817)
Rubka(3293, 1768, 2817)
Rubka(3293, 1772, 2817)
Rubka(3296, 1776, 2817)
Rubka(3296, 1780, 2817)
Rubka(3290, 1784, 2817)
Rubka(3288, 1788, 2817)
endsub
sub rub4()
var xx,yy, tile
UO.Print("Faza nomber Thre!")
UO.DeleteJournal()
Rubka(3286, 1644, 2853)
Rubka(3283, 1644, 2856)
Rubka(3293, 1644, 2859)
Rubka(3299, 1644, 2862)
Rubka(3288, 1644, 2865)
Rubka(3286, 1644, 2871)
Rubka(3302, 1644, 2874)
Rubka(3283, 1644, 2877)
Rubka(3288, 1648, 2880)
Rubka(3302, 1648, 2874)
Rubka(3296, 1648, 2871)
Rubka(3280, 1648, 2868)
Rubka(3302, 1648, 2865)
Rubka(3290, 1652, 2868)
Rubka(3288, 1652, 2871)
Rubka(3293, 1652, 2877)
Rubka(3286, 1652, 2880)
Rubka(3296, 1656, 2880)
Rubka(3299, 1656, 2877)
Rubka(3280, 1660, 2880)
Rubka(3302, 1660, 2877)
Rubka(3277, 1664, 2880)
Rubka(3302, 1664, 2877)
Rubka(3288, 1664, 2874)
Rubka(3302, 1668, 2874)
Rubka(3280, 1672, 2877)
Rubka(3302, 1672, 2874)
Rubka(3299, 1672, 2871)
Rubka(3283, 1672, 2868)
Rubka(3283, 1672, 2865)
Rubka(3302, 1672, 2862)
Rubka(3299, 1672, 2859)
Rubka(3280, 1672, 2856)
Rubka(3277, 1672, 2853)
Rubka(3293, 1672, 2850)
endsub
Sub Rubka(tile, xx, yy)
UO.DeleteJournal()
CheckLag()
if uo.gethp() == uo.getmaxhp() then
Walker(xx,yy)
wait(777)
t = uo.timer()
UO.WaitTargetTile(Str(tile), Str(xx), Str(yy), '0')
UO.UseType(topor)
repeat
wait(1000)
until UO.InJournal(ms2) OR UO.InJournal(ms1) OR (t + maxtime) < UO.Timer() OR UO.InJournal(ms3) or uo.gethp() < uo.getmaxhp()
havka()
carp(0)
UO.DeleteJournal()
else
endif
EndSub
Sub Carp(x)
dim ColorLog[7]
ColorLog[1]= '0x0000'
ColorLog[2]= '0x01BF';good
ColorLog[3]= '0x0096'
ColorLog[4]= '0x0164'
ColorLog[5]= '0x01C3'
ColorLog[6]= '0x0030'
ColorLog[7]= '0x0028'
var colorchoice, k
if x == 0 then
IF UO.Weight > MaxVes Then
for k=1 to 7
UO.FindType(log,ColorLog[k],'backpack')
if uo.getquantity(uo.getserial('finditem')) > 0 then
uo.waittargetobject(uo.getserial('finditem'))
UO.DeleteJournal()
UO.UseType(carptools)
wait(1500)
UO.LClick(112,120);materials
wait(1000)
UO.LClick(73,178);doski
wait(15000)
UO.LClick(492,431);otmena
endif
next
EndIF
else
for k=1 to 7
UO.FindType(log,ColorLog[k],'backpack')
if uo.getquantity(uo.getserial('finditem')) > 0 then
uo.waittargetobject(uo.getserial('finditem'))
UO.DeleteJournal()
UO.UseType(carptools)
wait(1500)
UO.LClick(112,120);materials
wait(1000)
UO.LClick(73,178);doski
wait(15000)
UO.LClick(492,431);otmena
endif
next
endif
Endsub
Sub shaft()
UO.FindType(log,'-1','backpack')
while UO.FindCount() > 0
UO.DeleteJournal()
UO.CancelMenu()
UO.WaitTargetType(log)
UO.UseType(dagger)
UO.WaitMenu("Arrows", "Make shaft", "Arrows", "Make shaft");
wait(2000)
wend
endsub
Sub hill()
Var shit = '0x1B76'
Var kirka = '0x0F51 '
Uo.Equipt('Rhand', kirka)
Uo.Equipt('Lhand', shit)
repeat
If UO.GetHP() < UO.GetMaxHp()-40 Then
uo.waittargetobject('self')
Uo.UseType('0x0E21')
Repeat
;Uo.Press(120)
wait(3500)
Uo.Equipt('Rhand', kirka)
Uo.Equipt('Lhand', shit)
wait(4000)
Until UO.GetHP() >= UO.GetMaxHp() - 10
EndIf
wait(1000)
Until Uo.Dead()
EndSub
;var Prec=1 # Как близко следует подойти к цели (Precision)
;var MaxTraceDistance=5 # Максимальная длина обхода. Желательно ставить с расчета возможных препятсвий. Если ставить очень большие числа, кодилка может пойти в обход пол мира чтобы дойти к соседнему дереву.
;var Speed=2 # Длина шага. Сколько шагов делать за раз. Выше 3 ставить смысла нет. Тоесть тупое умножение шагов. Для ламбера идеально 3, для майнинга - 1.
;var StepTimeOut=400 # Если уперлись в неопознанный обьект, сколько мсек ждать сдвига с места. Если по простому - таймаут шага. Если поставить сильно маленькие, ходилка начнет трассировать пустые места.
;UO.SetGlobal("Logging","1") # - показывать отладочные сообщения.
;UO.SetGlobal("BlindWalk","0") # - не использовать АСМ, а использовать ходьбу наощупь.
;В функции IsPass, содержиться список проходимых тайлов.
;Walker(X,Y) - идем к цели с координатами X,Y. Ничего не возвращает.
;Tracer(StartDir,Direction) - трассировка 1 шага. Возвращает направление по которому получилось сдвинуться с места. StartDir - направление последнего движения, Direction (-1 или +1) направление обхода. -1 - по часовой стрелке, +1 против часовой стрелки. Направления скрипт использует личного формата:
;1 - влево вниз
;2 - вниз
;3 - вправо вниз
;4 - вправо
;5 - вправо вверх
;6 - вверх
;7 - влево вверх
;8 - влево
;Tracer(StartDir,Direction) - идеально подходит для рыбалки вдоль берега так как она будет обходить берег бесконечно (1 запуск функции = 1 шаг обхода).
#####################################################
# WW W WW AA LL Kk KK EE EE RRR #
# WW W WW AA A LL Kk K EEE R R #
# WW W WW AA A LL KKK EEEEE R R #
# WW WW WW AAAA LL KKK EEE RRR #
# WWW WWW AA A LLLL KK Kk EE EE R RR #
#####################################################
var Prec=1
var MaxTraceDistance=9
var Speed=1
var StepTimeOut=1000
Sub Walker(GoX,GoY)
UO.SetGlobal("Logging","0")
UO.SetGlobal("BlindWalk","0")
var LastDir
UO.SetGlobal("GlobalGoX",str(GoX))
UO.SetGlobal("GlobalGoY",str(GoY))
while not IsEnd(GoX,GoY)
LogInfo('Just walking')
LastDir=GoUntilHit(GoX,GoY)
if not IsEnd(GoX,GoY) then
LogInfo('Tracing')
FullAroundTrace(LastDir,GoX,GoY)
end if
wend
end sub
Sub FullAroundTrace(StartDir,GoX,GoY)
var LineX=UO.GetX()
var LineY=UO.GetY()
var CurDir=StartDir
var Direction=CountDirection(GoX,GoY,CurDir)
var StartX,StartY
var MovesDone=0
repeat
StartX=UO.GetX()
StartY=UO.GetY()
CurDir=Tracer(CurDir,Direction)
if (CurDir==GetDir(GoX,GoY)) then
return
endif
if MovesDone>0 and PrevMoveCross(GetDirToDir(UO.GetDir()),LineX,LineY,GoX,GoY,StartX,StartY) then
return
end if
MovesDone=MovesDone+1
CurDir=AddToDir(CurDir,-Direction)
until MovesDone>MaxTraceDistance
end sub
Sub CountDirection(GoX,GoY,StartDir)
var GoDir=GetDir(GoX,GoY)
var MyX=UO.GetX()
var MyY=UO.GetY()
if GoDir<StartDir then
return -1
end if
if GoDir>StartDir then
return 1
end if
if Abs(MyX-GoX)>Abs(MyY-GoY) then
if (GoDir==3 and GoY>MyY) OR (GoDir==7 and GoY<MyY) then
return -1
else
return 1
end if
else
if (GoDir==1 and GoX<MyX) or (GoDir==5 and GoX>MyX) then
return -1
else
return 1
end if
end if
end sub
Sub PrevMoveCross(Dir,x1,y1,x2,y2,StartX,StartY)
var x3,y3,x4,y4
x3=StartX
y3=StartY
x4=StartX+(XFromDir(Dir)-StartX)*Speed
y4=StartY+(YFromDir(Dir)-StartY)*Speed
return LinesCrossing(x1,y1,x2,y2,x3,y3,x4,y4)
end sub
Sub LinesCrossing(x1,y1,x2,y2,x3,y3,x4,y4)
if x1==x3 and y1==y3 then
return false
end if
var z1=(x3-x1)*(y2-y1)-(y3-y1)*(x2-x1)
var z2=(x4-x1)*(y2-y1)-(y4-y1)*(x2-x1)
if z1*z2>0 then
return false
else
LogInfo('Vector info:')
LogInfo('x1= '+str(x1))
LogInfo('y1= '+str(y1))
LogInfo('x2= '+str(x2))
LogInfo('y2= '+str(y2))
LogInfo('x3= '+str(x3))
LogInfo('y3= '+str(y3))
LogInfo('x4= '+str(x4))
LogInfo('y4= '+str(y4))
return true
end if
end sub
Sub IsDiap(X,X0,X1)
if X<=X0+Prec and X>=X1-Prec OR X>=X0-Prec and X<=X1+Prec then
return true
end if
return false
end sub
Sub GoUntilHit(GoX,GoY)
var LastDir
LastDir=GetDir(GoX,GoY)
var CouldMove
repeat
LastDir=GetDir(GoX,GoY)
if LastDir<>0 and not IsEnd(GoX,GoY) then
CouldMove=TryDir(LastDir)
end if
until LastDir==0 or IsEnd(GoX,GoY) or not CouldMove
return LastDir
end sub
Sub IsEnd(GoX,GoY)
if Abs(UO.GetX()-GoX)<=Prec and Abs(UO.GetY()-GoY)<=Prec then
LogInfo('END FOUND')
return true
else
return false
end if
end sub
Sub GetDir(GoX,GoY)
var MyX=UO.GetX()
var MyY=UO.GetY()
var DiffX=Abs(UO.GetX()-GoX)
var DiffY=Abs(UO.GetY()-GoY)
var GoDir=0
if (DiffX/(DiffY+0.1))>=2 then
if (MyX>GoX) then
GoDir=7
else
GoDir=3
end if
else
if (DiffY/(DiffX+0.1))>=2 then
if (MyY>GoY) then
GoDir=5
else
GoDir=1
end if
else
if (MyX>GoX) and (MyY>GoY) then
GoDir=6
else
if (MyX>GoX) and (MyY<GoY) then
GoDir=8
else
if (MyX<GoX) and (MyY>GoY) then
GoDir=4
else
if (MyX<GoX) and (MyY<GoY) then
GoDir=2
end if
end if
end if
end if
end if
end if
return GoDir
end sub
Sub Tracer(StartDir,Direction)
var CurDir=StartDir
var Result
repeat
Result=TryDir(CurDir)
if not Result then
CurDir=AddToDir(CurDir,Direction)
end if
until Result
return Result
end sub
Sub AddToDir(Dir,Cnt)
var NewDir=Dir
NewDir=NewDir+Cnt
while NewDir>8
NewDir=NewDir-8
wend
while NewDir<1
NewDir=NewDir+8
wend
return NewDir
end sub
Sub TryDir(Dir)
var BegX=UO.GetX() # Ia?aeuiia O
var BegY=UO.GetY() # Ia?aeuiia Y
var Counter=0
var GoX=BegX
var GoY=BegY
GoX=XFromDir(Dir)
GoY=YFromDir(Dir)
if not IsPass(UO.asmMapGetTile(GoX,GoY,0)) then
LogInfo(str(UO.asmMapGetTile(GoX,GoY,0))+' is not passable')
return false
end if
return TurnAndGoDir(Dir)
end sub
Sub XFromDir(Dir)
if Dir==2 OR Dir==3 Or Dir==4 then
return (UO.GetX()+1)
end if
if Dir==6 OR Dir==7 Or Dir==8 then
return (UO.GetX()-1)
end if
return (UO.GetX())
end sub
Sub YFromDir(Dir)
if Dir==8 OR Dir==1 Or Dir==2 then
return (UO.GetY()+1)
end if
if Dir==4 OR Dir==5 Or Dir==6 then
return (UO.GetY()-1)
end if
return (UO.GetY())
end sub
Sub TurnAndGoDir(Dir)
var StartDir=GetDirToDir(UO.GetDir())
var StartX=UO.GetX()
var StartY=UO.GetY()
var EndDir
var Counter=0
GoDir(Dir)
repeat
EndDir=GetDirToDir(UO.GetDir())
wait(100)
Counter=Counter+1
until StartDir<>EndDir or StartY<>UO.GetY() or StartX<>UO.GetX() or Counter>=8
if Counter>=8 then
return 0
end if
if StartY<>UO.GetY() or StartX<>UO.GetX() then
return Dir
else
GoDir(Dir)
repeat
wait(100)
Counter=Counter+1
until StartY<>UO.GetY() or StartX<>UO.GetX() or Counter>=StepTimeOut/100
if Counter>=StepTimeOut/100 then
LogInfo('Step timeout reached')
return 0
else
return Dir
end if
end if
end sub
sub Test2()
Tracer(7,1)
end sub
Sub GetDirToDir(GotDir)
var ChangedDir=-GotDir
ChangedDir=AddToDir(ChangedDir,5)
return ChangedDir
end sub
Sub DirToInj(Dir)
var OutDir
if Dir==1 then
OutDir=1
end if
if Dir==2 then
OutDir=2
end if
if Dir==3 then
OutDir=3
end if
if Dir==4 then
OutDir=6
end if
if Dir==5 then
OutDir=9
end if
if Dir==6 then
OutDir=8
end if
if Dir==7 then
OutDir=7
end if
if Dir==8 then
OutDir=4
end if
return OutDir
end sub
Sub GoDir(Dir)
dim Dirs[9]
Dirs[1]=35
Dirs[2]=40
Dirs[3]=34
Dirs[4]=39
Dirs[5]=33
Dirs[6]=38
Dirs[7]=36
Dirs[8]=37
var DistanceX=Abs(UO.GetX()-val(UO.GetGlobal("GlobalGoX")))
var DistanceY=Abs(UO.GetY()-val(UO.GetGlobal("GlobalGoY")))
var GoDistance
if (DistanceX-Prec)<Speed then
GoDistance=DistanceX-Prec
else
if (DistanceY-Prec)<Speed then
GoDistance=DistanceY-Prec
else
GoDistance=Speed
endif
endif
UO.Press(Dirs[Dir],GoDistance)
end sub
Sub IsPass(ID)
if UO.GetGlobal("BlindWalk") then
return true
endif
dim Types[60]
Types[0]=4
Types[1]=3
Types[2]=5
Types[3]=6
Types[4]=203
Types[5]=197
Types[6]=212
Types[7]=242
Types[8]=241
Types[9]=196
Types[10]=198
Types[11]=199
Types[12]=1713
Types[13]=1724
Types[14]=243
Types[15]=240
Types[16]=219
Types[17]=209
Types[18]=214
Types[19]=57
Types[20]=24
Types[21]=52
Types[22]=22
Types[23]=56
Types[24]=23
Types[25]=25
Types[26]=58
Types[27]=53
Types[28]=61
Types[29]=59
Types[30]=580
Types[31]=585
Types[32]=581
Types[33]=582
Types[34]=583
Types[35]=584
Types[36]=596
Types[37]=152
Types[38]=81
Types[39]=93
Types[40]=95
Types[41]=83
Types[42]=142
Types[43]=503
Types[44]=141
Types[45]=143
Types[46]=500
Types[47]=1088
Types[48]=1089
Types[49]=1086
Types[50]=155
Types[51]=501
Types[52]=98
Types[53]=90
Types[54]=502
Types[55]=1087
Types[56]=598
Types[57]=582
Types[58]=200
Types[59]=216
for var i=0 to 59
if Types[i]==ID then
return true
end if
next
return false
end sub
Sub LogInfo(Line)
if not UO.GetGlobal("Logging")=="0" then
UO.TextOpen()
UO.TextPrint(str(UO.GetX())+":"+str(UO.GetY())+" - "+str(Line));
end if
end sub
Sub Abs(X)
if X>0 then
return X
else
return (-X)
end if
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.Exec('terminate all')
;UO.Exec('exec fishing')
UO.TextOpen()
UO.TextPrint('Disconnected & Reconnected @ '+ReconnectTime)
;UO.Say(ms3)
carp()
UO.Exec('terminate lumberjack')
gohome()
wait(2000)
rp = 1
UO.Exec('exec lumberjack')
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 CheckLag()
if uo.Waiting()>0 then
uo.Exec('canceltarget')
end if
uo.Click('backpack')
repeat
wait(50)
until uo.InJournal('backpack')
end sub
sub havka()
If UO.InJournal("Вам не мешало") or UO.InJournal("быка")or UO.InJournal("голод") then
repeat
uo.findtype(havka,-1,'backpack')
UO.UseType(havka)
wait(400)
until uo.injournal("сытым") or uo.injournal("елись") or uo.findcount() == 0
else
endIf
uo.deletejournal()
wait(50)
endsub
sub scroll()
uo.exec('set finddistance 1')
var scrol = '0x0E34'
var i,x,y,z
while true
if uo.weight >=1990 then
uo.findtype(scrol,-1,'ground')
if uo.findcount() > 0 then
i = uo.getserial('finditem')
x = uo.getx(i)
y = uo.gety(i)
z = uo.getz(i)
uo.findtype(scrol,-1,'backpack')
uo.moveitem(uo.getserial('finditem'),-1,i,x,y,z)
wait(5000)
else
uo.findtype(scrol,-1,'backpack')
uo.drophere('finditem')
endif
else
wait(5000)
endif
wend
endsub