Что нового

[Мышь, клавиатура] aim для APB нужна помощь!

megopixapb

Новичок
Сообщения
8
Репутация
0
Собственно вопрос такой, хочу добиться. что -бы когда попадался пиксель красного цвета , то передвигался курсор на него и как бы залипал на нем.
Но получается , что как попадается искомый пиксель то прицел улетает или в небо или в ноги. помогите как правильно реализовать?
вот кусок этого кода
Код:
$Variable = PixelSearch(2,176,1912,961,0xC7172B,40)
AutoItSetOption("MouseCoordMode" , 0)
If IsArray($Variable) = True Then
MouseMove (Variable[0],Variable[1] ,50)

по разному пробовал, никак не справлюсь.
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
246
Пробовали без этой строки
Код:
AutoItSetOption("MouseCoordMode" , 0)
или так
Код:
AutoItSetOption("MouseCoordMode" , 1)
 
Автор
M

megopixapb

Новичок
Сообщения
8
Репутация
0
без этой строки пробовал, с параметром -1 сейчас попробовал, тоже - самое.


Добавлено:
Сообщение автоматически объединено:

Самое главное, на скриншоте все замечательно работает, а в игре фигня вот такая (
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
246
Может попробовать с параметром 2 ?
 
A

Alofa

Гость
А что у вас по Ctrl+F5 в консоли SciTe пишет?

Код:
$Variable = PixelSearch(2,176,1912,961,0xC7172B, 10)
If IsArray($Variable) Then MouseMove ($Variable[0], $Variable[1] , 50)
 
Автор
M

megopixapb

Новичок
Сообщения
8
Репутация
0
Alofa сказал(а):
А что у вас по Ctrl+F5 в консоли SciTe пишет?

Код:
$Variable = PixelSearch(2,176,1912,961,0xC7172B, 10)
If IsArray($Variable) Then MouseMove ($Variable[0], $Variable[1] , 50)

Вот -
>"C:\Program Files (x86)\AutoIt3\SciTE\..\AutoIt3.exe" "C:\Program Files (x86)\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.au3" /Prod /AU3check /in "C:\Users\a_gorshkov\Desktop\NomadMemory.au3"
+>09:52:57 Starting AutoIt3Wrapper v.17.224.935.0 SciTE v.3.7.3.0 Keyboard:00000419 OS:WIN_7/Service Pack 1 CPU:X64 OS:X64 Environment(Language:0419) CodePage:0 utf8.auto.check:4
+> SciTEDir => C:\Program Files (x86)\AutoIt3\SciTE UserDir => C:\Users\a_gorshkov\AppData\Local\AutoIt v3\SciTE\AutoIt3Wrapper SCITE_USERHOME => C:\Users\a_gorshkov\AppData\Local\AutoIt v3\SciTE
>Running AU3Check (3.3.14.2) from:C:\Program Files (x86)\AutoIt3 input:C:\Users\a_gorshkov\Desktop\NomadMemory.au3
+>09:52:57 AU3Check ended.rc:0
+>09:52:57 AutoIt3Wrapper Finished.
>Exit code: 0 Time: 0.4489



Добавлено:
Сообщение автоматически объединено:

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

Alofa

Гость
megopixapb сказал(а):
Я имел в виду ваш код в шапке темы. Такого он не выдаст.

megopixapb сказал(а):
... там какой-то алгоритм нужен...
Конечно, алгоритм нужен всегда:
- Убедитесь что задан правильный цвет для поиска;
- проверьте PixelCoordMode;
- уменьшите зону поиска;
- поиграйтесь с параметром shade-variation функции PixelSearch();
- привяжитесь к нужному окну (параметр hwnd).
 
Автор
M

megopixapb

Новичок
Сообщения
8
Репутация
0
вот полный код который пилю. Все , что написали пробовал.
Код:
HotKeySet("{F6}","_Exit")
;-------гор клавиши
HotKeySet("{INSERT}", "startAutoshoot") ;старт
HotKeySet("{DELETE}", "offAutoshoot") ;стоп
Global $Autoshoot = 0

Func startAutoshoot() ; функция включения
    $Autoshoot = 1
EndFunc ; конец функции

Func offAutoshoot() ; функция выключения
    $Autoshoot = 0
EndFunc ; конец функции

While 1
If $Autoshoot = 1 then
$Variable = PixelSearch(652,357,711,409,0xD66465, 12 )
AutoItSetOption("MouseCoordMode" , 0)
If IsArray($Variable) = True Then
MouseMove ($Variable [0], $Variable [1] ,50)
MouseClick ("right")
EndIf
EndIf
WEnd
Func _Exit()
Exit
EndFunc
[/spoiler]

вот что выдает ctrl+f5
>"C:\Program Files (x86)\AutoIt3\SciTE\..\au3check.exe" -q "C:\Users\Alex\Desktop\122.au3"
>Exit code: 0 Time: 0.0462

p.s. У меня такое ощущение, что для имитации передвижения курсора (прицела) в нужный пиксель - необходимо вычислять координаты "z" тойсть нужно передавать не двухмерные координаты, а трехмерные.
На скриншоте ведь все отлично работает. В игре птксели находит, но передвижение не корректное делает. Кто знает, откликнитесь! Куда копать то?))
 
