Page 1 of 1

Копание у скалы

Posted: 2004-08-02 07:12:22
by Evil Hedgehog
Скала ровная. 13 шагов \ направления. Сделал все проверки, но не могу справиться с "копанием". Проблема вот в чём: когда копаешь у скалы, то тайлами делать либо бесполезно либо геморно, ибо на нужный тайл фиг попадёшь чтобы узнать его параметры. Думаю таргетом, но не получается. В асисте на нужный кусок попадали просто - вставали на против него а в макросе юзали кирку и таргет->target to relative location. Можно ли как либо по другому сделать?

Posted: 2004-08-02 19:20:22
by Black Horse
насчёт тайлов - это не сложно, пусть и попасть нельзя :)
просто относительно своих координат добавь +1 (по Х или У, смотря как скала располагается) и всё.

Posted: 2004-08-03 06:45:20
by Evil Hedgehog
То есть строка будет такая:
mx=GetX('self') и тд
WaitTargetTile(?, mx, my+1, mz)
если скала чуть повыше?
Что туда первым параметром идёт? Тип тайла насколько я помню. Но на скале ведь разные типы?

Posted: 2004-08-03 09:39:23
by contik
Короче у меня проблема была такая - что даже на ровном месте существуют разные тайлы.
Я сделал так: создал массив из всех возможных тайлов и по очереди по одной и той-же координате бью киркой в цикле по всему массиву.
В процессе биения по земле ловишь сообщения об удачном выкавывании руды, как только оно приходит - сразу выпрыгиваешь из цикла с массивом и боешь уже по этой координате но с известным номером тайла ...
Несколько геморрно, но пока более интересного решения в голову не пришло =)

Posted: 2004-08-03 11:46:53
by Lord Ruslan Nightmare
Написать программу, которая как сервис будет висеть в системе. Когда ты запускаешь её снова (сервис работает), она определяет, что уже запущена, и передает старой своей копии параметры коммандной строки, после чего завершается.

Сервис (который не завершается) обрабатывает эти параметры (в нашем случае - это координаты в мире), после чего ищет в mul'ах тайл с такими координатами. Найдя, он через мессаджи вызывает в инжекшне ряд скриптов, что-то типа

Code: Select all

sub initstr()
  uo.setglobal("str","")
end sub
sub sub1()
  uo.setglobal("str",uo.getglobal("str") + "1")
end sub
sub suba()
  uo.setglobal("str",uo.getglobal("str") + "a")
end sub
sub subb()
  uo.setglobal("str",uo.getglobal("str") + "b")
end sub
....
sub receivestr()
  uo.setglobal("DataToScript",uo.getglobal("str"))
  uo.setglobal("transferred","1")
end sub

Таким образом в инжекшн передаётся строка. Дальше вызовом receivestr строка передаётся в функцию. В данном случае строка либо будет "not found", либо будет типом тайла. Ну, а дальше элементарно.

P.S. Вот так осуществляется межпроцессное взаимодействие с инжекшном. Есть еще вариант передачи данных через внешнюю память (файл), но у парсера большие проблемы с регулярными обращениями к файлам...

Posted: 2004-08-03 12:05:14
by Evil Hedgehog
contik wrote:Короче у меня проблема была такая - что даже на ровном месте существуют разные тайлы.
Несколько геморрно, но пока более интересного решения в голову не пришло =)

Всё это конечно замечательно, но асист ведь не перебирает никаких тайлов. Как то ведь ему удаётся "попасть" в нужный тайл.

Posted: 2004-08-03 12:44:22
by contik
Evil Hedgehog wrote:Всё это конечно замечательно, но асист ведь не перебирает никаких тайлов. Как то ведь ему удаётся "попасть" в нужный тайл.


честно говоря ассист не пользовал, поэтому даже не знаю как он работает =(
Как вариант можешь просто тупо пользовать uo.lclick, не знаю как на твоем шарде, а у меня чар всегда находится в середине экрана, т.е. координаты легко посчитать

Posted: 2004-08-03 14:58:51
by Edred
Обычно прекрасно работает если вместо типа тайла просто поставить 0.

Posted: 2004-08-03 15:16:02
by contik
Edred wrote:Обычно прекрасно работает если вместо типа тайла просто поставить 0.


пробовал!
к сожалению у меня на шарде такой маневр не прокатил, он просто тупо стоит и ничего не делает =(

Posted: 2004-08-03 18:24:11
by Edred
contik wrote:
Edred wrote:Обычно прекрасно работает если вместо типа тайла просто поставить 0.


пробовал!
к сожалению у меня на шарде такой маневр не прокатил, он просто тупо стоит и ничего не делает =(


Тогда либо список рубимых координат с тайлами в файл либо сделай скрипт на изи.

Posted: 2004-08-03 21:37:54
by Yoko
ассист ставит тот тайл на который ткнули при записи

Posted: 2004-08-03 22:50:57
by contik
Edred wrote:Тогда либо список рубимых координат с тайлами в файл либо сделай скрипт на изи.


так вот мы и пришли к тому, о чем я в самом начале говорил (про массив из нужных тайлов =)

Posted: 2004-08-04 14:18:50
by Evil Hedgehog
contik wrote:Можешь просто тупо пользовать uo.lclick, не знаю как на твоем шарде, а у меня чар всегда находится в середине экрана, т.е. координаты легко посчитать

УО.Клик использует объект, но никак не координаты.

Posted: 2004-08-04 14:22:32
by Evil Hedgehog
Yoko wrote:ассист ставит тот тайл на который ткнули при записи

Да, но что самое интересное, что когда юзаешь кирку на "неоднородную" по графике скалу допустим в пилоте, то использовать относительные координаты предыдущего положения чара нельзя. А асисту как то удаётся это обойти.
Ещё один интересный момент. Подбираю место куда можно попасть на скале. Где копает туда делаем ,infotile, записываем параметры в макрос. Запускаем макрос нам выдаёт что cannot mine that. Самая изюминка в том, что в некоторых местах это всё таки работает. Другое дело что из 13 нужных мне тайлов я "попал" только в 3. :(

Posted: 2004-08-04 15:27:48
by Evil Hedgehog
Всё. сделал. Если кому интересно решение проблемы, то оно истинно "русское".

UO.UseObject('0x494B3C62')
for j=1 to 3
CheckLag()
UO.LDblClick(444,216)
next

Бьём куда надо таргетом пока оно не начнём копаться. :)
Всем спасибо, все свободны. ;)

Posted: 2004-08-04 15:37:10
by contik
Evil Hedgehog wrote:UO.LDblClick(444,216)


не красиво, но зато эффективно =)
ч.т.д. =))))

P.S. тока почему дабл-клик? разве простого клика не достаточно?

Posted: 2004-08-05 04:32:29
by Evil Hedgehog
contik wrote:не красиво, но зато эффективно =)
ч.т.д. =))))
P.S. тока почему дабл-клик? разве простого клика не достаточно?

Прикинь нет. Не думал я что так сложно будет до скалы додолбиться. :)