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

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

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

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

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

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

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

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

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

Подробнее

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

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

Подробнее

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

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

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

LibreAlchemy


vitaliy75

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

7 часов назад, Metamorfius сказал:
  • Известные ошибки:
    • При изменении масштаба интерфейса игры с минимального на стандартный после перезагрузки игры текст подсказки исчезает. Причина: координаты подсказки становятся отрицательными, и при следующем входе в игру текст прячется за экраном. Лечится удалением "Configs\LibreAlchemy\user.cfg". Ответственность за это несет библиотека "LibDnD.lua". Она должна обнулять (или корректировать) отрицательные координаты.

LibDnD позволяет утаскивать и за пределы экрана (например наполовину), а если нужно чтобы корректировала то там в DnD.Init есть 4й параметр fLockedToParentArea. Если передадите его true то LibDnD будет корректировать координаты так чтобы виджет полностью был виден в пределах родительского виджета (если родительский mainForm то по сути в пределах экрана).

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

2 часа назад, OLDodin сказал:

LibDnD позволяет утаскивать и за пределы экрана (например наполовину), а если нужно чтобы корректировала то там в DnD.Init есть 4й параметр fLockedToParentArea. Если передадите его true то LibDnD будет корректировать координаты так чтобы виджет полностью был виден в пределах родительского виджета (если родительский mainForm то по сути в пределах экрана).

fLockedToParentArea - true/false (nil = true).
Если true, то передвигаемый виджет нельзя даже частично утащить за края родительского окна (чаще всего ими являются края экрана). Таким образом он всегда будет находиться целиком на экране (если не переопределено в параметре Padding, см. ниже). А если false, то его можно утащить полностью, точно так же, как можно утаскивать окна в ОС Microsuxx Windows.

 

newDndInfo.fLockedToParentArea = fLockedToParentArea == nil and true or fLockedToParentArea

У него дефолтное значение true. Поправьте меня, если это не так.

 

function WidgetDnD:InitDragAndDrop()
    local ouText = self._widgetManager:GetWidget( "ouText" ):GetWidget()
    
    if rawget( _G, "DnD" ) then
        _G.DnD.Init( ouText, nil, true )
        return true
    end
    return false
end

 

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

1 час назад, Metamorfius сказал:

fLockedToParentArea - true/false (nil = true).
Если true, то передвигаемый виджет нельзя даже частично утащить за края родительского окна (чаще всего ими являются края экрана). Таким образом он всегда будет находиться целиком на экране (если не переопределено в параметре Padding, см. ниже). А если false, то его можно утащить полностью, точно так же, как можно утаскивать окна в ОС Microsuxx Windows.

 

newDndInfo.fLockedToParentArea = fLockedToParentArea == nil and true or fLockedToParentArea

У него дефолтное значение true. Поправьте меня, если это не так.

 

function WidgetDnD:InitDragAndDrop()
    local ouText = self._widgetManager:GetWidget( "ouText" ):GetWidget()
    
    if rawget( _G, "DnD" ) then
        _G.DnD.Init( ouText, nil, true )
        return true
    end
    return false
end

 

Да, вы правы.

Проблема в другом.

Размеры виджета текста (его размер у вас динамический) 2 на 2 пикселя на момент вызова DnD.Init. Вот эти 2*2 пикселя и вытаскиваются на экран. 

Задайте ему текст приветствия при создании до DnD.Init и всё заработает.

 

 

 

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

1 час назад, OLDodin сказал:

Да, вы правы.

Проблема в другом.

Размеры виджета текста (его размер у вас динамический) 2 на 2 пикселя на момент вызова DnD.Init. Вот эти 2*2 пикселя и вытаскиваются на экран. 

Задайте ему текст приветствия при создании до DnD.Init и всё заработает.

Нет, проблема возникает при изменении масштабирования интерфейса игры, о коем упоминалось ранее.
Давайте разберу более детально проблему библиотеки:
 

  1. Выставляем интерфейс игры - со Стандартного - на Минимальный. Перезапускаем в игру. Область всего интерфейса логично расширилось..
  2. Перетаскиваем "Приветствую", или любой другой виджет, например: UniverseMeter (DPS Метр), ну... на уровень панели умений ( внизу по центру экрана ).
  3. Возвращаем интерфейс обратно - в Стандартный. Перезапускаем в игру.
  4. И мы увидим проблему распространённого уровня. Все аддоны могут столкнутся с такой проблемой, используя LibDnD.
