Yoko

All sides of Injection
It is currently 2024-03-29 03:05:33

All times are UTC+02:00




Post new topic  Reply to topic  [ 10 posts ] 
Author Message
PostPosted: 2012-10-31 13:40:04 
Offline
User avatar

Joined: 2009-03-21 10:03:06
Posts: 164
Location: Одесса-Мама
Добрый день. Прошу помощи, не могу разобраться с командой uo.lasttile.
Идея такая, хочу добавить в скрипт Дестракшена на рубку с автопоиском, маркировку деревьев.
Координаты записываются в текстовое окно, вызванное при помощи
Code:
UO.TextOpen()

Суть проблемы: координата добавляется после проверки сообщения о вырубке
Code:
until uo.injournal(бла-бла)
командой
Code:
uo.textprint(uo.lasttile())
Думал все легко :mrgreen: . Однако ответ приходит
Code:
0 0 0 0
Порылся в док-ции, прочитал описание uo.lasttile, там написано, что прицел должен послать клиент. Если правильно понимаю, есть разница между посылкой прицела через инжект и ручками. Вопрос такой, как запилить костыль, дабы возвращались координаты дерева.
RunUO 2.0 ML, client 5.0.1h.

Code:
Пока есть только одна мысль, повторно, на дерево, через хоткей вызывать уошный макрос lastobject, lasttarget.
Кто занимался автомаркировками, подскажите пожалуйста, как выйти из положения, а то башка моя нифига не варит.
Идея не удалась :cry:

_________________
Спасибо всем, у кого учился!

Меня трудно найти, легко потерять, и невозможно забыть. Я - рабочий исходник!


Top
   
PostPosted: 2012-10-31 14:19:17 
Offline
User avatar

Joined: 2009-05-28 09:58:28
Posts: 2802
Location: Иваново
Проверь вот такое у вас на ранке работает?
Если да то можно организовать через заднее место - через PrivateGetTile. По нему получишь координаты и тайл перед собой и уже с ними будешь дальше работать.

Если не работает то только прокликивать руками.

_________________
Image
YokoInjection CodeSweeper
Ошибка "Unhandled exception in parser"
Стрелялка для олдов.


Top
   
PostPosted: 2012-10-31 14:29:15 
Offline
User avatar

Joined: 2009-03-21 10:03:06
Posts: 164
Location: Одесса-Мама
Это же один из любимых скриптов)) Частенько его использую. Чуть позже кину еще клилоки и пару типов тайлов которые нашел.
З.Ы. в док-ции нет описания PrivateGetTile, можешь в двух словах пояснить, для чего сия прелесть используется?

Да, по-большей части твой скрипт работает. Проблемы только в том, что он не может работать с координатой Z. Но это проблема старая и известная. Пару раз натыкался на сообщения о том, что надо с АСМ работать, для решения проблем с Z, но толком инфы не было. Да и не особо искал.
upd. Не корректно выразился. Не по-большей части, а работает. У меня то частный случай.

Есть еще мысль, на сколько понимаю, у Дестракшена координаты хранятся в глобальной переменной.
Соответственно, если инжект нашел дерево и подошел к нему, значит координата должна храниться в переменной. Вопрос, можно ли вытянуть информацию из глобальной переменной? Не совсем понимаю суть их работы, но буду ковырять. Если можно вытянуть инфу, значит надо изменить структуру скрипта, чтоб запускал поток поиска после вырубки. Или вообще сделать все в один поток.
Короче хз, надо думать.

Кстати, еще вопрос. Можно ли массивом задавать значение Z-координаты? Допустим, что я на 100% знаю, что высота дерева может быть в диапозоне от -10 до 10. Пусть себе перебирает высоту, в заданном диапозоне.

_________________
Спасибо всем, у кого учился!

Меня трудно найти, легко потерять, и невозможно забыть. Я - рабочий исходник!


Top
   
PostPosted: 2012-10-31 18:15:49 
Offline
User avatar

Joined: 2009-05-28 09:58:28
Posts: 2802
Location: Иваново
перед поиском юзать uo.resend() - тогда с большой вероятностью поймаешь нужную Z координату.

насчет privategettile описание было где то на форуме.

Если не ошибаюсь то там выглядит следующим образом:
Code:
Sub Tree(X,Y)
   DIM  R[2]
   R[1] = 3274;
   R[2] = 3275;
   for i = 1 to 2
      if uo.privategettile( x, y, -1, R[i], R[i]) then
         return R[i]
      endif
   next
   return false
end sub


uo.privategettile( x, y, -1, R[i], R[i])
X,Y координаты точки где проверяем тайл.
-1 - всегда должен быть так - какая то константа.
R[i] список тайлов (в данном случае - рубящиеся деревья).

Берутся координаты чара (X,Y) и от них ±3 координаты. Берем координату (X-3, Y) проверяем есть ли в ней тайл соответствующий списку тайлов R1-R2. Если есть - возвращаем его значение и рубим по той точке. Если нет - пропускаем...

Я как то посидел с инсайдом и переписал все тайлы деревьев рудоносящих кочек, воды на клиенте на котором я тогда играл - получился такой вот скрипт. НА новых клиентах тайлов всего скорее больше - лишь бы сервер поддерживал :)

