Здравствуйте, гость ( Вход | Регистрация )

> Поиск Цвета По Слоям., Определяет не тот цвет.
Denker
сообщение 6.1.2011, 0:53
Сообщение #1


**

Neophyte
Сообщений: 46
Регистрация: 28.10.2010
Группа: Пользователи
Наличность: 0
Пользователь №: 13.148
Возраст: 30



Столкнулся с такой проблеммой:
в углу окна висит хит-бар с показаниями здоровья, делаю проверку цвета по заданым координатам, но проверка не проходит. После использования команд get color и лога, понял, что цвет берётся не из картинки с хит-баром, а с фона на котором она висит.
Как это решается?
Искал по форуму, описания подобных проблемм не нашёл, извините, если плохо искал.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
 
Ответить в эту темуОткрыть новую тему
Ответов
Denker
сообщение 9.1.2011, 0:05
Сообщение #2


**

Neophyte
Сообщений: 46
Регистрация: 28.10.2010
Группа: Пользователи
Наличность: 0
Пользователь №: 13.148
Возраст: 30



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

Код

set #a findwindow (Фантазиум (RU))
set workwindow #a
showwindow #a
set %ax [1 1] 549 // начальные координаты по которым идёт поиск
set %ax [2 1] 608
set %ax [3 1] 666
set %ax [4 1] 726
set %ax [1 2] 539
set %ax [2 2] 598
set %ax [3 2] 656
set %ax [4 2] 716
set %ax [1 3] 558
set %ax [2 3] 617
set %ax [3 3] 675
set %ax [4 3] 735
:begin
wait 1500
set $b1 0
set $b2 0
set $b1 findcolor (1062, 754 1063, 755 1 1 1184461 %arr 2 abs)
set $b2 findcolor (547, 616 548, 617 1 1 2397184 %arr 2 abs)
if ($b1 > 0) and ($b2 > 0) // проверка по двум точкам когда начинать выполнение скрипта
for #i 1 4
set $u 0
set $d 0
set $l 0
set $r 0
set #xu1 %ax [#i 1]
set #xu2 %ax [#i 1] + 1
set #xl1 %ax [#i 2]
set #xl2 %ax [#i 2] + 1
set #xr1 %ax [#i 3]
set #xr2 %ax [#i 3] + 1
set $u findcolor (#xu1, 653 #xu2, 654 1 1 7266294 %arr 2 abs) //если тут вместо #xu2 написать #xu1 + 1, то поиск не срабатывает.
set $d findcolor (#xu1, 672 #xu2, 673 1 1 2982898 %arr 2 abs)
set $l findcolor (#xl1, 662 #xl2, 663 1 1 5355252 %arr 2 abs)
set $r findcolor (#xr1, 662 #xr2, 663 1 1 5355252 %arr 2 abs)
if $u > 0
post {Up}
end_if
if $d > 0
post {Down}
end_if
if $l > 0
post {Left}
end_if
if $r > 0
post {Right}
end_if
end_for
wait 4000
end_if
goto begin


На мониторе стоит разрешение 1280х1024, игра запущена в оконном режиме с разрешением 1280х960. При запуске автоматически центрируется, обычными методами двигать нельзя. По ширине получается в притык по экрану. Скрин прилагается.
Если не считать фреймами изображение стрелок, из-за которых и были сложности с определением цвета, то больше в зону поиска ничего не попадает.
Скрипт расчитан на 4-х кнопочную комбинацию, на скрине их 7. Это решается расширением масивов с координатами с их заменой на новые и увеличением цикла for с 4 до 7.

Прикрепленное изображение

откопал промежуточный отладочный сейв, может поможет разобраться

промежуточная отладка

set #a findwindow (Фантазиум (RU))
set workwindow #a
//showwindow #a
set %axu [1 1] 549
set %axu [2 1] 608
set %axu [3 1] 666
set %axu [4 1] 726 //712
set %axd [1 2] 545
set %axd [2 2] 604
set %axd [3 2] 662
set %axd [4 2] 722
set %axl [1 3] 558
set %axl [2 3] 606
set %axl [3 3] 675
set %axl [4 3] 735
set $b1 0
set $b2 0
set $b3 0
set $b1 findcolor (1063, 754 1065, 756 1 1 1184461 %arr 2 abs)
set $b2 findcolor (548, 616 550, 618 1 1 2397184 %arr 2 abs)
set $b3 findcolor (249, 758 250, 759 1 1 9464066 %arr 2 abs)
//if ($b1 > 0) and ($b2 > 0) and ($b3 > 0)
set #i 4
//repeat 4
//set #i #i + 1
set $u 0
set $d 0
set $l 0
set $r 0
set #xu1 %axu [#i 1]
set #xu2 %axu [#i 1] + 1
set #xd1 %axd [#i 2]
set #xd2 %axd [#i 2] + 1
set #xl1 %axl [#i 3]
set #xl2 %axl [#i 3] + 1

while ( $u = 0 ) and ( $d = 0 ) and ( $l = 0 ) and ($r = 0)
set $u findcolor (#xu1, 652 #xu2, 653 1 1 7129819 %arr1 2 abs)
set $d findcolor (#xd1, 653 #xd2, 654 1 1 7397878 %arr2 2 abs)
if #i = 1
set $l findcolor (558, 648 559, 677 1 1 5795961 %arr3 2 abs)
end_if
if #i = 2
set $l findcolor (609, 648 610, 677 1 1 6141658 %arr4 2 abs)
end_if
if (#i = 3) or (#i = 4)
set $l findcolor (#xl1, 648 #xl2, 677 1 1 4939129 %arr5 2 abs)
end_if
if #i = 1
set $r findcolor (539, 648 540, 677 1 1 5796217 %arr6 2 abs)
end_if
if #i = 2
set $r findcolor (597, 648 598, 677 1 1 5519145 %arr7 2 abs)
end_if
if #i = 3
set $r findcolor (663, 648 664, 677 1 1 5452838 %arr8 2 abs)
end_if
if #i = 4
set $r findcolor (716, 648 717, 677 1 1 4939129 %arr9 2 abs)
end_if
end_while
set logging open
if $u > 0
post {Up}
set #z1 %arr1 [1 1]
set #z2 %arr1 [1 2]
set logging arr1 #z1 #z2 #i
goto end
end_if
if $d > 0
post {Down}
set #z1 %arr2 [1 1]
set #z2 %arr2 [1 2]
set logging arr2 #z1 #z2 #i
goto end
end_if
if $l > 0
post {Left}
if #i = 1
set #z1 %arr3 [1 1]
set #z2 %arr3 [1 2]
set logging arr3 #z1 #z2 #i
end_if
if #i = 2
set #z1 %arr4 [1 1]
set #z2 %arr4 [1 2]
set logging arr4 #z1 #z2 #i
end_if
if #i = 3
set #z1 %arr5 [1 1]
set #z2 %arr5 [1 2]
set logging arr5 #z1 #z2 #i
end_if
if #i = 4
set #z1 %arr5 [1 1]
set #z2 %arr5 [1 2]
set logging arr5 #z1 #z2 #i
end_if
goto end
end_if
if $r > 0
post {Right}
if #i = 1
set #z1 %arr6 [1 1]
set #z2 %arr6 [1 2]
set logging arr6 #z1 #z2 #i
end_if
if #i = 2
set #z1 %arr7 [1 1]
set #z2 %arr7 [1 2]
set logging arr7 #z1 #z2 #i
end_if
if #i = 3
set #z1 %arr8 [1 1]
set #z2 %arr8 [1 2]
set logging arr8 #z1 #z2 #i
end_if
if #i = 4
set #z1 %arr9 [1 1]
set #z2 %arr9 [1 2]
set logging arr9 #z1 #z2 #i
end_if
goto end
end_if
:end
//end_repeat
//end_if
end_script


u 5025524
d 5421044
l110325120
l2 10324860
r1 7230537
r2 10325121
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Сообщений в этой теме
Denker   Поиск Цвета По Слоям.   6.1.2011, 0:53
DarkMaster   сталкиваолся подобной проблемой в масс эффекте и в...   6.1.2011, 3:30
Denker   Игра Фантазиум, пытаюсь автоматизировать рыбалку. ...   6.1.2011, 5:23
Zeleax   Про этот я знаю set $a findcolor (1, 1 2, 2 ...   6.1.2011, 10:31
Denker   Вроде писали, что findcolor не работает, если сов...   6.1.2011, 13:12
DarkMaster   теоретически, если сохранишь в бмп, то проблем не ...   6.1.2011, 20:23
Denker   set $a findcolor (1, 1 2, 2 1 1 123456 %arr ...   7.1.2011, 17:18
Zeleax   Очень удобно использовать для захвата экрана и опр...   7.1.2011, 17:26
Denker   Спасибо за помощь, findcolor настроил, но вылезла ...   7.1.2011, 18:27
Zeleax   может быть цвет не был найден, тогда и ошибка появ...   7.1.2011, 19:43
Denker   может быть цвет не был найден, тогда и ошибка поя...   7.1.2011, 20:02
DarkMaster   у тебя все массивы одинаковые. может произойти сле...   7.1.2011, 20:21
Denker   у тебя все массивы одинаковые. может произойти сл...   7.1.2011, 21:31
Denker   Я его сделал! Огромное всем спасибо за помощь....   8.1.2011, 14:30
Zeleax   я ж писал уже, что элементы массивов напрямую обыч...   8.1.2011, 17:05
DarkMaster   Очень странный глюк. Создается впечатление, что п...   8.1.2011, 21:25
Denker   Ещё немного модифицировал и упростил код. Во время...   9.1.2011, 14:58
Zeleax   Непонятно почему так происходит, но обойти можно т...   10.1.2011, 15:09
Denker   Спасибо за совет, но к этому я уже сам пришёл. А о...   10.1.2011, 16:33
DarkMaster   Denker, извиняюсь что пропал. Был занят. По поводу...   10.1.2011, 16:34
Denker   Возможно. Тебе виднее. Но мои вычисления по формул...   10.1.2011, 19:55
Zeleax   Такой вопрос: первый скрипт запускает второй, а с...   11.1.2011, 8:38
Denker   1) если 1-й скрипт поставить на паузу (pause_scri...   11.1.2011, 11:32
DarkMaster   мелочь внутри пишу. что-то объемное Notepad++. я г...   11.1.2011, 11:08
Zeleax   1) resume_script 0 // во втором скрипте (нумерация...   11.1.2011, 11:47
Denker   3) если стрелки занимают на экране строго определ...   11.1.2011, 11:54
Zeleax   вот мы и вернулись к тому, с чего всё начиналось ...   11.1.2011, 12:06


Ответить в эту темуОткрыть новую тему
7 чел. читают эту тему (гостей: 7, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 19.9.2025, 7:32
Designed by Nickostyle