Что нового

Скрипт для торговли в хабах

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
DJ_Tommy сказал(а):
Здесь было выложено решение, но после консультации с гуру оно было стерто дабы дать возможность самим додумать решения
ну и зря. получился какой-то клуб по интересам. я сам не играю, но сама концепция не понятна такого подхода.
интересно как в таком случае автор и модераторы данной ветки относятся к тем, которые пишут в других разделах, расписывая (не без помощи вопрошающих) часть скрипта составляющий основу всей идеи.
 
Автор
D

DJ_Tommy

Продвинутый
Сообщения
236
Репутация
57
kaster сказал(а):
DJ_Tommy сказал(а):
Здесь было выложено решение, но после консультации с гуру оно было стерто дабы дать возможность самим додумать решения
ну и зря. получился какой-то клуб по интересам. я сам не играю, но сама концепция не понятна такого подхода.
интересно как в таком случае автор и модераторы данной ветки относятся к тем, которые пишут в других разделах, расписывая (не без помощи вопрошающих) часть скрипта составляющий основу всей идеи.
Ну скажем так - кто в игре понимает хорошо поймет почему решение не было выложено в паблик. За сим топик закрываю.
 

hikki

Продвинутый
Сообщения
233
Репутация
99
Смысл ограничения распространения данного кода вижу, смысла делать тему решенной нет :smile: мало мальски приблизить к решению без публикации кода можно, собрав полезные советы в 1 кучу. Хотя кому надо и так все поняли :IL_AutoIt_1:
 
Автор
D

DJ_Tommy

Продвинутый
Сообщения
236
Репутация
57
Ну в таком случае вполне можно и выложить алгоритм решения задачи. Готов посотрудничать с тем кто напишет код: с меня пошаговый алгоритм, с вас код на языке auto IT ... Хотя в принципе можно и в паблике обсудить возможные решения ...
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Для распознавания текста с помощью реального OCR вам надо работать с Tesseract библиотеками, это сложно, долго, трудоемко но эффективно. Для более простого (вплоне сканает для евы) вы можете использовать ПГК. Если у тебя есть готовый пошаговый алгоритм, готов взять его на рассмотрение, мб он окажется даже лучше того которым мы пользуемся сейчас, ну а если хуже, обшивать его кодом я не стану, разве что слегка подтолкну в правильном направлении :smile:
 

Luke

Знающий
Сообщения
64
Репутация
14
На тему ваших жарких споров есть две три готовых udf на официальном форуме autoit. Есть вариант использующий Tesseract, есть с использованием распознавалки от офиса. Зря не разрабатываете такое решение на этом форуме, можно использовать открытый русский движок. Зря шифруетесь, кому надо тот найдёт ( эх еще бы англицким владеть на нужном уровне). Это была бы универсальная вещь не только для eve.
 

Archy26

EVE DEVE eve bot development group
Сообщения
60
Репутация
42
Люк?
Тот самый?
Давно не виделись. Зря сменил ник, я подумал что ошибся. Рад тебя здесь видеть.

по-теме:
На счёт тессеракта, это долго, муторно, трудоёмко и рессурсоёмко, и всё равно не стопроцентно.
Например даже моё, уже проапгрейденое железо с момента публикаций на старом форуме, под 15+ клиентами уже стоит раком. Если туда ещё и тессеракт загрузить... мдаа.
Стоит ли? Ева и так рессурсоёмка...
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Тессеракты, офисы и это тот же самый способ стрельбы по мухе из базуки. Для евы если не требуется распознавать 1024х768 пикселей текста оптимально будет использовать маленький окр чисто для евы. Сложного там ничего нету.
 
Автор
D

DJ_Tommy

