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

Дайджест за июль-сентябрь

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

Сентябрь Август Июль

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

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

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

Бот статистики для Telegram

Удобная аналитика в телефоне.

Подробнее

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

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

Подробнее

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

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

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

LEM

Разработчик аддонов
  • Постов

    761
  • Зарегистрирован

  • Посещение

Весь контент LEM

  1. LEM

    PhantasmalKillerCD

    PhantasmalKillerCD Просмотр файла Самопальный таймер для отслеживания перезарядки вех "Трёхгранный клинок" и "Смертоносная тень". Команды: /pkcd - активирует/деактивирует перемещение /pkcd size 42 - размер /pkcd fade 1 - прозрачность (от 0 до 1) /pkcd reset - сбрасывает настройки После прочтения фикса возникает мысль про дебаф на цели с временем перезарядки, но ничего подобного. В скрытых бафах ничего похожего нет. Быть может он есть, просто не на клиенте. Ничего не напоминает? Для господства лучника и некроманта хотя бы был скрытый баф, от которого можно было отталкиваться. В текущем же исполнении нет даже этого. Спасибо хоть описание скорректировали. Добавил LEM Добавлено 24.09.2021 Категория Аддоны
  2. LEM

    PhantasmalKillerCD

    Версия 1.2

    377 раз скачали

    Самопальный таймер для отслеживания перезарядки вех "Трёхгранный клинок" и "Смертоносная тень". Команды: /pkcd - активирует/деактивирует перемещение /pkcd size 42 - размер /pkcd fade 1 - прозрачность (от 0 до 1) /pkcd reset - сбрасывает настройки После прочтения фикса возникает мысль про дебаф на цели с временем перезарядки, но ничего подобного. В скрытых бафах ничего похожего нет. Быть может он есть, просто не на клиенте. Ничего не напоминает? Для господства лучника и некроманта хотя бы был скрытый баф, от которого можно было отталкиваться. В текущем же исполнении нет даже этого. Спасибо хоть описание скорректировали.
    Бесплатный
  3. Его нельзя найти в stateMainForm, но есть и другой способ: local widgetTypes = { [ENUM_ADDON_TYPE_NONE] = 'ENUM_ADDON_TYPE_NONE', -- нет типа, тип не известен [ENUM_ADDON_TYPE_USER] = 'ENUM_ADDON_TYPE_USER', -- пользовательский аддон [ENUM_ADDON_TYPE_PROTECTED] = 'ENUM_ADDON_TYPE_PROTECTED', -- аддон разработчика (обычный интерфейсный аддон) } local wtContextActionbar = common.GetAddonMainForm('ContextActionbar') print(wtContextActionbar:GetName()) print(widgetTypes[wtContextActionbar:GetAddonType()]) print(wtContextActionbar:GetNamedChildren()) В логах такой вот печальный результат: [22:51:45]Info: addon Test(0): [22:51:45.492]: ContextActionbar [22:51:45]Info: addon Test(0): [22:51:45.493]: ENUM_ADDON_TYPE_PROTECTED [22:51:45]Error: addon Test(0): Widgets::LuaGetNamedChildren: can't get protected widget's children, details: int __cdecl Widgets::LuaGetNamedChildren(struct lua_State *) func: GetNamedChildren, method, line: -1, defined: C, line: -1, [C] func: Init, local, line: 866, defined: Lua, line: 846, [string "Mods/Addons/Test/Scripts/ScriptMai..."] func: ?, ?, line: 1134, defined: main, line: 0, [string "Mods/Addons/Test/Scripts/ScriptMai..."] [22:51:45]Info: addon Test(0): [22:51:45.494]: {} Главную форму ContextActionbar "запротектили". Всё.
  4. Есть проблема с сортировкой умений.
  5. Не смотрел событие, инсижки можно применять, но статы не изменяются. Из-за этого аддон уходит в бесконечную прокрутку до срабатывания защиты.
  6. Правка для вещей 3 тира. Изначально я надеялся, что подойдет itemLib.CanUseOnItem(sourceId, targerId) или itemLib.GetBlockingPredicateCause(itemId), но увы. А еще нет готовой функции для получения тира, поэтому пришлось сделать свою. local function getItemTier(itemId) local category = itemLib.GetCategory(itemId) local categoryInfo = category and itemLib.GetCategoryInfo(category) local tier = categoryInfo and categoryInfo.sysName and string.match(categoryInfo.sysName, 'Tier(%d+)') -- sysName = 'Tier03' return tier and tonumber(tier) or -1 end Также случайно обнаружил, что третий тир не максимальный. P.S. Кстати, в бою GetBlockingPredicateCause выдаст {isInNotPredicate = true, sysCause = "ENUM_ActionFailCause_NotInCombat"}. Можешь потом как-нибудь задействовать ее, чтобы не проверять состояние боя самому. StatManager.zip
  7. if string.find(name, 'Помощник:') then -- end Почему бы не детектить помощников таким образом? Не придется все названия вписывать.
  8. Могу предложить два варианта: Первый вариант для всех юнитов do -- советую положить себе куда-то эти две полезные функции function table.normalize(t) if t[0] ~= nil then table.insert(t, 0, nil) end return t end --[[ function table.denormalize(t) if t[0] == nil and t[1] ~= nil then t[0] = table.remove(t, 1) end return t end --]] end local units = {} common.RegisterEventHandler(function(p) if not units[p.unitId] then -- необязательная проверка для параноиков units[p.unitId] = { name = object.GetName(p.unitId) } -- chat(units[p.unitId].name, p.unitId, 'spawned') end end, 'EVENT_UNIT_SPAWNED') common.RegisterEventHandler(function(p) if units[p.unitId] then -- chat(units[p.unitId].name, p.unitId, 'despawned') units[p.unitId] = nil end end, 'EVENT_UNIT_DESPAWNED') local function InitAvatar(avatarId) for _, unitId in ipairs(table.normalize(avatar.GetUnitList())) do units[unitId] = { name = object.GetName(unitId) } end end local function Init() if avatar.IsExist() then InitAvatar(avatar.GetId()) else local function onAvatarCreated(p) common.UnRegisterEventHandler(onAvatarCreated, 'EVENT_AVATAR_CREATED') InitAvatar(p.id) end common.RegisterEventHandler(onAvatarCreated, 'EVENT_AVATAR_CREATED') end end Init() Второй вариант с фильтрацией по имени do -- советую положить себе куда-то эти две полезные функции function table.normalize(t) if t[0] ~= nil then table.insert(t, 0, nil) end return t end --[[ function table.denormalize(t) if t[0] == nil and t[1] ~= nil then t[0] = table.remove(t, 1) end return t end --]] end local units = {} local names = { ['Клыкастый кабан'] = true, } local function filter(name) -- можно воспользоваться common.CompareWString(text1, text2) return names[userMods.FromWString(name)] end common.RegisterEventHandler(function(p) if not units[p.unitId] then -- необязательная проверка для параноиков local name = object.GetName(p.unitId) if filter(name) then units[p.unitId] = { name = name } -- chat(units[p.unitId].name, p.unitId, 'spawned') end end end, 'EVENT_UNIT_SPAWNED') common.RegisterEventHandler(function(p) if units[p.unitId] then -- chat(units[p.unitId].name, p.unitId, 'despawned') units[p.unitId] = nil end end, 'EVENT_UNIT_DESPAWNED') local function InitAvatar(avatarId) for _, unitId in ipairs(table.normalize(avatar.GetUnitList())) do local name = object.GetName(unitId) if filter(name) then units[unitId] = { name = name } end end end local function Init() if avatar.IsExist() then InitAvatar(avatar.GetId()) else local function onAvatarCreated(p) common.UnRegisterEventHandler(onAvatarCreated, 'EVENT_AVATAR_CREATED') InitAvatar(p.id) end common.RegisterEventHandler(onAvatarCreated, 'EVENT_AVATAR_CREATED') end end Init()
  9. LEM

    UniStatBonusChecker

    UniStatBonusChecker Просмотр файла Показывает, когда господство не дает бонус. Команды: /usbc dnd - активирует/деактивирует перемещение /usbc reset - сбрасывает позицию Некромантам советую взглянуть на аддон GospodstvoNekromanta. Добавил LEM Добавлено 07.11.2020 Категория Аддоны  
  10. LEM

    AlRihatChestsDetector

    AlRihatChestsDetector Просмотр файла Помощник в поиске сундуков Ал-Риата, а также: Сундук (Иса) Экю, Пыльца фей (Айрин) Старинный сундук (Тающий остров) Сокровище, Большое сокровище (Суслангер) Сундук, Сокрытый сундук (Джигран) Сундук (Кадаган) Сундук (Кватор) Перемещать полоски можно с зажатым шифтом. /arcd reset - сбрасывает позицию Отдельная благодарность: ЛилиГраймз - идеи, тестирование ЛюблюДиму - идеи, автор меток Добавил LEM Добавлено 07.11.2020 Категория Аддоны  
  11. LEM

    TrinketCooldown

    TrinketCooldown Просмотр файла Показывает время восстановления бонусов от амулета и аугментаций брони. Команды: /tc dnd - активирует/деактивирует перемещение /tc reset - сбрасывает позицию Если вам требуется оповещение о срабатывании бонусов амулета, то взгляните на NotifyTrink2. Добавил LEM Добавлено 07.11.2020 Категория Аддоны  
  12. LEM

    TooltipExpirationTime

    TooltipExpirationTime Просмотр файла Показывает дату и время сгорания предметов в их описании. Добавил LEM Добавлено 07.11.2020 Категория Аддоны  
  13. LEM

    TooltipExpirationTime

    Версия 2.2

    2 055 раз скачали

    Показывает дату и время сгорания предметов в их описании.
    Бесплатный
  14. LEM

    TrinketCooldown

    Версия 2.3

    20 240 раз скачали

    Показывает время восстановления бонусов от амулета и аугментаций брони. Команды: /tc dnd - активирует/деактивирует перемещение /tc reset - сбрасывает позицию Если вам требуется оповещение о срабатывании бонусов амулета, то взгляните на NotifyTrink2.
    Бесплатный
  15. LEM

    AlRihatChestsDetector

    Версия 2.8

    58 651 раз скачали

    Помощник в поиске сундуков Ал-Риата, а также: Сундук (Иса) Экю, Пыльца фей (Айрин) Старинный сундук (Тающий остров) Сокровище, Большое сокровище (Суслангер) Сундук, Сокрытый сундук (Джигран) Сундук (Кадаган) Сундук (Кватор) Перемещать полоски можно с зажатым шифтом. /arcd reset - сбрасывает позицию Отдельная благодарность: ЛилиГраймз - идеи, тестирование ЛюблюДиму - идеи, автор меток
    Бесплатный
  16. LEM

    UniStatBonusChecker

    Версия 1.5

    6 985 раз скачали

    Показывает, когда господство не дает бонус. Команды: /usbc dnd - активирует/деактивирует перемещение /usbc reset - сбрасывает позицию Некромантам советую взглянуть на аддон GospodstvoNekromanta.
    Бесплатный
  17. Есть три способа решить эту проблему: 1. Экранируем кавычки "\"Злая девка\" пошла ко дну! Меня Вонючий Жо прислал!" 2. Оборачиваем реплику в одинарные кавычки '"Злая девка" пошла ко дну! Меня Вонючий Жо прислал!' 3. Используем синтаксис многострочного текста [["Злая девка" пошла ко дну! Меня Вонючий Жо прислал!]]
  18. LEM

    SmartCast

    Работает. Попробуй с умением Mighty Leap.
  19. LEM

    CooldownInfo

    Просто применение не всех умений можно отловить. Информация в файле очень старая, проще включить отображение всех кулдаунов. [19:29:33]Info: addon CooldownInfo(0): [19:29:33.410] buff_added [19:29:33]Info: addon CooldownInfo(0): [19:29:33.416] buff: name 'Драконье зелье поглощения', remaining 9.979, duration 10, stackCount 1, stackLimit 1, isStackable false, isNeedVisualizeDuration true [19:29:33]Info: addon CooldownInfo(0): [19:29:33.420] spell: name 'Драконье зелье поглощения', rank 1, predicted 300, texture true [19:29:33]Info: addon CooldownInfo(0): [19:29:33.425] object: name 'Лево', id 7519, sys 'ENGINEER', owner 'none' [19:47:41]Info: addon CooldownInfo(0): [19:47:41.219] buff_added [19:47:41]Info: addon CooldownInfo(0): [19:47:41.224] buff: name 'Кровь Арейсии', remaining 4.98, duration 5, stackCount 1, stackLimit 1, isStackable true, isNeedVisualizeDuration true [19:47:41]Info: addon CooldownInfo(0): [19:47:41.230] spell: name 'Выпить', rank 1, predicted 300, texture false [19:47:41]Info: addon CooldownInfo(0): [19:47:41.234] object: name 'Лево', id 7519, sys 'ENGINEER', owner 'none' [19:47:41]Info: addon CooldownInfo(0): [19:47:41.239] [19:47:41]Info: addon CooldownInfo(0): [19:47:41.244] healing_received [19:47:41]Info: addon CooldownInfo(0): [19:47:41.249] spell: name 'Выпить', rank 1, predicted 300, texture false [19:47:41]Info: addon CooldownInfo(0): [19:47:41.253] object: name 'Лево', id 7519, sys 'ENGINEER', owner 'none'
  20. LEM

    CooldownInfo

    Перемещать список умений можно было всегда. В версии 3.3 появилась возможность менять размер. Файла нет и аддоны ничего не пишут туда скорее всего из-за того, что в файле \Personal\Global.cfg не выставлено значение user_mods_log_enable=1
  21. Привет. Не могу написать это на английском, но у меня есть идея для этого аддона. Почему бы дополнительно не логировать параметры события? Я давно использую примерно такой код, когда надо посмотреть когда и с какими параметрами приходит событие: common.RegisterEventHandler(function(params) chat('EVENT_OBJECT_BUFFS_ELEMENT_CHANGED', params) end, 'EVENT_OBJECT_BUFFS_ELEMENT_CHANGED') В этом мне помогает неплохая функция advtostring и мой самодельный скрипт для отправки текста в чат. Если не хочется использовать мой скрипт, то я тут набросал код для чата: common.RegisterEventHandler(function(params) local time = common.GetLocalDateTime() local valuedText = common.CreateValuedText() common.SetTextValues(valuedText, { format = userMods.ToWString('<html color="0xffccc5b7" fontsize="14"><r name="time"/> [<r name="addon"/>]: <r name="event"/> <r name="params"/></html>'), time = { format = userMods.ToWString('<html><r name="h"/>:<r name="m"/>:<r name="s"/>.<r name="ms"/></html>'), h = common.FormatNumber(time.h, '2'), m = common.FormatNumber(time.min, '2'), s = common.FormatNumber(time.s, '2'), ms = common.FormatNumber(time.ms, '3') }, addon = userMods.ToWString('EventLogger'), event = userMods.ToWString('EVENT_OBJECT_BUFFS_ELEMENT_CHANGED'), params = userMods.ToWString(string.format('<html>%s</html>', string.gsub(advtostring(params, false), '%c', {['\t'] = ' ', ['\n'] = '<br/>'}))) }) ChatLog:PushValuedText(valuedText) end, 'EVENT_OBJECT_BUFFS_ELEMENT_CHANGED') Надеюсь, ты сможешь это перевести, либо поймешь идею по картинке и коду
  22. Небольшое уточнение. Это работает со всеми ресурсами аддона. Виджеты, текстуры, тексты и т.д.
×
×
  • Создать...

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

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