Перейти к содержимому

Высокая работоспособность
Геодата, классы и способности, подземелья и рейды:
всё, как было на официальных серверах!
Без малого 15 лет работы
29 июня нашему проекту исполняется 15 лет,
старейший сервер рунета,
ни одного вайпа за этот срок!
Бесплатно и без доната
Наш проект является полностью бесплатным,
на нём отсутствует покупка игровых ценностей, влияющих на баланс.
Отсутствие лагов
Благодаря 4 мощным серверам и надежному провайдеру
в игре полностью отсутствуют лаги!
Трансфер с других серверов
Приходите к нам со своим персонажем,
воспользуйтесь БЕСПЛАТНОЙ
услугой по переносу персонажа на наш проект!
Высокий онлайн
Онлайн на всех наших мирах РЕАЛЬНЫЙ,
ежесуточно наши миры посещает более
12000 игроков!
Хорошая техподдержка
Четыре сотрудника, отвечающих за решение ваших вопросов,
всегда выслушают и обязательно помогут.
Мы предоставляем действительно качественный сервис!
Начать играть

Создание аддона с достижениями

аддон достижения

  • Авторизуйтесь для ответа в теме

Сообщений в теме: 14

#1 Hesvul

Отправлено 03 апреля 2026 - 14:11

ребята, как написано в названии хочется сделать аддон с достижениями для хк, у меня получилось сделать только окно со списком достижений, но они не засчитываются, ни по именам нпс, ни по id которые брал с вики/базы, есть ли те кто разбирается в создании аддонов и может что либо рассказать, хотелось бы хотя бы сделать простой от убийств определенных мобов, определенных заданий и может быть количества убитых мобов


  • 0

Начать играть на EzWoW?
Присоединяйтесь к нашему сообществу!
Играйте на самом работоспособном и стабильном русскоязычном WoW сервере без доната игровых ценностей!

#2 drreserv3d

Отправлено 03 апреля 2026 - 18:32

Чисто из интереса немного потыкался, навайбкодил вот эту штуку:

1) При убийстве врага (клик левой или правой кнопкой мыши по его трупу) добавляет в базу данных об убитых противниках имя и число убийств

2) Файл с базой у каждого персонажа свой и лежит в WTF\Account\АККАУНТ\СЕРВЕР\ИМЯ\SavedVariables

3) Добавил защиту от повторных кликов по одному и тому же трупу при помощи буфера на 50

4) При убийстве противника в чат отправляется надпись со статистикой ЛИБО всплывает достижение

5) Свои достижения на убийство противников пили в таблице достижений, у меня там самая простая структура для количества убийств без всяких вложенностей

6) Достижение висит 10 секунд, за это отвечает параметр toast.timeLeft = 10

7) Вывести статистику в чат можно командой /nkstat
8) Открыть журнал достижений со всеми полученными "ачивками" и причинами получения можно командой /nkachieve

На этом мой энтузиазм иссяк, попробуй потыкаться, может что-нибудь еще докрутишь и сделаешь полноценный аддон

Прикрепленные файлы

  • Прикрепленный файл  test.zip   3,61К   3 скачиваний

Сообщение отредактировал drreserv3d: 03 апреля 2026 - 18:32

  • 2

#3 Hesvul

Отправлено 03 апреля 2026 - 19:08

Чисто из интереса немного потыкался, навайбкодил вот эту штуку:

1) При убийстве врага (клик левой или правой кнопкой мыши по его трупу) добавляет в базу данных об убитых противниках имя и число убийств

2) Файл с базой у каждого персонажа свой и лежит в WTF\Account\АККАУНТ\СЕРВЕР\ИМЯ\SavedVariables

3) Добавил защиту от повторных кликов по одному и тому же трупу при помощи буфера на 50

4) При убийстве противника в чат отправляется надпись со статистикой ЛИБО всплывает достижение

5) Свои достижения на убийство противников пили в таблице достижений, у меня там самая простая структура для количества убийств без всяких вложенностей

