Diagnostika

  • Zkontrolovat zda je zapnuto Display LUA Errors (v Interface -> Help), které po vyřešení problému lze opět vypnout.
  • Po aktivaci addonu se zobrazí Lua Error:

Message: Interface\AddOns\DXE\Core.lua:207: Usage: EmbedLibrary(addon, libname, silent, offset): ‚libname‘ – Cannot find a library instance of „AceTimer-3.0„.

Zde je podstatné, že první část odkazuje na lua soubor od DXE (Core.lua) a EmbedLibrary říká, že se jedná o problém s knihovnou, jejíž název je uvedený na konci (zde AceTimer-3.0).

  • Identifikovat addon, ze kterého se knihovna pokouší načítat pomocí sekce Stack v Lua Erroru.

Stack: [C]: ?
…ace\AddOns\Postal\Libs\AceAddon-3.0\AceAddon-3.0.lua:210: in function `EmbedLibrary

Ukazuje, že se jedná o addon Postal, ve kterém se knihovna hledá.

Řešení

Zkopírovat složky s knihovnami ze složky Interface\Addons\DXE\Libs do složky Libs v problémového addonu (zde Interface\Addons\Postal\Libs). Knihovny v cílové složce obvykle není nutné přepisovat. Stačí pouze doplnit ty, které tam chyběly.

Po doplnění chybějících knihoven je třeba vypnout a zapnout hru (reload nestačí) a zkontrolovat, zda se knihovny do DXE úspěšně načetly.

Není vyloučené, že se knihovny začnou v za jisté situace načítat z jiných addonů. Možná tedy bude nutné proces zopakovat a nakopírovat chybějící knihovny i jinam.

Co se místa týče, nemělo by to dělat problém, neboť knihovny mají pouze několik kB.

Pozadí

Spousta addonů používá tzv. knihovny, což jsou nástroje s funkcemi, které mohou addony využívat. Knihovny můžou být používány všemi addony, ale alespoň jeden addon je musí obsahovat. Pokud ostatní addony neobsahují knihovnu, kterou náš addon potřebuje, tak ji musí náš addon přímo obsahovat. Pokud si člověk nakopíruje verzi addonu, která již knihovny má a zároveň je mají i ostatní addony, tak se nic zásadního nemusí stát.

Jedna populární sada knihoven se nazývá Ace a její AceAddon knihovna je snadný způsob jak sestavit addon, což je také důvod proč ji mnoho addonů (včetně DXE) využívá. No ale když mnoho addonů obsahuje knihovnu AceAddon tak se může stát, že knihovna se načte z jiného addonu namísto z DXE (či z addonu, který vyhazuje chybu).

Problém je, že zatímci knihovna AceAddon se načítá, načítá s sebou několik dalších modulů, které pochází z jiného addonu a je možné, že mezi těmi moduly nebude ten, který DXE potřebuje. Ač se potřebné moduly mohou načíst později bude to již jedno, protože to zabrání DXE v načtení. Netvářím se, že bych tomu extra rozuměl, ale alespoň je to problém, který se dá poměrně snadno řešit.

Poučení

Ne všechna nefunkčnost DXE je způsobená tímto a Lua Error poskytne podstatné informace, směřující ke zdroji problému. V takovém případě je vhodné mě s těmito informacemi kontaktovat. Je možné, že se stala chyba a ve vydané verzi je nedopatřením něco zle a mělo by být opraveno.