Здравствуйте, гость ( Вход | Регистрация )

2 страниц V < 1 2  
Ответить в эту темуОткрыть новую тему
> Start_script - проблема
TITaNIC
сообщение 15.5.2015, 12:19
Сообщение #21


***

Novice
Сообщений: 67
Регистрация: 2.5.2015
Группа: Пользователи
Наличность: 0
Пользователь №: 17.450
Возраст: 21



После долгой работы кликера удавалось воспроизводить зависания, хотя последнее время они стали появляться реже. Но за эту неделю произошло кое что новенькое:
1. один раз было замечено зависание без ручного включения скрипта(т.е. сначала работало n-е кол-во скриптов, один из них запускает 9й скрипт, он отрабатывает и в конце на запуске второго скрипта зависает с теми же симптомами)
2. пару раз были зависания практически после запуска самого пилота. Т.е. я запустил пилот, включил скрипт, увидел, что забыл раскомментировать строку, остановил все скрипты, исправил, запускаю - зависает.
Еще заметил, что если при таком зависании попытаться закрыть пилот - то он вообще повиснет и вырубается только убиванием процесса. Я тут подумал, а не может это быть из-за большого кол-ва скриптов или сложности всей программы?
И еще вопрос не в тему: хотел настроить этот скрипт человеку, в итоге: в хроме функции поиска в неактивном окне вообще не работают, в яндексе, если я правильно помню, не работает поиск цвета. Установил ему браузер как у себя(Комодо, у меня в нем все прекрасно работает), не работает поиск картинок. В итоге все более менее заработало в браузере CometBird, с одним но: все поиски работаю через раз, т.е. ставишь, например, определение цвета в заданной точке, после выводишь результат в лог. Картинка на экране статичная. Лог получается примерно такой:
Лог
0
0
<корректный цвет>
0
<корректный цвет>
0
и т.д.

в чем может быть проблема? или лучше отдельной темой это запилить?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 15.5.2015, 12:55
Сообщение #22


***********

Модератор UOPilot
Сообщений: 9.743
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 29658
Пользователь №: 11.279



Цитата
в чем может быть проблема? или лучше отдельной темой это запилить?

Думаю да. Скопируйте часть поста и вынесете в новую тему. Я перенесу посты с ответами, если понадобится.

Цитата
Я тут подумал, а не может это быть из-за большого кол-ва скриптов или сложности всей программы?

Некоторые проблемы были из-за количества и скорости обращений между параллельными скриптами, но они лишь усугублялись, а существовали и с 2 вкладками. Понятие сложности скрипта для интерпретатора для меня не очень ясно. Я понимаю, что, например, некоторые конструкции с подстановками генерацией имен переменных из нескольких переменных для пилота являются "сложными" в плане может сожрать, а может не сожрать ибо то, что это работает не более, чем "фича" и возможность не документирована. Но что есть общая сложность? У меня скрипты работали по 1к строк из кучи подпрограмм в одной вкладке и по 5 вкладок +1 вкладка за каждого запущенного чара с самодельными базами данных, координирующими скриптами, контрольными, сборами статистики и т.д. И ничего - шуршало. Были и скрипты которые имели аптайм работы в несколько недель(было бы и больше, но апдейт сильно нарпашивался).
В качестве костыля(и в какой-то мере диагностики) могу предложить сделать следующий скрипт:
получаем статусы скриптов через get scripts
смотрим какие запущены. Заодно можно посмотреть какой статус имеет скрипт в "недозапущенном" состоянии.
Если какой-то скрипт не запущен, запускаем его.

Так же можно для получения статуса скриптов использовать переменные внутри запускаемый скриптов. Тут есть важный момент: лучше не записывать значения в параллельные скрипты, а считывать их из параллельных. Т.е.:
Код
Правильно:
Скрипт1:
set #a 1

Скрипт2:
if #a.1 = 1
....
end_if

Лучше не делать:
Скрипт1:
set #a.2 1

Скрипт2:
if #a = 1
...
end_if

По своей сути очень близкие конструкции, однако запись в параллельный скрипт по своей сути гораздо более чревата крашем либо ошибочными данными. На данный момент проблема вроде полностью устранена, но на мой взгляд отсутствие записи в параллельный процесс(в данном случае не процесс, а поток), а только чтение есть правильно и кошерно.

