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

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


**

Neophyte
Сообщений: 28
Регистрация: 22.9.2019
Группа: Пользователи
Наличность: 73
Пользователь №: 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Отправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 25.9.2019, 3:46
Сообщение #2


***********

Модератор UOPilot
Сообщений: 8.387
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 25836
Пользователь №: 11.279



все сильно зависит от конкретной реализации. Двигать зачастую нужно относительно центра экрана либо координаты 1.1 либо 0.0.


--------------------
Скрипты под заказ.
Консультации по UOpilot через ICQ, Skype, Ventrilo, TeamSpeak, TeamViewer 700р/час.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
SeregaB
сообщение 26.9.2019, 10:17
Сообщение #3


**

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



Цитата(DarkMaster @ 25.9.2019, 3:46) *

все сильно зависит от конкретной реализации. Двигать зачастую нужно относительно центра экрана либо координаты 1.1 либо 0.0.

Тоесть в первом случае сначала навести курсор на центр экрана (X/2 , Y/2), а потом делать смещение?
Тоже самое и с координатами 1.1 и 0.0?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Levo222
сообщение 26.9.2019, 14:17
Сообщение #4


****

Apprentice
Сообщений: 218
Регистрация: 18.11.2017
Группа: Пользователи
Наличность: 68
Пользователь №: 18.689



Цитата(SeregaB @ 26.9.2019, 14:17) *

Тоесть в первом случае сначала навести курсор на центр экрана (X/2 , Y/2), а потом делать смещение?
Тоже самое и с координатами 1.1 и 0.0?

Мне кажется нужно производить это совсем другим инструментом, то что сейчас это как будто бы пытаться сделать ногами нежели руками.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
SeregaB
сообщение 26.9.2019, 17:45
Сообщение #5


**

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



Цитата(Levo222 @ 26.9.2019, 14:17) *

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

Какие есть предложения?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
SeregaB
сообщение 26.9.2019, 19:13
Сообщение #6


**

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



Цитата(SeregaB @ 26.9.2019, 10:17) *

Тоесть в первом случае сначала навести курсор на центр экрана (X/2 , Y/2), а потом делать смещение?
Тоже самое и с координатами 1.1 и 0.0?

Пробовал все три варианта, экран в игре не поворачивается.
Что можно еще сделать?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
FREEON
сообщение 26.9.2019, 23:27
Сообщение #7


****

Apprentice
Сообщений: 285
Регистрация: 14.2.2017
Группа: Пользователи
Наличность: 1429
Пользователь №: 18.346
Возраст: 25



Код
set #poisk findcolor (0, 0 1600, 900 1 1 (3949430) %arr 2 1 abs) //поиск цвета по экрану
if #poisk > 0           // если найден нужный цвет, то
  move %arr [1 1], %arr [1 2] // наведем мышку на точку
end_if
set #vustrel findcolor (795, 445 805, 455 1 1 (3949430) %fire 2 1 abs) //когда цвет попадает в область прицела
if #vustrel > 0           // если если цвет в прицеле, то
  kleft %fire [1 1], %fire [1 2] // сделаем один выстрел
end_if
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
SeregaB
сообщение 27.9.2019, 8:52
Сообщение #8


**

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



Цитата(FREEON @ 26.9.2019, 23:27) *

Код
set #poisk findcolor (0, 0 1600, 900 1 1 (3949430) %arr 2 1 abs) //поиск цвета по экрану
if #poisk > 0           // если найден нужный цвет, то
  move %arr [1 1], %arr [1 2] // наведем мышку на точку
end_if
set #vustrel findcolor (795, 445 805, 455 1 1 (3949430) %fire 2 1 abs) //когда цвет попадает в область прицела
if #vustrel > 0           // если если цвет в прицеле, то
  kleft %fire [1 1], %fire [1 2] // сделаем один выстрел
end_if


Такой код мне не подходит, я по такому принципу и делал
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Levo222
сообщение 28.9.2019, 2:54
Сообщение #9


****

Apprentice
Сообщений: 218
Регистрация: 18.11.2017
Группа: Пользователи
Наличность: 68
Пользователь №: 18.689



Цитата(SeregaB @ 26.9.2019, 21:45) *

Какие есть предложения?

Делать через C-шную часть игры

Цитата(SeregaB @ 26.9.2019, 14:17) *

навести курсор на центр экрана

Запомнить область где она находилась, и с шагом N производить смещения относительно неё в ту область которая нужна
что-то типо SaveMousePos
А еще можно переназначить управление по типу движение мышью = клавиша такая-то(смещение на такое-то кол-во координат) В игре должна быть команда по типу "центрировать прицел" или что-то вроде того вместе с ней производить клики
В некоторых приложениях приходится убивать фон чтобы принялись клики мышью типо KillBackgroundFocus
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 28.9.2019, 16:58
Сообщение #10


***********

Модератор UOPilot
Сообщений: 8.387
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 25836
Пользователь №: 11.279



Цитата
Тоесть в первом случае сначала навести курсор на центр экрана (X/2 , Y/2), а потом делать смещение?
Тоже самое и с координатами 1.1 и 0.0?

при движении учитывать, что курсор всегда находится в этих координатах. Соответственно, если нужно чуть влево, то скажем, move нужно сделать в координаты x/2-1, y/2. Оси могут быть инвертированы.


--------------------
Скрипты под заказ.
Консультации по UOpilot через ICQ, Skype, Ventrilo, TeamSpeak, TeamViewer 700р/час.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
SeregaB
сообщение 4.10.2019, 15:41
Сообщение #11


**

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



Кто знает как этим пользоваться?

