1) Например привязка к окну, с кучей дочерних окон и ненужной информации которая отображается в скрипте, поставил запятую не там и скрипт будет не рабочим, не легче указать просто название окна и сам процесс? или скажем как это делаю я в пилоте - меняю название окна и привязываю к нему:
//скрипт 1:
set #n 1
set #var findwindow (Lineage II)
while #var <> 0
set #result setwindowtext ( #var Окно № #n)
set #var findwindow (Lineage II)
set #n #n + 1
end_while
//скрипт 2
set #handleWin findwindow ( Окно № 1...N ) //меняю на конкретное
set workwindow #handleWin
Или скажем ваш 3D поиск, конечно классно,и я ничего против не имею, но спрашивается нафига он обычному юзеру, ту же логику можно реализовать на 2D картинке указав хп моба и что делать персонажу в зависимости от полоски хп и это намного проще + программа не будет касячить с 3D анимацией и загружать процессор.
А вообще если честно это мелочи, каждый создает свой проект как ему нравится, меня интересует то что в 3 пункте.
2) Я сказал что не программист, реализовать это не смогу. Но зато могу пользоваться внаглую вашим софтом и как вы сказали узконаправленным, и ничего в этом зазорного не вижу - в бою все методы хороши. Скажу так же, что анализ изображений есть в макро рекордере и пилоте правда 2D.
3) Вопрос в том, что сейчас больше половины софта не видит неактивные окна из-за фроста, нельзя использовать ваш анти-анти кликер для этой задачи? Либо сделать другую функцию обхода?
91. Iret - 12 Декабря, 2013 - 13:59:16 - перейти к сообщению
92. Kibor - 12 Декабря, 2013 - 14:59:49 - перейти к сообщению
Iret пишет:
1) Например привязка к окну, с кучей дочерних окон и ненужной информации которая отображается в скрипте, поставил запятую не там и скрипт будет не рабочим, не легче указать просто название окна и сам процесс? или скажем как это делаю я в пилоте - меняю название окна и привязываю к нему:
//скрипт 1:
set #n 1
set #var findwindow (Lineage II)
while #var <> 0
set #result setwindowtext ( #var Окно № #n)
set #var findwindow (Lineage II)
set #n #n + 1
end_while
//скрипт 2
set #handleWin findwindow ( Окно № 1...N ) //меняю на конкретное
set workwindow #handleWin
//скрипт 1:
set #n 1
set #var findwindow (Lineage II)
while #var <> 0
set #result setwindowtext ( #var Окно № #n)
set #var findwindow (Lineage II)
set #n #n + 1
end_while
//скрипт 2
set #handleWin findwindow ( Окно № 1...N ) //меняю на конкретное
set workwindow #handleWin
Хм.. Во первых никто не мешает указать просто по имени окна:
window ("Калькулятор");
Приглашаю посетить эту тему. С помощью выбора галочек можно указать по каким признакам идентифицировать окно или контрол. Программа сгенерирует нужный сама код.
Теперь рассмотрим случай когда такой вариант не пройдет...
Простейший пример - калькулятор в вин 7. Попробуйте работать с несколькими кнопками в калькуляторе таким образом как в вашем примере скрипта. Попробуйте осуществить нажатие в нем кнопок в свернутом или не активном окне калькулятора.
Вот как это можно сделать в Кибор в свернутом калькуляторе win 7(Вид калькулятора - обычный):
Непосредственное нажатие кнопок 58:
CODE:
button(0, window (-1, -1, 50, 161, -1, -1, window ("Калькулятор")));//5
button(0, window (-1, -1, 50, 129, -1, -1, window ("Калькулятор")));//8
button(0, window (-1, -1, 50, 129, -1, -1, window ("Калькулятор")));//8
Нажатие мышкой опять в свернутом окне калькулятора кнопок 58:
CODE:
sendmouse(LEFT, 10, 10, window (-1, -1, 50, 161, -1, -1, window ("Калькулятор")));//5
sendmouse(LEFT, 10, 10, window (-1, -1, 50, 129, -1, -1, window ("Калькулятор")));//8
sendmouse(LEFT, 10, 10, window (-1, -1, 50, 129, -1, -1, window ("Калькулятор")));//8
Попробуйте сделать такой процесс в другой программе без "ненужной информации".
Пример с простым нажатием кнопок 5 8 не надо приводить. Калькулятор просто пример почему ненужная информация - нужная. В других программах могут не работать горячие клавиши для конкретной кнопки...
Аргумент что именно вам это не надо конечно не аргумент. Много ситуаций когда без этого не обойтись. Кибор направлен на универсальность и гибкость.
Ну и опять же если не надо, то естественно можно обойтись и названием главного окна.. я уже писал: window ("Калькулятор");
Iret пишет:
Или скажем ваш 3D поиск, конечно классно,и я ничего против не имею, но спрашивается нафига он обычному юзеру, ту же логику можно реализовать на 2D картинке указав хп моба и что делать персонажу в зависимости от полоски хп и это намного проще + программа не будет касячить с 3D анимацией и загружать процессор.
При чем поиск динамики к хп и какие то действия... Речь идет о поиске на экране объектов которые нельзя идентифицировать по заранее известному изображению... Я же дал ссылку на тему...
Смотрите это видео: Бот RF
Поиск мобов ведется с помощью функции finddynamic.
Вот тут можно посмотреть скрипт того бота.
Как вы реализуете в другой программе это? Я не против дополнить функционал Кибор если есть более элегантное решение..
Да и кто сказал что эта функция грузит процессор? Анализ экрана любой функцией в Кибор довольно быстрый.
Iret пишет:
Я сказал что не программист, реализовать это не смогу
Как же... Вы сказали что можете реализовать с помощью других программ все что я с помощью Кибор. Я просто привел пример.. В ответ на
Iret пишет:
тогда какой толк от вашей программы
Iret пишет:
Но зато могу пользоваться внаглую вашим софтом и как вы сказали узконаправленным, и ничего в этом зазорного не вижу - в бою все методы хороши.
Никто против ничего не говорит. Просто я стараюсь писать универсальную самодостаточную программу..
Примером может служить хоть встроенный графический редактор.. Ознакомьтесь с ним в справке и увидите его полезность.
Iret пишет:
Вопрос в том, что сейчас больше половины софта не видит неактивные окна из-за фроста, нельзя использовать ваш анти-анти кликер для этой задачи? Либо сделать другую функцию обхода?
Вот этот вопрос бы задать в теме "вопросы и решение проблем"...
Я уже ответил что антиантикликер работает совсем по другому принципу - как программируемые клавиатура и мышь (с контроллером).
Для обхода фроста в этом режиме и нейтрализации фроста используйте специализированный софт. Кибор не ломает защиту. Не снимает хуки. Если будет реализация антиантикликера в других режимах - будет другой путь.
93. Iret - 13 Декабря, 2013 - 07:56:55 - перейти к сообщению
Во-первых если у вас много окон калькулятора такой метод уже не протатит без дополнительных привязок, к тому же например процессу, иначе вы просто запутаетесь. Если мне надо будет идентифицировать окно и прочее с кучей ненужной как правило информацией я воспользуюсь узкоспециализированным софтом для этого например: сcылька
Да запросто отошлю нажатие, чем вас не устроил обычный посыл клавиш?
set #handleWin findwindow ( Окно № 2 )//2-е свернутое окно калькулятора
set workwindow #handleWin
send 1
wait 2s
Тем что вы эмулируете якобы нажатие клавиши со своими параметрами? Ну тогда идем дальше...
Проблема ведь в том, что на калькуляторе нет защит, а на руоффе есть, и ваш функционал сводиться к 0 - с мышкой и нажатием клавиш в неактивное окно(и следовательно ваша нужная информация в параметрах - вода), и работает он получается только с активным окном, вопрос, что тогда отличает ваш софт среди других? Ответ вы сами знаете. Более того софт должен быть удобным, а не для программиста, с кучей параметров, мне если честно, Кибор чем то напоминает Delphi, с окошком и кучей настроек, но извините это язык для программистов, а у вас программа для юзеров пусть и с программным кодом.
(Добавление)
Теперь насчет поиска динамики, вы хотите сказать что в играх нет никаких дополнительных параметров, которые облегчали бы жизнь тому же игроку? нет параметров двухмерной картинки? Что это за игра тогда и кто в нее играть то будет. А мы с параметрами облегчаем себе работу в скрипте. 3D режим конечно похвально, но работает он не всегда корректно, тот же ваш скрипт дает сбои и перс застревает в стене не видя поблизости мобов с функцией finddynamic. Кроме того, насколько мне известно обработать 3D модель намного сложнее чем 2D со всеми вытекающими...
Теперь по поводу бота, я это реализую как написал выше, использую параметры игры, и, например по хп цели буду писать что делать боту дальше, и затрат по анализу времени меньше и по стабильности скрипта -устойчивее. Вообщем вывод: finddynamic - дополнительная функция, редко используемая.
Пожелание насчет обхода напишу, погодя.
Да запросто отошлю нажатие, чем вас не устроил обычный посыл клавиш?
set #handleWin findwindow ( Окно № 2 )//2-е свернутое окно калькулятора
set workwindow #handleWin
send 1
wait 2s
Тем что вы эмулируете якобы нажатие клавиши со своими параметрами? Ну тогда идем дальше...
Проблема ведь в том, что на калькуляторе нет защит, а на руоффе есть, и ваш функционал сводиться к 0 - с мышкой и нажатием клавиш в неактивное окно(и следовательно ваша нужная информация в параметрах - вода), и работает он получается только с активным окном, вопрос, что тогда отличает ваш софт среди других? Ответ вы сами знаете. Более того софт должен быть удобным, а не для программиста, с кучей параметров, мне если честно, Кибор чем то напоминает Delphi, с окошком и кучей настроек, но извините это язык для программистов, а у вас программа для юзеров пусть и с программным кодом.
(Добавление)
Теперь насчет поиска динамики, вы хотите сказать что в играх нет никаких дополнительных параметров, которые облегчали бы жизнь тому же игроку? нет параметров двухмерной картинки? Что это за игра тогда и кто в нее играть то будет. А мы с параметрами облегчаем себе работу в скрипте. 3D режим конечно похвально, но работает он не всегда корректно, тот же ваш скрипт дает сбои и перс застревает в стене не видя поблизости мобов с функцией finddynamic. Кроме того, насколько мне известно обработать 3D модель намного сложнее чем 2D со всеми вытекающими...
Теперь по поводу бота, я это реализую как написал выше, использую параметры игры, и, например по хп цели буду писать что делать боту дальше, и затрат по анализу времени меньше и по стабильности скрипта -устойчивее. Вообщем вывод: finddynamic - дополнительная функция, редко используемая.
Пожелание насчет обхода напишу, погодя.
94. Kibor - 13 Декабря, 2013 - 10:45:13 - перейти к сообщению
Iret пишет:
Во-первых если у вас много окон калькулятора такой метод уже не протатит без дополнительных привязок, к тому же например процессу, иначе вы просто запутаетесь.
Неужели?
Запускаем 2 окна калькулятора и запускаем код
CODE:
win w1=window ("Калькулятор");
sendtext("Калькулятор1", w1);
sleep(500);
win w2=window ("Калькулятор");
sendtext("Калькулятор", w1);
sendmouse(LEFT, 10, 10, window (-1, -1, 50, 161, -1, -1, w1));//5
sendmouse(LEFT, 10, 10, window (-1, -1, 50, 129, -1, -1, w1));//8
sendmouse(LEFT, 10, 10, window (-1, -1, 50, 161, -1, -1, w2));//5
sendmouse(LEFT, 10, 10, window (-1, -1, 50, 129, -1, -1, w2));//8
sendtext("Калькулятор1", w1);
sleep(500);
win w2=window ("Калькулятор");
sendtext("Калькулятор", w1);
sendmouse(LEFT, 10, 10, window (-1, -1, 50, 161, -1, -1, w1));//5
sendmouse(LEFT, 10, 10, window (-1, -1, 50, 129, -1, -1, w1));//8
sendmouse(LEFT, 10, 10, window (-1, -1, 50, 161, -1, -1, w2));//5
sendmouse(LEFT, 10, 10, window (-1, -1, 50, 129, -1, -1, w2));//8
Простое чтение справки и поиск по форуму избавит от этого вопроса...
Iret пишет:
Если мне надо будет идентифицировать окно и прочее с кучей ненужной как правило информацией я воспользуюсь узкоспециализированным софтом для этого например: сcылька
Пожалуйста... Не забудьте об этом только предупредить пользователей которые запустят ваш скрипт и дать им на этот софт ссылку для скачивания и сообщить что привязка идет перед каждым запуском отдельно... Еще раз повторяюсь - Кибор самодостаточная программа и поэтому так же могу сказать:
На кой нужен этот софт если есть Кибор в котором это встроенно просто как дополнительный инструмент?
Iret пишет:
Да запросто отошлю нажатие, чем вас не устроил обычный посыл клавиш?
Ну я же специально уже даже об этом написал и даже не привел такой код как далеко не универсальный и работающий только с калькулятором
CODE:
win w1=window ("Калькулятор");
sendkey('5' , window (-1, -1, 50, 161, -1, -1, w1));//5
sendkey('8', window (-1, -1, 50, 129, -1, -1, w1));//8
sendkey('5' , window (-1, -1, 50, 161, -1, -1, w1));//5
sendkey('8', window (-1, -1, 50, 129, -1, -1, w1));//8
Ну пожалуйста... Вот пример чем не устраивает:
Запускаем диалог (Выполнить) в вин 7 - Пуск>выполнить.
Запускаем скрипт:
CODE:
ee: button(1 , window ("Об&зор...", -1, window ("Выполнить")));
sleep(1000);
button(1 , window ("Отмена", -1, 570, 130, -1, -1, window ("Выполнить")));
sleep(1000);
goto ee;
sleep(1000);
button(1 , window ("Отмена", -1, 570, 130, -1, -1, window ("Выполнить")));
sleep(1000);
goto ee;
Тут нельзя просто отправить нажатие на клаве 5 и 8... Конечно можно нажать горячие клавиши, но кнопки просто пример. Как поступите с Edit например? Табом?)) И это решение?
Приведите скрипт другой программы который так сработает. Аргумент по поводу специализированного софта не аргумент. Я уже написал что в Кибор есть все необходимое для работы автономной и в этом есть небольшая часть ответа на
Iret пишет:
тогда какой толк от вашей программы
Iret пишет:
Проблема ведь в том, что на калькуляторе нет защит, а на руоффе есть, и ваш функционал сводиться к 0 - с мышкой и нажатием клавиш в неактивное окно(и следовательно ваша нужная информация в параметрах - вода), и работает он получается только с активным окном, вопрос, что тогда отличает ваш софт среди других? Ответ вы сами знаете.
Кто вам сказал что свет сошелся клином на фросте? Есть очень очень много других игр и тд где весь этот, вам не нужный функционал прекрасно работает и очень нужен..
Для фроста есть антиантикликер. Если не устраивает или танцуйте с бубном или используйте другие программы в которых появился похожий функционал и синтаксис проще вам. Я что теперь должен удалить все функции и инструментарий только потому что именно вам он не нужен в конкретной игре?
Iret пишет:
Более того софт должен быть удобным, а не для программиста, с кучей параметров, мне если честно, Кибор чем то напоминает Delphi, с окошком и кучей настроек, но извините это язык для программистов, а у вас программа для юзеров пусть и с программным кодом.
Я вроде приводил код который не сложнее чем привели вы. Повториться как можно использовать только имя окна?
То же касается и других функций. Есть короткие функции. К примеру:
CODE:
key(F5);
key('a');
key("qwert");
mouse(LEFT);
mouse(LEFT, 100, 200);
key('a');
key("qwert");
mouse(LEFT);
mouse(LEFT, 100, 200);
Есть и длинные аналоги для расширенного программирования. Используйте короткие и наслаждайтесь простотой. Не мешает никто. Да.. Еще... Есть мнение что язык Кибор наоборот куцый... Так что я должен сделать? Для каждого пользователя написать свой язык. Он такой какой есть.
Iret пишет:
Теперь насчет поиска динамики, вы хотите сказать что в играх нет никаких дополнительных параметров, которые облегчали бы жизнь тому же игроку? нет параметров двухмерной картинки? Что это за игра тогда и кто в нее играть то будет.
Хм.. То есть скажите что в том же L2 есть двухмерный режим?? )
Я привел видео и скрипт. Там нет. Играют.
Ну к примеру в L2 можно вообще обойтись без поиска мобов. Можно просто командами в таргет брать. Я тут скрипт выкладывал такой для примера. Но во многих играх такого нет.
Еще раз предлагаю посмотреть видео и услышать что речь идет именно о поиске на экране объектов, а не разных дополнительных параметрах которые что то облегчают. Вы найдите объект для начала а потом будете смотреть на дополнительные параметры... Я уже писал что команда /target это уникальная команда L2.. Она не работает в других играх и аналога нет и она не заменит в других играх поиск объектов.
Iret пишет:
тот же ваш скрипт дает сбои и перс застревает в стене не видя поблизости мобов с функцией finddynamic. Кроме того, насколько мне известно обработать 3D модель намного сложнее чем 2D со всеми вытекающими...
Это вопрос логики. Я не ставлю перед собой цель в учебных скриптах разрабатывать сложный AI. Это учебный скрипт и назначение его - простота восприятия узлов основных. Как всех примеров учебных.. Логика уже лежит на плечах пользователей. Если я выложу готовый бот, тогда я на себя возьму ответственность за логику, а с пользователя вознаграждение).
Да и вообще то в Кибор можно работать непосредственно с процессом... Просто я не давно добавил этот функционал и еще не реализовал примеры.. разве что один чит учебный: Хак радара в RF Online.
По поводы обработка 3D... Читайте внимательно описание finddynamic ...... Это диалог теоретика с практиком...
Iret пишет:
Теперь по поводу бота, я это реализую как написал выше, использую параметры игры, и, например по хп цели буду писать что делать боту дальше, и затрат по анализу времени меньше и по стабильности скрипта -устойчивее. Вообщем вывод: finddynamic - дополнительная функция, редко используемая.
Ответил уже. Свет на L2 клином не сошелся и /target это не панацея. Во многих случаях можно используется finddynamic. Это просто глаза программы. Как их применять зависит от программиста.
Возможно вы что то спутали.. Это форум программы Кибор, а не ботоводства именно в L2..
Мне довольно увлекательно вести этот диалог, но хочется с него вынести что то полезное для программы.
Пока что ничего не увидел...
95. Iret - 13 Декабря, 2013 - 11:14:31 - перейти к сообщению
Знаете спорить можно бесконечно, но результата будет мало. Скажу так: официальный сервер у нас руофф - защита на нем фрост, функции обхода для него у вас реализованы на 1 активное окно, методы разные, результат один и тот же(по сравнению с другим софтом). Так что я говорю не только про l2, а про всю линейку их игр. По поводу функционала ничего больше не скажу, ибо вы разработчик и вам решать какой ей быть, я лишь указал на то, что не так востребовано, и что желательно реализовать. Что касается остальных игр, - программа будет работать возможно очень даже хорошо, но под защитой даже того же Gameguard работать только в активном окне - это ограничение функционала.
96. Kibor - 13 Декабря, 2013 - 11:48:26 - перейти к сообщению
Я лично не спорю..
Просто вы отвлеклись от интересующего вас вопроса и я поддерживал дискусию в надежде получения полезной информации для равития программы. Ничего полезного не узнал.
По поводу вопроса, то надо было сразу его в предложения кидать, а все остальное если возникают вопросы спрашивать после ознакомления с программой.
Ответ:
На данный момент кроме антиантикликера в Кибор нет обхода защиты. Возможно в процессе разработки будет идти работа в этом направление, так как с недавнего времени программа получила новое направление работы с процессом. Если бы не защита win7 64 и выше было бы все проще так как я бы это развивал с помощью ring0 программирования. К сожалению необходимость подписи драйвера ставит тот самый фрост и атифростовых разработчиков в неравные позиции, поэтому и извращаются. Как правило эти извращения легко обнаруживаются и банятся защитой.
Просто вы отвлеклись от интересующего вас вопроса и я поддерживал дискусию в надежде получения полезной информации для равития программы. Ничего полезного не узнал.
По поводу вопроса, то надо было сразу его в предложения кидать, а все остальное если возникают вопросы спрашивать после ознакомления с программой.
Ответ:
На данный момент кроме антиантикликера в Кибор нет обхода защиты. Возможно в процессе разработки будет идти работа в этом направление, так как с недавнего времени программа получила новое направление работы с процессом. Если бы не защита win7 64 и выше было бы все проще так как я бы это развивал с помощью ring0 программирования. К сожалению необходимость подписи драйвера ставит тот самый фрост и атифростовых разработчиков в неравные позиции, поэтому и извращаются. Как правило эти извращения легко обнаруживаются и банятся защитой.
97. Iret - 13 Декабря, 2013 - 12:31:12 - перейти к сообщению
Еще одна вещь, насчет R2, я не играл в нее, не знаю как там реализовано все, но думаю имя у моба и цвет есть, а раз так на другом софте это реализуется распознованием и сканированием цвета определенного диапазона(можно даже по нику, но косячно скорее всего будет). Просто, дешево, сердито. Ну это так к слову про вопрос как реализовать другим методом.
98. Kibor - 13 Декабря, 2013 - 12:50:14 - перейти к сообщению
Пример не удачный. Я в R2 тоже не играл и не знаю. Я писал по поводу RF.
Но думаю что там так же как и в RF ник моба появляется только после наведения курсора на него.
Отдаю должное что подобный метод используется во втором скрипте для RF для контроля поиска мобов на экране функцией finddynamic и после наведения мышки на него.
Использование прямого такого метода невозможно. Если и возможет , то точно глюкавый.
Но думаю что там так же как и в RF ник моба появляется только после наведения курсора на него.
Отдаю должное что подобный метод используется во втором скрипте для RF для контроля поиска мобов на экране функцией finddynamic и после наведения мышки на него.
Использование прямого такого метода невозможно. Если и возможет , то точно глюкавый.
99. Iret - 15 Декабря, 2013 - 08:26:04 - перейти к сообщению
Kibor пишет:
Пример не удачный. Я в R2 тоже не играл и не знаю. Я писал по поводу RF.
Но думаю что там так же как и в RF ник моба появляется только после наведения курсора на него.
Отдаю должное что подобный метод используется во втором скрипте для RF для контроля поиска мобов на экране функцией finddynamic и после наведения мышки на него.
Использование прямого такого метода невозможно. Если и возможет , то точно глюкавый.
Но думаю что там так же как и в RF ник моба появляется только после наведения курсора на него.
Отдаю должное что подобный метод используется во втором скрипте для RF для контроля поиска мобов на экране функцией finddynamic и после наведения мышки на него.
Использование прямого такого метода невозможно. Если и возможет , то точно глюкавый.
Пардон RF. Ник моба задействовать не будем, а то естественно будет глючно, да еще и выделить его надо.
По цвету будем анализировать и сканировать уникальные пиксели присущие только данным изображениям:
ссылка
К сожалению другого софта с подобной функцией кроме вашего и этого за все время не обнаружил мб и есть.
100. Kibor - 15 Декабря, 2013 - 18:49:03 - перейти к сообщению
Боюсь разочаровать, но работа этого продемонстрированного софта не имеет ничего общего с finddynamic...
В finddynamic абсолютно другой алгоритм. И не зависит от цветов..
К тому же в 3Д надеяться на то что объект обязательно будет иметь определенный цвет крайне не правильно. Такое возможно только если это к примеру кадры из двухмерных картинок. Да и в этом случае часто такой метод не сработает из за того что фон не захочет подстраиваться под ботовода) и все же будет иметь одинаковые по цвету пикселя или наоборот не найдется в кадрах одинаковых).
Ну в принципе такой нехитрый код позволит без постороннего софта сравнить 2 картинки (для примера) до 20 на 20 размером и выделить одного цвета пиксели и записать их в файл:
Так же если надо получить именно общие по позиции цвету пикселя экрана игры можно воспользоваться фильтром динамики в Кибор..
Ну а вообще дело не в finddynamic и зацикливаться на нем не стоит. Я просто привел пример первого в голову что пришло. Еще раз повторю что кому на чем писать это дело лично его.
Я вот использую Visual Studio 97, это первая выпущенная версия Visual Studio и бывает испытываю из за этого некоторые неудобства с поддержкой новых функций. Пока что в принципе эти трудности я так или иначе решаю. Когда уже не смогу решить - перейду на более новую версию.
Так и в Вашем случае. Если устраивают программы которыми пользуетесь и считаете что продемонстрированный Вами софт решит проблему - пользуйтесь. Как увидите что не решает - ищите другой.
В finddynamic абсолютно другой алгоритм. И не зависит от цветов..
К тому же в 3Д надеяться на то что объект обязательно будет иметь определенный цвет крайне не правильно. Такое возможно только если это к примеру кадры из двухмерных картинок. Да и в этом случае часто такой метод не сработает из за того что фон не захочет подстраиваться под ботовода) и все же будет иметь одинаковые по цвету пикселя или наоборот не найдется в кадрах одинаковых).
Ну в принципе такой нехитрый код позволит без постороннего софта сравнить 2 картинки (для примера) до 20 на 20 размером и выделить одного цвета пиксели и записать их в файл:
Цитата:
int a[20][20];
int v[20][20];
loadimage(#a[0][0], "C:\a.bmp");
loadimage(#v[0][0], "C:\v.bmp");
int x1, y1;
int x2, y2;
int n=0, n1;
int all_col[400];
x1=0;
f: if (x1<20)
{
y1=0;
f1: if (y1<20)
{
x2=0;
t: if (x2<20)
{
y2=0;
t1: if (y2<20)
{
if (a[x1][y1] == v[x2][y2])
{
if (a[x1][y1]!=-1)
{
n1=0;
h: if (n1<n)
{
if (all_col[n1]==a[x1][y1])goto er;
n1++;
goto h;
}
all_col[n]=a[x1][y1];
n++;
}
}
er:;
y2++;
goto t1;
}
x2++;
goto t;
}
y1++;
goto f1;
}
x1++;
goto f;
}
if (n>0)
{
fopen ("c:\log.txt", "w");
n1=0;
l: if (n1<n)
{
fwrite(all_col[n1]);fwrite(ENDL);
n1++;
goto l;
}
fclose();
messagebox ("Записано "+format(n)+" общих цвета в c:\log.txt");
}
else messagebox ("Не найден цвет общий");
int v[20][20];
loadimage(#a[0][0], "C:\a.bmp");
loadimage(#v[0][0], "C:\v.bmp");
int x1, y1;
int x2, y2;
int n=0, n1;
int all_col[400];
x1=0;
f: if (x1<20)
{
y1=0;
f1: if (y1<20)
{
x2=0;
t: if (x2<20)
{
y2=0;
t1: if (y2<20)
{
if (a[x1][y1] == v[x2][y2])
{
if (a[x1][y1]!=-1)
{
n1=0;
h: if (n1<n)
{
if (all_col[n1]==a[x1][y1])goto er;
n1++;
goto h;
}
all_col[n]=a[x1][y1];
n++;
}
}
er:;
y2++;
goto t1;
}
x2++;
goto t;
}
y1++;
goto f1;
}
x1++;
goto f;
}
if (n>0)
{
fopen ("c:\log.txt", "w");
n1=0;
l: if (n1<n)
{
fwrite(all_col[n1]);fwrite(ENDL);
n1++;
goto l;
}
fclose();
messagebox ("Записано "+format(n)+" общих цвета в c:\log.txt");
}
else messagebox ("Не найден цвет общий");
Так же если надо получить именно общие по позиции цвету пикселя экрана игры можно воспользоваться фильтром динамики в Кибор..
Ну а вообще дело не в finddynamic и зацикливаться на нем не стоит. Я просто привел пример первого в голову что пришло. Еще раз повторю что кому на чем писать это дело лично его.
Я вот использую Visual Studio 97, это первая выпущенная версия Visual Studio и бывает испытываю из за этого некоторые неудобства с поддержкой новых функций. Пока что в принципе эти трудности я так или иначе решаю. Когда уже не смогу решить - перейду на более новую версию.
Так и в Вашем случае. Если устраивают программы которыми пользуетесь и считаете что продемонстрированный Вами софт решит проблему - пользуйтесь. Как увидите что не решает - ищите другой.