Что нового

Цели(target) и работа с ними

Enemy

Знающий
Сообщения
42
Репутация
7
Подскажите алгоритм или может есть у кого рабочий скрипт?
 

Belfigor

Модератор
Локальный модератор
Сообщения
3 593
Репутация
938
Конкретно что тебя интересует?
 

zlo-kazan

Скриптер
Сообщения
374
Репутация
100
http://autoit-script.ru/index.php?topic=1844.msg20350#msg20350
Тут описано, как можно определять есть лок/нет лока нескольких целей...
И дальше уже это реализованно...
Перед этим реализован более простой способ с локом 1-й цели...
 
Автор
E

Enemy

Знающий
Сообщения
42
Репутация
7
Вообщем
3 цели, бот смотри чек пикселом на саму цель, что наверху, если допустим нет 1-ой справа цели(один черный фон), то они сдвигаются и получается что он думает что цели 3 нет... подскажите как более логичней сделать цели а то когда они сбиваются, как-то очень палево ))) с двумя целями еще терпел, пересел на новый шип и такая чтука )
 

Belfigor

Модератор
Локальный модератор
Сообщения
3 593
Репутация
938
Вообще непонял о чем ты написал. Если нету первой справа (одной из 3-х целей) цели и оставшиеся цели сдвигаются вправо => у тебя на таргете осталось всего 2 цели.
 

Lexx98

Продвинутый
Сообщения
272
Репутация
73
Я своим чекпикселом делаю две проверки по верхней линии иконки цели.
Одну по линии цели невыбранной (она чуть выше), а если не сработало, то ещё одну по уровню цели выбранной (чуть ниже, чуть ярче).
Заодно узнаётся которая цель выбрана.
Проверка начинается с самой правой иконки и идёт влево до предела целей, задаваемого в настройках. Независимо от того, выбрана цель или нет, общее расположение иконок вроде не меняется.

Также количество целей можно посчитать по тем белым скобкам в овервью, которые охватывают пиктограмму объекта.
 
Автор
E

Enemy

Знающий
Сообщения
42
Репутация
7
Это понятно, у меня проверка на цели идет твоим чекпикселом прямо в центре на наличие черного цвета, если есть значит нет цели, если нет значит есть цель.
Я вот срашиваю, у кого какой алгоритм? а то на ум ничего не приходит, чтобы узнавал что target, которая справа 1 это первая в оверью, а цель которая пониже это вторая и т.д....
 

Lexx98

Продвинутый
Сообщения
272
Репутация
73
На ум приходит только одно. Мышкой или выделением по овервью пройтись по залоченным, и посмотреть какая из иконок будет уменьшаться в верхнем ряду. Если ты стоишь на месте и тебе нужно для майнинга, то вполне себе вариант.
 

Belfigor

Модератор
Локальный модератор
Сообщения
3 593
Репутация
938
Данный алгоритм возможен лишь в идеальных условиях. На 100% сопоставлять овервью с целями на таргете невозможно ибо тебя кто-то бампанет и может измениться весь расклад. То что предложил лекс при условии что ты всегда стоишь на месте и на таргете у тебя астероиды - наиболее подходящий вариант. Только вопрос, какой от этого толк?
 
Автор
E

Enemy

Знающий
Сообщения
42
Репутация
7
а реально сделать, искать белые треугольники в оверью, и считать не залоченные астеры, если есть 3 треугольника то не лочим, а если есть два то ищем ближайший пустой и лочим его? :smile:
 

Belfigor

Модератор
Локальный модератор
Сообщения
3 593
Репутация
938
Enemy сказал(а):
а реально сделать, искать белые треугольники в оверью, и считать не залоченные астеры, если есть 3 треугольника то не лочим, а если есть два то ищем ближайший пустой и лочим его? :smile:
Да, вполне. у меня так сальважер определяет сколько вреков у него на таргете, сколько целей есть вообще и сколько надо долочить.
 
Автор
E

Enemy

