Main Menu |
---|
|
Los Addons para Retail funcionarán en la mayoría de los casos en Classic con la eliminación de cualquier API que no sea Classic.
Si no tienes un addon de manejo de errores, usa BugSack o Swatter o habilita CVar scriptErrors.
Véase también Parche 1.13.2/Cambios_API.
Globe[ | ]
Globe puede indicarte qué funciones/eventos API en un addon se han eliminado en Classic, si la TOC está configurada en la versión Retail y con Globe: check-classic
Por ejemplo: https://www.townlong-yak.com/globe/#h:2a8385bff94e98a6bad8f5f09b45a148-reads
## Interface: 40000 ## Globe: check-classic
API[ | ]
Hay una lista de API específicas de Classic y una lista completa de API Classic. La versión TOC es 40000
Puedes utilizar el WOW_PROJECT_ID global (definido en BNet.lua) para verificar si es Classic o Retail.
local isClassic = (WOW_PROJECT_ID == WOW_PROJECT_CLASSIC)
- Texture:SetTexture() ya no se puede establecer texturas de color en el Parche 7.0.3, usa Texture:SetColorTexture(r, g, b [, a]) en su lugar.
- PlaySound() only accepts SoundKitIDs in Patch 7.0.3
old: PlaySound("igMainMenuOptionCheckBoxOn") new: PlaySound(SOUNDKIT.IG_MAINMENU_OPTION_CHECKBOX_ON)
- PlaySoundFile() solo acepta FileDataIDs para sonidos de juegos en el Parche 8.2.0
old: PlaySoundFile("Sound/Spells/LevelUp.ogg") new: PlaySoundFile(569593)
Mapas[ | ]
Los mapas fueron rediseñados en el Parche 8.0.1 y la API se modificó para que no tenga estado.
- WorldMapAreaIDs fueron reemplazados por UiMapIDs.
- Ya no es necesario usar SetMapToCurrentZone() y GetCurrentMapAreaID() para obtener el mapa de UI de la forma actual, en su lugar utiliza C_Map.GetBestMapForUnit("player")
Registro de combate[ | ]
El registro de combate fue rediseñado en el Parche 2.4.0
- La carga útil del evento se devuelve desde CombatLogGetCurrentEventInfo() desde el parche 8.0.1
- Véanse COMBAT_LOG_EVENT para más detalles.
Frame Scripts[ | ]
La mayoría de los addons Vanilla aún definen sus frames en XML, ya que CreateFrame() solo se agregó en el Parche 1.10
- Los parámetros como
this, event, arg1, arg2, arg3
ya no son globales para el script handler. Esto se modificó en el Parche 4.0.1
Ahora se pasan comoOnEvent(self, event, ...)
oOnEvent(self, event, someVar1, someVar2, someVar3)
- El parámetro
this
era exclusivo de los WoW frame scripts. Generalmente se puede reemplazar conself
Solución rápida[ | ]
Existen varias formas de manejar handle frame scripts en XML. Para simplificar, solo describiremos una solución rápida en texto azul.
- Lua
function SomeAddon_OnLoad(self) self:RegisterEvent("ADDON_LOADED") end function SomeAddon_OnEvent(self, event, addon) print(self, event, addon) end
- XML
<Frame name="SomeAddon"> <Scripts> <OnLoad> SomeAddon_OnLoad(self) </OnLoad> <OnEvent> SomeAddon_OnEvent(self, event, ...) </OnEvent> </Scripts> </Frame>
Solo Lua[ | ]
También es posible crear un handle y manejar los scripts en Lua sin usar XML, dependiendo de qué tan simple sea el contenido.
local function OnEvent(self, event, addon) print(self, event, addon) end local f = CreateFrame("Frame") f:RegisterEvent("ADDON_LOADED") f:SetScript("OnEvent", OnEvent)