Allods Online Addons (7/10): Addon Manager

Juan Mellado, 24 Septiembre, 2010 - 16:23

Uno de los objetivos principales de los addons de Allods es sustituir la interface gráfica por defecto del juego por otra más personalizada que se adapte mejor a las necesidades de cada cada jugador, o que añada algún tipo de información u opción que facilite el desempeño de su rol. Allods trata todos los componentes de su interface de usuario como addons, incluidos los elementos propios internos que son parte del núcleo del juego, como el chat o el mapa por ejemplo. Y este tratamiento homogéneo es el que permite "descargar" un addon original del juego y sustituirlo por uno propio.

Para obtener todos los addons cargados en el juego se debe utilizar la función "GetStateManagedAddons". Esta función devuelve una tabla Lua en la que cada elemento representa un addon. Por ejemplo, con el siguiente código se escribe en el log un listado con todos los addons cargados en el juego:

...
local addons = common.GetStateManagedAddons()
for i = 0, GetTableSize(addons) - 1 do
  LogInfo(addons[i].name)
end
...

En mi versión europea actual del juego, la 1.1.00.62, aparecen listados los siguientes 79 addons:

Alchemy                                  ContextShipDevice
ArmorCraft                               ContextShipDeviceNavigator
BuffInfo                                 ContextShipDeviceOvertip
BuffInfoParty                            ContextShipHangar
BuffInfoPet                              ContextShipPlate
BuffInfoTarget                           ContextSplitstack
Castbar                                  ContextTalents
Chat                                     ContextTooltip
ContextActionbar                         ContextTooltipCompare
ContextActions                           ContextTutorial
ContextAEMarker                          ContextUniMessageBox
ContextAnnounceCustom                    CraftBag
ContextAstralHubMap                      Death
ContextAuction                           EnemyShipDamage
ContextCartographer2                     EscMenu
ContextChatLine                          Guilds
ContextCharacter                         InternalContextActions
ContextCompass                           IslandTimer
ContextDamageVisualization               LagMeter
ContextDepositeBox                       MageEnergyInstability2
ContextDragNDrop                         NecromancerBloodPool
ContextFXPlayer                          NecromancerPet2
ContextInspect                           Options
ContextItemMall                          PaladinShields
ContextLootBag                           PetCommandPoints
ContextMail                              Plates
ContextMounts                            PsionicContact2
ContextMultibag                          RollGreedNeed
ContextNpcTalk                           Sounds
ContextNpcTeleport                       Spellbook
ContextOvertip                           StalkerCartridgeBelt
ContextPartyPlate                        SubtitleShipInfo
ContextPinMenu2                          TabSelector
ContextPlayerTrade                       TalentInformer
ContextPOIMarker                         TargetSelection
ContextPopup                             VendorTrade
ContextQuestLog                          Warnings
ContextQuestTracker                      WarriorCombatAdvantage
ContextRaidPlate                         ZoneAnnounce
ContextRuneCombiner

Los nombres son bastante significativos, y como se observa, aparecen prácticamente todos los componentes internos del juego con algún tipo de interface gráfica.

Cuando se carga un addon propio este también aparece en la lista precedido por "UserAddon". Así, si se carga el addon "SampleInit", que viene de ejemplo con el juego, aparece en el listado de la siguiente guisa:

UserAddon/SampleInit

Conociendo los nombres de los addons, es posible cargarlos o descargarlos utilizando las funciones "StateLoadManagedAddon" y "StateUnloadManagedAddon" respectivamente. Aunque naturalmente no todos los addons pueden ser descargados, ya que algunos son demasiado básicos, y su ausencia dejaría el juego practicamente inutilizable.

Para descargar o cargar un addon, como el de la brújula por ejemplo ("ContextCompass"), basta una simple línea de código:

...
-- Descargar
common.StateUnloadManagedAddon("ContextCompass")
...
-- Cargar
common.StateLoadManagedAddon("ContextCompass")
...

La idea de todo esto es que si queremos hacer un addon propio que sustituya la brújula original, lo primero que tendremos que hacer en el código Lua de nuestro addon será descargar el addon original para que no se solape con el nuestro. Sencillo, ¿no?.

Dentro de los addons de ejemplo que vienen con el juego hay uno llamado "SampleZoneAnnounce" que sustituye al addon "ZoneAnnounce" original, que es el encargado de mostrar por pantalla los nombres de las zonas por las que van pasando los personajes.

Si tenemos curiosidad por saber donde está el código Lua de los addons internos del juego, estos se encuentran en los ficheros "LuaCompiledSystem.pak" y "LuaCompiledIngame.pak" del directorio "data/Packs" donde se encuentra instalado el juego. Desgraciadamente están compilados y distribuidos en formato binario, por lo que no se pueden examinar. En versiones más antiguas del juego se distribuían en formato de texto y si se podían examinar.

¿No encontró lo que buscaba?

Utilice el buscador para encontrar más páginas en esta web o en toda Internet.
 
Web www.inmensia.com