Yoko

All sides of Injection
It is currently 2025-11-05 22:34:19

All times are UTC+02:00




Post new topic  Reply to topic  [ 21 posts ]  Go to page 1 2 Next
Author Message
PostPosted: 2008-01-05 03:02:25 
Offline

Joined: 2007-12-30 14:23:05
Posts: 48
Можно ли сделать такой скрипт чтобы выносился статус атакующего тебя, то есть если тебя начинает атаковать кто-то чтоб автоматом выносился его статус и не надо было его полчаса ловить мышкой.


Top
   
PostPosted: 2008-01-05 08:57:38 
Offline
Expert!
User avatar

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


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


Top
   
PostPosted: 2008-01-05 09:09:32 
Offline
Junior Expert
User avatar

Joined: 2004-06-24 22:08:56
Posts: 3220
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.
Skype: d119060


Top
   
PostPosted: 2008-01-05 09:19:45 
Offline
Expert!
User avatar

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


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

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

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

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

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


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


Top
   
PostPosted: 2008-01-05 09:33:14 
Offline
Junior Expert
User avatar

Joined: 2004-06-24 22:08:56
Posts: 3220
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.
Skype: d119060


Top
   
 Post subject:
PostPosted: 2008-01-05 22:42:21 
Offline
Expert!
User avatar

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

p.s. для тех кто не разобрался как работает команда
Code:
uo.drag(x1,y1,x2,y2) ; где x и y числовые значения пунктов начала и конца соответственно, курсор должен находиться в районе где совершается действие 

_________________
"плагины" для инжекта


Top
   
 Post subject:
PostPosted: 2008-01-06 00:22:04 
Offline
Junior Expert
User avatar

Joined: 2004-06-24 22:08:56
Posts: 3220
1. У меня пилот нормально драгом стягивает статусы.
2. Включаем мозг и находим вполне реальный способ узнать координаты врага на экране. Если не учитывать z-координату, то всё вообще просто.

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

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

Code:
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:
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.
Skype: d119060


Top
   
 Post subject:
PostPosted: 2008-01-06 02:41:54 
Offline
Expert!
User avatar

Joined: 2005-05-20 20:30:10
Posts: 548
можно было просто сказать фразу "относительные координаты" :)
да, про это как-то не пришло в голову.. можно вобщем-то заморочиться, но пилот в пвп действительно неудобен.. к примеру чтобы статус стянулся тебе придется отпусть мышку, - мелочи конечно, а неприятные

_________________
"плагины" для инжекта


Top
   
 Post subject:
PostPosted: 2008-01-06 02:43:59 
Offline
Junior Expert
User avatar

Joined: 2004-06-24 22:08:56
Posts: 3220
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.
Skype: d119060


Top
   
 Post subject:
PostPosted: 2008-01-07 02:23:12 
Offline
Expert!
User avatar

Joined: 2005-05-20 20:30:10
Posts: 548
под относительными координатами я имел ввиду ультимовские координаты врага относительно твоих
uo.drag стягивает - но нужно мышку подвести к врагу :) и стянуть далекого от этого места тоже не получится

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


p.s. в предыдущих виндах можно было бы даже не заморачиваться с написанием проги ибо
Code:
uo.exec("launch rundll32 user,SetCursorPos")

гы, оказалось что все пишется за 2 секунды ща сделаю - момент, пока все читабщие могут поиграть командой
Code:
uo.exec("launch rundll32 user32,SetCursorPos")


-----------

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

качаем прогу, кидаем в папку C:\WINDOWS\system32
далее в инжекте
Code:
uo.exec("launch SetCursorPos 245,539") ; пример использования

_________________
"плагины" для инжекта


Top
   
 Post subject:
PostPosted: 2008-01-07 07:23:04 
Offline
Junior Expert
User avatar

Joined: 2004-06-24 22:08:56
Posts: 3220
Ну вот видишь, как всё просто :)

Скопипасти себя в соответствующий раздел, для порядку.

_________________
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.
Skype: d119060


Top
   
 Post subject:
PostPosted: 2008-01-07 14:14:47 
Offline
Expert!
User avatar

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

_________________
"плагины" для инжекта


Top
   
 Post subject:
PostPosted: 2008-01-07 15:51:49 
Offline
Expert!
User avatar

Joined: 2005-05-20 20:30:10
Posts: 548
заодно чтобы с пилотом не мучиться каждый раз сделал плагин (дальше будем называть это извращения плагинами, хоть они таковыми и не являются :) ) на определение обсолютных координат

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

Code:
uo.exec("launch GetCursorPos")

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

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

плагин

Code:
uo.exec("launch ClipboardSetText йа_криведко") ; пример использования функции копирования текста в буфер обмена - внимание!! нельзя использовать пробелы

_________________
"плагины" для инжекта


Top
   
 Post subject:
PostPosted: 2008-01-07 21:11:45 
Offline
Expert!
User avatar

Joined: 2005-05-20 20:30:10
Posts: 548
Заодно написал улучшенный Drag, который уж точно должен работать.
Как всегда кидаем в system32
И внимательно читаем как использовать.

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

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

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


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

Ну давай Дестракшн - теперь дело за тобой :) напиши автору топика стягивание статуса :)

_________________
"плагины" для инжекта


Top
   
 Post subject:
PostPosted: 2008-01-07 21:36:39 
Offline
Junior Expert
User avatar

Joined: 2004-06-24 22:08:56
Posts: 3220
А я тут причём?

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

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

Ты бы лучше улучешнный инж написал, чем вот так вот работать :)

_________________
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.
Skype: d119060


Top
   
 Post subject:
PostPosted: 2008-01-07 21:54:37 
Offline
Expert!
User avatar

Joined: 2005-05-20 20:30:10
Posts: 548
нуу так не интересно я т думал что у тебя азарт проснется, тем более ты выше писал что и раньше пытался такой скрипт сделать, да и модуль определения графических координат имхо был бы востребованной штукой..
Мне лично мешает его написать много причин :) и на инжекте я уже ничего не писал хз сколько и времени это займет очень много да и недотрахом мозга не страдаю :) чего только последняя хрень с определением координат точек по маршруту мне стоила :(

а для улучшенного инжа у меня скилл маловато, да и язык не тот.. так что придется довольствоваться "плагинами" :)

_________________
"плагины" для инжекта


Top
   
 Post subject:
PostPosted: 2008-01-07 22:10:53 
Offline
Expert!
User avatar

Joined: 2005-05-04 14:05:19
Posts: 2580
Location: Москва
Code:
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


Top
   
 Post subject:
PostPosted: 2008-01-07 23:22:32 
Offline
Expert!
User avatar

Joined: 2005-05-20 20:30:10
Posts: 548
неправильно работает, хотя кликает недалеко от цели

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

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

но это при условии что скрипт правильный

_________________
"плагины" для инжекта


Top
   
 Post subject:
PostPosted: 2008-01-08 00:56:07 
Offline
Expert!
User avatar

Joined: 2005-05-04 14:05:19
Posts: 2580
Location: Москва
не работать не может, есть то лько ограничения, ввиду игрового жкрана 800х600 и его расположенности по дефолту в верхнем левом углу.


Top
   
 Post subject:
PostPosted: 2008-01-08 18:12:53 
Offline
Expert!
User avatar

Joined: 2005-05-20 20:30:10
Posts: 548
да, я тоже запоздало подумал о разрешении - ты под какое разрешение дисплея писал?

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

_________________
"плагины" для инжекта


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 21 posts ]  Go to page 1 2 Next

All times are UTC+02:00


Who is online

Users browsing this forum: Bing [Bot] and 7 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