Цитата
в хроме функции поиска в неактивном окне вообще не работают

С разрешения кнайта могу попробовать выдать бетку новой версии. Там есть формочка с тем, что захватил пилот в качестве анализируемого изображения. Возможно это сможет прояснить проблему и заодно будет дополнительный тест хрома. У меня хром древней версии и обновлять я его не хочу - будет вылазить на передний план от кликов мышкой.
Цитата
0
0
<корректный цвет>
0
<корректный цвет>
0
и т.д.

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

В целом хочу обратить внимание на тот факт, что изображения сделанные на одном компьютере могут не подходить на другом. Они могут быть реально разными, но на глаз не отличимыми. Вырежьте изображение на целевой машине и протестируйте на нем. У меня даже на разных учетках на одной винде разные цвета. Сносил дрова видюхи бесчисленное количество раз, сбрасывал настройки отображения и т.д. Так и не понял в чем проблема, но без дополнительно deviation 2-3% я просто не найду изображение.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
TITaNIC
сообщение 15.5.2015, 21:47
Сообщение #23


***

Novice
Сообщений: 67
Регистрация: 2.5.2015
Группа: Пользователи
Наличность: 0
Пользователь №: 17.450
Возраст: 21



Цитата
Заодно можно посмотреть какой статус имеет скрипт в "недозапущенном" состоянии.

он в состоянии running
Цитата
С разрешения кнайта могу попробовать выдать бетку новой версии. Там есть формочка с тем, что захватил пилот в качестве анализируемого изображения. Возможно это сможет прояснить проблему и заодно будет дополнительный тест хрома

можно попробовать, но, как я понимаю, если функции возвращают 0 - значит будет черный квадрат
Цитата
будет вылазить на передний план от кликов мышкой.

о, спасибо! как раз вспомнил, у одного человека такая проблемка была) теперь ясно, что дело в хроме
Цитата
Причем если добавить задержек, то скорее всего, проблема решится.

если вы говорите про задержки между вызовом функции поиска, то там везде в районе 4х секунд стоят
Цитата
В целом хочу обратить внимание на тот факт, что изображения сделанные на одном компьютере могут не подходить на другом

да, это первое, о чем я подумал, после проверки координат и хендлов) результата это не дало
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 15.5.2015, 22:15
Сообщение #24


***********

Модератор UOPilot
Сообщений: 9.743
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 29658
Пользователь №: 11.279



Цитата
можно попробовать, но, как я понимаю, если функции возвращают 0 - значит будет черный квадрат

Это может решить проблему и может очень помочь в отладке, чтобы потом труп очередной не вышел. Отписал ему в личку и в скайп.

Цитата
он в состоянии running

Ну идея с переменными в любом случае в силе.

Сообщение отредактировал DarkMaster - 15.5.2015, 22:15


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 16.5.2015, 12:44
Сообщение #25


***********

Модератор UOPilot
Сообщений: 9.743
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 29658
Пользователь №: 11.279



Куда бетку на тест выслать?


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
TITaNIC
сообщение 17.5.2015, 3:16
Сообщение #26


***

Novice
Сообщений: 67
Регистрация: 2.5.2015
Группа: Пользователи
Наличность: 0
Пользователь №: 17.450
Возраст: 21



Цитата
Ну идея с переменными в любом случае в силе.

если вы имеете ввиду проверять скрипты и включать те, что не включились(из-за зависания), то не выйдет. сейчас опять завис скрипт на запуске второго, создал новый скрипт, который запускает второй скрипт и останавливается - он тоже зависает. создал еще один - и этот завис.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 17.5.2015, 12:23
Сообщение #27


***********

Модератор UOPilot
Сообщений: 9.743
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 29658
Пользователь №: 11.279



Цитата

если вы имеете ввиду проверять скрипты и включать те, что не включились(из-за зависания), то не выйдет. сейчас опять завис скрипт на запуске второго, создал новый скрипт, который запускает второй скрипт и останавливается - он тоже зависает. создал еще один - и этот завис.

А запускаемый скрипт, который недозапустился перед этим останавливали? Он же по сути является running, т.е. ему сначала надо сделать stop_script, потом уже start_script. Кстати возможно поможет pause|resume_script.

