Всем день добрый.
Попробовал использовать для своих целей Распознавание чисел 1.5.cms
Есть поле с шахтами, в левом нижнем углу которых указывается их уровень, надо его распознать
В основном коде ставлю строку
number_read($tmp_x-18,$tmp_y+6,$tmp_x+8,$tmp_y+25, "textures\digit_", 7)
Нарезал со скриншотов цифры, прилагаются в архиве.
Хоть что-то распознает в среднем при качестве распознавания CASE(7) со значением $pr = 70 и ниже - но при этом попадает вообще пальцем в небо (чаще всего распознает якобы уровень 7, независимо от того какая на самом деле).
Смещения пробовал ставить от $SHIFT_X = 1 $SHIFT_Y = 1 до $SHIFT_X = 3 $SHIFT_Y = 5, не помогает.
В строке SCANPICTURE($a_scan, $f_x1,$f_y1,$f_x2,$f_y2, STRCONCAT($pref,$i,".bmp"), 16744447, $pr) попробовал заменить на SCANPICTURE($a_scan, $f_x1,$f_y1,$f_x2,$f_y2, STRCONCAT($pref,$i,".bmp"), -1, $pr) - тоже не помогло
Уважаемые знатоки, что тут еще надо "подвернуть", чтобы заработало для конкретной ситуации?
Код в основной части:
//основная часть
#include "Распознавание чисел 1.5.cms" //подключение для распознавания уровня шахт
print("--------------")
print("Начинаем фармить на поверхности")
undefine($mass_shaht)
getscreen
colormode(7)
$sh_x=0 //задание координат шахты для атаки, если (0,0) - то атаковать нечего
$sh_y=0
// ---Поиск шахты с золотом
SCANPICTURE ($mass_shaht, 70, 400, 355, 685, "g1_gold_7v1.bmp",-1,70) // ищем с 70% совпадения
Print("количество золотых шахт до проверки = ", arrsize($mass_shaht)/2 )
$arrsize_fict=arrsize($mass_shaht)
while ($arrsize_fict > 0)
$tmp_y=arrpop($mass_shaht)
$tmp_x=arrpop($mass_shaht)
IF_PICTURE_IN ($tmp_x-5+11, $tmp_y-46-5, $tmp_x+23+5, $tmp_y-20+5, "g1_taiming_7v2.bmp",-1,70) // проверка на наличие тайминга
print("...тайминг есть, атаковать нельзя")
// поиск уровня обнаруженной шахты
$log = 1
number_read($tmp_x-18,$tmp_y+6,$tmp_x+8,$tmp_y+25, "textures\digit_", 7)
print ("уровень шахты: ", $res, " просто посмотрели")
else
print("...тайминга нет")
$sh_x=$tmp_x
$sh_y=$tmp_y
// поиск уровня обнаруженной шахты
$log = 1
number_read($tmp_x-18,$tmp_y+6,$tmp_x+8,$tmp_y+25, "textures\digit_", 7)
if ($res < 13)
print ("...уровень шахты: ", $res, " атакуем")
$arrsize_fict=0 //для прерывания цикла while - если нашли цель, то иные можно не проверять
GOTO(end_while)
else
print("...уровень шахты: ", $res, " НЕ атакуем")
end_if
end_if
$arrsize_fict=arrsize($mass_shaht)
end_while:
end_cyc
//далее алгоритм собственно атаки
P.S.Не очень понял где лучше данный вопрос задать: то ли создавать отдельный вопрос в основном чате "Общие вопросы", то ли не плодить нового и продолжить имеющуюся тему. Решил продолжить имеющуюся