Перейти к содержанию

Дайджесты за январь-февраль

Обновления гайдов и аддонов

Январь Февраль

Мониторинг серверов и редактор аддонов

Представляем вам две легенды. То, о чем можно было только мечтать, стало реальностью.

Мониторинг серверов Редактор аддонов

Подсказки из игры на вашем сайте

Теперь вы можете отображать сведения о внутриигровых элементах простым наведением курсора мыши.

Подробнее

Апдейтер аддонов

Представляем вам программу для автообновления аддонов и делимся подробностями.

Подробнее Скачать


Гость EsAlexey

Рекомендуемые сообщения

HealthDb

Просмотр файла

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

Статистика хранится в файле конфигурации Allods Online\Personal\user.cfg в секции ScriptLocal_HealthDb и сохраняется при переходе в другую локацию или завершении игры кнопкой "Завершить" из главного меню на первой секунде ожидания. Отмена завершения не мешает сохранению, что позволяет пересохранять данные без выхода из игры. Выход из игры (кнопка "Выйти") или вылет по ошибке не сохраняет данные.

Данные по игрокам и их петам не сохраняются в конфиге, а существуют только в памяти скрипта пока игрок или пет находятся в зоне видимости игрока, что удобно в ПВП и хилам в героиках.

Статистика собирается на основе вычисления отношения между суммой полученного урона и разницей процента здоровья перед первым получением урона и процента текущего здоровья. Все лечение вычитается из суммы урона. Последний удар (летальный) не учитывается, т.к. обычно имеет значение большее, чем остававшееся здоровье юнита. Статистика сохраняется только, если разница здоровья была не менее 10%.

Сейчас в аддоне сохранение статистики происходит слишком часто (при смерти, полном выздоровлении и деспавне моба), что создает нагрузку на файл конфига, особенно когда мобов становится много, у меня после пары недель разработки и тестирования собралось более 700 записей таблицы мобов. Статистика сохраняется даже, если не игрок бил мобов, а другие игроки в его области видимости. Вариантом решения может быть сохранение статистики при выходе из игры, но подобного события в API я найти не смог.

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


 

Ссылка на комментарий
Поделиться на другие сайты

Работает) с ДПС метром совпадают значения после убийства на ДПС и общее кол-во хп на этом аддоне

Ссылка на комментарий
Поделиться на другие сайты

Очень интересный аддон. Но есть вопрос - он не будет затормаживать работу клиента? или сильно нагружать его? как я понимаю любые базы - занимают достаточно много места.

Ссылка на комментарий
Поделиться на другие сайты

Quote:
Вариантом решения может быть сохранение статистики при выходе из игры, но подобного события в API я найти не смог.

Есть событие EVENT_AVATAR_WILL_BE_REMOVED. Это как раз тот момент, когда жмешь кнопку "завершить" и идет таймер отмены. На последней(первой, десятой) секунде сделать сохранение
Можно на него прилепить сохраниение, правда при всяких аварийных завершениях сохранения не будет
Можно например еще сохранять при переходе в другую подзону EVENT_AVATAR_CLIENT_ZONE_CHANGED
Ссылка на комментарий
Поделиться на другие сайты

А можно сохранять по клику на кнопке.

Сделать два режима - автоматический и ручной. В ручном будет только кнопка сохранения. В автоматическом - сделать окошко с настройками, в нем чекбоксы - при каких событиях сохранять и переключатель ручной/авто режим. Возможных событий налепить как можно больше, а юзеры уже сами протестят и выберут, при каких событиях наиболее эффективно работает автосохранение. В последующих версиях удалить ненужные события из настроек.

Ссылка на комментарий
Поделиться на другие сайты

Для сохранения базы данных здоровья мобов используется событие EVENT_AVATAR_WILL_BE_REMOVED, подробнее в логе изменений. Старый режим сохранения (при смерти, полном выздоровлении и деспавне моба) не используется. Теперь нагрузка на клиент минимальна и намного меньше чем от DarkDPSMeter.

Ссылка на комментарий
Поделиться на другие сайты

очень подробное описание аддона. Спасибо за это!

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

Ссылка на комментарий
Поделиться на другие сайты

  • 1 месяц спустя...

EsAlexey, как насчёт заменить единственное русское слово "из" на слэш "/" или (что гораздо прикольнее) локализовать его на 4 языках? =))

Просто 7-го июля, заграница получит АО 1.1, причём, с официальной поддержкой аддонов :)

А у нас уже готова такая технология локализации аддонов (работает только в АО 1.1.02.10+) :

HOW-TO: Локализация аддонов / Localization of addons

Вот так можно локализовать слово "из":

rus: A из B

eng: A of B

ger: A von B

fra: A sur B

Ссылка на комментарий
Поделиться на другие сайты

Добрый день, я немного изменил аддон:

- Цифры отображаются не снизу, а в полосе HP

- Так как в полоске мало места, то от локализации я отказался и заменил "из" на "/".

- Жизни аватара, мобов которых нет в базе и у которых 0 HP не отображаются.

- Сохранение при переходе из зоны в зону и при завершении.

