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