Page 2 of 4
Re: Помогите со скриптом на лумбер
Posted: 2015-11-16 08:39:07
by Incorrect User
У тебя ошибка, удали end if тут
1. Что значит "находили"? Появился человек, или монстр, или из хайда вышел или...?
2. Добавь в условия строку
Code: Select all
var infinity = 1 ; 0/1 Проходить по рунам один круг / Бесконечно
Добавь строку repeat перед строками
Code: Select all
for number = 0 to 2
uo.ignorereset()
Добавь строку until infinity == 0 перед строками
Лишние end if вставлять не обязательно

Re: Помогите со скриптом на лумбер
Posted: 2015-11-16 12:08:52
by Incorrect User
Да, и когда будет перевес, нужно будет выйти из цикла. Для этого добавь в условия
Добавь строку skip = 0 перед строками
Code: Select all
repeat
for i = 1 to treecount
uo.pmove(TreeX[i], TreeY[i], distance)
И замени часть
Code: Select all
if uo.weight >= weight then
RecallToHome()
end if
next
until i == treecount or uo.dead()
На
Code: Select all
if uo.weight >= weight then
skip = 1
break
end if
next
until i == treecount or skip == 1 or uo.dead()
Re: Скрипт на Lumberjacking
Posted: 2016-05-15 10:07:18
by Hydromarine
Подскажите на какой версии этот скрипт нормально работает?
У меня на последней, после маркировки деревьев бинтами, когда я последний бинт накладываю на себя вылетает ошибка "Unhandled exception in parser"
Re: Скрипт на Lumberjacking
Posted: 2016-05-15 12:14:07
by Incorrect User
На последней, у всех работает. Возможно у тебя не может создать текстовый файл, из за закрытого доступа или несуществующих директорий, вот и все. Проверяй адреса и файлы по ним
file("C:\Users\Edgard\Desktop\Injection_uo\trees.dat")
else
if number == 1 then
f = file("C:\Users\Edgard\Desktop\Injection_uo\trees1.dat")
else
f = file("C:\Users\Edgard\Desktop\Injection_uo\trees2.dat")
Их все и другие в скрипте, нужно заменить на свои.
Re: Скрипт на Lumberjacking
Posted: 2016-05-15 15:59:43
by Hydromarine
Incorrect User wrote:На последней, у всех работает. Возможно у тебя не может создать текстовый файл, из за закрытого доступа или несуществующих директорий, вот и все. Проверяй адреса и файлы по ним
file("C:\Users\Edgard\Desktop\Injection_uo\trees.dat")
else
if number == 1 then
f = file("C:\Users\Edgard\Desktop\Injection_uo\trees1.dat")
else
f = file("C:\Users\Edgard\Desktop\Injection_uo\trees2.dat")
Их все и другие в скрипте, нужно заменить на свои.
Он у меня как то странно работает.
В сундуке инвизки руны и реги, он пытается добрать оттуда провизию, в итоге находит первую руну, реколится по ней на место и стоит ничего не делат.
Такое чувство, что ему не хватает каких то координат. Куда копать? Играю на оском фри.
Re: Скрипт на Lumberjacking
Posted: 2016-05-16 08:12:44
by Incorrect User
Я так понимаю что ошибка "Unhandled exception in parser" ушла. Новые темы штамповать не обязательно. Смотри чтобы в строке ввода текста в клиенте всегда было пусто, иначе он не может ходить. Для начала замени все сообщения из
Code: Select all
var msg = "Подолбив дерево|“ут не осталось пригодной древесины|Ёто слишком далеко отсюда|You put the logs|You see|Your skill|You have|What do you want to use this on?"
var endmsg = "Тут не осталось пригодной древесины|Ёто слишком далеко отсюда|You can't reach this"
на сообщения вашего сервера и пробуй, причём сообщения лучше копировать из журнала
_showjournal 50 Инжект чувствителен к регистру, так что от руки лучше не писать, чтобы не наделать ошибок.
Re: Скрипт на Lumberjacking
Posted: 2016-05-16 08:47:57
by Hydromarine
Да, ошибку парсера победил, не хватало видимо галки в мэйн.
Месаджи с сервера все заменил копипастом из журнала, но результата это не дает.
Чар стоит у сундука, смотрит что там есть, добирает реги, находит руну, летит по ней в лес, подходит к дереву на дистанцию 2, но рубить не начинает, а слева бегут просто строки "What do you want to use this on?"
Re: Скрипт на Lumberjacking
Posted: 2016-05-16 09:20:03
by Incorrect User
Скриншот журнала покажи, журнал клиента, разверни полностью в этот момент. И часть скрипта с сообщениями что ты переписал, сюда скопируй.
Re: Скрипт на Lumberjacking
Posted: 2016-05-16 10:01:14
by Hydromarine
Code: Select all
var msg = "What do you want to use this on?|You put the logs in your pack.|You hack the tree for a while, but fail to produce any useable wood."
var endmsg = "Тут не осталось пригодной древесины. Нечего рубить.|Вы вне прямого доступа к этому месту.", starttime, endtime, flag, number, treecount = 0, clicks, TopX = 324, TopY = 65, i = 0, j = 0, k = 0, r = 0, q = 0, ii, jj, f


