Что нового

Цикл while пропускает команды

RomanZemin

Новичок
Сообщения
12
Репутация
0
Мой цикл должен кидать курсор в разные стороны, при этом пользователь может управлять курсором без дискомфорта. А на деле курсор кидает, могу управлять, но бывают моменты, когда одна и та же команда выполнится два раза, и курсор сместиться
Код:
Opt("MouseCoordMode" ,1)

#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <Misc.au3>
#include <String.au3>

HotKeySet("{F1}", "_Exit")

Global $num = 0
Global $sens = 1.75

While 1
    $pos = MouseGetPos()
    if $num = 1 Then
   MouseMove($pos[0] + 10 / $sens, $pos [1] + 5 / $sens, 0)
   Sleep(5)
   MouseMove($pos[0] - 10 / $sens, $pos [1] - 5 / $sens, 0)
   Sleep(300)
    EndIf
WEnd

Func _Exit()
    If $num = 0 Then
        $num = 1
    Else
        $num = 0
    EndIf
EndFunc

(Нажать клавишу F1 для активации/деактивации скрипта, если кто не увидел)
Если у вас всё хорошо работает, попробуйте увеличить смещения и будет более заметно. Заранее спасибо!
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Код:
HotKeySet("{F1}", "Pause")

$num = 0
$sens = 1.75
$dx = Round(10 / $sens)
$dy = Round(5 / $sens)

While Sleep(10)
    If $num Then
        $pos = MouseGetPos()
        $pos[0] += $dx
        $pos[1] += $dy
        MouseMove($pos[0], $pos[1], 0)
        $pos[0] -= $dx
        $pos[1] -= $dy
        MouseMove($pos[0], $pos[1], 0)
        Sleep(300)
    EndIf
WEnd

Func Pause()
    $num = Not $num
EndFunc
 
Автор
R

RomanZemin

Новичок
Сообщения
12
Репутация
0
Логика программы нарушена, тобиш координаты сначала сплюсовываются со значениями. А потом отнимаются от того же. Получается что-то типа:
20 + 10 = 30
20 + 5 = 25
30 - 10 = 20(опять же исходное значение)
25 - 5 = 20( тоже самое)
Тобиш проще говорят, курсор не возвращается на исходное положение. Так как я это использую не в виндоус, а в 3D игре.
Нужно изменить примерно так:
20 + 10 = 30
20 + 5 = 25
30 - 2 *10 = 10(опять же исходное значение)
25 - 2 * 5 = 15( тоже самое)
Но мы приходим практически к тому же, что я и написал. Только координаты написаны с помощью ввода переменных.
Проблема не решена, но за поправки "быдлокода" спасибо.
 
Последнее редактирование:

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
я это использую не в виндоус, а в 3D игре
Об этом нужно предупреждать сразу, т.к. работа курсора на рабочем столе и в игре - это совсем разные вещи.
Я запускал ваш скрипт на рабочем столе и решил, что проблема как раз в том, что курсор постоянно смещается влево-вверх, т.е. не возвращается в начальные координаты. По этой логике и переписал скрипт. А из вашего пояснения я всё равно ничего не понял. Особенно вот это
20 + 10 = 30
20 + 5 = 25
30 - 2 *10 = 10(опять же исходное значение)
25 - 2 * 5 = 15( тоже самое)
Каким образом 10 и 15 являются исходными значениями, если вы начали с 20 ?
 
Автор
R

RomanZemin

Новичок
Сообщения
12
Репутация
0
Об этом нужно предупреждать сразу, т.к. работа курсора на рабочем столе и в игре - это совсем разные вещи.
Я запускал ваш скрипт на рабочем столе и решил, что проблема как раз в том, что курсор постоянно смещается влево-вверх, т.е. не возвращается в начальные координаты. По этой логике и переписал скрипт. А из вашего пояснения я всё равно ничего не понял. Особенно вот это

Каким образом 10 и 15 являются исходными значениями, если вы начали с 20 ?

Честно сам уже в ступоре, но в игре это работает именно так.
 
Верх