|
|
  |
CapsLock On, Проверка статуса нажатия/включения |
|
|
| Levo222 |
13.9.2025, 9:40
|
    
Journeyman
Сообщений: 411
Регистрация: 18.11.2017 Группа: Пользователи Наличность: 0
Пользователь №: 18.689

|
Цитата(DarkMaster @ 26.2.2019, 5:44)  Есть хорошая новость - я научился из луа дергать состояние клавиш и капса в том числе: Дерагать либы отсюда: https://luapower.com/winapi/downloadhttps://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
Короче может без библиотек есть возможность закликать досмерти левую мышку чтобы пальцем этого не делать? Только ключ включения/выключения нужен, на сам пилот нажимать в этот момент нет возможности.
|
|
|
|
|
|
| Levo222 |
13.9.2025, 10:47
|
    
Journeyman
Сообщений: 411
Регистрация: 18.11.2017 Группа: Пользователи Наличность: 0
Пользователь №: 18.689

|
Цитата(DarkMaster @ 13.9.2025, 14:06)  попробуйте вот это https://forum.uokit.com/index.php?showtopic=71536там много всего в т.ч. статусы клавиш. там сразу так и не разберешься.... Цитата keystate - получить состояние клавиши keystateasync - получить состояние клавиши асинхронно. И в чем разница?
|
|
|
|
|
|
| Levo222 |
13.9.2025, 12:07
|
    
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
|
|
|
|
|
|
| DarkMaster |
14.9.2025, 10:24
|
          
Модератор 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____ Контакт актуален, подпись актуальна.
|
|
|
|
|
|
| Levo222 |
14.9.2025, 10:56
|
    
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 действует как продолжение, а в некоторых как конец. Так вот замысел такой - скрипт работает в режиме ожидания включения одной из клавиш, как только она включена, начинается спамм одной из кнопки, в данном случае левой мыши, там, где она стоит.
|
|
|
|
|
|
| Levo222 |
14.9.2025, 12:20
|
    
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: ... к слову этот код тоже нихрена не работает...
|
|
|
|
|
|
| DarkMaster |
15.9.2025, 0:42
|
          
Модератор UOPilot
Сообщений: 9.769
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 30075
Пользователь №: 11.279

|
Цитата но не имеет ffi или стандартного require. это не так. ничего не модифицированни, require и ffi полностью доступны. Цитата KeyLock не существует Цитата Я так и не разобрался в lua, полагаю потому же что мне неизвестны замыслы разработчиков, и почему в одной платформе else действует как продолжение, а в некоторых как конец. задавайте вопросы - я отвечу. для этого и есть форум. Цитата В СПРАВКЕ ОБ ЭТОМ НИЧЕГО НЕ СКАЗАНО ну это как бы подразумевалось, что каждый модуль отвечает за свое. тем не менее это расширвение не готовый отлаженный продукт, поэтому могут быть шероховатости. в т.ч. со справкой. спасибо за обратную связь - поправлю.
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____ Контакт актуален, подпись актуальна.
|
|
|
|
|
|
| DarkMaster |
15.9.2025, 0:58
|
          
Модератор 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____ Контакт актуален, подпись актуальна.
|
|
|
|
|
|
|
  |
7 чел. читают эту тему (гостей: 7, скрытых пользователей: 0)
Пользователей: 0
|
|