Автор
M

megopixapb

Новичок
Сообщения
8
Репутация
0
Спасибо за ссылки, почитаю, попробую.
Но тут сейчас попробовал вот такой код
Код:
HotKeySet("{F6}","_Exit")
;-------гор клавиши
HotKeySet("{INSERT}", "startAutoshoot") ;старт
HotKeySet("{DELETE}", "offAutoshoot") ;стоп
Global $Autoshoot = 0

Func startAutoshoot() ; функция включения
    $Autoshoot = 1
EndFunc ; конец функции

Func offAutoshoot() ; функция выключения
    $Autoshoot = 0
EndFunc ; конец функции

While 1
If $Autoshoot = 1 then
  $aPos = MouseGetPos()
  $Variable = PixelSearch(671,336,699,436,0xD66465, 12 )
  If Not @error Then
  MouseMove ($aPos[0] , $aPos[1] , 80)
sleep (200)
MsgBox(0, "X и Y равны:", $Variable[0] & "," & $Variable[1])
EndIf

EndIf
WEnd
Func _Exit()
Exit
EndFunc

И Отрабатывает! он прям по пикселям перемещается, но единственное как находит выводит сообщение поверх окна игры.
Ни разу не забросило никуда - вверх или в ноги прицел.
где то близко разгадка ))
сооьветственно если убрать вывод сообщения то опять швыряет куда попало.
задержка тоже не помогает.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
megopixapb

Предупреждение За нарушение правил форума (пункт В.11):
Любые отрывки AutoIt кода необходимо заключать в тег [autoit]
autoit.gif
(подробнее), а обычный код соответственно в тег [code]
code.gif
(подробнее). Также большие выдержки текста помещайте под тег [spoiler]
spoiler.gif
(подробнее), там где это поддерживается естественно. Как в случае с названием темы, также короткое и эргономичное сообщение привлекает больше внимания, и шансы на получение конкретного ответа увеличиваются.


С уважением, ваш Глобальный модератор.
 
A

Alofa

Гость
megopixapb сказал(а):
... И Отрабатывает!..
Не верю. Вы посмотрите, что он отрабатывает, в вашем коде PixelSearch() вообще лишняя. Или я уже ни чего не понимаю.

Вот проверьте (у меня нет возможности)
Код:
HotKeySet("{F6}","_Exit")
;-------гор клавиши
HotKeySet("{INSERT}", "startAutoshoot") ;старт
HotKeySet("{DELETE}", "offAutoshoot") ;стоп
Global $Autoshoot = 0

Func startAutoshoot() ; функция включения
    $Autoshoot = 1
EndFunc ; конец функции

Func offAutoshoot() ; функция выключения
    $Autoshoot = 0
EndFunc ; конец функции

While 1
  If $Autoshoot then
    $Variable = PixelSearch(671,336,699,436,0xD66465, 12 )
    If Not @error Then
      $aPos = MouseGetPos()
      If $aPos[0] <> $Variable[0] Or $aPos[1] <> $Variable[1] Then MouseMove ($Variable[0] , $Variable[1] , 80)
    Else
      Sleep(500)
    EndIf
  Else
    Sleep(100)
  EndIf
WEnd

Func _Exit()
   Exit
EndFunc
 
Автор
M

megopixapb

Новичок
Сообщения
8
Репутация
0
попробую - отпишу.
вариант с выводом сообщения отрабатывает (сам в шоке, находит пиксель, выводит сообщение, до вывода можно сделать выстрел на ЛКМ - стреляет один раз, закрываем сообщение если в области поиска есть еще нужные пиксели то он смещается на них и так далее. Конечно это не вариант с выводом сообщения))) - мне кажется за счет того, что в момент вывода появляется курсор мыши, может как то попробовать сделать курсор мыши поверх окна игры, и все норм будет.


Добавлено:
Сообщение автоматически объединено:

почему - то
Код:
mousemove
лучше отрабатывает по
Код:
$aPos = MouseGetPos()
тойсть текущее положение курсора.
вот тут
Код:
$aPos = MouseGetPos()
  $Variable = PixelSearch(671,336,699,436,0xD66465, 12 )
  If Not @error Then
  MouseMove ($aPos[0] , $aPos[1] , 80)

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



Добавлено:
Сообщение автоматически объединено:

Вот проверьте (у меня нет возможности)
(нажмите для показа/скрытия)
проверил, кидает в небо или в бок или в ноги)
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
megopixapb
считываем тек полож курсора, если находится нужный пиксель то передвигаем в координаты
... в координаты текущего положения курсора. Другими словами, никуда не передвигаем ;)
 
Верх