-
Постов
716 -
Зарегистрирован
-
Посещение
Тип контента
Загрузки
Форумы
Статьи и объявления
Гардероб
Маунты
Сообщения Allods Team
Трекер ошибок
Магазин
Галерея
Сообщения, опубликованные LEM
-
-
Правка для вещей 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"}.
Можешь потом как-нибудь задействовать ее, чтобы не проверять состояние боя самому. -
if string.find(name, 'Помощник:') then -- end
Почему бы не детектить помощников таким образом? Не придется все названия вписывать.
- 1
-
Могу предложить два варианта:
Первый вариант для всех юнитов
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()
-
Пока не планируется.
-
06.06.2020 в 19:48, asia сказал:
спамит:
[02:13:14]Error: addon StatManager(1548262933): Widgets::LuaGetInstanceId: Empty widget, details: int __cdecl Widgets::LuaGetInstanceId(struct lua_State *)
func: GetInstanceId, method, line: -1, defined: C, line: -1, [C]
func: DestroyMenu, global, line: 72, defined: Lua, line: 71, [string "Mods/Addons/StatManager/Menu/Menu.lua"]
func: HideMainMenu, global, line: 0, defined: Lua, line: 0, [string "Mods/Addons/StatManager/Script.lua"]
func: action, local, line: 0, defined: Lua, line: 0, [string "Mods/Addons/StatManager/Script.lua"]
func: ?, ?, line: 158, defined: Lua, line: 146, [string "Mods/Addons/StatManager/Menu/Menu.lua"]Исправлено (Script.lua 145 строка доп. проверка виджета)
-
UniStatBonusChecker
Просмотр файла
Показывает, когда господство не дает бонус.
Команды:
/usbc dnd - активирует/деактивирует перемещение /usbc reset - сбрасывает позицию
Некромантам советую взглянуть на аддон GospodstvoNekromanta.
-
Добавил
-
Добавлено07.11.2020
-
Категория
-
-
AlRihatChestsDetector
Просмотр файла
Помощник в поиске сундуков Ал-Риата, а также:
- Сундук (Иса)
- Экю, Пыльца фей (Айрин)
- Старинный сундук (Тающий остров)
- Сокровище, Большое сокровище (Суслангер)
Перемещать полоски можно с зажатым шифтом.
/arcd reset - сбрасывает позицию
Отдельная благодарность:
- ЛилиГраймз - идеи, тестирование
- ЛюблюДиму - идеи, автор меток
-
Добавил
-
Добавлено07.11.2020
-
Категория
-
TrinketCooldown
Просмотр файла
Показывает время восстановления бонусов от амулета и аугментаций брони.
Команды:
/tc dnd - активирует/деактивирует перемещение /tc reset - сбрасывает позицию
Если вам требуется оповещение о срабатывании бонусов амулета, то взгляните на NotifyTrink2.
-
Добавил
-
Добавлено07.11.2020
-
Категория
-
-
TooltipExpirationTime
Просмотр файла
Показывает дату и время сгорания предметов в их описании.
Бонус. Работает и для бафов.
-
Добавил
-
Добавлено07.11.2020
-
Категория
-
-
Есть три способа решить эту проблему:
1. Экранируем кавычки
"\"Злая девка\" пошла ко дну! Меня Вонючий Жо прислал!"
2. Оборачиваем реплику в одинарные кавычки
'"Злая девка" пошла ко дну! Меня Вонючий Жо прислал!'
3. Используем синтаксис многострочного текста
[["Злая девка" пошла ко дну! Меня Вонючий Жо прислал!]]
- 1
- 1
-
- маленький фикс иконки
-
Работает. Попробуй с умением Mighty Leap.
-
Просто применение не всех умений можно отловить. Информация в файле очень старая, проще включить отображение всех кулдаунов.
[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'
-
Перемещать список умений можно было всегда. В версии 3.3 появилась возможность менять размер. Файла нет и аддоны ничего не пишут туда скорее всего из-за того, что в файле \Personal\Global.cfg не выставлено значение user_mods_log_enable=1
-
Привет. Не могу написать это на английском, но у меня есть идея для этого аддона.
Почему бы дополнительно не логировать параметры события?
Я давно использую примерно такой код, когда надо посмотреть когда и с какими параметрами приходит событие:
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')
Надеюсь, ты сможешь это перевести, либо поймешь идею по картинке и коду
-
Небольшое уточнение. Это работает со всеми ресурсами аддона. Виджеты, текстуры, тексты и т.д.
-
local events = { ..., "EVENT_ADDON_LOAD_STATE_CHANGED", ... } local reaction = {} for _, event in ipairs( events ) do local event = event reaction[ event ] = function ( params ) LogWarning(event) if params then for key, value in pairs( params ) do LogInfo( key, ": ", value ) end end end common.RegisterEventHandler( reaction[ event ], event ) end
Lua 5.0.3
-
Выше дан ответ. Код полностью:
local events = { ..., "EVENT_ADDON_LOAD_STATE_CHANGED", ... } local reaction = {} for _, event in ipairs( events ) do reaction[ event ] = function ( params ) LogWarning(event) -- Сюда подразумевалось выводить название ивента if params then for key, value in pairs( params ) do LogInfo( key, ": ", value ) end end end common.RegisterEventHandler( reaction[ event ], event ) end
Могу посоветовать воспользоваться функцией advtostring() вот отсюда:
Получаем такой код:
local events = { ..., "EVENT_ADDON_LOAD_STATE_CHANGED", ... } local reaction = {} for _, event in ipairs( events ) do reaction[ event ] = function ( params ) LogInfo(event, ": ", advtostring(params)) end common.RegisterEventHandler( reaction[ event ], event ) end
Результат будет примерно такой:
Info: addon CheckEvents: EVENT_ADDON_LOAD_STATE_CHANGED: { loading = true, unloading = false, name = 'UserAddon/CheckEvents' }
-
09.06.2019 в 20:59, Astro сказал:
Кнопки можно двигать как-то.
С версии 1.3 можно с зажатым шифтом.
-
17 часов назад, ZeleShnaider сказал:
"Атаковать цель" приоритетнее чем "не вмешиваться", исходя из описания.
Именно так.
12 часов назад, logg сказал:Примерно такое же есть, еще пет у меня не бил в длительные контроли
Задумка с контролями интересная, но, на мой взгляд, вполне достаточно текущего функционала
-
AdvancedPetCommands
Просмотр файла
Порадуйте своего любимого пета кнопкой, которая чуть прибавляет ему мозгов.
Пока кнопка активна (рамочка желтая есть), ваша зверушка начинает атаковать цели, которые атакуете вы, и понимает когда надо переключиться на другую.
Достаточно удобно в компасах. Только будьте осторожны, эта кнопка выводит питомца из пассивного режима.
/apc reset - сбрасывает позицию
Если вдруг не знали, расширенный интерфейс команд включается так:
-
Добавил
-
Добавлено14.05.2019
-
Категория
-
-
Бонус от этой "волшебной плюшки" является таким же как и бонус от вех, а такое не отслеживается. Увы.
-
3 часа назад, logg сказал:
Может сразу отправить дизайнеру интерфейсов?
Я бы и отправил, но это никак не поможет. Это же пользовательский аддон, который лезет к системному, а не фикс системного.
-
MwarHistoryBattleScoreFix
Просмотр файла
[04.04.2019] В обновлении 10.0.00.81 исправили ошибку. Рекомендую отключить или удалить этот аддон.
Исправление некорректного отображения счета боев доминиона.
-
Добавил
-
Добавлено27.03.2019
-
Категория
-
Менеджер статов в шмоте(StatManager)
в Техподдержка
Опубликовано
Не смотрел событие, инсижки можно применять, но статы не изменяются. Из-за этого аддон уходит в бесконечную прокрутку до срабатывания защиты.