Кибор » Кибор - Интегрированная среда разработки ботов » Вопросы и решение проблем » Оптимизация кода

Страниц (3): [1] 2 3 »
 

1. Vayy - 17 Марта, 2014 - 13:07:47 - перейти к сообщению
Добрый вечер. Написал скриптик по материалам с сайта и форума. Но скорость работы его оставляет желать лучшего - задержки бывают в секундах, особенно после 4-5 прогона скрипта. Что посоветуете?
ПС. Пробовал компилировать - помогло, но не очень.
ПСС. Название окна скрыл из личных побуждений Радость
PHP:
win w=window ("Название окна", "Игра", -1);//Указатель на окно игры
int Image_0[42][1];//Масив, в котором хранится изображение искомого моба
int Image_skilN[21][24];
int Image_HPmob[5][18];
loadimage (#Image_0[0][0], "D:\Image_0.bmp");//Загрузка изображения с .bmp файла в память
loadimage (#Image_skilN[0][0], "D:\Image_skilN.bmp");
loadimage (#Image_HPmob[0][0], "D:\Image_HPmob.bmp");
int PosX_0[1];int PosY_0[1];//Переменные, в которые записаны будут координаты X и Y левого верхнего угла найденой картинки моба
int PosX_skilN[1];int PosY_skilN[1];
int PosX_HPmob[1];int PosY_HPmob[1];

poisk:
if (findimage(1, #Image_0[0][0], 0, #PosX_0[0], #PosY_0[0], 0, 0, 1594, 872, 0, 0, 0, 0, 0, 0, 20, -1, w)==1) // Функция поиска изображения в окне игры
{
int x1,y1;
x1 = PosX_0[0]+imagewidth(#Image_0[0][0])/2;
y1 = PosY_0[0]+imageheight(#Image_0[0][0])/2;
mouse (LEFT, x1, y1+30, 1, w);
pause(100);
mouse (LEFT, x1, y1+30, 1, w);
pause(1000);
goto farm; //К фарму моба
}
else
{
lev:
keydown('a');//нажать влево
sleep(500);
keyup('a');//отпустить влево
goto poisk;
}

farm:
if (findimage(1, #Image_skilN[0][0], 0, #PosX_skilN[0], #PosY_skilN[0], 0, 0, 1594, 872, 0, 0, 0, 0, 0, 0, 0, -1, w)==1) // Функция поиска изображения в окне игры
{
if (findimage(1, #Image_HPmob[0][0], 0, #PosX_HPmob[0], #PosY_HPmob[0], 0, 0, 1594, 872, 0, 0, 0, 0, 0, 0, 30, -1, w)==1)
{
sleep(50);
key(51); //Бьем моба, пока хп не упадет
sleep(2000);
goto farm;
}
else
{
sleep(100);
key(70); //собираем дроп
goto poisk;
}

}
else
{
goto lev; //К повороту влево для поиска моба
}
2. RussianRemaker - 18 Марта, 2014 - 11:07:16 - перейти к сообщению
История наблюдений использования Кибор (личный опыт):
pause и sleep замедляют выполнение скрипта - это априори, но они во многих случаях бывают очень нужны и от этого никуда не деться.
Можно скорректировать скрипт так, чтобы задержки не были излишними.
findimage по любому тормозит, если указана большая территория для поиска с условиями.
С этим тоже можно совладать, если грамотно понизить область поиска и изменить условия.
В качестве альтернативы можно использовать циклы с вызовом функций, где условия обрабатываются по минимальной схеме.

PS:
 Цитата:
Название окна скрыл

Патологоанатом: - Пациент был бы жив, если бы у него был паспорт...
Интерн: - ???
... (Отобразить)

PSS:
Я не доктор, я только учусь... (...скальпель, тампон, спирт, огурец...)
3. HACMOPK - 18 Марта, 2014 - 12:15:50 - перейти к сообщению
1.Рекомендуется использовать.
sleep <500
pause >500
2.Для красоты использовать массив подробнее смотри тут на скорость не знаю влияет или нет.
3. Вот
Это (Отобразить)
так и надо или можно mousedbl() двойной клик.
4.А в остальном.
Патологоанатом: - Пациент был бы жив, если бы у него был паспорт...
Интерн: - ??? )))
4. Vayy - 18 Марта, 2014 - 12:17:12 - перейти к сообщению
Спасибо за советы - как возможно уже снизил всё, что Вы описали! Улыбка
Ещё один вопрос. Вот это:
CODE:
int Image_0[42][1];//Масив, в котором хранится изображение искомого моба
int Image_skilN[21][24];
int Image_HPmob[5][18];
loadimage (#Image_0[0][0], "D:\Image_0.bmp");//Загрузка изображения с .bmp файла в память
loadimage (#Image_skilN[0][0], "D:\Image_skilN.bmp");
loadimage (#Image_HPmob[0][0], "D:\Image_HPmob.bmp");
int PosX_0[1];int PosY_0[1];//Переменные, в которые записаны будут координаты X и Y левого верхнего угла найденой картинки моба
int PosX_skilN[1];int PosY_skilN[1];
int PosX_HPmob[1];int PosY_HPmob[1];


Не сильно грузят процесс? А то я добавил парочку Радость Теперь вообще по 5 секунд задержки.
(Добавление)
 RussianRemaker пишет:
Патологоанатом: - Пациент был бы жив, если бы у него был паспорт...
Интерн: - ???
... (Отобразить)

PSS:
Я не доктор, я только учусь... (...скальпель, тампон, спирт, огурец...)


 HACMOPK пишет:
4.А в остальном.
Патологоанатом: - Пациент был бы жив, если бы у него был паспорт...
Интерн: - ??? )))


убедили Радость
CODE:
win w=window ("- ArcheAge - Mar 4 2014 (12:12:09) Àíòàëëîí", "ArcheAge", -1);

Мне не жалко Хорошо
5. HACMOPK - 18 Марта, 2014 - 12:25:40 - перейти к сообщению
Чем больше область поиска и количество объектов тем дольше будет поиск.
Загрузи что ищешь здесь (Отобразить)
6. Vayy - 18 Марта, 2014 - 12:28:58 - перейти к сообщению
 HACMOPK пишет:
Чем больше область поиска и количество объектов тем дольше будет поиск.
Загрузи что ищешь здесь (Скрыть)
int Image_0[42][1]


Ниже ведь строчка загрузки изображения. Или сюда выложить саму картинку?
7. HACMOPK - 18 Марта, 2014 - 12:29:45 - перейти к сообщению
не 11 гиг качать жёстко.
(Добавление)
картинку
8. Vayy - 18 Марта, 2014 - 12:32:47 - перейти к сообщению
9. HACMOPK - 18 Марта, 2014 - 12:34:44 - перейти к сообщению
 Vayy пишет:

задана область поиска по всему экрану или как. красная полоска может появится где угодно?
10. Vayy - 18 Марта, 2014 - 12:41:42 - перейти к сообщению
 HACMOPK пишет:
задана область поиска по всему экрану или как. красная полоска может появится где угодно?


Да. Это ХП моба. Полностью весь экран сканирует на присутствие моба. Если он замечен, то кликает по нему, а далее идет его уничтожение.
(Добавление)
Очень часто стал зависать кибор (не отвечает окно). С чем связано может быть? Вроде зацикливания нет.

Powered by ExBB FM 1.0 Final