Помощь - Поиск - Пользователи - Календарь
Полная версия: Скрипт для отзеркаливания клавиш в выбранное окно (мультибоксинг)
UoKit.com Форумы > Кликер > UO Pilot
4w4c4d0
Собственно, пытаюсь мультибоксить в игре, задача проста - нужно при нажатии/отпускании кнопок WASDE повторять их в выбранное фоновое окно.

Это стим игра с VAC, пробовал разные варианты, в том числе ISboxer, Aster - но все они немного проблемные или жутко платные.

Sandboxie успешно запускает две копии игры, все отлично работает. Но проблема в трансляции клавиш. Никакие программы не транслируют их в сандбоксовое окно - ни AHK, ни софт для мультибоксинга, потому что Sandboxie блокирует большинство методов отсылки клавиш - а вот уопилотовская send217, я проверил, посылает заветные кнопочки.

Собственно, как запилить трансляцию клавиш? Наверное, нужно создать пять хоткеев скриптов, по одному на каждую клавишу, при нажатии которых запускается посыл кнопок в окно? Как сделать так, чтобы при зажатии, допустим, W, эта кнопка хажималась, а при отжатии - отжималась? Ведь хоткеи просто запускают скрипт при нажатии? Подойдет, если при зажатии кнопки макроса пилот будет просто спамить клавишу, наверное. Не знаю как это воплотить, я пользуюсь пилотом 2000-х УО, но скрипты нормально писать так и не научился, слишком низкий ICQ :3. Да и не пользовался пилотом лет 10. Люто RTFMлю, но как-то не срастается.
Ну и, естественно, клавиши должны работать в родительском окне.

Может не через горячие клавиши, а через условия какие-нибудь? В общем задача довольно простая, но в то же время и не совсем, и воплотить её у меня самого не получается. Помогите пожалуйста, о мудрейшие. Вы - моя последня надежда. Я чувствую, что вариант с Sandboxie рабочий, нужно только чуть-чуть его дожать.

Костыли на костылях и костылями погоняют, конечно, но что поделать? (=^・ェ・^=)
4w4c4d0
Пока пришло в голову только при if зажата W start_script зажать w в нужном окне, if отжата W - другой start_script с отжатием ее в нужном окне. Так можно с if поступать? Пока не нагуглил, похоже такого условия нету. Эти нажатия не будут мешать основному окну? Будет ли скрипт ловить нажатия в родительском окне, или глобально, и посылать их в заданное? Непонятно. Даже приступать страшно.

Наверное нужно вызывать LUA-кавалерию, я в LUA вообще не разбираюсь, пойду изучать.
DarkMaster
Да. Луа ваш вариант.
https://forum.uokit.com/index.php?showtopic...%E0%E2%E8%F8%E0
Там в первом же посту код и архивчик. Ну а дальше просто в цикл пачку блоков на ифах на каждую кнопку. Можно вообще все кнопки транслировать, но думаю едва ли это прям хорошая идея и будет открываться куча всякой гадости, где не надо. Ну скажем вы открыли инвентарь хоткеем, а закрыли мышкой. В итоге на других оконах инвентарь остался открыт и получился асинхрон по открытым окнам интерфейса.
4w4c4d0
Цитата(DarkMaster @ 2.3.2023, 3:16) *

Да. Луа ваш вариант.
https://forum.uokit.com/index.php?showtopic...%E0%E2%E8%F8%E0
Там в первом же посту код и архивчик. Ну а дальше просто в цикл пачку блоков на ифах на каждую кнопку. Можно вообще все кнопки транслировать, но думаю едва ли это прям хорошая идея и будет открываться куча всякой гадости, где не надо. Ну скажем вы открыли инвентарь хоткеем, а закрыли мышкой. В итоге на других оконах инвентарь остался открыт и получился асинхрон по открытым окнам интерфейса.


Спасибо большое, буду изучать. Напишу сюда, если потребуется помощь (я совсем не программист, скорее наоборот), и отпишусь если решу задачу, вполне может многим пригодиться - Sandboxie, если решить проблему трансляции клавиш, очень легкое и простое решение для базового мультибоксинга.

ヽ( ̄ω ̄(。。 )ゝ
4w4c4d0
Быстрый идиотский вопрос от изможденного человека - в середине Lua-скрипта можно вставить обычную уопилотскую команду?
nykep
Цитата(4w4c4d0 @ 2.3.2023, 4:18) *

Быстрый идиотский вопрос от изможденного человека - в середине Lua-скрипта можно вставить обычную уопилотскую команду?

нет
у меня тоже вопрос - на луа можно как то взаимодействовать с переменным из других скриптов?
DarkMaster
Цитата
Быстрый идиотский вопрос от изможденного человека - в середине Lua-скрипта можно вставить обычную уопилотскую команду?

там есть теги открытия и закрытия луа и обычных блоков кода. Но делать я бы так не стал.
Цитата
у меня тоже вопрос - на луа можно как то взаимодействовать с переменным из других скриптов?

Да, но там немного своебразно. Я через ffi выделяю кусок памяти, передаю через файл адрес памяти, где оно выделено, а други скрипты уже пишут данные в этот кусок памяти. Тут важно понимать, что читать можно спокойно, но если пишете эту переменную, то писать ее должна только одна вкладка иначе может быть конфликт доступа. Писать в разные переменные разными вкладками - все ок.
4w4c4d0
Не заметил, что там есть плагин, использующий устаревший язык пилота.

if KB.GetKeyState(w) = 1
send217_down w
else
send217_up w
end_if

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

Как бы сделать чтобы он после проверки нажата ли, если клаваши зажата, зажимал клавишу, и останавливал скрипт, ожидая ее отжатия? А когда отжималась, один раз посылал отжатие и переходил к началу >_<
DarkMaster
Смысл в отказе от луа? Уже этим вы очень сильно добавляете задержек в работу и слабую прогнозируемость реакции.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2024 Invision Power Services, Inc.