Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

UoKit.com Форумы _ UO Pilot _ Движения мышки

Автор: DenyaBanan 3.6.2020, 20:27

Дорогие форумчане, подскажите, как сделать движения мыши через нампад в uopilot'e?

Автор: cirus 4.6.2020, 1:25

Имеется ввиду нажали на цифру 6 и курсор сдвинулся вправо, на 4 влево?

Автор: DenyaBanan 4.6.2020, 15:02

Цитата(cirus @ 4.6.2020, 2:25) *

Имеется ввиду нажали на цифру 6 и курсор сдвинулся вправо, на 4 влево?


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

Автор: cirus 5.6.2020, 1:48

Код
--lua
local ffi = require("ffi")
local user = ffi.load('User32.dll')
local VK_NUMPAD2, VK_NUMPAD4, VK_NUMPAD6, VK_NUMPAD8 = 0x62,0x64,0x66,0x68
ffi.cdef[[
typedef short           SHORT;
SHORT GetKeyState(int nVirtKey);
SHORT GetAsyncKeyState(int vKey);
]]

local delta = 10   -- насколько пикселей смещать курсор
while true do
    local x, y = mouse_pos()
    if user.GetAsyncKeyState(VK_NUMPAD2) ~= 0 then
        move(x, y+delta)
    end
    if user.GetAsyncKeyState(VK_NUMPAD4) ~= 0 then
        move(x-delta, y)
    end
    if user.GetAsyncKeyState(VK_NUMPAD6) ~= 0 then
        move(x+delta, y)
    end
    if user.GetAsyncKeyState(VK_NUMPAD8) ~= 0 then
        move(x, y-delta)
    end

    wait (10)
end

Автор: DenyaBanan 5.6.2020, 2:29

Цитата(cirus @ 5.6.2020, 2:48) *

Код
--lua
local ffi = require("ffi")
local user = ffi.load('User32.dll')
local VK_NUMPAD2, VK_NUMPAD4, VK_NUMPAD6, VK_NUMPAD8 = 0x62,0x64,0x66,0x68
ffi.cdef[[
typedef short           SHORT;
SHORT GetKeyState(int nVirtKey);
SHORT GetAsyncKeyState(int vKey);
]]

local delta = 10   -- насколько пикселей смещать курсор
while true do
    local x, y = mouse_pos()
    if user.GetAsyncKeyState(VK_NUMPAD2) ~= 0 then
        move(x, y+delta)
    end
    if user.GetAsyncKeyState(VK_NUMPAD4) ~= 0 then
        move(x-delta, y)
    end
    if user.GetAsyncKeyState(VK_NUMPAD6) ~= 0 then
        move(x+delta, y)
    end
    if user.GetAsyncKeyState(VK_NUMPAD8) ~= 0 then
        move(x, y-delta)
    end

    wait (10)
end



Не совсем понял как работает данный код. Можно чуть чуть больше описания пожалуйста?

Цитата(DenyaBanan @ 4.6.2020, 16:02) *

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


Разобрался потыкавшись, но объясню суть, мне нужно, чтобы курсор смещался вправо допустим на 50 пикселей, после этого смещался обратно, и так по кругу. Реализуемо ли это в этом скрипте?

Автор: cirus 5.6.2020, 11:15

Цитата
чтобы курсор смещался вправо допустим на 50 пикселей, после этого смещался обратно

Допишите нужные действия.
Код
--lua
local x, y = mouse_pos()  -- получить координаты курсора
move(x+50, y)             -- сместить на 50 пикселей вправо
wait (1000)               -- ждать 1 секунду
x, y = mouse_pos()        -- получить координаты курсора
move(x-50, y)             -- сместить на 50 пикселей влево

Автор: DenyaBanan 5.6.2020, 14:11

Цитата(cirus @ 5.6.2020, 12:15) *

Допишите нужные действия.
Код
--lua
local x, y = mouse_pos()  -- получить координаты курсора
move(x+50, y)             -- сместить на 50 пикселей вправо
wait (1000)               -- ждать 1 секунду
x, y = mouse_pos()        -- получить координаты курсора
move(x-50, y)             -- сместить на 50 пикселей влево



Друг, проблема в том, что игра не воспринимает движения мыши через команду move, либо делает это очень коряво, поэтому я и написал про нумпад, мне нужно именно сделать это через него. Вероятнее всего с отсчетом времени, типо 3 секунды зажа клавиша NUM6 потом 3 секунды NUM4 и так по кругу.

И если не сложно, скажи, как ты пишешь такие скрипты, и где нарыть инфу для них, а то листаю форум, и вообще понять ничего не могу.

Автор: cirus 5.6.2020, 14:29

Цитата
и где нарыть инфу для них

https://uopilot.uokit.com/wiki/index.php?title=Главная
Смотрите список функций.
Цитата
типо 3 секунды зажа клавиша NUM6 потом 3 секунды NUM4

Код
--lua
showwindow(windowhandle(), "MINIMIZE")  -- свернуть окно пилота
wait (1000)

sendex_down ('{num_6}')      -- зажать  num_6
wait (3000)                  -- ждать 3 секунды
sendex_up ('{num_6}')        -- отпустить num_6

wait (1000)

sendex_down ('{num_4}')
wait (3000)
sendex_up ('{num_4}')

showwindow(windowhandle(), "RESTORE")  -- показать окно пилота


Автор: DenyaBanan 5.6.2020, 15:21

Цитата(cirus @ 5.6.2020, 15:29) *

https://uopilot.uokit.com/wiki/index.php?title=Главная
Смотрите список функций.

Код
--lua
showwindow(windowhandle(), "MINIMIZE")  -- свернуть окно пилота
wait (1000)

sendex_down ('{num_6}')      -- зажать  num_6
wait (3000)                  -- ждать 3 секунды
sendex_up ('{num_6}')        -- отпустить num_6

wait (1000)

sendex_down ('{num_4}')
wait (3000)
sendex_up ('{num_4}')

showwindow(windowhandle(), "RESTORE")  -- показать окно пилота



Через Sendex оно не работает, при первом скрипте, который ты мне кинул, оно работало, пярм вообще шик, подскажи, как тот можно переделать под это желание

Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)