6) Достижение висит 10 секунд, за это отвечает параметр toast.timeLeft = 10

7) Вывести статистику в чат можно командой /nkstat
8) Открыть журнал достижений со всеми полученными "ачивками" и причинами получения можно командой /nkachieve

На этом мой энтузиазм иссяк, попробуй потыкаться, может что-нибудь еще докрутишь и сделаешь полноценный аддон

интересно, жаль что статистика идет только через клик по трупу конечно, но уже неплохо


  • 0

#4 drreserv3d

Отправлено 03 апреля 2026 - 21:17

Я не придумал как это иначе сделать. По идее у COMBAT_LOG_EVENT_UNFILTERED есть subevent UNIT_DIED, но то ли я что-то криво делал, то ли на 3.3.5 этого еще не было, то ли у нас это логирование отключено на сервере, то ли не так собирал информацию для отладки, но у меня максимум получалось поймать событие PLAYER_REGEN_ENABLED, которое просто регистрирует состояние выхода из боя:

"Fired after ending combat, as regen rates return to normal. Useful for determining when a player has left combat. This occurs when you are not on the hate list of any NPC, or a few seconds after the latest pvp attack that you were involved with."


  • 0

#5 CrossDoOm

Отправлено 04 апреля 2026 - 03:30

Я не придумал как это иначе сделать. По идее у COMBAT_LOG_EVENT_UNFILTERED есть subevent UNIT_DIED, но то ли я что-то криво делал, то ли на 3.3.5 этого еще не было, то ли у нас это логирование отключено на сервере, то ли не так собирал информацию для отладки, но у меня максимум получалось поймать событие PLAYER_REGEN_ENABLED, которое просто регистрирует состояние выхода из боя:

"Fired after ending combat, as regen rates return to normal. Useful for determining when a player has left combat. This occurs when you are not on the hate list of any NPC, or a few seconds after the latest pvp attack that you were involved with."

должно приходить, если юнита убивает участник группы/рейда или ты сам, в параметре GUID передаётся, по нему можно CreatureID получить, по нему уже искать к какой ачиве относится. а вообще на прогресс/получение ачив тоже должны быть события