Re: Скрипт на Lumberjacking
Posted: 2016-05-16 10:04:00
by Incorrect User
А, ну понятно. В msg должны быть вообще все сообщения после рубки. Парень которому делал намутил там что-то свое, я переделал нормально, сейчас дам целую версию. Пока на вкладке main сними все галки и проставишь обязательно: Undead, Light, Premit Vars Loopback, Clear memory, Autostart, Track World Items.
Re: Скрипт на Lumberjacking
Posted: 2016-05-16 10:09:48
by Incorrect User
А топор тыкал без остановки потому что ты сообщение о его использовании вписал, что совершенно ни к чему. Ставишь галки на вкладке Main как я сказал, копируешь заново весь скрипт что ниже, заполняешь в каждой функции свои данные, которые неверны или неуказаны(id сундуков, координаты рун, сообщения хайда и тд) и перезапускаешь клиент и вперед. Возможно потом появятся еще какие либо сообщения, нужно будет просто их добавить. Вот как должно было выглядеть все
Code: Select all
sub Autostart()
uo.setglobal("Recall", "Off")
end sub
sub Lumberjacking()
var read = 0 ; 0/1 - Выкл/Вкл сбор координат
var infinity = 1 ; 0/1 Проходить по рунам Один круг / Бесконечно
var distance = 3 ; Расстояние в тайлах, на которое нужно подойти к дереву
var weight = 650 ; максимальный вес, при достижении которого реколимся домой
var hatchet = "0x0F47" ; тип топора
var msg = "log in your pack|logs in your pack|You hack the tree|Тут не осталось пригодной древесины|Вы вне прямого доступа к этому месту" ; все возможные сообщения после попытки рубки дерева
var endmsg = "Тут не осталось пригодной древесины|Вы вне прямого доступа к этому месту" ; сообщения после рубки, при появлении которых переходим к другому дереву
var skip, starttime, endtime, flag, number, treecount = 0, clicks, i, k, 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
if read == 1 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)
repeat
uo.deletejournal(msg)
Hide()
uo.waittargettile(TreeT[i], TreeX[i], TreeY[i], uo.GetZ())
uo.usetype(hatchet)
starttime = now()
endtime = uo.timer() + 60
repeat
Save()
wait(100)
until uo.injournalbetweentimes(msg, starttime, -1) or uo.timer() > endtime or uo.dead()
until uo.injournal(endmsg) 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 = "id руны в дом", starttime, endtime, msg = "spell fizzles|anti-magic field disturbs|lack reagents", endmsg = "anti-magic field disturbs|lack reagents"
var x = 000, y = 000 ; Координаты X и Y тайла куда прилетаешь по руне
uo.deletejournal(msg)
if uo.getglobal("Recall") == "Off" then
uo.setglobal("Recall", "On")
repeat
uo.deletejournal(msg)
uo.waittargetobject(runeid)
uo.cast("Recall")
starttime = now()
endtime = uo.timer() + 40
repeat
Save()
wait(100)
until (uo.getx() == x and uo.gety() == y) or uo.injournalbetweentimes(msg, starttime, -1) or uo.timer() > 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 = "spell fizzles|anti-magic field disturbs|lack reagents", endmsg = "anti-magic field disturbs|lack reagents"
var x = 000, y = 000 ; Координаты X и Y тайла куда прилетаешь по первой руне
var x2 = 000, y2 = 000 ; Координаты X и Y тайла куда прилетаешь по второй руне
var x3 = 000, y3 = 000 ; Координаты X и Y тайла куда прилетаешь по третьей руне
uo.deletejournal(msg)
if uo.getglobal("Recall") == "Off" then
uo.setglobal("Recall", "On")
repeat
uo.deletejournal(msg)
uo.waittargetobject(runeid)
uo.cast("Recall")
starttime = now()
endtime = uo.timer() + 40
repeat
Save()
wait(100)
until (uo.getx() == x and uo.gety() == y) or (uo.getx() == x2 and uo.gety() == y2) or (uo.getx() == x3 and uo.gety() == y3) or uo.injournalbetweentimes(msg, starttime, -1) or uo.timer() > endtime or uo.dead()
until (uo.getx() == x and uo.gety() == y) or (uo.getx() == x2 and uo.gety() == y2) or (uo.getx() == x3 and uo.gety() == y3) or uo.injournal(endmsg) or uo.dead()
uo.setglobal("Recall", "Off")
end if
end sub
sub TakePut()
var box = "ID сундука с ресурсами", 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
end sub
sub Save()
var msg = "backpack|World save has been initiated"
if uo.injournal("World save has been initiated") then
uo.deletejournal(msg)
uo.click("backpack")
repeat
wait(100)
until uo.injournal("backpack")
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() or uo.dead()
end if
end sub
Re: Скрипт на Lumberjacking
Posted: 2016-05-16 10:14:03
by Hydromarine
Низкий Вам поклон! Сейчас буду тестить, по результату отпишусь.
Re: Скрипт на Lumberjacking
Posted: 2016-05-16 10:31:59
by Incorrect User
Можно убрать, ошметки от других неизвестных частей.
Re: Скрипт на Lumberjacking
Posted: 2016-05-16 12:17:52
by Hydromarine
Incorrect User wrote:Можно убрать, ошметки от других неизвестных частей.
Странно, но он теперь стоит перед сундуком и в цикле пытается среколиться по руне в лес, но при этом сам себя физлит.
Re: Скрипт на Lumberjacking
Posted: 2016-05-16 13:18:30
by Incorrect User
В старой версии был таймер не рабочий, тут поправил, на рекол давалось 2.7 сек, увеличил до 4.
Замени в реколах домой и в лес строки
Code: Select all
starttime = now() + 500
endtime = now() + 27
на
Code: Select all
starttime = now()
endtime = uo.timer() + 40
Re: Скрипт на Lumberjacking
Posted: 2016-05-16 13:30:45
by Hydromarine
Заменил, теперь улетает в лес, после чего стоит ничего не делает и надписи "Select rune to recall from" "You can`t see the target". После чего я попробовал перезапустить скрипт прямо в лесу на том тайле куда прилетаю, он подходит к дереву встает в хайд и ничего не рубит.
Re: Скрипт на Lumberjacking
Posted: 2016-05-16 13:32:41
by Incorrect User
Он пытается реколится. Ты координаты руны правильно задал? Когда прилетаешь по руне в лес, пишешь .where и координаты которые увидишь вписываешь вместо 000 сюда
Code: Select all
var x = 000, y = 000 ; Координаты X и Y тайла куда прилетаешь по первой руне
var x2 = 000, y2 = 000 ; Координаты X и Y тайла куда прилетаешь по второй руне
var x3 = 000, y3 = 000 ; Координаты X и Y тайла куда прилетаешь по третьей руне
Re: Скрипт на Lumberjacking
Posted: 2016-05-16 13:38:13
by Hydromarine
Да вписал точно правильно, команда у меня эта where не работает, но инжект сверху на рамке пишет текущие координаты. Их и вбил.
Все среколился куда надо, подошел к дереву, встал в хайд и больше ничего не делает.
Re: Скрипт на Lumberjacking
Posted: 2016-05-16 13:42:16
by Incorrect User
Даже топор не юзает?
Re: Скрипт на Lumberjacking
Posted: 2016-05-16 14:03:59
by Hydromarine
Incorrect User wrote:Даже топор не юзает?
Только что проверил положив топор в пак. Прилетает в лес, берет из пака топор в руки и на этом все! При этом ни ошибок, и скрипт запущен остается.