Что нового

Майнер бот. Эволюция от примитивного до умного.v2.5

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Re: Майнер бот. Эволюция от примитивного (замкнутая вермишель) до умного

Ога, какой-то философский бот получается. По 10 секунд размышляет улетать из белта или нет :smile:
 

asa12

Новичок
Сообщения
66
Репутация
3
Re: Майнер бот. Эволюция от примитивного (замкнутая вермишель) до умного

yaodnako сказал(а):
10 секунд это просто катастрофически огромное время для принятия решения.скорее всего это где-то на слипах или циклах затык.Тут не в операторах дело это точно.
Ну тут как повезет, если бот в данный момент делает длительное действие - лочит астер например - то да время реакции увеличивается. (надо прикручивать отдельный скрипт для съёма индикаторов отдельно от основного бота и его цикла, хотя пока есть несколько непонятных для меня вещей. Например как выключить основной скрипт, чтоб сделать "аварийную команду" - а потом продолжить с то же места - мда эт уже пока рано. Надо написать логику нормально.)

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

Да и всё равно варп с места у баржи офигительно долгий. А если НПС, то танк баржи должен держать и без пострелушен
 

hikki

Продвинутый
Сообщения
233
Репутация
99
Re: Майнер бот. Эволюция от примитивного (замкнутая вермишель) до умного

если бот в данный момент делает длительное действие - лочит астер например - то да время реакции увеличивается.
Если бот чтото должен делать долго или ждать наступления какого либо события, то не надо делать это через слип, сделай свою функцию ожидания или таймера, в которой параллельно будут проверки на чтолибо.
когда мне надо чтолибо ждать я вместо слипа втыкаю чтото вроде этого
Код:
wait(3)


Код:
Func wait($t)
    $i = 0
    Do
        check(); функция которая проверяет и реагирует на тригеры
        Sleep(500); слип, который необходимо добрать, чтоб получилось примерно секунда
        $i += 1
    Until $i = $t
EndFunc   ;==>wait

в результате у меня функция делает 3 цикла, ждет примерно 3 секунды, при этом реагируя на всякие изменения датчиков.
 

asa12

Новичок
Сообщения
66
Репутация
3
Re: Майнер бот. Эволюция от примитивного (замкнутая вермишель) до умного

это всё красиво только со sleep.
А у меня вместо слипа целый бот. И требуется перескочить с одной ветки условий на другую сразу по индикатору.
Вот что придумал - делаем 2 скрипта. 1 - эт основное тело бота - копаем.
2 - индикаторы опасности. Работают одновременно. Чтоб работали надо скомпилировать 1 скрипт - в *.exe перевести.
Тут сработал 2 скрипт - ставим на паузу 1 скрипт (закрываем - как больше нравится) и выполняем 2 скрипт - делаем ноги.
Индикаторы стали хорошие. Запуск 1 скрипта - дальше копаем.
--------------
Конечно можно сделать и одним скриптом. Проблема вылезает при долгих действиях 1 скрипта (лок астеров 6 сек) - ждем пока не залочатся и только тогда сможет проверить на опасность. Хотя интервал времени и не особо критичный.
--------------
Прошло 10 мин - посмотрел свой код. Хотя да, твой вариант работает. Рисуем такую отсылку в функцию индикаторов опасности в КАЖДОМ месте где бот может долго думать или при изменениях состояниях - вышел со станции - проверка
 
Автор
yaodnako

yaodnako

Продвинутый
Сообщения
120
Репутация
78
Re: Майнер бот. Эволюция от примитивного (замкнутая вермишель) до умного

Чтобы скрипт простаивал ровно столько сколько нужно,а не фиксированное количество - я выкрутился по другому.Сделал таймер и одновременно проверку того,что нужно проверить.Т.е. если вдруг случится лаг и что-то пойдет не так - цикл проверки не будет висеть,а просто по истечении назначенного времени продолжит скрипт.Также в тело функции можно вставить дополнительные проверки на конво,на хп и.т.д.У меня это выглядит так :