Ссылка на комментарий
Поделиться на другие сайты

Только что, Metamorfius сказал:

Нет, проблема возникает при изменении масштабирования интерфейса игры, о коем упоминалось ранее.
Давайте разберу более детально проблему библиотеки:
 

  1. Выставляем интерфейс игры - со Стандартного - на Минимальный. Перезапускаем в игру. Область всего интерфейса логично расширилось..
  2. Перетаскиваем "Приветствую", или любой другой виджет, например: UniverseMeter (DPS Метр), ну... на уровень панели умений ( внизу по центру экрана ).
  3. Возвращаем интерфейс обратно - в Стандартный. Перезапускаем в игру.
  4. И мы увидим проблему распространённого уровня. Все аддоны могут столкнутся с такой проблемой, используя LibDnD.

UniverseMeter не использует вписывание в экран.

 

Причину у вас я описал, проверил внеся описанные правки в LibreAlchemy, выполняя переключение и перезапуски. 

Координаты получаются за пределами экрана и LibDnD вытаскивает его, но тк размеры на момент Init 2*2 пикселя - то новая позиция по ним и рассчитывается. Затем задаётся текст и виджет меняет размеры, и при этом оказывается за пределами экрана за исключением 2*2 куска.

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

Решение: учитывать масштабирование и сохранять для каждого масштаба отдельно, и не загружать(присваивать) те значения, которые предназначены для другого масштаба игры. (Если это возможно).

Иначе придётся использовать формулировку координат и высчитывать.
За это ответственность должен нести LibDnD когда читает свои атрибуты в конфиге.

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

2 минуты назад, OLDodin сказал:

UniverseMeter не использует вписывание в экран.

 

Причину у вас я описал, проверил внеся описанные правки в LibreAlchemy, выполняя переключение и перезапуски. 

Координаты получаются за пределами экрана и LibDnD вытаскивает его, но тк размеры на момент Init 2*2 пикселя - то новая позиция по ним и рассчитывается. Затем задаётся текст и виджет меняет размеры, и при этом оказывается за пределами экрана за исключением 2*2 куска.

Настоятельно рекомендую сделать так как описал, и увидите проблему.

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

Только что, Metamorfius сказал:

Настоятельно рекомендую сделать так как описал, и увидите проблему.

Я сделал, увидел проблему.

Затем внес правки чтобы у перетаскиваемого виджета были размеры и всё заработало.

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

10 минут назад, Metamorfius сказал:

Настоятельно рекомендую сделать так как описал, и увидите проблему.

В WidgetOuText.lua после строки 

self._widget = widgetManager:GetMainForm():GetChildChecked( "ouText" )

вставьте для примера

local vt = common.CreateValuedText()
vt:SetFormat( userMods.ToWString( string.format( [[<html><log fontsize="20">%s</log></html>]], "Hello world!" ) ) )
self._widget:SetValuedText( vt )

 

И у вас начнет оставаться на экране после смен масштаба в игре

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

7 минут назад, OLDodin сказал:

Я сделал, увидел проблему.

Затем внес правки чтобы у перетаскиваемого виджета были размеры и всё заработало.


Перетащите виджет UniverseMeter как показано на изображении, при (Минимальном) масштабе интерфейса игры. Потом переключитесь на (Стандартный). Он исчезнет.
То, что вы сделали - нарушили расширяемость виджета по внутреннему наполненному контенту текстом, задав фиксированный размер.

С этого момента, наши мнения расходятся разными путями..

2026.06.28-12.52.20.png

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

1 минуту назад, Metamorfius сказал:


Перетащите виджет UniverseMeter как показано на изображении, при (Минимальном) масштабе интерфейса игры. Потом переключитесь на (Стандартный). Он исчезнет.
То, что вы сделали - нарушили расширяемость виджета по внутреннему наполненному контенту текстом, задав фиксированный размер.

С этого момента, наши мнения расходятся разными путями..

2026.06.28-12.52.20.png

1) Я не задавал фиксированный размер 

 

2) UniverseMeter  будет исчезать - он специально не ограничивается экраном и да, может пропадать. Но это не ваш случай

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

18 минут назад, OLDodin сказал:

В WidgetOuText.lua после строки 

self._widget = widgetManager:GetMainForm():GetChildChecked( "ouText" )

вставьте для примера

local vt = common.CreateValuedText()
vt:SetFormat( userMods.ToWString( string.format( [[<html><log fontsize="20">%s</log></html>]], "Hello world!" ) ) )
self._widget:SetValuedText( vt )

 

