TedBundy |
Отправлено: 17 Августа, 2015 - 00:51:09
|
Прохожий
Покинул форум
Сообщений всего: 7
Дата рег-ции: Авг. 2015
Репутация: 0
|
CODE:
главный цикл с которого всё начинается
в нём проводятся предварительные функции перед боем, т.е поиск
=======
if (findimage(1, #Image_1[0][0], 0, #PosX_1[0], #PosY_1[0], 0, 0, 800, 599, w)==1) //цикл начинается если появляется это изображение иначе программа уходит в главный цикл
{
loop:
if(findimage(1, #Image_8[0][0], 0, #PosX_8[0], #PosY_8[0], 0, 0, 800, 599, w)==1) проверять если это изображение, если есть то уходить в другой цикл
{
goto n;
}
if(findimage(1, #Image_10[0][0], 0, #PosX_10[0], #PosY_10[0], 0, 0, 800, 599, w)==1)
проверить ещё одно изображение если есть то уходить в главный цикл
{
goto n;
}
else { если этих изображений нет то сделать нажатие кнопок
sleep(rand(1000,2000));
mouse(LEFT, 97, 525, w);//нажатие на кнопку
sleep(rand(600,900));
mouse(LEFT, 68, 417, w);//бросить pokeball
goto loop; после нажатия кнопок заного начать проверять и так пока не найдёт не уходить в главный цикл
}
===========
конец главного цикла
=======
(Добавление)
ПРоблема в том что он не уходит в главный цикл n и продолжает делать эти действия
CODE:
sleep(rand(1000,2000));
mouse(LEFT, 97, 525, w);//нажатие на кнопку
sleep(rand(600,900));
mouse(LEFT, 68, 417, w);//бросить pokeball
(Отредактировано автором: 17 Августа, 2015 - 00:52:11) |
|
|
TedBundy |
Отправлено: 17 Августа, 2015 - 04:51:53
|
Прохожий
Покинул форум
Сообщений всего: 7
Дата рег-ции: Авг. 2015
Репутация: 0
|
CODE:
win w=window ("Pokйmon World Online BETA v1.95.3", "ThunderRT6FormDC", -1);
win v=window (-1, "ThunderRT6PictureBoxDC", window ("Pokйmon World Online BETA v1.95.3", "ThunderRT6FormDC", -1));
int Image_1[78][26];
int Image_2[39][14];
int Image_3[63][14];
int Image_4[49][14];
int Image_5[56][14];
int Image_6[44][14];
int Image_7[43][14];
int Image_8[43][14];
int Image_9[64][20];
int Image_10[47][10];
loadimage (#Image_10[0][0], "C:\Users\zib\Documents\PWO\Image_successwhite.bmp");
loadimage (#Image_9[0][0], "C:\Users\zib\Documents\PWO\Image_plzwait.bmp");
loadimage (#Image_8[0][0], "C:\Users\zib\Documents\PWO\Image_success.bmp");
loadimage (#Image_7[0][0], "C:\Users\zib\Documents\PWO\Image_fearow.bmp");
loadimage (#Image_6[0][0], "C:\Users\zib\Documents\PWO\Image_raticate.bmp");
loadimage (#Image_5[0][0], "C:\Users\zib\Documents\PWO\Image_sandslash.bmp");
loadimage (#Image_4[0][0], "C:\Users\zib\Documents\PWO\Image_spearov.bmp");
loadimage (#Image_3[0][0], "C:\Users\zib\Documents\PWO\Image_sandshrew.bmp");
loadimage (#Image_2[0][0], "C:\Users\zib\Documents\PWO\Image_voltorb.bmp");
loadimage (#Image_1[0][0], "C:\Users\zib\Documents\PWO\Image_0.bmp");
int PosX_1[512], PosY_1[512];
int PosX_2[512], PosY_2[512];
int PosX_3[512], PosY_3[512];
int PosX_4[512], PosY_4[512];
int PosX_5[512], PosY_5[512];
int PosX_6[512], PosY_6[512];
int PosX_7[512], PosY_7[512];
int PosX_8[512], PosY_8[512];
int PosX_9[512], PosY_9[512];
int PosX_10[512], PosY_10[512];
int a=1;
int b=0;
int i=0;
n:
run();
if (findimage(1, #Image_1[0][0], 0, #PosX_1[0], #PosY_1[0], 0, 0, 800, 599, w)==1)
{
sandshrew();
voltorb();
//spearov();
sandslash();
fearow();
raticate();
if(findimage(1, #Image_8[0][0], 0, #PosX_8[0], #PosY_8[0], 0, 0, 800, 599, w)==1)
{
goto n;
}
if(findimage(1, #Image_10[0][0], 0, #PosX_10[0], #PosY_10[0], 0, 0, 800, 599, w)==1)
{
goto n;
}
else {
sleep(rand(1000,2000));
mouse(LEFT, 97, 525, w);//нажимает BAG
sleep(rand(600,900));
mouse(LEFT, 68, 417, w);//нажимает pokeball
}
}
//pokeball();
goto n;
function liave()
{
mouse(LEFT, 261, 527, w);
sleep(rand(600,900));
mouse(LEFT, 261, 527, w);
}
function run(){
if(a==1)
{
keydown('a', 1, 1, w);
//sendkey('a',w);
sleep(rand(700,1000));
//sendkey('a',w);
keyup('a', 1, 1, w);
//sleep(rand(400,500));
//sendkey('d',w);
keydown('d', 1, 1, w);
sleep(rand(900,1100));
//sendkey('d',w);
keyup('d', 1, 1, w);
}
}
function ataka();
{
mouse(LEFT, 97, 464, w);
sleep(rand(600,900));
mouse(LEFT, 97, 464, w);
sleep(rand(600,900));
mouse(LEFT, 261, 467, w);
sleep(rand(600,900));
}
function voltorb(){
if(findimage(1, #Image_2[0][0], 0, #PosX_2[0], #PosY_2[0], 0, 0, 800, 600, w)==1)
{
ataka();
//liave();
}
}
function sandshrew(){
if(findimage(1, #Image_3[0][0], 0, #PosX_3[0], #PosY_3[0], 0, 0, 800, 600, w)==1){
ataka();
//liave()
}
}
function spearov(){
if(findimage(1, #Image_4[0][0], 0, #PosX_4[0], #PosY_4[0], 0, 0, 800, 600, w)==1)
{
ataka();
//liave();
}
}
function sandslash(){
if(findimage(1, #Image_5[0][0], 0, #PosX_5[2], #PosY_5[2], 0, 0, 800, 600, w)==1)
{
ataka();
//liave()
}
}
function raticate(){
if(findimage(1, #Image_6[0][0], 0, #PosX_6[0], #PosY_6[0], 0, 0, 800, 600, w)==1)
{
ataka();
//liave();
}
}
function fearow()
{
if(findimage(1, #Image_7[0][0], 0, #PosX_7[0], #PosY_7[0], 0, 0, 800, 600, w)==1)
{
ataka();
//liave();
}
}
(Отредактировано автором: 17 Августа, 2015 - 04:53:45) |
|
|
Kibor |
Отправлено: 17 Августа, 2015 - 05:38:50
|
Эксперт
Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
CODE:win w=window ("Pokйmon World Online BETA v1.95.3", "ThunderRT6FormDC", -1);
win v=window (-1, "ThunderRT6PictureBoxDC", window ("Pokйmon World Online BETA v1.95.3", "ThunderRT6FormDC", -1));
int Image_1[78][26];
int Image_2[39][14];
int Image_3[63][14];
int Image_4[49][14];
int Image_5[56][14];
int Image_6[44][14];
int Image_7[43][14];
int Image_8[43][14];
int Image_9[64][20];
int Image_10[47][10];
loadimage (#Image_10[0][0], "C:\Users\zib\Documents\PWO\Image_successwhite.bmp");
loadimage (#Image_9[0][0], "C:\Users\zib\Documents\PWO\Image_plzwait.bmp");
loadimage (#Image_8[0][0], "C:\Users\zib\Documents\PWO\Image_success.bmp");
loadimage (#Image_7[0][0], "C:\Users\zib\Documents\PWO\Image_fearow.bmp");
loadimage (#Image_6[0][0], "C:\Users\zib\Documents\PWO\Image_raticate.bmp");
loadimage (#Image_5[0][0], "C:\Users\zib\Documents\PWO\Image_sandslash.bmp");
loadimage (#Image_4[0][0], "C:\Users\zib\Documents\PWO\Image_spearov.bmp");
loadimage (#Image_3[0][0], "C:\Users\zib\Documents\PWO\Image_sandshrew.bmp");
loadimage (#Image_2[0][0], "C:\Users\zib\Documents\PWO\Image_voltorb.bmp");
loadimage (#Image_1[0][0], "C:\Users\zib\Documents\PWO\Image_0.bmp");
int PosX, PosY;
int a=1;
int b=0;
int i=0;
n:
run();
if (findimage(1, #Image_1[0][0], 0, #PosX, #PosY, 0, 0, 800, 599, w)==1)
{
sandshrew();
voltorb();
//spearov();
sandslash();
fearow();
raticate();
if(findimage(1, #Image_8[0][0], 0, #PosX, #PosY, 0, 0, 800, 599, w)==1)goto n;
if(findimage(1, #Image_10[0][0], 0, #PosX, #PosY, 0, 0, 800, 599, w)==1)goto n;
sleep(rand(1000,2000));
mouse(LEFT, 97, 525, w);//нажимает BAG
sleep(rand(600,900));
mouse(LEFT, 68, 417, w);//нажимает pokeball
}
//pokeball();
sleep(20);
goto n;
function liave()
{
mouse(LEFT, 261, 527, w);
sleep(rand(600,900));
mouse(LEFT, 261, 527, w);
}
function run(){
if(a==1)
{
keydown('a', 1, 1, w);
//sendkey('a',w);
sleep(rand(700,1000));
//sendkey('a',w);
keyup('a', 1, 1, w);
//sleep(rand(400,500));
//sendkey('d',w);
keydown('d', 1, 1, w);
sleep(rand(900,1100));
//sendkey('d',w);
keyup('d', 1, 1, w);
}
}
function ataka();
{
mouse(LEFT, 97, 464, w);
sleep(rand(600,900));
mouse(LEFT, 97, 464, w);
sleep(rand(600,900));
mouse(LEFT, 261, 467, w);
sleep(rand(600,900));
}
function voltorb(){
if(findimage(1, #Image_2[0][0], 0, #PosX, #PosY, 0, 0, 800, 600, w)==1)
{
ataka();
//liave();
}
}
function sandshrew(){
if(findimage(1, #Image_3[0][0], 0, #PosX, #PosY, 0, 0, 800, 600, w)==1){
ataka();
//liave()
}
}
function spearov(){
if(findimage(1, #Image_4[0][0], 0, #PosX, #PosY, 0, 0, 800, 600, w)==1)
{
ataka();
//liave();
}
}
function sandslash(){
if(findimage(1, #Image_5[0][0], 0, #PosX, #PosY, 0, 0, 800, 600, w)==1)
{
ataka();
//liave()
}
}
function raticate(){
if(findimage(1, #Image_6[0][0], 0, #PosX, #PosY, 0, 0, 800, 600, w)==1)
{
ataka();
//liave();
}
}
function fearow()
{
if(findimage(1, #Image_7[0][0], 0, #PosX, #PosY, 0, 0, 800, 600, w)==1)
{
ataka();
//liave();
}
}
так может?.. |
|
|
TedBundy |
Отправлено: 17 Августа, 2015 - 13:27:51
|
Прохожий
Покинул форум
Сообщений всего: 7
Дата рег-ции: Авг. 2015
Репутация: 0
|
Если мне не создавать ещё 1 цикл то не получится.
Когда находится это изображение:
CODE:
if (findimage(1, #Image_1[0][0], 0, #PosX, #PosY, 0, 0, 800, 599, w)==1)
Это означает что появился бой, после он начинает перебирать все покемонов по имени:
CODE:
sandshrew();
voltorb();
//spearov();
sandslash();
fearow();
raticate();
Если он их находит кроме того что закомментен, это как бы неизвестный покемон то проводит по ним атаку, а когда появляется неизвестный покемон(не находится изображения названия покемона в каждых функциях) то нужно включать цикл в котором он будет нажимать 2 кнопки тем самым бросая покебол в покемона, но покемон не сразу ловится и по этому он может так делать и 20 раз из-за этого надо в цикле проверять наличия изображения что покемон захвачен и только тогда прекращать цикл.
а без доп. цикла естественно он 1 раз так делает и всё
(Добавление)
Можно ли как-то сделать так что если все эти функции сработали и изобр. не найдено:
CODE:
sandshrew();
voltorb();
//spearov();
sandslash();
fearow();
raticate();
Вернули там -1 т.е отследить что все 5 функций сработали и только тогда включать цикл.
А если одна из них найдёт изображение то цикл не будет включаться и по идее всё должно работать. В каждой функции добавил если он срабатывает то увеличивать i++.
CODE:
win w=window ("Pokémon World Online BETA v1.95.3", "ThunderRT6FormDC", -1);
win v=window (-1, "ThunderRT6PictureBoxDC", window ("Pokémon World Online BETA v1.95.3", "ThunderRT6FormDC", -1));
int Image_1[78][26];
int Image_2[39][14];
int Image_3[63][14];
int Image_4[49][14];
int Image_5[56][14];
int Image_6[44][14];
int Image_7[43][14];
int Image_8[43][14];
int Image_9[64][20];
int Image_10[47][10];
loadimage (#Image_10[0][0], "C:\Users\zib\Documents\PWO\Image_successwhite.bmp");
loadimage (#Image_9[0][0], "C:\Users\zib\Documents\PWO\Image_plzwait.bmp");
loadimage (#Image_8[0][0], "C:\Users\zib\Documents\PWO\Image_success.bmp");
loadimage (#Image_7[0][0], "C:\Users\zib\Documents\PWO\Image_fearow.bmp");
loadimage (#Image_6[0][0], "C:\Users\zib\Documents\PWO\Image_raticate.bmp");
loadimage (#Image_5[0][0], "C:\Users\zib\Documents\PWO\Image_sandslash.bmp");
loadimage (#Image_4[0][0], "C:\Users\zib\Documents\PWO\Image_spearov.bmp");
loadimage (#Image_3[0][0], "C:\Users\zib\Documents\PWO\Image_sandshrew.bmp");
loadimage (#Image_2[0][0], "C:\Users\zib\Documents\PWO\Image_voltorb.bmp");
loadimage (#Image_1[0][0], "C:\Users\zib\Documents\PWO\Image_0.bmp");
int PosX_1[512], PosY_1[512];
int PosX_2[512], PosY_2[512];
int PosX_3[512], PosY_3[512];
int PosX_4[512], PosY_4[512];
int PosX_5[512], PosY_5[512];
int PosX_6[512], PosY_6[512];
int PosX_7[512], PosY_7[512];
int PosX_8[512], PosY_8[512];
int PosX_9[512], PosY_9[512];
int PosX_10[512], PosY_10[512];
int a=1;
int b=0;
int i=0;
n:
a=1;
run();
if (findimage(1, #Image_1[0][0], 0, #PosX_1[0], #PosY_1[0], 0, 0, 800, 599, w)==1)
{
i=0;
sandshrew();
voltorb();
//spearov();
sandslash();
fearow();
raticate();
loop:if(i==0)
{
messagebox(i);
if(findimage(1, #Image_8[0][0], 0, #PosX_8[0], #PosY_8[0], 0, 0, 800, 599, w)==1) goto n;
if(findimage(1, #Image_10[0][0], 0, #PosX_10[0], #PosY_10[0], 0, 0, 800, 599, w)==1) goto n;
sleep(rand(1000,2000));
mouse(LEFT, 97, 525, w);//íàæèìàåò BAG
sleep(rand(600,900));
mouse(LEFT, 68, 417, w);//íàæèìàåò pokeball
goto loop;
}
}
//pokeball();
goto n;
function liave()
{
mouse(LEFT, 261, 527, w);
sleep(rand(600,900));
mouse(LEFT, 261, 527, w);
}
function run(){
if(a==1)
{
keydown('a', 1, 1, w);
//sendkey('a',w);
sleep(rand(700,1000));
//sendkey('a',w);
keyup('a', 1, 1, w);
//sleep(rand(400,500));
//sendkey('d',w);
keydown('d', 1, 1, w);
sleep(rand(900,1100));
//sendkey('d',w);
keyup('d', 1, 1, w);
}
}
function ataka();
{
mouse(LEFT, 97, 464, w);
sleep(rand(600,900));
mouse(LEFT, 97, 464, w);
sleep(rand(600,900));
mouse(LEFT, 261, 467, w);
sleep(rand(600,900));
}
function voltorb(){
if(findimage(1, #Image_2[0][0], 0, #PosX_2[0], #PosY_2[0], 0, 0, 800, 600, w)==1)
{
i++;
ataka();
//liave();
}
}
function sandshrew(){
if(findimage(1, #Image_3[0][0], 0, #PosX_3[0], #PosY_3[0], 0, 0, 800, 600, w)==1){
i++;
ataka();
//liave()
}
}
function spearov(){
if(findimage(1, #Image_4[0][0], 0, #PosX_4[0], #PosY_4[0], 0, 0, 800, 600, w)==1)
{
i++;
ataka();
//liave();
}
}
function sandslash(){
if(findimage(1, #Image_5[0][0], 0, #PosX_5[2], #PosY_5[2], 0, 0, 800, 600, w)==1)
{
i++;
ataka();
//liave()
}
}
function raticate(){
if(findimage(1, #Image_6[0][0], 0, #PosX_6[0], #PosY_6[0], 0, 0, 800, 600, w)==1)
{
i++;
ataka();
//liave();
}
}
function fearow()
{
if(findimage(1, #Image_7[0][0], 0, #PosX_7[0], #PosY_7[0], 0, 0, 800, 600, w)==1)
{
i++;
ataka();
//liave();
}
}
Вот такой когд, текстовое сообщение правильно показывает что 0, значит условие срабатывает, он начинает кидать покебол, но когда появляеться изображение одно из них:
CODE:
if(findimage(1, #Image_8[0][0], 0, #PosX_8[0], #PosY_8[0], 0, 0, 800, 599, w)==1) goto n;
if(findimage(1, #Image_10[0][0], 0, #PosX_10[0], #PosY_10[0], 0, 0, 800, 599, w)==1) goto n;
Он гад не уходит из цикла в другой цикл.
(Добавление)
CODE:
if(findimage(1, #Image_8[0][0], 0, #PosX_8[0], #PosY_8[0], 0, 0, 800, 599, w)==1){
messagebox("Изображение найдено");
goto n;
}
Мда добавил месаджбокс, и он не появляется, а цикл продолжает работать, походу картинку не находит .... чет я ступил видимо, сама картинка простая как и все остальные только появляется в разных местах и там видимо часть пикселей отличается, походу придётся как то по другому искать изображение |
|
|
Kibor |
Отправлено: 17 Августа, 2015 - 14:39:47
|
Эксперт
Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
не надо делать это все в одном коде. надо использовать функции и return
CODE:if (findimage(1, #Image_1[0][0], 0, #PosX, #PosY, 0, 0, 800, 599, w)==1)
{
if (sandshrew()==1)goto a;
if (voltorb()==1)goto a;
if (sandslash()==1)goto a;
if (fearow()==1)goto a;
if (raticate()==1)goto a;
нажимать_2_кнопки ();
a:;
}
function нажимать_2_кнопки ()
{
sleep(rand(1000,2000));
mouse(LEFT, 97, 525, w);//нажимает BAG
sleep(rand(600,900));
mouse(LEFT, 68, 417, w);//нажимает pokeball
}
function raticate(){
if(findimage(1, #Image_6[0][0], 0, #PosX_6[0], #PosY_6[0], 0, 0, 800, 600, w)==1)
{
i++;
ataka();
return 1;
}
return -1;
}
примерная схема. заточите ее под свои нужды.
TedBundy пишет: Мда добавил месаджбокс, и он не появляется, а цикл продолжает работать, походу картинку не находит .... чет я ступил видимо, сама картинка простая как и все остальные только появляется в разных местах и там видимо часть пикселей отличается, походу придётся как то по другому искать изображение
используйте расширенную findimage не полное совпадение.. |
|
|
Kibor |
Отправлено: 17 Августа, 2015 - 14:48:41
|
Эксперт
Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
разберитесь с графическим редактором кибор(для просмотра ссылки Вам необходимо авторизоваться) и findimage
Цитата: Функцию findimage так же можно использовать для поиска изображений имеющих отклонения цветов от исходного изображения, или по неполному (к примеру частично перекрытому другим изображением). В этом случае findimage принимает 17 параметров:
findimage(1, #Image_0[0][0], 0, #PosX_0[0], #PosY_0[0], 0, 0, 1366, 768, Красный_меньше_на, Красный_больше_на, Зеленый_меньше_на, Зеленый_больше_на, Синий_меньше_на, Синий_больше_на, Процент_совпадений_достаточный_для_идентификации, флаг_не_искать_в_области_где_найдено, -1);
Объяснение:
Каждый цвет состоит из трех основных цветов - Красный(R), Зеленый(G), Синий(B). (R, G, B). Каждый из этих трех цветов обозначается числом от 0 до 255. К примеру цвет (0, 0, 0) будет черный, а (255, 255, 255) белым. (255, 0, 0) красным, а (255, 50, 70) красным с примесью зеленого и синего.
Обозначение параметров:
Красный_меньше_на - тут указываем число НА которое красный компонент может быть меньше того что находится в поиске.
Красный_больше_на - тут указываем число НА которое красный компонент может быть больше того что находится в поиске.
Зеленый_меньше_на, Зеленый_больше_на, Синий_меньше_на, Синий_больше_на аналогично.
Процент_совпадений_достаточный_для_идентификации - процент от общего количества пикселей участвующих в поиске достаточный для того что бы изображение считалось совпавшим. 100 - необходимо что бы все изображение совпало. 20 - достаточно совпадения одной пятой части изображения. Применять для поиска изображений которые могут частично быть перекрыты или часть цвета пикселей может выйти за пределы колебаний описанных вышеприведенными параметрами.
флаг_не_искать_в_области_где_найдено - если 1 больше не искать в областях на экране по размеру искомого рисунка где найден уже рисунок
Пример:
findimage(1, #Image_0[0][0], 0, #PosX_0[0], #PosY_0[0], 0, 0, 1366, 768, 20, 50, 50, 70, 10, 20, 33, 1, -1);
Ищем изображение совпавшее хотя бы на одну треть от того что ищем с колебаниями ДО:
меньше на 20 - больше на 50 (красный), меньше на 50 - больше на 70 (Зеленый), меньше на 10 - больше на 20 (Синий). |
|
|
TedBundy |
Отправлено: 17 Августа, 2015 - 14:53:39
|
Прохожий
Покинул форум
Сообщений всего: 7
Дата рег-ции: Авг. 2015
Репутация: 0
|
ок, буду разбираться, просто сразу не заметно было что изображения разные
(Добавление)
Чет я разобраться не могу с отклонением цветов, как мне вообще определить какие цвета меняются, визуально на глаз картинки хоть и появляются в разных местах, но они идентичны даже фон одинаковый, какие мне отклонения искать не могу понять.
Вот пример который я скидывал [img](для просмотра ссылки Вам необходимо авторизоваться) /img]
тут изображения в разных местах как я предполагаю у них меняется фон, я их искал по образцу
и
на точное совпадение.
Пытался сделать как тут(для просмотра ссылки Вам необходимо авторизоваться) с надписью, но это не мой вариант тупо не получается из-за игры, как только надпись появляется бой заканчивается картинка исчезает и я не могу сделать аналогично как с l2
Цитата: Теперь нам надо в игре побегать и покрутить камерой что бы фон под искомой надписью менялся. |
|
|
|