#1 Translate_renamed_781891_01122020 05.12.2015, 14:45
В этом посте собираюсь собрать ссылки и готовые функции
по работе скриптов Lua с девайсами от Logitech.

Работа на других девайсах, даже если они
поддерживают Lua, может отличаться.

Это тема не будет затрагивать написание ботов (эмуляция
присутствия игрока в игре на многих проектах карается
бессрочным баном)

Основы

G-series Lua API

Работа с Lua
Разработчики девайсов ограничивают функционал Lua, но вы
можете посмотреть работу циклов, условий, вид переменных
и пр.



SDK

Удобный запуск функций МАСТХЭВ
Делаем удобней написание скриптов (советую первым делом,
после подключения своего нового девайса, удалить все
содержимое и вставить этот код)


Перемещение курсора через MoveMouseRelative на любое расстояние

Можно выставлять скорость и задержку(стандартная функция
позволяет переместить курсор только от 127 до -127 пикселей). Фрост блокирует
обычное перемещение, но оставляет
относительное, геймгуард блокирует любые.


Polling in Lua
Lua однопоточный язык программирования, но если вам
необходим долгий сценарий с возможностью прерываний
без ручных точек выхода, то можете использовать этот SDK



///Logitech сделали новую совершенно неудобную базу знаний, все ссылки потерены. Внутренним поиском не находит, ждем нормальную индексацию гуглом


Готовые функции

Все протестировано.
(мой род деятельности далек от программирования,
поэтому на идеальную чистоту кода не претендую)


Code:
while not IsModifierPressed("shift")  do
            OutputLogMessage("A \n")
            Sleep (500)

            if IsModifierPressed("shift") then
                break
            end

            OutputLogMessage("B \n")
            Sleep (500)
            
            if IsModifierPressed("shift") then
                break
            end

            OutputLogMessage("C \n")
            Sleep (500)
            
            if IsModifierPressed("shift") then
                break
            end

            OutputLogMessage("D \n")
            Sleep (500)
        end



Code:
function Tab (WindowNumber)    
            PressKey("rgui")
            Sleep (100)
            PressKey(tostring(WindowNumber))
            OutputLogMessage("Tab okna "..WindowNumber.."\n")
            ReleaseKey(tostring(WindowNumber))
            ReleaseKey("rgui")
            Sleep (300)
    end



У Logitech есть стандартная функция, но из-за пинга и разных мощностей компьютеров ее срабатывание может глючить. А если каждый раз нажатие кнопки расписывать на три строки (Press/Sleep/Release), то это очень захламляет код.

Вы можете самостоятельно протестировать и подобрать нужную задержку
Code:
function hPress(Key)
        PressKey(tostring(Key))
        Sleep (100)
        ReleaseKey(tostring(Key))
end



Знаю, уже не актуально, но можете переделать под заходку в любой инстанс.

Работает, пока горит капс. Задержки выставляются в зависимости от пинга.

Требования:
  1. подключена функция hPress
  2. NPC взят в таргет на F1 назначена атака.
  3. Курсор наведен на Первую строку входа.
Code:
function kartia95()
    while IsKeyLockOn("capslock") do
        PressKey("lshift")
        PressMouseButton(1)
        ReleaseMouseButton(1)
        Sleep(1000)
        MoveMouseRelative( 0, 105)
        PressMouseButton(1)
        ReleaseMouseButton(1)
        Sleep(1000)
        MoveMouseRelative( 0, -105)
        hPress("F1")
        Sleep(1000)
        ReleaseKey("lshift")
    end
end


Пост будет обновляться
#2 Maiar 29.12.2015, 23:15
Поднял в важные, отличный материал
#3 CatTT 30.12.2015, 11:22
угу, респект человеку за труды
#4 Translate_renamed_781891_01122020 08.04.2017, 17:15
Было чуть времени, решил написать скрипт бегущей строки.
От лагов лучше выключить чат с enter и включить таб группового чата.



