Что нового

Miner Bot с 0 до 100 для Нуба своими руками

Lexx98

Продвинутый
Сообщения
272
Репутация
73
Я уже и так писал использовать тег "автоит", и даже жирным писал... Может хот теперь дойдёт... ;)
Ну и я не понимаю, что там за пиксельсёрчи, где ты там что ищешь. Возможную проблему я уже указал выше, почему два клика.
Ну и ещё у тебя в самом начале функции идёт какой-то маусклик, я тоже не понимаю где он кликает и зачем.
 
Автор
A

Asshaker

Знающий
Сообщения
150
Репутация
17
Про Тег дошло только когда значек увидел :smile:
Клик в начале скрипта это просто клик по космосу. Чтоб окно ЕВЫ активно было. Этот клик можно убрать.
В скипре ищу белые пиксели по 3 линиям в овервью.

З.Ы, Можно ли сделать не прозрачный фон овервью при прикрепленном окне? Ли реализировать подобное в AutoITе?
Т.к. Овервью прозрачный, цвет пиксеря в надписях постоянно меняется, изза этого не могу выделить ни дистанцию ни буковку 'R'
 

Lexx98

Продвинутый
Сообщения
272
Репутация
73
Кликать для активности не надо, ибо если будет окно другое сверху вдруг, то кликнет по нему, а ева так и останется неактивной. Надо использовать нечто типа
Код:
winactivate("EVE") ;Делает окно EVE активным
winwaitactive("EVE") ;Ожидает момента когда окно EVE станет активным

Белые точки искать не нужно. Они всегда на одних и тех же местах относительно угла овервью. Нужно всего лишь проверить одну точку, если она ярче (смотри подпись) чем 0xA0A0A0 - залочено.

Step 1 в цикле for не указывается, он по умолчанию. Шаг указывается явно, если он другой.

И пошагово объясни как он делает клики лишние?
1-я цель, 2-я, 1-я, 2-я.
Или 1-я, 1-я, 2-я, 2-я?
И которые из них с контролом?


Насчёт фона. Делаешь в натройках евы, закладка общих настроек (general settings), там где цвета окон, ещё тему можно выбрать, три ползунка цветов в крайнее левое положение - в 0, а 4-й, прозрачность - в крайнее правое. Ну и Pin включенный должен быть (прикрепление). Тогда чётко чёрный фон без всяких изменений.
 
Автор
A

Asshaker

Знающий
Сообщения
150
Репутация
17
И пошагово объясни как он делает клики лишние?
1-я цель, 2-я, 1-я, 2-я.
Или 1-я, 1-я, 2-я, 2-я?
И которые из них с контролом?
Делает клик по 1ой цели, смещается вниз делать лок по первой цели
Смещается вниз делает клик, свешается вниз делает лок.
Насчёт фона. Делаешь в натройках евы, закладка общих настроек (general settings), там где цвета окон, ещё тему можно выбрать, три ползунка цветов в крайнее левое положение - в 0, а 4-й, прозрачность - в крайнее правое. Ну и Pin включенный должен быть (прикрепление). Тогда чётко чёрный фон без всяких изменений.
Так и стоит
Pin - зафиксировать окно, делает его прозрачным. Но не перемещаемым.
Unpin - окно можно перетаскивать в любой угол, зато оно не прозрачное и фон всегда одного цвета.
В этом то и проблема.

