
Приветствую!
Продолжаю улучшать и делать игровой процесс на БГ более приятным.
На этот раз публикую достаточно большое обновление аддона BattlegroundTargets для 3.3.5 (а не простенькие правки).
Хотелось бы верить, что работа (и не очень маленькая) проделана не зря. И аддон, хотя бы немного, изменит в лучшую сторону
мир WoLTK BG PvP. Передаю привет РБГ :)
Итак, что нового в обновленной версии:
1. Детект хилов. хилы, определяются не сразу, а постепенно, в процессе получения информации на бг.
Детект осуществляется по уникальным баффам — специфичным данному классу и спеку. Здесь используется идеология: лучше не определить, чем определить не правильно.
В BattlegroundTargets, данные для определения хилов поступают с трех независимых каналов и дублируют друг друга.
Так что, в случае проблем с одним из каналов — функциональность не будет потеряна (но об этом позже).
2. База данных. Позволяет сразу же при заходе на бг подсвечивать хилов, тех с кем вы уже пересекались ранее на БГ.
Само собой, с последующей проверкой и сменой метки роли, ведь существует вероятность того, что спек мог изменился:
bgt_s1.png
3. Иконка на миникарте. Поправлена проблема с иконкой возле миникарты, которая появляется при поиске БГ,
а во время БГ, по нажатию на нее: показывает статистику. Теперь иконка всегда отображает знак той фракции за чью сторону мы сейчас играем на бг.
Сделано во избежание реплик на подобии: "а за кого мы ща играем?". Не раз встречал на бгхах в чате, слышал от тиммейтов,
да и я, недавно вернувшись и повстречав межфрак, порой, замечал за собой подобные мысли, хоть и играю в WoW с момента выхода официального WOLTK :)
bgMapIco.png
Теперь подробнее.
будет много букв
О настройках интерфейса:
1. Для того чтобы отобразить хилов, выберете в выпадающем списке (1) опцию "Роли справа/слева" или "Не показывать роли" для отключения.
2. Если в выпадающем списке (2) "Сортировать по:" выбрать опцию: "Класс / Название [Healers first]" то BGT всегда будет ставить обнаруженных хилов первыми.
3. Если на панели таргетов показывается знак вопроса (3), то это значит, что роль (хил/дд) еще не определена. Как только аддон определит спек, так сразу сменит иконку роли на соответствующую.
bgt_s3.png
О детекте хилов, базе данных, а так же про "слэш-команды":
Как писал ранее: данные для обработки поступают с трех независимых каналов и дублируют друг друга:
1.
raidNTarget — скан уникальных баффов, которые специфичны только для определенного спека хил/дд (например: Дисперсия, Облик тьмы у ШП. Астральный сдвиг или шаманистик у Шамана и т.д.). Сканирование происходит только тогда, когда кто-то из вашего рейда берет противника в цель.
2.
COMBAT_LOG_UNFILTERED — ищутся эвенты применения определенных баффов (уникальных для спека), которые могут быть наложены на совершенно другую цель. Как пример: только Холиприст может дать "Крылья". Это вспомогательный канал, поскольку в версии 3.3.5 не всегда работает стабильно.
3.
База данных (БД, громкое название конечно, но для краткости оставим как есть) — поиск и определение ролей сразу при заходе на бг и в процессе добора. Данные о хиле могут храниться в базе от одного до 11 месяцев включительно. По умолчанию: 6 месяцев. Удаляются только те ники, которые на протяжении указанного периода не встречались больше ни разу. А ники которые повторно встретились на БГ — просто перемещаются в конец очереди на удаление.
Установить период хранения данных в БД можно командой:
/bgt dbStoragePeriod <number> — число в мес. от 1 до 11. Если ввести команду без числа, то будет показано текущее время хранения данных. Так же БД можно отключить полностью, для этого используется предыдущая команда со значением 0. Включение - любое допустимое число.
За тот период пока писал и тестировал БД: у меня накопились некоторые данные по хилам.
Делюсь собственным набором данных, который вы можете, при желании, поставить к себе:
http://bit.ly/2PShKOL
Как ставить:
1. Идем по ссылке выше, копируем все текстовые поля (ctrl+a → ctrl+c).
2. Далее заходим в папку WTF\Account\ $YOUR_ACC_NAME$ \SavedVariables
3. Находим файлик BattlegroundTargets.lua, открываем в текстовом редакторе
a. Если Вы только что поставили аддон, и не заходили в игру, то: крутим в самый конец файла и на новой чистой строке делаем вставку (ctrl+v) того что копирнули выше.
b. Если Вы уже играли с новой версией данного аддона то, должны были записаться какие-то данные и их нужно заменить. Для этого: в текстовом редакторе жмем (ctrl+f) и вставляем следущую строчку:
BattlegroundTargets_HealersDB. Перейдя к искомой строке: удаляем ее и все что находится ниже, а на ее место вставляем новые данные.
4. Сохраняем документ.
P.s.: Структура данных в БД выбрана, конечно, не очень оптимально. Когда делал тестовую версию — думал переписать в последствии на "чистовик" после отладки всех кейсов. Но в итоге забил. Возможно, в случае интереса к данной версии аддона — сделаю оптимизацию алгоритмов сортировки, поиска и хранения данных. Не оптимальная структура, о которой я говорю, может вылиться в проблему, которая появится при большом объеме хранимых данных ( в контексте 3.3.5, это размер файла более ~2-5мб зависит от системы и от обвеса аддонами). Если при заходе на бг вы будете ловить фризы или во время БГ будут пролаги при обновлении реестра противников (кто-то новый зашел) — почистите файлик с данными, установите более короткий период для хранения данных, либо отключите работу БД: /bgt dbStoragePeriod 0.
Команда
/bgt dbStoragePeriod <number> не является единственной. При работе над аддоном требовался ряд логирующих инструментов для отладки механизма детектов, поэтому были добавлены следующие команды, которые могут быть полезны и вам, например, при репорте багов или для отлова "ботов-прицеперов":
- /bgt help — Выводит список всех доступных команд.
- /bgt hdlog — Показывает сообщения о детектах хилов/дд на БГ, сообщает о причине по которой произошел детект, а так же информирует о том сколько было сделано попыток для детекта. После БГ выдает отчет о всех успешных и не успешных детектах. Нужно писать до захода на БГ либо во время. Здесь можно спалить бота из противоположной фракции, который в след. раз, возможно, зайдет в вашу тиму. В данном случае (на картинке ниже) шамана с неизвестной ролью пытались определить 28 раз. Скорее всего, человек либо афкашил, либо это был "бот-прицепер", либо он не юзает баффы характерные для спека, что странно. Или же багует аддон :)
Обычно среднее допустимое значение по попыткам находится в диапазоне от 1 до 18 траев.
bgt_s4.png - /bgt hdlogAlways — Делает то же самое, что и команда выше, но позволяет не писать повторно hdlog каждый раз при релогах или релодах.
- /bgt hdreport — Выводит только репорт о всех детектах, когда вы находитесь на БГ.
- /bgt dbStoragePeriod <number> — [ описание команды находится выше ]
- /bgt — Просто открывает панель настроек BGT
Об известных проблемах и что не сделано:
1. [ Проблема ] Если во время комбата горит восклицательный знак над таргетами, то в данный момент аддон не перерисовывает фреймы, поскольку в данный момент происходит слишком много апдейтов. Это сделано предыдущими авторами аддона специально, чтобы избежать лишних фризов и сохранить производительность.
2. [ Проблема ] Если аддон показывает весь ваш рейд или только вас в рейде противников — пропишите команду /reload. В некоторых случаях это помогает. Если же не помогло, то, пожалуйста, сделайте скриншот(ы) в которых будет виден ник вашего персонажа: как отдельно, так и на панели фреймов BattlegroundTargets. А так же скриншот с открытой панелькой статистики по БГ. Я все еще пытаюсь отловить этот баг, который, увы, мне самому попался только один раз за кучу игр. Есть гипотеза, что связан баг с кириллическими никами, но она пока еще не подтверждена [не актуально]
3. [ Не сделано ] Отображение флагоносцев. Возможно, если дойдут руки, то поправлю в следующих версиях.
---------------------------------------
Вот вроде и все, о чем хотел рассказать. Спасибо, что дочитали xD
А так же спасибо Jud'у за мотивацию, помощь в тестировании, поиске и нахождении багов, фидбеке, а так же за ценные советы по детекту хилов. Без этой помощи данная версия аддона, скорее всего, вообще бы не вышла.
Ну и спасибо друзьям, с которыми вернулся в ВоВ, просто за терпение и участие в тестированиях.
Приятного PVP и до встречи на БГ!