Скрипт на Lumberjacking
Posted: 2015-11-08 17:42:56
Готовый скрипт на лумбер.
Собирает реги, еду из сундука, после летит в лес и ходит по координатам деревьев, рубит до макс. веса и летит домой. После все заново.
Пропишите свои типы, для сундука еды и прочего. Впишите координаты места на котором стоите и готово
зы: все ответы на вопросы найдете в теме.
Удачи!
отдельное спасибо Incorrect User'у за то что переписал это и заставил работать.
Собирает реги, еду из сундука, после летит в лес и ходит по координатам деревьев, рубит до макс. веса и летит домой. После все заново.
Пропишите свои типы, для сундука еды и прочего. Впишите координаты места на котором стоите и готово

зы: все ответы на вопросы найдете в теме.
Удачи!
отдельное спасибо Incorrect User'у за то что переписал это и заставил работать.
Code: Select all
;***********************************************************************************
; Lumber
;***********************************************************************************
sub Autostart()
uo.setglobal("Recall", "Off")
end sub
sub Lumberjacking()
; Read 0/1 - Вкл/Выкл сбор координат.
; Distance - расстояние в тайлах, на которое нужно подойти к дереву.
; Weight - макс. вес при котором реколимся домой.
; Hatchet - тип топора.
; Msg - всевозможные сообщения.
; Endmsg - сообщения при которых переходим к другому дереву.
var read = 1
var lag
var skip
var infinity = 1
var distance = 3
var weight = 650
var hatchet = "0x0F47"
var guardian = "0x0190"
var msg = "You put the logs|You see|Your skill|You have"
var endmsg = "You can't reach this", starttime, endtime, flag, number, treecount = 0, clicks, TopX = 324, TopY = 65, i = 0, j = 0, k = 0, r = 0, q = 0, ii, jj, f
dim TreeX[5000], TreeY[5000], TreeT[5000]
dim TreeTile[29]
TreeTile[0]=3277
TreeTile[1]=3280
TreeTile[2]=3283
TreeTile[3]=3286
TreeTile[4]=3289
TreeTile[5]=3291
TreeTile[6]=3294
TreeTile[7]=3296
TreeTile[8]=3299
TreeTile[9]=3302
TreeTile[10]=3393
TreeTile[11]=3394
TreeTile[12]=3395
TreeTile[13]=3396
TreeTile[14]=3415
TreeTile[15]=3416
TreeTile[16]=3417
TreeTile[17]=3418
TreeTile[18]=3419
TreeTile[19]=3438
TreeTile[20]=3439
TreeTile[21]=3440
TreeTile[22]=3441
TreeTile[23]=3442
TreeTile[24]=3460
TreeTile[25]=3461
TreeTile[26]=3462
TreeTile[27]=3290
TreeTile[28]=3288
dim RuneID[3]
RuneID[0] = "0x41D24385" ; руна в лес1
RuneID[1] = "0x41D24387" ; руна в лес2
RuneID[2] = "0x41D24389" ; руна в лес3
uo.deletejournal()
if read == 0 then
uo.print("Collecting coordinates...")
repeat
clicks = 0
flag = 0
uo.usetype("0x0E21")
wait(500)
while uo.targeting()
wait(100)
wend
flag = 0
for k = 0 to 28
if uo.lasttile(0) == TreeTile[k] then
flag = 1
end if
next
if uo.lasttile(1) == uo.getx() and uo.lasttile(2) == uo.gety() then
flag = 2
end if
if flag == 1 then
treecount = treecount + 1
TreeX[treecount] = uo.lasttile(1)
TreeY[treecount] = uo.lasttile(2)
TreeT[treecount] = uo.lasttile(0)
uo.print("tree found"+str(treecount)+" : X = "+str(uo.Lasttile(1))+" Y = "+str(uo.LastTile(2))+" "+str(treecount))
end if
until (flag == 2) or (treecount == 5000)
SaveToFile(treecount, TreeX, TreeY, TreeT)
uo.print("Coordinates collected!")
uo.print("Trees found: " + str(treecount))
return
end if
repeat
for number = 0 to 2
uo.ignorereset()
if number == 0 then
f = file("C:\Users\Desktop\Injection_uo\trees.dat")
else
if number == 1 then
f = file("C:\Users\Desktop\Injection_uo\trees1.dat")
else
f = file("C:\Users\Desktop\Injection_uo\trees2.dat")
end if
end if
uo.print("Loading from file...")
f.open()
treecount = safe call f.ReadNumber()
for i = 1 to treecount
TreeT[i] = safe call f.ReadNumber()
TreeX[i] = safe call f.ReadNumber()
TreeY[i] = safe call f.ReadNumber()
next
f.close()
TakePut()
RecallToWood(RuneID[number])
skip = 0
repeat
for i = 1 to treecount
uo.pmove(TreeX[i], TreeY[i], distance)
lag = 0
repeat
uo.deletejournal(msg)
Hide()
uo.waittargettile(TreeT[i], TreeX[i], TreeY[i], uo.GetZ())
uo.usetype(hatchet)
starttime = now()
endtime = now() + 60
repeat
Save()
wait(100)
until uo.injournalbetweentimes(msg, starttime, -1) or uo.timer() > endtime or uo.dead()
if uo.injournal("Ïîäîëáèâ äåðåâî") then
lag = lag + 1
end if
until uo.injournal(endmsg) or lag > 4 or uo.weight >= weight or uo.dead()
if uo.weight >= weight then
skip = 1
break
end if
next
until i == treecount or skip == 1 or uo.dead()
if not uo.dead() then
RecallToHome()
else
uo.print("You Dead!")
uo.exec("Terminate all")
end if
next
until infinity == 0
end sub
sub SaveToFile(treecount, TreeX, TreeY, TreeT)
var f=file("C:\Users\Desktop\Injection_uo\trees.dat")
var s = 0, i = 0
f.open()
f.create()
s=safe call f.writeln(treecount)
for i = 1 to treecount
s=safe call f.writeln(str(TreeT[i])+" "+str(TreeX[i])+" "+str(TreeY[i]))
next
f.close()
end sub
sub RecallToHome()
var runeid = "0x40116A2C", x = 1781, y = 606, starttime, endtime, msg = "заклинание|anti-magic field disturbs|lack reagents", endmsg = "anti-magic field disturbs|lack reagents"
uo.deletejournal()
if uo.getglobal("Recall") == "Off" then
uo.setglobal("Recall", "On")
repeat
uo.deletejournal(msg)
uo.waittargetobject(runeid)
uo.cast("Recall")
starttime = now() + 500
endtime = now() + 2700
repeat
Save()
wait(100)
until (uo.getx() == x and uo.gety() == y) or uo.injournalbetweentimes(msg, starttime, endtime) or uo.dead()
until (uo.getx() == x and uo.gety() == y) or uo.injournal(endmsg) or uo.dead()
uo.setglobal("Recall", "Off")
end if
end sub
sub RecallToWood(runeid)
var starttime, endtime, msg = "заклинание|anti-magic field disturbs|lack reagents", endmsg = "anti-magic field disturbs|lack reagents"
uo.deletejournal()
if uo.getglobal("Recall") == "Off" then
uo.setglobal("Recall", "On")
repeat
uo.deletejournal(msg)
uo.waittargetobject(runeid)
uo.cast("Recall")
starttime = now() + 500
endtime = now() + 2700
repeat
Save()
wait(100)
until (uo.getx() == 000 and uo.gety() == 000) or (uo.getx() == 000 and uo.gety() == 000) or (uo.getx() == 000 and uo.gety() == 000) or uo.injournalbetweentimes(msg, starttime, endtime) or uo.dead()
until (uo.getx() == 000 and uo.gety() == 000) or (uo.getx() == 000 and uo.gety() == 000) or (uo.getx() == 000 and uo.gety() == 000) or uo.injournal(endmsg) or uo.dead()
uo.setglobal("Recall", "Off")
end if
end sub
sub TakePut()
var box = "0x4006FCA1", logs = "0x1BDD", i, r, s, info, food, quantity
dim Reg[4]
Reg[0] = "0x0F7A 10 Black Pearl"
Reg[1] = "0x0F7B 10 Blood Moss"
Reg[2] = "0x0F86 10 Mandrake Roots"
Reg[3] = "0x09D0 5 Food"
uo.opencontainer(box, 500)
while uo.findtype(logs, -1, "my")
uo.moveitem("finditem", 0, box)
wait(2000)
wend
for i = 0 to 3
r = getword(Reg[i], 1)
s = val(getword(Reg[i], 2))
if not uo.findtype(r, -1, "my") then
if not uo.findtype(r, -1, box) then
info = getword(Reg[i], 3)
uo.print("not enough" + info)
else
Save()
uo.moveitem("finditem", s, "backpack")
wait(2000)
end if
else
if uo.getquantity("finditem") < s then
quantity = s - uo.getquantity("finditem")
if not uo.findtype(r, -1, box) then
info = getword(Reg[i], 3)
uo.print("not enough" + info)
else
Save()
uo.moveitem("finditem", quantity, "backpack")
wait(2000)
end if
end if
end if
next
for food = 1 to 5
uo.usetype("0x09D0")
wait(500)
next
UO.WarMode(0)
UO.UseSkill('Meditation')
wait(20000)
uo.print("ready to go!")
end sub
sub Save()
if uo.injournal("World save has been initiated") then
uo.deletejournal("backpack|World save has been initiated")
uo.click("backpack")
while not uo.injournal("backpack")
wait(100)
wend
end if
end sub
sub Hide()
var msg = "неудалось|is attacking you", waittime
if not uo.hidden() then
repeat
UO.WarMode(0)
uo.deletejournal(msg)
UO.UseSkill('Hiding')
waittime = uo.timer() + 50
repeat
wait(100)
until uo.hidden() or uo.injournal(msg) or uo.timer() > waittime or uo.dead()
until uo.hidden()
end if
end sub