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

Дайджесты за январь-февраль

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

Январь Февраль

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

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

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

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

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

Подробнее

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

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

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

duvo

Пользователь
  • Постов

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

  • Посещение

Сообщения, опубликованные duvo

  1. Почитал тему, занятно :)

    Сам ковырялся в прошлом году с <Sizing> и Ко, но не так умело (не использовал GetPlacementPlain()), а тупо методом проб и ошибок :)

    Что касается WIDGET_SIZING_CHILDREN. В описатель панельки заголовка wtTitle.(WidgetPanel).xdb нужно добавить два параметра: <sizingWidget> и <Sizing>, и все будет шоколадно ^____^

    Code:
    <?xml version="1.0" encoding="UTF-8" ?>

    <WidgetPanel>

    <Name>wtTitle</Name>

    <Priority>1</Priority>

    <Children>

    <Item href="Texts/labTitle.(WidgetTextView).xdb#xpointer(/WidgetTextView)" />

    </Children>

    <BackLayer href="Textures/MinimapTitle.(WidgetLayerTiledTexture).xdb#xpointer(/WidgetLayerTiledTexture)" />

    <Placement>

    <sizingWidget href="Texts/labTitle.(WidgetTextView).xdb#xpointer(/WidgetTextView)" />

    <X>

    <Align>WIDGET_ALIGN_HIGH</Align>

    <Sizing>WIDGET_SIZING_CHILDREN</Sizing>

    <HighPos>134</HighPos>

    <Size>300</Size>

    </X>

    <Y>

    <Align>WIDGET_ALIGN_LOW</Align>

    <Pos>23</Pos>

    <Size>63</Size>

    </Y>

    </Placement>

    <clipContent>true</clipContent>

    </WidgetPanel>

  2. Чудеса какие-то. Удалил АМ, скачал аттач, распаковал, вставил в LightDPS

    Code:
    common.RegisterEventHandler( 

    function( params )

    if params.target == common.GetAddonName() then

    userMods.SendEvent( "SCRIPT_ADDON_INFO_RESPONSE", {

    sender = params.target,

    desc = "pew-pew!!!11oneone",

    --showDNDButton = true,

    --showHideButton

    showSettingsButton = true,

    --addonsBlocked = { "ContextDamageVisualization" }

    } )

    end

    end,

    "SCRIPT_ADDON_INFO_REQUEST"

    )

    Появилась одна кнопка. Раскомментировал showDNDButton и showHideButton, перезагрузил в АМ'e, появились еще 2 кнопки.

    Да, после того, как закомментировал их вновь, перезагрузил, они никуда не исчезли.

    Попробуй заменить в AddonManager.lua на

    Code:
    addon.handlers [ "SCRIPT_ADDON_INFO_RESPONSE" ]  = function( event )

    ...

    if event.showDNDButton then

    item.isLocked = addon.config.avatar and addon.config.avatar [ sender ]  and addon.config.avatar [ sender ] .isLocked or false

    W( "ButtonToggleDND", item.w ):SetVariant( item.isLocked and 1 or 0 )

    userMods.SendEvent( "SCRIPT_TOGGLE_DND", { target = event.sender, state = item.isLocked } )

    end

    W( "ButtonToggleDND", item.w ):Show( event.showDNDButton or false )

    W( "ButtonShowHide", item.w ):Show( event.showHideButton or false )

    W( "ButtonSettings", item.w ):Show( event.showSettingsButton or false )

    ...

    end

  3. Quote:
    ...отвечу на любые вопросы касательно виджетов...

    Имеется WidgetTextView с <Sizing>WIDGET_SIZING_INTERNAL</Sizing> и <maxWidth>256</maxWidth>. Вставляю строку, состоящую из 100500 символов. Как ограничить высоту виджета, например, 5 линиями-строками? Т.е., чтобы его размер был:
    256 X { ( 2 + 4 ) * lineSpacing + 5 * fontsize }.
    Значение тэга <size> в Placement'е не будет этим самым ограничителем, или при Sizing = WIDGET_SIZING_INTERNAL игнорируется <size>?
  4. 1. Исправил, но не залил.

    Quote:
    я могу навыделять кучу аддонов на первой заклаадке, затем, на кучу аддонов на второй закладке, затем нажму "Выгрузить все" - и выгрузит с обоих закладок?

    Нет. "Выгрузить все" - выгружает только _все пользовательские_, а вот "Выгр. Выбранные" - выгружает выбранные пользовательские и стандартные.

  5. Quote:
    ЗЫЫ. С кнопками траблы какие то. У меня появляется только крайняя правая, и потом никак исчезать не хочет до перезапуска менеджера (перезаход)

    Странно. Ни с CT_Total, ни с GuildGui нет никаких проблем. Или кнопка не пропадает при отключении аддона? Если да, она и не должна :) Просто дизэйблится.
  6. 1. Исправил.

    2. Не знаю :) А кто-то будет считать? Ну, пусть будет 256 +/- 16 о_0

    3. Исправил, но не залил.

    4. Хм. Надо DnDLib -> ContextDragNDrop :)

    5. Ок, выкинул.

    6. Исправил, но не залил.

    7. Свернуть SCRIPT_TOGGLE_UI в функцию и отправлять по EVENT_AVATAR_CREATED?

    8, 9. GetGameLocalization() -> addon GameLoc. На SCRIPT_GET_GAME_LOCALIZATION { sender = common.GetAddonName() } отвечать SCRIPT_GAME_LOCALIZATION { target = "", localization = }. Т.е. выделить аддоны ContextDragNDrop, GameLoc (а дальнейшем Tooltip, Popup и т.п. ) в отдельную группу, ммм, "системных" аддонов, не?

    Quote:
    А для чего там 3 узких колонки справа (в окне AddonManager)?

    Там кнопки, которые по умолчанию скрыты: днд, скрыть, настройки. Их видимость определяется в SCRIPT_ADDON_INFO_RESPONSE.

  7. Quote:
    Дефолтные значения какие?

    false/nil o_0
    Quote:
    "/am" уже не работает?

    Пока закомментировал, дуамю, добавить в настройки editline, чтоб каждый забивал команду(-ы) по вкусу.
    Quote:
    U_EVENT_ADDON_MEM_USAGE_REQUEST не будет?

    Будет посылаться один раз вызове подсказки.
  8. 1. Хорошо, не вопрос.

    2. Да, ошибка. Должен быть sender, исправил.

    3. В CT_Total MainPanel -- это виджет с кнопкой, нажатие которой открывает панель с настройками. Виджет скрываю, т.к. настройки вызываются из АМ.

  9. Тестовая версия. В общем, она практически финальная (осталось добавить подсказки и контекстное меню ), я надеюсь, но нужна проверка перед релизом о_0.

    ВАЖНО! Данная версия НЕ для пользователей, а для разработчиков. Если вы это прочли и проигнорировали, "сами буратины".

    Отличия от r1:

    -- добавлена кнопка для вызова главного окна;

    -- убрана кнопка "Скрыть все". Теперь должно скрываться самостоятельно (спасибо Setras'у за идею с таймером) при открытии главного меню игры/отключении интерфейса (отправляется событие SCRIPT_TOGGLE_UI);

    -- немного изменены названия событий и добавлены новые:

    SCRIPT_ADDON_INFO_RESPONSE {

    sender (string) -- название аддона (common.GetAddonName() ); desc (string) {optional [/default: addonname] } -- описание аддона;showDNDButton (boolean) {optional [/default: false] } -- показать кнопку переключения состояния DnD? Если да, то при нажатии кнопки будет отправляться событие SCRIPT_TOGGLE_DND { target = addonName }; showHideButton (boolean) {optional [/default: false] } -- показать кнопку переключения видимости аддона/элементов_аддона? Если да, то при нажатии кнопки будет отправляться событие SCRIPT_TOGGLE_VISIBILITY { target = addonName }; showSettingsButton (boolean) {optional [/default: false] } -- показать кнопку вызова настроек? Если да, то при нажатии кнопки будет отправляться событие SCRIPT_SHOW_SETTINGS { target = addonName }; addonsBlocked (table) {optional [/default: nil] } -- массив, элементы -- названия аддонов, которые необходимо включить, при отключении целевого аддона. }

    -- изменен механизм сохранения. В глобальную секцию записываются только комментарии, положения кнопки и окна (пока не реализовано). В секцию аватара состояние аддона и его "пристегнут ость";

    -- небольшой ре-дизайн.

    Перед пробой лучше сделать резервную копию user.cfg.

    Взаимодействия проверял с CT_Total, добавив в CT.lua:

    Code:
    function SCRIPT_ADDON_INFO_REQUEST( params )

    if params.target == common.GetAddonName() then

    MainPanel:Show( false )

    userMods.SendEvent( "SCRIPT_ADDON_INFO_RESPONSE", {

    sender = params.target,

    desc = "desc-desc! pew-pew!!!11oneone",

    showDNDButton = true,

    --showHideButton

    showSettingsButton = true,

    addonsBlocked = { "ContextDamageVisualization" }

    } )

    end

    end

    function SCRIPT_SHOW_SETTINGS( params )

    if params.target == common.GetAddonName() then

    Options:Show( true )

    end

    end

    common.RegisterEventHandler( SCRIPT_ADDON_INFO_REQUEST, "SCRIPT_ADDON_INFO_REQUEST" )

    common.RegisterEventHandler( SCRIPT_SHOW_SETTINGS, "SCRIPT_SHOW_SETTINGS" )

    Несколько сумбурно, но голова уже не варит. Все, ушел спать :)

    upd: Исправлена досадная ошибка при добавлении комментария в процессе создания элемента.

  10. Quote:
    создавая любую переменную Global мы можем через нее передавать данные между разными аддонами... так?

    Нет. Для каждого аддона создается своя "песочница". Обмен осуществляется с помощью событий.
    LibDnD давно пора перевести в аддон. Это уже предлагалась, как минимум, тут.
  11. Да, можно. Если есть какой-то виджет с уникальным именем, не встречающимся в других аддонах, достаточно воспользоваться рекурсивным поиском

    Code:
    stateMainForm:GetChildChecked( "UniqueName", true )

    Затем "подняться" до, например, mainFrame с помощью :GetParent().

    Каким образом виджеты Item'a в логе оказались связаны с ContextRuneCombiner2, я, честно говоря, не знаю.

  12. Из доков:

    Quote:
    unit.GetTrioInfo( unitId )

    -- параметры:

    unitId: ObjectId ( not nil ) -- идентификатор игрока

    Когда цели нет

    Code:
    targetId = nil
    Следовательно
    Code:
    unit.GetTrioInfo( targetId )
    вызовет ошибку. Избавиться от нее просто:

    Code:
    local Gibberling = targetId and unit.GetTrioInfo( targetId )
  13. Code:
    [ "Raid" ]   = "Отряд",
     [ "Emote" ]   = "Эмоция",
     [ "World" ]   = "Мир",
     [ "Shout" ]   = "Крик",
     [ "Officer" ]   = "Офицеры",
     [ "System" ]   = "Система" or "Уведомления"
     [ "Telepathy" ]   = "Мистик",
     [ "Online" ]   = "заходит в мир.",
     [ "Offline" ]   = "выходит из мира.",
  14. Упс, моя недоработка :(

    Попробуй заменить в WhisperWindow.lua строки 124 и 125:

    Code:
    local quality = avatar.GetItemInfo( v.item:GetId() ).quality

    fragments [ i + 1 ] :SetClassVal( "quality", IQColor [quality]  )

    на

    Code:
    local info = avatar.GetItemInfo( v.item:GetId() )

    fragments [ i + 1 ] :SetClassVal( "quality", IQColor [info.quality]  .. ( info.isCursed and "Cursed" or "" ) )

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

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

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