Кому интересно скачивайте.

В будущих обновлениях аддона думаю это будет включено.

Ссылка на комментарий
Поделиться на другие сайты

Включил эти изменения в аддон с небольшими поправками кода и внешнего вида. Обновление аддона сделать пока не получается, вопрос будет решаться в ближайшее время совместно с администрацией сайта.

Ссылка на комментарий
Поделиться на другие сайты

А ты не думал вынести базу из файла конфигурации? А то при удалении аддона там останется мусор, да и читаться он долше будет при большом количестве записей.

UPD почитал форум, в фаил писать нельзя, жаль.

Ссылка на комментарий
Поделиться на другие сайты

Удалось обновить аддон, похоже, что проблема была из-за удаления не нужных теперь папок с локализацией из дистрибутива.

Ссылка на комментарий
Поделиться на другие сайты

а зачем с дохлых хелсы выключены? хочется же знать сколько было у того кого ты только что раскромсал

Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...

Hi everyone, I'm a French player and I think this add-on is really great.

Here we are playing version 1.1.00.44.1 of the game.

I installed revision 2 of this add-on : it works well.

However latest version does not work : there is nothing displayed under the life bar of the monsters.

Is there anything I can tweak to make it work? Thanks a lot!

--

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

Здесь мы играем 1.1.00.44.1 версия игры.

Я установил 2-й пересмотр этого дополнения: он работает хорошо.

Однако последняя версия не работает: нет ничего, отображаемые в жизни баре монстров.

Есть ли что-либо я могу настроить, чтобы он работал? Спасибо большое!

Ссылка на комментарий
Поделиться на другие сайты

2neFAST

In file HealthDb\HealthDb.lua find lines

Code:
userMods.SetGlobalConfigSection("HealthDb", vMobsDb)

Code:
MobsDb = userMods.GetGlobalConfigSection("HealthDb")

and replace:

Code:
common.SetGlobalConfigSection("HealthDb", vMobsDb)

Code:
MobsDb = common.GetGlobalConfigSection("HealthDb")
Ссылка на комментарий
Поделиться на другие сайты

Hi, your health calculation works good with little enemys (much bether than HealthCalculator), but with big bosses it has also problems. The Problem is, that your algorithm is optimized on enemys, that take more than one percent damage by every hit. Therefore it works with normal enemys very fine, but on big bosses not, because you take only a fractional amount of one percentage of their hp by hit. (the max hp slowly increase and then after a jump of a percent it make a big step down to an lowver nivea) So you can optimized your code as follows:

First you check if the enemy take more than one percent of damage by one hit. In that case you calculate the max_hp as before. If not you calculate the hp_left as before, but wait with calculate the max_hp until the enemys hp_percentage reduces by one.

For exempale: The mob has now 87% of hp. Now you log every time the taken_damage ( - heal) in an temporary variable until the hp_percentage change to 86%. Now you have the taken_damage of the last hit in 87% and the taken_damage of the first hit in 86%. Now you can make the average of both and know, that this number equals 13,5% of the hp of the enemy.

This procedure would make the calculation on high hp bosses more accurate.

BTW: Can you add these lines of code to your addon:

Code:
-- Hack for AO 1.1.00 / 1.1.01 by SLA

if common.GetGlobalConfigSection then

    if not avatar.GetEmotes then Global( "userMods", {} ) end

    userMods.GetGlobalConfigSection = common.GetGlobalConfigSection

    userMods.SetGlobalConfigSection = common.SetGlobalConfigSection

end

(from DarkDPSMeter\Scripts\AOClassLibrary.lua)

because then it also works in EU and US version of the game.

Ссылка на комментарий
Поделиться на другие сайты

Обновил аддон для учета отличий EU и US от RU.

Урон менее 1% для боссов уже учтен в алгоритме аддона: каждое получения нелетального урона суммируется в особой переменной, полученное лечение уменьшает эту сумму, а изменение процента здоровья никогда не суммируется, а всегда берется текущим. При исцелении моба до 100% сумма урона сбрасывается, поэтому для получения величины здоровья моба нужно довести его до 99% здоровья и менее и не давать ему исцеляться до 100%. Величина здоровья рассчитывается по формуле: Здоровье = Суммарный_Урон_На_Текущий_Момент * 100 / Разница_Процентов_Здоровья_От_Начала_Суммирования_Урона_До_Значения_Текущего_Момента.

Ссылка на комментарий
Поделиться на другие сайты

r9 does not work in US/EU version, because "usermods" does not excist and so "if usermods" produce an error.

So please use "if avatar.GetEmotes then ... else ... end" instead of "if usdermods then ... elseif common ... end" or use thhe code from the DarkDPSMeter.

Ссылка на комментарий
Поделиться на другие сайты

ВНИМАНИЕ!
Обязательна информация из \Personal\Logs\mods.txt для диагностики ошибки.
Иначе вам не помочь.
В игре включите в Меню → Интерфейс → Общие настройки → Запись ошибок пользовательских дополнений. Затем запустите аддон в игре.
Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...

Важная информация

Пользуясь сайтом, вы принимаете Условия использования