|
Вопрос по массивам и окнам |
|
|
sel |
13.11.2018, 15:08
|
 
Neophyte
Сообщений: 32
Регистрация: 4.7.2018 Группа: Пользователи Наличность: 0
Пользователь №: 18.986
Возраст: 27

|
Вопрос в следующем, мне необходимо отследить количество запущенных окон игры, скрипт у меня ходит между окнами и выполняет разные задачи, ходит в цикле for.
Выглядит примерно так:
set %handle FindWindow ("Игра") set #f 1 while (#f = 1) for #i 1 size(%handle) ... скрипт ... end_for end_while
Иногда случается так, что окно с игрой крашится с ошибкой, и скрипт заводит обратно вылетевшее окно с новым хендлом, в этом основная загвоздка, если бы не это обстоятельство то я бы мог записывать в массив %handle [#i 3] допустим цифру 0 если окно вылетело и проводить в цикле ещё один цикл for который бы складывал значения в столбце %handle [#i 3] и если оно будет равняться 0 то скрипт начнёт заводить все окна, но из за краша окон добавляется новая строчка в массиве с новым хендлом.
Задача - определить, что вылетели все окна игры, есть идеи как это можно сделать? Заранее спасибо за ответ.
p.s. определить какое окно вылетело с ошибкой трудно, может вылететь абсолютно любое, всё что есть это хендл окна.
|
|
|
|
|
  |
Ответов
sutra |
15.12.2018, 4:26
|
      
Adept
Сообщений: 923
Регистрация: 10.8.2018 Группа: Пользователи Наличность: 0
Пользователь №: 19.007

|
Видимо проблема определения вылетевших окон не решена в течении целого месяца. В чём проблема, я так и не понял. "Уровень конспирации не позволяет оценить уровень опасности."
Есть окно, у него есть имя - его хендл, нет окна - нет имени. Есть функция, которая создаёт (ищет) список этих имён. Какие могут ещё возникнуть вопросы? Если технические, опиши какие. Логические? Так тоже расшифруйся чуток, измени переменные и дай реальный код, что не так? Если проблема сидит глубже, чем просто поиск уже не существующего окна, так опиши суть вопроса, а иначе будем гадать на кофейной гуще.
Что-то мне подсказывает, что не всё так просто. И что-то недоговаривается. Возникает ошибка в игре, нужно её решить. Как уже говорили опиши подробнейшим образом. А просто найти или не найти любое окно, ну это уже просто не интересно выглядит.
Интуиция подсказывает мне, что проблема не в окнах, а в порядке их обработки в цикле. Значит и вопрос,как правильно организовать цикл, который бы учитывал исчезнувшие окна. Тогда возникает другой вопрос... работать с оставшимися окнами? Заводить новые и адаптировать цикл? Опиши ПОДРОБНЕЕ.
|
|
|
|
sel |
17.12.2018, 16:16
|
 
Neophyte
Сообщений: 32
Регистрация: 4.7.2018 Группа: Пользователи Наличность: 0
Пользователь №: 18.986
Возраст: 27

|
В общем написал преемлемый для меня вариант(есть список персонажей, скрипт ищет каждый ник в %handle, если не находит какого то ника, передаёт на подпрограмму, которая потом перенаправит в скрипт завода персонажа в игру): Код log clear log mode compact set %handle findwindow ("Игра") // ищем окна init_arr %list (1 1) Персонаж1 Персонаж2 Персонаж3 Персонаж4 // сюда через пробел записываем ники всех персонажей set #listsize size(%list) for #i 1 #listsize set #result indexOf (%handle noabs (%list [#i]) ) if #result = -1 log Вылетел: %list [#i 1] //если персонаж из списка не найден, скрипт начнет заводить его в игру gosub %list [#i 1] end_if end_for wait 100 set %handle findwindow ("Игра") end_script
:Персонаж1 log заводим Персонаж1 return
:Персонаж2 log заводим Персонаж2 return
:Персонаж3 log заводим Персонаж3 return
:Персонаж4 log заводим Персонаж4 return
К вопросам выше, список персонажей статический, т.е. его число неизменно(скажем их всего 20), порядок обработки не важен, скрипт представляет из себя банального бота, который ходит по всем окнам и берёт нужную инфу из окон, допустим если персонаж умер, то он поднимает его и ведёт обратно на спот с мобами. Я не хочу раскрывать все карты, во первых там говнокод)) в идеале 1500 строчек кода давно пора переделать, ну а во вторых там есть конфиденциальная информация в виде ников персонажей логинов и паролей от них.
|
|
|
|
Сообщений в этой теме
sel Вопрос по массивам и окнам 13.11.2018, 15:08 sutra
Эту строку помести в while если тормозов не будет... 13.11.2018, 15:20 sutra После анализа массива ненужный элемент можно удали... 13.11.2018, 17:46 sel Есть где то примеры анализа массивов?
Массив приме... 13.11.2018, 18:05 sutra Я не совсем понял что именно надо. Смысл примерно ... 13.11.2018, 18:27 sutra Можно отсортировать оба массива, тогда наверное ещ... 13.11.2018, 18:55 sel
Можно отсортировать оба массива, тогда наверное е... 13.11.2018, 19:39 DarkMaster
Его выдает винда при создании окна и он никак не ... 13.11.2018, 20:17 sutra
Опиши подробнее. Скрипт заводит или игра сама соз... 13.11.2018, 23:00 sutra
Ты можешь присвоить окну свой порядковый номер se... 13.11.2018, 23:11 cirus
Скобки не нужны.
Тоже самое:
set %handleold %han... 14.11.2018, 2:23 sel Придумал более интересный способ определения вылет... 15.12.2018, 1:34 cirus
Откуда это?
Запустить любое количество окон, в и... 15.12.2018, 2:40 sutra Количество окон игры должно быть постоянным? или м... 15.12.2018, 4:59 sutra Про ошибку конкретного примера кода уже более опыт... 15.12.2018, 5:14 DarkMaster
раньше пилотовский синтаксис отказывался восприни... 15.12.2018, 5:47 sutra Ну на 100% не вникал, но логика правильная, если в... 17.12.2018, 18:22 sel Итак, у меня новый затуп, пытаюсь красиво сохранят... 23.12.2018, 4:28 DarkMaster [code]local write, writeIndent, writers, refCount;... 23.12.2018, 5:36 cirus
Дописывать пробелы в конец строки, чтобы все были... 23.12.2018, 5:39 sutra
Я бы порекомендовал использовать табуляцию. Прост... 23.12.2018, 13:10 DarkMaster
Проблема в том, что текстовые редакторы табуляцию... 23.12.2018, 13:41 sutra Да вариантов полно, табуляция - это просто выравни... 23.12.2018, 14:08 sutra Если конечно установлен эксель. Выбираешь вкладку ... 23.12.2018, 14:33 sel Ииии, мне снова нужна ваша помощь друзья:)
Проблем... 29.12.2018, 0:48 cirus
В папке с пилотом Scripts\Backup. Ищите рабо... 29.12.2018, 1:22 sutra Ну если быстро (чисто для Вашего случая) не вникая... 29.12.2018, 3:29 sel По прежнему сталкиваюсь всё с той же проблемой, ес... 28.2.2019, 0:26 cirus
Возможно в этом проблема. Попробуйте не использов... 28.2.2019, 1:34 sutra Тоже хотел сказать про это, но и это не главное. И... 28.2.2019, 1:55 sel
Я вроде даже где-то 100% рабочий пример давал с ... 28.2.2019, 2:58 sutra Подпрограмма в Пилоте - это собственно goto на мет... 28.2.2019, 2:27 sutra findwindow ищет окна в том порядке, в котором они ... 28.2.2019, 2:47 cirus
2гб и вылет. 28.2.2019, 3:04 sutra Ну хоть что-то, я тоже думал на эту тему. Всё-таки... 28.2.2019, 3:32 sel
Ну хоть что-то, я тоже думал на эту тему. Всё-так... 5.3.2019, 10:10 sutra Голову на отсечение конечно давать не буду. Но иск... 28.2.2019, 3:42 sutra Вот без всякого хвастовства говорю (хотя гордость ... 28.2.2019, 3:55 DarkMaster
gosub работает полностью корректно с циклами при ... 28.2.2019, 14:00 sel Возникло несколько вопросов:
1. Можно ли команду l... 4.5.2019, 13:45 cirus
Нет, только txt. 4.5.2019, 14:06
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|