Код:
Func _Action($Do,$Do2="No",$Do3="No",$Do4="No")
Select
 Case $Do="Timer"
	;таймер.использование _Action("Timer","время в милисек","что проверям","значение для проверки").
	;как только переменная равна значению для проверки либо истечет таймер - цикл прекращается.
			$TimerChk=TimerInit()
			;$Status="таймер!"
			;Sleep(500)
			While 1
				_Check("ConvoCheck");сюда можем вставить любые проверки важные.
				If TimerDiff($TimerChk)>$Do2 Then
					;$Status="сработал таймер!"
					;Sleep(300)
					ExitLoop
				EndIf
				Select
					Case $Do3="Strip"
						If $StripChk=$Do4 Then
							;$Status="сработала проверка!"
							Sleep(200)
							ExitLoop
						EndIf
					Case $Do3="Lock"
						If $Lock[1]=$Do4 Then
							;$Status="сработала проверка!"
							Sleep(200)
							ExitLoop
						EndIf
				EndSelect
			WEnd
	EndSelect
EndFunc


Таким образом я посылаю команду _Action("Timer",2000,"Strip",0)
и одновременно запускается и слип 2 секунды и проверка стрипа на выключение.и если сработает проверка раньше,слип завершается,если что-то пойдет не так и проверка не сработает раньше.т.е повиснет - сработает слип.
 
Автор
yaodnako

yaodnako

Продвинутый
Сообщения
120
Репутация
78
Re: Майнер бот. Эволюция от примитивного (замкнутая вермишель) до умного

Ура ! :smile: я почти написал работу с n-целями.Получилось даже лучше,чем я думал.Логика получилась универсальной - т.е.нет такого,что ветвь,для 1го лока,для 2х,3х,теоретически работает с n-количеством целей при условии что их размер не меняется и они идут в ряд до конца экрана(6 локов точно умещается).Что мы имеем в данный момент в результате этих манипуляций? Написал контроль каждого стрипа по отдельности и ,в результате этого,сделал большой рандом от 20-40 секунд на каждый стрип(т.е. у каждого стрипа свой рандом).Теперь это гораздо больше напоминает человека,который без машинной точности,а на глаз определяет сколько работает стрип :smile:
Стало экономится уйма времени из-за разных убранных вещей,кот.раньше были необходимы.Например,дроны теперь летят майнить только тогда,когда именно простаивать начинают.Стрипы фармят почти нонстоп из-за того,что 1,2 лока висят всегда,тогда как ранее мы теряли 3 секунды,после итощения ройда.Пришлось вносить уйму изменений в датчики,но это того стоило - в итоге мы имеем сокращение средней длительности цикла аж до 11 минут 45 секунд.т.е. снизили на 1 минуту 15 сек. а это в моем случае плюс к ночному майну за 10 часов - около 3 миллиона,600 тысяч исков плюса практически из воздуха (+10% выхлопа по сравнению с предидущей версией):smile: сейчас мой бот на первых 2х рудах майнит за ночь - 34 миллиона с копейками...
Код пока оптимизирую и шлифую - скоро выложу...

p.s. рекорд это длительность в 10 минут 27 секунд за цикл - скорее всего в этот момент самую оптимальную длительность работы стрипа выдал рандом - потом еще поищу оптимальную длительность для 3х целей,чтобы увеличить выхлоп еще :smile:
 

asa12

Новичок
Сообщения
66
Репутация
3
Re: Майнер бот. Эволюция от примитивного (замкнутая вермишель) до умного

Попробуй более 15 сек, менее 20. У меня эт оптимильно.
6 сек лок нового астера, 3 сек переключние - вкл\выкл стрипа.
Сваял целую программу для вычисления оптимального цикла. С проверкой 100 поясов руды по 100 астеров в каждом, объем каждого от 2000 до 70000 штук вельда.
Особо на кол-во срываемого не смотрите - эт для моих условий. А вот график и как он идет эт правильно. горизонтильная школа - время цикла.
использован такой порядок. Каждый из 3 стрипов отдельно грызет свой астер в свой цикл вкл\выкл, если закончился + цикл работы стрипа и т.д.
--------------
:ok: Тока сам пока не рискую такой маленький цикл ставить.
Закончил свой бот: нормально срывает все буки и закругляется без участия человека. Прикрутил лог - померяемся добычей, как у меня 4 в майнинг апгрейдс прокачается через пару дней.
 