инфу по конкретной ачиве можн ополучать через GetAchievementInfo (https://wowwiki-arch...AchievementInfo)

есть ещё ивент PARTY_KILL 

UNIT_DIED destGUID and destName refer to the unit that died.

PARTY_KILL includes both sourceGUID and destGUID, but only reports for you (not in a party) or your other 4 party members (not raid members)

 


Сообщение отредактировал CrossDoOm: 04 апреля 2026 - 04:40

  • 0

05475b9fb738da666f3cad4f5603a2f8.png 2da136002bde4569f188e5a6a886a975.png e186c88ded6ac355fe07e951a73314aa.png


#6 drreserv3d

Отправлено 04 апреля 2026 - 10:13

интересно, жаль что статистика идет только через клик по трупу конечно, но уже неплохо

 

Я понял свою принципиальную ошибку. Я зашел во вкладку "Журнал боя", нажал на стрелочку и поставил галочку "Убийства". После этого лог боя стал примерно вот таким:
[PLAYER_TARGET_CHANGED] -- Взял в таргет противника
[COMBAT_LOG_EVENT] subevent=PARTY_KILL src=ИМЯ dst=ВРАГ
[COMBAT_LOG_EVENT_UNFILTERED] subevent=PARTY_KILL src=ИМЯ dst=ВРАГ
[COMBAT_LOG_EVENT] subevent=UNIT_DIED src=nil dst=ВРАГ
[COMBAT_LOG_EVENT_UNFILTERED] subevent=UNIT_DIED src=nil dst=ВРАГ
[PLAYER_TARGET_CHANGED] -- Смена цели (таргет пропал)
[PLAYER_REGEN_ENABLED] -- Выход из боя
 
Вот исправленная версия счетчика, который работает как ты и хотел

Прикрепленные файлы


Сообщение отредактировал drreserv3d: 04 апреля 2026 - 10:13

  • 1

#7 Hesvul

Отправлено 04 апреля 2026 - 15:43

 

Я понял свою принципиальную ошибку. Я зашел во вкладку "Журнал боя", нажал на стрелочку и поставил галочку "Убийства". После этого лог боя стал примерно вот таким:
[PLAYER_TARGET_CHANGED] -- Взял в таргет противника
[COMBAT_LOG_EVENT] subevent=PARTY_KILL src=ИМЯ dst=ВРАГ
[COMBAT_LOG_EVENT_UNFILTERED] subevent=PARTY_KILL src=ИМЯ dst=ВРАГ
[COMBAT_LOG_EVENT] subevent=UNIT_DIED src=nil dst=ВРАГ
[COMBAT_LOG_EVENT_UNFILTERED] subevent=UNIT_DIED src=nil dst=ВРАГ
[PLAYER_TARGET_CHANGED] -- Смена цели (таргет пропал)
[PLAYER_REGEN_ENABLED] -- Выход из боя
 
Вот исправленная версия счетчика, который работает как ты и хотел

 

посмотрел, да считает, причем даже мобы пошли в зачет прошлой версии, спасибо, надеюсь дальше осилю


  • 0

#8 CrossDoOm

Отправлено 04 апреля 2026 - 18:02

 

Я понял свою принципиальную ошибку. Я зашел во вкладку "Журнал боя", нажал на стрелочку и поставил галочку "Убийства". После этого лог боя стал примерно вот таким:
[PLAYER_TARGET_CHANGED] -- Взял в таргет противника
[COMBAT_LOG_EVENT] subevent=PARTY_KILL src=ИМЯ dst=ВРАГ
[COMBAT_LOG_EVENT_UNFILTERED] subevent=PARTY_KILL src=ИМЯ dst=ВРАГ
[COMBAT_LOG_EVENT] subevent=UNIT_DIED src=nil dst=ВРАГ
[COMBAT_LOG_EVENT_UNFILTERED] subevent=UNIT_DIED src=nil dst=ВРАГ
[PLAYER_TARGET_CHANGED] -- Смена цели (таргет пропал)
[PLAYER_REGEN_ENABLED] -- Выход из боя
 
Вот исправленная версия счетчика, который работает как ты и хотел

 

 

COMBAT_LOG_EVENT не нужно отслеживать, если отслеживаешь COMBAT_LOG_EVENT_UNFILTERED, разница как раз в том, что первый ловит события комбат лога с учётом твоих настроек комбатлога, второй ловит все события комбатлога (как раз второй чаще используется аддонами чтобы от этих самых настроек не зависеть, а видеть все ивенты)

f:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED") -- только ОДНО событие!
f:SetScript("OnEvent", function(self, event, timestamp, subevent, hideCaster, 
    sourceGUID, sourceName, sourceFlags, sourceRaidFlags, 
    destGUID, destName, destFlags, destRaidFlags)

тут набор параметров из более поздних версий, например параметров hideCaster и  ___RaidFlags в ЛКшном интерфейсе ещё нет, соответственно функция уже не будет работать так как ожидается, т.к. параметры смещены. правильный набор параметров:

(self, event, timestamp, subevent, sGUID, sName, sFlags, dGUID, dName, dFlags, ...)

P.S. а так лайк конечно тебе за то что ты вообще понял что хотел автор. потому что я - не понял :D


  • 0

05475b9fb738da666f3cad4f5603a2f8.png 2da136002bde4569f188e5a6a886a975.png e186c88ded6ac355fe07e951a73314aa.png


#9 Hesvul

Отправлено Вчера, 00:02

COMBAT_LOG_EVENT не нужно отслеживать, если отслеживаешь COMBAT_LOG_EVENT_UNFILTERED, разница как раз в том, что первый ловит события комбат лога с учётом твоих настроек комбатлога, второй ловит все события комбатлога (как раз второй чаще используется аддонами чтобы от этих самых настроек не зависеть, а видеть все ивенты)

f:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED") -- только ОДНО событие!
f:SetScript("OnEvent", function(self, event, timestamp, subevent, hideCaster, 
    sourceGUID, sourceName, sourceFlags, sourceRaidFlags, 
    destGUID, destName, destFlags, destRaidFlags)

тут набор параметров из более поздних версий, например параметров hideCaster и  ___RaidFlags в ЛКшном интерфейсе ещё нет, соответственно функция уже не будет работать так как ожидается, т.к. параметры смещены. правильный набор параметров:

(self, event, timestamp, subevent, sGUID, sName, sFlags, dGUID, dName, dFlags, ...)

P.S. а так лайк конечно тебе за то что ты вообще понял что хотел автор. потому что я - не понял :D

я же написал в начале, аддон с достижениями для хардкора, вот сейчас получились уже сделать такое, там вкладки с достижениями за определенное количество убийств, количество заданий, взятие уровней и достижение за смерть (после которого другие достижение стираются, ну и кнопку сброса статистики на всякий случай


для меня на самом деле это уже успех, так как я почти не шарю

Прикрепленные изображения

  • 2026-04-04_23-56-17.png

Сообщение отредактировал Hesvul: Вчера, 00:01

  • 0

#10 CrossDoOm

Отправлено Вчера, 00:36

я же написал в начале, аддон с достижениями для хардкора, вот сейчас получились уже сделать такое, там вкладки с достижениями за определенное количество убийств, количество заданий, взятие уровней и достижение за смерть (после которого другие достижение стираются, ну и кнопку сброса статистики на всякий случай


для меня на самом деле это уже успех, так как я почти не шарю

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

так-то можно что угодно наваять, вплоть до подсчёта общей статы для всех персов внутри игрового аккаунта. как говорится, без точного ТЗ - результат ХЗ :)


  • 1

05475b9fb738da666f3cad4f5603a2f8.png 2da136002bde4569f188e5a6a886a975.png e186c88ded6ac355fe07e951a73314aa.png


#11 Hesvul

Отправлено Вчера, 04:12

для теста, добавлены достижения:

- за убийства 

- за квесты

- за каждого элитника и рарника

- за уровни

- за смерть

добавлен поиск по достижениями, полный сброс статистики и возможно линк достижений, но я не уверен работает ли он, так как нужен второй человек с аддоном

https://drive.google...iew?usp=sharing

не нашел того бы кто затестил, многие спят уже, так что если что напишите


Сообщение отредактировал Hesvul: Вчера, 04:49

  • 0

#12 drreserv3d

Отправлено Вчера, 15:42

Проверил в два окна, вижу сообщение аддона об успешной отправке, фактически никаких сообщений не отправляется
 

Вот какой-то вариант мгновенной отправки линка в канал /сказать - игроки с аддоном видят линк как будто бы это достижение, без аддона простой текст

Я точно менял логику кнопки линк (ищи по -- Кнопка "Линк" для отправки достижения в чат), точно трогал блок (-- ======= КАСТОМНЫЕ ССЫЛКИ НА ДОСТИЖЕНИЯ В ЧАТ =======), там вроде была ошибка с символами при парсинге. Остальные разделы вроде бы не трогал, но уже точно не вспомню

Скорее всего есть какой-то более простой или изящный вариант, я уже глубже копать не стал

 

Ну и так по мелочи, на что у меня уже не хватило усидчивости:

1) Случайно заметил что иконка аддона интересно двигается почти куда угодно - я ее смог и внутри миникарты поставить, и оторвать от миникарты

2) Вспомнил что видел на курсе аддон, который запоминает и отображает рекорды по урону для всех кнопок. Есть такое ощущение что тебе что-то подобное тоже захочется отслеживать

https://www.cursefor...addons/critline

3) Судя по вики на 3.3.5 доступна функция UnitClassification, которая умеет возвращать тип нпс. Если это так, то можно не хардкодить достижения за убийство редких врагов

Прикрепленные файлы

  • Прикрепленный файл  123.zip   20,04К   3 скачиваний

  • 1

#13 Hesvul

Отправлено Вчера, 15:47

Проверил в два окна, вижу сообщение аддона об успешной отправке, фактически никаких сообщений не отправляется
 

Вот какой-то вариант мгновенной отправки линка в канал /сказать - игроки с аддоном видят линк как будто бы это достижение, без аддона простой текст

Я точно менял логику кнопки линк (ищи по -- Кнопка "Линк" для отправки достижения в чат), точно трогал блок (-- ======= КАСТОМНЫЕ ССЫЛКИ НА ДОСТИЖЕНИЯ В ЧАТ =======), там вроде была ошибка с символами при парсинге. Остальные разделы вроде бы не трогал, но уже точно не вспомню

Скорее всего есть какой-то более простой или изящный вариант, я уже глубже копать не стал

 

Ну и так по мелочи, на что у меня уже не хватило усидчивости:

1) Случайно заметил что иконка аддона интересно двигается почти куда угодно - я ее смог и внутри миникарты поставить, и оторвать от миникарты

