-- КАК ПОЛЬЗОВАТЬСЯ
-- №4 + ЛКМ: запустить помощь на текущую очередь.
-- После запуска боковую можно отпустить.
-- Отпустил ЛКМ: помощь остановилась, усиление сбросилось.
-- Одна ЛКМ без запуска боковой: обычная стрельба.
--
-- При отпущенной ЛКМ:
-- Shift + №4 = увеличить силу.
-- Ctrl + №4 = уменьшить силу.
-- Shift + Ctrl + №4 = вернуть исходную силу.
-- ===== НАСТРОЙКИ =====
local holdButton = 4 -- Боковая кнопка запуска
local startStep = 4 -- Шаг вниз в начале помощи
local endStep = 9 -- Шаг вниз после усиления
local rampMs = 1000 -- Время усиления: 1000 мс = 1 секунда
local delayMs = 6 -- Пауза между движениями
local horizontalStep = 1 -- 0 = без сдвига; 1 = вправо; -1 = влево
local smoothRamp = true -- true = плавно; false = ступеньками
local defaultPower = 100 -- Исходная сила в процентах
local powerStep = 5 -- Шаг изменения силы
local minPower = 50 -- Минимальная сила
local maxPower = 200 -- Максимальная сила
-- Проценты меняют только движение вниз.
-- При активации профиля сила возвращается к defaultPower.
-- ===== ДАЛЬШЕ МЕНЯТЬ НЕ НУЖНО =====
local power = defaultPower
local function SetPower(value, label)
power = math.max(minPower, math.min(maxPower, value))
OutputLogMessage(
"%s | POWER: %d%% | START: %.2f | END: %.2f\n",
label, power,
startStep * power / 100,
endStep * power / 100
)
end
function OnEvent(event, arg)
if event == "PROFILE_ACTIVATED" then
EnablePrimaryMouseButtonEvents(true)
SetPower(defaultPower, "READY")
return
end
if event ~= "MOUSE_BUTTON_PRESSED" then return end
if arg ~= 1 and arg ~= holdButton then return end
-- Регулировка силы при отпущенной ЛКМ
if arg == holdButton and not IsMouseButtonPressed(1) then
local shift = IsModifierPressed("shift")
local ctrl = IsModifierPressed("ctrl")
if shift and ctrl then
SetPower(defaultPower, "RESET")
elseif shift then
SetPower(power + powerStep, "UP")
elseif ctrl then
SetPower(power - powerStep, "DOWN")
end
return
end
-- Для запуска нужны обе кнопки одновременно
if not IsMouseButtonPressed(1)
or not IsMouseButtonPressed(holdButton) then
return
end
-- Усиление начинается именно с момента запуска помощи
local startedAt = GetRunningTime()
local remainder = 0
-- После запуска проверяем только ЛКМ:
-- боковую теперь можно отпустить
while IsMouseButtonPressed(1) do
local progress = math.min(
(GetRunningTime() - startedAt) / math.max(rampMs, 1), 1
)
local step = startStep + (endStep - startStep) * progress
if not smoothRamp then step = math.floor(step) end
local movement = step * power / 100 + remainder
local wholeStep = math.floor(movement)
remainder = movement - wholeStep
MoveMouseRelative(horizontalStep, wholeStep)
-- Проверяем отпускание ЛКМ во время паузы
local pauseStarted = GetRunningTime()
repeat
if not IsMouseButtonPressed(1) then return end
Sleep(1)
until GetRunningTime() - pauseStarted >= math.max(delayMs, 1)
end
end