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

5 страниц V « < 3 4 5  
Ответить в эту темуОткрыть новую тему
> CapsLock On, Проверка статуса нажатия/включения
Levo222
сообщение 13.9.2025, 9:40
Сообщение #81


*****

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



Цитата(DarkMaster @ 26.2.2019, 5:44) *

Есть хорошая новость - я научился из луа дергать состояние клавиш и капса в том числе:


Дерагать либы отсюда:
https://luapower.com/winapi/download
https://luapower.com/glue/download

А теперь откуда? Потерял все скрипты, появилась необходимость кое-что восстановить.
В чистом пилоте night version, 15.05.2021 Release 34093 так понимаю нет этих библиотек?
Цитата
65848 -> FolderView
13:50:13 0 (Klicked_Auto_0.txt, 0): a runtime error.
5: module 'winapi' not found:
no field package.preload['winapi']
no file 'luaPlugins\winapi\winapi.lua'
no file '.\winapi.lua'
no file 'C:\Users\admin\Downloads\uopilot_241_b004\lua\winapi.lua'
no file 'C:\U


Короче может без библиотек есть возможность закликать досмерти левую мышку чтобы пальцем этого не делать? Только ключ включения/выключения нужен, на сам пилот нажимать в этот момент нет возможности.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 13.9.2025, 10:06
Сообщение #82


***********

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



попробуйте вот это
https://forum.uokit.com/index.php?showtopic=71536
там много всего в т.ч. статусы клавиш.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____

Контакт актуален, подпись актуальна.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Levo222
сообщение 13.9.2025, 10:47
Сообщение #83


*****

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



Цитата(DarkMaster @ 13.9.2025, 14:06) *

попробуйте вот это
https://forum.uokit.com/index.php?showtopic=71536
там много всего в т.ч. статусы клавиш.

там сразу так и не разберешься....


Цитата
keystate - получить состояние клавиши
keystateasync - получить состояние клавиши асинхронно.


И в чем разница?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Levo222
сообщение 13.9.2025, 12:07
Сообщение #84


*****

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



Цитата(Levo222 @ 13.9.2025, 13:40) *

Короче может без библиотек есть возможность закликать досмерти левую мышку чтобы пальцем этого не делать? Только ключ включения/выключения нужен, на сам пилот нажимать в этот момент нет возможности.

Ой ладно попроще,
-при нажатии на 9
-произвести 100 кликов мышкой с интервалом в 100с мс

че-то локальные переменные не объявляются, глобальные тоже
Цитата
--lua
require"lua_system\\init"

pressed_down = false -- вот это вот не объявляется не локально не глобально
while 1 do
local x, y = mouse_pos () -- получить координаты
state, toggle = keystate(0x14)
if toggle then -- горит капс
if not pressed_down then
--send217_down ("w")
--kleft (x, y) -- клик
kleft
--(mouse_pos())
--input
--sendex_down ("w")
pressed_down = true
end
else
if pressed_down then
--send217_up ("w")
--sendex_up ("w")
pressed_down = false
end
end
wait (100)
end


Цитата
Код
pressed_down = false
while 1 do
16:24:15 1 (autosaved_1.txt, 0): syntax error during precompilation.
16: '=' expected near 'pressed_down'
--lua
require"lua_system\\init"

pressed_down = false
while 1 do
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 13.9.2025, 19:22
Сообщение #85


***********

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



https://forum.uokit.com/index.php?showtopic...amp;hl=keystate


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____

Контакт актуален, подпись актуальна.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Levo222
сообщение 13.9.2025, 20:13
Сообщение #86


*****

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



Цитата(DarkMaster @ 13.9.2025, 23:22) *

Да нет, статус то там возможно определяет, переменная не присваивается. Обычная, не клавишная.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 13.9.2025, 21:17
Сообщение #87


***********

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



всмысле не присваивается? Дайте минимальный полный код для воспроизведения.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____

Контакт актуален, подпись актуальна.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 13.9.2025, 22:10
Сообщение #88


***********

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



Цитата
--kleft (x, y) -- клик
kleft
--(mouse_pos())

скобки где?


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____

Контакт актуален, подпись актуальна.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Levo222
сообщение 14.9.2025, 9:56
Сообщение #89


*****

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



Цитата(DarkMaster @ 14.9.2025, 1:17) *

