Здравствуйте, гость ( Вход | Регистрация )

> Подскажите почему move_smooth не работает?, move_smooth в 3D шутере
SeregaB
сообщение 24.9.2019, 19:29
Сообщение #1


**

Neophyte
Сообщений: 47
Регистрация: 22.9.2019
Группа: Пользователи
Наличность: 0
Пользователь №: 19.405



Столкнулся с проблемой в Lua и обычном коде.
В игре Шутере происходит захват мышки и курсор пропадает.
Далее программа находит цель и ее координаты (set #x и set #y)
После чего идет команта сместить "мышу" move_smooth, но экран не поворачивается.
Сам курсор и все нажатия происходят, но экран в игре остается на месте.
Может надо как то прописать имитацию кода физической мышки, чтобы экран в игре поворачивался?
Такое вообще возможно?
Вот сам код на смещение мышки:

set #x 250
set #y 300
Move #x #y
kleft #x #y // кликнули
kleft_down #x #y // зажали ЛКМ
set clickoffsetx 500 // смещение для координаты X
set clickoffsety 50 // смещение для координаты Y
move_smooth #x #y // Переместили курсор
get mouse_pos #x #y // нашли курсор
kleft_up #x #y
end_script
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
 
Ответить в эту темуОткрыть новую тему
Ответов
SeregaB
сообщение 13.12.2019, 20:40
Сообщение #2


**

Neophyte
Сообщений: 47
Регистрация: 22.9.2019
Группа: Пользователи
Наличность: 0
Пользователь №: 19.405



Нашел такую функцию и она работает, правда в другой программе.
Экран поворачивается на заданное растояние
Код

Func _MouseMovePlus($X, $Y,$absolute = 0)
        Local $MOUSEEVENTF_MOVE = 1
    Local $MOUSEEVENTF_ABSOLUTE = 32768
    DllCall("user32.dll", "none", "mouse_event", _
            "long",  $MOUSEEVENTF_MOVE + ($absolute*$MOUSEEVENTF_ABSOLUTE), _
            "long",  $X, _
            "long",  $Y, _
            "long",  0, _
        "long",  0)
EndFunc

Так тоже работает
Код

Func _MouseMovePlus($X, $Y,$absolute = 0)
        Local $MOUSEEVENTF_MOVE = 1
        DllCall("user32.dll", "none", "mouse_event", _
            "long",  $MOUSEEVENTF_MOVE, _
            "long",  $X, _
            "long",  $Y, _
            "long",  0, _
        "long",  0)
EndFunc


Скажите пожалуйста, как подобное можно реализовать в Пилоте?
Как я и предполагал, через вызов DDL все работает.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Fors1k
сообщение 16.12.2019, 18:30
Сообщение #3


*****

Journeyman
Сообщений: 497
Регистрация: 19.12.2017
Группа: Пользователи
Наличность: 174
Пользователь №: 18.746



Цитата(SeregaB @ 13.12.2019, 20:40) *
Скажите пожалуйста, как подобное можно реализовать в Пилоте?
Как я и предполагал, через вызов DDL все работает.

Ну, походу, то, что ты хотел.
Код
//...
call move 100 -50      // сдвинуть курсор на 100 вправо и на 50 вверх
wait 2000
call move -100 50      // вернуть курсор обратно
wait 2000
call move 1100 500 abs // передвинуть курсор в кординаты 1100 500
//...
end_script
proc move #x #y $abs
set linedelay 0
set #flags 1
if $abs = abs
set #flags 32769
set #x 65536 * #x / screenwidth
set #y 65536 * #y / screenheight
end_if
exec winapiexec.exe u@mouse_event #flags #x #y 0 0
end_proc

Файл закинь в /System32.


Прикрепленные файлы
Прикрепленный файл  file.rar ( 1,87 килобайт ) Кол-во скачиваний: 381


--------------------
Для связиИзображение
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
SeregaB
сообщение 18.12.2019, 12:20
Сообщение #4


**

Neophyte
Сообщений: 47
Регистрация: 22.9.2019
Группа: Пользователи
Наличность: 0
Пользователь №: 19.405



Цитата(Fors1k @ 16.12.2019, 18:30) *

Ну, походу, то, что ты хотел.

Файл закинь в /System32.

Отлично, спасибо, теперь получился поворот экрана, только не понятно что это за файл и как его делать под себя, если понадобятся другие задачи. Как я понимаю, в Пилоте напрямую через DLL нельзя прописать такую функцию?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Fors1k
сообщение 18.12.2019, 21:14
Сообщение #5


*****

Journeyman
Сообщений: 497
Регистрация: 19.12.2017
Группа: Пользователи
Наличность: 174
Пользователь №: 18.746



Цитата(SeregaB @ 18.12.2019, 12:20) *

Отлично, спасибо, теперь получился поворот экрана, только не понятно что это за файл и как его делать под себя, если понадобятся другие задачи.

В смысле как запускать другие функции winapi? Я думал тебе только move был нужен, и написал удобную процедуру именно под него. Можно и универсальную сделать.
Для любой функции winapi: call winApi <библиотека> <функция> <параметры(одной переменной)> .
А можно и совместить, если move все-таки будет использоваться в коде часто.
Пример:
Код
set $params 1 -300 -250 0 0
call winapi u mouse_event $params              // сдвинуть курсор на 300 влево и на 250 вверх
wait 1000

call move 300 250                              // вернуть курсор обратно    (КОРОТКАЯ ЗАПИСЬ)
wait 2000
call move 500 500 abs                          // сдвинуть курсор в 500x500 (КОРОТКАЯ ЗАПИСЬ)

set $params 0 open calc.exe 0 0 1
call winapi s ShellExecuteW $params            // запустить калькулятор
wait 4000

set $params findwindow('калькулятор') 16 0 0
call winapi u SendMessageW $params             // закрыть калькулятор

end_script

//---------------------------------------------

proc winapi $lib $function $params
set linedelay 0
switch $lib
case u
exec winapiexec.exe user32.dll@$function $params
break
case s
exec winapiexec.exe shell32.dll@$function $params
break
end_switch
end_proc
proc move #x #y $abs
set linedelay 0
set #flags 1
if $abs = abs
set #flags 32769
set #x 65536 * #x / screenwidth
set #y 65536 * #y / screenheight
end_if
exec winapiexec.exe u@mouse_event #flags #x #y 0 0
end_proc

Цитата(DarkMaster @ 18.12.2019, 12:48) *
Скорее всего кстати файлик закинуть можно и просто рядом с пилотом.

Ага, можно куда угодно. Просто в s32 удобно, что бы путь не писать каждый раз)
Цитата(DarkMaster @ 17.12.2019, 22:51) *

