Антиотдача для шутеров Topic is solved

Помощь в написании скриптов
avn71
Posts: 10
Joined: 11 Oct 2021, 14:38

Антиотдача для шутеров

12 Oct 2021, 09:26

Здравствуйте уважаемые форумчане!
Я понимаю, что эта тема уже много раз повторялась, но пожалуйста, уделите немного внимания.
В шутерах зачастую встречается оружие,которое имеет не постоянный увод ствола. Бывает ,что после первого или после двух или трех выстрелов ствол уводит высоко, но после этого величина смещения уменьшается и требуется уже другая коррекция. Я пересмотрел все темы ,но похожую не нашел. Возможно и пропустил. Я сам новичек и готовые заготовки в один рабочий скрипт не смогу скомпоновать. Пожалуйста помогите,если не сложно.
Попытаюсь внятно обьяснить, что хочется).
Нужен скрипт, чтобы в первоначальный ЗАДАННЫЙ промежуток времени курсор отводился по одним задаваемым координатам(осиX,Y) а спустя этот промежуток можно было выставить другое смещение(X,Y) или просто поставить нулевое. Т.е. чтобы в скрипте была возможность выставить два смещения курсора за время его работы. Все это, естественно, чтобы было заведено на левую кнопку мыши(нажатие кнопки-начало работы, отпускание-окончание работы)
У меня есть скрипт, приведённый ниже, но там можно задать только одно смещение. Возможно в нем можно решить это через встроенную в цикл Loop переменную ‘A_Index’, но я , как новичок, не могу это сделать. Если подскажете, как это можно сделать любым способом, буду очень признателен)

Code: Select all

_auto := true 
~LButton::autofire() 
+LButton::_auto := ! _auto 
F5::Suspend
autofire() 
{ 
global _auto 
if _auto 
{ 
Loop 
{ 
if GetKeyState("LButton", "P") 
{ 
Sleep 0 
mouseXY(0, 1) 
Sleep 150 
} 
else 
break 
} ;; loop 
} ;; if 
} ;; autofire()
mouseXY(x,y) 
{ 
DllCall("mouse_event",uint,1,int,x,int,y,uint,0,int,0) 
}
mcl
Posts: 355
Joined: 04 May 2018, 16:35

Re: Антиотдача для шутеров  Topic is solved

13 Oct 2021, 18:33

Можно при начале цикла запомнить текущее время (A_TickCount), а в теле цикла смотреть, сколько миллисекунд прошло, и в зависимости от этого значения выставлять сдвиг.

Примерно так:

Code: Select all

_auto := true
_tickstart := 0

~LButton::autofire()
+LButton::_auto := ! _auto

F5::Suspend

autofire() {
	global _auto
	global _tickstart
	
	if (_tickstart == 0)
		_tickstart := A_TickCount
	
	if _auto
	{
		Loop
		{
			if GetKeyState("LButton", "P")
			{
				tickdelta := A_TickCount - _tickstart
				
				if (tickdelta < 1000)
				{
					Sleep 0
					mouseXY(0, 1)
					Sleep 150
				} else {
					Sleep 0
					mouseXY(0, 1)
					Sleep 300
				}
			}
			else
			{
				_tickstart := 0
				break
			}
		} ;; loop
	} ;; if
} ;; autofire()

mouseXY(x,y)
{
DllCall("mouse_event",uint,1,int,x,int,y,uint,0,int,0)
}
github://oGDIp - GDI+ wrapper for AHK v1.1
avn71
Posts: 10
Joined: 11 Oct 2021, 14:38

Re: Антиотдача для шутеров

14 Oct 2021, 02:41

Большое вам спасибо)
В выходные обязательно попробую это
avn71
Posts: 10
Joined: 11 Oct 2021, 14:38

Re: Антиотдача для шутеров

14 Oct 2021, 03:04

mcl wrote:
13 Oct 2021, 18:33
Можно при начале цикла запомнить текущее время (A_TickCount), а в теле цикла смотреть, сколько миллисекунд прошло, и в зависимости от этого значения выставлять сдвиг.
Длительность одного тика приблизительно равна времени выставленного в Sleep, правильно я понял?
mcl
Posts: 355
Joined: 04 May 2018, 16:35

Re: Антиотдача для шутеров

14 Oct 2021, 13:48

avn71 wrote:Длительность одного тика приблизительно равна времени выставленного в Sleep, правильно я понял?
Эм-м, что вы имеете в виду, говоря „длительность одного тика“?
Встроенная переменная A_TickCount возвращает количество миллисекунд (1/1000) с момента запуска ОСи.
Если же вы про переменную tickdelta в моём коде − то там получается общее время работы цикла от нажатия ЛКМ, включая и то, что указано в Sleep.
github://oGDIp - GDI+ wrapper for AHK v1.1
avn71
Posts: 10
Joined: 11 Oct 2021, 14:38

Re: Антиотдача для шутеров

14 Oct 2021, 14:21

[
Если же вы про переменную tickdelta в моём коде − то там получается общее время работы цикла от нажатия ЛКМ, включая и то, что указано в Sleep.
[/quote]
Да, это я и имел ввиду, коряво выразился просто).
Приблизительное время работы одного витка цикла.
Ещё раз огромное вам спасибо🤗. В выходные обязательно попробую, что получится
avn71
Posts: 10
Joined: 11 Oct 2021, 14:38

Re: Антиотдача для шутеров

17 Oct 2021, 11:01

Все отлично работает, спасибо большое)

Return to “Помощь”

Who is online

Users browsing this forum: No registered users and 22 guests