Автор
yaodnako

yaodnako

Продвинутый
Сообщения
120
Репутация
78
Re: Майнер бот. Эволюция от примитивного (замкнутая вермишель) до умного

Попробуй более 15 сек, менее 20. У меня эт оптимильно.
Проверял 15-20 сек. цикл для 1й цели - нет.20-25 оптимал.И это не программа проверяла(которая может не учесть что-то),а статистика за много ночей.У Бельфа оптимал такойже на боте в 1 цель.

Уверен что на боте с 3-4 целями такой разброс будет ущербен - потому как активация стрипов и движения мышкой для выбора нужного лока - забирают довольно много времени.А чем меньше ставим секунд,тем больше таких телодвижений.Я думаю что оптимал будет в районе не менее 30 секунд,а может и больше,но никак не меньше 20ти.Проверю на статистике,но позже(может большой разброс так и оставлю).И ты тоже вначале тестируй,что рекомендуешь - предположение на основании чего-либо это хорошо,но реального опыта оно не заменит.Программам эмуляции среды не доверяю - предпочитаю собирать реальную статистику.
 

asa12

Новичок
Сообщения
66
Репутация
3
Re: Майнер бот. Эволюция от примитивного (замкнутая вермишель) до умного

хех. С реальной статистикой пока не выходит - эт надо рыть одни и те же астеры с неделю на каждом значении. Для ускорения и решают задачи моделирования реальности. Тут главное правильно подобрать константы.
В нашей задаче просто мы сразу прикинули приблизительный оптимал и пляшем около него. А вдруг в реальной жизни при 120 сек - баг в программе еве и мы сразу карго получаем полное ;D
----------
Что то задач давно не было:
Вот у меня вылезла одна:

Мы в белте-астеры есть-< 10 км - копаем. Копаем пока карго не полное или > 10 км не станет
Куда засунуть повторную проверку на < 10 км ?
В общий цикл копки не хочется - проверка на < 10 км занимает 2 сек и движеия мыши (может убрать? хотя оверью в еве плохо работает)
Засунул в проверку 3 стрипа - Идет проверка при выключении. Срабатывает через раз.
Варианты мои:
1. в цикле копки вызывать функцию проверки при этом ставя основной цикл на паузу - http://forum.script-coding.info/viewtopic.php?id=2932
Код:
…
AdlibEnable("MyAdlibFunc", 1 * 60 * 1000)
…
; AdlibDisable()
Exit(0)

Func MyAdlibFunc()
    …
EndFunc
 
Автор
yaodnako

yaodnako

Продвинутый
Сообщения
120
Репутация
78
Re: Майнер бот. Эволюция от примитивного (замкнутая вермишель) до умного

Так в чем проблема?
У тебя ведь наводится на астероиды мыша,перед тем как лочишь? вот тогда и проверяй.Проверяй для всех астероидов и при локе(у тебя ведь 3 цели).Как только проверка не срабатывает(т.е.<10км на тек.локе нет)- проверяем текущее количество залоченных целей и с таким количеством продолжаем работать.
И на будущее - мы ведь не знаем какой у тебя бот,поэтому советы давать не увидев код проблематично.
У тебя ведь вермишель - возможно на проверке >10км у тебя отварп сразу стоит - внутрь воткни условие, что если количество текущих залоченных целей меньше 1 и ближе 10км нет ройдов ->тогда отварп.В других случаях - $тек.количество залоченных целей = количеству локов с кот.работаем вообще на тек белте.
У меня в новой версии работает именно так.Ставил 4 лока - как только астеров ближе 10км не остается при попытке залочить 4ю цель->работаем с 3мя и так до победного.

