Облегчение в ПвП

Anything and all.

Moderators: Murderator+, Murderator

Avel Mink
Posts: 48
Joined: 2007-12-30 14:23:05

Облегчение в ПвП

Post by Avel Mink »

Можно ли сделать такой скрипт чтобы выносился статус атакующего тебя, то есть если тебя начинает атаковать кто-то чтоб автоматом выносился его статус и не надо было его полчаса ловить мышкой.
Kynep
Expert!
Posts: 1348
Joined: 2006-02-07 08:51:40
Location: г. Старый Оскол
Contact:

Re: Облегчение в ПвП

Post by Kynep »

Avel Mink wrote:Можно ли сделать такой скрипт чтобы выносился статус атакующего тебя, то есть если тебя начинает атаковать кто-то чтоб автоматом выносился его статус и не надо было его полчаса ловить мышкой.


Нет, такова сделать незя, если чел тебя заатачил, мона пользовать lastattack
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Re: Облегчение в ПвП

Post by Destruction »

Kynep wrote:
Avel Mink wrote:Можно ли сделать такой скрипт чтобы выносился статус атакующего тебя, то есть если тебя начинает атаковать кто-то чтоб автоматом выносился его статус и не надо было его полчаса ловить мышкой.


Нет, такова сделать незя, если чел тебя заатачил, мона пользовать lastattack

Даже через uo.drag() низя?..

Странно.. Я уже как-то раз предлагал использовать такой подход, но никто ничего конкретного не сказал..

Лично я не вижу ни одной причины, почему функция не должна работать.

На крайний случай - можно добавить к этим фокусам UoPilot, с ним точно получится.
YokoInjection CodeSweeper
Function not found?
Possession of mathematics at the level of art - a gift that is only available for election.
Sorry for my clumsy English.
Telegram: @tatikom
Kynep
Expert!
Posts: 1348
Joined: 2006-02-07 08:51:40
Location: г. Старый Оскол
Contact:

Re: Облегчение в ПвП

Post by Kynep »

Destruction wrote:
Kynep wrote:
Avel Mink wrote:Можно ли сделать такой скрипт чтобы выносился статус атакующего тебя, то есть если тебя начинает атаковать кто-то чтоб автоматом выносился его статус и не надо было его полчаса ловить мышкой.


Нет, такова сделать незя, если чел тебя заатачил, мона пользовать lastattack

Даже через uo.drag() низя?..

Странно.. Я уже как-то раз предлагал использовать такой подход, но никто ничего конкретного не сказал..

Лично я не вижу ни одной причины, почему функция не должна работать.

На крайний случай - можно добавить к этим фокусам UoPilot, с ним точно получится.


ХЗ нада пробовать, щас нет возможности, я на работе ) :D
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Re: Облегчение в ПвП

Post by Destruction »

Kynep wrote:***
ХЗ нада пробовать, щас нет возможности, я на работе ) :D

Вопрос стоит предельно чётко, либо ф-ция uo.drag() стягивает хпбар, либо этим занимается UoPilot.

Так, что как не крути - всё возможно, с той поправочкой, что нужно атакующего видеть на экране..
YokoInjection CodeSweeper
Function not found?
Possession of mathematics at the level of art - a gift that is only available for election.
Sorry for my clumsy English.
Telegram: @tatikom
Mihail
Expert!
Posts: 548
Joined: 2005-05-20 20:30:10
Contact:

Post by Mihail »

не получится через uo.drag стягивать статус с врага
во-первых координаты врага на дисплее определить не получится, во-вторых для корректной работы всех кликлов и драгов надо чтобы курсор находился в диапазоне области с которой надо работать - в пилоте есть функция move <координаты>, которая перемещает курсор мыши в область действий, в инжекте нету.. равно как и нету контролируемых задержек между действиями мыши.. так что увы..

p.s. для тех кто не разобрался как работает команда

Code: Select all

uo.drag(x1,y1,x2,y2) ; где x и y числовые значения пунктов начала и конца соответственно, курсор должен находиться в районе где совершается действие 
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

1. У меня пилот нормально драгом стягивает статусы.
2. Включаем мозг и находим вполне реальный способ узнать координаты врага на экране. Если не учитывать z-координату, то всё вообще просто.

К слову, диагональ тайла равна кажется 44px.. И мы можем записать в переменные координаты тайла чара.. А зная относительные координаты врага - в чём проблема узнать координаты?)

Попробую набросать скриптик в связке с UoPilot. Последний соответственно должен быть приатаччен к окну UO. Функцию поиска атакующих делать не будем - не хочется.

Code: Select all

Sub getStatusBar( obj )
   uo.setEasyUO( 1000, str( uo.getX( obj ) - uo.getX() ) )
   uo.setEasyUO( 1001, str( uo.getY( obj ) - uo.getY() ) )
   uo.setEasyUO( 1234, "1" )
endsub


Code: Select all