Macro_send - отправка нажатий клавиш с помощью макроса.
В инструкции нет описания.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
SeregaB
сообщение 4.10.2019, 18:51
Сообщение #12


**

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



Цитата(DarkMaster @ 25.9.2019, 3:46) *

все сильно зависит от конкретной реализации. Двигать зачастую нужно относительно центра экрана либо координаты 1.1 либо 0.0.

Методом записи движения мышки, получилось определить, что движения начинаются из центра экрана.
Пробовал потом воспроизвести запись, но экран не двигался!!! Но от физической мышки он поворачивается. Пробовал через запись и воспроизведение макроса, то же не получается.
Что еще можно сделать?
Может кто знает как назначить клавиши управления от джостика?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 6.10.2019, 22:46
Сообщение #13


***********

Модератор UOPilot
Сообщений: 8.387
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 25836
Пользователь №: 11.279



попробуйте не через макрос, а через скрипт. move


--------------------
Скрипты под заказ.
Консультации по UOpilot через ICQ, Skype, Ventrilo, TeamSpeak, TeamViewer 700р/час.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
SeregaB
сообщение 9.10.2019, 10:22
Сообщение #14


**

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



Цитата(DarkMaster @ 6.10.2019, 22:46) *

попробуйте не через макрос, а через скрипт. move


move тоже не работает
Код

log СТАРТ
set #x 1280/2    // от куда двигаем курсор
set #y 720/2     // от куда двигаем курсор
log начало движения #x x #y
move #x #y             // навели
wait 100
kleft_down #x #y       // зажали ЛКМ
wait 100
move 1000 400 //#x #y      // Переместили курсор
wait 200
get mouse_pos #x #y     // нашли курсор
log сместили курсор в #x х #y             // показать в лог
wait 200
kleft_up #x #y         // отпустили ЛКМ
log отпустили ЛКМ в #x х #y             // показать в лог
wait 100
get mouse_pos #x #y     // нашли курсор
log конечная коорд. курсора  #x x #y             // показать в лог
end_script

Это лог в режиме игры
9:52:43 19 (autosaved_19.txt, 0): СТАРТ
9:52:44 19 (autosaved_19.txt, 3): начало движения 640 x 360
9:52:46 19 (autosaved_19.txt, 15): сместили курсор в 645 х 354
9:52:47 19 (autosaved_19.txt, 24): отпустили ЛКМ в 645 х 354
9:52:47 19 (autosaved_19.txt, 28): конечная коорд. курсора 645 x 354
А это лог без игры с темже скриптом
10:02:23 19 (autosaved_19.txt, 0): СТАРТ
10:02:23 19 (autosaved_19.txt, 3): начало движения 640 x 360
10:02:25 19 (autosaved_19.txt, 15): сместили курсор в 1000 х 400
10:02:26 19 (autosaved_19.txt, 24): отпустили ЛКМ в 1000 х 400
10:02:27 19 (autosaved_19.txt, 28): конечная коорд. курсора 1000 x 400

Я уже не понимаю, что надо делать, может какого то обновления в системе не хватает (W7 у мменя)?
Экран в игре вообще не поворачивается, в не режима боя в тойже игре все смещения работают.


Это тоже самое, только командой move_smooth
Код

log СТАРТ
set #x 1280/2    // от куда двигаем курсор
set #y 720/2     // от куда двигаем курсор
log начало движения #x x #y
move #x #y             // навели
wait 100
kleft_down #x #y       // зажали ЛКМ
wait 100
set clickoffsetx 300     // смещение для координаты X
set clickoffsety 50     // смещение для координаты Y
move_smooth #x #y      // Переместили курсор медленно
wait 200
get mouse_pos #x #y     // нашли курсор
log сместили курсор в #x х #y             // показать в лог
wait 200
kleft_up #x #y         // отпустили ЛКМ
log отпустили ЛКМ в #x х #y             // показать в лог
wait 100
get mouse_pos #x #y     // нашли курсор
log конечная коорд. курсора  #x x #y             // показать в лог
end_script


Вот какой лог:
В игре
526666 -> War Robots Steam
10:16:37 19 (autosaved_19.txt, 0): СТАРТ
10:16:38 19 (autosaved_19.txt, 3): начало движения 640 x 360
10:16:40 19 (autosaved_19.txt, 15): сместили курсор в 645 х 354
10:16:41 19 (autosaved_19.txt, 24): отпустили ЛКМ в 645 х 354
10:16:42 19 (autosaved_19.txt, 28): конечная коорд. курсора 645 x 354

Не в игре
65846 -> FolderView
10:17:02 19 (autosaved_19.txt, 0): СТАРТ
10:17:02 19 (autosaved_19.txt, 3): начало движения 640 x 360
10:17:05 19 (autosaved_19.txt, 15): сместили курсор в 940 х 410
10:17:06 19 (autosaved_19.txt, 24): отпустили ЛКМ в 940 х 410
10:17:06 19 (autosaved_19.txt, 28): конечная коорд. курсора 1240 x 460 (тут почему то курсор всегда улетает на двойное расстояние от смещения по Х и У, тоже не пойму почему так?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 9.10.2019, 11:12
Сообщение #15


***********

Модератор UOPilot
Сообщений: 8.387
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 25836
Пользователь №: 11.279



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


--------------------
Скрипты под заказ.
Консультации по UOpilot через ICQ, Skype, Ventrilo, TeamSpeak, TeamViewer 700р/час.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
SeregaB
сообщение 10.10.2019, 12:33
Сообщение #16


**

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



Цитата(DarkMaster @ 9.10.2019, 11:12) *

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

Попробовал
Так тоже не работает
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

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

 

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