Page 1 of 1
Подскажте, где я ошибся с WaitTargetTile.
Posted: 2004-05-09 10:17:42
by Ruselus
В макросах (ламбер/миниг) всегда таргет обычным UO.RClick() показывал, но недавно меня обозвали ламером и сказали что по идее надо WaitTargetTile юзать.
И вот что-то не получается у меня с ним ничего и все тут. =(
Вот, упрощенный кусок скрипта на миниг - предположительно, должен рыть клетку под собой.
sub mining()
VAR t,x,y,z
t=1340
x=UO.GetX()
y=UO.GetY()
z=UO.GetZ()
UO.WaitTargetTile(STR(t),STR(x),STR(y),STR(z))
UO.UseType('pickaxe')
end sub
Вобщем ниче не пишет при этом. Кирку юзает, тагрет пропадает, но куда он ей ткнул - не понятно.
t взято стандартное, на конкретный тайл, на котором я стою в момент теста макра. Можно ли сделать так, чтобы он игнорировался, т.е. в качестве ловушки просто использовался тайл подомной, в независимояти от его типа, или указать несколько типов сразу?
Всем заранее спасибо.
Posted: 2004-05-09 11:20:21
by Arch
У меня нет особых мыслей, почему это не работает.
1) Я не пишу номер тайла, мой макрос на копку работает с нулем вместо этого номера.
2) Я не пишу Z координату. У меня вместо нее стоит 0. Я вообще заметил, что uo.GetZ() не работает.
3) Не буду ничего утверждать, но uo.waittargettile у меня не работал.
Зато работала конструкция вида
uo.exec("waittargettile tilenum "+str(mx)+" "+str(my)+" 0")
4) Вот чем я копаю:
Code: Select all
sub mining()
var kirk=uo.GetSerial(uo.ObjAtLayer('Rhand'));
var i
var mx=uo.GetX()-2
var my=uo.GetY()-2
var rep=0
var MW=500
if uo.GetGraphic(uo.ObjAtLayer('Rhand'))<>"0x0E85" and uo.GetGraphic(uo.ObjAtLayer('Rhand'))<>"0x0E86" then
uo.findtype(0x0E85)
if uo.findcount()==0 then
uo.print("Нет кирки!!!")
return 0
end if
kirk=uo.GetSerial('finditem')
uo.equip('Rhand','finditem')
end if
minst:
rep=rep+1
if uo.weight>MW or uo.dead() then
goto minex
end if
uo.deletejournal()
uo.exec("waittargettile tilenum "+str(mx)+" "+str(my)+" 0")
uo.useobject(kirk);
i=0
wait(200)
uo.exec("resend")
repeat
wait(700)
i=i+1
if uo.injournal("is attacking you") then
uo.say("guards")
end if
until uo.injournal("loosen")or uo.injournal("You put") or uo.injournal("no ore") or uo.inJournal("You can't") or uo.InJournal("Try mining") or i>50
if uo.injournal("no ore")or uo.injournal("You can't")or uo.InJournal("Try mining")or (rep>10) then ;or uo.injournal("Iron")or uo.InJournal("Copper")or uo.injournal("Rusty") then
wait(1000)
rep=0
my=my+1
if my>uo.GetY()+2 then
my=uo.GetY()-2
mx=mx+1
end if
if mx>uo.GetX()+2 then
goto minex
else
goto minst
end if
end if
goto minst
minex:
uo.print("Скрипт завершился")
uo.playwav("alsndmgr.wav")
end sub
Posted: 2004-05-09 11:22:00
by Arch
З.ы. слово tilenum, как выяснилось, - то же самое, что ноль.
Инжект переделывает все непонятные ему слова в нули

Posted: 2004-06-01 21:56:22
by Rulon_Oboev
есть другой способ можно просто цель указать на себя тогда в принципи вродь получается что бьеш под собой у меня работает покрайней мере
uo.waittargetself()
UO.UseType(0x0E85)
Posted: 2004-06-01 22:52:48
by Yoko
Rulon_Oboev wrote:есть другой способ можно просто цель указать на себя тогда в принципи вродь получается что бьеш под собой у меня работает покрайней мере
uo.waittargetself()
UO.UseType(0x0E85)
это специальная опция некоторых шардов и в общем не является правилом.
на всех шардах где я играл такого не было, но я знаю что некоторые шарды такое поддерживают.
а в верхнем случае возможно человеку нужно было включить Track World и перед запуском скрипта сделать ,resend