set #tile_size = 22
set #bar_x 100 // нужно вбить координаты куда тащить статус-бар
set #bar_y 100 // нужно вбить координаты куда тащить статус-бар
set #char_x 111 // нужно вбить координаты клетки с персонажем
set #char_y 222 // нужно вбить координаты клетки с персонажем
get EasyUO*1234 #check
while_not #check = 1
    get EasyUO*1234 #check
end_while
get EasyUO*1000 #attacker_x
get EasyUO*1001 #attacker_y
set #click_x #char_x
set #click_y #char_y
while_not #attacker_x = 0 AND #attacker_y = 0
   if #attacker_x < 0
      set #click_x #click_x + #tile_size
      set #click_y #click_y - #tile_size
      set #attacker_x #attacker_x + 1
   end_if
   if #attacker_x > 0
      set #click_x #click_x - #tile_size
      set #click_y #click_y + #tile_size
      set #attacker_x #attacker_x - 1
   end_if
   if #attacker_y < 0
      set #click_x #click_x - #tile_size
      set #click_y #click_y - #tile_size
      set #attacker_y #attacker_y + 1
   end_if
   if #attacker_y > 0
      set #click_x #click_x + #tile_size
      set #click_y #click_y + #tile_size
      set #attacker_y #attacker_y - 1
   end_if
end_while
drag #click_x, #click_y #bar_x, #bar_y
set EasyUO*1234 0


Думаешь не сработает?... Это я ещё не писал проверку, видим ли персонаж на экране и без учёта z-координаты..

PS: Насчёт z-координаты, я так думаю она смещает видимую позицию 1px, так, что учитывать её - не проблема. Это просто пример, который можно заставить работать.

--------------------------
Я наверное единственный псих, который думает, что уопилот удобен в пвп :)
YokoInjection CodeSweeper
Function not found?
Possession of mathematics at the level of art - a gift that is only available for election.
Sorry for my clumsy English.
Telegram: @tatikom
Mihail
Expert!
Posts: 548
Joined: 2005-05-20 20:30:10
Contact:

Post by Mihail »

можно было просто сказать фразу "относительные координаты" :)
да, про это как-то не пришло в голову.. можно вобщем-то заморочиться, но пилот в пвп действительно неудобен.. к примеру чтобы статус стянулся тебе придется отпусть мышку, - мелочи конечно, а неприятные
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

Mihail wrote:можно было просто сказать фразу "относительные координаты" :)
да, про это как-то не пришло в голову.. можно вобщем-то заморочиться, но пилот в пвп действительно неудобен.. к примеру чтобы статус стянулся тебе придется отпусть мышку, - мелочи конечно, а неприятные

Мм.. Ну если не ахти дёргать, то отпускать не обязательно.

А ещё можно убрать отображение выполнения скрипта, поставить паузу между строк в 0 и поставить приоритет пилоту повыше, что доведёт процесс стягивания статус-полоски до мгновения.

Касательно относительных координат - хочешь на абсалютные перепишу?) UOPilot'у всё равно :)

PS: А uo.drag() точно полоску не стягивает?.. -(
YokoInjection CodeSweeper
Function not found?
Possession of mathematics at the level of art - a gift that is only available for election.
Sorry for my clumsy English.
Telegram: @tatikom
Mihail
Expert!
Posts: 548
Joined: 2005-05-20 20:30:10
Contact:

Post by Mihail »

под относительными координатами я имел ввиду ультимовские координаты врага относительно твоих
uo.drag стягивает - но нужно мышку подвести к врагу :) и стянуть далекого от этого места тоже не получится

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


p.s. в предыдущих виндах можно было бы даже не заморачиваться с написанием проги ибо

Code: Select all

uo.exec("launch rundll32 user,SetCursorPos")

гы, оказалось что все пишется за 2 секунды ща сделаю - момент, пока все читабщие могут поиграть командой

Code: Select all

uo.exec("launch rundll32 user32,SetCursorPos")


-----------

вот дополнение к инжекту чтобы ставить курсор мыши на заданные координаты (ВНИМАНИЕ для корректной работы координаты должны быть АБСОЛЮТНЫЕ (определяются в уо-пилоте) инжект на вкладке скриптового модуля определяет ОТНОСИТЕЛЬНЫЕ координаты.. - но если нужно просто передвинуть курсор в нужную область то впринципе сойдут и относительные..

качаем прогу, кидаем в папку C:\WINDOWS\system32
далее в инжекте

Code: Select all

uo.exec("launch SetCursorPos 245,539") ; пример использования
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

Ну вот видишь, как всё просто :)

Скопипасти себя в соответствующий раздел, для порядку.
YokoInjection CodeSweeper
Function not found?
Possession of mathematics at the level of art - a gift that is only available for election.
Sorry for my clumsy English.
Telegram: @tatikom
Mihail
Expert!
Posts: 548
Joined: 2005-05-20 20:30:10
Contact:

Post by Mihail »

