Тема: Переход от gosub com1 к Com1(x,y,z,) в обычном кликере Лопание пузырей
Добрый день(вечер. ночь) уважаемые форумчане!
Вопрос связан с переходом от команды gosub к использованию функции com1().
И так, есть работающий код, цель которого по заранее сформированному ini файлу кликать в определенное место на экране, в зависимости от первоначального положения курсора на экране. Первую часть кода не выдаю дабы не грузить лишней информацией но собственно она генерирует ini файл в зависимости от первоначального положения курсора. Ниже переведена вторая часть кода, которая, собственно, считывает данные из ini файла и выполняет клик по заданным координатам от начального положения курсора, при отжатии хоткея END возвращает курсор в изначальные координаты.
у меня vk23 это END
END = Выполнить скрипт
INS = suspend
DEL = Выход
HOME = Перезагрузка скрипта
Process, Priority, , High
SetMouseDelay, 2
SetDefaultMouseSpeed 0
SetKeyDelay, 2
SetWorkingDir %A_ScriptDir%
#SingleInstance force
#NoEnv
#InstallKeybdHook
#InstallMouseHook
IniRead , Diff, res/ini/round1.ini , round1 Settings, Diff_a
Diff_b := 60*1000/Diff
loop, 145
{
wer ++
IniRead , x%wer%, res/ini/round1.ini , round1 search_a, x%wer%
IniRead , y%wer%, res/ini/round1.ini , round1 search_a, y%wer%
}
return
LMBmove(x,y)
{
Sleep 5
SendEvent {Click}
DllCall("mouse_event",uint,1,int,x,int,y,uint,0,int,0)
}
LMBclick:
{
Settimer LMB_search_a, %Diff_b%
gosub LMB_search_a
gosub LMB_unpress
}
return
LMB_unpress:
if GetKeyState("vk23", "P")
KeyWait, vk23
{
SendEvent {vk23 up}
LMBmove(Move_x2, Move_y2)
Diff_step := 0
Move_x2 := 0
Move_y2 := 0
}
return
LMB_search_a:
if GetKeyState("vk23", "P")
{
Diff_step += 1
gosub LMB_return
LMBmove(Move_x1, Move_y1)
}
else
{
Settimer LMB_search_a, off
}
return
LMB_return:
{
Move_x1 := x%Diff_step%
Move_x2 += -Move_x1
Move_y1 := y%Diff_step%
Move_y2 += -Move_y1
}
return
*End:: gosub LMBclick
*Ins:: Suspend
*Home::Reload
*Del:: ExitApp
Собственно у меня есть подозрения что код можно значительно упростить (оптимизировать) в т.ч. уходом от использования gosub к использованию функций вида LMBclick(Diff_b), но я испытываю некоторые сложности потому как сложить всё в одну функцию с присвоением её исполнения на хоткей END приводит к критическому завершению приложения AHK. бредокод полученный мной выкладывать не буду в виду его полной неработоспособности и прошу помочь мне разобраться поэтапно с упрощением работающего кода.
Заранее благодарен.
P.S. путь для размещения ini файла %root%\res\ini