|
|
|
lua поставить скрипт на паузу, while true do - скрипт с циклом не ставится на паузу! |
|
|
Cockney |
4.12.2023, 17:19
|
Master
Сообщений: 1.395
Регистрация: 22.6.2013 Группа: Пользователи Наличность: 21064
Пользователь №: 16.156
|
|
|
|
|
DarkMaster |
5.12.2023, 6:10
|
Модератор UOPilot
Сообщений: 9.467
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 27725
Пользователь №: 11.279
|
Код local winapi do -- У меня пути не стандартные, чтобы избежать свинарника. -- Поэтому тут есть пара "лишних" строк. -- Сохраняем _текущие_ пути по которым ищутся модули. local back = package.path -- Дописываю путь по которому у меня лежат модули. package.path = "lua_plugins\\winapi\\?.lua;"..package.path -- Подгружаем собственно модуль. -- Хз почему, но грузить нужно именно так. -- Просто require 'winapi' не пашет. winapi = require 'winapi' -- Подгружаем кусок отвечающий за клавиатуру require[[winapi.keyboard]] -- Возвращаем пути поиска модулей на исходные. package.path = back end
local pause_hook = function() if winapi.GetKeyState(17) and winapi.GetKeyState(18) and winapi.GetKeyState(90) then repeat wait(1) until not (winapi.GetKeyState(17) and winapi.GetKeyState(18) and winapi.GetKeyState(90))
while not (winapi.GetKeyState(17) and winapi.GetKeyState(18) and winapi.GetKeyState(90)) do wait(1) end repeat wait(1) until not (winapi.GetKeyState(17) and winapi.GetKeyState(18) and winapi.GetKeyState(90)) end end debug.sethook (pause_hook, "l")
-- ДАЛЕЕ ВАШ СКРИПТ while 1 do log(os.clock()) wait(1) end
Мой вариант без особых заморочек. Через дебаг луа и хуки. По поводу безопасности кода - в манах луа написано, что дебагне безопасен с точке зрения доступа к данным. Ну в том смысле, что это создает потенциальные пути для взлома. Если, скажем, взять варкрафт в котором огромный кусок написан на луа и включить там дебаг, то при желании можно получить доступ далеко не только к пользовательским функциям. Из минусов так же будет некторое падение производительности. В стандартном использовании будет не заметно, но если будет идти жесткий перебор массивов, то может быть существенно. Например, если используется findcolor на чистом луа - скорость просядет. Данный код не совместим с моей дебаг либой (котора dbg, dbg.enable()). Если есть необходимость могу их скрестить. Пауза на ctrl+alt+z Получение кодов клавиш: Код --lua local winapi do -- У меня пути не стандартные, чтобы избежать свинарника. -- Поэтому тут есть пара "лишних" строк. -- Сохраняем _текущие_ пути по которым ищутся модули. local back = package.path -- Дописываю путь по которому у меня лежат модули. package.path = "lua_plugins\\winapi\\?.lua;"..package.path -- Подгружаем собственно модуль. -- Хз почему, но грузить нужно именно так. -- Просто require 'winapi' не пашет. winapi = require 'winapi' --ext.lg(winapi) -- Подгружаем кусок отвечающий за клавиатуру require[[winapi.keyboard]] -- Возвращаем пути поиска модулей на исходные. package.path = back
socket = require 'socket' end
-- Поолучаем состояние клавиши: -- state - нажата/отжата -- toggle - для лампочек горит/не горит. --local state, toggle = GetKeyState(0x14) --log(tostring(state),tostring(toggle))
local state_arr = {}
while 1 do for i = 0, 255 do local state, toggle = winapi.GetKeyState(i) if state and not state_arr[i] then state_arr[i] = true log(string.format("%.3f", os.clock())..": "..i.." down") elseif not state and state_arr[i] then state_arr[i] = false log(string.format("%.3f", os.clock())..": "..i.." up") end end wait(1) end
Сообщение отредактировал DarkMaster - 5.12.2023, 6:11
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
DarkMaster |
6.12.2023, 10:35
|
Модератор UOPilot
Сообщений: 9.467
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 27725
Пользователь №: 11.279
|
Цитата Ну так и как в твоем варианте встать на бряк в функции на 15 строке ? И именно на ней
Цитата я эту проблему и не пытался решить и не собирался. Если нужно именно брейки в рамках пилота - это отдельный длинный разговор. =) Если мне надо будет в пилоте встать на 15 строке - я напишу функцию остановкии в зависимости от того, что требуется в плане остановки и вызову ее на 15 строке =) В рамках пилота большего мне не нужно. Бряк здесь почти бесполезен, т.к.стек ты автоматом не увидишь, локальные пременные тоже, степ бай степ не включишь(без доп хуков) и т.д. Чтобы все это делать недостаточно возможностей пилота, как редактора. Можно конечно эмулировать пользовательский ввод и через prompt или подкгрузку файла повыполнять произвольный код и фактически, как в консоле выдергать все, что нужно, но зачем? Для этого есть готовые инструменты с нормальным интерфейсом.
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|