ну я записываюсь в полезности.. будет время\желание сделаем отдельный топик таких вот "плагинов" к инжекту :)
Mihail
Expert!
Posts: 548
Joined: 2005-05-20 20:30:10
Contact:

Post by Mihail »

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

как всегда - кидаем в папку c:\windows\system32
определение координат - программа при запуске копирует текущие координаты мыши в буфер обмена и вырубается

Code: Select all

uo.exec("launch GetCursorPos")

далее в скрипте Ctrl+V :)

ну и раз пошла такая пьянка сделал еще копирование в буфер обмена заданного текста

плагин

Code: Select all

uo.exec("launch ClipboardSetText йа_криведко") ; пример использования функции копирования текста в буфер обмена - внимание!! нельзя использовать пробелы
Mihail
Expert!
Posts: 548
Joined: 2005-05-20 20:30:10
Contact:

Post by Mihail »

Заодно написал улучшенный Drag, который уж точно должен работать.
Как всегда кидаем в system32
И внимательно читаем как использовать.

uo.exec("launch uoDrag x,y,x1,y1,delay,steps")
x,y - координаты отправной точки (не забывает - абсолютные)
x1,y1 - координаты точки прибытия
так же опционально (не обязательно) можно задать:
delay* - задержка после перетаскивания курсора перед "отпусканием" кнопки мыши
steps - если нужно чтобы мышка перетаскивалась медленно, то задав этот параметр программа просчитает промежуточные точки остановки (вы задаете количество точек - чем больше, тем медленнее) - точки рассчитываются по кратчайшему расстоянию - тоесть по прямой.
* в случае, когда задан параметр steps, delay - это время ожидания после каждой точки - оптимально 10-500

Code: Select all

uo.exec("launch uoDrag 280,740,880,350,100,10")

не забываем, что никаких пробелов в передаваемых параматрах быть не должно..
И проверок от дурака тоже не много :) так что если кому вдруг придет в голову указать 2 соседних пикселя и поставить интервал в 100 шагов, то 98 шагов курсор будет стоять на месте.. и все в таком духе..


--------------

Ну давай Дестракшн - теперь дело за тобой :) напиши автору топика стягивание статуса :)
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

А я тут причём?

Я лишь обратил ваше внимание на то, что в данном скрипте нет ничего невозможного.

Ты расширил функционал - не вижу проблемы решить задачу и без моей помощи, ход мысли я указал.

Ты бы лучше улучешнный инж написал, чем вот так вот работать :)
YokoInjection CodeSweeper
Function not found?
Possession of mathematics at the level of art - a gift that is only available for election.
Sorry for my clumsy English.
Telegram: @tatikom
Mihail
Expert!
Posts: 548
Joined: 2005-05-20 20:30:10
Contact:

Post by Mihail »

нуу так не интересно я т думал что у тебя азарт проснется, тем более ты выше писал что и раньше пытался такой скрипт сделать, да и модуль определения графических координат имхо был бы востребованной штукой..
Мне лично мешает его написать много причин :) и на инжекте я уже ничего не писал хз сколько и времени это займет очень много да и недотрахом мозга не страдаю :) чего только последняя хрень с определением координат точек по маршруту мне стоила :(

а для улучшенного инжа у меня скилл маловато, да и язык не тот.. так что придется довольствоваться "плагинами" :)
Grin
Expert!
Posts: 2580
Joined: 2005-05-04 14:05:19
Location: Москва

Post by Grin »

Code: Select all

sub GetStatus(serial) 
   var dx = uo.GetX(serial)-uo.GetX()
   var dy = uo.GetY(serial)-uo.GetY()
   var dz = uo.GetZ(serial)-uo.GetZ()
   var x = 400+22*(dx-dy)
   var y = 300+22*(dx+dy)-dz*4-20
   UO.Drag(x, y, x+44, y)
end sub
Mihail
Expert!
Posts: 548
Joined: 2005-05-20 20:30:10
Contact:

Post by Mihail »

неправильно работает, хотя кликает недалеко от цели

p.s. у меня без задержки статус даже с заранее известных координат не стягивается, у кого та же проблема -

Code: Select all

uo.exec("launch uoDrag "+str(x)+","+str(y)+","+str(x+44)+","+str(y)+",100") 

но это при условии что скрипт правильный
Grin
Expert!
Posts: 2580
Joined: 2005-05-04 14:05:19
Location: Москва

Post by Grin »

не работать не может, есть то лько ограничения, ввиду игрового жкрана 800х600 и его расположенности по дефолту в верхнем левом углу.
Mihail
Expert!
Posts: 548
Joined: 2005-05-20 20:30:10
Contact:

Post by Mihail »

да, я тоже запоздало подумал о разрешении - ты под какое разрешение дисплея писал?

p.s. еще надо тогда унифицировать положение экрана ультимы на дисплее - Грин какие цифры у тебя стоят в настройках ультимы?
Post Reply