Подскажте, где я ошибся с WaitTargetTile.

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
Ruselus
Posts: 8
Joined: 2004-04-23 14:25:31

Подскажте, где я ошибся с WaitTargetTile.

Post 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 взято стандартное, на конкретный тайл, на котором я стою в момент теста макра. Можно ли сделать так, чтобы он игнорировался, т.е. в качестве ловушки просто использовался тайл подомной, в независимояти от его типа, или указать несколько типов сразу?

Всем заранее спасибо.
Arch 
Posts: 3
Joined: 2004-05-07 17:36:34
Contact:

Post 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
Arch&nbsp;
Posts: 3
Joined: 2004-05-07 17:36:34
Contact:

Post by Arch&nbsp; »

З.ы. слово tilenum, как выяснилось, - то же самое, что ноль.
Инжект переделывает все непонятные ему слова в нули :)
Rulon_Oboev
Posts: 2
Joined: 2004-06-01 21:50:16

Post by Rulon_Oboev »

есть другой способ можно просто цель указать на себя тогда в принципи вродь получается что бьеш под собой у меня работает покрайней мере

uo.waittargetself()
UO.UseType(0x0E85)
Yoko
Site Admin
Posts: 1964
Joined: 2004-04-03 16:49:38
Contact:

Post by Yoko »

Rulon_Oboev wrote:есть другой способ можно просто цель указать на себя тогда в принципи вродь получается что бьеш под собой у меня работает покрайней мере

uo.waittargetself()
UO.UseType(0x0E85)

это специальная опция некоторых шардов и в общем не является правилом.
на всех шардах где я играл такого не было, но я знаю что некоторые шарды такое поддерживают.

а в верхнем случае возможно человеку нужно было включить Track World и перед запуском скрипта сделать ,resend
Post Reply