И у вас начнет оставаться на экране после смен масштаба в игре

Это из-за пустого контейнера (без содержимого) его начальная точка прорисовывается на границе области экрана ? А при наполнении он уходит за границу видимости.
Проблема все еще остается с учитыванием масштаба. Я не могу это контролировать у себя.

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

5 минут назад, Metamorfius сказал:

Это из-за пустого контейнера (без содержимого) его начальная точка прорисовывается на границе области экрана ?

Да.

Можно конечно в LibDnD добавить вечный цикл - раз в секунду сверять размеры всех подписанных виджетов и при их изменении вписывать в экран по новой. Но сейчас такого нет.

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

ouText.(WidgetTextView).xdb
Раскоментировал атрибут:

<FormatFileRef href="Format.txt" />

Format.txt:

<html><log fontsize="20">Hello world!</log></html>

 

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

Откатил версию на предыдущую. @Metamorfius с учетом контекста имеет смысл выкладывать вашу версию отдельным форком. Требование только одно - сохранить исходный код в открытом виде.

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

40 минут назад, Lafayette сказал:

Откатил версию на предыдущую. @Metamorfius с учетом контекста имеет смысл выкладывать вашу версию отдельным форком. Требование только одно - сохранить исходный код в открытом виде.

Если речь про LibDnD, то у меня нет на данный момент инициативы переписывать её. Лишь указал на некоторые недостатки. По хорошему и его нужно переписывать с нуля. Одна из идей была, перенести библиотеку в Mods/Libs и наследовать (подключать):

<Item href="/Mods/Libs/LibDnD.lua" />

А не в каждом Аддоне дублировать. Но, тут встает вопрос об автообновлений "Глобальных" библиотек.

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

35 минут назад, Metamorfius сказал:

Если речь про LibDnD, то у меня нет на данный момент инициативы переписывать её. Лишь указал на некоторые недостатки. По хорошему и его нужно переписывать с нуля. Одна из идей была, перенести библиотеку в Mods/Libs и наследовать (подключать):

<Item href="/Mods/Libs/LibDnD.lua" />

А не в каждом Аддоне дублировать. Но, тут встает вопрос об автообновлений "Глобальных" библиотек.

Я доделаю LibDnD,  после 14.1 (когда добавили настройку по масштабу интерфейса) ломать позиции окон могут намного чаще. Всё таки поменять настройку куда чаще случается чем сменить монитор на другой с другим разрешением.

 

Что напрашивается 

1) Хранение позиции виджета в формате [0 .. 1] и умножать на текущее виртуальное разрешение.

2) Конвертер позиций из старого формата (неизбежно попадутся вне экрана, их возвращать)

3) Отслеживание изменений размеров виджета для тех что с флагом fLockedToParentArea - но это может быть ломающим совместимость 

 

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

15 минут назад, OLDodin сказал:

4) После уменьшения размера виджета (без флага fLockedToParentArea) он может оказаться за экраном - ?запоминать видимую долю и её восстанавливать?

 

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

2 часа назад, Metamorfius сказал:

Если речь про LibDnD, то у меня нет на данный момент инициативы переписывать её. Лишь указал на некоторые недостатки. По хорошему и его нужно переписывать с нуля. Одна из идей была, перенести библиотеку в Mods/Libs и наследовать (подключать):

<Item href="/Mods/Libs/LibDnD.lua" />

А не в каждом Аддоне дублировать. Но, тут встает вопрос об автообновлений "Глобальных" библиотек.

Зачем? У каждого свои библиотеки. Я пользуюсь модифицированной мной от Слэша. В отличии от старой и от олдодина она работает в оконном режиме. У меня игра в оконном режиме. Моим кривым аддонам с либднд от слеша вполне комфортно. За это в очередной раз спасибо Слэшу

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

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

2 часа назад, worm сказал:

Зачем? У каждого свои библиотеки. Я пользуюсь модифицированной мной от Слэша. В отличии от старой и от олдодина она работает в оконном режиме. У меня игра в оконном режиме. Моим кривым аддонам с либднд от слеша вполне комфортно. За это в очередной раз спасибо Слэшу

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

 