Прошу потратить немного времени и все-таки обрезать скрипт до пары строчек, которые будут вызывать зависание. Это в 1 очередь даст возможность выпустить фикс, ну и мне будет существенно легче сделать временный обход, сейчас я просто не могу сесть и писать, т.к. проблема у меня не воспроизвелась.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
TITaNIC
сообщение 17.5.2015, 13:21
Сообщение #28


***

Novice
Сообщений: 67
Регистрация: 2.5.2015
Группа: Пользователи
Наличность: 0
Пользователь №: 17.450
Возраст: 21



Цитата
А запускаемый скрипт, который недозапустился перед этим останавливали?

зависание происходило и при выключенном скрипте и при работающем
Цитата
Прошу потратить немного времени и все-таки обрезать скрипт до пары строчек, которые будут вызывать зависание.

Скрипт 1
Код
start_script 2

Скрипт 2
Код
set linedelay 20
wait 5s

set #handle findwindow (Darkorbit - Comodo Dragon)

Врядли это вам поможет, т.к. я не могу точно воспроизводить зависания. Они появляются случайно(либо я не вижу связи между их появлением). Как правило, когда скрипты работают примерно полдня, то если остановить их и начать включать\выключать 1й скрипт, то зависания периодически появляются, но было пару раз, когда после долгой работы скриптов и, примерно, 20 включений\выключений 1го скрипта, зависаний так и не было. Я могу вам скинуть архив с моим пилотом, скриптами. Возможно, если они у вас поработают "вхолостую", то вы сможете воспроизвести зависания.
P.S. как вариант, при следующем зависании, могу дать покопаться в своем компе)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 17.5.2015, 13:37
Сообщение #29


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26720
Пользователь №: 16.971
Возраст: 29



А что первый скрипт бесконечно запускает 2й?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
TITaNIC
сообщение 17.5.2015, 13:39
Сообщение #30


***

Novice
Сообщений: 67
Регистрация: 2.5.2015
Группа: Пользователи
Наличность: 0
Пользователь №: 17.450
Возраст: 21



нет, он запускает второй, потом, с небольшой задержкой, еще несколько и останавливается
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
TITaNIC
сообщение 20.5.2015, 4:12
Сообщение #31


***

Novice
Сообщений: 67
Регистрация: 2.5.2015
Группа: Пользователи
Наличность: 0
Пользователь №: 17.450
Возраст: 21



Появилась новая инфа
Скрипт 6
Код
set workwindow #handleFlash.2

