Как я уже где-то писал, у меня на это отдельный скрипт-наблюдатель.
Смысл - основной скрипт бота во время проверок, при положительном результате, изменяет файлик ping.txt, просто чтоб время изменения файла поменялось. Наблюдатель же висит и каждую минуту сверяет, как давно был изменён пинг-файл. Если дольше N минут - значит в сети глюк, и тогда наблюдатель убивает процесс основного бота, убивает клиент евы, делает релогин, и запускает основной скрипт бота, ну и пинг-файл изменяет, чтоб тут же снова не убивать всё. И наблюдает дальше.
В качестве примера. При копке - пинг-файл изменяется, если при проверке заполненности трюма было замечено, что заполненность трюма увеличилась. Также, в момент дока-андока. Типа, если трюм не наполняется, мы всё не докаемся-андокаемся, и этого не происходит долго, значит висим. Таким образом, к примеру при копке льда, когда цикл составлял что-то около 6 минут, критическое время для сравнения я задавал 10-15 минут.
Как вариант для хантера - изменение пинг-файла при изменении количества залоченных целей (при зависоне непись "неубиваемая", количество целей не меняется), или уменьшение здоровья цели, если за этим ведётся наблюдение. Моменты перехода в варп, выхода из варпа. Уменьшение (после релоада) или увеличение (если лутаем) загруженности трюма, только тут надо учитывать, чтобы один релоад изменял заполненность настолько, чтобы это датчик заполненности заметил.
Так что пинг-файл изменяется как раз в моменты изменения некоторых отслеживаемых состояний корабля, которые не меняются в случае незамеченного дисконнекта.
#include <Date.au3>
;...
$fdate=FileGetTime("_ping.txt")
$raz=_DateDiff("n", $fdate[0]&"/"&$fdate[1]&"/"&$fdate[2]&" "&$fdate[3]&":"&$fdate[4]&":"&$fdate[5], _NowCalc())
if $raz>10 ; если больше 10 минут
then
_LogW("РЕЛОГ in"&@HOUR&":"&@MIN&" file "&$fdate[3]&":"&$fdate[4]&" разница "&$raz)
; вот тут убиваем, перезапускаем...
endif
Func _Ping()
Local $file
$file = FileOpen("_ping.txt", 2)
FileWriteLine($file, @MDAY & "." & @MON & "." & @YEAR & " - " & @HOUR & ":" & @MIN & ":" &@SEC)
FileClose($file)
EndFunc; => _Ping