Скрипт для игры. Помощь в оптимизации.

Помощь в написании скриптов
nesmewno
Posts: 2
Joined: 21 May 2017, 12:21

Скрипт для игры. Помощь в оптимизации.

23 Nov 2017, 09:43

Всем добра.
Немного разобрался, но опыта в написании скриптов/кодов нету.
Написанной мной скрипт работает и я почти доволен.
Проблема заключается в оптимизации задержек и удобности их редактирования.
Пинг в игре не стабильный и фпс частенько проседает. Да и способности(хотя и мгновенно кастуются) имеют разное время анимации. Поэтому приходится корректировать задержки между нажатиями, для стабильной работы макроса.
Вот один из моих файликов.

Code: Select all

#NoEnv
#SingleInstance Force
#Warn All

SendMode Input
SetWorkingDir %A_ScriptDir%
!3::
Send, {4 down} ;
Sleep 60 ;
Send, {4 up} ;
Sleep 450 ;
Send, {9 down} ;
Sleep 66 ;
Send, {9 up} ;
Sleep 333 ;
Send, {4 down} ;
Sleep 80 ;
Send, {4 up} ;
Sleep 500 ;
Send, {8 down} ;
Sleep 40 ;
Send, {8 up} ;
Sleep 400 ;
Send, {7 down} ;
Sleep 90 ;
Send, {7 up} ;
Sleep 200 ;
Send, {5 down} ;
Sleep 66 ;
Send, {5 up} ;
Sleep 650 ;
Send, {8 down} ;
Sleep 40 ;
Send, {8 up} ;
Sleep 400 ;
Send, {7 down} ;
Sleep 90 ;
Send, {7 up} ;
Sleep 150 ;
Send, {1 down} ;
Sleep 88 ;
Send, {1 up} ;
Sleep 650 ;
Send, {8 down} ;
Sleep 40 ;
Send, {8 up} ;
Sleep 400 ;
Send, {7 down} ;
Sleep 90 ;
Send, {7 up} ;
Sleep 150 ;
Send, {3 down} ;
Sleep 66 ;
Send, {3 up} ;
Sleep 650 ;
Send, {8 down} ;
Sleep 40 ;
Send, {8 up} ;
Sleep 400 ;
Send, {7 down} ;
Sleep 90 ;
Send, {7 up} ;
Sleep 100 ;
Send, {2 down} ;
Sleep 88 ;
Send, {2 up} ;
Sleep 500 ;
Send, {9 down} ;
Sleep 66 ;
Send, {9 up} ;
return ;
F1::
Send, {7 down} ;
Sleep 90 ;
Send, {7 up} ;
Sleep 150 ;
Send, {2 down} ;
Sleep 88 ;
Send, {2 up} ;
Sleep 650 ;
Send, {8 down} ;
Sleep 40 ;
Send, {8 up} ;
return ;
F2::
Send, {7 down} ;
Sleep 90 ;
Send, {7 up} ;
Sleep 150 ;
Send, {1 down} ;
Sleep 88 ;
Send, {1 up} ;
Sleep 550 ;
Send, {9 down} ;
Sleep 40 ;
Send, {9 up} ;
return ;
Наверняка как то можно присвоить обозначения к части кода. Что бы потом удобно и не путаясь менять эти части местами или не путаясь, менять задержки.
Например этому кусочку

Code: Select all

Send, {7 down} ;
Sleep 90 ;
Send, {7 up} ;
присвоить имя "LA''
И вместо трех строчек везде вставлять одну, аля - Send %LA%

Надеюсь вы поймете, чего я хочу и поможете)
Вообщем хочется написать достойный оптимизированный макрос , что бы его удобно было редактировать)

Буду рад любым вашим идеям и предложениям. :roll:
A_AhkUser
Posts: 879
Joined: 06 Mar 2017, 16:18
Location: France

Re: Скрипт для игры. Помощь в оптимизации.

23 Nov 2017, 11:28

Привет nesmewno и добро пожаловать в AHK форум.


К примеру, два решения :

Code: Select all

!3::
MoyaFunkciya(4, 60, 450) ; функция, параметры которой - измечивые компоненты твоего кода.
MoyaFunkciya(9, 66, 333)
MoyaFunkciya(4, 80, 500)
MoyaFunkciya(8, 1000, 400)
MoyaFunkciya(7, 90, 2000)
MoyaFunkciya(7, 2000, 200)
MoyaFunkciya(5, 66, 650)
; и.т.д.
return

MoyaFunkciya(sendParam, sleepParam1, sleepParam2) { ; определение функции
MsgBox % "{" . sendParam . " down}" ;  употребляя знак процента всё не находяшиееся в двойные кавычки должно быть имя определённого измечивого (здесь параметры)
Sleep % sleepParam1
MsgBox % "{" . sendParam . " Up}" ; точка используются чтобы соединить строки
Sleep % sleepParam2
}

Code: Select all

moyaSpisok := [ 4, 60, 1450
				, 9, 66, 333
				, 4, 2000, 500
				, 8, 40, 400 ] ; матрица, например moyaSpisok[3] здесь --> 1450
!3::
i := 0
Loop % moyaSpisok.length()//3 ; длина матрицы/3
{
	MsgBox % "{" . (k:=moyaSpisok[++i]) . " down}"
	Sleep % moyaSpisok[++i]
	MsgBox % "{" . k . " Up}"
	Sleep % moyaSpisok[++i]
}
return
nesmewno
Posts: 2
Joined: 21 May 2017, 12:21

Re: Скрипт для игры. Помощь в оптимизации.

24 Nov 2017, 08:20

:crazy:
Ох, чот подтупливаю, надо разбираться. В голове представлял не оптимизацию с другого бока, но первый вариант мне уже нравится) И немного принес ясности.


Вообще делай удержания клавиши (т.е. up - down) прописал для надежности имитации нажатия. И этот параметр можно сделать одинаковым! (В коде разный делай из-за моих экспериментов :? )
Тогда наверное можно использовать команду PressDuration? Вначале я использовал просто команду Send, но в длинных комбинациях игра не успевала за потоком нажатий.

Вообще у меня в игре около 10 клавиш, которые надо комбинировать с разным делаем. В скрипте по хорошему надо оптимизировать работу разных комбинаций из 3-5 нажатий.

Вернемся к Вашим решениям.
Чутка посидел и вроде разобрался с первым, удобная штука,вот не понятно только почему используется MsgBox? :?: Или там имелось в виду Send?

За подсказку по функциям большое спасибо. :thumbup: Обмозговать надо будет и сделать под себя функции с удобными параметрами.

Второе решение - темный лес.

Return to “Помощь”

Who is online

Users browsing this forum: No registered users and 2 guests