1 (изменено: Julucicelaiyond, 2024-10-10 11:03:06)

Тема: AHK : Авто заточка снаряжения автоточер perfect world

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

color0:= 0x00FF00
F3::
Label:
Loop
{
	Click
	PixelGetColor, color, 400, 644, 1
	Sleep 800
	
	if color != %color0%
	{ 
		Goto , Label
		
	if color = %color0%
	{
		Click
		PixelGetColor, color1, 400, 644, 1
		Sleep 800
		
		
		if color1 != %color0%
		{
			Goto , Label
			}
		else
		{
			MsgBox, +2
			SoundBeep
			Break
		}
	}
  }
}
F4:: Pause, Toggle

2

Re: AHK : Авто заточка снаряжения автоточер perfect world

Julucicelaiyond, добро пожаловать на форум! Ознакомьтесь, пожалуйста, с Правилами, отредактируйте свой пост. Обратите внимание на составление заголовков.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: AHK : Авто заточка снаряжения автоточер perfect world

Julucicelaiyond пишет:

Авто улучшение для perfect world

Хм, не стало понятнее. «Авто улучшение» — это что значит? Улучшение автомобиля? Или улучшение игры самой себя?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

4

Re: AHK : Авто заточка снаряжения автоточер perfect world

teadrinker
Извиняюсь за небрежное оформление заголовка.
Я так понимать это для тех, кто задастся схожим вопросом с моим.
Если подобную конструкцию можно реализовать, то не могли бы подсказать через каких операторов делать, в какой последовательности.
Заранее спасибо.

5

Re: AHK : Авто заточка снаряжения автоточер perfect world

А, понял, наверное, русский у вас не родной язык.
Я буду у компьютера только завтра, может, кто-то раньше ответит.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

6

Re: AHK : Авто заточка снаряжения автоточер perfect world

teadrinker
Накидал такого. С label2 уже не возвращается на label. Тем ли я путем иду или нужен другой подход?

 F3::
Color1:=0x00FF00
Loop
{
	label:
	{	
		SendEvent, {Click, 345,701}
		Sleep 600
		PixelGetColor, Color, 400, 644
		if Color = %Color1%
			
		goto, label2
		
		else
			goto, label
	}
	
	label2:
	{	
		SendEvent, {Click, 345,701}
		Sleep 820
		PixelGetColor, Color, 400, 644
		if Color = %Color1%
			
		goto, label3
		
		else
			goto, label
	}
	
	label3:
	{	
		SendEvent, {Click, 345,701}
		Sleep 820
		PixelGetColor, Color, 400, 644
		if Color = %Color1%
			
		goto, label4
		
		else
			goto, label
	}
	
	label4:
	{	
		SendEvent, {Click, 345,701}
		Sleep 820
		PixelGetColor, Color, 400, 644
		if Color = %Color1%
			
		MsgBox,+5
		
		else
			goto, label
	}
	
}
F4:: Pause, Toggle

7

Re: AHK : Авто заточка снаряжения автоточер perfect world

Для начала вам нужно определиться, относительно чего заданы координаты для команд Click и PixelGetColor. По умолчанию они задаются относительно активного окна, но лучше указать явно с помощью команды CoordMode. Команда PixelGetColor по умолчанию возвращает результат в формате BGR. Для зелёного цвета нет разницы, он в обоих форматах выглядит одинаково, но, например, красный в BGR будет 0x0000FF, а в RGB 0xFF0000. Поэтому если цвет для сравнения задан в RGB, нужно указать это в опциях PixelGetColor. Для меток фигурные скобки не поддерживаются, поэтому использовать их после меток нет никакого смысла. Кроме того, вообще не рекомендуется использовать конструкции с метками и GoTo, так как это делает код запутанным, проще обойтись циклами. В целом как-то так:

CoordMode, Mouse, Window
CoordMode, Pixel, Window

Color1 := 0x00FF00
Return

F4:: Pause, Toggle

F3::
Loop {
	Loop 4 {
		SendEvent, {Click, 345,701}
		Sleep 800
		PixelGetColor, Color, 400, 644, RGB
		if (Color != Color1) {
			Continue 2
		}
		if (A_Index = 4) {
			MsgBox +5
		}
	}
}
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

8

Re: AHK : Авто заточка снаряжения автоточер perfect world

teadrinker
Спасибо вам за помощь. Единственное при loop 4 и A_Index = 4 останавливался не там, где надо. Путем "MsgBox, % A_index" подобрал нужные значения.