:label
  set $count findimage (0 0 #centerX.2 #centerY.2 (connect.bmp) %arr #handle.2)

  if ($count > 80)
    log Дисконнект
    call Reconnect %arr[1 1] %arr[1 2]
end_if

  set $count findimage (0 0 #centerX.2 #centerY.2 (setConnect.bmp) %arr #handle.2)

  if ($count > 80)
    stop_script 3
    stop_script 4
    pause_script 7
    stop_script 5
    stop_script 8
    pause_script 9
    pause_script 10

    set $condition $condition.2

     set workwindow #handleFlash.2
     while ($count > 80)
       log Обновляю страницу

       set workwindow #handle.2
       left #refreshX.2 #refreshY.2
       stop_script 2
       wait 1m


       start_script 3
       wait 8s
       set workwindow #handleFlash.2
       left #gameStartX.2 #gameStartY.2
       wait 25s
      
       set $count findimage (0 0 #centerX.2 #centerY.2 (setConnect.bmp) %arr #handle.2)
     end_while

    set $condition.2 $condition

    if ($condition = 2142)
       resume_script 9
    else
       start_script 3
       start_script 4
       if ($condition = 22)
          resume_script 8
          resume_script 10
       end_if
       if ($condition.2 = 42)
           start_script 5
       end_if
    end_if
    resume_script 7

  wait 20s
goto label

Reconnect #a #b

Код
 proc Reconnect #a #b
     set workwindow #handleFlash.2
     get windowpos #handleFlash.2 [#x2 #y2[#width #height [#result]]]
     set #x #a - #x2
     set #y #b - #y2

     left #x #y
     wait 20s
end_proc


Скрипт 2
Код
set linedelay 20
wait 5s

set #handle1 findwindow (Darkorbit - Comodo Dragon)
set #handle2 findwindow (Darkorbit | Игровой клиент - Comodo Dragon)
set #handle #handle1 + #handle2
//log #handle
set #handleFlash windowfromcursor

set $petDefense {w}
set $jump j

get windowpos #handle [#X1 #Y1 [#width #height [#result]]]
get windowpos #handleFlash [#X2 #Y2 [#width #height [#result]]]

set #deltaX #X2 - #X1
set #deltaY #Y2 - #Y1
//log #deltaX #deltaY
set $condition

set #countShield 83
set #emptyShield 5263948
set #colorLine 4605510

set #time 6000
set #deltaTime 4000

set #maxDeaths 1

set #EnemyColor1 10087935
set #EnemyColor2 4250111
set #EnemyColor3 3394815
set #EnemyColor4 39935

//Абсолютные
set #mapX1 1160
set #mapY1 651
set #mapX2 1435
set #mapY2 861

set #petX1 7
set #petY1 63
set #petX2 273
set #petY2 207

//move #hpX #hpY

set #panelShipX 1438
set #panelShipY 408

set #centerX 957
set #centerY 614

//Относительные
set #petStartX 36
set #petStartY 120
set #petMechX #petStartX + 170
set #petMechY #petStartY
set #autoCollectX #petMechX
set #autoCollectY #petMechY + 84
set #checkPetLeftX #petStartX
set #checkPetLeftY #petStartY - 10
//set #checkPetRightX 273
//set #checkPetRightY 201

set #shieldX 757 + #deltaX
set #shieldY 333 + #deltaY
set #hpX #shieldX
set #hpY #shieldY - 5
set #lowHPX 727
set #lowHPY #hpY

//set #base42X 157  //148
//set #base42Y 710  //676

set #base42X 1305  //148
set #base42Y 706  //676

get windowpos #handleFlash #x #y #width #height
set #x1 #mapX1 - #x + 40
set #y1 #mapY1 - #y + 60
set #x2 #mapX2 - #x - 20
set #y2 #mapY2 - #y - 25
//log #x1, #y1, #x2, #y2
//pause_script
set #gameStartX 718
set #gameStartY 737

set #refreshX 71
set #refreshY 40

set #repButtonX 722
set #repButtonY 595

set #dragMinimapX 217
set #dragMinimapY 605

set #port22to21X 1395
set #port22to21Y 667

set #port21to22X 1395
set #port21to22Y 772
set #port22to24X 1210
set #port22to24Y 770
set #port24to42X 143
set #port24to42Y 777

pause_script

Переписывал тут код, решил кое что в процедурки перенести(вайл тоже был отдельной процедурой). Поясню один момент: в данном случае второе условие может выполнится только если выполнилось первое.
Когда переписал, начал тестировать, и внезапно этот скрипт завис на старте 2го скрипта. Включал я тогда и следующие несколько раз 1й скрипт(он запускает несколько скриптов, включая 6й). Убрал вайл из процедуры - всеравно виснет. Попробовал еще несколько раз - стабильно зависает. Написал вначале скрипта остановку 2го, ожидание, старт 2го - не виснет. Зашел в вайл без захода в первое условие - не виснет. Снова попробовал как обычно - повисло. Скинул другу папку с пилотом и скриптами, у него так же зависает. Заменил start_script 2 на start_script 3 - не завис. Поменял обратно - виснет. В первом условии вытащил тело процедуры обратно в скрипт - все стало нормально работать, даже когда обратно все вернул. Завтра в бетке попробую поработать с этими скриптами.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
WKnight
сообщение 20.5.2015, 6:35
Сообщение #32


********

Разработчик UO Pilot'а
Сообщений: 1.639
Регистрация: 9.1.2006
Группа: Пользователи
Наличность: 0
Пользователь №: 4.688



А надолго виснет?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
TITaNIC
сообщение 20.5.2015, 11:02
Сообщение #33


***

Novice
Сообщений: 67
Регистрация: 2.5.2015
Группа: Пользователи
Наличность: 0
Пользователь №: 17.450
Возраст: 21



Специально не ждал, но минуты 2-3 точно висит. Попробую при следующем зависании оставить на некоторое время
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

2 страниц V < 1 2
Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 10.7.2025, 21:29
Designed by Nickostyle