Jump to content
Alloder.pro  about Allods with love 😱
Search In
  • More options...
Find results that contain...
Find results in...

Servers monitoring and the Addons Editor

We present you two legends. All dreams come true.

Servers monitoring The Addons Editor

Digest April

We talk about what was done and updated in the past month. We help keep abreast of events.

Read more

Game tooltips

Tooltips provide a way for 3rd party fansites and extensions to display detailed information on mouseover.

Read more

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


SLA
 Share

Recommended Posts

Патч 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" ]
Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

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

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

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

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

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

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

Link to comment
Share on other sites

Хотфикс 2.0.03.13 [17.02.2011]

Quote:
Интерфейс

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

Хмм :)

Link to comment
Share on other sites

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

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

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

Guest Carnifex

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?

Link to comment
Share on other sites

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

By using our site you agree to the Terms of Use