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

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

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

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

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

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

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

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

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

Подробнее

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

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

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

SLA

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

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

  • Посещение

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

  1. Так ВОТ, что означал этот загадочный пункт в патч-ноуте... А я-то подумал, что это связано с тем, что у некоторых пользователей аддоны не работали, пока пару раз не перезагрузишь игру.

    Слишком поздно! :)) Я только что закончил чинить 8 аддонов. И завтра их всех залью на сайт :) Как минимум, потому, что "старую" версию GetGameLocalization() нужно было в любом случае менять - в EU/US версиях, с того момента, как игрок попадает на Гипат, "старая" функция перестаёт работать, и все EU/US локализации определяет как "eng". Потому, что блок карт "Gipat", зачем-то, становится на НУЛЕВОЕ место в списке MapBlocks, сдвигая все остальные на одну позицию вниз. Кстати, именно это и было причиной создания "новой" функции, в которой локализованные названия даны целиком.

    А ещё, пользуясь случаем, я прикрутил ко всем этим аддонам поддержку следующей версии AddonManager (синтаксис его событий будет чуть-чуть отличаться, от того, который сейчас в девелоперской версии, я уже договорился с Duvodas. Кстати, он как бы в командировке, или что-то в этом роде, но завтра, вроде, возвращается.), кое-где добавил пару новых локализаций, и исправил кое-какие баги и недочёты... Так, например, GuildGui1b будет нормально работать даже у Японцев и Португальцев, а DarkDPSMeter будет нормально работать у Паладинов, с их умением "Святой Рассвет".

  2. Тут такое дело. Я сегодня ремонтирую кучу аддонов, это такие аддоны, которые обновляются раз в пол года. И мне нужно срочно (сегодня) уточнить пару нюансов синтаксиса собыий этой новой версии AddonManager:

    Q1: Как будет назыаться бывшее событие U_EVENT_ADDON_MEM_USAGE_REQUEST? SCRIPT_ADDON_MEM_USAGE_REQUEST или как-то ИНАЧЕ?

    Q2: Раньше у него не было параметров, но теперь, видимо, будут. Будет указан target ?

    --------------------

    И ещё, насчёт описания синтаксиса, там ещё есть недостатки:

    1.

    Не указано, что у SCRIPT_TOGGLE_DND есть ещё один параметр - state.

    2.

    Не указано, что у SCRIPT_TOGGLE_VISIBILITY есть ещё один параметр - isVisible.

    3.

    Может, пока не слишком поздно, для большей простоты и универсальности, переименовать isVisible в state ?

    4.

    Нужно добавить в описание (пока просто в описание) то самое событие, возвращающее gcinfo(), о котором я задал 2 вопроса выше.

  3. MinimapSla РАБОТАЕТ. Только, показывает подсказки к Межевым камням и Сокровищам на английском языке. В следующем обновлении, это будет исправлено.

    Если MinimapSla не работает, значит, видимо, он установлен как-то неправильно.

    Как устанавливать аддоны (Инструкция)

  4. Первая версия (на главной) помечена как "временно не работает". Так что, ждём релиз этой девелоперской версии :)

    Кстати, Mehael уже начал внедрять поддержку этой новой версии в свои аддоны. И правильно делает, т.к. нам в любом случае приходится перелопатить все аддоны, так что, самое время, "за компанию", вводить поддержку SCRIPT_ADDON_INFO_REQUEST. Я сделаю то же самое в тех аддонах, которые буду ремонтировать сам.

  5. Извини, пометил LightDPS как рабочий :)

    Так и было, я не вдавался в код аддонов, а просто скачал ВСЕ последние версии аддонов, и разделил их на 3 группы - 1) у которых нет GetGameLocalizaton() (работают), 2) у которых есть "старая" версия функции (теоретически, должны были поломаться), и 3) у которых есть "новая" версия (работают, но, скорее всего, неправильно).

  6. Patch 2.0.03 - Valentine's Day, or Black Monday? :)

    English translation

    I used to wonder why the map blocks (which are used in client localization detection function GetGameLocalization()), are available before the creation of avatar in the game? Indeed, the contents of map blocks depends on whether the player have access to some territories... In AO 2.0.02 patch, game devs "fixed" this issue, and now cartographer.GetMapBlocks() function returns nil, when it's called before the EVENT_AVATAR_CREATED event.

    It turned out that it broke a lot of good, complex addons. Those which use the "old" GetGameLocalization() function (older than version 2011-01-29), now breaks in the place where GetGameLocalization() is called, and writes a fatal error in the log (attempt to index nil). All those addons must be repaired.

    Some addons that use the "new" GetGameLocalization() function (version 2011-01-29 or newer), works WITHOUT fatal errors, but are likely to detect the Russian localization as English. These addons just should be checked.

    List of broken addons:

    AddonManager

    AnatomySelfDefence

    AucEDSman

    AutoDeleteMail

    ChatBarAO

    ChatLogByN00b

    ControlCountdown

    DarkDPSMeter

    GuildGui1b

    InspectStats

    Minimap

    PLATES

    PlayerHUD

    QuestTracker

    All these 14 addons use the "old" GetGameLocalization() function, are marked as "Temporarily broken" (colored gray). If you are the author of one of those addons, please repair and update the addon, and it will automatically return to "working" status!

    As you can see in this list there are many IMPORTANT addons that need to be urgently repaired. Those of them that I have already repaired before, I'll fix myself (DarkDPSMeter and GuildGui1b - primarily).

    List of addons that should be checked:

    CT_Total

    MasterLoot

    MinimapSla

    RealAgroM

    RuneCalc

    SpamProtect

    WhisperWindow

    These 7 addons use the "new" GetGameLocalization(), they work, but with almost 100% probability, in Russian version, detects language as English. All those addons have "working" status (because those addons ACTUALLY works), but needs to be verified. If you are the author of one of those addons, please check it and update if necessary.

    How to fix addons

    1) First, replace the old GetGameLocalization() with the newest version (2011-02-10), from "HOW-TO: Multilangual addon" topic, because it works WITHOUT any errors in Mods.txt.

    2) Second, take out everything related to the detection of localization, and its usage from the Init() function (and functions called in this functions) to a function which responds to EVENT_AVATAR_CREATED. That's all, the addon is repaired :) But here are three extra advices:

    3) For better security, initialize the default language - "eng" in the Init() function, (don't leave it nil until EVENT_AVATAR_CREATED!), This will help to avoid any problems that could theoretically occur in the future. And on the EVENT_AVATAR_CREATED event, re-initialize the real localization using GetGameLocalization().

    4) Don't forget that if you restart addon in AddonManager, your addon will not get the EVENT_AVATAR_CREATED event. Therefore, at the end of Init(), you need to check whether there is an avatar, and if it exists, then call the function which reacts to avatar appearance, for example:

    Code:
    if avatar.IsExist() then

    OnEventAvatarCreated()

    end

    5) Keep in mind that the latest GetGameLocalization() is able to detect a couple of new languages - Japanese ("jpn") and Portuguese ("br"). Most of addons don't have these localizations yet, so it is not enough to determine the language, you must also check whether your addon have such localization. And if not, then use English. For example:

    If your localizations are stored as a set of TXT-files:

    Code:
    localization = GetGameLocalization()

    if not common.GetAddonRelatedTextGroup( localization ) then

    localization = "eng"

    end

    If your localizations are stored in LUA-file:

    Code:
    localization = GetGameLocalization()

    if not Locales [ localization ] then

    localization = "eng"

    end

    or (another syntax):

    Code:
    CurrentLocale = Locales [ GetGameLocalization() ] or Locales [ "eng" ]

    P.S. Special for EU/US developers:

    For testing purposes, you can "emulate" AO 2.0.03 behaviour in AO 1.0.04, by slightly altering the GetGameLocalization() function:

    1) Temporarily replace

    local B = cartographer.GetMapBlocks()

    with

    local B = avatar.IsExist() and cartographer.GetMapBlocks()

    2) Temporarily replace

    return "eng"

    with

    return "rus"

    Now it works in AO 1.1.04 just like in AO 2.0.03, and returns "rus" in a case of failure (just like it returns "eng" in a case of failure in AO 2.0.03).

  7. Патч 2.0.03 - День святого Валентина, или чёрный понедельник? :)

    Scroll down for English translation

    Раньше я удивлялся, почему же блоки карт (благодаря которым работает функция определения локализации клиента GetGameLocalization()), доступны ещё до появления аватара в игре? Ведь, состав этих блоков карт зависит от того, доступны ли игроку некоторые территории... В патче АО 2.0.02, разработчики игры "исправили" эту оплошность, и теперь, функция cartographer.GetMapBlocks() возвращает nil, если её вызвать до появления аватара в игре (EVENT_AVATAR_CREATED).

    Так вышло, что это испортило очень много хороших, сложных аддонов. Те из них, которые используют "старую" функцию GetGameLocalization() (до версии 2011-01-29), теперь прерывают выполнение функции в том месте, где попадается GetGameLocalization(), и пишут фатальную ошибку в лог (попытка индексировать nil). Их всех нужно ремонтировать.

    Некоторые аддоны, которые используют "новую" функцию GetGameLocalization() (от версии 2011-01-29 и новее), работают БЕЗ фатальных ошибок, но, скорее всего, Русскую локализацию определяют как Английскую. Эти аддоны нужно просто проверить.

    Список поломавшихся аддонов:

    AddonManager

    AnatomySelfDefence

    AucEDSman

    AutoDeleteMail

    ChatBarAO

    ChatLogByN00b

    ControlCountdown

    DarkDPSMeter

    GuildGui1b

    InspectStats

    Minimap

    PLATES

    PlayerHUD

    QuestTracker

    Все эти 14 аддонов используют "старую" функцию GetGameLocalization(), и помечены как "Временно не работает". Если вы автор одного из этих аддонов, отремонтируйте и обновите аддон, это вернёт ему "рабочий" статус!

    Как видите, в этом списке очень много ВАЖНЫХ аддонов, которые нужно срочно починить. Те из них, которые я уже ремонтировал раньше, я починю сам (DarkDPSMeter и GuildGui1b - обязательно).

    Список аддонов, которые нужно проверить:

    CT_Total

    MasterLoot

    MinimapSla

    RealAgroM

    RuneCalc

    SpamProtect

    WhisperWindow

    Эти 7 аддонов используют "новую" функцию GetGameLocalization(), они работают, НО с почти 100% вероятностью, в русской версии определяют язык как английский. Всем этим аддонам оставлен "рабочий" статус (т.к. они ФАКТИЧЕСКИ работают), но их нужно проверить. Если вы автор одного из аддонов, проверьте его, и обновите, если нужно.

    Как исправлять аддоны

    1) Во-первых, заменить старую GetGameLocalization() на самую новую (2011-02-10), из темы "HOW-TO: Многоязычный аддон", она работает БЕЗ ошибок в Mods.txt.

    2) Во-вторых, вынести всё, что связано с определением локализации, и её использованием, из Init() (и запускаемых из неё функций) в функцию, реагирующую на EVENT_AVATAR_CREATED. Всё, после этого, аддон отремонтирован :) Но вот ещё три совета:

    3) На всякий случай, ещё в Init(), проинициализируйте язык по-умолчанию - "eng" (не оставляйте nil аж до самого EVENT_AVATAR_CREATED!), это поможет избежать возможных проблем, которые могут теоретически возникнуть в будущем. А по событию EVENT_AVATAR_CREATED, вы пере-инициализируете язык, получив настоящую локализацию с помощью GetGameLocalization().

    4) Не забудьте, что в случае перезагрузки аддона в AddonManager, никакого EVENT_AVATAR_CREATED ваш аддон не получит. Поэтому, в самом конце Init(), вам нужно проверить, существует ли аватар, и если он существует, то принудительно запустить реагирующую на его появление функцию, например:

    Code:
    if avatar.IsExist() then

    OnEventAvatarCreated()

    end

    5) Имейте ввиду, что новейшая GetGameLocalization() умеет определять пару новых языков - Японский ("jpn") и Португальский ("br"). Наверняка, в вашем аддоне НЕТ этих локализаций, поэтому, НЕдостаточно просто определить язык, нужно ещё и проверить, есть ли в вашем аддоне такая локализация. И если её нет, то выставить Английскую. Например:

    Если ваши локализации хранятся в виде набора TXT-файлов:

    Code:
    localization = GetGameLocalization()

    if not common.GetAddonRelatedTextGroup( localization ) then

    localization = "eng"

    end

    Если ваши локализации хранятся в LUA-файле:

    Code:
    localization = GetGameLocalization()

    if not Locales [ localization ] then

    localization = "eng"

    end

    или (другой синтаксис):

    Code:
    CurrentLocale = Locales [ GetGameLocalization() ] or Locales [ "eng" ]
  8. Оказывается, она прекрасно работает, просто теперь, после патча АО 2.0.03, пользоваться её можно ТОЛЬКО после события EVENT_AVATAR_CREATED. Если же, воспользоваться ею раньше (в Init(), например), то она НЕ сделает никакой ошибки, и просто вернёт "eng" (английский язык).

    ПОДРОБНЕЕ ЗДЕСЬ:

    Патч 2.0.03 - Ремонтируем аддоны

    P.S.

    ОБНОВЛЕНИЕ 2011-02-17

    Демонстрационный аддон "SampleLocalization" исправлен для АО 2.0.03.

  9. Нет нет нет! Ложная тревога. <reactionOnPointing /> работает везде, если он используется в WidgetPanel. У меня в MinimapSla, по <reactionOnPointing />, загораются кнопки +/- и показываются тултипы. И это работает в 2.0.03, работало в 2.0.02, и работает в EU/US 1.1.04 (я проверял). Но все виджеты в MinimapSla, у которых есть этот тег - ПАНЕЛИ, а не кнопки.

    Потом, я просканировал все свои аддоны, и оказалось, что в половине из них нашлось <reactionOnPointing />, а в другой половине <ReactionOnPointing />! Чудеса! Как такое может быть, если в ПО ИДЕЕ, в XML имеет значение регистр букв в названиях тегов? Тогда, я просканирвал всю свою коллекцию API (из разных версий от 1.0.07 до 2.0.03), и оказалось, что с этими тегами ничего не менялось аж с самой АО 1.0.07, НО есть один такой нюанс (разгадка):

    Эти теги есть ТОЛЬКО в WidgetPanel:

    <reactionOnPointing />

    <forceReactionOnPointing />

    Этот тег есть ТОЛЬКО в WidgetButton:

    <ReactionOnPointing />

    P.S. Нашёлся также отрывок из API (\LuaApi\CategoryPanel.html), говорящий, что:

    Quote:
    forceReactionOnPointing - Уведомление о наведении на контрол вне зависимости от его доступности для кликов
  10. В общем, аддоны ремонтируются просто:

    Функция GetGameLocalization() в полном порядке, но ТЕПЕРЬ, ею можно пользоваться только после EVENT_AVATAR_CREATED. Просто выносим всё, что связано с определением локализации, и её использованием, в функцию, реагирующую на EVENT_AVATAR_CREATED.

    P.S. Патч 2.0.03 - Ремонтируем аддоны

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

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

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