Cambios importantes en la IU del parche 7.1

El parche 7.1 incluye varios cambios en las funciones de la IU de WoW y queríamos mencionar de manera especial algunos de ellos, ya que puede que inutilicen la funcionalidad de varios complementos del juego. Esto no es una lista completa de todos los cambios en la API de la IU que llegarán con el 7.1, sino solo los que pensamos que serán más interesantes para los creadores de complementos. Si no os dedicáis a ello, podéis ignorar esta publicación, ya que solo incluye cambios técnicos en la interacción de los complementos con el juego.

Cambios de posición de unidades

Hemos restringido varias API relacionadas con la posición, el alcance y la dirección hacia la que miran las unidades para que solo devuelvan valores válidos si se cumplen los siguientes criterios:
• La unidad es el jugador activo o está en el grupo.
• La unidad no está en ningún tipo de instancia de JcE ni JcJ.

Se ven afectadas las siguientes funciones:

  • GetPlayerMapPosition
  • UnitCameraFacing
  • UnitDistanceSquared
  • UnitFacing
  • UnitPosition (Nota: En el estado restringido, el valor devuelto por mapID sigue siendo válido)

Hay nuevas formas de acceder a las unidades en el mapa:

  • "AddUnit",
  • "AddUnitFileID",
  • "AddUnitAtlas",
  • "ClearUnits",
  • "FinalizeUnits": No es válido realizar una llamada a la función AddUnit después de una llamada a Finalize en el mismo frame en el que se utilizó esta última.
  • "SetPlayerPingTexture",
  • "StartPlayerPing",
  • "StopPlayerPing",
  • "GetMouseOverUnits",
  • "SetOverrideMapID",
  • "GetOverrideMapID",

Funciones intrínsecas

Ahora se puede crear una plantilla de frames «intrínsecos». Las funciones intrínsecas se asemejan a las plantillas XML virtuales, aunque tienen algunos comportamientos particulares.

Como ejemplo, aquí tenéis una definición intrínseca simple.

<Frame name="ExampleIntrinsic" intrinsic="true">
<Scripts>
<OnShow function="ExampleIntrinsic_OnPostShow" intrinsicOrder="postcall" />
</Scripts>
</Frame

Pueden crearse mediante CreateFrame como widgets integrados. Volviendo al ejemplo anterior, se crearía un nuevo ExampleIntrinsic llamando a CreateFrame("ExampleIntrinsic").

También se pueden crear mediante elementos XML en cualquier sitio donde un tipo «frame» podría hacerlo. Por ejemplo:

<Frame name="ExampleParentFrame">
<Frames>
<ExampleIntrinsic parentKey="Example">
<Scripts>
<OnShow function="ExampleIntrinsic_OnShow" />
</Scripts>
</ExampleIntrinsic>
</Frames>
</Frame>

Por último, y quizás sea lo más importante, las funciones intrínsecas pueden aplicar un orden especial a sus scripts de frames. Además, una vez enlazado al frame un script intrínseco de frame, no se puede volver a enlazar. Sin embargo, se puede enganchar e inspeccionar. Por ejemplo, en la definición anterior, la función global «ExampleIntrinsic_OnPostShow» está enlazada a la creación de instancia de ExampleIntrinsic. Su intrinsicOrder es «postcall», lo que significa que este controlador OnShow es llamado después del controlador OnShow normal.

ExampleIntrinsic_OnPostShow no se puede reemplazar. No obstante, se puede enganchar con HookScript o inspeccionar con GetScript pasando un argumento opcional adicional con LE_SCRIPT_BINDING_TYPE_INTRINSIC_POSTCALL o con LE_SCRIPT_BINDING_TYPE_INTRINSIC_PRECALL. Si se especifica «precall» para intrinsicOrder, el controlador es llamado antes que el controlador OnShow normal. Una función intrínseca puede tener tanto «precall» como «postcall».

Para un ejemplo de uso, consultad el nuevo ScrollingMessageFrame.xml y los correspondientes archivos ScrollingMessageFrame.lua.

Placas de nombre

En el parche 7.1, hemos restringido las acciones de los complementos sobre las placas de nombre. Aún podrán recopilar información, actuar sobre las placas de nombre y personalizarlas, pero ya no podrán usar sus variables de unidad para lanzamientos de hechizos. Es similar al funcionamiento de las placas de nombre en Warlords of Draenor.

Hemos añadido funciones para ayudar a los complementos:

  • Funciones añadidas:
  • SetNamePlateFriendlySize,
  • GetNamePlateFriendlySize,
  • SetNamePlateEnemySize,
  • GetNamePlateEnemySize,
  • SetNamePlateSelfClickThrough,
  • GetNamePlateSelfClickThrough,
  • SetNameplateFriendlyClickThrough,
  • GetNameplateFriendlyClickThrough,
  • SetNamePlateEnemyClickThrough,
  • GetNamePlateEnemyClickThrough
Estas funciones permiten marcar un área específica de la placa de nombre como área de clic preferida, de modo que, si la solicitud de posición de placa de nombre da como resultado dos placas de nombre superpuestas, se devolverá la placa de nombre situada dentro de su área preferida:


  • SetNamePlateSelfPreferredClickInsets,
  • GetNamePlateSelfPreferredClickInsets,
  • SetNamePlateFriendlyPreferredClickInsets,
  • GetNamePlateFriendlyPreferredClickInsets,
  • SetNamePlateEnemyPreferredClickInsets,
  • GetNamePlateEnemyPreferredClickInsets,
Funciones eliminadas:


  • SetNamePlateOtherSize
  • GetNamePlateOtherSize

Fuente: BLIZZ

Back to top