#lua #logitech #logitech-gaming-software
#lua #logitech #logitech-gaming-программное обеспечение
Вопрос:
Привет всем, у меня есть клавиатура G105
, я пытаюсь создать небольшой скрипт, он работает, но он не хочет останавливаться.
я хотел бы включить G1 и выключить G2. спасибо
**Macro LIST**
skill Selfbuff -- use after any playmacro "Petx" after reuse time
1 PlayMacro(selfbuff1) Sleep (1800000) --30 minutes
2 PlayMacro(selfbuff2) Sleep (600000) -- 10 minutes
-- add more
Skill Empower -- use after any playmacro "Petx" if none of then are
runing, can be at same time with "Skill Sellbuff" list
1 PlayMacro(Boost1) Reuse time = 480 seconds,Boosting time = 60 seconds
2 PlayMacro(Boost2) Reuse time = 600 seconds, Boosting time = 180 seconds
-- add more
-- G1 = 2pet
-- G2 = 3pet
local function interruptable_sleep(delay)
local tm = GetRunningTime() delay
repeat
if IsKeyLockOn("scrolllock") then return true end
local t = tm - GetRunningTime()
if t > 0 then Sleep(math.min(t, 100)) end
until t <= 0
end
function OnEvent(event, arg)
if event=="G_PRESSED" and arg==1 then
repeat
local exit
for _, phase in ipairs{
{macro = "Basicos1", sleep_macro = 16000, },
{macro = "Pick", sleep_macro = 2000, },
{macro = "Pet1", sleep_macro = 2000, },
-- if on reuse PlayMacro(selfbuff1),PlayMacro(Selfbuff2), may add more
-- if on reuse PlayMacro(boots1),PlayMacro(boost2) may add some
{macro = "Basicos1", sleep_macro = 16000, },
{macro = "Pick", sleep_macro = 2000, },
{macro = "Pet2", sleep_macro = 2000, },
-- if on reuse PlayMacro(selfbuff1),PlayMacro(Selfbuff2), may add more
-- if on reuse PlayMacro(boots1),PlayMacro(boost2) may add some
{macro = "Basicos1", sleep_macro = 16000, },
{macro = "Pick", sleep_macro = 2000, },
} do
PlayMacro(phase.macro)
exit = interruptable_sleep(phase.sleep_macro)
AbortMacro()
if exit then break end
end
until exit
PressAndReleaseKey("scrolllock")
end
end
Я действительно ценю вашу помощь, но я не могу хорошо понять,
Я думаю, что предыдущего объяснения было недостаточно
Я знаю, что не очень разбираюсь в программировании, но кое-что я понял
Это мой полный скрипт для вас
local function interruptable_sleep(delay)
local tm = GetRunningTime() delay
repeat
if IsKeyLockOn("scrolllock") then return true end
local t = tm - GetRunningTime()
if t > 0 then Sleep(math.min(t, 100)) end
until t <= 0
end
function OnEvent(event, arg)
if event=="G_PRESSED" and arg==1 then
repeat
local exit
for _, phase in ipairs{
{macro = "Basicos1", sleep_macro = 16000, },
{macro = "Pick", sleep_macro = 2000, },
{macro = "Pet1", sleep_macro = 2000, },
{macro = "Basicos1", sleep_macro = 16000, },
{macro = "Pick", sleep_macro = 2000, },
{macro = "Pet2", sleep_macro = 2000, },
{macro = "Basicos1", sleep_macro = 16000, },
{macro = "Pick", sleep_macro = 2000, },
} do
PlayMacro(phase.macro)
exit = interruptable_sleep(phase.sleep_macro)
AbortMacro()
if exit then break end
end
until exit
Sleep(250)
PressAndReleaseKey("scrolllock")
elseif event=="G_PRESSED" and arg==2 then
repeat
local exit
for _, phase in ipairs{
{macro = "Basicos1", sleep_macro = 16000, },
{macro = "Pick", sleep_macro = 2000, },
{macro = "Pet1", sleep_macro = 2000, },
{macro = "Basicos1", sleep_macro = 16000, },
{macro = "Pick", sleep_macro = 2000, },
{macro = "Pet2", sleep_macro = 2000, },
{macro = "Basicos1", sleep_macro = 16000, },
{macro = "Pick", sleep_macro = 2000, },
{macro = "Pet3", sleep_macro = 2000, },
{macro = "Basicos1", sleep_macro = 16000, },
{macro = "Pick", sleep_macro = 2000, },
} do
PlayMacro(phase.macro)
exit = interruptable_sleep(phase.sleep_macro)
AbortMacro()
if exit then break end
end
until exit
Sleep(250)
PressAndReleaseKey("scrolllock")
elseif event=="G_PRESSED" and arg==3 then
repeat
local exit
for _, phase in ipairs{
{macro = "Basicos1", sleep_macro = 13000, },
{macro = "Pick", sleep_macro = 1000, },
{macro = "PetLargo1", sleep_macro = 2800, },
{macro = "Basicos1", sleep_macro = 13000, },
{macro = "Pick", sleep_macro = 1000, },
{macro = "PetLargo2", sleep_macro = 2800, },
} do
PlayMacro(phase.macro)
exit = interruptable_sleep(phase.sleep_macro)
AbortMacro()
if exit then break end
end
until exit
Sleep(250)
PressAndReleaseKey("scrolllock")
elseif event=="G_PRESSED" and arg==4 then
repeat
local exit
for _, phase in ipairs{
{macro = "Basicos1", sleep_macro = 16000, },
{macro = "Pick", sleep_macro = 2000, },
{macro = "PetLargo1", sleep_macro = 2800, },
{macro = "Basicos1", sleep_macro = 16000, },
{macro = "Pick", sleep_macro = 2000, },
{macro = "PetLargo2", sleep_macro = 2800, },
{macro = "Basicos1", sleep_macro = 16000, },
{macro = "Pick", sleep_macro = 2000, },
{macro = "PetLargo3", sleep_macro = 2800, },
{macro = "Basicos1", sleep_macro = 16000, },
{macro = "Pick", sleep_macro = 2000, },
} do
PlayMacro(phase.macro)
exit = interruptable_sleep(phase.sleep_macro)
AbortMacro()
if exit then break end
end
until exit
Sleep(250)
PressAndReleaseKey("scrolllock")
elseif event=="G_PRESSED" and arg==5 then
repeat
local exit
for _, phase in ipairs{
{macro = "Basicos1", sleep_macro = 16000,},
{macro = "Pick", sleep_macro = 500,},
} do
PlayMacro(phase.macro)
exit = interruptable_sleep(phase.sleep_macro)
AbortMacro()
if exit then break end
end
until exit
Sleep(250)
PressAndReleaseKey("scrolllock")
end
end
Сделано для разных мест в игре для автофермерства
Комментарии:
1. вы забыли задать вопрос
2. в руководстве по API не указано ни одной функции для опроса текущего состояния клавиш G. Вы получаете только событие нажатия и отпускания. Но поскольку вы обрабатываете нажатое событие, вы не можете получить другое событие.
Ответ №1:
Я хотел бы включить G1 и выключить G2.
IMO, невозможно остановить ваш скрипт с помощью G2 или G1.
Но вы можете использовать клавишу прокрутки, чтобы остановить скрипт:
Изначально индикатор блокировки прокрутки не горит.
Вы нажимаете G1, скрипт запускается.
Во время выполнения скрипта вы нажимаете ScrollLock, его индикатор загорается.
Скрипт завершает свою работу и выключает индикатор блокировки прокрутки.
function OnEvent(event, arg)
if event=="G_PRESSED" and arg==1 then
repeat
for _, Fkey in ipairs{"F1", "F2"} do
PlayMacro("Basicos")
for t = 1, 20 do
Sleep(1000)
if IsKeyLockOn("scrolllock") then break end
end
AbortMacro()
PressAndReleaseKey(Fkey)
if IsKeyLockOn("scrolllock") then break end
Sleep(1500)
end
until IsKeyLockOn("scrolllock") -- is ScrollLock LED on?
PressAndReleaseKey("scrolllock") -- turn it off
end
end
Обновить
local function interruptable_sleep(delay)
local tm = GetRunningTime() delay
repeat
if IsKeyLockOn("scrolllock") then return true end
local t = tm - GetRunningTime()
if t > 0 then Sleep(math.min(t, 100)) end
until t <= 0
end
function OnEvent(event, arg)
if event=="G_PRESSED" and arg==1 then
repeat
local exit
for _, phase in ipairs{
{macro = "Basicos", sleep_macro = 13000, fkey = "F1", sleep_fkey = 2000},
{macro = "Basicos", sleep_macro = 15000, fkey = "F2", sleep_fkey = 1800},
{macro = "BUFF", sleep_macro = 5000, fkey = "F3", sleep_fkey = 2500},
} do
PlayMacro(phase.macro)
exit = interruptable_sleep(phase.sleep_macro)
AbortMacro()
if exit then break end
PressAndReleaseKey(phase.fkey)
exit = interruptable_sleep(phase.sleep_fkey)
if exit then break end
end
until exit
PressAndReleaseKey("scrolllock")
end
end
ОБНОВЛЕНИЕ # 2
-- G1 = 2pet
-- G2 = 3pet
local function interruptable_sleep(delay)
local tm = GetRunningTime() delay
repeat
if IsKeyLockOn("scrolllock") then return true end
local t = tm - GetRunningTime()
if t > 0 then Sleep(math.min(t, 100)) end
until t <= 0
end
function OnEvent(event, arg)
if event=="G_PRESSED" and arg==1 then
repeat
local exit
for _, phase in ipairs{
{macro = "Basicos1", sleep_macro = 16000, },
{macro = "Pick", sleep_macro = 2000, },
{macro = "Pet1", sleep_macro = 2000, },
{macro = "Basicos1", sleep_macro = 16000, },
{macro = "Pick", sleep_macro = 2000, },
{macro = "Pet2", sleep_macro = 2000, },
{macro = "Basicos1", sleep_macro = 16000, },
{macro = "Pick", sleep_macro = 2000, },
} do
PlayMacro(phase.macro)
exit = interruptable_sleep(phase.sleep_macro)
AbortMacro()
if exit then break end
end
until exit
PressAndReleaseKey("scrolllock")
elseif event=="G_PRESSED" and arg==2 then
local loop_ctr = 0
repeat
local exit
loop_ctr = loop_ctr 1
for _, phase in ipairs{
{macro = "Basicos1", sleep_macro = 16000, skip_on_first_loop = false, },
{macro = "Pick", sleep_macro = 2000, skip_on_first_loop = false, },
{macro = "Pet1", sleep_macro = 2000, skip_on_first_loop = false, },
{macro = "Basicos1", sleep_macro = 16000, skip_on_first_loop = false, },
{macro = "Pick", sleep_macro = 2000, skip_on_first_loop = false, },
{macro = "Pet2", sleep_macro = 2000, skip_on_first_loop = false, },
{macro = "Basicos1", sleep_macro = 16000, skip_on_first_loop = false, },
{macro = "Pick", sleep_macro = 2000, skip_on_first_loop = false, },
{macro = "Pet3", sleep_macro = 2000, skip_on_first_loop = false, },
{macro = "Basicos1", sleep_macro = 16000, skip_on_first_loop = false, },
{macro = "Pick", sleep_macro = 2000, skip_on_first_loop = false, },
} do
if loop_ctr > 1 or not phase.skip_on_first_loop then
PlayMacro(phase.macro)
exit = interruptable_sleep(phase.sleep_macro)
AbortMacro()
if exit then break end
end
end
until exit
PressAndReleaseKey("scrolllock")
end
end
Комментарии:
1. Большое вам спасибо, это работает идеально, я не разбираюсь в программировании, я читал форум пару часов, и я закончил свой первый скрипт, но никто не сказал о клавишах G, что я не могу остановить скрипт Большое спасибо, сомнение, если вы не возражаете Есть ли способ немедленно остановить скрипт, не завершая цикл???
2. Спасибо за помощь. необходимо иметь возможность изменять время ожидания между
3. Tnx для справки, вы мастер
4. Извините, мастер, я такой нуб, я не могу изменить тот, который вы создаете для mi ,, можете ли вы проверить, не звоню ли я,, спасибо
5. Видишь
UPDATE #2