Потому что я малость не шарю в винапи

Да я сам впервые вижу этот вин апи, и уже начинаю его недолюбливать))


--------------------
Для связиИзображение
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
SeregaB
сообщение 23.12.2019, 11:12
Сообщение #6


**

Neophyte
Сообщений: 47
Регистрация: 22.9.2019
Группа: Пользователи
Наличность: 0
Пользователь №: 19.405



Цитата(Fors1k @ 18.12.2019, 21:14) *

Да я сам впервые вижу этот вин апи, и уже начинаю его недолюбливать))

Хоть и впервые, но уже много чего можешь сделать. Я совсем не представляю откуда брать параметры и как это все на деле применять. В разных программах все по разному, конкретного описапия нигде не нашел.
Просто с применением WinApi расширяется круг возможностей, пример тому решилась моя задача.

Fors1k, единственное есть вопрос, как можно сделать плавное смещение курсора командой call move x y?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Fors1k
сообщение 23.12.2019, 19:48
Сообщение #7


*****

Journeyman
Сообщений: 497
Регистрация: 19.12.2017
Группа: Пользователи
Наличность: 174
Пользователь №: 18.746



Цитата(SeregaB @ 23.12.2019, 11:12) *
Fors1k, единственное есть вопрос, как можно сделать плавное смещение курсора командой call move x y?

Код
wait 500
set linedelay 0
call move -500 -230           // сдвинуть курсор на 500 влево и на 230 вверх

wait 1200

call movesmooth 500 230       // плавно вернуть курсор обратно

end_script

//----------------------------

proc movesmooth #x #y
set #cf 12
set #cx #x / #cf
set #cy #y / #cf
repeat #cf
call move #cx #cy
end_repeat
set #fx #x - #cx * #cf
set #fy #y - #cy * #cf
call move #fx #fy
end_proc

proc move #x #y $abs
set linedelay 0
set #flags 1
if $abs = abs
set #flags 32769
set #x 65536 * #x / screenwidth
set #y 65536 * #y / screenheight
end_if
exec winapiexec.exe u@mouse_event #flags #x #y 0 0
end_proc