------------
Пока был на работе перенастроил и переписал с нуля практически всего бота. Вернулся домой и обнаружил, что координаты смещены, хотя настройки идентичны + не все PixelSearch работают :( как можно решить проблему?
2 SirMaksFromEho я помню, ты говорил привязывать к углам окон. Но проблема что эти окна тоже смещаются. "координаты угола окна дома" не равны " координатам угла окна на работе"
------------
Поиск треугольничка тоже не помогает. При наведении на треугольник, меню подсвечивается и изменяет цвет пикселя :(
 

Lexx98

Продвинутый
Сообщения
272
Репутация
73
Я сто раз тебя отправил на ссылки в моей подписи. Ты там был? (Если в теме их не показывают вдруг, посмотри в профиле)
Чекпикселу пофиг на цвет, он проверяет яркость!
Задаваемые ручками координаты описываешь в отдельном файле и инклудишь его в скрипт. Скрипты дома и на работе одинаковые, только файлы с настройками разные, их и держишь разными, и всё.
Тогда дома одни координаты угла окна, на работе другие. А смещения относительно них одинаковые, и всё работает.
И вдобавок тебе сейчас пришлось руками перемерять и переписать 6 координат только для этой функции. А сделал бы как я говорю, и всего 2 понадобилось бы (одну точку). Причём независимо от количества проверяемых объектов в овервью.

Чёрный фон делай как я сказал, и пофиг что окна можно двигать. Незачем их двигать. Просто аккуратнее мышкой руками кликай, чтобы не возить их туда-сюда. А то так можно наверно прилепить к левому краю экрана, тогда как раз значимый левый край ездить и не будет. Переместил случайно - снова назад прилепил и делов...
А то если тебе уже в этом проблема, то лучше сразу забить на ботописание.

И вот ещё, значения массивов $line1 $line2 $line3 в студию!
 
Автор
A

Asshaker

Знающий
Сообщения
150
Репутация
17
Подпись посмотрел и почитал. В скиптах не разбирался еще.
Проблему со смещениями решил :smile: Context menu fontsize 13 и там и там. Переписывать ничего не пришлось.
Код:
Dim $line1[3]=[$WinPos[0]+797,$WinPos[1]+231,10]
Dim $line2[3]=[$WinPos[0]+798,$WinPos[1]+230,10]
Dim $line3[3]=[$WinPos[0]+799,$WinPos[1]+229,10]

это координаты стрелочек при таргете астероидов в овервью
 
Автор
A

Asshaker

Знающий
Сообщения
150
Репутация
17
Я прям не нарадуюсь ботом :laugh: такой трудяга :rofl:
Но я хочу еще...
Как определять начальные координаты 2ого окна ЕВЫ и активировать его?
Title 2ого окна такой же как и первый. Может быть его можно как то изменить?
И сразу же 2ой вопрос :smile: как организовать работу бота сразу в 2х окнах?
Принцип работы:
1 окно всегда копает самые богатые залежи. Потом скидывает в секюр конт.
2 окно висит рядом и перетаскивает руду из контейнера в трюм. При заполнении карго, улетает на станцию, скидывает руду и летит обратно на место.

З.Ы. Еще хочу автопилот. Там я так понимаю все тупо по желтым пикселям в овервью?
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
В место того чтобы пользоваться $WinPos, посмотри опции MouseCoordMode и PixelCoordMode


Добавлено:
Сообщение автоматически объединено:

Чтобы тайтлы окон игры были уникальными, поставь во вкладке вроде General опцию "Sow Window Identificator" Названия окон привратятся в "EVE - Имя Чара"
Автопилот да, по пикселям в овервью.
Чтобы перейти к многооконным ботам тебе надо пользоваться нелинейной логикой принимающей решения исходя из данных полученных с окна в текущий момент.
 
Автор
A

Asshaker

Знающий
Сообщения
150
Репутация
17
Чтобы перейти к многооконным ботам тебе надо пользоваться нелинейной логикой принимающей решения исходя из данных полученных с окна в текущий момент.
Я пока не понимаю смысла этих слов.

От WinPos не откажусь т.к. для меня это идеальный вариант. На работе и дома разные рабочие области и окна часто смещаются. А про галочку идентификации спасибо большое :smile:
 

Lexx98

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

Для двух клиентов гораздо выгоднее чтоб оба копали и по мере загруженности трюма вывозили на станцию, чем если один всё время копает, а другой только возит. Посчитай сколько у тебя выйдет в час просто накопать одним без остановки (другой же вывозит), и сколько будет один копать полный трюм и вывозить и возвращаться (засеки), и сколько выйдет в час, и умножь на два.
Когда-то я прикидывал. Вроде выходило нечто типа равнозначности общей добычи, если копает 4 и один вывозит == копают 5 и вывозят сами. Или даже ещё больше цифры были. Так что если копает меньше - выгоднее чтоб сами разгружались.


Насчёт логики. Вот у тебя сейчас в той же функции таргетинга, определяется нужно ли лочить и тут же лочит.
В идеале же, у тебя должны быть отдельно функции определения состояния, и функции действия.
Тогда будет так, переключился на 1-е окно, снял все датчики по функциям, проанализировал, запустил необходимые действия, пауза, переключился на 2-е окно, и по кругу.
 
Автор
A

Asshaker

Знающий
Сообщения
150
Репутация
17
У меня сейчас копает ретривер 11к за 11 минут, это 60к в час получается. за рабочий день 8часов(без обеда) выходит 560к всего. с 2х окон выйдет 1120к. Если 1 копает 2торой таскает выходит под полтора ляма. Через 2 недели с оркой будет еще больше.
Пример не линейной логики?
http://autoit-script.ru/index.php/topic,63.0.html

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

Lexx98

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

При переходе от винпоса к клиентским координатам придётся переписать все те +цифры от винпоса в переменных. Но зная разницу (а она постоянная по X и по Y), это делается достаточно быстро.

Я не знаю что и как ты это так умудряешься копать... Может у тебя трюм мелкий сильно? Трюм надо делать максимальный.
У меня выходило где-то 12 минут на заполнение трюма, и 2-3 минуты на отвоз. Вот и получалось, что до тех пор, пока суммарное время отвоза всех майнеров не будет превышать времени на копку одного, выгоднее гонять всех, чем отдельного на разгрузку.
Кстати где-то или тут, или на аллчитс даже была тема с рассчётами производительности одного бота-капателя в кубометрах добытого.
 
Автор
A

Asshaker

Знающий
Сообщения
150
Репутация
17
И тут и на Аллчитс есть, читал :smile:
Карго 4900, в индусе 19к. + от индуса будет бонус в выработке, потом от орки еще больше бонус будет. Будет мало сделаю еще 1 акк :smile: Не понравится, переделаю :IL_AutoIt_1:
 
Автор
A

Asshaker

Знающий
Сообщения
150
Репутация
17
Фуф мозг пухнет :smile: если из ушей польется, придется сделать 2х копателей.
Пытаюсь реализовывать переключение между окнами с помощью WinActivate и WinWaitActive
Решил протестить следующий скрипт
Код:
Global  $Win2 = "EVE - Name1"
Global  $Win1 = "EVE - Name"
WinActivate($Win1)
WinWaitActive($Win1)
Sleep(1000)
WinActivate($Win2)
WinWaitActive($Win2)
Sleep(1000)
WinActivate($Win1)
WinWaitActive($Win1)
Sleep(1000)
WinActivate($Win2)
WinWaitActive($Win2)
Sleep(1000)

Но он не работает :( если все свернуто активирует 1 окно потом 2 и все...
если открыто 2е он ваще ничего не делает.
Ну и если открыто 1е так, же ничего не делает.
Почему?
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Все должно работать.
 

Lexx98

Продвинутый
Сообщения
272
Репутация
73
И не будет!
Потому что поиск идёт не на точное совпадение, а на вхождение.
А "EVE - Name" входит как часть "EVE - Name1".
Так что когда ищешь name, то результатом поиска может стать как первое так и второе, но поиск начинается с активного окна, и оно сразу же "находится", и никуда не переключается. А когда ищешь name1, то находит только его, и переключается нормально.

Вот если будет name1 и name2, будет работать.
 
Автор
A

Asshaker

Знающий
Сообщения
150
Репутация
17
Вот если будет name1 и name2, будет работать.
Осталось CPP заставить сменить мне ник :rofl:
Хрен с ней, буду через блокнот переключаться.
тут новая проблема:
Код:
Func Target()
Local $l=19
	For $i=0 to 2
		$coord=PixelSearch($WinPos[0]+785,$WinPos[1]+205+$i*$l,$WinPos[0]+785,$WinPos[1]+210+$i*$l,0xFFFFFF)
		if not @error Then
			Sleep(1000)
			$i=$i+1	  			
		Else
			Send('{CTRLDOWN}')
			Sleep(150)
			MouseClick('left',$WinPos[0]+787,$WinPos[1]+207+$i*$l,1,20)
			Sleep(200)
			Send('{CTRLUP}')
		EndIf
	Next 
EndFunc


если целей нет лочит 3 цели
если цель 1 есть, лочит 3ю
если цель 2 есть, лочит 1ю
если 1 и 3 есть, ничего не делает.
 

Lexx98

Продвинутый
Сообщения
272
Репутация
73
А окна можно переименовывать и другими способами. В том же автоите для этого есть функция WinSetTitle.
Так что делаем раз - находим автоитом то окно, которое находится всегда одно (более длинное), и переименовываем так, чтобы название второго окна в него не входило.
Правда, я не знаю, вдруг ева время от времени проверяет заголовок окна и возвращает его в то что должно быть - тогда ОЙ.

Насчёт кода. Смотри подпись. Но не ссылки, а то что перед ними. ;D
Убери $i=$i+1
У тебя же там в ИФе стоит ЕЛСЕ. Вот и происходит, если нашёл, то следующая строка не проверяется, ибо лишний раз счётчик увеличивается.
И вообще, это дурной тон модифицировать счётчик внутри цикла FOR. Так и в бесконечный цикл недолго попасть.
Тебе персональное задание. Открыть страницу справки по оператору FOR, внимательно его прочитать, а также прочитать про операторы, которые указаны в конце страницы, типа "see also" или "См. также" (ContinueLoop, ExitLoop). Ну, и про ContinueLoop не сильно вспоминать, если правильно используешь if, он почти и не нужен.
 
Автор
A

Asshaker

Знающий
Сообщения
150
Репутация
17
ой спасибо, я совсем уже запарился.
И вообще, это дурной тон модифицировать счётчик внутри цикла. Так и в бесконечный цикл недолго попасть.
Больше так не буду :smile:


Для WinSetTitle надо 1 окно 1024х768, а 2е 1024х800 к примеру?

А можно еще ToolTip сделать так, чтобы он отображался(висел) до следующего ToolTipа, а скрипт продолжал работу?
 

Lexx98

Продвинутый
Сообщения
272
Репутация
73
WinSetTitle пофиг на разрешения. Читай справку. Там только тайтл используется.
ТулТип - не знаю, если и можно, я не делал, мне и так хватало.
 
Верх