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

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

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

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

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

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

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

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

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

Подробнее

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

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

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

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


SLA

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

Патч 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" ]
Ссылка на комментарий
Поделиться на другие сайты

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).

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

LightDPS ни разу не сломан. Все в нем работает как и до патча

GetGameLocalization().. там есть эта функция, но она не используется :)

Текущий язык задается вручную в настройках

А в HonorInfo наверное другая проблема: поменяли некоторые функции/ивенты, связаные с набором опыта/славы

MinimapSla работает вроде нормально, ошибок в логе и в работе не видел

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

MinimapSla у меня не работает. Показывается стандартный компас и все

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

My addons:

Fixed: AOChatExtension

no fix needed: TSViewer

Broken (update tonight):

MasterLoot

SpamProtect (is this anymore needed?^^)

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

мой примитивный плагин который показывал средний получаемый опыт тоже перестал работать(

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

Added a test case for EU/US developers, which helps to emulate AO 2.0.03 behaviour in AO 1.1.04.

See "P.S. Special for EU/US developers:" in the second post of this thread.

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

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

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

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

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

If SpamProtect is useless anymore, then it is not necessary to fix it, you can leave it in "not working" status, if you want.

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

Oh, I was just using y'all's client for testing. Since I had to repair the buttons as well. All of mine are fixed, hopefully.

Edit: Going through my old code disgusted me, so much useless fluff. :(

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

все.сорри. MinimapSla и HonorInfo заработали почему-то после нескольких запусков игры.

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

подскажите плиз как вернуть возможность отслеживать получаемый опыт?

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

Хотфикс 2.0.03.13 [17.02.2011]

Quote:
Интерфейс

* Исправлена ошибка, приводившая к частичной неработоспособности некоторых пользовательских дополнений.

Хмм :)

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

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

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

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

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

So the bug they repaired fixes the need for the changes involving GetGameLocalization()? Just trying to get a clarification.

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

Как узнать, что случилось с отслеживанием получаемого опыта (использовал EVENT_AVATAR_EXPERIENCE_GAINED)? Есть смысл писать в саппорт?

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

EVENT_AVATAR_PROGRESS_GAINED

Сейчас все приходит сюда: опыт, хонор, репа

Если ты про это

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

Is it possible, thy you've changed the priority of the buttons of some addons (DarkDPSMeter, GuildGui1b, ASD), because they overlap now ingamegui and the map?

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

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

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

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

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

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

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

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

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

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