|
2.17 вылет |
|
|
Warstone |
27.12.2012, 15:13
|
Группа: Модераторы Наличность: 0
Пользователь №: 10.905
Возраст: 25
|
Цитата(WKnight @ 26.12.2012, 14:09) Дык я про то и говорю, что все основные отлавливаются оптом с персональным описанием. Т.е. всякие хеапы и прочие вполне корретно выводятся, типа деление на 0, ошибка преобразования итд. Какая ошибка вываливается под данным eexternal даже сама дельфя предположить не может.
У тебя массивы изменяются во время обращения к ним из параллельных скриптов?
Может. Но ты выводи адрес загрузки приложения и адрес, где упало. Потом по мапу сможешь понять в какой строчке падение. Если, конечно, ехе не упакованный. Цитата(WKnight @ 27.12.2012, 15:38) Судя по тому что в описании написано про операции с неверными пойнтерами, оно какраз вполне может выскакивать при обращении к изменяемому в данный момент массиву.
Э-э-э... Кнайт... А как-бы критические секции, Interlocked операции, не?
--------------------
Do. Or do not. There is no Try! © Master Joda, Dagobah, Star Wars: Episode V.
|
|
|
|
WKnight |
27.12.2012, 15:57
|
Разработчик UO Pilot'а
Сообщений: 1.639
Регистрация: 9.1.2006 Группа: Пользователи Наличность: 0
Пользователь №: 4.688
|
Ехе какраз пакованный... Та както не думалось что оно так падать на этом будет. Теперь то придется чето придумывать, и все подобные операции в это заворачивать. Раз ты тут появился, может подскажешь (IMG: style_emoticons/default/smile.gif) как загрузить самописанный драйвер в семерке? Тестовый режим включен, файло подписано "dseo v1.3b". В хп работает прекрасно, в семерке пишет загрузка была заблокирована. В доверенные места сувать пробовал, никаких изменений.
|
|
|
|
xolost |
27.12.2012, 17:00
|
Expert
Сообщений: 517
Регистрация: 17.6.2012 Группа: Пользователи Наличность: 0
Пользователь №: 15.035
|
Так. Погонял скрипт часов 15 без привязки. Из них 5 часов висел в строках Код if timer > #lagBuyTimer or timer > #lagBuyTimer2 while_not #mainMenuX #mainMenuY #mainMenuC send Escape wait 1000 end_while
Естественно, а 10 часов во всем остальном после удаления этой части с таймером. Вылета не разу не было, версия разумеется 2.17 ----------------------------------------------------------- Попишу теперь в какое-нибудь приложение, что бы цифры могли меняться.
|
|
|
|
DarkMaster |
27.12.2012, 20:10
|
Модератор UOPilot
Сообщений: 9.468
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 27738
Пользователь №: 11.279
|
есть подозрение из-за чего вся эта хрень пошла. 1) были странные ошибки с таймером, долго не мог понять в чем дело, тупо переписал кусок 1 в 1 только поменял имена переменных. Заработало. 2) Кнайт сказал, что не надо бы изменять массив другим скриптом. Переписываю. Начинаются _те_же_самые_ ошибки. Предыдущий стабильный момент списываю на случайность. Много чего переделываю, откручиваю - результат тот же. 3) Конструкция set workwindow %arr.0 [ #n 1 ] ужасно крашит, это дает лишнее подтверждение, что виноваты массивы. 4) Задолбавшись делаю шаг назад, получаю относительную стабильность. По крайней мере на скриптах-сателитах.
Как не стыдно, но сателиты с таймерами похоже сыпались все из-за тех же старт/стопов скриптов. Причем старт/стопы были не перекрестными, где обычно были проблемы. Старая версия скрипта со стартами работала без крашей неделями атайма. Судя по наблюдениям перезапуск скрипта 1, мог привести со временем к крашу скрипта 2(скрипты полностью идентичны и подгружаются и одного файла). Когда кнайт сказал, что массивы лучше не трогать другими скриптами, и после диких крашей set workwindow %arr.0 [ #n 1 ], я просто стал стартовать скрипт заново, а не ставить на паузу. Да и краши были далеко не сразу после перезапуска. Как адекватно передать новый хендл скрипту не очень понятно. В соседний скрипт не обратиться, напрямую другим скриптом не задать. Попробую переменную в сателите выделить под это дело и переписывать ее основным скриптом.
Сообщение отредактировал DarkMaster - 27.12.2012, 20:46
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
WKnight |
28.12.2012, 14:45
|
Разработчик UO Pilot'а
Сообщений: 1.639
Регистрация: 9.1.2006 Группа: Пользователи Наличность: 0
Пользователь №: 4.688
|
|
|
|
|
DarkMaster |
29.12.2012, 17:39
|
Модератор UOPilot
Сообщений: 9.468
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 27738
Пользователь №: 11.279
|
Нужно. Сейчас выложу наиболее стабильную версию. Скрипт
Код set linedelay 3 set workwindow #handleSTO.0 set #windowN #windowN.0 set #sateliteStarted.0 1 set #lagBuyTimer 10000 set #lagBuyTimer2 10000 set #lagInvTimer 5000 set #buyWeaponMenuX 269 set #buyWeaponMenuY 109 set #buyWeaponMenuC 4467471 set #disWeaponAcceptX 133 set #disWeaponAcceptY 142 set #disWeaponAcceptC 3876622 set #mainMenuX 120 set #mainMenuY 96 set #mainMenuC 5387026 set #invX 7 set #invY 7 set #invC 3613452
set #invBackgroundX 9 set #invBackgroundY 24 set #invBackgroundC1 0 set #invBackgroundC2 2105376
set #disconnectX 195 set #disconnectY 82 set #disconnectC 16050913
:start
//set workwindow %clientHandle [ #windowN ] set #temp %clientHandle.0 [ #windowN ] if #temp <> workwindow set workwindow #temp end_if if_not #disconnectX #disconnectY #disconnectC send {F5} wait 20 send {Enter} wait 20 // Отсрочка таймера детектора if_not #invBackgroundX #invBackgroundY #invBackgroundC1 #invBackgroundC2 // первый слот в инвентаре set #lagBuyTimer timer + 10000 end_if if #invBackgroundX #invBackgroundY #invBackgroundC1 #invBackgroundC2 // первый слот в инвентаре set #lagBuyTimer2 timer + 30000 end_if // Детект инвентаря if #invX #invY #invC set #lagInvTimer timer + 5000 end_if gosub antiFreeze end_if
goto start :antifreeze if #lagInvTimer < timer set #lagInvTimer timer + 5000 send i end_if if timer > #lagBuyTimer or timer > #lagBuyTimer2 set %clientDisable.0 [ #windowN ] %clientDisable.0 [ #windowN ] + 1 set #breakTimer timer + 20000 while_not #mainMenuX #mainMenuY #mainMenuC or #breakTimer < timer send Escape wait 1000 end_while send Escape wait 1000 send i set #lagBuyTimer timer + 10000 set #lagBuyTimer2 timer + 10000 set %clientDisable.0 [ #windowN ] %clientDisable.0 [ #windowN ] - 1 end_if return
Сразу говорю конструкция: set #temp %clientHandle.0 [ #windowN ] if #temp <> workwindow оказалась не корректной для 2.17, но вроде ничего жуткого не вызвала. Ошибку обычно сыпит про 50 строку. workwindow в 2.17 не является еще полноценной переменной, но привязывать можно. Сообщение отредактировал DarkMaster - 29.12.2012, 17:38
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|