Code:
function RunWord ()
    x1 = "PVP Kamni Dorogo"
    x_len=string.len(x1)
    for i=0, x_len do
        x2 =string.sub(x1,x_len-i+1,x_len)..'     '..string.sub(x1,1,x_len-i..' ')
        Sleep(100)
        PressAndReleaseMouseButton("1");
        Sleep(100)
        PressAndReleaseMouseButton("1");
        Sleep(100)
        for k=1, string.len(x2) do
            xChar=string.sub(x2,k,k)
            if xChar==" " then   
                xChar="spacebar" else
            end 
            PressAndReleaseKey (xChar)
        end
        PressAndReleaseKey ("enter")
    end
end
Code:
function test()
while IsKeyLockOn("capslock") do
RunWord()
end
end

#5 -=Scorp=- 18.04.2017, 14:29
Прикольно, но все обычно читают слева - направо, а не наоборот.
#6 ExtenZ_MD 18.04.2017, 16:23
japanesse style
Originally Posted by Translate:
Перемещение курсора через MoveMouseRelative на любое расстояние
Originally Posted by Translate:
все ссылки потерены.
Если кому надо, могу сбросить текст процедуры MoveMouseRelative
#8 ShuShaRA 26.06.2017, 15:11
Сюда кидай. :)
Из форума понял что люди тут умные разбираются в языке Lua

Если несложно подскажите, есть такой код я его нашел на форуме

EnablePrimaryMouseButtonEvents(true);
local recoil = false
function OnEvent(event, arg)
if (event == "G_PRESSED" and arg == 4) then
recoil = not recoil
end
if IsMouseButtonPressed(1) and recoil then
while IsMouseButtonPressed(1) do
Sleep(45)
if not IsMouseButtonPressed(1) then break end
MoveMouseRelative(-10,17)
Sleep(95)
if not IsMouseButtonPressed(1) then break end
MoveMouseRelative(0,1)
Sleep(95)
if not IsMouseButtonPressed(1) then break end
ReleaseMouseButton(1)
end
end
end

Этот скрипт работает я еще добавил один блок такой же после последнего оператора end изменил параметры и на включение поставил макрос клавишу 5
Но второй вариант не запускается а если и запускается то только при нажатой правой клавише мыши. Можете подсказать как сделать код работоспособным что бы при нажатии G4 включался один вариант а при нажатии G5 второй вариант

EnablePrimaryMouseButtonEvents(true);
local recoil = false
function OnEvent(event, arg)
if (event == "G_PRESSED" and arg == 4) then
recoil = not recoil
end
if IsMouseButtonPressed(1) and recoil then
while IsMouseButtonPressed(1) do
Sleep(45)
if not IsMouseButtonPressed(1) then break end
MoveMouseRelative(-10,17)
Sleep(95)
if not IsMouseButtonPressed(1) then break end
MoveMouseRelative(0,1)
Sleep(95)
if not IsMouseButtonPressed(1) then break end
ReleaseMouseButton(1)
end
end
EnablePrimaryMouseButtonEvents(true);
local recoil = false
function OnEvent(event, arg)
if (event == "G_PRESSED" and arg == 5) then
recoil = not recoil
end
if IsMouseButtonPressed(1) and recoil then
while IsMouseButtonPressed(1) do
Sleep(35)
if not IsMouseButtonPressed(1) then break end
MoveMouseRelative(0,10)
Sleep(65)
if not IsMouseButtonPressed(1) then break end
MoveMouseRelative(0,1)
Sleep(65)
if not IsMouseButtonPressed(1) then break end
ReleaseMouseButton(1)
end
end
end
#10 syntasy_renamed_1467499_10112023 16.11.2020, 02:16
Всем привет..помогите плз написать макрос Lua на проюз скилов в Lineage2 мэйн версии.. к примеру на луке... чтоб юзались сначала Туча Стрел после Скоростной Выстрел после Точечный выстрел...максимально быстро один за одним с повтором...заранее спс)
#11 ExtenZ_MD 16.11.2020, 12:51
Тупо макрос внутри-игровой уже не решает проблему?
#12 syntasy_renamed_1467499_10112023 16.11.2020, 14:16
Внутриигровой макрос очень медленный по сравнению с тем что написан на Lua...-не решает
#13 ExtenZ_MD 17.11.2020, 10:16
Тогда попробую на G13 сделать макрос, но это не точно
Уж лучше на механике типа ZALMAN ZM-K700M сделать макросы, без всяких LUA