_________________
Image
YokoInjection CodeSweeper
Ошибка "Unhandled exception in parser"
Стрелялка для олдов.


Top
   
PostPosted: 2012-10-31 18:31:58 
Offline
User avatar

Joined: 2009-03-21 10:03:06
Posts: 164
Location: Одесса-Мама
Про ресенды, я уже догадался. Яркий пример:
Скрипт:
Code:
sub main()
var z
   z = UO.GetZ()
   uo.print("The coordinate of Z is: "+str(z))
endsub

До ресенда выводил 0, после правильную высоту.

Ресенды вроде помогли, начал нормально рубить на разных высотах.
Вставлю их перед рубкой.
Осталась одна проблема, заставить скрипт забирать правильные координаты деревьев, а не 0 0 0 0. Видимо в коде лоханулся, завтра уже поковыряю, на свежую голову.
Спасибо :wink: .


Attachments:
File comment: после ресенда
after.jpg
after.jpg [ 128.76 KiB | Viewed 3403 times ]

_________________
Спасибо всем, у кого учился!

Меня трудно найти, легко потерять, и невозможно забыть. Я - рабочий исходник!
Top
   
PostPosted: 2012-10-31 19:59:57 
Offline

Joined: 2011-06-11 19:54:23
Posts: 820
Code:
until uo.injournal(бла-бла)

Сразу за этим сунь:
Code:
   var ScreenCX=400 #Координата X центра игрового окна
   var ScreenCY=300 #Координата Y центра игрового окна
   var TreeX=<Координата X дерева>
   var TreeY=<Координата Y дерева>
   var BufX=uo.getx('self')-TreeX
   var BufY=uo.gety('self')-TreeY
   var ClickXPos=ScreenCX-(BufX-BufY)*22
   var ClickYPos=ScreenCY-(BufX+BufY)*22
   uo.usetype('0x0E85') #Впиши тип топора, чем рубишь
   wait(500)
   while uo.targeting()
      uo.lclick(ClickXPos,ClickYPos)
      wait(500)
   wend

И потом можно брать координаты из ласттайла.


Top
   
PostPosted: 2012-10-31 20:33:55 
Offline
User avatar

Joined: 2009-03-21 10:03:06
Posts: 164
Location: Одесса-Мама
Спасибо, завтра проверю.
Если правильно суть его работы понял, то данный костыль, как нельзя лучше подходит моему пациенту.

_________________
Спасибо всем, у кого учился!

Меня трудно найти, легко потерять, и невозможно забыть. Я - рабочий исходник!


Top
   
PostPosted: 2012-11-01 15:17:15 
Offline
User avatar

Joined: 2009-03-21 10:03:06
Posts: 164
Location: Одесса-Мама
5 раз проверил скрипт, на полянке перед банком в Миноке.
Что могу сказать. Костыль рабочий, но есть нюансы.
Code:
3289 2512 567 0
3300 2508 567 0
3290 2504 567 0
3278 2500 567 0
3290 2496 570 0
3290 2496 573 3
0 2499 575 0 ;Кустообразное дерево с 3мя стволами.
3277 2496 579 0
3299 2496 582 0
3296 2496 585 0
0 2499 587 0 ;Елка с типом 3287.
3293 2504 588 0
3300 2500 579 0
3280 2504 579 0
3286 2508 576 0
3278 2504 573 0
0 2507 572 0 ;Елка с типом 3287.
3286 2512 576 0
3278 2508 579 0
3290 2512 582 0

Зависит от того, с какой стороны персонаж подходит к дереву.
Сейчас отправлю перса в лес по-больше и буду смотреть.
Пока в голову пришла идея, проверять куда смотрит перс(а после первой вырубки, он будет смотреть на дерево) и взависимости от этого кликать.
Можно немного облегчить задачу, поставить верду с пеньками. Тогда будет проще собрать координаты X Y для клика.

_________________
Спасибо всем, у кого учился!

Меня трудно найти, легко потерять, и невозможно забыть. Я - рабочий исходник!


Top
   
PostPosted: 2012-11-01 17:15:32 
Offline

Joined: 2011-06-11 19:54:23
Posts: 820
Андрюха из Одессы wrote:
Можно немного облегчить задачу, поставить верду с пеньками.

Ну да, на такой и тестил.
А не проще поставить АСМ и юзать
Code:
number asmMapGetTile(number X, number Y, number Map)

И для Z
Code:
number asmMapGetZ(number X, number Y, number Map)

?
Без всяких кривоватых кликов.


Top
   
PostPosted: 2012-11-01 17:44:45 
Offline
User avatar

Joined: 2009-03-21 10:03:06
Posts: 164
Location: Одесса-Мама
Никогда не пробовал АСМ. Наверное пора)

_________________
Спасибо всем, у кого учился!

Меня трудно найти, легко потерять, и невозможно забыть. Я - рабочий исходник!


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 10 posts ] 

All times are UTC+02:00


Who is online

Users browsing this forum: No registered users and 14 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Limited