Продвинутый
Сообщения
236
Репутация
57
Ну господа, мы же все же применительно к еве рассматриваем ... т.е. не делать бота который по всем товарам маркета проходит и ищет наиболее выгодное предложение а для узких каких то задач типа купить\продать два десятка товаров. Таким образом все что нам нужно - это распознать цифры и распознать какой из н-товаров стоит в строке.
Использовать картинки и прочие распозновалки - это достаточно ресурсоемкий процесс, хотя есть наиболее простое решение:
Любую цифру можно определить путем нахождения 7 точек, соответственно любая цифра будет задаваться массивом из 7 цифр 0 и 1
Таким же образом определяем и названия товаров в маркете (делаем весь список и вручную проставляем н-точек по которым будем идентифицировать надпись)
Привязывать цифры нужно к правому нижнему углу ячейки, слова к левому нижнему, определить горизонтальную черту так же можно при помощи 4-5 последовательно идущих точек белого цвета, вертикальную - путем смещения от горизонтальной черты вверх (кто видел маркет поймет о чем я)

зы. Дополню - в принципе можно и буквы распознать как числа, только там больше точек необходимо а как таковой необходимости нет.
 
Автор
D

DJ_Tommy

Продвинутый
Сообщения
236
Репутация
57
Эхх .. нужна помощь:
1. получил массив с цветами всех точек небольшой области - но не могу понять какие относятся к оттенкам серого. Есть ли какие уловки выцепить градации серого (проблема в том что цвет букв и цифр является серыми оттенками других цветов)
2. как задать цвет поиска нужных пикселей? (с учетом что все цвета размыты)
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Пользоваться ТримКалором отсекая все цвета темнее цвета буков, работает даже в овервью при дважды выделенной строке.
 
Автор
D

DJ_Tommy

Продвинутый
Сообщения
236
Репутация
57
Belfigor сказал(а):
Пользоваться ТримКалором отсекая все цвета темнее цвета буков, работает даже в овервью при дважды выделенной строке.
ок - пошел читать Ф1 ... Спс ...
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Тебе не Ф1 в данном случае читать надо а нашу функцию TrimColor использовать которую Арчибальд выкладывал.
91.gif



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

Код:
Func TrimColor($TargetTrim)
	#cs TrimarkColor - Comment Start
		Исползуется для получения из цвета в формате RGB значение яркости пикселя. Возвращает значение от 0 до 255.
		Скорость:
		Функция выполняется за ~0.06-0.10 мс.
	#ce TrimColor - Comment End
	Dim $a, $as, $as1, $as2, $a_fin
	$a = Hex($TargetTrim, 6)
	$a_fin = (Dec(StringTrimRight($a, 4)) + Dec(StringTrimLeft(StringTrimRight($a, 2), 2)) + Dec(StringTrimLeft($a, 4)))/3
	$TargetTrim = Round($a_fin, 0)
	Return $TargetTrim
EndFunc
 
Автор
D

DJ_Tommy

Продвинутый
Сообщения
236
Репутация
57
Belfigor сказал(а):
Тебе не Ф1 в данном случае читать надо а нашу функцию TrimColor использовать которую Арчибальд выкладывал.
91.gif



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




спс - я это нашел сразу ... ща прикреплю что у меня получается ....
И вот добавляю скрипт и результаты выполнения скрипта ...
Код:
HotKeySet("^{BREAK}", "huhu")
$ff = FileOpen("dan707.txt", 1)
$iis=1
$ii=1
$iii=1
$xx1=383
$yy1=420
$qwqw=1
Dim $mass[146], $mass1[146]
While $ii<=146
	$mass1[$ii-1]=0
	$ii+=1
WEnd
$ii=1
Sleep(8000)
Beep(500,5)
while $iii<=120
	While $qwqw<=2
	While $ii<=146
		$xy=MouseGetPos()
		$col=TrimColor("0x"&Hex(PixelGetColor($xx1,$yy1),6))
		;FileWrite($ff,$xx1 & '_'& $yy1 & '_'& $col & ' ')
		If $col<=67 and $mass[$ii-1]=0 Then 
			$mass[$ii-1]=0
			Else
		$mass[$ii-1]=1
		EndIf
		$xx1=$xx1+1
		$ii=$ii+1
	WEnd
	$qwqw=$qwqw+1