В программирование это принцип единого наследования DRY (Don't Repeat Yourself) "Не повторяйся". То что вы описываете у себя называется кастомизация под свои требования, и разумеется код будет требовать ваши локальные предпочтения. Вы используете свои наработки, либо наследуете единый релиз. Во многих дополнениях есть дублирующая библиотека, которая могла быть единым наследником, от которого могли бы центрально подключаться. Представим... нам нужно было исправить одну ошибку, и всё... Аддоны продолжат штатно выполнять свои функции, вместо того чтобы проходить и каждый исправлять. Это не навязывание, а некая дисциплина в программировании и вы должны были знать о подобном, если пишите не только Аддоны. Но почему когда озвучивают, пишут о подобном и вместо обычного пользователя, пишет разработчик о таком, что всё взорвётся, поломается. Я не понимаю.


Доверять.. кто-то что-то сделал.. Есть ответственный за это, разработчик там, администрация. Иначе можно с таким же успехом влепить любую рекламу в код. (Кстати видел в одном Аддоне прелестное комментирование, улыбнуло)
 

33 минуты назад, tuxOhOme сказал:

Аддон после обновления - безбожно врать начал))

Эту версию к сожалению с допущенными ошибками предоставил публике, не проверив её досконально. Прощу прощения.
Администрация откатила версию.
Либо опробуйте новую https://github.com/Alfa-ao/LibreAlchemy/releases/tag/v2.1.0 и отпишитесь. Я сколько мог протестил.

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

26 минут назад, Metamorfius сказал:

 

В программирование это принцип единого наследования DRY (Don't Repeat Yourself) "Не повторяйся". То что вы описываете у себя называется кастомизация под свои требования, и разумеется код будет требовать ваши локальные предпочтения. Вы используете свои наработки, либо наследуете единый релиз. Во многих дополнениях есть дублирующая библиотека, которая могла быть единым наследником, от которого могли бы центрально подключаться. Представим... нам нужно было исправить одну ошибку, и всё... Аддоны продолжат штатно выполнять свои функции, вместо того чтобы проходить и каждый исправлять. Это не навязывание, а некая дисциплина в программировании и вы должны были знать о подобном, если пишите не только Аддоны. Но почему когда озвучивают, пишут о подобном и вместо обычного пользователя, пишет разработчик о таком, что всё взорвётся, поломается. Я не понимаю.


Доверять.. кто-то что-то сделал.. Есть ответственный за это, разработчик там, администрация. Иначе можно с таким же успехом влепить любую рекламу в код. (Кстати видел в одном Аддоне прелестное комментирование, улыбнуло)
 

Эту версию к сожалению с допущенными ошибками предоставил публике, не проверив её досконально. Прощу прощения.
Администрация откатила версию.
Либо опробуйте новую https://github.com/Alfa-ao/LibreAlchemy/releases/tag/v2.1.0 и отпишитесь. Я сколько мог протестил.

У вас слишком много "Если". Разработайте. стандарты, правила, сорганизуйте с разработчиками игры, определите площадке с премодерацией кода и проверкой на правила, введите заработную плату или монетизацию. а потом вот этот ваш абзац про дисциплину. А не так вот кусок из серидины. Вы это тоже прекрасно видимо понимаете как и не понимаете другого.

Рекламу можете влепить только вот почитайте правила и про дисциплину свою и ответственность. 

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

И я вот очень тоже не понимаю почему 80% программистов не могут быть клиент ориентированными и сделать нормальную интуитивно понятную оболочку с нормальным мануалом и чтобы использование продукта было доступно широкому спектру грум пользователей.

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

53 минуты назад, worm сказал:

У вас слишком много "Если". Разработайте. стандарты, правила, сорганизуйте с разработчиками игры, определите площадке с премодерацией кода и проверкой на правила, введите заработную плату или монетизацию. а потом вот этот ваш абзац про дисциплину. А не так вот кусок из серидины. Вы это тоже прекрасно видимо понимаете как и не понимаете другого.

Рекламу можете влепить только вот почитайте правила и про дисциплину свою и ответственность. 

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

И я вот очень тоже не понимаю почему 80% программистов не могут быть клиент ориентированными и сделать нормальную интуитивно понятную оболочку с нормальным мануалом и чтобы использование продукта было доступно широкому спектру грум пользователей.

А не много ли вы охватили 80% разнородности, переходя в пассивную агрессию и уход от темы ? Вы боитесь или перекладываете ответственность на других, раздувая из мухи в слона.

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

Друзья мои талантливые.
Там сейчас 6 файлов для скачивания.. я пробовал три. все ругаются в логи.

Можно ли оставить только один фалй, самый актуальный?)

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

Давно заметил, но сегодня после бага у алхимиков, нашёл аддон.

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

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

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

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

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

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

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

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

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

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

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

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