2) Вспомнил что видел на курсе аддон, который запоминает и отображает рекорды по урону для всех кнопок. Есть такое ощущение что тебе что-то подобное тоже захочется отслеживать

https://www.cursefor...addons/critline

3) Судя по вики на 3.3.5 доступна функция UnitClassification, которая умеет возвращать тип нпс. Если это так, то можно не хардкодить достижения за убийство редких врагов

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


  • 0

#14 Hesvul

Отправлено Вчера, 16:26

спасибо кстати за линки, это даже лучше чем я бы мог сделать думаю


  • 0

#15 Hesvul

Отправлено Вчера, 23:22

переделал/сделал:
- изменил размеры всех панелей и фреймов
- добавил подсветку вкладок
- достижение за красную сумку
- достижение за смерть на 79 лвле
- убран счетчик в чате
- поправил размер достижений
- добавил линк в лс, правда пока не смог сделать что бы этот линк был кликабельным как в других чатах
 
думаю сделать/переделать:
- разные иконки
- достижение за вход в бк
- достижение за вход в лк
-достижения за определенные задания

пишите если есть идеи
 

https://drive.google...iew?usp=sharing


Сообщение отредактировал Hesvul: Вчера, 23:23

  • 0



Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 скрытых пользователей

UCaller Visa Mastercard Paypal Qiwi Robokassa Yookassa
Договор-оферта Условия возврата Условия обработки данных
Подробности - о сервере?
Играй на нашем сервере!
Бесплатный сервер WoW 3.3.5 Wrath of the Lich King - уже 17 лет мы радуем наших игроков, присоединяйся к ним!
Без доната! Всё работает!
Нет - продаже предметов, влияющих на игровой процесс. Да - высокой работоспособности - проверь!

Система лояльности

За внутриигровую активность Вы будете получать Сферы Лояльности, которые автоматически конвертируются в бонусы для покупок в магазине сервера:

  • Победа в матче на Арене: 15% от текущего рейтинга;
    (т.е. примерно 300 при рейтинге в 2000)
  • Победа в сражении на Полях Боя: 12.5% от текущего рейтинга;
    (т.е. примерно 500 при рейтинге в 4000)

(только при использовании системы Поиска Подземелий)

(только актуальные рейдовые подземелья - ЦЛК, РС и ИВК)

За каждые 100 Сфер Лояльности Вы получаете 1 бонусный рубль, который можете использовать для полной или частичной оплаты чего-нибудь нужного из магазина.


Участие в особом событии - Цареубийстве!

Кажд (для игроков Альянса) и кажд (для игроков Орды) с 16:00 до 22:00 (по московскому времени) проводится особое событие - Цареубийство!


Достаточно убить одного из предводителей противоположной фракции и получить награду: 2000 Сфер Лояльности! Следите за уведомлениями в чате...


Еженедельно можно получить 15000 Сфер Лояльности, после достижения данного значения бонусы за вышеперечисленные действия начисляться не будут.