P.S.А вообще переделывай в умного - проще потом будет переписывать части как тебе нужно.Вермишель как ее не модернизируй - тупиковый путь.Можешь сделать также как я со своим поступил - вначале датчики переделай,затем цикл майна,затем работа на станции и затем уже весь просто передать.
 

asa12

Новичок
Сообщения
66
Репутация
3
Re: Майнер бот. Эволюция от примитивного (замкнутая вермишель) до умного

Эх прикрутил к боту дронов. То что ранее работало перестало работать (.
Определение что, рядом с астером стрип почему то уже неработает.
Млин, завтра продолжу код смотреть.
-------
Хватит на седня и так 7 часов сижу.
Я сделал на датчиках. Пока половина. Остальное не осолил. Что то с каждым вводимым условием - реакцией. Бот увеличивается на глазах.
Буду думать.
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Re: Майнер бот. Эволюция от примитивного (замкнутая вермишель) до умного

А меня ночью суициднули
16.gif

Только мой новый майнер добрался до полноценной альфа версии. Неделю без сбоев проработал без дронов и несколько дней с дронами а тут нанах, минус мораль :(
 
Автор
yaodnako

yaodnako

Продвинутый
Сообщения
120
Репутация
78
Re: Майнер бот. Эволюция от примитивного (замкнутая вермишель) до умного

Версия бота 2.41
Изменения:
1.Добавил уйму датчиков.
2.Оптимизировал и сократил код в нек.функциях.Много переделанных функций.Начал выносить переменные с данными PixelSearch наружу и использовать переменные,а не абсолютные координаты.Появилась функция таймера = одновременная проверка и слип,если сработала проверка или прошло время слипа,скрипт продолжает работу.Многие слипы заменены этой функцией.
3.Добавлена работа с n-целями(до 4 включительно точно,выше не проверял).Выбирается свободная залоченная цель и на каждую лочится последовательно свободный стрип.Теперь каждый стрип контролируется отдельно и у каждого свой рандомный таймер на каждый цикл.
4.Все пассивные проверки теперь обрабатываются Adlib.
5.Дроны теперь перенаправляются на другой ройд,только когда доставят руду в карго и начинают простаивать.

P.S.Бот отлично оптимизирован,по сравнению с бетой,о.кот писал выше.Прошла ночь - средняя длительность включая перелеты с 15 съеденных бук - 11 минут 17 секунд.т.е. за 10 часов фарма мы имеем 35.5 миллионов.(учитывая,что сейчас упали цены на трит до 2.10).Цикл учитывается с т2 дронами(дрон интерфейсинг 4,майн дроны 5),с т1 стрипами и без орки.карго 10580 кубов.
 

asa12

Новичок
Сообщения
66
Репутация
3
Re: Майнер бот. Эволюция от примитивного (замкнутая вермишель) до умного

Belfigor сказал(а):
А меня ночью суициднули
16.gif
мда. пойдука я застрахую свой халк.

Решил улучшить проверку, что там находится рядом с астером. (после лока)
Со стрипами (одинаковыми объектами) работает и проверка на 1-2 точки (яркие отличные от чёрного).
НО прибавились дроны (толку правда пока от них мало - надо качать)- Мало того, что иконка не яркая, так ещё и исчезает каждый раз, как возвращается.
Итак, нарезается на 4 отрезка область рядом с каждым астером (взял пока линию не хватит сделаю массив) там где крутится иконка стрипа или чего нить работающего. У меня область эта справа. При проходе считаются чёрные точки. Кол-во черных точек сравнивается с предыдущим значением. Проходим через все 4 астера. Где большее число черных точек там нету работающего устройства. Выбираем.
Ура.
 

asa12

Новичок
Сообщения
66
Репутация
3
Re: Майнер бот. Эволюция от примитивного (замкнутая вермишель) до умного.v2.41

Как у тебя запуск звукового файла проходит?
Что то не выходит
Код:
ShellExecute ("c:\1\1.mp3")


Выдает, что данного файла нет. Этот вариант тоже не играет. Выдает значение MsgBox=0

Код:
#include <Sound.au3>

$s = _SoundOpen ( 'c:\1\1.mp3' )
$sound = _SoundPlay ( $s, 1 )
_SoundClose($sound)
MsgBox ( 64, '', $s )
MsgBox ( 64, '', $sound )
 

asa12

Новичок
Сообщения
66
Репутация
3
Re: Майнер бот. Эволюция от примитивного (замкнутая вермишель) до умного.v2.41

Да, если запустить через винду - грузится прога соответствующая и играется файл. тут всё нормально.
Попробую с другой - предложенной тобой функцией.
Странно, млин плеер грузится, но выдает так же после загрузки "нету файла на том месте". Поставил текстовый файл, то же самое.
Заковыка, как autoit обрабатывает путь в файловой системе?
Может можно проще сделать?
Задача выдать любой противный звук при помощи autoit, без помощи функций открытия файла.
_________________
Самое поганое, что кусок с записью и чтением из ини файла и текстового с функциями
Код:
FileOpen("C:\Autoit\лог.TXT",1);открыли на запись
FileWriteLine("C:\Autoit\лог.TXT",TimerDiff($timer)/60/1000);записываем время цикла в минутах
FileClose("C:\Autoit\лог.TXT")

Прекрасно работает.
 

Lexx98

Продвинутый
Сообщения
272
Репутация
73
Re: Майнер бот. Эволюция от примитивного (замкнутая вермишель) до умного.v2.41

asa12 сказал(а):
Как у тебя запуск звукового файла проходит?
Этот вариант тоже не играет. Выдает значение MsgBox=0

Код:
#include <Sound.au3>

$s = _SoundOpen ( 'c:\1\1.mp3' )
$sound = _SoundPlay ( $s, 1 )
_SoundClose($sound)
MsgBox ( 64, '', $s )
MsgBox ( 64, '', $sound )

А без знака подчёркивания пробовал?
Код:
SoundPlay ( "filename" [,wait]) 
SoundPlay("C:\Windows\media\tada.wav")

(Правда сам не проверял работу).

А то ведь у той что с подчёркиванием
Код:
#include <Sound.au3>
_SoundPlay ( $sSnd_id [, $fWait ] )

Надо инклудить файлик, ты его точно инклудил (в куске кода твоём этого не видно)?


Кстати, когда я только начинал делать бота, то скрипта шедулера (надсмотрщика, который делал перезапуск клиента и бота) у меня не было. А была прога на дельфи, которая всё тот же файлик мой постоянно обновляемый проверяла, и если что начинала пищать. А использовал я там аналог
Код:
Beep ( [ Frequency [, Duration ]] )

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

yaodnako

Продвинутый
Сообщения
120
Репутация
78
Re: Майнер бот. Эволюция от примитивного (замкнутая вермишель) до умного.v2.41

Брось мп3 в корень диска и запусти.например так :
Код:
ShellExecute("c:\1.mp3")

Мне кажется ты перехимичил с путями:smile:
я вон тоже решил сделать твой пример и у меня выдало так же ошибку :smile: я подумал - ну нифига себе.А потом понял,что у меня внутри папки 1 лишняя папка 1 и уже в ней мп3.поэтому путь правильный был
Код:
ShellExecute("c:\1\1\1.mp3")
и все запахало.
Попробуй вначале простой вариант с корнем диска.
Или еще проще - брось мп3 туда же,где твой код сохранен и пропиши в него без путей:
Код:
ShellExecute("1.mp3")
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Re: Майнер бот. Эволюция от примитивного (замкнутая вермишель) до умного.v2.41

Стандартная команда

Код:
SoundPlay ( "filename" [, wait] )
filenameName of the file to be played (typically a WAV or MP3)
wait[optional] This flag determines if the script should wait for the sound to finish before continuing:
1 = wait until sound has finished
0 = continue script while sound is playing (default)
Код:
SoundPlay(@WindowsDir & "\media\tada.wav",1)
 

asa12

Новичок
Сообщения
66
Репутация
3
Re: Майнер бот. Эволюция от примитивного (замкнутая вермишель) до умного.v2.41

Спасибо бельфогор, твой вариант единственный который сработал. Этот синтаксис блин
 
Верх