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

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
Evil Hedgehog
Posts: 8
Joined: 2004-08-02 06:01:57
Contact:

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

Post by Evil Hedgehog »

Скала ровная. 13 шагов \ направления. Сделал все проверки, но не могу справиться с "копанием". Проблема вот в чём: когда копаешь у скалы, то тайлами делать либо бесполезно либо геморно, ибо на нужный тайл фиг попадёшь чтобы узнать его параметры. Думаю таргетом, но не получается. В асисте на нужный кусок попадали просто - вставали на против него а в макросе юзали кирку и таргет->target to relative location. Можно ли как либо по другому сделать?
Black Horse
Posts: 60
Joined: 2004-04-23 19:58:03

Post by Black Horse »

насчёт тайлов - это не сложно, пусть и попасть нельзя :)
просто относительно своих координат добавь +1 (по Х или У, смотря как скала располагается) и всё.
Evil Hedgehog
Posts: 8
Joined: 2004-08-02 06:01:57
Contact:

Post by Evil Hedgehog »

То есть строка будет такая:
mx=GetX('self') и тд
WaitTargetTile(?, mx, my+1, mz)
если скала чуть повыше?
Что туда первым параметром идёт? Тип тайла насколько я помню. Но на скале ведь разные типы?
contik
Posts: 6
Joined: 2004-07-27 08:51:35
Contact:

Post by contik »

Короче у меня проблема была такая - что даже на ровном месте существуют разные тайлы.
Я сделал так: создал массив из всех возможных тайлов и по очереди по одной и той-же координате бью киркой в цикле по всему массиву.
В процессе биения по земле ловишь сообщения об удачном выкавывании руды, как только оно приходит - сразу выпрыгиваешь из цикла с массивом и боешь уже по этой координате но с известным номером тайла ...
Несколько геморрно, но пока более интересного решения в голову не пришло =)
Lord Ruslan Nightmare
Expert!
Posts: 359
Joined: 2004-04-25 11:11:07
Contact:

Post 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. Вот так осуществляется межпроцессное взаимодействие с инжекшном. Есть еще вариант передачи данных через внешнюю память (файл), но у парсера большие проблемы с регулярными обращениями к файлам...
Без труда не выловишь и рыбку из пруда,
А без пруда не выловишь её и с трудом...
Evil Hedgehog
Posts: 8
Joined: 2004-08-02 06:01:57
Contact:

Post by Evil Hedgehog »

contik wrote:Короче у меня проблема была такая - что даже на ровном месте существуют разные тайлы.
Несколько геморрно, но пока более интересного решения в голову не пришло =)

Всё это конечно замечательно, но асист ведь не перебирает никаких тайлов. Как то ведь ему удаётся "попасть" в нужный тайл.
contik
Posts: 6
Joined: 2004-07-27 08:51:35
Contact:

Post by contik »

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


честно говоря ассист не пользовал, поэтому даже не знаю как он работает =(
Как вариант можешь просто тупо пользовать uo.lclick, не знаю как на твоем шарде, а у меня чар всегда находится в середине экрана, т.е. координаты легко посчитать
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

Обычно прекрасно работает если вместо типа тайла просто поставить 0.
contik
Posts: 6
Joined: 2004-07-27 08:51:35
Contact:

Post by contik »

Edred wrote:Обычно прекрасно работает если вместо типа тайла просто поставить 0.


пробовал!
к сожалению у меня на шарде такой маневр не прокатил, он просто тупо стоит и ничего не делает =(
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

contik wrote:
Edred wrote:Обычно прекрасно работает если вместо типа тайла просто поставить 0.


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


Тогда либо список рубимых координат с тайлами в файл либо сделай скрипт на изи.
Yoko
Site Admin
Posts: 1964
Joined: 2004-04-03 16:49:38
Contact:

Post by Yoko »

ассист ставит тот тайл на который ткнули при записи
contik
Posts: 6
Joined: 2004-07-27 08:51:35
Contact:

Post by contik »

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


так вот мы и пришли к тому, о чем я в самом начале говорил (про массив из нужных тайлов =)
Evil Hedgehog
Posts: 8
Joined: 2004-08-02 06:01:57
Contact:

Post by Evil Hedgehog »

contik wrote:Можешь просто тупо пользовать uo.lclick, не знаю как на твоем шарде, а у меня чар всегда находится в середине экрана, т.е. координаты легко посчитать

УО.Клик использует объект, но никак не координаты.
Evil Hedgehog
Posts: 8
Joined: 2004-08-02 06:01:57
Contact:

Post by Evil Hedgehog »

Yoko wrote:ассист ставит тот тайл на который ткнули при записи

Да, но что самое интересное, что когда юзаешь кирку на "неоднородную" по графике скалу допустим в пилоте, то использовать относительные координаты предыдущего положения чара нельзя. А асисту как то удаётся это обойти.
Ещё один интересный момент. Подбираю место куда можно попасть на скале. Где копает туда делаем ,infotile, записываем параметры в макрос. Запускаем макрос нам выдаёт что cannot mine that. Самая изюминка в том, что в некоторых местах это всё таки работает. Другое дело что из 13 нужных мне тайлов я "попал" только в 3. :(
Evil Hedgehog
Posts: 8
Joined: 2004-08-02 06:01:57
Contact:

Post by Evil Hedgehog »

Всё. сделал. Если кому интересно решение проблемы, то оно истинно "русское".

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

Бьём куда надо таргетом пока оно не начнём копаться. :)
Всем спасибо, все свободны. ;)
contik
Posts: 6
Joined: 2004-07-27 08:51:35
Contact:

Post by contik »

Evil Hedgehog wrote:UO.LDblClick(444,216)


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

P.S. тока почему дабл-клик? разве простого клика не достаточно?
Evil Hedgehog
Posts: 8
Joined: 2004-08-02 06:01:57
Contact:

Post by Evil Hedgehog »

contik wrote:не красиво, но зато эффективно =)
ч.т.д. =))))
P.S. тока почему дабл-клик? разве простого клика не достаточно?

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