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

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

31. 007wan - 30 Августа, 2019 - 09:13:43 - перейти к сообщению
Можно ли это сократить? Суть скрипта в том, что бы количество изображений равномерно распределять по полосе загрузки и выводить статус загрузки какой-либо картинки
Код (Отобразить)
32. Zireael - 30 Августа, 2019 - 17:23:23 - перейти к сообщению
 Цитата:
Можно ли это сократить?

Что непонятного в ответе, который был дан 3 дня назад?
33. 007wan - 30 Августа, 2019 - 23:53:10 - перейти к сообщению
Так я там еще добавил пару строчек...
34. 007wan - 02 Сентября, 2019 - 08:23:31 - перейти к сообщению
Можно пожалуйста пару приемов как сократить код? Только то, что я не знаю Я умею работать с массивами, переменными, проще вызывать функцию и передавать значению в нее итд.
(Добавление)
4 таймера у меня и разные таймеры выполняют разную функцию и нельзя их объединить, они не разделимы, а если даже и объединить, то они не будут успевать выполнять нужную функцию в нужную секунду.
(Добавление)
Но из-за 4 таймера тормозит сильно
35. Dantes3000 - 02 Сентября, 2019 - 08:48:13 - перейти к сообщению

Нажмите для увеличения
36. 007wan - 02 Сентября, 2019 - 08:51:17 - перейти к сообщению
Код (Отобразить)

(Добавление)
Некоторые данные могут быть отсутствовать(переменные итд).
37. Dantes3000 - 02 Сентября, 2019 - 09:02:36 - перейти к сообщению
007wan ,
CODE:
CREATE_TIMER(0, 100)
{
Draw_Rectangle();//рисует прямоугольник при надобности(если не запущено визуальное окно), что бы не сбился во время обнуления экрана или окна
}
//-----------------------------------------------------------------------------------------------------------------------------------------------------
CREATE_TIMER(1, 500)
{
Load_Settings();//загружает записанные данные из файла, что бы во время работы бота получать нужные данные в реальном времени
}
//-----------------------------------------------------------------------------------------------------------------------------------------------------
CREATE_TIMER(2, 1000)//Основная работа бота(ищет, делает что либо в игре)
{
Launch = 1;
Game = window (-1, "", window ("своё", "MozillaWindowClass", -1));
if (Game != 0)
{
EnableWindow(Object_Button2, 1);
First_Point();
Second_Point();
Third_Point();
Fourth_Point();
}
else Stop_Script("Бот остановлен", 1);
Interrupt_Timer:;
}
//-----------------------------------------------------------------------------------------------------------------------------------------------------
CREATE_TIMER(3, 10)//Этот кусок не работает во время всех 3 таймеров. Суть таймера: при наведении на любой контрол заменять курсор мыши на "Руку" в пределах контрола
{
getmouse(Mouse_x, Mouse_y);
for (int i=0; i<sizearray(Object_Checkbox); i++)
{
while(WindowFromPoint(Mouse_x, Mouse_y) == Object_Checkbox[i] || WindowFromPoint(Mouse_x, Mouse_y) == Object_Button1 || WindowFromPoint(Mouse_x, Mouse_y) == Object_Button2)
{
SetCursor(Object_Cursor1);
sleep(10);
getmouse(Mouse_x, Mouse_y);
break;
}
}
}
38. 007wan - 02 Сентября, 2019 - 09:12:51 - перейти к сообщению
Dantes3000 , И чо поменялось?) пробелы и лишние символы убраны?))
(Добавление)
Ай, вижу...
(Добавление)
Всёравно: нагрузка такая велика, что даже Отладчик не все нуное отображает и не работает при наведении мыши на кнопку(-и) и не заменяет курсор. А при остановке бота, он отлючает 1 таймер и всё работает снова
(Добавление)
Завтра попробую спрессовать код, улучшить если получится. Давно я этим не занимался, хотя я пока ничего раньше не замечал, что можно сжать.
(Добавление)
Я всегда старался делать его сжатым, что бы потом не делать это.
(Добавление)
я думаю нужно только 1 таймер использовать, ну максимум 2, но первый таймер для игры будет, а второй для всего прочего и я поставлю флаги(использовать или нет) и буду при необходимости их щелкать.
(Добавление)
Ну или в луп запихать.
39. Zireael - 02 Сентября, 2019 - 19:04:09 - перейти к сообщению
 Цитата:
while(WindowFromPoint(Mouse_x, Mouse_y) == Object_Checkbox[i] || WindowFromPoint(Mouse_x, Mouse_y) == Object_Button1 || WindowFromPoint(Mouse_x, Mouse_y) == Object_Button2)

Не нужно 3 раза вызывать функцию WindowFromPoint. Присвоить результат переменной и сравнивать.
 Цитата:
int handle=WindowFromPoint(Mouse_x, Mouse_y);
while(handle == Object_Checkbox[i] || handle == ...)

 Цитата:
while(WindowFromPoint(Mouse_x, Mouse_y) == Object_Checkbox[i] || WindowFromPoint(Mouse_x, Mouse_y) == Object_Button1 || WindowFromPoint(Mouse_x, Mouse_y) == Object_Button2)
{
SetCursor(Object_Cursor1);
sleep(10);
getmouse(Mouse_x, Mouse_y);
break;
}

И зачем нужен while, если он постоянно прерывается через break без всяких условий?
 Цитата:
Load_Settings();

Можно добавить в таймер 0, только дописать условие через gettime чтобы срабатывало каждые 500 мсек.
40. 007wan - 03 Сентября, 2019 - 05:58:43 - перейти к сообщению
 Zireael пишет:
Не нужно 3 раза вызывать функцию WindowFromPoint. Присвоить результат переменной и сравнивать.
Ай, блин точно. Он е проверяет условие и крутит, пока не будет истина или ложное условие.

Powered by ExBB FM 1.0 Final