Дайте минимальный полный код для воспроизведения.


Код
--lua
require"lua_system\\init"

local pressed_down = false
while 1 do
local x, y = mouse_pos ()    -- получить координаты
state, toggle = keystate(0x14)
    if toggle then   -- горит капс
        if not pressed_down then
            --send217_down ("w")
            --kleft (x, y)     -- клик
            kleft
            --(mouse_pos())
            --input
            --sendex_down ("w")
            pressed_down = true
        end
        else
            if  pressed_down then
                --send217_up ("w")
                --sendex_up ("w")
                pressed_down = false
            end
    end
wait (100)
end
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 14.9.2025, 10:24
Сообщение #90


***********

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



Цитата
Цитата
--kleft (x, y) -- клик
kleft
--(mouse_pos())

скобки где?



код не запускается. во-первых скобки, во-вторых keystate является частью kbd.

Код

--lua
require"lua_system\\init"

local pressed_down = false
while 1 do
    local x, y = mouse_pos ()    -- получить координаты
    state, toggle = kbd.keystate("num_lock")
    log(tostring(state), tostring(toggle))

    if toggle then   -- горит капс
        if not pressed_down then
            pressed_down = true
        end
    else
        if pressed_down then
            pressed_down = false
        end
    end
    wait (100)
end


Сообщение отредактировал DarkMaster - 14.9.2025, 10:26


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____

Контакт актуален, подпись актуальна.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Levo222
сообщение 14.9.2025, 10:56
Сообщение #91


*****

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



Цитата(DarkMaster @ 14.9.2025, 14:24) *

keystate является частью kbd.


В СПРАВКЕ ОБ ЭТОМ НИЧЕГО НЕ СКАЗАНО

я ДУМАЮ, МНОЖЕСТВО НЕИЗВЕСТНЫХ ВЕЛИЧИН, И ВООБЩЕ ПОНМАНИЯ, капс постоянно включается. происходит потому что разработчики - т .е. создатели не оглашают причин почему они это создали, так были бы видны их мотивы, и последовательность размышления приводила бы к нужному результату, чужое творение - потемки, пока не видны их замыслы.

Например наш создатель, когда он создавал нас, чем он руководствовался? что его толкнуло на это? Если бы мы знали - мы бы понимали для чего мы, и в чем смысл?
Например ему было скучно, страшно, одиноко, или что? Так вот человек заброшенный кем-то плохо работающий код, который создатель не удосужился довести до ума. Есть ли в нем способность к самоисправлению?

Да, и кстати код не работает как надо, он давит 1 раз и всё. Полагаю из-за --
Цитата
--lua
require"lua_system\\init"

local pressed_down = false
while 1 do
local x, y = mouse_pos () -- получить координаты
state, toggle = kbd.keystate("num_lock")
log(tostring(state), tostring(toggle))

if toggle then -- горит капс
if not pressed_down then
pressed_down = true
end
else
--
if pressed_down then
pressed_down = false
end
end
wait (100)
end

Я так и не разобрался в lua, полагаю потому же что мне неизвестны замыслы разработчиков, и почему в одной платформе else действует как продолжение, а в некоторых как конец.

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


*****

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



ДА вы известны)

Цитата
[14.09.2025 16:07]
напиши код на lua который бы решал следующую задачу, выполняется в бесконечном цикле, при нажатии на капс-лок происходит спам левой кнопки мыши с интервалом в 100 мс, пока горит лампочка капс-лок, когда она выключена, спам прекращается

DeepSeek | GptChat,
[14.09.2025 16:07]
Для решения этой задачи на Lua, вам потребуется библиотека, которая позволяет взаимодействовать с операционной системой для:
1. Определения состояния клавиши Caps Lock.
2. Имитации нажатий мыши.
3. Задержки выполнения (sleep).

Стандартный Lua не имеет таких возможностей "из коробки". Наиболее удобный способ сделать это на Windows (что является наиболее частым сценарием для подобных скриптов) - использовать LuaJIT с его FFI (Foreign Function Interface) для вызова функций WinAPI.

Важное замечание:
Этот код будет работать только с LuaJIT на операционной системе Windows.
Использование таких скриптов может быть расценено как читерство в играх и привести к блокировке аккаунта. Используйте на свой страх и риск.
При написании кода для Mac или Linux потребуются другие API (например, xdotool на Linux, AppleScript или CGEventPost на macOS).