--------------------
Для связиИзображение
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Zenogiasu
сообщение 13.1.2023, 9:21
Сообщение #8


***

Novice
Сообщений: 59
Регистрация: 3.12.2022
Группа: Пользователи
Наличность: 0
Пользователь №: 20.434
Возраст: 28



Очень странно... Такая сверхважная весчь, как перемещение камеры вместе с курсором в играх с нонтаргетом... описывается только в 1 захолустной темке на форуме, которую случайно нашел. Был уверен что пилотик на такое не способен, и придется учитться работать с ардуино, ведь утвержалось так, будто лишь только через этот дополнительный костыль в виде платы можно двигать камеру. Но тут приходит уважаемый Fors1k, пишет какой-то файлик и О ЧУДО! Пилот из простого-умного манипулятора мышкой превращается в полноценную программу для написания серьезных ботов в современных играх с нонтаргетом, а не только в браузерках и уо, где только курсором и нужно управлять) Спасибо.
Уже собирался заказывать ардуино, хорошо что темку откапал вовремя
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Сообщений в этой теме
SeregaB   Подскажите почему move_smooth не работает?   24.9.2019, 19:29
DarkMaster   все сильно зависит от конкретной реализации. Двига...   25.9.2019, 3:46
SeregaB   все сильно зависит от конкретной реализации. Двиг...   4.10.2019, 18:51
SeregaB   все сильно зависит от конкретной реализации. Двиг...   26.9.2019, 10:17
Levo222   Тоесть в первом случае сначала навести курсор на ...   26.9.2019, 14:17
SeregaB   Мне кажется нужно производить это совсем другим и...   26.9.2019, 17:45
Levo222   Какие есть предложения? Делать через C-шную част...   28.9.2019, 2:54
SeregaB   Тоесть в первом случае сначала навести курсор на ...   26.9.2019, 19:13
FREEON   set #poisk findcolor (0, 0 1600, 900 1 1 ...   26.9.2019, 23:27
SeregaB   set #poisk findcolor (0, 0 1600, 900 1 1 ...   27.9.2019, 8:52
DarkMaster   при движении учитывать, что курсор всегда находит...   28.9.2019, 16:58
SeregaB   Кто знает как этим пользоваться? Macro_send - отп...   4.10.2019, 15:41
DarkMaster   попробуйте не через макрос, а через скрипт. move   6.10.2019, 22:46
SeregaB   попробуйте не через макрос, а через скрипт. move ...   9.10.2019, 10:22
nykep   Я уже не понимаю, что надо делать играть в шутер...   15.11.2019, 16:03
SeregaB   играть в шутеры честно, это тебе не корейская ммо...   17.11.2019, 15:02
DarkMaster   попробуйте без смещений, так же рекомендую в качес...   9.10.2019, 11:12
SeregaB   попробуйте без смещений, так же рекомендую в каче...   10.10.2019, 12:33
minfin   такой же вопрос, есть подозрение что сервер счит...   15.11.2019, 9:04
DarkMaster   Move не имеет скорости. Он имеет только конечную...   15.11.2019, 11:21
DarkMaster   Вы форумом не ошиблись?) Я не выгоняю ни коем обр...   15.11.2019, 16:22
nykep   Вы форумом не ошиблись?) Я не выгоняю ни коем обр...   15.11.2019, 16:56
Levo222   в чем смысл игры в шутер если не в соревновании?...   15.12.2019, 10:31
Fors1k   играть в шутеры - это не выполнение рутинных дейс...   15.11.2019, 19:29
SeregaB   Вот как пример, это я делал бота на проге внутри а...   17.11.2019, 15:16
FREEON   ну с весом пилота и его способностями он превосход...   17.11.2019, 17:58
SeregaB   а хочешь автоприцел на андроид то поищи crosshair...   18.11.2019, 10:53
SeregaB   тебе нужно устанавливать autoit 3 Попробовал Aut...   18.11.2019, 18:42
FREEON   Попробовал Autoit 3, тоже не поворачивает командо...   18.11.2019, 23:04
SeregaB   вот те некоторые направления для поиска, далее са...   19.11.2019, 12:47
SeregaB   Попробовал через программу <...>, там смещен...   19.11.2019, 14:22
SeregaB   Вопрос к знатокам! Скажите пожалуйста, есль ли...   10.12.2019, 16:35
Fors1k   set #HWND findwindow ('Твоя игра'...   14.12.2019, 18:18
cirus   Только если написать свою длл, в которой можно ис...   14.12.2019, 18:43
Fors1k   Только если написать свою длл, в которой можно ис...   14.12.2019, 21:47
DarkMaster   Fors1k, а это не тот же sendmessage? Через него не...   17.12.2019, 18:10
Fors1k   Fors1k, а это не тот же sendmessage? Через него н...   17.12.2019, 18:53
DarkMaster   У меня есть очередной ответ под копирку, который...   17.12.2019, 19:03
Fors1k   [quote name='DarkMaster' post='434898' date='17.12...   17.12.2019, 19:49
DarkMaster   Потому что я малость не шарю в винапи, и у меня е...   17.12.2019, 22:51
DarkMaster   Можно. Скорее всего кстати файлик закинуть можно...   18.12.2019, 12:48
DarkMaster   Уверяю все это пишется на ура без плавного перемещ...   13.1.2023, 11:48
Cockney   Скорее оффтоп, но все же интересно. А есть ли реше...   13.1.2023, 13:30
DarkMaster   готового нет. там есть вопросы по тому какие будут...   13.1.2023, 14:50
Zenogiasu   Про плавное перемещение я и не упоминал, там сразу...   14.1.2023, 14:33
Zenogiasu   Приветствую авантюристы. Возникла пара вопросов. к...   29.3.2023, 20:03
Cockney   Раньше было такое решение https://forum.uokit.com/...   29.3.2023, 21:42
Zenogiasu   Сейчас лучше lua использовать :rolleyes: спс. ...   30.3.2023, 1:38
Cockney   :rolleyes: спс. согласен. но в печали что это не...   30.3.2023, 10:29
nykep   чтоб вернуть обратно записывай все рандомные движе...   30.3.2023, 9:55
Zenogiasu   чтоб вернуть обратно записывай все рандомные движ...   30.3.2023, 16:59
Zenogiasu   Здравстуйте. подскажите пожалуйста существует ли п...   25.4.2023, 15:09
cirus   Скорость работы скрипта зависит от процессора.   25.4.2023, 17:42
Zenogiasu   Скорость работы скрипта зависит от процессора. З...   25.4.2023, 21:54
nykep   вэйты должны работать как надо независимо от скоро...   27.4.2023, 2:51
cirus   Почитайте как работает Sleep в Windows. Если вкра...   27.4.2023, 13:18
DarkMaster   По большому счету там два возможных шага 16мс на ...   27.4.2023, 18:56
Zenogiasu   Хелп. Через проц не ищет почему-то финдколор. пише...   3.5.2023, 4:28
nykep   у тебя результат findcolor записывает в переменную...   3.5.2023, 14:52
Zenogiasu   у тебя результат findcolor записывает в переменну...   8.5.2023, 2:13
nykep   похоже что переменные в процедуре считаются локаль...   8.5.2023, 4:31
DarkMaster   Одной из целей создания процедур в пилоте было име...   10.5.2023, 15:59
Zenogiasu   Одной из целей создания процедур в пилоте было им...   18.5.2023, 23:54
nykep   пишу скрипт 1 wait 1000 log #a.2 скрипт 2 wait 100...   19.5.2023, 23:04
Zenogiasu   Держите для этих целей отдельную вкладку. Использ...   27.5.2023, 20:20
Zenogiasu   пишу скрипт 1 wait 1000 log #a.2 скрипт 2 wait 10...   27.5.2023, 23:20
DarkMaster   Держите для этих целей отдельную вкладку. Использу...   20.5.2023, 21:56
DarkMaster   так делать я бы точно не стал. Можно выйти за пре...   28.5.2023, 18:52
Zenogiasu   так делать я бы точно не стал. Можно выйти за пре...   28.5.2023, 22:18
DarkMaster   Там схема немного иная. Я где-то описывал найти не...   29.5.2023, 14:30
Zenogiasu   Там схема подскажите пожалуйста почему код sende...   18.6.2023, 21:42
DarkMaster   Это может быть связано с тем, что данный символ до...   19.6.2023, 0:30
Zenogiasu   Это может быть связано с тем, что данный символ д...   19.6.2023, 8:45
DarkMaster   попробуйте заменить sendex @ на sendex @{}   19.6.2023, 17:50


Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 1.7.2025, 19:03
Designed by Nickostyle