Попытка написания скрипта на добычу ресурсов, который юзает журнал, но пофиг на сами сообщения.
Для работы на рунке, а также сфере с измененными месагами.
Code:
sub main()
; + EDIT ++++++++++++++++++
var zona = 6;
; +++++++++++++++++++++++++
var m, i, a, tr = 1, tX, tY
for i=1 to zona
if tr then
m = - 6
else
m = 6
endif
for a=1 to zona
tY = UO.GetX() + m
GotoXY(tX,tY)
if Lamber() then
return 0
endif
next
tX = UO.GetY() - 6
if tr then
tr = 0
else
tr = 1
endif
next
endsub
Sub Lamber()
var X, Y, MaxRange = 3, LTimer
for Y = -MaxRange to MaxRange
for X = -MaxRange to MaxRange
if Tree(UO.GetX()+X, UO.GetY()+Y) then
repeat
UO.Warmode(0)
Util();
LTimer = UO.Timer()
UO.DeleteJournal()
UO.WaitTargetTile(Tree(UO.GetX()+X, UO.GetY()+Y), UO.GetX()+X, UO.GetY()+Y, UO.GetZ())
UO.UseObject("_0x0F43")
repeat
wait(100)
until UO.InJournal("is attacking you") || UO.JournalSerial(UO.InJournal(" ") -1) == "0xFFFFFFFF" || UO.Dead()
if UO.InJournal("is attacking you") || UO.Weight >= 40 + UO.STR * 3.5 || UO.Dead() then
if UO.Dead() then
;Resurrection()
else
UO.Cast('Recall', '^0x1F14')
endif
return 1
endif
until (UO.Timer() - LTimer) < 6 || UO.Dead()
endif
next
next
return 0
end sub
Sub Tree(X,Y)
var i
if UO.PrivateGetTile(X, Y, -1, 3274, 3302) then
for i=3274 to 3302
if UO.PrivateGetTile(X, Y, -1, i, i) then
if i==3278 || i==3279 || i==3281 || i==3282 || i==3284 || i==3285 || i==3287 || i==3289 then
return 0
endif
if i==3291 || i==3292 || i==3294 || i==3295 || i==3297 || i==3298 || i==3300 || i==3301 then
return 0
endif
return i
end if
next
end if
return 0
end sub
Sub Util()
while not UO.Hidden()
UO.UseSkill('Stealth')
repeat
wait(100)
until UO.JournalSerial(UO.InJournal(" ") -1) == "0xFFFFFFFF"
UO.DeleteJournal()
wend
endsub
Sub GotoXY(x,y)
var myX, myY, lastX = 0,lastY = 0, i, halt=0, z, r = 0
for i = 1 to 60
MyX = UO.GetX();
MyY = UO.GetY();
Util();
if LastX == MyX && LastY == MyY then
halt = halt + 1
else
halt=0
end if
if halt >= 10 then
if UO.GetDir() == 1 then
UO.Press(40,5)
end if
if UO.GetDir() == 3 then
UO.Press(37,5)
end if
if UO.GetDir() == 5 then
UO.Press(38,5)
end if
if UO.GetDir() == 7 then
UO.Press(39,5)
end if
halt=15
end if
if abs(x - myX) <= 1 && abs(y - myY) <= 1 then
return 1
end if
if x <= MyX then
if y <= MyY then
UO.Press(38,3)
end if
UO.Press(37,3)
else
if y <= MyY then
UO.Press(39,3)
end if
UO.Press(40,3)
end if
lastX = myX
lastY = myY
wait(200)
next
return 0
end sub
Sub abs(x)
if x > 0 then
return x
end if
return -x
end sub