Автоматизация и боты

 Помощь      Поиск      Пользователи
Сайт Кибор     Программируемый кликер Кибор     Видео обучение     Заказать бот

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

> Описание: крашрепорт
DeLiberate
Отправлено: 17 Февраля, 2016 - 22:54:29
Post Id



Пользователь
Участник


Покинул форум
Сообщений всего: 63
Дата рег-ции: Янв. 2015  
Репутация: 0




Сам краш (Отобразить)

Событие (Отобразить)

кусок скрипта (Отобразить)

Краши начались после изменения строчек: (Отобразить)

Лог кибора (Отобразить)

Странно, после второй перезагрузки компьютера все заработало.
Ну раз написал, пускай будет.

(Отредактировано автором: 17 Февраля, 2016 - 23:07:18)

 
 Top
Kibor
Отправлено: 18 Февраля, 2016 - 00:17:05
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8227
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




 Цитата:
enabletimer(0);
{
pause (1000);

скобка без пары


 Цитата:
fopen ("C:\TD_log.txt", "w");

не закрыт файл


 Цитата:
else
{
pause(5000);
endbattle:

mouse(LEFT, 1014, 682);
beep(300,40);
mouse(LEFT, 1014, 682);
pause(200);
//logging
// где закрытие скобкой блока??
function spots_find();

ну и еще наверно есть ошибки..
 
 Top
DeLiberate
Отправлено: 18 Февраля, 2016 - 01:44:07
Post Id



Пользователь
Участник


Покинул форум
Сообщений всего: 63
Дата рег-ции: Янв. 2015  
Репутация: 0




 Цитата:
ну и еще наверно есть ошибки..

Я был бы рад, если бы это было так.
Но ошибок в синтаксисе не было, а кибор вылетал.
Дело в том, что это отрывки кода, т.к. ограничение 6кб -> ну и я так криво скопировал код. Растерялся
На будущее, куда лучше заливать архив с кодом?
 
 Top
Kibor
Отправлено: 18 Февраля, 2016 - 01:49:35
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8227
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




 DeLiberate пишет:
Я был бы рад, если бы это было так.

я пишу то что вижу в этом коде.
странно что этот скрипт вообще работает.

на любой файлообменник..
 
 Top
DeLiberate
Отправлено: 18 Февраля, 2016 - 02:24:57
Post Id



Пользователь
Участник


Покинул форум
Сообщений всего: 63
Дата рег-ции: Янв. 2015  
Репутация: 0




 Kibor пишет:
 DeLiberate пишет:
Я был бы рад, если бы это было так.

я пишу то что вижу в этом коде.
странно что этот скрипт вообще работает.

на любой файлообменник..

В следующий раз буду внимательней при копировании.
Вот весь код, если надо

(Отредактировано автором: 18 Февраля, 2016 - 02:28:31)

 
 Top
Kibor
Отправлено: 18 Февраля, 2016 - 03:07:43
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8227
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




Обозначение блоков фигурных скобок.
тут можно почитать зачем нужны цифры напротив скобок.. и как найти не правильные скобки..

так же нашел критически не верное программирование работы с файлом.

почему fclose(); находится не в связке с fopen??
то есть где то далеко в блоке else.....
закрытие файла без его открытия ведет к краху.
читайте как правильно открывать закрывать файлы..

зачем столько круглых скобок?? не ошибка, но...
im=(msn-mso); ????????

скрипт построен не удобно..

переношу пока в вопросы ответы..
 
 Top
DeLiberate
Отправлено: 18 Февраля, 2016 - 04:44:53
Post Id



Пользователь
Участник


Покинул форум
Сообщений всего: 63
Дата рег-ции: Янв. 2015  
Репутация: 0




 Kibor пишет:
почему fclose(); находится не в связке с fopen??

Потому, что функция fclose(); вызывается, только когда программа завершает работу, или начинает её заново и разницы особой не вижу.
 Kibor пишет:
то есть где то далеко

файл открывается в начале, т.к. записывал в него из разных частей кода, а каждый раз открывать и закрывать его не вижу смысла.
 Kibor пишет:
зачем столько круглых скобок?

Когда то были ошибки, из-за неправильно расставленных скобок - теперь паранойя.
На счет скобок: мне удобнее писать в нотпаде++, там наглядей.

Раз вопросы/ответы, то у меня есть один Улыбка
Так работает:
CODE:

textout (6, 1682, 100," " +formatwi(getwindow()), 2);

Так не работает
CODE:

win actwind=getwindow();
textout (6, 1682, 100," "+format(actwind.class), 2);

И так тоже нет
CODE:
win actwind=getwindow();
textout (6, 1682, 100, actwind.class, 2);

Как вывести название класса активного окна?
(Добавление)
Покажите на вот этом примере, если не затруднит.
CODE:
win wind=window (-1, "GeckoFPSandboxChildWindow", window ("Король Башен: TD - Mozilla Firefox", "MozillaWindowClass", -1));
win actwind=(getwindow());
activate(wind);
int okno=formatwi(wind);
int actw=formatwi(getwindow());


loop ();
{
if (getkeystate(20)==1)
{
goto quit;
}
textout (4, 1542, 100,"актив_инт"+format(actw), 2);
textout (5, 1542, 130,"флш_инт"+format(okno), 2);
textout (6, 1542, 160,"актив win"+format(actwind.name), 2);
textout (7, 1542, 190,"флш_win"+format(wind), 2);

}
quit:

(Добавление)
разобрался, все понятно.
 
 Top
Kibor
Отправлено: 18 Февраля, 2016 - 05:35:40
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8227
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




 DeLiberate пишет:
На счет скобок: мне удобнее писать в нотпаде++, там наглядей.

Да?
Тогда почему он не показал что function check_and_force() имеет лишнюю закрывающую скобку? откройте в кибор , увидите и исправите.

 DeLiberate пишет:
Раз вопросы/ответы, то у меня есть один

 DeLiberate пишет:
И так тоже нет
CODE:
win actwind=getwindow();
textout (6, 1682, 100, actwind.class, 2);
loop()sleep(500);

прекрасно работает.. если добавить петлю что бы порсле выполнения этих строк кибор не завершил работу..
так же такая оптимизация улучшит работу......
CODE:
win actwind;
string t="";
loop()
{
actwind=getwindow();
if (actwind.class!=t)
{
t=actwind.class;
textout (0, 182, 100, actwind.class, 1);
}
sleep(100);
}


actwind.class имеет тип string... format не нужен и будет ошибкой






=====================================



Ну а если уже серьезно говорить о самой ошибке, то не стоит приписывать крах программы Кибор сразу к ошибке в программе...

Кибор это среда разработки и сам не правильный код легко вызывает такие ошибки даже при правильном синтаксисе...

пример..
CODE:
int a[5];
a[4657465]=55;

ошибки синтаксиса нет..
но... есть ошибка обращения к памяти c0000005
. думаю что в чем ошибка программиста ясно... обращение к не выделенной памяти....

при выполнение такого скрипта кибор крашится с вышеупомянутой ошибкой.. и это не ошибка в кибор.

теперь ладно... разберем ваш скрипт на наличие таких багов программирования...
берем массивы
CODE:
int coordsx[40];
int coordsy[40];


берем часть кода
 Цитата:
loop (coordn);
{
findimage(1, #tower_spot[0][0], 0, #coordsx[found_spots], #coordsy[found_spots], #coordsx[found_spots], #coordsy[found_spots], 1393, 852, 0, 0, 0, 0, 0, 0, 100, 1, -1);
found_spots++;
}

смотрим где обнуляется переменная found_spots...
CODE:
int found_spots=0;

один раз при запуске скрипта..

теперь не трудно догадаться что рано или поздно при выполнение скрипта (конкретно строки found_spots++, found_spots станет более 40 и приведет к переполнению массивов
CODE:
int coordsx[40];
int coordsy[40];





================================

вторая ошибка...
 Цитата:
findimage(1, #tower_spot[0][0], 0, #coordsx[found_spots], #coordsy[found_spots], #coordsx[found_spots], #coordsy[found_spots], 1393, 852, 0, 0, 0, 0, 0, 0, 100, 1, -1);

что это?? это явная ошибка.. использование указателей вместо значений..
==============================

рассмотрим третий случай в этом скрипте который может привести к краху...
открытие файла для записи...
см справку
там написано в примерах что надо проверять что файл открылся
if (fopen ("c:\5.txt", "w")!=0)
и только потом уже писать в него..

зачем проверять? а если C:\TD_log.txt создать не возможно??
на диске c не всегда можно создать файп под правами юзера... иногда надо запуск от администратора.
Теперь пользователь у которого не хватает прав встретится с крахом. и это не ошибка в кибор. это ошибка программирования.

надеюсь понятно пояснил.

будьте внимательны при программирование...
 
 Top
DeLiberate
Отправлено: 18 Февраля, 2016 - 15:54:24
Post Id



Пользователь
Участник


Покинул форум
Сообщений всего: 63
Дата рег-ции: Янв. 2015  
Репутация: 0




 Kibor пишет:
один раз при запуске скрипта..

Переменная объявляется после метки strt: ,на которую прыгаем по завершению уровня, а за уровень функция вызывается один раз.
CODE:
strt:
fopen ("C:\TD_log.txt", "w");
int found_spots=0;
int builded=0;
int coordn=0;

А количество циклов в функции ограничено переменной coordn
CODE:
coordn=findimage(10, #tower_spot[0][0], 0, #coordsx[0], #coordsy[0], 633, 206, 1393, 852, -1);
Поэтому переполнения нет.
 Kibor пишет:
использование указателей вместо значений..

Это потому, что из
справки (Отобразить)
я не совсем понял, чем отличаются указатели на переменную от самой переменной, код работает и я думал, что это нормально. Буду рад разъяснению почему это неправильно.
Что касается лога:
Мне он нужен для отладки, на своем компе, у меня есть права на запись на C:/
Я к тому, что в конечном итоге его может и не быть.Но впредь, дабы избежать рисков - буду проверять.
--------
Можно ли написать библиотеку с функциями кибора, и подключать её только если потребуется с помощью external?
 
 Top
Kibor
Отправлено: 18 Февраля, 2016 - 16:09:07
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8227
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




Указатель - это число обозначающее номер ячейки в памяти, в которой находятся данные. то есть просто адрес.
использовано неправильно.
к тому же даже если использовать не указатель а само значение как тут, то опять не правильно, так как на момент вызова
findimage(1, #tower_spot[0][0], 0, #coordsx[found_spots], #coordsy[found_spots], coordsx[found_spots], coordsy[found_spots], 1393, 852, 0, 0, 0, 0, 0, 0, 100, 1, -1);
в этом выделенном нет значений. там мусор. посколько там значения появятся после выполнения и нахождения рис.


Скрипт полон ошибок. К примеру что означает fwrite (,);??

Короче просматривайте скрипт и устраняйте ошибки и будет работать..

 DeLiberate пишет:
Можно ли написать библиотеку с функциями кибора, и подключать её только если потребуется с помощью external?

Не понял.. Эти функции подключать не надо. А если не все функции нужны, то кушать не просят..
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Вопросы и решение проблем »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 




Powered by