$xx1=383
$ii=1
WEnd
While $iis<=146
		If $mass[$iis-1]=0 Then 
			FileWrite($ff,' ')
		Else
			FileWrite($ff,'x')
		EndIf
			$iis+=1
		WEnd
			FileWriteLine($ff,'')
			$mass=$mass1
$iis=1
$qwqw=1
$yy1=$yy1+1
$iii=$iii+1
WEnd
Beep(500,5)
FileClose($ff)
Func huhu()
    Exit 0
EndFunc
Func TrimColor($TargetTrim)
;cs TrimarkColor - Comment Start
;Исползуется для получения из цвета в формате RGB значение яркости пикселя. Возвращает значение от 0 до 255.
;Скорость:
;Функция выполняется за ~0.06-0.10 мс.
;(с) Archy26 :)
;#ce TrimarkColor - Comment End
Dim $a, $a_fin
$a = Hex($TargetTrim, 6)
$a_fin = (Dec(StringTrimRight($a, 4)) + Dec(StringTrimLeft(StringTrimRight($a, 2), 2)) + Dec(StringTrimLeft($a, 4)))/3
$TargetTrim = Round($a_fin, 0)
Return $TargetTrim
EndFunc
 

Lexx98

Продвинутый
Сообщения
272
Репутация
73
Я бы предложил не выкладывать то что получается в публичный доступ.

OffTopic:
В институте по высшей математике я был если и не самым, то одним из самых лучших в группе. И на практике сидел за первой партой. Часто бывало, что задания, что напишут на доске, я решал за 20-30 секунд в тетради. Ну а практика была такая, что часть задач, как правило первые, решали на доске ученики, дабы все могли понять способ решения, и следующие решить самостоятельно. И не раз бывало, что задача написана, я её уже решил, а преподавательница думает, кого бы вызвать. Спрашивает у аудитории: "Кто пойдёт?". При отсутствии желающих, задние ряды иногда предлагали пойти мне. На что я нагло отвечал: "Не пойду. Я-то задачу уже решил, пусть и они голову немного поломают, может хоть чему-то научатся".


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

Кстати, рекомендую использовать мой CheckPixel, а не голый TrimColor, код будет красивее.
 
Автор
D

DJ_Tommy

Продвинутый
Сообщения
236
Репутация
57
Lexx98 сказал(а):
Я бы предложил не выкладывать то что получается в публичный доступ.

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

Кстати, рекомендую использовать мой CheckPixel, а не голый TrimColor, код будет красивее.
По поводу паблика я уже говорил - если я возьмусь за выполнение этой задачи, мне интересны будут любые комментарии, соответственно чем больше человек попробует - тем больше может быть комментариев. Соответственно могут найтись люди скооперировавшись с которыми вполне можно разделить работу по написанию.
В любом случае спасибо всем кто помогает, Лекс - тебе особо за красивые функции :beer:
Опять же пока мое мнение по поводу общедоступности остается неизменным, в любом случае имея даже готовые скрипты и кривые руки мало что получится.
У мну проект немного тормозится из за реала, но я думаю я его смогу вытянуть ....
 
Автор
D

DJ_Tommy

Продвинутый
Сообщения
236
Репутация
57
Эх, блин - работа и реал давят .... Кстати. кто посмотрел приведенный код - есть какие мысли по ипользованию или подобное решение не взлетит?
 

timsky

Осваивающий
Сообщения
93
Репутация
28
DJ_Tommy
Прошу прощения, я еву как скачал, так даже и не запустил установку пол года назад :smile:
Тема распознавания символов мне интересна. Чем обычный MODI не подходит? На оф. форуме автоита есть прекрасный рабочий скрипт.
Еще как вариант (если кол-во пикселей для символов не изменяется) тупо их считать.
 
Автор
D

DJ_Tommy

Продвинутый
Сообщения
236
Репутация
57
Для тех кто не запускал и не представляет себе как выглядит окно маркета приложу скрин