Знающий
Сообщения
42
Репутация
7
Не поделитесь набросками?
 

Lexx98

Продвинутый
Сообщения
272
Репутация
73
Ну блин, пиксельчекнуть 4 точки ярко-белые по сторонам "захвата" в овервью.
 
Автор
E

Enemy

Знающий
Сообщения
42
Репутация
7
а как проскочить на след цель?
 
Автор
E

Enemy

Знающий
Сообщения
42
Репутация
7
Код:
Func searchfreetarget()
	$x = 1103 ;координата Х первой цели в овере, где белый треугольник
	$y = 178 ;координата Y первой цели в овере, где белый треугольник его то и будем плюсовать в поисках не белого треугольника
	$i = 0 ;счетчик таргетов
	While $i <= 3
		PixelSearch($x, $y, $x, $y, 0xFFFFFF)
			If @error Then
				$coordx = Number($x+30) ;сдвигаем склик мышки в право на 30 пикселей
				Send("{Ctrldown}") ;Нажать и удерживать клавишу Ctrl
				MouseClick("left", Random($coordx, $coordx+5), Random($y, $y+5), 1, 20);жмем свободную цель
				Send("{CtrlUp}")   ;Отпустить клавишу Ctrl  
				$i = $i + 1
			EndIf
		$y = $y + 19
	WEnd
EndFunc
тупанул )))) все заработало!!!! While $i = 3 не правильно!
подскажите, как можно улучшить скрипт, чтобы не палится с ctrl
 

Lexx98

Продвинутый
Сообщения
272
Репутация
73
Как вариант, жмакать мышкой на кнопку "прицелиться" в окне Селектед Итем (которое выше овервью), но тогда надо всегда следить что размер кнопок одинаковый и именно тот что надо.

Ещё сейчас, если выбран объект в овервью, и активно окошко со списком объектов, достаточно просто контрол нажать, чтоб пошёл процесс лока.

Ну а ещё, человек обычно не делает "Контрол нажать, маусклик, контрол отжать" на каждой цели, если надо залочить несколько. Он делает "Контрол нажать, маусклик сколько и где надо, контрол отжать", и реализовать это несложно.
 

hikki

Продвинутый
Сообщения
233
Репутация
99
Что значит палится с ctrl? все время что играл прицеливался именно таким способом, и все вокруг именно так и целились, причем гигантское удобство что при нажатии ctrl овервью фиксируется и перестает прыгать от изменений дистанции и прочего.
 
Автор
E

Enemy

Знающий
Сообщения
42
Репутация
7
Код:
Func searchfreetarget()
   $x = 1103 ;координата Х первой цели в овере, где белый треугольник
   $y = 178 ;координата Y первой цели в овере, где белый треугольник его то и будем плюсовать в поисках не белого треугольника
   $i = 0 ;счетчик таргетов
Send("{Ctrldown}") ;Нажать и удерживать клавишу Ctrl   
While $i <= 3
      PixelSearch($x, $y, $x, $y, 0xFFFFFF)
         If @error Then
            $coordx = Number($x+30) ;сдвигаем склик мышки в право на 30 пикселей
            MouseClick("left", Random($coordx, $coordx+5), Random($y, $y+5), 1, 20);жмем свободную цель
            $i = $i + 1
         EndIf
      $y = $y + 19
   WEnd
Send("{CtrlUp}")   ;Отпустить клавишу Ctrl 
EndFunc
Вот там намного похоже на человеческий фактор ) как и человек зажимает ктрл и проходит циклом по целям, потом отжимает ) а было, что перед кликом он зажимал ктрл потом кликал мышкой и отжимал, и все это за доли секунды )
 
Автор
E

Enemy

Знающий
Сообщения
42
Репутация
7
практика показывает что необходимо еще дописать предварительный скрипт на проверку залоченных целей, чтобы сначала проверял сколько у нас есть (допустим 2), и потом лочил только еще одну цель
есть какие-то идеи? $i предполагаю что надо с этой переменной играться?
 
Верх