Собственно, пытаюсь мультибоксить в игре, задача проста - нужно при нажатии/отпускании кнопок WASDE повторять их в выбранное фоновое окно.
Это стим игра с VAC, пробовал разные варианты, в том числе ISboxer, Aster - но все они немного проблемные или жутко платные.
Sandboxie успешно запускает две копии игры, все отлично работает. Но проблема в трансляции клавиш. Никакие программы не транслируют их в сандбоксовое окно - ни AHK, ни софт для мультибоксинга, потому что Sandboxie блокирует большинство методов отсылки клавиш - а вот уопилотовская send217, я проверил, посылает заветные кнопочки.
Собственно, как запилить трансляцию клавиш? Наверное, нужно создать пять хоткеев скриптов, по одному на каждую клавишу, при нажатии которых запускается посыл кнопок в окно? Как сделать так, чтобы при зажатии, допустим, W, эта кнопка хажималась, а при отжатии - отжималась? Ведь хоткеи просто запускают скрипт при нажатии? Подойдет, если при зажатии кнопки макроса пилот будет просто спамить клавишу, наверное. Не знаю как это воплотить, я пользуюсь пилотом 2000-х УО, но скрипты нормально писать так и не научился, слишком низкий ICQ :3. Да и не пользовался пилотом лет 10. Люто RTFMлю, но как-то не срастается.
Ну и, естественно, клавиши должны работать в родительском окне.
Может не через горячие клавиши, а через условия какие-нибудь? В общем задача довольно простая, но в то же время и не совсем, и воплотить её у меня самого не получается. Помогите пожалуйста, о мудрейшие. Вы - моя последня надежда. Я чувствую, что вариант с Sandboxie рабочий, нужно только чуть-чуть его дожать.
Костыли на костылях и костылями погоняют, конечно, но что поделать? (=^・ェ・^=)
Пока пришло в голову только при if зажата W start_script зажать w в нужном окне, if отжата W - другой start_script с отжатием ее в нужном окне. Так можно с if поступать? Пока не нагуглил, похоже такого условия нету. Эти нажатия не будут мешать основному окну? Будет ли скрипт ловить нажатия в родительском окне, или глобально, и посылать их в заданное? Непонятно. Даже приступать страшно.
Наверное нужно вызывать LUA-кавалерию, я в LUA вообще не разбираюсь, пойду изучать.
DarkMaster
2.3.2023, 3:16
Да. Луа ваш вариант.
https://forum.uokit.com/index.php?showtopic...%E0%E2%E8%F8%E0Там в первом же посту код и архивчик. Ну а дальше просто в цикл пачку блоков на ифах на каждую кнопку. Можно вообще все кнопки транслировать, но думаю едва ли это прям хорошая идея и будет открываться куча всякой гадости, где не надо. Ну скажем вы открыли инвентарь хоткеем, а закрыли мышкой. В итоге на других оконах инвентарь остался открыт и получился асинхрон по открытым окнам интерфейса.
Цитата(DarkMaster @ 2.3.2023, 3:16)
Да. Луа ваш вариант.
https://forum.uokit.com/index.php?showtopic...%E0%E2%E8%F8%E0Там в первом же посту код и архивчик. Ну а дальше просто в цикл пачку блоков на ифах на каждую кнопку. Можно вообще все кнопки транслировать, но думаю едва ли это прям хорошая идея и будет открываться куча всякой гадости, где не надо. Ну скажем вы открыли инвентарь хоткеем, а закрыли мышкой. В итоге на других оконах инвентарь остался открыт и получился асинхрон по открытым окнам интерфейса.
Спасибо большое, буду изучать. Напишу сюда, если потребуется помощь (я совсем не программист, скорее наоборот), и отпишусь если решу задачу, вполне может многим пригодиться - Sandboxie, если решить проблему трансляции клавиш, очень легкое и простое решение для базового мультибоксинга.
ヽ( ̄ω ̄(。。 )ゝ
Быстрый идиотский вопрос от изможденного человека - в середине Lua-скрипта можно вставить обычную уопилотскую команду?
Цитата(4w4c4d0 @ 2.3.2023, 4:18)
Быстрый идиотский вопрос от изможденного человека - в середине Lua-скрипта можно вставить обычную уопилотскую команду?
нет
у меня тоже вопрос - на луа можно как то взаимодействовать с переменным из других скриптов?
DarkMaster
2.3.2023, 11:27
Цитата
Быстрый идиотский вопрос от изможденного человека - в середине Lua-скрипта можно вставить обычную уопилотскую команду?
там есть теги открытия и закрытия луа и обычных блоков кода. Но делать я бы так не стал.
Цитата
у меня тоже вопрос - на луа можно как то взаимодействовать с переменным из других скриптов?
Да, но там немного своебразно. Я через ffi выделяю кусок памяти, передаю через файл адрес памяти, где оно выделено, а други скрипты уже пишут данные в этот кусок памяти. Тут важно понимать, что читать можно спокойно, но если пишете эту переменную, то писать ее должна только одна вкладка иначе может быть конфликт доступа. Писать в разные переменные разными вкладками - все ок.
Не заметил, что там есть плагин, использующий устаревший язык пилота.
if KB.GetKeyState(w) = 1
send217_down w
else
send217_up w
end_if
но работает это с задержками, как-то неровно, то нажимает, то нет. и, получается, раз скрипт постоянно перезапускается, то каждый раз видит что кнопка не нажата, и посылает отжатие. Может это мешает? Как-то можно поизящнее это все сделать?
Как бы сделать чтобы он после проверки нажата ли, если клаваши зажата, зажимал клавишу, и останавливал скрипт, ожидая ее отжатия? А когда отжималась, один раз посылал отжатие и переходил к началу >_<
DarkMaster
3.3.2023, 14:22
Смысл в отказе от луа? Уже этим вы очень сильно добавляете задержек в работу и слабую прогнозируемость реакции.