Классы
Статы, идеальное соотношение · Умения и вехи, как получить · Души · Сравнение классов
Воин · Жрец · Некр · Лучник · Шаман · Мист · Бард · Инж · Демон
Игровой процесс
Как одеваться · Драконий облик · Наследие Богов · Фарм золота
Прохождения локаций
Мониторинг серверов и редактор аддонов
Представляем вам две легенды. То, о чем можно было только мечтать, стало реальностью.
Подсказки из игры на вашем сайте
Теперь вы можете отображать сведения о внутриигровых элементах простым наведением курсора мыши.
-
Постов
66 -
Зарегистрирован
-
Посещение
Профиль
-
Пол
Мужской
-
Город
2015
Посетители профиля
768 просмотров профиля
Достижения Metamorfius
Помощник (5/14)
-
Редкий
-
Редкий
-
Редкий
-
Редкий
-
Последние значки
-
Ты серьёзно ? Крч пост оставил тем кто столкнётся. Я понял тут одно, какой борщ тут варится на форуме.
-
К тому что, если подключаешь для своего аддона эти скрипты, то виджеты будут с типом TABLE. Сейчас это диктуется так: Не используй скрипты от разработчика (см. выше какие), или Библиотека не будет работать (Хардкод). Зачем писать кучу <Item href="..." />, если можно одним атрибутом подключить.
-
Дано: AddonDesc.(UIAddon).xdb: <?xml version="1.0" encoding="UTF-8"?> <UIAddon> ... <userAddonInfo> ... <useCommonScripts>false</useCommonScripts> <!-- ВНИМАНИЕ: false - не используем Common скрипты --> </userAddonInfo> ... <ScriptFileRefs> ... </ScriptFileRefs> ... </UIAddon> Code: function OnAvatarCreated() local test = _G.mainForm:GetChildChecked( "Panel" ) log( common.IsWidget( _G.mainForm ), common.IsWidget( mainForm ), common.IsWidget( test ), --[[ IsTWidget( _G.mainForm ), -- ДОСТУПНЕН IsTWidget если useCommonScripts = true ИЛИ вручную прописали в список(ScriptFileRefs) WidgetBaseClasses.lua, WidgetCoreUserMods.lua IsTWidget( mainForm ), IsTWidget( test ), ]] type( _G.mainForm ), type( mainForm ), type( test ) ) _G.DnD.Init( test, nil, true ) end common.RegisterEventHandler( OnAvatarCreated, "EVENT_AVATAR_CREATED" ) if avatar.IsExist() then OnAvatarCreated() end Log: ["var_dump"] => table(6) { [1] => boolean(true) [2] => boolean(true) [3] => boolean(true) [4] => string(8) "userdata" [5] => string(8) "userdata" [6] => string(8) "userdata" } Внимание на виджеты с типом "userdata" ===================================================== Теперь... ===================================================== Включаем использование скриптов, AddonDesc.(UIAddon).xdb: <useCommonScripts>true</useCommonScripts> Убираем комментирование участка в коде: log( common.IsWidget( _G.mainForm ), common.IsWidget( mainForm ), common.IsWidget( test ), IsTWidget( _G.mainForm ), IsTWidget( mainForm ), IsTWidget( test ), ]] type( _G.mainForm ), type( mainForm ), type( test ) ) Log: ["var_dump"] => table(9) { [1] => boolean(false) [2] => boolean(false) [3] => boolean(false) [4] => boolean(true) [5] => boolean(true) [6] => boolean(true) [7] => string(5) "table" [8] => string(5) "table" [9] => string(5) "table" } Внимание на виджеты с типом "table" ===================================================== LibDnD.lua ===================================================== if type(wtMovable) ~= "userdata" then return end -- Да... да, да, да Заменить на: if not ( common.IsWidget( wtMovable ) or rawget( _G, "IsTWidget" ) and IsTWidget( wtMovable ) ) then error( "FATAL: Widget expected, got " .. apitype( wtMovable ) ) end Иначе DnD не будет инициализирован для Widget( table ). Суть в чем... Виджеты могут быть как userdata, так и table.
-
А не много ли вы охватили 80% разнородности, переходя в пассивную агрессию и уход от темы ? Вы боитесь или перекладываете ответственность на других, раздувая из мухи в слона.
-
В программирование это принцип единого наследования DRY (Don't Repeat Yourself) "Не повторяйся". То что вы описываете у себя называется кастомизация под свои требования, и разумеется код будет требовать ваши локальные предпочтения. Вы используете свои наработки, либо наследуете единый релиз. Во многих дополнениях есть дублирующая библиотека, которая могла быть единым наследником, от которого могли бы центрально подключаться. Представим... нам нужно было исправить одну ошибку, и всё... Аддоны продолжат штатно выполнять свои функции, вместо того чтобы проходить и каждый исправлять. Это не навязывание, а некая дисциплина в программировании и вы должны были знать о подобном, если пишите не только Аддоны. Но почему когда озвучивают, пишут о подобном и вместо обычного пользователя, пишет разработчик о таком, что всё взорвётся, поломается. Я не понимаю. Доверять.. кто-то что-то сделал.. Есть ответственный за это, разработчик там, администрация. Иначе можно с таким же успехом влепить любую рекламу в код. (Кстати видел в одном Аддоне прелестное комментирование, улыбнуло) Эту версию к сожалению с допущенными ошибками предоставил публике, не проверив её досконально. Прощу прощения. Администрация откатила версию. Либо опробуйте новую https://github.com/Alfa-ao/LibreAlchemy/releases/tag/v2.1.0 и отпишитесь. Я сколько мог протестил.
-
Если речь про LibDnD, то у меня нет на данный момент инициативы переписывать её. Лишь указал на некоторые недостатки. По хорошему и его нужно переписывать с нуля. Одна из идей была, перенести библиотеку в Mods/Libs и наследовать (подключать): <Item href="/Mods/Libs/LibDnD.lua" /> А не в каждом Аддоне дублировать. Но, тут встает вопрос об автообновлений "Глобальных" библиотек.
-
ouText.(WidgetTextView).xdb Раскоментировал атрибут: <FormatFileRef href="Format.txt" /> Format.txt: <html><log fontsize="20">Hello world!</log></html>
-
Это из-за пустого контейнера (без содержимого) его начальная точка прорисовывается на границе области экрана ? А при наполнении он уходит за границу видимости. Проблема все еще остается с учитыванием масштаба. Я не могу это контролировать у себя.
-
Перетащите виджет UniverseMeter как показано на изображении, при (Минимальном) масштабе интерфейса игры. Потом переключитесь на (Стандартный). Он исчезнет. То, что вы сделали - нарушили расширяемость виджета по внутреннему наполненному контенту текстом, задав фиксированный размер. С этого момента, наши мнения расходятся разными путями..
-
Настоятельно рекомендую сделать так как описал, и увидите проблему.
-
Решение: учитывать масштабирование и сохранять для каждого масштаба отдельно, и не загружать(присваивать) те значения, которые предназначены для другого масштаба игры. (Если это возможно). Иначе придётся использовать формулировку координат и высчитывать. За это ответственность должен нести LibDnD когда читает свои атрибуты в конфиге.
-
Нет, проблема возникает при изменении масштабирования интерфейса игры, о коем упоминалось ранее. Давайте разберу более детально проблему библиотеки: Выставляем интерфейс игры - со Стандартного - на Минимальный. Перезапускаем в игру. Область всего интерфейса логично расширилось.. Перетаскиваем "Приветствую", или любой другой виджет, например: UniverseMeter (DPS Метр), ну... на уровень панели умений ( внизу по центру экрана ). Возвращаем интерфейс обратно - в Стандартный. Перезапускаем в игру. И мы увидим проблему распространённого уровня. Все аддоны могут столкнутся с такой проблемой, используя LibDnD.
-
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
-
Главное дополнение: Изменение интерфейса и расположение кнопок. Для возврата стандартного расположения кнопок, нужно: Открыть скрипт "LibreAlchemy\Scripts\Core\AlchemyConfig.lua" Изменить атрибут "ENABLE_CUSTOM_LAYOUT = true" на "ENABLE_CUSTOM_LAYOUT = false" и перезагрузить игру. Lua: Абсолютно вся скриптовая часть была переписана с нуля. Использовано Объектно-Ориентированное Программирование (ООП), SOLID по возможности. И многого другого, не нужного обычному игроку слов. Известные ошибки: При изменении масштаба интерфейса игры с минимального на стандартный после перезагрузки игры текст подсказки исчезает. Причина: координаты подсказки становятся отрицательными, и при следующем входе в игру текст прячется за экраном. Лечится удалением "Configs\LibreAlchemy\user.cfg". Ответственность за это несет библиотека "LibDnD.lua". Она должна обнулять (или корректировать) отрицательные координаты. https://github.com/Alfa-ao/LibreAlchemy/releases/tag/v2.1.0 Ps: Протестировал 500 реакций с тониками. Пока успех.
-
Добавлена локализация eng, rus.