и немного поясню: верхнее окно - там продажные ордера, т.е. если мы хотим что то купить то наш ордер должен быть в самом верху + должна стоять пометка station или system
Если мы хотим что то купить, то наш ордер должен стоять в самом верху нижнего окна + выделение зеленым цветом строки. что означает что ордер распростроняется на эту станцию.
Чуть выше я приводил пример кода и как он распознает текст и числа, но бывает что некоторые пиксели проглатывает и даже двойное сканирование не всегда с этим справляется. Шрифт всегда один и тот же (их 3 вида в настройках игры)
Весь вопрос в том как распознать цифры, ибо сравнение и анализ это уже во многом просто задача на логику. Есть вариант проверять все точки числа и вычислять сумму совпавших пикселей, если совпадения более 90 процентов то число найдено, если нет - проверяется другое число. Как появится время попробую написать свой код распознования для анализа профи.
 

timsky

Осваивающий
Сообщения
93
Репутация
28
DJ_Tommy
Вот дернул с твоего скрина окно SELLERS:
station 1.100.900 416.60 15K: Jda IV — Muon 4— Caldari Navg AssPmblq Plant
Station . 1.121252: 417.62 15K: ida IV — Moon 4 — Caldari Navy ssemblu Plant
Station 1.606.519 417.65 l5K Jda IV — Moon 4 — caldari Navg Assemblu Plant
Station 1.440.000 417.71 15K Jita IV — Moon 6 — Ealdari Navg AssPmblu Plant
Station 730.001: 410.00 ISK ida IV— Moon 6—Caldari Navu AssembI Plant
Station :__1.000.000_: 410.83 P5K: ida IV — Moon 4 — Caldari Navu Assemblu Plant
Station 06.071 410.03 P5K ida IV — Moon 4— Caldari Navg AssPmbIu Plant
Station 724.416 410.99 P5K ida IV — Moon 4 — Caldari Navз Assemblg Plant
Station 269267 419.00 l5K italY — Moon 6— Caldari Navg Assemblq Plant
station 1S0.51b 420.00 l5K ida IV - Moon 6 — caldari NavtJ AssPmbIli Plant
Station : 2290.490 420.90 lSK ida IV — Moon 4 — CaldariNavu Assemblu Plant
Station 669.350 421.50 l5K ida IV — Moon 6 — caldari Navj AssPmblg Plant
Station 275,529 421.98 P5K ida IV — Moon 4 — caldari Navj AssPmbIu Plant 20 230 46M 65

И BUYERS:
Station : 3.000.ODD 30620 1511: Jita IV — Moon 4 — caldari Navy Assomblu Plant Solar Sgstem IDDO GOD 23H 55
Station 73.748 30628 ISIC Jita IV — Moon 4 — Caldari Navu Assembly Plant Station 1 GOD 23K 43
Station 300.0DD 38628 ISIC Jita IV — Moon 4 — Caldari Navg Asseinblg Plant
— Station [ 1 GOD 23K 45’
Station : 206.156 38626 1511: Jita IV — Moon 4— caldari Navq AssPmblg Plant
- Station [ 1 GOD 23K 40
Stat’ion : 250,000 38622 1511: Jita IV — Moon 4 — Caldari Navu Assomblq Plant Station [ 1 GOD 23K 12
Station 400.000 38620 ISIC Jita IV — Moon 4 — caldari Navy Assemblg Plant Station 1 GOD 22H 43
Station 1,SDO.ODO 38611 ISI1 Jita IV — Moon 4 — Caldari Navy Assombl Plant Stathn [ 1 GOD 20K 54
Station : 1,500.DDO 3G611 ISIC Jita — Moon 4 — caldari Navy Assomblu Plant Station 1 GOD 20K 55
Station : 113.120 3G61D ISIC: Jita IV Moon 4 — caldari Navq Assembly Plant : Station I GOD 20K 26
Statnin 1000000 30610 ISIC Jita IV — Moon 4— Caldari Navu Assnlnbl!J Plant Station — 1 GOD 20K 34L

http://www.autoitscript.com/forum/index.php?showtopic=80836

Вариантов по улучшению качества распознавания не мало :smile:
 
Верх