---

### Код на LuaJIT (Windows)

Код
-- Требует LuaJIT для работы FFI
local ffi = require("ffi")

-- Определения функций и структур WinAPI
ffi.cdef [[
    // Structure for mouse input
    typedef struct {
        LONG dx;
        LONG dy;
        DWORD mouseData;
        DWORD dwFlags;
        DWORD time;
        ULONG_PTR dwExtraInfo;
    } MOUSEINPUT;

    // Structure for different input types (mouse, keyboard, hardware)
    typedef struct {
        DWORD type;
        union {
            MOUSEINPUT mi;
            // KEYBDINPUT ki; // Not needed for this task
            // HARDWAREINPUT hi; // Not needed for this task
        };
    } INPUT;

    // WinAPI functions
    SHORT GetKeyState(int vKey);
    VOID Sleep(DWORD dwMilliseconds);
    UINT SendInput(UINT nInputs, INPUT pInputs[], int cbSize);
]]

-- Константы WinAPI
local VK_CAPITAL = 0x14             -- Virtual Key Code для Caps Lock
local INPUT_MOUSE = 0x00000000      -- Тип ввода: мышь
local MOUSEEVENTF_LEFTDOWN = 0x0002 -- Флаг события мыши: левая кнопка нажата
local MOUSEEVENTF_LEFTUP = 0x0004   -- Флаг события мыши: левая кнопка отпущена

local CLICK_INTERVAL_MS = 100       -- Интервал между кликами (100 мс)
local POLL_INTERVAL_MS = 50         -- Интервал проверки состояния Caps Lock, когда он выключен (чтобы не грузить CPU)

local isCapsOn = false
local lastCapsState = false -- Для отслеживания изменений состояния и вывода сообщений

-- Настраиваем структуру INPUT для имитации одного левого клика
-- Нам нужны два события: нажатие и отпускание
local clickInputs = ffi.new("INPUT[2]")

-- Событие нажатия левой кнопки мыши
clickInputs[0].type = INPUT_MOUSE
clickInputs[0].mi.dwFlags = MOUSEEVENTF_LEFTDOWN

-- Событие отпускания левой кнопки мыши
clickInputs[1].type = INPUT_MOUSE
clickInputs[1].mi.dwFlags = MOUSEEVENTF_LEFTUP

print("Авто-кликер запущен. Нажмите Caps Lock для активации.")
print("Закройте окно консоли, чтобы остановить скрипт.")

while true do
    -- GetKeyState возвращает состояние клавиши.
    -- Для toggle-клавиш (как Caps Lock), низкий бит (0x0001) указывает, включена ли клавиша (1) или выключена (0).
    local state = ffi.C.GetKeyState(VK_CAPITAL)
    isCapsOn = (state & 0x0001) ~= 0 -- Проверяем низкий бит

    if isCapsOn then
        -- Caps Lock включен, спамим клики
        if not lastCapsState then
            print("Caps Lock ON: Начинаем спам левой кнопкой мыши.")
            lastCapsState = true
        end

        -- Отправляем события нажатия и отпускания мыши
        ffi.C.SendInput(2, clickInputs, ffi.sizeof("INPUT"))

        -- Ждем заданный интервал
        ffi.C.Sleep(CLICK_INTERVAL_MS)
    else
        -- Caps Lock выключен
        if lastCapsState then
            print("Caps Lock OFF: Спам левой кнопкой мыши прекращен.")
            lastCapsState = false
        end
        -- Спим немного, чтобы не грузить CPU, пока ничего не происходит
        ffi.C.Sleep(POLL_INTERVAL_MS)
    end
end



---

### Как запустить:

1. Скачайте LuaJIT: Перейдите на официальный сайт LuaJIT (luajit.org) и скачайте соответствующую версию для вашей операционной системы (обычно это исполняемый
..
Цитата
[14.09.2025 16:09]
если бы этот код был для скриптов UOPilot с его библиотеками, как бы он выглядел?

DeepSeek | GptChat,
[14.09.2025 16:09]
Конечно! Для UOPilot (Ultimate Online Pilot) скрипты пишутся на его собственной модифицированной версии Lua, которая предоставляет специфические функции для взаимодействия с игрой и операционной системой, но не имеет ffi или стандартного require.

Вот как будет выглядеть этот код для UOPilot:

Код
-- UOPilot Lua Script для спама левой кнопкой мыши по Caps Lock

-- Константы
local CLICK_INTERVAL_MS = 100       -- Интервал между кликами (100 мс)
local POLL_INTERVAL_MS = 50         -- Интервал проверки состояния Caps Lock, когда он выключен

local isCapsOn = false
local lastCapsState = false -- Для отслеживания изменений состояния и вывода сообщений

-- Функция msg() используется в UOPilot для вывода сообщений в лог/окно UOPilot.
msg("Авто-кликер запущен. Нажмите Caps Lock для активации.")
msg("Закройте UOPilot или остановите скрипт вручную, чтобы остановить.")

while true do
    -- KeyLock("CAPS") - это функция UOPilot, которая возвращает true, если Caps Lock включен,
    -- и false, если выключен. Аналогично для "NUM" (Num Lock) и "SCROLL" (Scroll Lock).
    isCapsOn = KeyLock("CAPS")

    if isCapsOn then
        -- Caps Lock включен, спамим клики
        if not lastCapsState then
            msg("Caps Lock ON: Начинаем спам левой кнопкой мыши.")
            lastCapsState = true
        end

        -- LClick() - это функция UOPilot, которая имитирует нажатие левой кнопки мыши.
        LClick()

        -- Wait() - это функция UOPilot для задержки выполнения скрипта в миллисекундах.
        Wait(CLICK_INTERVAL_MS)
    else
        -- Caps Lock выключен
        if lastCapsState then
            msg("Caps Lock OFF: Спам левой кнопкой мыши прекращен.")
            lastCapsState = false
        end
        -- Спим немного, чтобы не грузить CPU, пока ничего не происходит
        Wait(POLL_INTERVAL_MS)
    end
end



### Как запустить в UOPilot:


...

к слову этот код тоже нихрена не работает...
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 15.9.2025, 0:42
Сообщение #93


***********

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



Цитата
но не имеет ffi или стандартного require.

это не так. ничего не модифицированни, require и ffi полностью доступны.
Цитата
KeyLock

не существует
Цитата
Я так и не разобрался в lua, полагаю потому же что мне неизвестны замыслы разработчиков, и почему в одной платформе else действует как продолжение, а в некоторых как конец.

задавайте вопросы - я отвечу. для этого и есть форум.

Цитата
В СПРАВКЕ ОБ ЭТОМ НИЧЕГО НЕ СКАЗАНО

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


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____

Контакт актуален, подпись актуальна.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 15.9.2025, 0:58
Сообщение #94


***********

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



Код
--lua
require "lua_system\\init"

local pressed_down = false
while 1 do
    local x, y = mouse_pos() -- получить координаты
    state, toggle = kbd.keystate("num_lock")
    log(tostring(state), tostring(toggle))

    if toggle then -- горит капс
        if not pressed_down then
            pressed_down = true
        end
    else --
        if pressed_down then
            pressed_down = false
        end
    end
    wait(100)
end

Пожалуйста, используйте тег кода и сохраняйте форматирование. Каждый раз приходится приводить впорядок прежде чем работать с этим.
в данном случае pressed_down полностью повторяет состояние toggle. Не очень понимаю смысл существования pressed_down. Тут вопрос не столько в коде сколько в вашем понимании чего именно вы хотите добиться. Если вам хочется при включенном капслоке просто иметь некоторые действия:
Код
--lua
require "lua_system\\init"

while 1 do
    local x, y = mouse_pos() -- получить координаты
    state, toggle = kbd.keystate("num_lock")
    log(tostring(state), tostring(toggle))

    if toggle then -- горит капс
        kleft(123, 321)
        wait(100)
    end
    wait(100)
end


Цитата
в одной платформе else действует как продолжение, а в некоторых как конец.

вообще смысл всегда такой:
Код
 if ****** then
    -- этот блок выполнится если реузльтат if истина
else
    -- этот блок выполнится если реузльтат if ложь
end

блок else не является обязательным. может быть только блок истины.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____

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

5 страниц V « < 3 4 5
Ответить в эту темуОткрыть новую тему
7 чел. читают эту тему (гостей: 7, скрытых пользователей: 0)
Пользователей: 0

 

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